- Installed eSpeak TTS + voices on head unit — TTS now works ✅
- Gateway now bound to LAN IP 192.168.0.207 ✅
-`gateway.remote.url` set to `ws://192.168.0.207:18790` ✅
- Setup code now contains correct host/port ✅
- Head unit can ping/connect to gateway ✅
- Gateway receives and redeems bootstrap tokens ✅
### The blocking issue
- Both Android app versions crash after redeeming bootstrap token
- App closes with `code=1000 bye` before completing device pairing
- No pending device request created in gateway
- Error: "missing device identity ID" on app side
**App versions tested:**
-`2.4.9` (original) — crashes during pairing handshake ✅ (reproducible on head unit)
-`2.4.8` (yuga-hashimoto fork) — crashes after bootstrap token redemption ✅ (reproducible on head unit)
-`2.4.9` on tablet — same crash ✅ (reproducible on different hardware)
**Gateway logs show:** Bootstrap token redeemed (`redeemedProfile.roles: []`), then app closes cleanly. Pairing never completes.
### Root cause
App-side bug in the pairing handshake completion. Gateway is working correctly. The app connects, authenticates, redeems token, but crashes before creating the device pairing record. REPRODUCIBLE across multiple Android devices (head unit + tablet). NOT a hardware issue.
### Next steps
1. File bug report on OpenClaw GitHub with gateway logs