G1 protocol/implementation demystified - mostly.
About three weeks ago I posted here about pulling the demo app apart and building my own companion app. That was meant to be the end of it - "here's what I figured out, maybe it helps someone."
Reader - It did not end there.
The app is now my daily driver. Notifications, navigation, voice notes, Full AI chat, call handling, media display - all running on the glasses full-time. But the thing that's probably more useful to anyone else tinkering is that the documentation has grown into something I didn't plan for.
The protocol reference alone now covers 40+ opcodes with wire formats, payload breakdowns, confidence ratings, and worked examples. Not from the SDK docs (which are... sparse). From HCI snoops, trial and error, and a lot of staring at hex.
Some of the more interesting things that have landed since the last post:
- QuickNote pipeline - right-hold on the glasses now triggers a full audio capture, LC3 decode, Whisper transcription - quicknotes are no longer black magic impossible out of the official app
- (My quicknote includes GPT tidy, and auto-categorised local note). The firmware streams encoded audio back after the gesture - it's not a black box. T
- he LC3 frame size is 200 bytes, the BLE chunks are 190 bytes, and if you slice at chunk boundaries instead of frame boundaries you get clicks. That kind of thing took a while to figure out and is all documented.
- Telephony call handling - incoming calls show the caller name on the glasses immediately, with a live duration timer when you answer. Driven by TelephonyManager, not notification scraping. Clears automatically when you hang up.
- Navigation - the 0x0a structured card path is fully working. 108-packet bootstrap, dynamic field injection from Google Maps notifications, live icon rendering, 1-second keepalive. Still better than the official app's navigation, which is a sentence I didn't expect to type.
- BLE stability - heartbeat at 2s cadence matching the official app, per-leg parallel sends, reconnect with backoff. The glasses stay connected now.
The repo is the same place: https://github.com/Cheddies1/even-g1-companion
The docs/ folder is where most of the value is for other developers. protocol-reference.md is the big one. There are also findings docs for battery/brightness, QuickNote audio, navigation layouts, settings, and tap/gesture mapping.
If you're building something for the G1 - the protocol reference might save you a few evenings of hex staring.