Всё началось с колонки, которую компьютер в упор не видел. Яндекс Станция Лайт первого поколения, выпущенная в ноябре 2023-го, давно не выходила в сеть. По USB её не было видно, среди Bluetooth-устройств тоже, а в домашней сети не отвечал ни один из её обычных портов. А закончилось всё в районе часа ночи фразой, которую колонка произнесла, когда ноутбук ей был уже не нужен: «Пятьдесят шесть». Я спросил «семь умножить на восемь», и ответил мне не Яндекс. Ответила Мия — наш собственный ИИ-агент, который теперь отвечает за колонку, когда её об этом просят.
Между этими двумя точками уместился один вечер, три провала подряд и один очень простой фокус, который стоит объяснить сразу, потому что без него вся история рассыпается на магию.
Root — это не то, что вы думаете
Здесь легко спутать две вещи: root и маршрут, по которому идёт разговор. Кажется, будто получил права администратора — и колонка автоматически твоя.
Нет. Это две совершенно разные вещи.
Root — это просто права админа внутри колонки. Сам по себе он не меняет ничего: колонка как слушала Яндекс, так и слушает. Если цель — заменить Алису своей нейросетью, одного рута мало: он только открывает дверь. А куда уходит ваш голос, решает буквально одна строчка в конфиге — uniProxyUrl. Пока в ней адрес Яндекса, весь разговор идёт через Яндекс, хоть ты трижды админ.
Весь трюк в том, чтобы подменить эту строчку. Делает это маленькая программа-посредник — Quasar Bridge, — которая ставится прямо на колонку и притворяется для неё облаком. Распознавание речи и озвучку она оставляет Яндексу (поэтому голос пока остаётся Алисиным), а распознанный текст перехватывает и по правилу решает, кому его отдать: фразу «спроси нейросеть» — нашему агенту, всё остальное — обратно Яндексу. Для колонки ничего не изменилось — она думает, что говорит с Яндексом. На деле «мозг» уже наш.
Отсюда и формула этого этапа: мозг Мии, голос Яндекса. Быстрый путь, который работает за один вечер. Свой голос — отдельная история, к ней вернёмся в конце.
Почему именно эту колонку и почему именно сейчас
Нам повезло с железом. Станция Лайт первого поколения, да ещё и давно не выходившая в сеть, — идеальный пациент. Способ получить root держится на том, что в публичном инструменте лежит скомпрометированный сертификат Яндекса, и колонка при привязке верит нашему локальному серверу. С новыми прошивками Яндекс закрывает лазейки: на сборках после 21 октября 2026 года простая подмена DNS уже не срабатывает, и для Лайт 1 приходится идти в обход — свой сервер обновлений откатывает прошивку на более старую сборку, и уже она открывает доступ. Наша колонка в итоге получила root на сборке 0.369.1.46 от 13 октября 2026 года — ровно на том образе, вокруг которого построен инструмент. Сразу после этого обновления заблокировали, так что на ней она и осталась.
Мораль для тех, у кого на полке лежит такая же: не включайте её в интернет, пока не готовы. Обновление может закрыть простой путь, а что останется дальше, зависит от модели и прошивки.
Три провала, за которыми пряталась не та причина
Идея простая. Колонку при первой привязке надо обмануть, чтобы она сходила за настройками не на сервер Яндекса, а на наш локальный — тот скажет ей включить отладочный доступ. Для этого надо подсунуть колонке свой DNS. Роутер у нас провайдерский, панель закрыта капчей, так что раздавали Wi-Fi прямо с ноутбука.
И тут начался детектив. Три раза подряд не срабатывало, и каждый раз мы грешили не на то: сначала на кодировку и кавычки в скриптах, потом на права, потом на то, что колонка «не так» вводит пароль. Настоящие причины вскрывались по очереди, одна за другой.
Сначала выяснилось, что наш сервер колонке вообще не отвечает. Служба Windows, которая раздаёт интернет, уже слушала порт 53 сразу на всех адресах и отвечала на DNS-запросы сама. Наш сервер поднимался — и тихо проигрывал. Решение — привязать его не ко «всем адресам», а к конкретному адресу раздачи. Отдельным DNS-запросом проверили: теперь колонке отвечаем мы.
Привязали — и снова мимо. Это была самая коварная ловушка: скрипт запуска стартовал сервер через механизм Windows, при котором терялись переменные окружения. Адрес мы задавали правильный, но до сервера он не доезжал, тот садился «на всё подряд» и опять проигрывал службе. Снаружи всё выглядело верно. Помог запуск напрямую, в обход скрипта.
Третья проблема была почти обидной. Windows выключает раздачу, если к ней несколько минут никто не подключён, а колонка подключается небыстро. Сеть исчезала посреди привязки, и всё выглядело как «неверный пароль». Вдобавок мешали пробел в имени сети и двоеточие в пароле — при вводе в них легко ошибиться. Автоотключение убрали параметром PeerlessTimeoutEnabled в реестре с перезапуском службы раздачи, сеть назвали попроще — и всё встало на место.
Вот это, пожалуй, главное, что хочется передать: когда что-то не работает три раза подряд, очень тянет винить очевидное — кодировку, кавычки, пароль. В нашем случае все три раза настоящая причина сидела уровнем ниже и маскировалась под очевидную.
Момент истины
Когда все три ловушки обезвредили, колонка наконец сходила на наш сервер, получила команду открыть доступ — и в терминале появилось то, ради чего всё затевалось:
uid=0(root)
Нолик. Права администратора. Дальше — сразу закрепить успех: отметки, которые включают доступ, зафиксировали так, чтобы они пережили перезагрузку, сделали резервные копии оригинальных файлов в двух местах и заблокировали автообновление — иначе при выходе в обычный интернет колонка могла обновиться и потерять доступ. И только потом перезагрузили колонку, чтобы убедиться: root не отвалился, блокировка на месте, обновлятор не запустился. Пережило. Теперь колонка была по-настоящему наша.
Мозг, который не знает лишнего
Пока колонка проходила инициацию, на сервере её уже ждал «мозг». Здесь важная деталь, которой мы горды больше, чем самим рутом.
Колонку в доме слышит кто угодно — гость, ребёнок, случайный человек. Поэтому подключать к ней основную Мию со всей её памятью и доступами было нельзя категорически. Мы завели для колонки отдельный профиль: свой характер, свои ключи и пустая память — воспоминаний основной Мии у него нет. Доступ ему дали ровно один, осознанно: календарь на чтение, чтобы колонка могла ответить, что запланировано на ближайшие дни. Записывать события, отправлять сообщения и что-то покупать этот профиль не может по конструкции. Наружу торчит ровно один адрес — и только он, всё остальное отвечает «страницы нет».
Что памяти основной Мии у профиля нет, проверяли не на словах. Спросили прямым текстом: как зовут дочь и где она учится. Ответ: «Не знаю, в колонке у меня нет доступа к личным данным семьи». Вот так и должно быть.
Характер тоже переписали под голос: отвечать двумя-тремя фразами, без списков и эмодзи, числа проговаривать словами, честно говорить «не знаю» и не выполнять никаких действий по голосовой команде. Голос — не тот канал, где агенту можно что-то покупать или отправлять.
«Алиса, спроси нейросеть, почему небо голубое»
Поставили мост, перевели колонку на него, перезагрузили. И — тот самый первый голосовой тест.
«Алиса, спроси нейросеть: почему небо голубое?»
В логе мелькнуло route=llm — значит, вопрос ушёл не Яндексу, а нашему агенту. Колонка голосом Алисы рассказала про рассеяние света — это говорила Мия, и ответ мы услышали своими ушами. А на фразу без «спроси нейросеть» в логе появлялось route=yandex: бытовые команды мы специально оставили Яндексу, ломать то, что и так работает, смысла нет.
По скорости тоже хорошо: в двух замерах через интернет наш сервер отвечал за 2,6 и 4,5 секунды. Это время самого агента, без распознавания и озвучки — полную задержку голосового теста отдельно не мерили. По токенам замеры такие: обычный вопрос — около 9,5 тысячи токенов промпта, а один вопрос с обращением к календарю потянул 69 816, потому что при вызове инструмента контекст пересылается на каждом шаге. Это стоит держать в голове, если модель на общем лимите: болтливая колонка умеет незаметно съедать квоту.
Самая опасная кнопка, которую нельзя нажимать
Оставалось увести колонку с ноутбучной раздачи на домашний Wi-Fi. И вот здесь пряталась ловушка, способная обнулить весь вечер.
Казалось бы, смени сеть как обычно — сбрось колонку и настрой заново. Ни в коем случае. Сброс стирает раздел, где живёт мост и отметки доступа. А строчка uniProxyUrl в системном конфиге при этом остаётся указывать на локальный мост, которого после сброса уже нет. Итог: голос отваливается совсем, доступ по отладке стёрт, и восстановление — это заново весь root с нуля.
Поэтому сеть меняли аккуратно, через системные команды на уже рутованной колонке, не трогая ничего лишнего. Прописали домашнюю сеть, старую оставили запасной на всякий случай, дождались, пока колонка переедет и получит новый адрес. Переехала.
И вот тогда, когда ноутбук колонке был уже не нужен, я и спросил: «Семь умножить на восемь?» «Пятьдесят шесть», — сказала колонка. Ноутбук можно было закрывать.
Честно про границы
Эта история легко читается как «смотрите, как мы круто всё сломали». Но у схемы есть ограничения, и прятать их не хочется.
- Гарантии больше нет. Вы лезете в чужое устройство. И если колонка превратится в кирпич, проверенного способа её оживить не существует.
- Способ держится на чужой ошибке. Root получается только потому, что в инструменте лежит скомпрометированный сертификат Яндекса. С новыми прошивками Яндекс закрывает лазейки одну за другой и на какой-то сборке может закрыть последнюю.
- Яндекс всё ещё слышит вашу речь. На этом этапе распознавание и озвучка остаются за ним — мы подменили только «мозг». Полной приватности здесь нет, и голос пока Алисин.
Если вам это не подходит — лучше не начинать. Если подходит как быстрый способ дать колонке своего ассистента — схема рабочая: ноутбук ей больше не нужен, хватает домашней сети, нашего сервера и облака Яндекса для речи.
Коротко для своих
Если руки чешутся повторить, вот грабли, на которых мы потеряли больше всего времени — чтобы вы не теряли:
- На сборках после 21 октября 2026 года простая подмена DNS уже не работает. Для Лайт 1 есть обход через свой сервер обновлений с откатом прошивки, но это лишние шаги и время. Старая и офлайновая колонка — ваш друг.
- Станция Лайт 1 видит только 2,4 ГГц. Раздачу жёстко переводите на этот диапазон, иначе колонка сеть просто не увидит.
- Служба раздачи Windows занимает порт 53 на всех адресах. Свой DNS-сервер вешайте на конкретный адрес раздачи и проверяйте отдельным запросом, кто отвечает.
- Windows гасит раздачу без клиентов — выглядит как «неверный пароль». Лечится параметром
PeerlessTimeoutEnabledв реестре и перезапуском службы раздачи. Имя сети и пароль — без пробелов и спецсимволов. - Запускайте локальный сервер напрямую, а не через «умный» скрипт: он теряет переменные окружения, и сервер садится не туда.
- Сразу после root — закрепить доступ, снять бэкап и заблокировать обновления. До того, как колонка увидит нормальный интернет.
- И золотое правило: после установки моста не сбрасывайте колонку кнопкой — ни для смены сети, ни «на всякий случай». Сеть меняется без сброса, через
wpa_cli, а если мост нужно убрать, у него есть штатный откат:control.sh rollbackи перезагрузка.
Что дальше: свой голос
Сейчас у нас гибрид — наш мозг в Алисином голосе. Следующий этап куда интереснее: убрать Яндекс из цепочки совсем и дать Мии собственный голос.
Часть базы уже готова. На нашем сервере стоит синтезатор речи Silero: в пробах после прогрева он озвучивал короткие фразы в 16–20 раз быстрее, чем они звучат, и мы выбрали голос — женский, зовут Ксения. В сквозной пробе от текстового вопроса до готового аудиофайла с ответом Мии её собственным голосом прошло чуть больше шести секунд. Чтобы так заговорила сама колонка, без Яндекса, предстоит разобраться в протоколе, на котором она общается с облаком, и подключить собственные распознавание и озвучку. Это уже не фантазия, а понятный следующий шаг — но работы в нём заметно больше, чем в этом вечере.
Но это уже другая история и другой вечер. А пока на полке стоит колонка, которая по нашей просьбе думает головой Мии. И это, если честно, до сих пор немного удивляет каждый раз, когда говоришь ей: «Алиса, спроси нейросеть».
Если вам близка такая самодеятельность с агентами — у нас про это целая линия материалов, от установки своего Hermes-агента до тонкой настройки. Заходите в чат, расскажем и покажем.





