- Amlogic flash tool linux
- About
- Amlogic flash tool linux
- О чем тут написано
- Сборка образа Armbian для TV-Box HK1
- Проблемы
- не загружается при отсоединенной последовательной консоли
- Не смог загрузить образ
- Загрузка с sd-карты для переустановки системы
- fdt задан в U-Boot
- Раскирпичивание
- НЕАКТУАЛЬНОЕ
- Как загружаться
- HK1 Box
- Подключение к отладочной консоли RS-232
- Извлечение dtb (DeviceTreeBlob)
- Изменение аппаратных настроек в файле dtb с помощью DTC
- Изменение объема памяти, выделенной видеоадаптеру
- Изменение доступного объема RAM
- Загрузка
- Последние эксперименты
- Ошибки
- УДАЛОСЬ ЗАГРУЗИТЬСЯ
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 )
- Note that those files will be overwritten when repacking :
- 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/
Работает:
Включение с пульта
Кнопки пульта работают в системе
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-карту, подал питание и замкнул контактные площадки на обратной от чипа флехи стороне платы отверткой.
Вместо таких сообщений в начале лога:
Внезапно — она не нашла встроенный 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 появился:
Раскирпичивание
Специально ради эксперимента я залил нулями весь внутренний флеш.
Восстановить коробку удалось так:
То есть фактически грузим систему с 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, кликаю UpdateLocale — Select, выбираю 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-карты, когда она вставлена.
Источник