Изменения

Archos 101

7181 байт добавлено, 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 не пашет. Требует допила, либо установки UrukDroid’а [http://code.google.com/p/urukdroid/ UrukDroid]’а (модифицированной прошивки). Вообще похоже, что без UrukDroid’а делать на нём нечего(правда, на этих планшетах всегда делать нечего). <s>А для него нужен SDE, а SDE поганит прошивку. Так что ждём PWN’а.</s> Уже PWNED!!! См. ниже.
== 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 уже тоже нашли].
Ну, и наконец, моральный нюанс. Неприятно иметь лоченный, даже частично, девайс. Всё-таки жалко, что Linux не GPLv3, тогда бы и загрузчики были открыты, и секретные RSA-ключи, используемые для прошивки :(. Вешать тивоизаторов НА СУКУ!!! Вот.
* Исходники ядра, библиотек и инструментов Archos: http://www.archos.com/support/download/software/sources/gen8-gpl-froyo.tgz
А в UrukDroid’е [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.kocat /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».** 2 byte checksum, unused and zeroed** files/partitions1 byte count of sections** 25 reserved bytes** 10 section entries:*** 4 byte offset from beginning of disksuperblock end, in bytesblocks
*** 2 byte size, in blocks
* 0x4600 «init» offset from rawfs header** 32 byte zero-terminated name*** 4 byte flags (0 = nothing, this 1 = writable)*** 4 reserved bytes* sections:** 1 block section header*** 4 byte magic number is written 6 : 66 72 61 77 = «fraw»*** 2 byte checksum, unused and zeroed*** 2 reserved bytes before «init» string *** 4 byte section size in the rawfs header bytes* ** 4 byte flags*** 4 byte uid*** 4 byte gid*** 4 byte access mode*** 484 zero bytes** (size from superblock entry) 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 bytes in block2 | prod | some device settings (???)| 0x200 blocks (256 KB) | 0x420 bytes* 3 | params | parameter store (maybe also keystore???) | 0x200 section headerblocks (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 — если сие включить, то по идее должна разрешить.
Код вторичного загрузчика («avboot») говорит нам о том, что по идее эта фиговина может загружаться не только с rawfs-раздела, а также с обычного FAT (FAT16?), но проверять я это не рискну, если не сделаю себе «UnBrickable» аппаратный мод, позволяющий загрузиться откуда-нибудь ещё, а не только с внутренней флешки.
* zImage
* initramfs.cpio.gz
 
[[Категория:Разработка]]