Amlogic flash tool linux

Amlogic flash tool linux

Linux AMLogic Toolkit

Allows to unpack and repack AMLogic Android images on Linux systems without using the Customization Tool — works for Android 7.

  • Unpack and repack any image
  • Mount and edit system partition
  • Unpack and repack logo partition (for bootup and upgrading logos)
  • Unpack and repack boot image and initrd ramdisk
  • Flash the image directly to a device without repacking it (faster than using the USB Burning Tool)
  • Works for Android 7
  • No need to unpack the image each time you want to use the tool

What it cannot do (yet)

  • Edit other partitions of the image such as recovery (you can still replace the PARTITION files by hand)
  • zlib1g-dev for simg2img and img2simg
  • libblkid-dev for abootimg (unpacking and repacking boot image)
  • the i386 packages if needed (for the logo unpacking / repacking binary)
  • Clone or download this repository
  • Install the dependencies
  • Move to the directory of the repository, and stay there
  • (first time, or after a cleanup) Run ./bin/build to build the required tools
  • (when editing a new image file) Run ./bin/unpack input.img to unpack input.img
  • The result is :
    • output/image : raw image files ( PARTITION files)
    • output/system : system partition files
    • output/logo : logo partition files
    • output/boot : boot partition files
  • From now on you can edit the files of the output directory
    • Note that those files will be overwritten when repacking :
      • output/image/system.PARTITION
      • output/image/boot.PARTITION
      • output/image/logo.PARTITION
      • output/boot/initrd.img if using ./bin/extract_initrd
    • If you happen to loose the output/system mounting point (after a reboot for instance), just run ./bin/remount to mount it again
    • On the other hand, you can unmount the system partition using ./bin/unmount
    • If you want to extract the initrd ramdisk, use the ./bin/extract_initrd and ./bin/recreate_initrd scripts (output in output/initrd )
  • Be careful :
    • Don’t break everything by chmod’ing the whole output/system folder, because it will be replicated in the image and it won’t boot !
    • Don’t rename the files in output/boot.img
    • If you extract and recreate the initrd ramdisk, its size will change and it will most likely break the boot image. To fix this, edit the bootimg.cfg file in output/boot to replicate the change in size (you can repack the image, let it fail and read the logs to see the new size).
  • When you have finished editing the files, run ./bin/repack output.img to repack the image to output.img
  • Additionnaly, you can use ./bin/flash to flash the image to a device through USB (you will need the udev rule, see https://github.com/Stane1983/aml-linux-usb-burn)
    • The device type ( gxl ) is hardcoded into the flashing script, edit it if you’re not using S905, S905X or S919
  • Done !
  • If you have a file not found error when trying to unpack and repack the logo partition, install the i386 libraries by following the accepted answer of this post : https://unix.stackexchange.com/questions/13391/getting-not-found-message-when-running-a-32-bit-binary-on-a-64-bit-system
  • Thanks to Magendanz and adg for the unpacking and repacking method
  • https://github.com/khadas/utils for the aml_image_v2_packer and logo_img_packer binaries
  • https://github.com/anestisb/android-simg2img for the simg2img tool
  • https://github.com/ggrandou/abootimg for the abootimg tool
  • https://github.com/Stane1983/aml-linux-usb-burn for the flashing tool

About

Allows to unpack and repack AMLogic images for Android 7 without the Customization Tool

Источник

Amlogic flash tool linux

Разработка и портирование прошивок для устройств на SOC Amlogic

Устройство или ОС, прошивка: Android OS
Полезная информация о портирование и разработке прошивок, обсуждение различных нюансов.

Multi IMG Tools — Программа для работы с прошивкой

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.

Сообщение отредактировал derak1129 — 10.07.21, 12:35

Если кому интересно собрал Android 9.0 из исходников от khadas https://github.com/khadas/

Читайте также:  Как отключить все обновления windows 10 навсегда 2020

Работает:
Включение с пульта
Кнопки пульта работают в системе
Bluetooth
Wifi
Ethernet
Воспроизведение видео

Известные проблемы:
Мерцание при использовании курсора
Пишите что еще

2020-06-27
Обновлен код hwcomposer — исправлены проблемы с черным экраном при смене настроек экрана и при выходе из воспроизведения видео
update_khadas_pie_9377_20200627.img

Это первая прошивка на android 9.0 для устройств на базе S912. Прошивка treble, так что возможна установка gsi ромов в раздел system.

Сообщение отредактировал HighwayStar — 29.06.20, 06:36

Сообщение отредактировал 11asd11 — 05.07.20, 23:19

А вот такой WI-FI+Bluetooth получится прикрутить? AP6630wifi.7z ( 156,49 КБ )

Сообщение отредактировал iCr — 07.07.20, 12:15

Еще вопрос, а в этой сборке поддержка композитного AV-выхода будет?

HighwayStar,

Фактически 3Гб. ОЗУ.
И можно добавить поддержку гигабитных лан?

Доделал u-boot для того чтоб им можно было загружать прошивки на 9 андроиде на устрйоствах с LPDDR3. Пришлось откатить некоторые хаки добавленные khadas и добавить тайминги памяти из ветки android 7.1. Вот исходный код u-boot для android 9.0 для устройств с LPDDR3 https://github.com/Amlogic-Lineage/u-boot/commits/khadas-vims-pie_lpddr

Код u-boot для LPDDR3 не умеет правильно определять размер установленной памяти, поэтому готовые прошивки собраны только для варианта 3 Гб, вроде бы с LPDDR3 таких боксов больше. Ссылки на сборки добавил в исходный пост TAP pro [Android] (Пост HighwayStar #97984308)

LPDDR3 chl: Rank0+1 @ 912MHz
bist_test rank: 0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 730 rank: 1 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 730 — PASS

Сообщение отредактировал Brahner — 10.07.20, 08:40

Добавил сборки для DDR3/DDR4 с поддержкой автовыбора 1/2/3 Gb памяти. TAP pro [Android] (Пост HighwayStar #97984308)

Для DDR3 немного снижена частота, так как некоторые 3Gb боксы используют более дешевую память и не запускаются на 912Mhz

Davietpda выложил бету прошивки под 912-й.

Запустил прошивку Davietpda на 3/32 lpddr3(tx9pro). Загрузчик брал из toxtarparavos.
+ Мерцания в сборке Davietpda нет
+ Одновременно работают пульты от h96pro plus и от ветки tx92(z6, z6 plus, tx9pro и тд.). Как в андройде, так и включение коробки
+ WiFi(qc9377 ) и 1000 ethernet работают
— Но у меня не работает один из usb портов на моей плате
— bluetooth не работает, не включается

Кто проверял, как у Вас?
Образ прошивки на mega
Отдельно архив с загрузчиками lpddr3 из образ toxtarparavos: Менять нужно все. DDR.USB и UBOOT.USB нужны в момент прошивки. bootloader.partition прошивается в пзу и загружает коробку.
bootloader_LPDDR3_Android_9.zip ( 1,58 МБ )

Сообщение отредактировал Brahner — 13.07.20, 14:24

alexesgg,

Поставил на h96pro+ 3/32
Проводная сеть воркает, вайфай тоже.
Бт вроде как нет.
Вообщем то очень неплохо.
Правда видит только 2гб памяти..

Сообщение отредактировал xam1988 — 11.07.20, 01:37

Скорее всего, проблема в загрузчике, который я использовал от toxtarparavos, не совсем подходит к tx92-LP.
Записал лог, проверял порты проводной мышкой.putty.txt ( 185,09 КБ )
У Davietpda появилась образ для LPDDR3. На этой прошивке, оба usb работают. :scratch_one-s_head:

Сообщение отредактировал Brahner — 11.07.20, 16:27

Источник

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

Сборка образа 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-карту, подал питание и замкнул контактные площадки на обратной от чипа флехи стороне платы отверткой.
Вместо таких сообщений в начале лога:

Читайте также:  Только чтение usb mac os

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

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

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

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

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

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

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

В итоге порядок установки 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 появился:

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

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

Читайте также:  Adobe digital editions mac os

То есть фактически грузим систему с 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-карты, когда она вставлена.

Источник

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