Привет, хочу поведать об очередных экспериментах со старыми приставками и linux.
Покупал я как-то на авито телек, и в дар к нему отдали ростелекомовскую приставку Hyboard Z123. Приставка оказалась довольно-таки примитивной, работает на embedded linux со старым ядром 3.10, и запускает только приложение wink. Не имеет wifi, зато имеет 1 usb, ethernet 100Mbit, и аж целых 512МБ ОЗУ (DDR3-1600) с 256MB NAND flash памяти. SoC оказался Hi3798mv100 — это китайский SoC armv7hf 1.5Ghz 4core + Mali 450. SoC имеет 7 не совместимых между собой ревизий — A, B, C, D, E, F, G. В моем случае SoC оказался ревизии F (hi3798mdmo1f).

Вскрыл её — и увидел uart на плате. Судя по инету — есть два вида распиновок. Но если даже если и больше — не проблема вызвонить землю и найти 3.3v — а оставшиеся rx и tx пробовать перебором.

Подключился — но консоль загрузчика оказалась залоченной. На ОС логина/пароля я тоже не знал. Через HiTool по аппаратному XMODEM приставка тоже не хотела грузиться. Зная что загрузочное устройство задается подтяжками — попытался загрузиться с usb замыканием 107 и 108 контактов — но это тоже залочено.
Погуглил — и кастомов не нашел + народ жалуется, что приставка не шьется, так как ростелеком её залочил в хвост и гриву. Хотел уж было забить, но нашел на github два SDK: один с ядром 3.18, а второй с 4.4 (для работы обоих потребуется виртуалка c Ubuntu 12.04 32bit). Решил собрать свой fastboot (прокаченный аналог uboot) + debian 12 rootfs — но проблемка: как и писал выше — все залоченно. А причина — прошлые приставки от ростелекома, которые всякие васяны с авито прошивали бесплатными IPTV плейлистами и продавали за 1000 рублей с надписью «вечное ТВ с 5000 каналами» — ростелеком решил прикрыть эту лавочку, и зашил в OTP (однократно программируемую память) SoC свой ключ, которым подписал свой miniboot (аналог uboot) и ядро с rootfs. По итогу даже после прошивки своего fastboot на программаторе я получил кирпич. Ключей для подписи в открытом доступе тоже нет, и по итогу — приставка стала не интересна. Может быть потом куплю новый незалоченный SoC для нее на али и сделаю nand программатор. А пока что приставка кирпич.

Но ведь я нашел SDKшки и уже приготовился к играм с ними, не хотелось бы просто так все это заканчивать. Поэтому я стал искать еще приставки на таком SoC — сначала пробовал Formuler Z+ (uart колодка есть, но дорожки к ней не идут — надо паяться к ногам SoС), потом Skyway Play (uart на плате нет вообще + bga SoC ) — загрузчики у них не были залочены, но из-за неудобного uart они тоже пошли мимо кассы.
И наконец-таки я нашел Formuler Z nano. У этой приставки тоже не был залочен загрузчик, но uart хотя бы выведен на контрольные пины (что неудобно, но хоть что-то). Приставка имеет вышеупомянутый SoC (ревизии G — hi3798mdmo1g), все те же 512MB ОЗУ и 4GB EMMC, + есть wifi n150 2.4Ghz (rtl8152). По портам — HDMI, композитное видео (просто конвертор с HDMI внутри), 2xUSB 2.0 и MicroSD слот. Ниже на фото плата уже после апгрейда (о нем ниже).

Для начала с помощью SDK я собрал свой fastboot. Из интересного при сборке — выбор ревизии SoC, настройка памяти, и загрузочного устройства — все это делается через выбор соответствующего reg файла (+ в случае nand задаются параметры nand). У меня emmc + два чипа памяти на плате. SoC имеет 32битную шину, а значит каждый чип памяти 16 бит.
Выбираем hi3798mdmo1g_hi3798mv100_ddr3_1gbyte_16bitx2_4layers_CHANGHONG_emmc.reg. Да, в этом reg указано 1GB ОЗУ, но меньше в SDK нет, и это не страшно — все прекрасно пашет и с 512MB ОЗУ, если в параметры ядра добавить mem=512M.
Rootfs debian12 создаем через debootstap (для armhf архитектуры), ядро с модулями берем из SDK. Да, оно версии 4.4, зато пашет видео через hdmi (которое очевидно сломали в свежих ядрах, ведь soc не в mainline linux).
Но перед превращением приставки в десктоп на debian12 хотелось бы сделать апгрейд — увеличить флешку и ОЗУ. Лимитов на размер emmc нет, но особо много тут тоже не нужно. 16-32Gb для «комфортных игрушек» хватит более чем — поэтому я взял emmc bga153 на 32gb (KLMBG2JETD-B041) с разбитого старого планшета, также взял два 16битных чипа DDR3L-1600 (K4B4G1646D) с DDR3 PC3L плашки (Samsung 1Rx16 2Gb). SoС умеет и 2Gb ОЗУ, но шина памяти у SoC — 32 бита. То есть для 2Gb ОЗУ наша плата должна иметь 4 8битных чипа. А у нас тут 2 16битных чипа, и в SDK нет reg файлов для 2Gb с 2x16bit чипами по гигу (да и найти такие чипы очень сложно), поэтому для этой платы максималка — 1Gb ОЗУ. DDR3 чипы катаем на 0.45 свинцовые шары, а EMMC на 0.3. Флюс берем неактивный, чтобы потом не вымывать из-под чипа. НЕ БЕРЕМ ФЛЮС NC-559 (ибо он обязателен к отмывке) и ТТ (ибо в высокочастотных цепях он проводящий и ОЗУ будет работать с ошибками или вообще не будет).
После запайки всей этой радости emmc видна сразу, как и ОЗУ (ибо reg у нас и так был на 1GB, но не забываем в параметры ядра потом добавить mem=1G). Грузимся с usb замыканием 107 и 108 (fat32 диск с нашим fastboot.bin), и шьем все что нужно прямо из консоли fastboot через команды вида fatload/mmc write. Из linux это самый адекватный способ прошивки, если не хочется юзать виртуалку с виндой и HiTool.
И бинго — наш слабый и бесполезный arm неттоп на debian12 готов. Ниже видео с демонстрацией прекрасной скорости работы нашего монстра мульдимедиа индустрии (нет).

Как видите — получилась игрушка со скоростью работы ниже плинтуса. Еще модуль аппаратного ускорения видео жестко хочет 256-320М ОЗУ для работы, поэтому пришлось его выключить (ибо ОЗУ и так мало). ZRAM модуля в SDK для ядра из SDK тоже нет. Также прибавьте к этому сложность поиска вышеназванных приставок на авито (их или нет вообще, или они продаются за неадекватный прайс) — и в итоге получили дорогую бесполезную игрушку. Но делалось все это не ради целесообразности, а по фану. Так что поигрался — и хватит (подумал я).

Но нет😊. При очередном ленивом листании avito я наткнулся на огромное количество приставок Wifire Snowbox Palm2 A312 за менее чем 300 рублей. По железу они имеют все тот же SoC (ревизии f — hi3798mdmo1f), 512Mb RAM и 4Gb EMMC. Также имеется wifi n300 2.4Ghz/5Ghz rtl8192du и 100Mbit lan. По портам — все те же 2xUSB 2.0 и MicroSD. UART выведен на отдельные пины, что очень удобно (белый разъем внизу платы). Он тоже может иметь два вида распиновок (об этом в инструкции по прошивке по ссылке в конце статьи).

Как мы видели, в качестве десктопа (даже для офисной работы) этот SoC едва ли подходит, но как мини-сервер на linux за такие деньги — более чем, ибо старые orange pi с подобным железом (и без корпуса) на авито начинаются от 1000-1500 рублей. Поэтому я прикупил 5 штук и начал свои опыты.
SDK для сбора fastboot есть, debian 12 rootfs для armv7hf сделать через debootstrap и упаковать в образ ext4 тоже не проблема. Проблема — старое ядро в SDK с мелким количеством модулей. Этот китайский SoC не в mainline linux, поэтому я смутно понимал как собрать для него ядро. В поисках патчей или готовых исходников я вновь полез в гугл и нашел две репы на github. Первая репа содержало ядро для всех Hi3716 / Hi3796 / Hi3798 версий (в том числе и для Hi3798MV200/Hi3798MV300, что вообще является armv8), но ветка для Hi3798MV100 была сломана и зависала при запуске. Вторая репа содержала ядро для китайской приставки EC6108V9C на Hi3798MV100 SoC, и последняя версия ядра была 6.3rc5. Более чем нормально для debian 12. Привел конфиг ядра к debian подобному виду и собрал — все заработало. Последний штрих — создание «установщика» — fastboot который грузится с usb флешки и при запуске прошивает девайс файлами с этой же флешки (читая bootargs), после чего ребутит приставку. Кстати, помимо замыкания 107 и 107 для загрузки с usb флешки (в случае c A312 это можно сделать через дырочки дна не разбирая корпус) можно также просто очистить первый мегабайт emmc из uboot.
Свою сборку по старой традиции я выложил тут в теме приставки на 4pda. Но сборка была с косяками — emmc не работала на полной скорости + в mainline linux на момент 6.3rc5 еще не попал драйвер wifi (а этот с github разраба не работал — wifi интерфейс был виден, но mac адрес был нулевым и не подключался к любым точкам доступа). Из-за этих косяков сборку качали мало, но потом на все том же 4pda человек под ником woff (который явно сильно поумнее меня) сделал патчи для emmc и wifi, с которыми вышеописанные проблемы исчезли. Я их добавил в свою сборку, после чего количество скачиваний стало расти.
Тут можно скачать debian 12 с ядром 6.3rc5 и инструкцией для этой приставки. Бонусом там же рассказываю как вывести uart на av разъем и сделать для него кабель из комплектного RCA кабеля, и все про тот же апгрейд до 1Gb RAM. Плата кстати целиком на свинцовом припое, отлично паяется даже при низких температурах. Но качество платы — фигня, не перегревайте её лишний раз во избежании отрывания каких-нибудь площадок и дорожек.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

CAPTCHA ImageChange Image