Включение режима отладки на телевизоре 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 КБ) Просмотров: 2028 
-  Микросхема NVM EEPROM на плате 43LJ5500-UA (WebOS 3.5; 2017; MStar M2R SoC) помечена 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 КБ) Просмотров: 2028 
-  Дешевая тестовая клипса на микросхеме 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