Archos 101

Материал из YourcmcWiki
Перейти к: навигация, поиск
Archos-101-internet-tablet lg.jpg
Archos 101 — «интернет-планшет» от компании Archos, старшая модель 8-го поколения их «интернет-планшетов» (gen8 — это 28/32/35/43/70/101). Заказывал с computeruniverse.de.

Краткое резюме: говно, причём тивоизированное говно. Хотя это лечится — штатно с потерей гарантии, нештатно без потери гарантии… Загрузчики Archos 101 и вообще gen8 (а я подозреваю, что они такие же и у следующего поколения gen9) мною успешно взломаны. См #PWNED.

Плюсы

  • Большая (реально большая!) батарейка.
  • Как ни странно, отличные стереодинамики, звук лучше, чем на многих ноутбуках :)
  • Наличие USB-HOST с полноценным 0.5А питанием.
  • Наличие прошивки SDE (Special Developer Edition) и полных (!) исходников ядра, с конфигом, можно собрать любой нужный модуль — например, можно подключать USB 3G модемы (желание возникает в связи с отсутствием 3G).
  • Из коробки есть модуль ядра tun, есть BusyBox.
  • Из коробки есть большая часть кодеков (кроме разве что MPEG2 и AC3), и HD видео девайс показывает.
  • Неплохой процессор и GPU, 1247 попугаев в Quadrant’е.
  • 10.1" экран, 802.11n. Но это уже почти у всех есть.
  • Процессор TI OMAP 3630. Хорошо тем, что TI, потому что они предоставляют спеки, в отличие от анального Qualcomm’а со своими Snapdragon’ами.

Со всем этим Archos, правда, опоздал где-то так на полгодика, потому что когда они таки выпустили эти планшеты, уже проснулись и другие производители, и у многих тоже появился USB-HOST (а экран был изначально лучше архоса — см. ниже хард-минусы).

Минусы

Хард:

  • Экран ОТВРАТИТЕЛЬНЫЙ. Углы — сверху и снизу примерно одинаково средненькие, справа УЖАСНЫЙ, слева наилучший. Кроме того экран очень широкий, 1024х600 представляется не очень удобным разрешением. А ещё и глянцевый, постоянно смотришься в него как в зеркало.
  • Камера ОТВРАТИТЕЛЬНАЯ — как на мобильниках 5-летней давности.
  • Не заряжается по USB. Хотя это и следствие большой батарейки — она двумя амперами-то по-моему часа 4 заряжается, страшно представить, что было бы по USB. Но возможность зарядки по USB всё равно можно было предусмотреть.
  • Маловато оперативки. Из-за этого девайс бывает не очень шустрый, хотя игрушки идут хорошо, HD видео девайс вполне показывает, и в Quadrant’е успешно получает 1247 попугаев!
  • Нет ни 3G, ни GPS.

В общем-то хард-минусы всё и убивают, потому что с софт-минусами можно что-нибудь поделать кастомными прошивками. Сейчас вроде-бы уже есть более новые Archos gen9, которые, типа, поприличнее, но в руках не держал — и не горю желанием, потому что сильно лучшего качества экрана не жду.

Однако, вот и софтовые минусы:

  • Нет netfilter’а (а с ним ни tethering’а, ни openvpn несмотря на то, что есть модуль tun).
  • Нет Android Market’а, хотя его и можно поставить руками (то есть там «нелицензионный» Android без денежных отчислений гуглу).
  • Системный раздел смонтирован из squashfs, то бишь доступ туда только на чтение. То бишь, без SDE не ставится перманентный root, а только получается заново при каждом запуске программой Archangel.
  • Fastboot’а нет, прошивать девайс себя так просто не даёт, в том числе recovery. Загрузчики проверяют цифровую подпись ядра, initrd, вторичного загрузчика. Но я их уже дизассемблировал и сломал!
  • А установка SDE, вроде как, обнуляет области флеша с DRM-ключами… То есть дело не в DRM — контент, защищённый ДеРьМом, юзать нельзя ни в коем случае. Но я ненавижу производителей, которые запрещают мне что-то делать с МОИМ девайсом!
  • Поддержка usb flash drive не пашет. Требует допила, либо установки UrukDroid’а (модифицированной прошивки). Вообще похоже, что без UrukDroid’а делать на нём нечего. А для него нужен SDE, а SDE поганит прошивку. Так что ждём PWN’а. Уже PWNED!!! См. ниже.

