- OAuth authentication via Authentik - WebSocket connection to OpenClaw gateway - Configurable gateway URL with first-run setup - User preferences sync across devices - Multi-user support with custom assistant names - ElevenLabs TTS integration (local + remote) - FCM push notifications for alarms - Voice input via Google Speech API - No hardcoded secrets or internal IPs in tracked files
195 lines
4.8 KiB
Markdown
195 lines
4.8 KiB
Markdown
# Alfred Mobile - Deployment Log
|
|
|
|
## ✅ Deployment Successful - February 2, 2025 07:52 PST
|
|
|
|
### Deployment Summary
|
|
- **Target Device:** Samsung Galaxy Tab (adb-R52R30ASB4Y-BIkpas)
|
|
- **Connection Method:** Wireless ADB over WiFi
|
|
- **Device IP:** 192.168.1.180
|
|
- **APK Size:** 17 MB
|
|
- **Package:** com.openclaw.alfred
|
|
|
|
---
|
|
|
|
## Deployment Timeline
|
|
|
|
### 1. Build Phase (07:12 - 07:40 PST)
|
|
- Fixed Gradle build script imports
|
|
- Created OAuth configuration
|
|
- Generated launcher icons
|
|
- Compiled APK successfully
|
|
|
|
### 2. Initial Connection Attempts (07:46 - 07:50 PST)
|
|
**Challenge:** WSL adb pairing protocol issues
|
|
- Attempted multiple pairing methods (stdin, python script, pty)
|
|
- Encountered protocol faults and timeouts
|
|
- Root cause: ADB wireless pairing requires interactive TTY
|
|
|
|
### 3. Successful Pairing (07:51 PST)
|
|
**Pairing Details:**
|
|
- Pairing Port: 45047
|
|
- Pairing Code: 919435
|
|
- Command: `adb pair 192.168.1.180:45047` (interactive PTY)
|
|
- Result: ✅ Successfully paired to 192.168.1.180:45047 [guid=adb-R52R30ASB4Y-BIkpas]
|
|
|
|
### 4. Device Connection (07:51 PST)
|
|
**Connection Status:**
|
|
```
|
|
List of devices attached
|
|
adb-R52R30ASB4Y-BIkpas._adb-tls-connect._tcp device
|
|
```
|
|
- Auto-connected after pairing
|
|
- No manual `adb connect` needed
|
|
|
|
### 5. APK Installation (07:52 PST)
|
|
**Install Command:**
|
|
```bash
|
|
adb install ~/.openclaw/workspace/alfred-mobile/app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
**Result:**
|
|
```
|
|
Performing Streamed Install
|
|
Success
|
|
```
|
|
|
|
**Verification:**
|
|
```bash
|
|
adb shell pm list packages | grep alfred
|
|
# Output: package:com.openclaw.alfred
|
|
```
|
|
|
|
---
|
|
|
|
## Technical Details
|
|
|
|
### ADB Version
|
|
```
|
|
Android Debug Bridge version 1.0.41
|
|
Version 36.0.2-14143358
|
|
Platform: Linux 5.15.167.4-microsoft-standard-WSL2 (x86_64)
|
|
Location: ~/android-dev/android-sdk/platform-tools/adb
|
|
```
|
|
|
|
### Network Details
|
|
- Desktop IP: 192.168.1.169 (WSL bridged mode)
|
|
- Tablet IP: 192.168.1.180
|
|
- Ping latency: 126-206ms (WiFi)
|
|
- No firewall ports needed (outbound connection)
|
|
|
|
### Wireless Debugging Configuration
|
|
Android's Wireless Debugging shows two types of ports:
|
|
|
|
1. **Pairing Port** (changes each time)
|
|
- Used only for initial device pairing
|
|
- Requires 6-digit pairing code (expires quickly)
|
|
- Example: 45047
|
|
|
|
2. **Connection Port** (persistent)
|
|
- Shown at top of Wireless Debugging screen
|
|
- Used for actual ADB connection after pairing
|
|
- Example: 35529 (not needed in our case - auto-connected)
|
|
|
|
### PTY Requirement
|
|
ADB wireless pairing requires interactive terminal:
|
|
- ✅ `exec(..., pty=true, background=true)` + `process:send-keys`
|
|
- ❌ Piping stdin (`echo "code" | adb pair`)
|
|
- ❌ Python subprocess with stdin.write()
|
|
- Reason: ADB reads pairing code directly from TTY, not stdin
|
|
|
|
---
|
|
|
|
## Lessons Learned
|
|
|
|
### 1. WSL ADB Wireless Pairing
|
|
- **Challenge:** Protocol requires interactive terminal
|
|
- **Solution:** Use pty=true with process send-keys
|
|
- **Alternative:** Windows ADB (direct, no WSL complexity)
|
|
|
|
### 2. Pairing vs Connection Ports
|
|
- Pairing port is **one-time use** with code
|
|
- After pairing, device auto-connects via mDNS/TLS
|
|
- Connection port shown in UI may not be needed
|
|
|
|
### 3. Device GUID
|
|
- Format: `adb-{SERIAL}-{GUID}`
|
|
- Persistent identifier after pairing
|
|
- Uses `_adb-tls-connect._tcp` service
|
|
|
|
### 4. Installation Over WiFi
|
|
- Works identically to USB
|
|
- Slightly slower due to network latency
|
|
- No special configuration needed
|
|
|
|
---
|
|
|
|
## Current App Status
|
|
|
|
### ✅ Installed & Runnable
|
|
- App package: `com.openclaw.alfred`
|
|
- Can launch from app drawer
|
|
- UI will load skeleton interface
|
|
|
|
### ❌ Not Yet Functional
|
|
Missing implementations:
|
|
1. OAuth authentication flow (OAUTH_SETUP.md)
|
|
2. WebSocket connection (WEBSOCKET_INTEGRATION.md)
|
|
3. Wake word detection (Porcupine SDK)
|
|
4. Voice input/output
|
|
5. Chat UI features
|
|
|
|
### Next Development Steps
|
|
1. Implement OAuth code (AuthManager, LoginScreen, etc.)
|
|
2. Test OAuth flow with Authentik
|
|
3. Implement WebSocket connection to alfred-app.dnspegasus.net
|
|
4. Add voice features
|
|
5. Build out UI
|
|
|
|
---
|
|
|
|
## Quick Reference Commands
|
|
|
|
### Check Connected Devices
|
|
```bash
|
|
export PATH=~/android-dev/android-sdk/platform-tools:$PATH
|
|
adb devices
|
|
```
|
|
|
|
### Reinstall After Changes
|
|
```bash
|
|
cd ~/.openclaw/workspace/alfred-mobile
|
|
export JAVA_HOME=~/android-dev/jdk-17.0.2
|
|
export ANDROID_HOME=~/android-dev/android-sdk
|
|
export PATH=$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH
|
|
./gradlew assembleDebug
|
|
adb install -r app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
### View Logs
|
|
```bash
|
|
adb logcat | grep -i alfred
|
|
```
|
|
|
|
### Uninstall
|
|
```bash
|
|
adb uninstall com.openclaw.alfred
|
|
```
|
|
|
|
### Launch App
|
|
```bash
|
|
adb shell am start -n com.openclaw.alfred/.MainActivity
|
|
```
|
|
|
|
---
|
|
|
|
## Firewall Notes
|
|
|
|
**No Windows Firewall changes needed for wireless ADB**
|
|
- Outbound connections work by default
|
|
- Only inbound server ports need firewall rules
|
|
- Already configured: 18789 (OpenClaw), 18790 (OAuth proxy)
|
|
|
|
---
|
|
|
|
**🤵 Deployment complete! App ready for OAuth implementation.**
|