Devices / Even G2
Even Realities G2: what a third-party app can do
The most open display canvas of the glasses we've tested — once you know its rules.
DisplayBoth lenses, monochrome green
App canvas576 × 288 px
Text line27 px (≈ 9 rows)
MicrophoneLC3 frames over BLE
CameraNone
US price$599
Even's official route is the Even Hub SDK, which runs inside the Even app's WebView. Everything below uses the community-documented BLE protocol instead, so an app can talk to the glasses directly. It works on the firmware we tested (2.2.10.10) and may change with a firmware update — check before you ship.
Connecting
- Two devices, not one. Each arm is its own BLE peripheral, named like
Even G2_32_L_…andEven G2_32_R_…. The number in the middle identifies the pair. Connect to both. - The service is
…5450. Write and notify live under00002760-08C2-11E1-9073-0E8AC72E5450(write…5401, notify…5402, microphone…6402). Asking for a…0000service finds nothing and the link sits at "connecting" forever. - Unbonded phones get dropped after ~29 seconds. Every time, whatever you send. The fix is a system-level bond: pair the glasses once (the Even app does this), and your app inherits the bond on that phone. macOS has no way to bond them.
- One connection at a time. If the Even app holds the glasses, your app can't have them.
- Bonded arms stop advertising their name, so a scan alone never finds them again. See Reconnect like headphones.
The handshake
Before the glasses draw anything, the official app sends this sequence, about 200 ms apart (steps that arrive too early are dropped):
- Authenticate on the left arm, then on the right arm.
- Make the right arm the command pipe — it relays to the left.
- Sync the time (the firmware ignores the time-zone field, so fold the offset into the timestamp).
- Skip the first-run onboarding, or it covers your page.
Then send a heartbeat to both arms every 10 seconds. Without it, iOS decides the link is idle and tears it down after roughly 50 seconds.
Drawing text
- Pages and containers. You build a page of text containers on the 576×288 canvas, then replace a container's text in place. The create-page command is accepted once per connection; every page after that must use rebuild.
- Updating text doesn't redraw the page — that's what makes live captions possible. Send at most one update per tick, always of the newest text, so a backlog collapses into one draw.
- Let the phone do the layout. The firmware wraps text with its own glyph widths. Even publishes the metrics (the MIT-licensed
@evenrealities/pretextpackage): line height 27 px. Lay out every line on the phone with those widths and the lens shows exactly what you computed — no surprise reflows. - Hidden capture box. A 1×1 invisible container marked as the event receiver gets taps without leaving a visible mark on the lens.
- Limits we hit: text boxes shorter than 40 px draw an overflow tick; image boxes above about 200×100 px are refused; a page holds up to four image boxes.
Input and audio
- Touch: taps, double taps, long presses and swipes arrive from the arms (and the R1 ring). The source field tells you which.
- Microphone: turned on per page; LC3 frames arrive on
…6402. A newly built page has the microphone off — turn it back on after every rebuild.
What we couldn't do
- Make the glasses play sound (no speaker interface in the stock firmware).
- Read the left arm's battery reliably.
Sources
- Our own measurements while building Odasho (firmware 2.2.10.10, iPhone).
- r4stl1n/even-realities-app-template (MIT) — the community driver our protocol work started from.
- i-soxi/even-g2-protocol — community protocol notes.
- Even G2 product page — price, weight and official features.