Explorers who have had their Google Glass for a while now know how heavenly the Google Glass experience was before the XE16 update. Before the XE16 update, everything ran smoothly and there weren’t many problems at all. Since the XE16 update, most Explorers have experienced a plethora of problems. Google has obviously attempted to patch these problems, but they’ve pretty much failed.

Every day I log onto different communities and see people talking about the problems they are experiencing with Google Glass. If it ain’t a reboot, it’s a blank screen. If it ain’t a blank screen, it’s lag. If it ain’t lag, then it’s something else. There’s so many problems with Google Glass right now, and Google offers no details on what exactly is going wrong. While Google isn’t offering any details on why Google Glass is acting so funky lately, an Explorer has taken it upon themself to experiment and reverse-engineer the system images that Google has published to try to find out what the problem is. Through experimentation and reverse-engineering, the Explorer has stumbled across what they think is causing all the problems with Google Glass.

Jimrandomh is the Explorer and Reddit user who has been doing all this work to try and get to the bottom of the problems that Google Glass has. Through reverse-engineering, Jimrandomh thinks he has discovered why the Google Glass experience isn’t as fluent as it once was. Jimrandomh thinks that a good chunk of Google Glass problems arise from an inadequate amount of memory. Here are some quotes from his Reddit post.

By reverse engineering my Glass unit, I have discovered the following. When memory runs out, a subsystem of Linux called the OOM Killer selects a running program, kills it, and reclaims its memory. The details of this selection are arcane and sensitive to subtle details of the test. The Linux OOM killer is meant to preferentially target programs that suddenly try to grab huge amounts of memory, but in my experiments, the OOM killer’s targeting did not appear to be working properly and its selections were more random. What happens next depends which process was targeted; the most common symptom in my tests was becoming completely unresponsive (blank screen, no logcat over USB) and the next-most common symptom was to reboot. Based on looking at the list of processes eligible to be killed, I believe this could also lead to seeing error messages like “Home is stopped”, or disabled sync, location updates, sound, or voice recognition. But note that there are many other types of errors which could also produce these symptoms.

So, some of the problems arise when the software on Google Glass tries to reclaim some of its used memory. But that’s not the only thing that is causing problems. Since OOM killer can’t successfully reclaim memory, or at least that’s how it appears, it seems Google tried to fix that by reserving some memory, but that only caused more problems.

On version XE17 and later, Glass is configured to reserve 128MB of its RAM as compressed swap space, using a Linux module called zswap. Versions prior to that had no swap. This means that when Glass is close to running out of memory but has not run out entirely, it will deal with this by compressing parts of its memory. This can avert a crash, but it also causes the system to become extremely slow, which manifests as unresponsive user interface and overheating.

You know what they say, if you can’t reclaim it, reserve it. I’m joking, nobody says that. Still, it seems Google was having trouble with the OOM killer reclaiming memory, so they decided to reserve some. Sadly, that didn’t work and it only caused more issues.

So, what was Google’s next attempt at fixing these problems? To remove features to save memory.

Since XE16, Google has removed features including video calls and support for Bluetooth keyboards. This may have been an attempt to reduce memory usage.

Google claimed that they removed video calls because many Explorers didn’t use that feature. I don’t find that believable because as soon as they announced the removal of Video calls, many Explorers were quick to light their torches and scream out their displeasure about the removal. I find it more likely that it was removed because of the reason that Jimrandomh stated above, to reduce memory usage.

The last part of Jimrandomh’s post is the most interesting part.

Glass has 1GB of total memory, of which about 300MB are reserved for the display and other hardware, leaving 710MB for the operating system. According tohttp://static.googleusercontent.com/media/source.android.com/en/us/compatibility/4.4/android-4.4-cdd.pdf , KitKat requires 340MB of unreserved memory, and must set a special “low-memory device” flag if it has less than 512MB. Thus, it’s theoretically over the published minimum, but not by a huge margin; and Glass contains extensive modifications and additional software, many of which increase the memory requirements.

Google Glass doesn’t even meet the minimum requirement for unreserved memory. So, pretty much, Explorers are experiencing problems because they are figuratively running on an almost empty tank of gas.

If all the Google Glass problems did arise because of a lack of memory, then I have to agree with Jimrandomh’s next point.

Since there have, in fact, been extensive problems caused by lack of memory, these problems were introduced for many people by Google after their return window closed, and Google knows all this, the upgrade to 2GB of memory should be considered a warranty repair, and failure to provide upgrades to existing explorers is a breach of warranty.

If this Explorer’s claims are correct, and the problems arisen because of a lack of memory and because of the software updates, then Google definitely needs to give Explorers the option to swap for the new 2gb model of Google Glass. $1500 is a lot to pay for a device that went from functioning correctly to not functioning correctly in such a short amount of time.

What are your thoughts on this? Should Google offer a replacement if low memory truly is the cause of all the issues? Share your thoughts with us in the comments section down below!

You can view Jimrandomh‘s Reddit post here.