Провайдер мобильного интернета обычно выдаёт каждому клиенту модем 4G и приставку для просмотра ТВ или потоковых сервисов. В компанию Zeus тоже прислали это устройство, но пользы с него никакой — телевизор здесь не смотрят. Зато очень нужны компьютеры с низким энергопотреблением, которые могут работать под Linux. Так появилась идея взломать эту телевизионную приставку, чтобы вместо Android TV запустить на ней Linux.
Пускай обычно провайдеры списывают эти приставки сразу же, как только выдают их клиентам, теоретически они всё же могут попросить вернуть оборудование. Поэтому мы решили, что после наших манипуляций приставка должна легко возвращаться к работе с исходным программным обеспечением. Это означает, что мы не можем вносить деструктивные изменения в конструкцию или перезаписывать важные части памяти устройства. Кроме того, должно работать самое важное оборудование приставки: Ethernet и HDMI.
Наша телевизионная приставка имеет порт Ethernet, порт USB, разъемы питания и HDMI. Также в ней есть ИК‑датчик для пульта ДУ и несколько светодиодов, показывающих состояние устройства. На этикетке приставки мы нашли адрес сайта производителя. Тут всё понятно, провайдер работает по схеме «White Label»: покупает приставки у поставщика, маркирует своим брендом, добавляет собственные приложения, а затем передаёт эти устройства клиентам. Проведя небольшое исследование, мы выяснили, что никто ещё не пытался поставить на эти приставки другую операционную систему: это предстояло сделать нам.
Windows или linux на приставке?
Вскрыв приставку, мы осмотрели печатную плату (PCB) с маркировкой STI6160-D323-ROHS. К сожалению, большая часть интересных чипов находится под алюминиевой RF защитой, поэтому определить, какие именно чипы там находятся, сложновато. Один видимый чип помечен как KLM8G1GETF. Судя по всему, это чип памяти eMMC производства Samsung. Хорошо бы получить данные, хранящиеся на нем, чтобы понимать, как действовать дальше. Мы решили, что сделать это можно двумя способами:
- Выпаиваем чип eMMC, припаиваем его к другой плате и считываем оттуда данные. У меня есть некоторый опыт в этом деле, так что идея казалась рабочей. Однако, поскольку чип eMMC сидит на плате BGA (массив из шариков: в нижней части чипа расположены очень маленькие шарики припоя, которые соединяют чип с печатной платой), выпаять его очень сложно, и высока вероятность испортить микросхему.
- Припаиваем провода к самой плате, подключаясь к дорожкам, которые использует чип. Нужно было припаять всего 5 проводов, но сложно было определить, куда именно их припаивать. Для этого используется техника наложения изображения цоколевки микросхемы на фото печатной платы. К сожалению, даже таким методом нам не удалось найти правильные трассировки печатной платы.
Оба подхода оказались сложными, так что дамп флэш‑памяти на данный момент показался нецелесообразным. К счастью, мы также обнаружили подозрительный незанятый 4-контактный разъем, который потенциально мог являться отладочным портом.
Установка Linux на карту памяти для Андроид ТВ приставки
С помощью мультиметра в режиме прозвонки мы определили, какой пин отладочного порта заземлён.
Визуальный осмотр показал, что у порта есть контакт заземления, контакт питания (VCC) и два контакта ввода‑вывода, подключённые к чему‑то, похожему на главный процессор, подтянутые резистором высокого сопротивления, подключёнными к VCC.
Затем мы припаяли провода (это смотрится не очень красиво, но работает) к порту и использовали дешёвый логический анализатор, чтобы увидеть, что происходит на контактах ввода‑вывода. Вот что происходит после загрузки устройства:
На скриншоте видно, что есть один контакт, на котором постоянно высокий уровень сигнала (из‑за резистора между ним и VCC), и один контакт, на котором есть сигналы. Эти сигналы выглядят последовательными, поэтому мы использовали декодер последовательного протокола для декодирования сигнала. Оказалось, что это действительно последовательные сигналы со скоростью передачи 115 200 бод. Из этого следует, что другой контакт, вероятно, является контактом RX (принимающим): он постоянно находится на высоком уровне, потому что мы ещё ничего не отправили.
Избавляемся от хлама: как превратить бесполезную тв-приставку в компьютер под Linux
Провайдер мобильного интернета обычно выдаёт каждому клиенту модем 4G и приставку для просмотра ТВ или потоковых сервисов. В компанию Zeus тоже прислали это устройство, но пользы с него никакой — телевизор здесь не смотрят. Зато очень нужны компьютеры с низким энергопотреблением, которые могут работать под Linux. Так появилась идея взломать эту телевизионную приставку, чтобы вместо Android TV запустить на ней Linux.
Пускай обычно провайдеры списывают эти приставки сразу же, как только выдают их клиентам, теоретически они всё же могут попросить вернуть оборудование. Поэтому мы решили, что после наших манипуляций приставка должна легко возвращаться к работе с исходным программным обеспечением. Это означает, что мы не можем вносить деструктивные изменения в конструкцию или перезаписывать важные части памяти устройства. Кроме того, должно работать самое важное оборудование приставки: Ethernet и HDMI.
Наша телевизионная приставка имеет порт Ethernet, порт USB, разъемы питания и HDMI. Также в ней есть ИК-датчик для пульта ДУ и несколько светодиодов, показывающих состояние устройства. На этикетке приставки мы нашли адрес сайта производителя. Тут всё понятно, провайдер работает по схеме “White Label”: покупает приставки у поставщика, маркирует своим брендом, добавляет собственные приложения, а затем передаёт эти устройства клиентам. Проведя небольшое исследование, мы выяснили, что никто ещё не пытался поставить на эти приставки другую операционную систему: это предстояло сделать нам.
Вскрыв приставку, мы осмотрели печатную плату (PCB) с маркировкой STI6160-D323-ROHS. К сожалению, большая часть интересных чипов находится под алюминиевой RF защитой, поэтому определить, какие именно чипы там находятся, сложновато. Один видимый чип помечен как KLM8G1GETF. Судя по всему, это чип памяти eMMC производства Samsung. Хорошо бы получить данные, хранящиеся на нем, чтобы понимать, как действовать дальше. Мы решили, что сделать это можно двумя способами:
- Выпаиваем чип eMMC, припаиваем его к другой плате и считываем оттуда данные. У меня есть некоторый опыт в этом деле, так что идея казалась рабочей. Однако, поскольку чип eMMC сидит на плате BGA (массив из шариков: в нижней части чипа расположены очень маленькие шарики припоя, которые соединяют чип с печатной платой), выпаять его очень сложно, и высока вероятность испортить микросхему.
- Припаиваем провода к самой плате, подключаясь к дорожкам, которые использует чип. Нужно было припаять всего 5 проводов, но сложно было определить, куда именно их припаивать. Для этого используется техника наложения изображения цоколевки микросхемы на фото печатной платы. К сожалению, даже таким методом нам не удалось найти правильные трассировки печатной платы.
Оба подхода оказались сложными, так что дамп флэш-памяти на данный момент показался нецелесообразным. К счастью, мы также обнаружили подозрительный незанятый 4-контактный разъем, который потенциально мог являться отладочным портом.
С помощью мультиметра в режиме прозвонки мы определили, какой пин отладочного порта заземлён.
Визуальный осмотр показал, что у порта есть контакт заземления, контакт питания (VCC) и два контакта ввода-вывода, подключённые к чему-то, похожему на главный процессор, подтянутые резистором высокого сопротивления, подключёнными к VCC.
Затем мы припаяли провода (это смотрится не очень красиво, но работает) к порту и использовали дешёвый логический анализатор, чтобы увидеть, что происходит на контактах ввода-вывода. Вот что происходит после загрузки устройства:
На скриншоте видно, что есть один контакт, на котором постоянно высокий уровень сигнала (из-за резистора между ним и VCC), и один контакт, на котором есть сигналы. Эти сигналы выглядят последовательными, поэтому мы использовали декодер последовательного протокола для декодирования сигнала. Оказалось, что это действительно последовательные сигналы со скоростью передачи 115200 бод. Из этого следует, что другой контакт, вероятно, является контактом RX (принимающим): он постоянно находится на высоком уровне, потому что мы ещё ничего не отправили.
[Перевод] Избавляемся от хлама: как превратить бесполезную тв-приставку в компьютер под Linux
Провайдер мобильного интернета обычно выдаёт каждому клиенту модем 4G и приставку для просмотра ТВ или потоковых сервисов. В компанию Zeus тоже прислали это устройство, но пользы с него никакой — телевизор здесь не смотрят. Зато очень нужны компьютеры с низким энергопотреблением, которые могут работать под Linux. Так появилась идея взломать эту телевизионную приставку, чтобы вместо Android TV запустить на ней Linux.
Пускай обычно провайдеры списывают эти приставки сразу же, как только выдают их клиентам, теоретически они всё же могут попросить вернуть оборудование. Поэтому мы решили, что после наших манипуляций приставка должна легко возвращаться к работе с исходным программным обеспечением. Это означает, что мы не можем вносить деструктивные изменения в конструкцию или перезаписывать важные части памяти устройства. Кроме того, должно работать самое важное оборудование приставки: Ethernet и HDMI.
Наша телевизионная приставка имеет порт Ethernet, порт USB, разъемы питания и HDMI. Также в ней есть ИК‑датчик для пульта ДУ и несколько светодиодов, показывающих состояние устройства. На этикетке приставки мы нашли адрес сайта производителя. Тут всё понятно, провайдер работает по схеме «White Label»: покупает приставки у поставщика, маркирует своим брендом, добавляет собственные приложения, а затем передаёт эти устройства клиентам. Проведя небольшое исследование, мы выяснили, что никто ещё не пытался поставить на эти приставки другую операционную систему: это предстояло сделать нам.
Вскрыв приставку, мы осмотрели печатную плату (PCB) с маркировкой STI6160-D323-ROHS. К сожалению, большая часть интересных чипов находится под алюминиевой RF защитой, поэтому определить, какие именно чипы там находятся, сложновато. Один видимый чип помечен как KLM8G1GETF. Судя по всему, это чип памяти eMMC производства Samsung. Хорошо бы получить данные, хранящиеся на нем, чтобы понимать, как действовать дальше. Мы решили, что сделать это можно двумя способами:
- Выпаиваем чип eMMC, припаиваем его к другой плате и считываем оттуда данные. У меня есть некоторый опыт в этом деле, так что идея казалась рабочей. Однако, поскольку чип eMMC сидит на плате BGA (массив из шариков: в нижней части чипа расположены очень маленькие шарики припоя, которые соединяют чип с печатной платой), выпаять его очень сложно, и высока вероятность испортить микросхему.
- Припаиваем провода к самой плате, подключаясь к дорожкам, которые использует чип. Нужно было припаять всего 5 проводов, но сложно было определить, куда именно их припаивать. Для этого используется техника наложения изображения цоколевки микросхемы на фото печатной платы. К сожалению, даже таким методом нам не удалось найти правильные трассировки печатной платы.
Оба подхода оказались сложными, так что дамп флэш‑памяти на данный момент показался нецелесообразным. К счастью, мы также обнаружили подозрительный незанятый 4-контактный разъем, который потенциально мог являться отладочным портом.
Части открытого устройства
С помощью мультиметра в режиме прозвонки мы определили, какой пин отладочного порта заземлён.
Визуальный осмотр показал, что у порта есть контакт заземления, контакт питания (VCC) и два контакта ввода‑вывода, подключённые к чему‑то, похожему на главный процессор, подтянутые резистором высокого сопротивления, подключёнными к VCC.
Цветные PCB дорожки, ведущие к загадочному разъёму
Затем мы припаяли провода (это смотрится не очень красиво, но работает) к порту и использовали дешёвый логический анализатор, чтобы увидеть, что происходит на контактах ввода‑вывода. Вот что происходит после загрузки устройства:
Логический анализатор, подключенный к плате
Скриншот с логического анализатора
На скриншоте видно, что есть один контакт, на котором постоянно высокий уровень сигнала (из‑за резистора между ним и VCC), и один контакт, на котором есть сигналы. Эти сигналы выглядят последовательными, поэтому мы использовали декодер последовательного протокола для декодирования сигнала. Оказалось, что это действительно последовательные сигналы со скоростью передачи 115 200 бод. Из этого следует, что другой контакт, вероятно, является контактом RX (принимающим): он постоянно находится на высоком уровне, потому что мы ещё ничего не отправили.