Как заставить Xiaomi TV летать: скрытые настройки, которые вырежут всю рекламу и лаги

от автора

Ультрабюджетные Smart TV на базе Android — это вечный компромисс. Производители отдают железо чуть ли не по себестоимости, а потом отыгрываются на пользователях: пичкают систему агрессивной рекламой, партнерским софтом и сбором телеметрии. Всё это крутится в фоне и душит и без того слабые чипсеты.

Купил я тут Xiaomi Mi TV (модель на платформе hermano под управлением Android 11, с гордыми 1.4 ГБ оперативной памяти на борту). Пользоваться им «из коробки» было больно: реакция на пульт занимала секунды, меню дергалось, а приложения открывались целую вечность. Пришлось расчехлить ноутбук, подключиться по ADB и заглянуть «под капот».

Ниже — подробный разбор того, как я убрал конфликт двух лаунчеров в памяти, заморозил PatchWall без риска окирпичить ТВ, разобрался со странным сетевым поведением YouTube и ByeDPI, а также выяснил, почему после апгрейда локальной сети до гигабита скорость интернета на телевизоре не выросла ни на мегабит.

1. Конфликт двух лаунчеров и дефицит оперативной памяти

Начал я с простого: почему оно так тормозит? Подключился к ТВ по ADB, снял слепок распределения памяти через dumpsys meminfo и увидел занятную картину:

Total PSS by process:    142,689K: com.mitv.tvhome.atv (pid 1991 / activities)     95,843K: com.google.android.tvlauncher (pid 9200 / activities)     ...

В системе параллельно крутились сразу два лаунчера (домашних экрана)! С одной стороны — стандартный Google Android TV Launcher (com.google.android.tvlauncher), с другой — фирменный Xiaomi PatchWall (com.mitv.tvhome.atv), забитый рекламой и рекомендациями.

При включении телевизор принудительно запускал PatchWall (минус 140 МБ RAM). Но стоило нажать кнопку «Домой» на пульте, как поверх открывался гугловский лаунчер (еще минус 95 МБ). На устройстве с 1.4 ГБ оперативки, где под нужды Android TV и графического стека выделено менее половины объема, держать две прожорливые оболочки — это просто приговор производительности. Они постоянно дрались за память и процессорное время.


2. Разборки с сетью: YouTube, ByeDPI и загадка гигабита

После первой настройки телевизора я столкнулся с классическим сетевым багом: после перезагрузки ТВ отвалился YouTube. Подключение по Wi-Fi горит как активное, браузер работает, а YouTube уходит в бесконечную загрузку и пишет «Нет подключения к сети».

Пришлось лезть в консоль и копаться в правилах маршрутизации (ip rule и ip route show table all). Вот что там обнаружилось:

12000:from all fwmark 0x0/0x20000 iif lo uidrange 10067-10067 lookup 1016 14000:from all iif lo oif tun0 uidrange 10067-10067 lookup 1016 ...default dev tun0 table 1016 proto static scope link 

Разбираем эту схему:

  1. YouTube на телевизоре крутится под UID 10067.

  2. Правила Android принудительно заворачивают весь трафик этого UID в отдельную таблицу 1016.

  3. Эта таблица тупо гонит пакеты в интерфейс tun0.

  4. Виртуальный интерфейс tun0 создается локальной службой ByeDPI (io.github.romanvht.byedpi), которая режет TCP-пакеты, чтобы обходить замедления и DPI-блокировки.

На роутере (IP 192.168.188.1) в это время крутится sing-box с включенным Fake-IP DNS (198.18.0.0/15). Когда ТВ резолвит адрес youtube.com, DNS роутера отдает фейковый IP из диапазона 198.18.x.x.

