
Even G1 Swift
Making smart glasses truly useful with reverse-engineered BLE, 1-bit HUD navigation, on-device AI, and MTA subway arrivals.
Timeline
2026 — Present
Role
Reverse Engineering, iOS & Audio DSP
Hardware Target
Even Realities G1 Smart Glasses
Dual Micro-OLED Green Phosphor (576×135)Context
Personal Project
Overview
Even G1 Swift is a native companion application for the Even Realities G1 smart glasses, engineered from the ground up on a reverse-engineered Bluetooth Low Energy (BLE) protocol. The G1 smart glasses are sleek, everyday titanium prescription glasses with dual optical waveguides with miniature 576×135 green phosphor micro-OLED displays in each lens, and I love them.
After Even released the G2 in November 2025, I noticed that software updates and new functionality were not trickling down to the G1. So instead of waiting for the glasses to become obsolete I decided to take a stab and built my own app that has all the functions and quirks that I love. The app connects independently to both glasses arms over the Nordic UART Service (NUS), rasterizes live turn-by-turn navigation routes into high-contrast 1-bit monochrome bitmap frames, mirrors app notifications with rasterized icons, decodes native 16 kHz LC3 microphone audio for local on-device AI transcription, and streams live MTA subway arrival countdowns directly to my peripheral vision, just like the original app :D
The software is architected with a clean consumer-first layout. Device Dashboard, Turn-by-Turn Navigation, and Heads-Up Widgets while retaining low-level protocol tooling, raw UART frame monitors, and LC3 codec analyzers behind an authenticated developer mode, for those who dare.
Key Accomplishments
- 1-Bit Monochrome Navigation Engine: Built
NavigationBitmapRendererandG1MonochromeBitmapPacker, transforming Apple MapKit routes into chunked BLE bitmap commands (0x15/0x16) tailored for the native 576×135 micro-OLED optical window. - Dual-Peripheral Bluetooth Architecture: Engineered
G1BluetoothManagerusing Core Bluetooth to sustain concurrent independent connections to left and right temple arms with sequential command handshakes. - Native Google LC3 Audio Decoding Pipeline: Vendored Google's
liblc31.1.3 C library underCLibLC3, developing a Swift wrapper that decodes 20-byte 16 kHz audio packets into 16-bit linear PCM buffers in real time. - Apple Speech & On-Device Intelligence: Integrated
SFSpeechRecognizerwith Apple Foundation Models (iOS 26+) for private, zero-cloud contextual Q&A triggered directly from the glasses microphone. - Physical Temple Control Mapping: Reverse-engineered temple capacitive sensors and physical side-button long-press and tap gestures, providing instant hands-free triggering of Live Captions and translation.
- MTA Subway Realtime Feed Integration: Implemented direct GTFS-Realtime and NYCT protobuf streaming (
MTANextTrainService) for real-time NYC subway arrival countdowns and service alerts with zero external API fees. - Display Surface Arbitration & Latency Safeguards: Architected
G1LensSurfaceArbiterto prioritize HUD surfaces without display collision, coupled withG1LatestValueCoalescerto prevent BLE bus saturation.
Technical Challenges & Solutions
Tuning Firmware Head-Bounce & Sensor Hysteresis
During active navigation, G1 glasses emit an IMU look-up event when I tilt my head up to see the HUD. However, the physical return motion creates a sharp 500–700 ms "head-down bounce" that premature firmware triggers misinterpret as a dismissal. In NavigationViewModel, I implemented an 8-second dwell window (overviewHoldSeconds) that absorbs this rebound hysteresis. Also, I suppressed spurious alternating phantom swipe events emitted by the right temple sensor during brisk walking.
1-Bit Monochrome Rasterization for Micro-OLED
The G1's green phosphor micro-OLED displays only support 1-bit monochrome data (on or off) within a restrictive 576×135 coordinate envelope. Standard MapKit renderers produce 32-bit RGBA maps with anti-aliasing that turns illegible when naively thresholded. I developed NavigationBitmapRenderer to calculate vector path interpolation, geometric maneuver glyph placement, dynamic user-anchor clamping, and automatic suppression of non-essential elements like the Apple Maps logo to preserve every pixel for my route pathing.
Surface Arbitration & Packet Collision Avoidance
With turn-by-turn navigation, incoming notifications, live translation, and background subway feeds all vying for the single HUD surface, early attempts suffered from BLE packet collisions and corrupted display state when switching between text packets (0x4E) and bitmap frames (0x15). So I designed G1LensSurfaceArbiter to strictly arbitrate display priority and sequence transitions cleanly, supported by G1LatestValueCoalescer to throttle GPS updates.
Core Features
1-Bit Monochrome HUD Navigation
Real-time MapKit route rasterizer generating 576×135 1-bit monochrome bitmap frames with turn maneuver glyphs, street name badges, distance indicators, and look-ahead path clipping.
NYC Subway Live Arrivals
Direct MTA GTFS-Realtime and NYCT subway protobuf parser streaming upcoming arrivals, line branches, and station status alerts directly to the glasses with zero third-party API dependencies.
LC3 Audio & Local Foundation Models
Decodes 16 kHz LC3 microphone frames with Google liblc3, transcribes audio via Apple Speech, and delivers contextual answers using Apple Foundation Models (iOS 26+) 100% on-device.
Multi-Widget Heads-Up Dashboard
Configurable widget coordinator displaying upcoming EventKit meetings, live weather forecasts, RSS news headlines, and next-train departures with gesture-driven multi-page switching.
Temple Button Gestures & Translation
Physical temple side-button long-press and tap gesture mapping to trigger real-time live captions and Apple Translation with offline language pack support, paged directly to the HUD.
Notification Mirroring & Icon Rasterizer
Captures iOS system notifications, rasterizing application icons into 1-bit monochrome bitmaps on the fly and formatting alerts for immediate, glanceable peripheral viewing.
Dual-Peripheral Bluetooth Management
Maintains concurrent independent Core Bluetooth connections to left and right temple arms over Nordic UART Service (NUS) with sequential routing and automatic reconnection loops.
Surface Arbiter & Latency Coalescer
Priority-queued display surface manager preventing content collisions, paired with value coalescing to rate-limit high-frequency GPS telemetry and safeguard BLE bandwidth.
Technical Specifications
| Subsystem | Implementation Specification |
|---|---|
| Optical Display System | Dual Micro-OLED Green Phosphor Waveguide (576 × 135 px per lens) |
| HUD Rendering Engine | 1-Bit Monochrome Bitmaps (0x15 / 0x16) & Native Proportional Fonts (0x4E) |
| Wireless Transport | Dual-Peripheral Core Bluetooth (Independent Left & Right Arm BLE Links) |
| BLE Service & UUID | Nordic UART Service (NUS) — 6E400001-B5A3-F393-E0A9-E50E24DCCA9E |
| Packet Protocol | 0xAA-prefixed binary framing with sequential dual-arm routing & ACK checks |
| Audio Ingestion | Dual temple microphones, 16 kHz sampling rate |
| Audio Decoding Codec | Google liblc3 1.1.3 C library (20-byte frames decoded to 16-bit linear PCM) |
| Speech & On-Device AI | Apple SFSpeechRecognizer & Apple Foundation Models (iOS 26+ private Q&A) |
| Live Translation | Apple Translation Framework (iOS 18+) with offline language pack support |
| Turn-by-Turn Navigation | Apple MapKit (MKLocalSearch, MKDirections) with 12m position quantization |
| Transit Data Pipeline | MTA GTFS-Realtime & NYCT Subway Protobuf feeds (Zero API key required) |
| Physical Controls & Sensors | Capacitive touch sliders, physical temple side-buttons, IMU head-tilt tracking |
| Display Surface Arbiter | G1LensSurfaceArbiter priority queue (Nav > Alerts > Translation > Widgets) |
| BLE Latency Safeguards | G1LatestValueCoalescer rate limiter & G1DiagnosticsStore ring buffer |
| Telemetry & Observability | Datadog RUM / Crash Reporting / Flags with automatic offline mock fallback |
Release Milestones
August 2026
Navigation HUD & On-Device AI- •Turn-by-Turn 1-Bit Monochrome Bitmap Engine rasterizing Apple MapKit routes into 576×135 micro-OLED frames with turn glyphs, distance badges, street labels, and dynamic user-anchor clamping.
- •Apple Speech & On-Device Intelligence: live speech transcription from LC3 microphone PCM via SFSpeechRecognizer, paired with AppleIntelligenceAssistant (iOS 26+ Foundation Models) for local, private contextual Q&A.
- •Native Google liblc3 1.1.3 C library integration with G1LC3Decoder Swift wrapper decoding 20-byte 16 kHz microphone frames into 16-bit linear PCM audio buffers.
- •Offline Live Translation using Apple Translation framework (iOS 18+) with offline language pack support, paging translated chunks directly to the glasses.
- •Multi-Widget Heads-Up Dashboard streaming EventKit calendar meetings, live weather, XML/RSS news headlines, and MTA transit updates with gesture-driven multi-page switching.
- •Physical temple side-button long-press and tap gesture mapping for hands-free activation of Live Captions and translation via AppActionRouter.
- •Notification Mirroring System with on-the-fly NotificationIconRenderer rasterizing application icons into 1-bit monochrome bitmaps.
- •Display Surface Arbitration prioritizing HUD surfaces to eliminate contention between navigation, notifications, translations, and dashboard widgets.
- •BLE Latency Safeguards: G1LatestValueCoalescer rate-limiting high-frequency location/telemetry updates to prevent bus saturation, backed by an in-memory circular ring buffer.
- •MTA Subway Realtime Feed Services: full GTFS-Realtime and NYCT protobuf integration.
- •Datadog RUM, Crash Reporting & Feature Flags SDK with offline mock fallback, tracking hardware events (temple taps, look-up gestures, head tilt, disconnects).
- •Hardware Firmware Tuning: 8-second dwell window (overviewHoldSeconds) in NavigationViewModel absorbing 500–700ms head-down bounce; reduced GPS quantization from 200m to 12m; suppressed right temple phantom swipes; resolved 0x4E / 0x15 packet collisions.
February 2026
Dual-Peripheral BLE Core- •Dual-Peripheral Core Bluetooth Core independently connecting to left and right G1 arms over Nordic UART Service (NUS) with sequential command routing.
- •G1 Wire Protocol Framing reverse-engineering raw UART packets prefixed with start byte 0xAA for battery levels, heartbeats, firmware versions, and touch events.
- •Display Typography & Font Engine providing proportional glyph metrics and lookup tables tailored for the 576×135 micro-OLED display.
- •Multi-page text layout engine handling automatic word-wrapping and chunked text packet transmission.
- •Initial Microphone Pipeline defining start/stop audio commands and AVFoundation playback.
Built With
