22 сентября 2009 г.

Neo Freerunner - шаг 1

Опыт поколений показал, что смартфон Openmoko Neo Frerunner в оригинальной комплектации не вполне жизнеспособен. Точнее, он совершенно нежизнеспособен, если пытаться расширить его функционал и привести девайс в соответствие с традиционными представлениями о смартфонах - в оригинальной комплектации смартфон беден и глуп, ничего не понимает и ничего не умеет. Но, как оказалось, нет худа без добра...

Давным давно, когда компьютеры только начинали свой тернистый путь в широкие массы, зародилась весьма пагубная привычка, кое-где здравствующая и поныне - продавать широким массам компьютеры с предустановленным софтом. Привычка сия, хотя и базировалась на здравой и светлой идее удобства конечного пользователя, в самом деле оказалась донельзя паскудной - софт на эти компы ставили как попало, никаких настроек не проводили, на совместимость не тестировали и вообще никак не тестировали. Более того - ставили или криво взломанные версии (что редко), или же триальные, причём как раз конечного пользователя об этом не предупреждали. В итоге по прошествии времени - достаточного, чтобы наплодить документов и целиком зависеть от компа, но недостаточного, чтобы подумать о резервном копировании и обновлении железа - пользователь вдруг оказывался один на один с ситуацией, когда всё вдруг отказывалось работать. Банились кривые ключи, истекали сроки триалов, в дыры пролазили бесчисленные вирусы - и компьютер из лучшего друга превращался в тупой злобный глючный ящик, который к тому же сожрал плоды трудов пользователя и упорно не желает их отдавать. Прозорливые люди, предвидя такую ситуацию, ввели в обиход полезную привычку - как только купил компьютер, тут же форматируй винт и ставь туда целиком новый софт, свой, проверенный, заведомо рабочий. У нас вообще не принято доверять неизвестно кому и всё привыкли делать сами - так надёжнее.
Нынче времена не те, нынче всё стало несколько проще - уже и софт ставят ответственнее, и настройку проводят, и совместимость выправили. Но всё равно - люди старой закалки предпочитают всё сносить начисто и ставить наново самостоятельно.

Как оказалось, сию практику можно с успехом применять не только к компьютерам и ноутбукам, но и к смартфонам. Однако до сих пор мудрость сия наталкивалась на одно чрезвычайно существенное обстоятельство - практически ни один смартфон не позволял легко и просто переустановить весь свой софт. Переустановка софта для смартфона означала его перепрошивку, а перепрошивка, в свою очередь, до сих пор кажется подавляющему большинству процедурой заоблачной сложности и в домашних условиях нереализуемой. Однако не всегда это правда.
Преимущество Openmoko Neo Freerunner перед другими смартфонами состоит, пожалуй, именно в том, что этот аппарат не привязан к какому-либо управляющему софту - открытость исходников и спецификаций позволила всем желающим написать свой управляющий софт для этого смартфона. В итоге, если свериться с Wiki проекта, то можно обнаружить, что кроме официального дистрибутива Om для данной аппаратной платформы различными вендорами были созданы дистрибутивы Android, Debian, Gentoo, Qtopia (ныне Qt Extended) и ещё несколько с менее известными в народе именами. В итоге поле для экспериментов - поистине огромно. А если учесть, что в моём распоряжении имеется собственно аппарат в неработоспособном состоянии, то, как говорится, иного выхода у меня не было...

Для оживления своего безвременно спившегося Neo я выбрал дистрибутив Qtopia. Почему именно его? Во-первых, именно этот дистрибутив чаще всего мелькал в различных инструкциях, пока я искал в Интернете ответы на вопросы по настройке своего смартфона. Во-вторых, из всех имеющихся дистрибутивов для GTA02 (кодовое имя Neo) только этот дистрибутив выглядел наиболее адекватным для мобильных платформ - Debian и Gentoo больше ассоциируются с полноценными компьютерами, тогда как имена остальных дистрибутивов мне ровным счётом ничего не говорили.
Оказалось, правда, что я немного просчитался... К тому моменту, как я созрел для перепрошивки Neo, дистрибутив не только получил новое имя - Qt Extended. Тролли из Qt Software успели закрыть этот проект, сделав его частью чего-то большего. Тем не менее, проект не умер - он был подхвачен сообществом и получил второе рождение в виде Qt Extended Improved, как о том сообщает Wiki. Тем не менее, я работал именно с Qt Extended.
К сожалению, на момент написания статьи мне не удалось найти в Wiki проекта ссылки на дистрибутив, который используется сейчас на моём Neo - видимо, они были удалены по причине отказа Qt Software от проекта Qt Extended. Тем не менее, в разделе о Qt Extended Improved есть ссылка для скачивания необходимых образов - rootfs (корневая файловая система) и kernel (ядро) для версии 4.4.3 (правда, на момент написания статьи сайт, содержащий образы, был недоступен).

