Шаг 1. Root на JBL Link Music: ADB по USB на старте¶
Способ для JBL Link Music с Алисой. При включении
колонка на несколько секунд поднимает ADB по USB с правами root, а затем maind его
отключает. В это окно с компьютера пишутся маркеры, после которых ADB работает по сети
(порт 5555) и переживает перезагрузку. Разбирать колонку и менять прошивку не нужно.
Проверено на прошивке 1.80.0.228.3676124705.20251219.
ADB по сети — root без пароля
Порт 5555 открыт для всех в вашей сети, и любой, кто к нему подключится, получит root.
Держите колонку только в доверенной сети.
Как это работает¶
- USB. При старте ядро включает USB-гаджет
rndis,adb(VID_0E8D&PID_2005).android-tools-adbd.serviceзапускаетadbdпослеsleep 4. Параллельно стартуетmaindи через 5–10 секунд выключает гаджет:echo 0 > /sys/class/android_usb/android0/enable. - Защита от отключения. Скрипт
activate_adb.shне трогает ADB, если есть файл/tmp/lock_activated_adb. Если успеть его создать, USB-ADB остаётся до перезагрузки. - Сеть. При запуске
adbdпроверяет/data/network_adb. Есть файл — слушает TCP5555, нет — работает только по USB (FunctionFS/dev/usb-ffs/adb)./data— UBIFS на NAND, смонтированrw,sync, поэтому маркер сохраняется.
Что понадобится¶
- кабель Micro-USB с линиями данных — кабель «только для зарядки» не подойдёт;
- компьютер с утилитой
adb, например из пакета Platform Tools; - доступ к розетке колонки: питание придётся передёрнуть.
1. Подключите кабель¶
- Снимите круглую резиновую подложку на дне колонки.
- В углублении найдите сервисный разъём Micro-USB.
- Подключите кабель к колонке и к компьютеру. Колонку пока можно не выключать.
2. Запустите ожидание на компьютере¶
Команда ждёт, пока колонка появится по USB, и сразу выполняет на ней payload:
adb wait-for-usb-device shell "\
touch /tmp/lock_activated_adb && \
mkdir -p /data/quasar && \
touch /data/network_adb \
/data/quasar_activate_adb \
/data/quasar_activate_network_adb \
/data/quasar/activate_network_adb \
/data/quasar/activate_adb_quasmodrom && \
sync && id"
Команда одинакова для Linux, macOS, Windows (cmd и PowerShell). Что она делает:
/tmp/lock_activated_adb— не даётmaindвыключить USB-ADB до перезагрузки;/data/network_adb— включает ADB по сети, главный маркер;- остальные файлы — маркеры ADB, которые проверяют скрипты quasar на других моделях. Оставлены как в исходной инструкции, на JBL их роль отдельно не проверялась.
Вариант на Python
Исходная версия способа — скрипт usb_catcher.py. Он запускает ту же команду и
проверяет, что в ответе есть uid=0(root):
import subprocess
payload = (
"touch /tmp/lock_activated_adb && "
"mkdir -p /data/quasar && "
"touch /data/quasar_activate_adb && "
"touch /data/network_adb && "
"touch /data/quasar_activate_network_adb && "
"touch /data/quasar/activate_network_adb && "
"touch /data/quasar/activate_adb_quasmodrom && "
"sync && id"
)
print("[*] Waiting for the speaker on USB...", flush=True)
proc = subprocess.run(["adb", "wait-for-usb-device", "shell", payload],
capture_output=True, text=True)
print(proc.stdout, proc.stderr)
if "uid=0(root)" in proc.stdout:
print("[+] Root shell reached, markers written to NAND.")
3. Передёрните питание¶
- Выньте блок питания колонки из розетки на 5 секунд.
- Включите обратно.
-
Как только появится USB-устройство,
adbвыполнит команду. Успех выглядит так:
Если команда так и ждёт, проверьте кабель (нужен с данными) и adb devices. На Windows
устройство VID_0E8D&PID_2005 должно появиться в диспетчере устройств как ADB-интерфейс;
если оно без драйвера, установите ADB-драйвер и повторите.
4. Закрепите маркеры¶
USB-ADB работает до перезагрузки. Пока он есть, защитите маркеры от удаления скриптами
прошивки атрибутом immutable:
adb shell
chattr +i /data/network_adb /data/quasar_activate_adb
chattr +i /data/quasar/activate_network_adb /data/quasar/activate_adb_quasmodrom
sync
exit
Снять защиту — chattr -i <файл>.
5. Проверьте ADB по сети¶
- Отключите кабель и верните подложку на место — USB больше не нужен.
- Передёрните питание ещё раз.
-
Подключитесь по сети (IP колонки — в настройках роутера):
Обновления¶
Обновление прошивки может закрыть этот способ. Готового способа отключить обновления
для JBL пока нет: yandex-noupdate.sh рассчитан на Станции с Buildroot,
а здесь Yocto с systemd и корнем ro.
- Блокировать домен
quasar.yandex.netцеликом нельзя: через него работает и сама Алиса. - Подменить DNS-фильтром (AdGuard, Pi-hole) только ответ на
GET /check_updates({"hasUpdate": false}) не получится: запрос идёт по HTTPS, а DNS видит только имя хоста.
Если найдёте рабочий способ — дополните.
Что дальше¶
- SSH и пакеты. Ядро и userspace здесь 32-битные (
armv7l). Сборки подaarch64не запустятся, в том числе.yapи YAM. Нужны сборки под ARMv7: Entwarearmv7sf-k3.2, аdropbearизcontrib/bin(armhf) стоит проверить. - Железо и разделы — на странице модели.