I've always enjoyed teardowns of of the software in new products. As you can expect, I loved the detailed writeup of the secrets found in Google Glass's kernel source at http://thecodeartist.blogspot.ca/2013/05/sensors-on-google-glass.html . However, when that article is written, the source code of the kernel was just served without the changelog (provided by their version control system, Git). Since then, Google had released the kernel with full change information on AOSP.
If you want to dig around the logs yourself: https://android.googlesource.com/kernel/omap/+log/glass-omap-xrr88/ with highlights at https://android.googlesource.com/kernel/omap/+log/glass-omap-xrr88/arch/arm/mach-omap2/board-notle.c and https://android.googlesource.com/kernel/omap/+log/glass-omap-xrr88/arch/arm/mach-omap2/notle-usb-mux.c . More eyes will probably uncover more secrets.
Let's get the cool stuff out of the way first.
One of the primary complaints from the Explorers is the lack of a headphone port on Glass. It looks like Google is remedying that fault in an upcoming iteration of Glass.
I came across these changes that hinted at headphone support:
https://android.googlesource.com/kernel/omap/+/00e718723a208966185f5618426cca8174ef48ae
Kernel support for earbud detection
These changes allow detection of glass custom earbuds. These have
a resistor on ID pin to ground.
What? Glass custom earbuds? I read on.
https://android.googlesource.com/kernel/omap/+/b89e829bba0d036d70e37ae7640c8342c57f88c5
Remove console TTY noise for earbuds
This kernel change is to remove the pops/clicks on earbuds
from kernel printfs during initialization.
It looks like on some Google Glass devices, there is a headphone jack for debugging and for plugging in earbuds that are designed for Glass. Furthermore, it doesn't seem like a feature just for prototyping, as popping noises on boot would not be a large issue for a developer kit.
More evidence is offered by my teardown of the Glass Android software. Glass has a logging service that sends information about an explorer's usage of Glass probably to help Google improve Glass's user experience. For example, swipes on the Timeline are tracked, probably to help refine the Timeline interface.
What's interesting is that in XE7, the latest version of the Glass software, a new tracker was added:
which sends information whenever a headset is plugged into Glass.
Now, Glass doesn't have a headset jack, so I assumed at the time that it might've been for some old prototype that did include this function. However, based on the new information, it looks like there may be Google employees testing Glass units with earbuds right now. Why else would they include a tracker if not to get feedback from the usage patterns of the dogfooders?
It looks like Google's learning some lessons from their acquisition of Motorola lately. One of the features of Motorola phones is that they often have support for a "Factory Cable" - a USB cable with two pins connected that drop the phone into bootloader mode, so firmware can be flashed. Some other manufacturers followed Motorola's example: the Kindle Fire, for example, includes support for the factory cable as well. Recently, Glass joined the list of factory cable enabled devices.
https://android.googlesource.com/kernel/omap/+/ce30a912f1e7a797337e05ff18e4ecc021eafa3f
Add support for factory cable
If factory cable (VBUS connected to ID) is inserted, then
reboot into fastboot mode. Special androidbootmode of
factorycable will override the reboot (and a change in
Android will allow adb for user builds). If cable is
unplugged in this mode, system will power off in
30 seconds.
Basically, plug in a factory cable, and Glass will drop to Fastboot and turn on ADB. (This does not, however, allow you to flash random stuff - you still need to unlock the bootloader as usual)
Currently, there is a key combo to enter Fastboot - see https://plus.google.com/117143666409529524674/posts/6NZLWKVTVUM , but more options to save a device from bricking, especially a $1500 device, are always welcome.
- The Glass hardware's official name is "Notle", as seen in build.prop in ro.device.board, but also has many nicknames, including "Elton" (Notle spelled backwards) and "Wingman".
- Glass has been worked on for at least two years - the first commit of the board support file for the Glass hardware was made two years and one month ago.
- Glass prototype names, in order of appearance:
- Dog
- Emu
- Fly
- Gnu
- Hog (One must wonder where A, B, and C went - perhaps they were the prototypes with the phone duct-taped to a Googler's face?)
- And released versions:
- V1_EVT1
- V1_EVT2
- V1_EVT3
- The explorer edition, as printed at bootup in Jay Lee's dmesg, is of the EVT3 type.
- Glass has a "Turbo Sprint" feature, which basically relaxes the overheat check so the chip can run faster in bursts. Nice to see the Turbo Button still alive in the year of grace 2013.
- Glass uses a version of Galaxy Nexus's Bluetooth driver, with "tuna", the GNex's codename, still in the names of methods. There's a method to Google's madness, though: the programmer explains that the names were kept "in order to simplify merges of future tuna improvements".
Hey you predicted earbuds support 4 months before!