Для перепрошивки я воспользовался утилитой dfu-util и мануалом, изложенным на страницах Wiki проекта (там же есть ссылки на dfu-util). В качестве большого брата для перепрошивки использовался ноутбук с Mandriva 2008 One на борту.
Как оказалось, dfu-util прекрасно устанавливается из соответствующих RPM-пакетов. После установки утилита прекрасно работает в качестве команды shell, но учтите, что для запуска этой утилиты вам необходимо войти в систему в качестве root (или использовать sudo), т.к. утилите необходим эксклюзивный доступ к шине USB для совершения всех необходимых операций по перепрошивке.
Итак, в нашем распоряжении есть: большой брат с dfu-util, Neo, USB-кабель для соединения Избранного с большим братом, uImage.bin (образ ядра нашего дистрибутива) и соответствующий jffs2-образ корневой системы. Подробно описывать процедуру перепрошивки не буду - нет нужды повторять мануал, доступный по ссылке выше. Опишу только подводные камни и течения.
Во-первых, имеет смысл учесть, что после удачной прошивки вы получите девственно чистый телефон, без контактов, без SMS и без всего остального, что на нём, возможно, когда-то было. Если эти данные вам действительно для чего-то нужны или просто дороги, как память, не поленитесь - перепишите их куда-нибудь до прошивки.
Во-вторых, не стоит обращать особое внимание на заявления мануала о том, что у вас только 30 секунд на прошивку. Действительно, телефон находится в режиме NOR uBoot только 30 секунд, если ничего не предпринимать. Но если телефон начал прошивку (началось исполнение dfu-util), телефон не выключится, пока не доделает дело до конца. Более того, если вы не успели ввести команду (особенно это актуально для linux с его любовью к именам файлов типа qtextended-4.4.2-gta02-rootfs-10302135.jffs2) - не расстраивайтесь, а просто наберите команду на клавиатуре Большого Брата, снова загрузите телефон в режим NOR uBoot и смело нажимайте Enter, бо уж нажать одну клавишу за 30 секунд вы всяко успеете. В свете этого, кстати, оказалось, что совершенно нет никакой нужды всякий раз отсоединять телефон от кабеля, как того требует пункт 1 мануала - телефон прекрасно грузится в NOR uBoot и с подключённым USB.
В-третьих, мануал ничего не говорит о необходимости задать устройство путём указания параметром к утилите dfu-util вендора и типа устройства. При этом можете быть уверенными - утилита dfu-util обнаужит на вашем Большом Брате не одно, а несколько USB-устройств, т.к. кроме собственно телефона там наверняка будет мышь, тачпад (который прикидывается USB-девайсом). Некоторые приводы оптических дисков также могут быть обнаружены (особенно это касается ноутбуков). Как же быть?
Очень просто. Отключите Избранного от компьютера и запустите dfu-util -l - вы получите список всех устройств. Перепишите их шестнадцатиричные ключи. А потом подключите Избранного, загрузите его в NOR uBoot и снова запустите dfu-util -l. В списке вы увидите новое устройство - это и есть Избранный и его-то ключи необходимо указать в параметре -d утилиты dfu-util. Добавьте этот ключ к командам, приведённым в мануале, и проблема будет решена.
Добавлю ещё, что для смены софта на Openmoko Neo Freerunner достаточно перепрошить корневую систему и ядро. В составе смартфона есть ещё bootloader, но его задача состоит аккурат в запуске ядра и корня и ничего более - его перепрошивать не обязательно.
Мой опыт подсказывает, что прошивка Openmoko Neo Freerunner происходит с первого раза и совершенно безболезненно - ни ошибок, ни предупреждений.

P.S. В моём распоряжении, как я уже отмечал, оказался дистрибутив Qt Extended 4.4.2 - последний дистрибутив от официального разработчика. В моём архиве, таким образом, имеются образы ядра и корневой системы. если у кого-то возникло желание поработать именно с этим дистрибутивом - обращайтесь и мы найдём возможность обменяться файлами.

P.P.S. О результатах прошивки - в следующих сериях.
--
Creative Commons License
Подробнее об этом…

Комментариев нет: