Включение режима отладки на телевизоре LG с webOS путем изменения значения в энергонезависимой памяти (NVM) (
оригинал статьи на английском)
ПредупреждениеТо, что вы делаете с этой информацией, является вашей личной ответственностью. Если вы попытаетесь заблокировать свой телевизор, это не моя вина. Вероятно, у вас должен быть некоторый опыт работы с электроникой, если вы хотите попробовать это.
Для этого потребуется открыть телевизор и подсоединить провода к выводам интегральной схемы. Если вас это не устраивает, то это не для вас.
Этот документ находится в стадии разработки.debugstatusТелевизоры LG, по крайней мере, с эпохи NetCast (предшественника webOS), имели понятие уровня отладки, обычно называемого "debugstatus". Существует три режима: DEBUG, EVENT, и RELEASE. Телевизоры обычно работают в RELEASE-режиме.DEBUG mode позволяет использовать различные функции ведения журнала и другие функции отладки в WebOS, включая доступ к консоли загрузчика и меню отладки через serial.EVENT аналогичен DEBUG, хотя он может и не включать столько протоколирования.
NVMВ более старых версиях webOS значение debugstatus хранится в том, что LG называет "NVM", наряду с множеством других конфигурационных данных, таких как скорость передачи данных для последовательной связи. Вы можете найти соответствующие структуры и enum-разделы в
GPL-пакетах LG. Примечательно:
- debugstatus (в уebOS; NetCast отличается): DEBUG равно 3, EVENT равно 4 и RELEASE равно 5
- скорость передачи данных: 2400 равно 0, 9600 (по умолчанию, я полагаю) равно 2, 115200 равно 7, а другие значения можно найти в заголовках GPL
Во всех случаях, с которыми я сталкивался, debugstatus представляет собой один байт со смещением 0x1a1 в NVM. Я буду использовать 0x1a1 в этом документе, но для вашей модели он может отличаться. Лучший способ определения смещения, которое вы должны использовать, - это обратное проектирование вашего загрузчика, но пакет GPL для вашей модели телевизора также должен предоставлять необходимую информацию (возможно, в зависимости от поставщика SoC). После выгрузки содержимого EEPROM вы должны убедиться, что структура соответствует вашим ожиданиям.
ИсторияДо webOS 5 (выпущенной на моделях 2020 года) LG сохраняла NVM в микросхеме I2C EEPROM. В моделях webOS 3.5 (2017) NVM полностью не зашифрован. В webOS 4.0 (2018) LG начала шифровать debugstatus в NVM, хотя другие параметры конфигурации оставались доступными. В webOS 4.5 (2019) они попытались немного запутать debugstatus, назвав его "Doption". В webOS 5 (2020) NVM был удален и заменен на "bootdb", который хранится в зашифрованном разделе eMMC с именем dbboot.
Интегральные микросхемыВсе микросхемы, которые, как я видел, использовались для NVM, имели размер 256 КБ (32 КБ) в пакетах SOP-8. Вы также можете найти микросхемы I2C EEPROM (потенциально меньшие, такие как 24C08) для устройств HDMI (EDID), которые здесь не актуальны.
Rohm BR24G256F-3Маркировка "4G25" (с номером партии внизу) указывает на
Rohm BR24G256F-3 (техническое
описание). Я предполагаю, что это часть -3, а не, например,
часть -5, которая поддерживает работу на частоте 1 МГц и больше циклов записи, но различия здесь не должны иметь значения.

