# 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://: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 ` от shell — отлично работает (с shell UID через Shizuku или напрямую). Используется в `AdbController`/`ShizukuProvisioner`.