74 lines
5.7 KiB
Markdown
74 lines
5.7 KiB
Markdown
# BLOCKERS ночной сессии 2026-09-27
|
||
|
||
## B1 — Нет общей L3-сети между телефоном и очками для проверки ON_PHONE end-to-end
|
||
|
||
**Задача:** #2 (проброс звука VirtualDisplay → телефон).
|
||
|
||
**Что сделано:**
|
||
|
||
- `AudioBridge` + `GlassesAudioCapture` + WebSocket-аудио-сервер `/vm-audio` (порт 8081) на очках +
|
||
`AudioPlaybackManager` на телефоне + UI-переключатель «Звук» в `GlassesStatusScreen`.
|
||
- **MediaProjection + AudioPlaybackCapture подтверждены работающими на очках в автономном debug-режиме
|
||
`DEBUG_AUDIO_PIPE`** (preview без WebSocket-канала):
|
||
```
|
||
TestTone: test tone start: 44100 Hz stereo, 10s
|
||
GlassesAudioCapture: capture: bytes=1310720 rms=5629 ← захват системного звука работает!
|
||
TestTone: test tone done
|
||
GlassesAudioCapture: capture: bytes=1474560 rms=0 ← тишина после теста
|
||
```
|
||
RMS 5629 совпадает с теоретическим (~5657 для амплитуды 8000) → мы реально ловим 440 Гц.
|
||
- Тестовый тон → динамик очков → AudioPlaybackCapture на тех же очках → доказано.
|
||
- Подача `Recorder Audio` + `PROJECT_MEDIA=allow` через `AdbController`/`appops` — работает.
|
||
|
||
**В чём стена:** WebSocket-канал (AudioPath между очками и телефоном) требует общую L3-сеть. На данный момент:
|
||
|
||
- Phone: `192.168.76.121/22 dev wlan0 → SSID "O2 5"`.
|
||
- Glasses: подключены к тому же `O2 5` через supplicant (CONNECTED), **но без IP на wlan0** (`network is unreachable`).
|
||
Просто очкам DHCP не отдал адрес (по какой-то причине).
|
||
- mDNS работает только в broadcast-домене одной L2/L3 сети.
|
||
|
||
Без общего IP между устройствами WebSocket `/vm-audio` не пройдёт — `AudioPlaybackManager` на телефоне подключиться не сможет. Сам захват звука на очках доказан, но отправка байтов по WS до телефона — нет.
|
||
|
||
**Что проверял:**
|
||
|
||
- `service call adb 4 i32 1 s16 "O2 5"` + `settings put global adb_wifi_enabled 1` — wireless-adb поднимается.
|
||
- Bluetooth-канал (Mercury) работает (BLE-команды идут). Но для WebSocket audio не применим (пропускная способность BLE всё-таки ограничена для 44.1 кГц стерео, что добавляет сложностей).
|
||
- ping телефон ↔ очки = `network is unreachable` от очков в сторону телефона (wlan0 не получил IP).
|
||
|
||
**Обход (нужна помощь пользователя):**
|
||
|
||
1. **Самый прямой:** пользователь включает Wi-Fi-хотспот на телефоне (через UI, ~30 секунд).
|
||
- SSID/пароль любые.
|
||
- Телефон и очки → обе в одну сеть, получают IP от телефона.
|
||
- Очки уже умеют авто-коннектиться к сохранённой сети (Caffeine Portable или любая).
|
||
2. **Альтернатива:** пользователь подключает очки к USB-tethering'у с телефона (если dev'ы возможно на устройстве).
|
||
3. **Самый сложный:** настроить прямой Wi-Fi Direct между телефоном и очками — `cmd wifi p2p ...` потребует более глубокой интеграции.
|
||
|
||
После появления общей сети проверить:
|
||
|
||
```bash
|
||
# на телефоне:
|
||
adb shell am start -n pw.binom.rayneovm.phone/.MainActivity # поднять UI
|
||
# UI → «Очки» → тумблер «Звук на телефоне».
|
||
# В логах телефона должно быть:
|
||
# AudioPlaybackManager: audio connected to ws://<glasses_ip>:8081/vm-audio
|
||
# AudioPlaybackManager: playing: bytes=… rms=…
|
||
# В логах очков:
|
||
# GlassesAudioCapture: capture: bytes=… rms=…
|
||
# VmService: sender: clients=1 bytes=…
|
||
```
|
||
|
||
**Статус:** #2 прогресс в работе, ядро (MediaProjection + AudioPlaybackCapture) доказано рабочим. Только финальная L3-проверка отложена до пробуждения пользователя.
|
||
|
||
## B2 — USB-adb / сеть очков: на руках есть USB-adb хост ↔ очки; очки же сейчас в wlan0 без IP
|
||
|
||
Зафиксировано в #B1 — нужно чтобы устройства в общей IP-сети. Wi-Fi-xотспот на телефоне решает.
|
||
|
||
## B3 (выяснено, не блокер) — Mercury path `ble.request.debug` не зарегистрирован на прошивке RayNeo X3 Pro
|
||
|
||
**Что:** `RayNeoMercury.enableWirelessAdb()` отправляет `ble.request.debug/enableWirelessAdb`, на очках приходит `Can not resolve(uri = ble.request.debug)` — RayNeo Mercury system-app на этой прошивке не знает этот URI.
|
||
|
||
Это означает: **провайдер Mercurry не работает на X3 Pro** для управления wireless-adb.
|
||
|
||
**Workaround:** включение wireless-adb через `service call adb 4 i32 1 s16 <ssid>` от shell — отлично работает (с shell UID через Shizuku или напрямую). Используется в `AdbController`/`ShizukuProvisioner`.
|