mikroskhema-nvm-eeprom-na-plate-43lj5500-ua-webos-3-5-2017-mstar-m2r-soc-pomechena-4g25.jpg (303.01 КБ) Просмотров: 1636
- Микросхема NVM EEPROM на плате 43LJ5500-UA (WebOS 3.5; 2017; MStar M2R SoC) помечена 4G25.
Микросхема EEPROM с пометкой "4G25"Микросхема NVM EEPROM на плате 43LJ5500-UA (WebOS 3.5; 2017; MStar M2R SoC) помечена 4G25.
FMD FT24C256AЯ также видел микросхемы на платах LG с пометкой "FT24C256A", которые производятся
Fremont Micro Devices (FMD). Маркировка указывает либо на [url=https://www.fremontmicro.com/product/errprom/i²c/ft24cxx/20180518/1196.aspx]FT24C256A-Exx[/url] (
техническая спецификация), либо на [url=https://www.fremontmicro.com/product/errprom/i²c/ft24cxx/20200507/1665.aspx]FT24C256A-Txx[/url] (
техническая спецификация), хотя, похоже, между этими частями нет никакой разницы. (Предполагается, что T и E указывают диапазон температур, но оба -40-85°C.) Я не уверен, используются ли они для NVM.
GigaDevice GD25Q80CSIGЯ заметил плату M3R с микросхемой памяти SPI, несмотря на то, что никогда не видел, чтобы SPI использовался в LG code. В частности, это
микросхема GD25Q80CSIG 8Mbit NOR flash IC (
техническая спецификация) от
GigaDevice. Его легко идентифицировать, так как на микросхеме напечатано название производителя и полный номер детали. Я не знаю, для чего он используется.
МодификацияОбщая идея состоит в том, чтобы прикрепить тестовую клипсу к микросхеме EEPROM и использовать какое-либо главное устройство I2C для доступа к нему. Затем вам следует:
- Создать резервную копию содержимого EEPROM (возможно вам захочется проделать это несколько раз и убедиться, что вы всегда получаете один и тот же результат.) ;
- Убедиться, что значение со смещением 0x1a1 равно 5 (если это не так, и вы уверены, что правильно сбросили EEPROM, я хотел бы услышать об этом.)
- Записать 3 в 0x1a1.
- Прочитать содержимое EEPROM.
- Убедиться, что все так же, как и раньше, за исключением того, что байт в 0x1a1 равен 3 вместо 5.
После включения DEBUG я использовал меню последовательной отладки, чтобы создать корневую оболочку.
Требования к оборудованиюВам понадобится тестовый зажим, если вы не хотите припаять провода непосредственно к выводам микросхемы EEPROM или иным образом найти способ подключения к шине I2C. Могут работать мини-грабберы (
случайный пример). Шина I2C может быть выведена на незаселенный разъем (или, если вам действительно повезет, на настоящий разъем) где-нибудь. На плате есть и другие устройства, использующие I2C, но я не знаю, подключены ли они к одной и той же шине.
Тестовая клипсаТестовый зажим SOIC-8/ SOP-8, такой как
Pomona 5250, устанавливается поверх микросхемы и обеспечивает легкий доступ к выводам. Обратите внимание, что есть гораздо более дешевые универсальные тестовые ролики, доступные из обычных источников (например, eBay, Amazon, AliExpress).

deshevaya-testovaya-klipsya-na-mikroskheme-nvm-eeprom-platy-43lj5500-ua.jpg (166 КБ) Просмотров: 1636
- Дешевая тестовая клипса на микросхеме NVM EEPROM платы 43LJ5500-UA.
ПрограмматорПотенциально может работать любое устройство, говорящее на языке I2C. Например, должна работать плата на базе WCH CH341A или FTDI FT2232H (например,
мини-модуль FT2232H). Плата на базе FT232H может работать, но обратите внимание, что версия
Adafruit FT232H Breakout, выпущенная до 2020 года, имеет только выходной вывод питания 5 В (см. Примечания Ниже), хотя напряжение ввода-вывода должно быть нормальным.
Bus Pirate теоретически должен работать, хотя у меня были проблемы с Bus Pirate v4; я смог обнаружить EEPROM и сбросить его содержимое, но данные были повреждены. Я переключился на использование Raspberry Pi 3 (модель B +), что дало мне меньше проблем и в конечном итоге позволило мне успешно изменить debugstatus. Я использовал контакты 3 и 5 40-контактного заголовка, которые являются SDA и SCL соответственно. Эти контакты соответствуют /dev/i2c-1в Linux по умолчанию.
ПримечанияХотя сами микросхемы EEPROM поддерживают напряжение 5 В, вы будете подключать части платы с резервным питанием, которые ожидают 3,3 В, поэтому убедитесь, что ваш адаптер I2C использует напряжение 3,3 В.
I2C довольно терпим к неидеальным соединениям, особенно на используемых здесь более низких скоростях.
По-видимому, по крайней мере, некоторые модели могут загружаться с недействительным или полностью отсутствующим NVM EEPROM (что касается debugstatus, то по умолчанию RELEASEон будет равен.)
В NetCast DEBUG значение равно 0 и RELEASE равно 2, поэтому вы бы изменили значение 2 на 0.
ЛитератураNXP UM10204: спецификация шины I2C и руководство пользователя (Rev.6, 4 апреля 2014 г.) — Спецификация I2C
Philips AN10216-01: Руководство по I2C (24 марта 2003 г.) — Введение в I2C, с некоторой историей и контекстом
/dev Введение в интерфейс Linux I2C — краткий обзор того, как использовать /dev/i2c-Xинтерфейс в Linux