Но при холодной перезагрузке ТВ служба ByeDPI (ByeDpiVpnService) по какой-то причине не запустилась автоматически. В итоге интерфейс tun0 просто не создался. А правила маршрутизации в системе остались! Трафик от YouTube (UID 10067) честно пытался уйти в несуществующий tun0 и падал в бездну. Стоило вручную запустить ByeDPI, как туннель поднялся и видео завелось.

Загадка: гигабит есть, а скорости нет

Вторая сетевая байка произошла во время глобального апгрейда домашней сети. Я заменил старые стомегабитные свитчи на управляемые гигабитные UniFi USW-Lite. Казалось бы, теперь-то Wi-Fi должен летать! Но замер скорости на телевизоре упрямо показывал те же ~60 Мбит/с, что и раньше.

Чтобы локализовать узкое место, я зашел по SSH прямо на роутер OpenWrt и запустил скачивание тестового файла с быстрого зеркала Яндекса:

wget -O /dev/null http://mirror.yandex.ru/debian/ls-lR.gz

И получил скорость ровно 7.87 МБ/с (около 63 Мбит/с). Это расставило все точки над i. Оказалось, что роутер подключен к провайдеру через беспроводной мост AirMax (точка-точка), реальная пропускная способность которого как раз упирается в эти 63 Мбит/с. Замена свитчей ускорила только локальный трафик внутри дома, а интернет-канал остался прежним. Мораль: всегда проверяйте скорость напрямую с WAN-порта роутера, прежде чем грешить на кабели или точки доступа.


3. Хирургическая заморозка: убираем PatchWall и системный софт

Чтобы вернуть телевизору отзывчивость, нужно избавить его от фонового мусора.

⚠️ Важное предупреждение: В интернете полно инструкций, где советуют удалять системные пакеты через команду pm uninstall. Не делайте так! Без root-прав вы удалите приложение только для текущего пользователя (user 0), но если сделать сброс ТВ до заводских настроек (Factory Reset), система попытается восстановить удаленные хвосты, не найдет их и намертво зависнет в вечном циклическом ребуте (bootloop). Наш выбор — безопасное и обратимое отключение через pm disable-user.

Подключаемся к телевизору по сети с компьютера (adb connect <IP-телевизора>:5555) и тушим PatchWall вместе с его рекламными сервисами:

Команды для отключения PatchWall
# Выключаем PatchWall и рекомендательные каналы Xiaomiadb shell pm disable-user --user 0 com.mitv.tvhome.atvadb shell pm disable-user --user 0 com.mitv.tvhome.mitvplusadb shell pm disable-user --user 0 com.mitv.tvhome.michannel# Принудительно выгружаем их из оперативной памятиadb shell am force-stop com.mitv.tvhome.atvadb shell am force-stop com.mitv.tvhome.mitvplusadb shell am force-stop com.mitv.tvhome.michannel

После этого единственным живым лаунчером останется стандартный com.google.android.tvlauncher. Кнопка «PatchWall» / «Mi» на пульте просто перестанет открывать рекламу, избавляя вас от случайных нажатий.

Дальше отправляем в спячку остальные ненужные фоновые процессы:

Команды для отключения системного мусора
# Избавляемся от мертвого магазина Google Play Фильмыadb shell pm disable-user --user 0 com.google.android.videos# Блокируем промо-рекомендации на домашнем экранеadb shell pm disable-user --user 0 com.google.android.tvrecommendations# Отключаем Live TV (если не используете обычную комнатную антенну)adb shell pm disable-user --user 0 com.mitv.livetvadb shell pm disable-user --user 0 com.mitv.livetv.ci_mediatek# Убираем бесполезные на ТВ игровые сервисы Google Play Gamesadb shell pm disable-user --user 0 com.google.android.play.games# Запрещаем фоновой службе обновлений Xiaomi будить телевизор по ночамadb shell pm disable-user --user 0 com.xiaomi.mitv.updateservice

Совет: Пакет голосового поиска Google Assistant (com.google.android.katniss) не трогайте. Если его отключить, микрофон на пульте перестанет реагировать на нажатия.


