downgr8 - инструмент для понижения версии webOS на телевизорах LG
downgr8 представляет собой инструмент для запуска интерфейса обновления системы телевизоров LG с webOS в «экспертном режиме». Он работает на тех версиях прошивки, где был удален
простой способ доступа к экспертному режиму. Пока что для неопытных пользователей практически ничего не предусмотрено.
Обратите внимание, что этот инструмент требует наличия root-доступа на телевизоре.ПредупреждениеИспользуйте этот инструмент на свой страх и риск. Он не был тщательно протестирован - или, в некоторых случаях, вообще не тестировался. Он предназначен для людей, которые уже знают, что делают. Автор, вероятно, не будет оказывать никакой поддержки.
Часть на C довольно надежна, и сервис, похоже, в основном работает. Однако приложение, состоящее из скрипта, который делает серию запросов к сервису, может работать или не работать. Рекомендуется использовать его в первую очередь как пример порядка вызова методов сервиса.
Общее предупреждение о даунгрейдеИмейте в виду, что откат прошивки никогда не поддерживался компанией LG. Автор лично не сталкивался с какими-либо проблемами, но вполне возможно, что вы можете привести телевизор в состояние, не поддающееся восстановлению (т. е. «окирпичить» его). Будьте особенно осторожны с телевизорами с webOS 4+, так как их легче довести до состояния, когда
восстановление невозможно.
По возможности используйте образы для обновления с носителей USB, а не версии для обновления по сети (NSU). Поскольку они предназначены для обновления телевизора из одного, в основном известного, состояния в другое, образы NSU часто не содержат данных для всех разделов телевизора. В некоторых ситуациях обновления NSU должны применяться в определенном порядке, и не известно, может ли это повлиять на понижение рейтинга. Образы USB, которые можно загрузить с сайта поддержки LG, похоже, всегда содержат все разделы.
Убедитесь, что вы используете правильный образ прошивки для вашего телевизора. В частности, убедитесь, что у вас правильный образ:
- Версия - Помните, какую именно версию вы собираетесь установить.
Регион- В webOS 5 и младше используются отдельные файлы прошивок для каждого типа тюнера (atsc, dvb, arib). Начиная с webOS 6, используются универсальные (глобальные) образы.
Чипсет (SoC) - вряд ли обновление позволит вам установить прошивку для неправильной SoC, но лучше это проверять.
Каждый телевизор и файл прошивки имеют идентификатор, называемый OTAID, в котором закодирован тип SoC и тюнера. Не пытайтесь установить прошивку, которая не соответствует OTAID вашего телевизора. Вы можете получить OTAID вашего телевизора, выполнив эту команду из оболочки root:
- Код: Выделить всё
luna-send -q 'model_name' -n 1 'luna://com.webos.service.update/getCurrentSWInformation' '{}'
OTAID образа прошивки отображается при извлечении его с помощью
epk2extract.
Требования- Телевизор под управлением LG webOS 3.0+ и прошивка, в которой пофиксен старый метод доступа к экспертному режиму.
- Root-доступ к телевизору.
- Установленный и активированный (т. е. показывающий «root status: ok») Homebrew Channel на телевизоре.
Homebrew Channel не является обязательным, если вы можете убедиться, что служба lol.downgr8.service запущена от имени root.
ПодробностиДля установки старых версий прошивки (даунгрейд) или установки образов прошивки с типом, отличным от «USB» (например, образов NSU), служба обновления webOS должна находиться в «экспертном режиме».
До начала 2022 года это можно было сделать
относительно просто без root-доступа. Однако примерно в то же время, когда LG исправила уязвимости, используемые
RootMyTV, они также изменили обновление, чтобы оно больше не полагалось на легко изменяемый внешний файл для управления экспертным режимом.
После этого обновления отслеживают состояние экспертного режима и отказываются включать его, если не подключено и не аутентифицировано одно из устройств
Access USB от LG. Получить или эмулировать аппаратное обеспечение Access USB не представляется возможным, но с root-доступом это и не нужно. Мы можем просто убедить обновление, что устройство Access USB присутствует и аутентифицировано, независимо от реальности.
Существует несколько способов добиться этого, и выбранный мной метод был вдохновлен
sampatcher.py Дэвида Бьюкенена.
Отредактировав URI Luna в памяти обновления, мы можем перенаправить будущие запросы Access USB на наш собственный сервис. Затем мы вызываем обновление, чтобы оно перепроверило текущий статус Access USB и ответило, что оно аутентифицировано. Теперь мы можем успешно выполнить запрос на включение экспертного режима.
Осталось только запустить приложение Update UI с правильными параметрами.
Старый методДля старых прошивок этот инструмент не нужен, так как следующий способ по-прежнему работает:
- Код: Выделить всё
touch /tmp/usb-expertmode
luna-send -n 1 'luna://com.webos.applicationManager/launch' '{"id":"com.webos.app.softwareupdate", "params":{"mode":"expert", "flagUpdate":true}}'
Этот метод также не был удален в webOS 1 и 2.
Он работает потому, что служба обновления использует существование файла /tmp/usb-expertmode для отслеживания того, включен ли экспертный режим. Поскольку он расположен в каталоге /tmp, который может быть записан любым пользователем, для его создания не требуется root-доступ.
Вы можете проверить, исправлена ли эта функция на вашем телевизоре, выполнив следующую команду от имени root:
- Код: Выделить всё
strings /usr/sbin/update | fgrep -e /tmp/usb-expertmode
Если вы получите какой-либо результат, этот метод должен по-прежнему работать на вашем телевизоре.
Восстановление после неудачного понижения/повышения версииВозможно восстановить не загружающийся телевизор, если вы сможете войти в загрузчик (U-Boot или lxboot). Для доступа к загрузчику необходимо, чтобы телевизор находился в режиме DEBUG.
В webOS 3.x и более ранних версиях (т. е. в моделях 2015-2017 гг.) включить DEBUG можно, непосредственно
изменив настройки в NVM. Хотя этот процесс относительно прост, он требует определенных аппаратных инструментов и физического доступа к микросхеме на главной плате телевизора. На webOS 4 и более новых моделях включить DEBUG не удастся, если система не загрузится.
Из загрузчика можно вручную переписать содержимое каждого поврежденного раздела на eMMC. Файлы данных разделов можно извлечь из образов прошивки с помощью
epk2extract. Возможные способы передачи этих файлов на телевизор включают USB-накопители, TFTP через Ethernet и Xmodem.
Если у вас webOS 4 или более поздняя версия и вы не включали DEBUG, единственным вариантом восстановления является прямое перепрограммирование eMMC. Для этого потребуется либо припаять к плате провода с необходимыми сигналами (если вы сможете их найти; для доступа к ним может потребоваться соскабливание паяльной маски), либо выпаять и перепаять микросхему eMMC.
Источник:
https://github.com/throwaway96/downgr8