wget https://gist.githubusercontent.com/jberkel/1087743/raw/5be96af0e1c1346678379b0c0f0330b71df51f25/split_bootimg.pl
chmod a+x ./split_bootimg.pl
./split_bootimg.pl ./recovery.img
RK3xxx Firmware Tools by SergioPoverony4. armlogic (http://forum.puppyrus.org/index.php?topic=21237.msg165708#msg165708)
dtc -b 0 -O dts -I dtb -o rk3328-rock64.dts rk3328-rock64.dtb
dtc -b 0 -O dtb -I dts -o rk3328-rock64.dtb rk3328-rock64.dts
еще полезно выполнить полное сравнение файла trn9 и evb (я пользуюсь наглядной утилитой meld, там сразу видно , в чём различие и можно на лету все править)
получить оригинальный dtb (например из прошивки) с рабочими параметрами
если это бинарный dtb, то преобразовать утилитой "dtc" в исходник dts
проанализировать отличия с существующими исходниками из образа, которые оказались наиболее близкими (рабочими) для данной модели или читать документацию к ядру (dts) и писать с нуля нужные секции , основываясь на доках
пробовать собирать утилитой "dtc" исправленные версии и тестировать на железке
Разобрал dtb
Я так понял вы разобрали тот dtb, что идёт в Armbian ? Эти исходники есть тут :)
https://github.com/150balbes/rockchip-kernel/tree/le/arch/arm64/boot/dts/rockchip
нужно получить исходники от вашей модели и сравнивать их с исходниками рабочего dts в ядре (которое идёт в Armbian) и на основании этого создать свой гибридный вариант dtb для ядра Armbian (изменять секции, и параметры, которые отвечают за SD карту) для теста. Когда будет рабочий вариант, я смогу включить его в исходники, что-бы входил в образы и ядро при сборке.
как вытащить и работать с dtb
делать dtb под этот бокс (как?)
получить оригинальный dtb (например из прошивки) с рабочими параметрами
если это бинарный dtb, то преобразовать утилитой "dtc" в исходник dts
проанализировать отличия с существующими исходниками из образа, которые оказались наиболее близкими (рабочими) для данной модели или читать документацию к ядру (dts) и писать с нуля нужные секции , основываясь на доках
пробовать собирать утилитой "dtc" исправленные версии и тестировать на железке
Разобрал dtbКодПолучил текстовый файл 2903 строки.dtc -b 0 -O dts -I dtb -o rk3328-rock64.dts rk3328-rock64.dtb
вытащить свой dtb из родной прошивки и его использовать как донора для данных.Как это попроще сделать?
Как это попроще сделать?Это зависит от платформы. Для Amlogic - есть инструмент
Скачал прошивку андроид своей коробки с сайта производителяАндроид .img для телефона когда-то, расковыривал из-под винды какой-то софтиной, вытаскавал system. Там ext*, но как-то по-своему. Обратно уже не слепить. Вроде еще 7z нужен был.
Не знаю как оттуда вытащить dtb
kpartx -av видит один раздел, который не примонтировать - mount не понимает какая ФС
Допустим, я получу выкачаю именно свою прошивку. Такой дамп будет чем-то лучше в плане извлечения dtb ?
На буржуйских форумах никто не выкладывал dtb А5 ?
Не знаю как оттуда вытащить dtbтолько после обработки специальной программой-распаковщиком
Допустим, я получу выкачаю именно свою прошивку. Такой дамп будет чем-то лучше в плане извлечения dtb ?Если есть софт для распаковки - то файл проще разбирать.
К слову, для бананы так и не нашел этот dtb, в линукс образах его нет.То, что не нашли - не значит, что его нет. Возможно он входит в состав ядра, после обработки утилитой mkimage из ядра и dtb получают , как бы один файл, понятный u-boot как ядро и dtb. По такому принципу ранее лепили Openelec.
после обработки специальной программой-распаковщикомТак не томи - дай рецепты ;)
root@2a:1# ext2simg /dev/mmcblk2boot0 b0a
error: Unknown code ext2 19 while reading /dev/mmcblk2boot0
root@2a:1# ext2simg /dev/mmcblk2boot1 b0a
error: Unknown code ext2 19 while reading /dev/mmcblk2boot1
root@2a:1#
root@2a:1# ext2simg /dev/mmcblk2rpmb b0a
error: Unknown code ext2 36 while reading /dev/mmcblk2rpmb
root@2a:1#
root@2a:1# ext2simg /dev/mmcblk2 b0a
error: Unknown code ext2 19 while reading /dev/mmcblk2
только после обработки специальной программой-распаковщикомhttps://stackoverflow.com/questions/8663891/how-to-mount-the-android-img-file-under-linux
# file mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img
mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img: data
simg2img /mnt/mmcblk0p2/-2a-work/img/mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img sys.raw
Invalid sparse file format at header magi
Failed to read sparse file
9 mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-base
1 mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-cmdline
10 mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-pagesize
487263498 mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-ramdisk.gz
329728 mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-zImage
# gzip -d mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-ramdisk.gz
gzip: mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-ramdisk.gz: not in gzip format
simg2img /mnt/ssh/pra/190101/android_bootimg_tools.gz/1/mxq_rk3328_d4_8.1_IT6334_a5xmax+_20181012_r1.img-ramdisk.gz q.rqw
Invalid sparse file format at header magi
Failed to read sparse file
Так не томи - дай рецептыдык я уже давал ссылки на софт. Сам я пока это не проверял для RK.
уже давал ссылки на софт.Какой-то подход виндузятный. Нужно понимание, как это работает.
Утилита создаёт полную (точную) бинарную копию всей eMMC.dd ;)
Нужно понимание, как это работает.Оно конечно хорошо понимать и знать всё, но вам времени на это хватит, что-бы разобраться в каждом нюансе по каждому направлению ?
ddДа, утилита ее использует. При желании можно сделать всё в ручную.
При желании можно сделать всё в ручную.Но надо точно знать как
Оно конечно хорошо понимать и знать всёА как же иначе?
используешь опыт других (инструкции, софт и наработки), кто этот участок изучили и дают рекомендации.Ну так именно поэтому и нужны твои рекомендации. Разобрался - поделись. Не разобрался - напиши "не знаю". Будем вместе искать
Дядя Шурик тоже затихарился.Значит результатов нет. Тыкаюсь как слепой котёнок.
Но надо точно знать какиначе нас и так мало, а будет уменьшение с кирпичами
будет уменьшение с кирпичамиПоэтому "в бой идут одни старики"
получить его dtbТогда его ядро придётся использовать. Надо научиться свой писать, но ума не хватает.
доступ к emmcУ меня есть, а толку? dd и hexdump читают. Ядро видит mmcblk1 (29,1Gb), mmcblk1rpmb (128Kb), mmcblk1boot0 и mmcblk1boot1 (оба по 2Mb), но примонтировать их невозможно, нет таблицы разделов. Вот такая подлянка от Google.
Тогда его ядро придётся использоватьВроде это не возможно. Тут только линуксовый dtb поправить по мотивам андроидовского
У меня есть, а толку? dd и hexdump читаютТакой доступ и у меня есть. Только т.к. не примонтировать - не вытащить dtb и не заюзать для хранения инфы
Как - не говоритДа уж, молчит как партизан.
Вроде Вы вытащили андроид dtbНет, да и не даст это скорее всего ничего. Все мои попытки править dtb приводят к увеличению ругани в dmesg.
Разобрался - поделись. Не разобрался - напиши "не знаю". Будем вместе искатьДык на конкретные вопросы и делюсь, а на общие (у которых много вариантов решения) - чем делиться, не понятно.
emmc тупикиКакой тупик ? У тебя eMMC видна, можешь пробовать ставить в нее систему, я просто не понимаю, что еще нужно ?
Давайте организуем тестирование и доработкуЯ не против. Пишите, что работает или нет, буду смотреть.
Ну так давайте поставим один дистр. Обозначим проблемы и будем решать по одной общими усилиямиЯ рекомендую Ubuntu , там многое уже допилено и на RK есть почти всё, нужно только систематизировать и возможно доделать мелочи. Кстати, в этой версии многое делают и другие пользователи , инфа есть на форуме Armbian.
Balbes - какой дистр ставим?
но примонтировать их невозможно, нет таблицы разделов. Вот такая подлянка от Google.Зачем вам их монтировать ? Если нужен доступ к инфе в них - можно использовать утилиту "adb" (вроде так называется), это типа даёт возможность подключиться к запущенному андройд и выполнять разные вещи (копировать менять и прочее). Про эту софтину много инфы в интеренете (сразу говорю - я ей не пользовался на ТВ боксах, давно пользовал для планшета, но ни чего уже не помню)
Надо научиться свой писать, но ума не хватает.Писать свой с нуля - не эффективно и требует доступа к служебной инфе (описания всех нюансов железа), которая есть только у производителя. Гораздо проще анализировать имеющиеся и на их основе подбирать правильные свои параметры.
Если я правильно понял balbes - у него emmc примонтирован. Как - не говоритНе правильно ты понял, я не монтирую eMMC с андройд, я ставлю в eMMC свою систему без сохранения андройда. Хотя, когда запускаю Armbian - на рабочем столе появляется куча ярлычков от тех разделов, андройд, которые имеют вменяемую файловую систему и их можно монтировать и получать из них инфу. Ты пробовал запускать полный Armbian с XFCE ? Может и твою часть можно видеть и получить доступ.
да и не даст это скорее всего ничегоСильно ошибаетесь. Имея этот dtb можно многое решить с железом. Важно знать параметры, которые используются конкретно в вашей железке. Иногда бывает не хватает всего одного значения, что-бы заработал элемент.
Все мои попытки править dtb приводят к увеличению ругани в dmesg.Править нужно по определённым правилам. И как править, не имея исходника ?
Править нужно по определённым правилам.Огласите эти правила.
И как править, не имея исходника ?Что считается исходником?
Огласите эти правила.Либо смотреть доки в ядре с описанием параметров для DTS (но там часто инфа отстаёт), либо смотреть по аналогии в других DTS.
Что считается исходником?Для ТВ боксов - это исходный файл из прошивки андройд, который собирает производитель , который точно знает все параметры его железки.
как вытащить и работать с dtb.Надо будет попробовать распаковку образа от производителя
Have Android running on the box, developper mode active.Для моих знаний андр. этого недостаточно
In the settings I had a strangely named checkbox like "Internet debugging", switched on
Have Android studio installed
Для моих знаний андр. этого недостаточноСложность то в чем? На смартфоне режим разработчика приходилось разблокировать?
Могу выложитьОбязательно выкладывай и с пояснением для чего и как использовать (как понял ты сам).
Для моих знаний андр. этого недостаточноЯ пока не пробовал, но как понял, нужно на запущенном андройд на ТВ боксе включить режим отладки (режим разработчика), на разных прошивках это может называться по разному. Установить (запустить) на ПК андройд студио (или что-то подобное) и из него уже делать остальные шаги.
Кто-нибудь делал подобное?
img_unpack a5x-max-rk3328_20180827.img img && cd img &&
afptool -unpack update.img update && cd update/Image &&
extract-dtb.py boot.img && cd dtb &&
dtc -b 0 -O dts -I dtb -o you.dts 01_dtbdump_rockchip,rk3328-evb.dtb
Не приходилосьОт простого к сложному. Как это сделать на смартфоне - https://androidlime.ru/developer-mode-android
На смартфоне режим разработчика приходилось разблокироватьполучилось без проблем на A5 3328
"распаковал спец утилитой"Копировал в файл, а распаковал образ. Какой? Если полученный файл boot, то
bash-4.4# extract-dtb.py boot
No appended dtbs found
bash-4.4# file boot
boot0: data
И как ты этот файл примонтировал, чтобы увидеть образ?В смысле ? Зачем его монтировать ? Я показывал скрин gparted из запущенного Armbian с SD на MX10, там отлично видно схему секций на eMMC, запускаю "dd if=/dev/mmcblokpXpX of=boot.img bs=1M" и получаю на выходе образ этой секции из eMMC в виде файла boot.img.
Что-то опять темнишь.Что там темнить, клонировал гит, положил рядом со скриптом файл образа и распаковал его на две части.
Что это за файл и как он получен ?
dd if=/dev/mmcblk1boot0 of=boot
/dev/mmcblk1boot0Понятно. Это не ядро, это служебная область для u-boot.
что покажет gparted запущенный из последней версии Armbian.Показывает неотформатированный диск 29,12 Gb. Чуть более информативен вывод fdisk -l
Disk /dev/mmcblk1: 29.1 GiB, 31268536320 bytes, 61071360 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mmcblk1boot1: 2 MiB, 2097152 bytes, 4096 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mmcblk1boot0: 2 MiB, 2097152 bytes, 4096 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
А андройд запускался на этом боксе ?Да
Какую версию он показывает ?Последнюю
После нескольких правок - есть рабочий dtb (теперь он входит в состав последних образов Armbian).Armbian_5.74_Rk3328-tv_Ubuntu_bionic_default_4.4.154_20190208.img.xz ?
dd if=/dev/mmcblokpXpX of=boot.img bs=1M
lsblk
mmcblk2 179:32 0 29,1G 0 disk
mmcblk2boot0 179:64 0 4M 1 disk
mmcblk2boot1 179:96 0 4M 1 disk
mmcblk2rpmb 179:128 0 4M 0 disk
# dd if=/dev/mmcblk2rpmb of=boot.img bs=1M
dd: ошибка чтения '/dev/mmcblk2rpmb': Ошибка ввода/вывода
Получается надо дампить весь mmcblk2 - надо много местаПопробовал так
# extract-dtb.py -n /dev/mmcblk1
killed
Андроид у Дяди Шурика 8.1 как и у меняAndroid version 8.1.0 kernel 4.4.120
Сравнивать (Команда - Сравнить файлы) и редактировать удобно в mc
Подсветки синтаксиса (в аттаче)
Распаковка firmwareДобавил в шапку темы
В шапке ссылка — «Распаковать скачанное firmware» пустая.поправил
У Вас тоже со ссылкой проблемаСсылку сейчас поправлю. Виноват, не проверил как открывается после того как образец BBCode вставил.
Надо попробоватьx96max s905x2 android9
dd if=/dev/boot of=boot.img
Если будет ошибка, значит остаётся
- попробовать поставить терминал в андройд и из него так же пытаться вытаскивать dtb
# dtc -b 0 -O dts -I dtb -o my.dts rec.img-second
FATAL ERROR: Blob has incorrect magic number
dtc -b 0 -O dts -I dtb -o my.dts 01_dtbdump_\*,00.dtb
FATAL ERROR: EOF before reading 82580480 bytes of DT blob
# dd if=/dev/mmcblk2boot1 of=b
8192+0 записей получено
8192+0 записей отправлено
4194304 байт (4,2 MB, 4,0 MiB) скопирован, 0,187213 s, 22,4 MB/s
root@2a:1# dd if=/dev/mmcblk2boot0 of=b
8192+0 записей получено
8192+0 записей отправлено
4194304 байт (4,2 MB, 4,0 MiB) скопирован, 0,199322 s, 21,0 MB/s
# ./split_bootimg.pl b
Android Magic not found in b. Giving up.
# ./extract-dtb.py b
No appended dtbs found
# ./amlogic-unpack-imgfile.pl b 1
Reading 2 bytes at offset 0: 0x0100 (a '.')
Invalid magic
# ./unpackbootimg -i b1
Android boot magic not found.
trillo@trillo-desktop:~/Документы/dtb$ ./extract-dtb.py boot.img
Dumped 00_kernel, start=0 end=95170560
Dumped 81_dtbdump_rockchip,rk3328-box-z28.dtb, start=97615872 end=97652736
Dumped 82_dtbdump_rockchip,rk3328-box.dtb, start=97652736 end=97689600
Dumped 83_dtbdump_rockchip,rk3328-evb.dtb, start=97689600 end=97726464
Dumped 84_dtbdump_firefly,roc-rk3328-cc.dtb, start=97726464 end=97763328
Dumped 85_dtbdump_pine64,rock64.dtb, start=97763328 end=97800192
Dumped 86_dtbdump_popcornhour,rockbox.dtb, start=97800192 end=97837056
Dumped 87_dtbdump_rockchip,rk3368-evb-act8846.dtb, start=97837056 end=97865728
Dumped 88_dtbdump_geekbuying,geekbox.dtb, start=97865728 end=97894400
Dumped 89_dtbdump_tsd,rk3368-lion-haikou.dtb, start=97894400 end=97923072
Dumped 90_dtbdump_tronsmart,orion-r68-meta.dtb, start=97923072 end=97951744
Dumped 91_dtbdump_rockchip,px5-evb.dtb, start=97951744 end=97980416
Dumped 92_dtbdump_rockchip,r88.dtb, start=97980416 end=98009088
Dumped 93_dtbdump_rockchip,rk3399-evb.dtb, start=98009088 end=98058240
Dumped 94_dtbdump_vamrs,ficus.dtb, start=98058240 end=98115584
Dumped 95_dtbdump_firefly,firefly-rk3399.dtb, start=98115584 end=98172928
Dumped 96_dtbdump_google,bob-rev13.dtb, start=98172928 end=98234368
Dumped 97_dtbdump_google,kevin-rev15.dtb, start=98234368 end=98299904
Dumped 98_dtbdump_google,scarlet-rev15-sku6.dtb, start=98299904 end=98361344
Dumped 99_dtbdump_google,scarlet-rev15-sku7.dtb, start=98361344 end=98422784
Dumped 100_dtbdump_hugsun,x99.dtb, start=98422784 end=98480128
Dumped 101_dtbdump_khadas,edge-captain.dtb, start=98480128 end=98537472
Dumped 102_dtbdump_khadas,edge-v.dtb, start=98537472 end=98594816
Dumped 103_dtbdump_khadas,edge.dtb, start=98594816 end=98652160
Dumped 104_dtbdump_leez,p710.dtb, start=98652160 end=98709504
Dumped 105_dtbdump_friendlyarm,nanopc-t4.dtb, start=98709504 end=98766848
Dumped 106_dtbdump_friendlyarm,nanopi-m4.dtb, start=98766848 end=98824192
Dumped 107_dtbdump_friendlyarm,nanopi-neo4.dtb, start=98824192 end=98881536
Dumped 108_dtbdump_rockchip,rk3399-orangepi.dtb, start=98881536 end=98938880
Dumped 116_dtbdump_rockchip,rk3399-sapphire.dtb, start=99340288 end=99405824
Dumped 117_dtbdump_,amediatech,x96-max.dtb, start=99405824 end=268435456
Extracted 117 appended dtbs + kernel to dtb
Прошивка на боксе кастоманяЛучше дербанить родную
Как достать из андроида dtbЕсли из под линукса сделать dd boot-андроида - не работает, но возможно дело не в скрипте , а в том что дд берет не то. Надо пробовать на дампе прошивки
похоже на первоисточник по dtbДа, но вряд ли там что-то интересное