4. Как убрать пустые серые плашки с главного экрана

После заморозки Google Play Фильмов на домашнем экране часто остаются «призраки» — пустые рекламные строки вроде «Топ продаж» или «Рекомендуемое». В настройках каналов тумблеры для них пропадают, и обычным способом их не убрать.

Решается это банальным сбросом кэша лаунчера. Выполняем в консоли:

adb shell pm clear com.google.android.tvlauncher

Экран телевизора на секунду погаснет, лаунчер перезапустится и перестроит свою базу данных с чистого листа. Увидев, что источник рекомендаций отключен, он навсегда сотрет эти рекламные строки.

(Маленький нюанс: порядок иконок в строке быстрого запуска вернется к стандартному. Придется потратить полминуты и заново набрать любимые приложения через кнопку «+»).


5. Борьба за ресурсы: как нас грабило приложение Zona

Даже после заморозки PatchWall телевизор продолжал шуметь и греться как утюг. Я зашел в консоль, ввел uptime и опешил: средняя нагрузка (load average) перевалила за 76 при норме около 1-2!

Запускаем просмотр активных процессов (top -b -n 1) и смотрим на топ пожирателей:

   PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS  4582 u0_a102      20   0 1.3G 144M  72M S 64.2  10.2   0:08.56 mobi.zona    61 root         20   0    0    0    0 R 57.1   0.0   0:18.79 [kswapd0]  4314 50053        30  10 1.2G  69M  31M S 21.4   4.9   0:13.87 dex2oat32 ...

Пазл сложился моментально. Вот три виновника тормозов:

  1. mobi.zona (клиент онлайн-кинотеатра Zona) — виновник торжества. Приложение стартовало вместе с системой и запускало фоновую службу, которая отжирала 64% процессора и 144 МБ оперативки (видимо, фоном раздавала торренты или опрашивала сервера обновлений).

  2. [kswapd0] — системный процесс ядра Linux. Из-за дикого дефицита свободной памяти он тратил 57% процессора на постоянный сброс страниц памяти в ZRAM/Swap (так называемый memory thrashing).

  3. dex2oat32 — фоновый компилятор Android, оптимизирующий байт-код приложений после ОТА-обновления. Процедура штатная, грузит систему первые 10 минут после включения, а потом засыпает.

Тушим Zona одной короткой командой:

adb shell am force-stop mobi.zona

Нагрузка на процессор моментально упала до ~12%, thrashing прекратился, а телевизор выдохнул и стал плавно реагировать на пульт.

Вывод: Для слабых Android-устройств с малым объемом оперативной памяти автозапуск стороннего софта — смерть. Если пользуетесь Zona, не забывайте закрывать её. А еще лучше — перейдите на связку Lampa + TorrServe (ru.yourok.torrserve). TorrServe запускается только тогда, когда вы непосредственно смотрите торрент, и не висит в фоне без вашего ведома.


6. Что получили в итоге

После зачистки фонового мусора и настройки лаунчера телевизор буквально преобразился. Вот сухие цифры замеров:

Параметр

Как было

Как стало

Свободная память (MemAvailable)

~450 МБ

~530+ МБ (высвободили ~80-100 МБ чистой RAM)

Активные лаунчеры в памяти

PatchWall + Android TV Home

Только Android TV Home

Свободный ресурс CPU в простое (Idle)

~10-15% (из-за фоновой Zona улетал в 0%)

~88-91%

Рекламные каналы на домашнем экране

«Топ продаж», рекомендации Xiaomi

Полностью отсутствуют

Мы не просто убрали раздражающую рекламу, а спасли устройство от постоянного свопинга в ZRAM и перегрева процессора. Теперь телевизор реагирует на пульт без задержек и без проблем тянет 4K-видео через торрент-стриминг.

ссылка на оригинал статьи https://habr.com/ru/articles/1044486/