Файл u boot bin андроид тв бокс

О чем тут написано

Сборка образа Armbian для TV-Box HK1

Сама плата HK1 естественно не поддерживается дистрибутивом, но построена на поддерживаемой платформе Amlogic S905X3 (meson-sm1).
Чип на моей платформе обозначается как meson-sm1. Чтобы собрать образ под этот чип над найти наиболее похожую плату из списка имеющихся. Для этого в директории, куда скачали репозиторий armbian выполняем:

На данный момент наиболее похоже на то что мне нужно выглядит файл odroidc4.conf.
Собираю Ubuntu 20.10:

На моем ноуте с процессором Ryzen 4800H сборка в докере идет 47 минут (с учетом выкачивания всех зависимостей, канал 100Мбит/с), а после выкачивания зависимостей — 8 минут.
После того, как я подключился к консоли, дождался загрузки android’а, подключил флешку с файлом образа и выполнил:

Бокс ожидаемо окрипичился :))) с таким сообщением (среди прочих):

Судя по всему это значит, что параметры инициализации памяти, которые есть в новом загрузчике не подошли к моей железке. Вот тут: https://github.com/3F/aml_s905_uboot я нашел как можно их взять из старого загрузчика и добавить в новый. План был такой — с помощью Amlogic USB Burning Tool я прошью старую прошивку, а дальше — выдеру старого бутлоадера параметры для инциализации памяти. НО это не понадобилось!!
Оказалось, кнопка Reset на моей коробке не работает (она в разъеме 3,5мм) и воспользоваться Amlogic USB Burning Tool я не смогу. После подключения коробки USB-шнурком A-A к ноуту и подаче питания при зажатой (предполагаемой) кнопкой Reset в настольной системе новое USB-устройство не появлялось, а в консоли всё тот же boot loop.
Я внимательно изучил печатную плату возле чипа флешки, а также на обратную исторону и увидел пару контактных площадок.
Терять было нечего — с помощью dd я залил на SD-карту в самое начало карты старый bootloader (слава богу я сохранил все разделы со старой прошивкой), вставил в коробку SD-карту, подал питание и замкнул контактные площадки на обратной от чипа флехи стороне платы отверткой.
Вместо таких сообщений в начале лога:

Внезапно — она не нашла встроенный NAND-flash, но нашла опреативку, SD-карту и сначала загрузилась старым бутлоадером:

Затем прошло что-то похожее на тестирование RAM, а потом — я увидел загрузку нового U-Boot:

Эксперименты показали, что держать замкнутыми контакты нужно до момента появления строк:

А прд ними будет счетчик.
Затем — я извлек карту памяти и выключил-включил коробку — пошла загрузка с новым U-Boot со встроенной флеш-памяти и далее при включении коробки (без карты памяти) стабильно запускался новый U-Boot (что уже неплохо).
Дальше — я залил на карту пямяти собранный образ Armbian:

вставил карту в коробку и включил. Началась загрузка с карты памяти. Сначала мне показалось, что ядро пока не стартует я видел только сообщение:

и дальше пусто. В конфиге build/config/bootscripts/boot-odroid-c4.ini указано устройство консоли ttyS0, а должно быть наверное ttyAML0 Но, судя по тому что моргание светодиодов у коробки стало другим было похоже, что что-то там загружалось и через некоторое время увидел вот такое:

и дальше — приглашение ввести новый пароль!! Система смогла нормально загрузиться с SD-карты. Потом я выключил бокс, вытащил карту и система уже нормально загрузилась с внутреннего накопителя. Armbian сам себя установил. А отсутствие сообщений при загрузке ядра — это сокрее всего некорректные параметры запуска ядра.
К сожалению, в системе оказался не виден беспроводной модуль (наверное загружается не подходящий dtb).

Читайте также:  Hunt showdown для андроид

Как прошить Armbian на HK1BOX

В итоге порядок установки Armbian на HK1BOX вышел такой:

Немного осмелев и поняв, что убить коробку совсем не так уж просто я залил всю внутреннюю флеху нулями и повторил установку. Всё заработало.

Проблемы

не загружается при отсоединенной последовательной консоли

U-Boot не загружает систему, если отключена консоль (кабель физически не подключен).
При подключении кабеля rs-232 в момент “зависания” там видно приглашение консоли U-Boot. Всё выглядит так, как если бы загрузка прервалась по нажатию клавиши.
При нажатии Enter в консоли U-Boot должна выполниться последняя команда, но там в последней команде обычно бывал какой-то мусор, причем довольно часто разный.
Я сделал вывод, что скорее всего консоль не притянута к +3.3 и “шумит” — то есть самопроизвольно льет всякий мусор в RX. Выход — в коробке между выводом V (3.3V) и RX припаять резистор 47-100кОм.
И это помогло. Теперь всё нормально загружается.

