Skip to content

Instantly share code, notes, and snippets.

@zhuowei
Last active December 19, 2015 10:59
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zhuowei/5944899 to your computer and use it in GitHub Desktop.
Save zhuowei/5944899 to your computer and use it in GitHub Desktop.
Glass Kernel Changelog Tidbits

Kernel Changelog Tidbits for Glass

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.

Earbuds support

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:

https://github.com/zhuowei/Xenologer-src-glasshome/blob/master/smali/com/google/glass/logging/HeadsetPlugService%241.smali

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?

Factory cable support

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.

Random tidbits

  • 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".
@xingrz
Copy link

xingrz commented Nov 1, 2013

Hey you predicted earbuds support 4 months before!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment