Изменения

Archos 101

6068 байтов добавлено, 22:23, 23 февраля 2012
м
Тестирование загрузки с других устройств
[[Файл:Archos-101-internet-tablet lg.jpg|200px|right]] [http://market.yandex.ru/model.xml?hid=6427100&modelid=6531601 Archos 101] — туалетный девайс на Андроиде от компании Archos, старшая модель 8-го поколения их «интернет-планшетов» (gen8 — это все модели 28/32/35/43/70/101). Заказывал с [http://www.computeruniverse.de computeruniverse.de].
Краткое резюме: говно, причём тивоизированное говно. Хотя это лечится — и штатно , через SDE, с потерей гарантии, и нештатно , эксплойтами, без потери гарантии… Загрузчики Archos 101 и вообще gen8 (а я подозреваю, что они такие же и у следующего поколения gen9) мною успешно взломаны. '''См [[#PWNED]].'''
== Плюсы ==
* Процессор TI OMAP 3630. Хорошо тем, что TI, потому что они предоставляют спеки, в отличие от анального Qualcomm’а со своими Snapdragon’ами.
Со всем этим Archos, правда, опоздал где-то так на полгодика, потому что когда они таки выпустили эти планшеты, уже проснулись и другие производители, и у многих тоже появился USB-HOST (а экран был , при экране, изначально лучше лучшем, чем у архоса — см. ниже хард-минусы).
== Минусы ==
* Камера ОТВРАТИТЕЛЬНАЯ — как на мобильниках 5-летней давности.
* Не заряжается по USB. Хотя это и следствие большой батарейки — она двумя амперами-то по-моему часа 4 заряжается, страшно представить, что было бы по USB. Но ''возможность'' зарядки по USB всё равно можно было предусмотреть.
* Маловато оперативки(256 Мб). Из-за этого девайс бывает не очень шустрый, хотя игрушки идут хорошо, HD видео девайс вполне показывает, и в Quadrant’е успешно получает 1247 попугаев!
* Нет ни 3G, ни GPS.
В общем-то хард-минусы всё и убивают, потому что с софт-минусами можно что-нибудь поделать кастомными прошивками. Сейчас вроде-бы уже есть более новые Archos gen9, которые, типа, поприличнее, но в руках не держал — и не горю желанием, потому что сильно лучшего качества экрана не жду. Да и весит Archos 101 G9 почти в два раза больше.
Однако, вот и софтовые минусы:
* Системный раздел смонтирован из squashfs, то бишь доступ туда только на чтение. То бишь, без SDE не ставится перманентный root, а только получается заново при каждом запуске программой Archangel.
* Fastboot’а нет, прошивать девайс себя так просто не даёт, в том числе recovery. Загрузчики проверяют цифровую подпись ядра, initrd, вторичного загрузчика. '''Но я их уже дизассемблировал и сломал!'''
* А установка SDE, вроде как, обнуляет области флеша с DRM-ключами… То есть дело не в DRM — контент, защищённый ДеРьМом, потеря небольшая, юзать его и так нельзя ни в коем случае, даже чисто из принципиальных побуждений. Но я тем не менее, ненавижу производителей, которые запрещают мне что-то делать с МОИМ девайсом!
* Поддержка usb flash drive не пашет. Требует допила, либо установки [http://code.google.com/p/urukdroid/ UrukDroid]’а (модифицированной прошивки). Вообще похоже, что без UrukDroid’а делать на нём нечего (правда, на этих планшетах всегда делать нечего). <s>А для него нужен SDE, а SDE поганит прошивку. Так что ждём PWN’а.</s> Уже PWNED!!! См. ниже.
Во-первых, эти ПИДРы из Archos’а утверждают, что при установке SDE (произошедшей хотя бы раз) обнуляют DRM-ключи устройства (что в общем-то насрать) и гарантию (тоже насрать, чуть меньше, но всё же) — типа, в устройство ставится какой-то флаг, по которому они всегда могут понять, что «ОНО УСТАНАВЛИВАЛОСЬ, ЮЗЕР НИХАРОШИЙ».
Во-вторых, и что более важно — никакие эксперименты с SDE не дают возможности модификации загрузчиков и recovery (хер вам, а не ClockWorkMod). Невозможность модификации recovery всё-таки обижает, а модификация загрузчика дала бы возможность, например, объединить два mmc-девайса в один и нормально преодолеть идиотское ограничение в 512 Мб на систему — реально-то чип один, это он уже софтово (параметром модуля ядра) на два делится — 512 Мб mmcblk0 + всё остальное mmcblk1. Но Хотя на это в целом насрать, потому что, особенно исходя из «популярности» устройства, которой оно обязано говённому железу, надежды мало; скорее всего , никто модов загрузчика так никогда и не сделает. Собственно, Archos-энтузиасты, по-моему, ограничиваются людьми типа scholbert’а (XDA), которым gen8 достался в состоянии кирпича (bricked) и нескольких странных людей несколькими странными людьми вроде меня, купивших купившими его честно, но не видящих видящими ему применения.
Кстати, AOS-файлы прошивок тоже зашифрованы, но для их расшифровки есть [http://code.google.com/p/aos-tools/ aos-tools] и нужные ключи [http://forum.xda-developers.com/showthread.php?t=1214674 уже тоже нашли].
А в [http://code.google.com/p/urukdroid/ UrukDroid]’е поддержка 3g модемов уже и так есть, кстати.
 
== Аппаратная часть ==
 
* [[:File:Archos 101 UART.jpg|Выводы UART на Archos 101]]
* [[:File:Archos 70 UART.jpg|Выводы UART на Archos 70]]
* [[:File:Archos 101 sys boot.jpg|Выводы конфигурации загрузки на Archos 101]]; чтобы поменять порядок загрузки на внешние интерфейсы (USB &rarr; UART &rarr; внешняя SD-карта &rarr; внутренняя SD-карта), нужно подать высокий уровень на sys_boot5 (1.8V через 33 кОм резистор).
 
== Тестирование загрузки с других устройств ==
 
Конфигурация загрузки Archos 101, имеющего процессор OMAP3630, задаётся 5-ю аппаратными выводами sys_boot[0:4]. Однако, у OMAP есть дополнительная фича — программная конфигурация загрузки. Если в специальную область памяти («scratchpad») записать специальную структуру, описанную в мануале, и потом дёрнуть программный reset (сброс) — процессор предпочтёт записанную конфигурацию аппаратной. Таким образом, ничего не перепаивая, можно заставить его инициировать процесс загрузки с любых возможных устройств, включая загрузку по USB или UART, а также загрузку с внешней карты памяти SD. Правда, с последней есть проблема — при включении питание на неё не подаётся, поэтому с неё так просто загрузиться не получится. Кроме того, (пока что) нет подходящего загрузика — точнее, есть U-Boot, но под него нет подходящей конфигурации. В целом, учитывая наличие исходников ядра, ничто не мешает её написать, но это должен кто-то сделать :)
 
А вот модуль для программного конфигурирования порядка загрузки я уже написал! Брать тут: [[Media:Omap softreboot.tar.bz2]] (56 Кб). В архиве исходники и модуль, собранный для Archos’овского ядра 2.6.29-omap1.
 
Использовать так:
 
<code-bash>
insmod omap_softreboot.ko
cat /proc/omap_softreboot # посмотреть справку
echo uart,usb > /proc/omap_softreboot # перезагрузиться с UART, потом USB
</code-bash>
 
То есть, при записи в /proc/omap_softreboot модуль конфигурирует загрузку и сразу же перезагружает девайс. Можно указать до 4 загрузочных устройств через запятую, без пробелов. Каждое устройство может быть одним из:
 
* mmc1: Первый интерфейс MMC/SD (на Archos 101 — '''внешняя''' карта)
* mmc2: Второй интерфейс MMC/SD (на Archos 101 — '''внутренний''' флеш-диск eMMC)
* usb: Загрузка образа по USB
* uart: Загрузка образа по последовательному интерфейсу UART3 (как подключиться к нему на Archos 101 — см. выше)
 
Для удалённой загрузки по USB указывайте <tt><nowiki>"uart,usb"</nowiki></tt>, потому что просто <tt><nowiki>"usb"</nowiki></tt> как-то приводит процессор в замешательство и USB-устройство не появляется.
 
Есть и другие варианты, но все они актуальны скорее для других устройств, нежели для нашего Archos’а:
 
* nand: NAND-флешка
* onenand: OneNAND/Flex-OneNAND
* doc: DiskOnChip
* xip: NOR-флешка
* xip_wait: NOR-флешка с «wait monitoring»
 
Приятного хакинга :)
== Системные форматы ==
Это тоже я пишуNot a copy-paste, яbut also written by me, просто на английскомaccidentally in English.
Archos gen8 has a single MMC chip, but it is programmatically splitted into /dev/mmcblk0 (512 MB) and the rest. gen8 /dev/mmcblk0:* 0x200 master boot record with OMAP CHSETTINGS* 0x20000 primary bootloader** 4 bytes size (0xbee8 on Archos 101)** 4 bytes loading address (0x40200800)** CODE…* 50 MB rawfs partition with kernels* 128 MB system partition* 32 MB swap* 324 MB data Rawfsformat:
* 0x200 bytes (1 block) rawfs superblock
** 4 byte magic number: 61 72 61 77 = «araw»
** 25 reserved bytes
** 10 section entries:
*** 4 byte offset from beginning of disksuperblock end, in blocks
*** 2 byte size, in blocks
*** 32 byte zero-terminated name
* sections:
** 1 block section header
*** 4 byte magic number: 66 72 61 77 = "fraw"«fraw»
*** 2 byte checksum, unused and zeroed
*** 2 reserved bytes
*** 4 byte access mode
*** 484 zero bytes
** (size from superblock entry) blocks - blocks — section data Rawfs layout — designed to fit into 32MB partition with first stage bootloader (256 KB):<tab sep="bar" class="wikitable" head="top"># | Name | Description | Reserved size | Real size1 | avboot | secondary bootloader | 0x200 blocks (256 KB) | 100676 bytes2 | prod | some device settings (???) | 0x200 blocks (256 KB) | 0x420 bytes3 | params | parameter store (maybe also keystore???) | 0x200 blocks (256 KB) | 0x8000 bytes4 | recovery | recovery kernel+initramfs | 0x4000 blocks (8 MB) | 2872714 bytes (FW 2.1.4)5 | init | normal kernel+initramfs | 0x4000 blocks (8 MB) | 6353727 bytes (FW 2.1.4)6 | custom | developer edition kernel+initramfs | 0x4000 blocks (8 MB) | ''empty by default''7 | banner | gzipped boot logo<br />uncompressed size 0x258000 bytes (raw 1024x600 x 32bit color) | 0x200 blocks (256 KB) | 27706 bytes8 | fs | ''something unused'' | 0x3600 blocks (6912 KB) | ''empty'' | | ''TOTAL'' | 0xfe00 blocks (32512 KB = 32 MB - 256 KB) |</tab>
Rawfs по умолчанию не даёт ничего записывать, но в конфиге ядра есть CONFIG_RAWFS_FS_DISABLE_WRITEPROT — CONFIG_RAWFS_FS_DISABLE_WRITEPROT — если сие включить, то по идее должна разрешить.
Код вторичного загрузчика («avboot») говорит нам о том, что по идее эта фиговина может загружаться не только с rawfs-раздела, а также с обычного FAT (FAT16?), но проверять я это не рискну, если не сделаю себе «UnBrickable» аппаратный мод, позволяющий загрузиться откуда-нибудь ещё, а не только с внутренней флешки.
Magic numbers of archos signature block:
* f0 89 e5 da — da — kernel+initramfs* 5a 4d 66 58 («ZMfX»)  — secondary stage bootloader* d5 84 c2 d3 — d3 — / filesystem (androidmerged.squashfs.secure)
Format of rawfs partitions with kernel/initramfs:
** magic number: f0 89 e5 da
** 4 byte size of signature in bits (0x400 = 00 04 00 00 on «init» kernel, 0 = 00 00 00 00 on «custom» kernel).
** digital signature — signature — 0x80 bytes = 0x400 bits. Zeroed on «custom» kernel.
** 00 00 00 00
** 4 byte full size of image (header+kernel+initramfs)