Не смог загрузить образ

Не смог загрузить образ, собранный вот так:

Хотя вот такой вариант грузился норм:

Хотя имеет проблемы с работой systemd и других программ. Веротяно — дело в версии glibc или других библиотек. В итоге сейчас нормально заработал такой:

Загрузка с sd-карты для переустановки системы

В скриптах загрузки U-Boot из Armbian обнаружил, что можно переключать загрузочные устройства — практически как в BIOS ПК.
Для того, чтобы стартануть с SD-карты нужно в консоли U-Boot выполнить:

Убедиться, что под номером 0 видна SD-карта. И затем загрузиться с нее:

Предполагается, что на SD-карте будет образ, совместимый с текущими скриптами U-Boot.

fdt задан в U-Boot

В параметрах U-Boot жестко приписан путь к dtb

И на девайссе HK1BOX с этим dtb не заработал Wi-Fi. Я просто скопировал под этим именем dtb, с которым все работает, перезагрузился и Wi-Fi появился:

Раскирпичивание

Специально ради эксперимента я залил нулями весь внутренний флеш.
Восстановить коробку удалось так:

То есть фактически грузим систему с SD-карты.

НЕАКТУАЛЬНОЕ

Всё что написано ниже — заметки о моих первых попытках что-то залить в TV-Box HK1. Оно не очень уже актуально, но может кому-то поможет.

Как загружаться

