Archos 101
UPDATE 2011-04-01: Загрузчики Archos 101 (и вообще gen8) мною успешно взломаны. См #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’ами.
Минусы
Хард:
- Экран ОТВРАТИТЕЛЬНЫЙ. Углы — сверху и снизу примерно одинаково средненькие, справа УЖАСНЫЙ, слева наилучший. Кроме того экран очень широкий, 1024х600 представляется не очень удобным разрешением. А ещё и глянцевый, постоянно смотришься в него как в зеркало.
- Камера ОТВРАТИТЕЛЬНАЯ — как на мобильниках 5-летней давности.
- Не заряжается по USB. Хотя это и следствие большой батарейки — она двумя амперами-то по-моему часа 4 заряжается, страшно представить, что было бы по USB. Но возможность зарядки по USB всё равно можно было предусмотреть.
- Маловато оперативки. Из-за этого девайс бывает не очень шустрый, хотя игрушки идут хорошо, HD видео девайс вполне показывает, и в Quadrant’е успешно получает 1247 попугаев!
- Нет ни 3G, ни GPS.
Софт:
- Нет 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
Итак, решил наконец вернуться из дебрей дизассемблирования к тому, ради чего я его затеял — к взлому загрузчиков Archos’а 101, и проверить, получится ли.
По-лу-чи-ло-сь. Оба загрузчика (первичный и вторичный) успешно взломаны. Проверка цифровых подписей на моём девайсе теперь отключена.
Чтобы повторить это на своём девайсе (теоретически должно подходить и для других 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, который на архосе получается Archangel'ом.
Внимание!
Если внезапно кто-нибудь будет повторять и по данным адресам обнаружит данные, отличные от 7F402DE9003091E5, ни в коем случае не меняйте — убьёте загрузчик, и девайс будет bricked. Ну и вообще в любом случае, все модификации загрузчика делайте оочень аккуратно и на свой страх и риск.
Его наверняка можно debrick’нуть, процессор в нём TI OMAP 3630, и с большой вероятностью выведен загрузочный UART, если нет — то, возможно, выведен test point (пин процессора SYS_BOOT5) и, соединив его с VCC, можно загрузиться по USB… Но это — бааальшой геморрой, так как сначала его (тестпоинт) нужно ещё найти, а потом ещё найти/написать загрузчик, который сможет восстановить систему…
Кстати, спасибо http://archos.g3nius.org/, идея взлома взята у него (он так же ломал Archos 5).
3G USB модемы
У многих возникает логичная идея: использовать вместе с архосом 3G USB модемы, например, распространённые Хуавеи разных моделей (E150/160/1552 и т.п). Однако есть проблемы:
- Эти модемы после использования их под виндой требуют переключения в нужный режим через usb_modeswitch.
- Даже когда сделаешь usb_modeswitch, оказывается, что Archos 101 не содержит в себе модуля ядра option.ko (CONFIG_USB_SERIAL_OPTION), необходимого для работы сих модемов, а содержит лишь другой драйвер USB-модемов — cdc_acm, который эти Хуавеи как раз не поддерживает.
- Что ещё важно — владельцы 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».
Дополнительные ссылки:
- Ссылка на форум с инструкциями по сборке ядра: http://archivez.info/index.php/47/gen8-android-development/-howto-build-custom-kernel-libraries-and-applications-on-your-own-a891056.html
- Исходники ядра, библиотек и инструментов Archos: http://www.archos.com/support/download/software/sources/gen8-gpl-froyo.tgz
А в UrukDroid’е поддержка 3g модемов уже и так есть, кстати.