Even G1 Hero
Reverse Engineering • Swift & Micro-OLED

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

Repository

GitHub Repository →Source code, protocol specs & test suites

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.

Display Simulation
↰ 150 FT
BROADWAY & W 72ND STProceed North toward Columbus Circle
Subway • 72 St1 Train: 2 MIN • 2/3: 4 MIN

Key Accomplishments

  • 1-Bit Monochrome Navigation Engine: Built NavigationBitmapRenderer and G1MonochromeBitmapPacker, 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 G1BluetoothManager using 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 liblc3 1.1.3 C library under CLibLC3, 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 SFSpeechRecognizer with 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 G1LensSurfaceArbiter to prioritize HUD surfaces without display collision, coupled with G1LatestValueCoalescer to 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

Navigation

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.

Transit

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.

On-Device AI

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.

Heads-Up Dashboard

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.

Live Captions

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.

Notifications

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.

BLE Core

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.

Display Safety

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

SubsystemImplementation Specification
Optical Display SystemDual Micro-OLED Green Phosphor Waveguide (576 × 135 px per lens)
HUD Rendering Engine1-Bit Monochrome Bitmaps (0x15 / 0x16) & Native Proportional Fonts (0x4E)
Wireless TransportDual-Peripheral Core Bluetooth (Independent Left & Right Arm BLE Links)
BLE Service & UUIDNordic UART Service (NUS) — 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
Packet Protocol0xAA-prefixed binary framing with sequential dual-arm routing & ACK checks
Audio IngestionDual temple microphones, 16 kHz sampling rate
Audio Decoding CodecGoogle liblc3 1.1.3 C library (20-byte frames decoded to 16-bit linear PCM)
Speech & On-Device AIApple SFSpeechRecognizer & Apple Foundation Models (iOS 26+ private Q&A)
Live TranslationApple Translation Framework (iOS 18+) with offline language pack support
Turn-by-Turn NavigationApple MapKit (MKLocalSearch, MKDirections) with 12m position quantization
Transit Data PipelineMTA GTFS-Realtime & NYCT Subway Protobuf feeds (Zero API key required)
Physical Controls & SensorsCapacitive touch sliders, physical temple side-buttons, IMU head-tilt tracking
Display Surface ArbiterG1LensSurfaceArbiter priority queue (Nav > Alerts > Translation > Widgets)
BLE Latency SafeguardsG1LatestValueCoalescer rate limiter & G1DiagnosticsStore ring buffer
Telemetry & ObservabilityDatadog RUM / Crash Reporting / Flags with automatic offline mock fallback

Release Milestones

August 2026

Navigation HUD & On-Device AI
Build 2 • Major Expansion
  • •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
Build 1 • Protocol Inception
  • •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

Swift 6SwiftUICore Bluetooth (NUS)Google liblc3 (C Library)Apple MapKitApple Foundation ModelsSFSpeechRecognizerApple Translation FrameworkGTFS-Realtime (Protobuf)EventKitWeatherKitEvenDesignSystem
Even G1 Swift app icon

Explore the Project