Предыстория
Те, кто читают меня регулярно, должны помнить, что из всех старокомпьютерных вещей, которые я собираю, особо выделяются различные карманные компьютеры. У меня есть КПК многих платформ, с различными версиями операционных систем и различными железками внутри. Мне нужно это для изучения как можно более широкой библиотеки ПО и для тестирования своих программ, таких как менеджер приложений, о котором я писал в предыдущей статье.
Среди таких мобильных операционных систем, как Symbian, PalmOS и Windows Mobile я уже насобирал устройства практически со всеми вариантами ОС и сейчас обратил свой взор на Android. Следующей целью портирования моего менеджера является как раз таки Андроид и я хотел захватить как можно больше версий (старых версий, разумеется) системы. До начала этой истории, самая младшая версия ОС, которой я располагал, была 2.3 (на Motorola Milestone), но я хотел поддерживать и самые первые Андроиды. И в этом мне помогла случайная покупка и много страданий.
Покупка
Эта история началась почти год назад, холодным субботним утром, когда я в очередной раз приехал на Митинский радиорынок. Для тех, кто не знает, это такое место в Москве, на котором всё ещё можно найти редкие старые электронные штуки, если хорошо покопаться в "мусоре" и найти общий язык с продавцами. Там я и заметил на одной из витрин маленький Андроидо-фон с изогнутым внизу корпусом и трекболом. Угадаете модель? Да, это был HTC Hero. Не то чтобы я хотел себе именно Hero, но в моей памяти в тот момент что-то сломалось и я перепутал его с более ранним телефоном HTC Dream, который является первым телефоном на Андроиде вообще. Они, в принципе, похожи. У Dream немного другое расположение кнопок и слайдер-механизм с клавиатурой, но в целом очертания корпуса примерно одинаковые.
В нём не было аккумулятора, поэтому проверить на месте было нельзя, но я всё же решил его купить. Не то чтобы мне свойственно совершать импульсивные покупки, но иногда случается. Не все из них оказываются удачными и как вы можете судить по предыстории, это не один из положительных случаев, но обо всём по порядку. Как я уже говорил, в нём не было аккумулятора, но запустить то хотелось. Поэтому с Митино я отправился в Яндекс.Музей, в котором на тот момент проходила выставка телефонов и где был, в том числе, такой же телефон. Я ненадолго позаимствовал батарейку, вставил, включил. Телефон ожил и даже загрузился, что уже весьма хорошие новости, но не все так просто. Сенсорный экран реагировал только на сильные нажатия и то через раз, так что можно было констатировать его смерть, а после мониторинга Авито оказалось, что я ещё и переплатил. Не самое лучшее начало, надо сказать.
Ремонт
Герой (во всех смыслах) этой истории на несколько месяцев отправился в ящик ожидания запчастей и моего времени, пока, наконец, уже зимой, один мой друг из Питера не привёз мне ещё один телефон, который закончил свою жизнь утопившись. Но у него был аккумулятор и, в теории, должен был быть живым тач-скрин. Пару дней спустя я сел и собрал из двух телефонов один. Дисплей и сенсор мёртвого Hero оказались рабочими и я получил полностью здоровый аппарат на Андроиде 2.1, который ещё и выглядит здорово.
И вроде можно было бы на этом и закончить, но у меня ведь уже есть не менее прекрасный телефон на втором Андроиде, а хочется всё же расширить "библиотеку" систем, если есть такая возможность. А возможность есть, потому что стартовой версией Андроида для Hero была 1.5. Но как откатить прошивку было не совсем понятно.
Прошивка
Первым делом я пошёл шерстить интернет на вопрос существования образов прошивок для Hero. И в очередной раз убедился в том, что интернет хранит далеко не всё, как говорят некоторые. Ссылки на файлообменники (а иногда и сами файлообменники) оказались мёртвыми. Я смог найти прошивку на Shipped Roms, но и оттуда файлы не загружались. Окей, телефон снова был отложен в угоду другим проектам, пока пару недель назад мне не подарили HTC HD2 и в сообществе моего канала не началось обсуждение телефонов HTC. Тогда я снова вспомнил про Героя и решил снова поискать прошивку для него. На этот раз мне больше повезло и удалось скачать её с Shipped Roms. HTC вообще любит распространять ПО для своих устройств сразу с прошивальщиком, в виде одного exe-файла. Тут та же история. И это, в принципе, даже удобно, вот только оно не работает. Ни в Windows 10, ни в 7, ни даже в XP флешер не "увидел" телефон. Да и вообще он в системе толком не определялся, хоть я и поставил драйвер. Я подумал, окей, возможно у него мёртвый USB-разъём, решил проверить это потыкав его по ADB. И ADB его видит! Но только свежий. Старый, находящийся внутри того же флешера, например, в упор его не видит. Я пересобрал прошивальщик со свежим ADB, но это не помогло, потому что в режиме fastboot телефон всё равно не определялся, просто отваливается от USB-подключения.
Хорошо, подумал я, прошьюсь через рекавери. Нашёл его, поставил (опять же с болью, потому что fastboot всё ещё не работает), вытащил из прошивальщика сам образ прошивки и оказалось, что у zip-архива, в котором прошивка и находится, битый CRC и её нельзя поставить через рекавери обычным способом. Снова тупик.
Дальнейшее изучение показало, что это не единственный способ установки с карты памяти. HTC сами предусмотрели такую возможность для сервисных центров, используя так называемую Gold Card. Обычную SD-карту с переписанным идентификатором. Окей, пробуем. Но на часах уже 2 часа ночи и работа откладывается. И вот я трачу вечер следующего дня на приготовление такой карты. А точнее на то, чтобы осознать, что генератор образа карты с нужным идентификатором не работает! Причем понял я это случайно, решив после очередной неудачи посмотреть содержимое карты Хекс-редактором. И вы знаете что? Набор сгенерированных байт для записи отличался от того, что реально было записано на карту! Ну, что поделать, ручками всё в том же редакторе поправил содержимое карты... И ЭТО ЗАРАБОТАЛО!... Но вы думаете, это конец? Нет, потому что теперь ошибка идентификатора поменялась на ошибку связанную с тем, что версия прошивки на карте более старая, чем установленная. Я не могу просто взять и откатиться. Я пробовал прошивать более старые версии радио-модуля, пробовал закидывать файлы из ранних версий прошивки (телефон при этом перестаёт загружаться, разумеется, но как мне казалось, это должно было его обмануть и дать мне возможность прошиться). Но нет. Ничего не помогало.
Но если бы у меня ничего не получилось, этой статьи бы не было, верно? Хеппи энд случился, и случился он довольно быстро. Один из моих друзей нашел способ установки модифицированного загрузчика, в котором отключены все проверки (в том числе не нужна Gold Card). Нужно это для установки кастомных прошивок, разумеется, но помогло и для установки родной. И вот, я дождался окончания процесса, перезагрузил телефон, затаил дыхание и... увидел совсем другую анимацию загрузки, а потом и саму систему (которая визуально практически не отличалась от 2.1 из-за оболочки HTC Sense). Это была победа. Так как прошиваются все разделы, никаких следов "взлома" телефона не осталось. Он стал практически девственным, с завода.
И что же теперь?
Ну, для начала я собрал все файлы, нужные для отката, в один архив и написал подробную инструкцию, как это сделать. Но и на этом не остановился и сделал кастомную прошивку, в которой присутствует root, рекавери, файловый менеджер и ftp клиент для более удобной установки программ. Также материалы для этого и других HTC можно поискать здесь.
Я планирую немного допилить свой кастом, возможно, сделать ещё одну прошивку без HTC Sense с голым Андроидом, ну и конечно же начать портировать менеджер приложений. Я уже нашёл для этого подходящую Android Studio и Qt, но это будет уже совсем другая история.
В заключение, мне хотелось бы поблагодарить товарищей UriiyNoga, Amix307 и Ovsenka за помощь в поиске прошивок, инструментов и подсказки.