В итоге файлик получается такой (если убрать все закоментированные строки:

На самом деле это скрипт. Фактически, если отбрсить всякие if-then он делает следующее:

разобратьэто все, можно если выполнить команду

и начать копать.
Загрузка начинается с выпонения того, что написано в bootcmd. Чтобы printenv выводил длинные строки целиком необходимо в терминале включить wrapping в minicom это можно сделать нажав Ctrl-A, затем Z и затем W.

Нормально подошел meson-sm1-khadas-vim3l.dtb с образа Armbian_19.11.5_Arm-64_eoan_current_5.5.0-rc6_20200127.img
А вот результаты тестирования некоторых других dtb:

Чтобы после установки на emmc логи systemd сыпались в консоль нужно дописать в строку запуска ядра в файлике /boot/uEnv.txt параметр systemd.log_target=console:

HK1 Box

Отказалась загружаться с образа Armbian_19.11.3_Aml-g12_eoan_legacy_5.3.0_20191126.img как с SD-карты, так и с двух портов USB. Это значит, что для того, чтобы загрузить ее с внешнего носителя нужно изменить настройки загрузчика U-Boot.

Поэтому — следуем мануалам armbian. Вставляю карточку с armbian, загружаюсь в Android , иду в Apps, нахожу там Update, кликаю UpdateLocaleSelect, выбираю BOOT/aml_autoscript.zip, и кликаю Update. Система перезагружается и я вижу меню bootloader‘а и ошибку:

Этот скрипт должен был скорректировать параметры загрузки U-Boot и позволить загрузиться с sd-карты, однако, судя по всему, установка неподписанных обновлений запрещена, поэтому нужно подключиться к консоли.

Подключение к отладочной консоли RS-232

На плате оказались “пятачки” с обозначениями ‘V R T G‘ — видимо консоль. Я откопал старинный провод USB-COM на базе pl2303, с помощью которого я когда-то подключал Siemens ME45 к компу для выхода в интернет, припаял к плате TV-Box‘а три проводочка — G (земля), R и T (прием и передача) и запустил minicom:

При включении TV-Box‘а в консоли minicom побежали сообщения.

Для того, чтобы прервать загрузку и скорректировать параметры загрузки нужно понажимать пробел и появится приглашение консоли U-Boot:

Читайте также:  Дублировать экран андроид авто

Теперь можно поглядеть текущие параметры загрузки. Чтоы длинные строки можно было увиждеть целиком — включаем перенос (Ctrl+a w).

Если при вставленной SD-карте выполнить:

то успешно загружается в память ядро — файлик zImage с первго раздела вставленной SD-карточки:

В данном случае 1080000 — это значение переменной loadaddr из вывода printenv.

Для того, чтоб запустить какое-либо cтороннее ядро нам нужен образ ядра и файл dtb (DeviceTreeBlob). Ядро у нас есть (на карте памяти), а dtb нужно либо скомпилировать, либо — извлечь.
Вот # cat /proc/cmdline

С работающего андроида

Извлечение dtb (DeviceTreeBlob)

https://www.cnx-software.com/2014/05/12/how-to-extract-a-device-tree-file-from-android-firmware-files/
Чтобы извлечь dtb из текущей прошивки нужно сделать образ раздела boot или recovery и распаковать его с помощью утилиты split_bootimg.pl. У меня не получилось распаковать образ раздела boot (распаковывался неполностью), но нормально распаковался образ раздела recovery.
Для этого:

Кстати, извлечь этот файлик с помощью стандартных утилит android_bootimg_tools не удалось. RamDisk и kernel извлекаются, а вот третий файлик — нет!

Нужный нам файлик — recovery.img-second.gz
Убедиться, что полученный файлик — это dtb можно, декомпилировав его. Как это сделать — написано ниже.

Изменение аппаратных настроек в файле dtb с помощью DTC

Изменение объема памяти, выделенной видеоадаптеру

Вот в таком кусочке кода (параметр size):

Задается объем памяти, выделенной видяхе. В данном случае выдляется 32Mb.

Изменение доступного объема RAM

Загрузка

Последние эксперименты

Настройки (bootargs и dtb) лежат в файлике uEnv.txt

В оригинале загружается содержимое раздела boot и хапускается, а там указан androidboot.dtbo_idx.

Вероятно, можно просто перепаковать. boot.img — https://www.whitewinterwolf.com/posts/2016/08/11/how-to-unpack-and-edit-android-boot-img/
Или просто добавить этот параметр к строке запуска ядра как тут:

Ошибки

Если появляется сообщение:

Значит нужно задать переменную androidboot.dtbo_idx:

Значение которой видно при распаковке boot.img:

УДАЛОСЬ ЗАГРУЗИТЬСЯ

Запустить скрипт путем update не удалось (т.к. он не подписан), однако, после пристального изучения вывода printenv оказалось, что его успешно запускает команда recovery_from_sdcard, прописанная в env U-Boot. То есть — готовим флеху, в консоли RS-232 жмем пробелы и в ответ на приглашение U-Boot вводим такое:

В результате приставка перейдет в режим дуалбута и будет грузиться с SD-карты, когда она вставлена.

Источник

Руководство по перепрошивке Android TV-Box с SoC Amlogic

Представляем руководство по обновлению или восстановлению ТВ-боксов, работающих на базе процессоров Amlogic S802, S805, S812, S905, S905, S905, S905, S905X, S905X, S905X2, S905X2, S905Y2 и S922X. Всего существует три метода, которые используют в зависимости от типов инсталляционных файлов. Наиболее распространенным является метод с использованием утилиты AMLogic USB Burning Tool.

ПРИМЕЧАНИЕ
HD-mediaplayers.ru не несет ответственности за любые проблемы, которые могут возникнуть при смене прошивки. Если вас это устраивает, продолжаем.

  • Если TV-Box работает хорошо, не нужно его перепрошивать.
  • Если Вы не знаете что делаете или не уверены в своих действиях – не прошивайте устройство.
  • Есть много ТВ-боксов, особенно дешевых, которые являются копиями то есть клонами оригиналов, которые несовместимы с официальными образами ПО оригинальных моделей и могут сделать нашу ТВ-приставку непригодной для использования или, например, сделать не рабочим WIFI. Определить клон или нет, не разбирая устройство и не сравнивая его с оригиналом, очень тяжело.
  • Мы рекомендуем покупать устройства в официальных магазинах, которые мы рекомендуем, и по возможности, только известные модели.

Выбор метода прошивки

В зависимости от типов инсталляционных файлов:

    • Метод 1 = есть один файл с расширением .img, (тут два варианта: с ПК или с SD-карты)
    • Метод 2 = есть несколько файлов file.ini, file.img или zip, file.aml и .bin (без ПК)
    • Метод 3 = есть несколько файлов «u-boot.bin» (раскирпичивание)

Метод 1 – перепрошивка с одним .img файлом

Есть два варианта этого метода, в обоих случаях содержимое памяти ТВ-бокса будет полностью стерто:

  1. С помощью SD-карты или USB диска с прошивкой, которые записываются на ПК.
  2. Для прошивки ТВ-бокс подключается непосредственно к ПК.

A – перепрошивка с помощью файла .img и внешнего диска или карты памяти

  1. Нам нужна MicroSD карта или USB-диск (флешка) достаточной емкости, которая будет полностью отформатирована.
  2. Скачиваем на ПК и устанавливаем программу Burn Card Maker.
  3. Запускаем ее и меняем язык интерфейса на английский (выбираем второй вариант главного меню).
  4. Выбираем английский, нажимаем OK, закрываем и перезапускаем программу.
  5. В верхнем раскрывающемся списке мы выбираем место, где у нас есть SD-карта или USB-накопитель.
  6. Отмечаем « To Partition and Format » и « erase_bootloader ».
  7. Нажимаем « Open » и выбираем файл IMG нашей прошивки.
  8. Нажимаем « Make », чтобы начать процесс.
  9. Появится сообщение, которое сообщит нам, что система разделов была создана. Появится запрос для форматирования устройства – нажимаем Принять.
  10. Как только процесс форматирования будет завершен, появится синяя полоса статуса, и она будет завершена.
    После окончания наш носитель готов к прошивке и сможем закрыть программу.
  11. В обесточенный ТВ-бокс вставляем наш SD или USB-накопитель с файлами прошивки.
    Нажимаем кнопку «RESET» (в некоторых моделях она находится внутри гнезда AV) и подключаем кабель питания к приставке. Ожидаем появления процесса обновления. Если процесс прошивки не стартовал – повторяем процедуру с подключением еще раз.
  12. Процесс может занять от 4 до 12 минут, нужно дождаться окончания процесса прошивки не отключая приставку.
    Если появляется ошибка, необходимо повторить процедуру прошивки с другой SD-картой или USB диском.
  13. После прошивки, используемая память SD или USB будет иметь специальный скрытый раздел, созданный в процессе подготовки. Для восстановления полного объема носителя, рекомендуется использовать мастер разделов MiniTool Partition Wizard, чтобы удалить все скрытые разделы и создать один.
Читайте также:  Лучший автоответчик для андроида

B – перепрошивка с помощью ПК

  • Нам понадобится кабель (или переходник) USB A (папа) – USB A (папа), типа такого – ссылка на Aliexpress. Желательно чем по-короче.
  • В большинстве случаем необходимо использовать разъем USB 2.0.
  • Подготовьте саму приставку – отключите ее от питания, выньте кабель HDMI, карты памяти, флешки, донглы от пультов
  • Для Windows 10 – возможно потребуется отключить использование подписанных драйверов.

Процесс перепрошивки:

    1. Скачайте утилиту прошивки Amlogic USB Burning Tool, распакуйте ее и запустите файл. Сначала попробуйте самую свежую версию, если она не работает, попробуйте другую, более старую версию.
    2. AMLogic USB Burning Tool v2.1.7.0 – последняя версия.
      AMLogic USB Burning Tool 2.1.6.8 – добавлена ​​поддержка SoC Amlogic S905X2.
      AMLogic USB Burning Tool 2.1.6
      AMLogic USB Burning Tool 2.0.9
    3. Во время установки будут установлены соответствующие драйверы.
    4. Перезагрузите ПК.
    5. Для прошивки с помощью данного метода, нам не нужно ничего видеть на экране ТВ или подключать его к ТВ, только к ПК.
    6. Запускаем Amlogic USB Burning Tool (один конец кабеля, не забываем, уже должен быть воткнут в ПК). Нельзя ставить галочку на против Reset after success и Overwirte. В верхнем меню выбираем открыть файл, выбираем файл (образ) прошивки и нажимаете кнопку “Старт” и только после этого (. ) вставляем второй конец кабеля в саму приставку. Компьютер должен “булькнуть” (определяет подключение USB) и начинается процесс прошивки, мы можем прогресс ее видеть в окне утилиты. Если этого не произошло и выдало ошибку, ничего страшного, вынимаем кабель из бокса на несколько секунд и пробуем снова, должно получиться. Нажимать кнопку сброса устройства требуется не всегда.
      Наблюдаем процесс прошивки, как правило на это уходит буквально несколько минут, но бывает что процесс останавливается на некоторое время, спокойно, без паники, такое возможно, через некоторое время он продолжается и должен дойти до 100% и написать что процесс завершен, внизу окна прошивки статус должен быть “ОК” и “ошибки” – пустое поле.

  1. После установки новой прошивки мы рекомендуем восстановить заводские настройки ТВ-приставки.

Метод 2 – перепрошивка с одним ZIP-файлом

С помощью этого метода мы будем выполнять обновление, также называемое OTA, оно всегда поставляется в файле с расширением ZIP, которое мы не должны разархивировать, потому что подпись файла будет повреждена и его будет невозможно применить.

    1. Скопируйте файл обновления ZIP на USB-накопитель или SD-карту
    2. Запустите приложение ОБНОВЛЕНИЕ & ВОССТАНОВЛЕНИЕ на ТВ-приставке. Найти ее можно в меню настроек или среди установленных приложений.

  1. Нажмите на кнопку Select и выберите файл обновления ZIP
  2. Нажмите кнопку Update, чтобы начать процесс обновления
  3. Процесс займет несколько минут.
  4. После обновления прошивки возможно потребуется восстановить заводские настройки.

Источник

Оцените статью