PWNED

Pwned.png

Итак, решил наконец вернуться из дебрей дизассемблирования к тому, ради чего я его затеял — к взлому загрузчиков Archos gen8 и gen9 (отключению проверки цифровой подписи), и проверить, получится ли. Archos crack bootloader diy free download, как бы сказал SEOшник.

По идее, это не так-то много и даёт — кастомные ядра можно и так устанавливать, это предусмотрено вторичным загрузчиком в виде «SDE». Но есть нюансы!

Во-первых, эти ПИДРы из Archos’а утверждают, что при установке SDE (произошедшей хотя бы раз) обнуляют DRM-ключи устройства (что в общем-то насрать) и гарантию (тоже насрать, чуть меньше, но всё же) — типа, в устройство ставится какой-то флаг, по которому они всегда могут понять, что «ОНО УСТАНАВЛИВАЛОСЬ, ЮЗЕР НИХАРОШИЙ».

Во-вторых, и что более важно — никакие эксперименты с SDE не дают возможности модификации загрузчиков и recovery (хер вам, а не ClockWorkMod). Невозможность модификации recovery всё-таки обижает, а модификация загрузчика дала бы возможность, например, объединить два mmc-девайса в один и нормально преодолеть идиотское ограничение в 512 Мб на систему — реально-то чип один, это он уже софтово (параметром модуля ядра) на два делится — 512 Мб mmcblk0 + всё остальное mmcblk1. Но на это в целом насрать, потому что, особенно исходя из «популярности» устройства, которой оно обязано говённому железу, скорее всего никто модов загрузчика и не сделает. Собственно, Archos-энтузиасты, по-моему, ограничиваются людьми типа scholbert’а (XDA), которым gen8 достался в состоянии кирпича (bricked) и нескольких странных людей вроде меня, купивших его честно, но не видящих ему применения.

Ну, и наконец, моральный нюанс. Неприятно иметь лоченный, даже частично, девайс. Всё-таки жалко, что Linux не GPLv3, тогда бы и загрузчики были открыты, и секретные RSA-ключи, используемые для прошивки :(. Вешать тивоизаторов НА СУКУ!!! Вот.

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

По-лу-чи-ло-сь. Оба загрузчика (первичный и вторичный) успешно взломаны. Проверка цифровых подписей на моём девайсе теперь отключена.

Чтобы повторить это на своём девайсе (теоретически должно подходить и для других Archos gen8), нужно:

  • заменить 8 байт по адресу 0x7520 от начала mmcblk0 с 7F402DE9003091E5 на 0000A0E31EFF2FE1.
  • заменить 8 байт по адресу 0x14824 от начала mmcblk0p1 с 7F402DE9003091E5 на 0000A0E31EFF2FE1 (либо по адресу 0x14424 в файле /mnt/rawfs/avboot, но в rawfs как-то не очень пишется).

Первое патчит первичный загрузчик, второе — вторичный (которой /mnt/rawfs/avboot). Мысль в том, чтобы заменить тело функции verify_hash(), проверяющей подпись и возвращающей 0, только если она корректная, на просто «return 0», что на ARM-ассемблере звучит так:

MOV R0, #0
BX LR

Для этих манипуляций, правда, нужен root, который на gen8 успешно получается Archangel’ом, но только на прошивках старее 2.3.xx… Причём все прошивки после 2.1.08 не дают откатываться на более старые (но всегда можно откатиться куда угодно с помощью SDE). Так что root без потери гарантии (срать на эту гарантию…) всё-таки может быть некоторой проблемой, манипуляции лучше делать, оставаясь на 2.1.xx или 2.2.xx. Правда я хз, можно ли вообще найти gen8 с заводской прошивкой 2.3.xx или 2.4.xx, так что в целом, может, и всё равно плевать.

Внимание!

Если внезапно кто-нибудь будет повторять и по данным адресам обнаружит данные, отличные от 7F402DE9003091E5, ни в коем случае не меняйте — убьёте загрузчик, и девайс будет bricked, кирпичиком. Ну и вообще, в любом случае, все модификации загрузчика делайте оочень аккуратно и на свой страх и риск.

Его наверняка можно debrick’нуть, процессор в нём TI OMAP 3630, и с большой вероятностью выведен загрузочный UART, если нет — то, возможно, выведен test point (пин процессора SYS_BOOT5) и, соединив его с VCC, можно загрузиться по USB… Но это — бааальшой геморрой, так как сначала его (тестпоинт) нужно ещё найти уже всё нашёл scholbert, а потом ещё найти/написать загрузчик, который сможет восстановить систему…

Кстати, спасибо EiNSTEiN’у http://archos.g3nius.org/, идея взлома взята у него (он так же ломал Archos 5).

3G USB модемы

У многих возникает логичная идея: использовать вместе с архосом 3G USB модемы, например, распространённые Хуавеи разных моделей (E150/160/1552 и т.п). Однако есть проблемы:

  1. Эти модемы после использования их под виндой требуют переключения в нужный режим через usb_modeswitch.
  2. Даже когда сделаешь usb_modeswitch, оказывается, что Archos 101 не содержит в себе модуля ядра option.ko (CONFIG_USB_SERIAL_OPTION), необходимого для работы сих модемов, а содержит лишь другой драйвер USB-модемов — cdc_acm, который эти Хуавеи как раз не поддерживает.
  3. Что ещё важно — владельцы Archos 70 и ниже, можете забыть про модемы, либо придумывать внешнее питание, потому что Archos 70 даёт только 100мА питания на USB-порту — 3G-модемам этого мало.

Однако не всё так плохо, Archos выложил в OpenSource полные исходники ядра для планшетов gen8 (от A28 до A101). Причём не просто выложил, а с конфигом и полным набором инструментов кросс-сборки. Что даёт влёгкую собрать любые необходимые модули. А полученный до этого с помощью Archangel’а рут даёт возможность их установить.

Так что забирайте и радуйтесь (всё для штатной прошивки):

  • Статически собранный под Archos бинарник usb_modeswitch: Media:A101_usb_modeswitch.zip. usb_modeswitch нужно вызывать с параметрами типа usb_modeswitch -H -v 12d1 -p 1446 (это мой разлоченный Huawei E150 от МТС), но для разных моделей модемов чиселки могут отличаться. После однократного usb_modeswitch модем можно вынимать и вставлять, он будет в правильном режиме. Если вставить под винду — вероятно, usb_modeswitch понадобится повторный. Ещё может быть полезно сказать модему AT^U2DIAG=0 средствами компьютера и HyperTerminal’а / minicom’а / echo AT^U2DIAG=0 > /dev/ttyUSB0.
  • Собранный под Archos (прошивка 2.1.04) модуль ядра option.ko: Media:A101_option.zip
  • Модифицированные скрипты /system/bin/tether_*.sh: A101_tether_start_usb.sh, A101_tether_at_cmd.sh, A101_tether_stop.sh. Все вместе одним архивом: Media:A101_tethers.zip. Их нужно скопировать в /system/bin, чтобы использовать стандартный пункт меню «Cell phone tethering».

Дополнительные ссылки:

А в UrukDroid’е поддержка 3g модемов уже и так есть, кстати.

Системные форматы

Это тоже я пишу, я, просто на английском.

Rawfs:

  • 0x200 rawfs superblock
    • magic number: 61 72 61 77 = «araw».
    • files/partitions:
      • 4 byte offset from beginning of disk, in bytes
      • 2 byte size, in blocks
  • 0x4600 «init» offset from rawfs header, this 4 byte number is written 6 bytes before «init» string in the rawfs header * 0x200 bytes in block)
  • 0x200 section header

Код вторичного загрузчика («avboot») говорит нам о том, что по идее эта фиговина может загружаться не только с rawfs-раздела, а также с обычного FAT (FAT16?), но проверять я это не рискну, если не сделаю себе «UnBrickable» аппаратный мод, позволяющий загрузиться откуда-нибудь ещё, а не только с внутренней флешки.

Magic numbers of archos signature block:

  • f0 89 e5 da — kernel+initramfs
  • 5a 4d 66 58 («ZMfX») — secondary stage bootloader
  • d5 84 c2 d3 — / filesystem (androidmerged.squashfs.secure)

Format of rawfs partitions with kernel/initramfs:

  • 0x100 byte header with signature
    • 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 — 0x80 bytes = 0x400 bits. Zeroed on «custom» kernel.
    • 00 00 00 00
    • 4 byte full size of image (header+kernel+initramfs)
    • 00 00 00 00 (also 00 01 00 00 in androidmerged.squashfs.secure)
    • 4 byte (kernel size + 0x100) = initramfs offset
    • 4 byte initramfs.cpio.gz size
    • zeroes up to 0x100
  • zImage
  • initramfs.cpio.gz