Редчайший открытый смартфон на Linux: Neo Freerunner. Каким был прадедушка PinePhone?

Слышали ли вы когда-то о PinePhone? Да, это проект открытого смартфона с полностью открытым ПО, который рассчитан не столько на конечного потребителя, сколько на всяческих гиков. Но ведь PinePhone был далеко не первым, а о его предке из далекого 2007 года помнят немногие. Мне удалось раздобыть редчайший Open-Source Linux смартфон, имя которому — Neo Freerunner aka GTA-02! Мы посмотрим, на что был способен этот коммуникатор в своё время, оживим его и подведем итоги: подходило ли такое устройство конечному потребителю. Интересно? Тогда добро пожаловать под кат!

image

Предыстория


Идея создания телефона, который будет полностью открытым во всех отношениях — и в плане железа и в плане софта, витала в воздухе задолго до появления PinePhone или даже Google Nexus (его к открытым телефонам можно причислить лишь отчасти). Например, Motorola делала значительный вклад в развитие Linux на телефонах, таких как Moto RAZR v8 или A1200. Я не знаю, где сегодня можно найти исходный код ядра для этих смартфонов, но полагаю, Motorola предоставляла его по первому требованию. Однако такое решение было профитным во всех смыслах: была единая программная платформа, для портирования которой необходимо было лишь портировать Linux под конкретный BSP, а коммьюнити поддерживала эти телефоны ещё долгое время, умудрившись запустить на них даже OpenMoko:

da262f57f677f427a8e2405929bba2cd.png
77dbe72339f31eb0d27e1d045beb6962.png

Не была в стороне и TrollTech, тогдашний владелец и разработчик фреймворка Qt, который представил свой телефон (к слову, очень сильно напоминающий Sony Ericsson тех лет и был скорее девкитом, нежели полноценным устройством) GreenPhone, работающий на Linux и использующий интерфейс Qtopia, который был построен на базе Qt.

8db0f94f7341bec26c774ac658af6120.png

В какой-то момент TrollTech прекратили разработку GreenPhone, а его наработки передали сообществу OpenMoko, который и стал основной сегодняшнего аппарата.

Выделялась и Nokia, регулярно представлявшая новые модели в своей линейке интернет-планшетов (да, тогда они назывались именно так) под названием N. Работала она на базе собственной ОС Nokia — Maemo и имела корни от классического Debian. Несколько позже Nokia выпустит легендарный N900 — смартфон с большим на тот момент дисплеем, выдвижной клавиатурой и классическим Linux на борту.

6d18a2dfca5fca996f494e65814b83ba.png
36fedcc67d31c8102a3a5fedc9560860.png

К сожалению, как закончилась история для Nokia, мы уже с вами знаем: компания попыталась развивать свою новую Linux платформу MeeGo, но — пришёл дяденька из Microsoft на место CEO и резко сменил вектор развития компании с Linux смартфонов на устройства с Windows Phone. Однако старые гаджеты этой компании всё ещё ценятся на вторичном рынке, в том числе и планшеты серии N.

Кроме TrollTech, Motorola и Nokia, в Linux-сообщество смартфонов активно пыталась влиться и Google, причём изначально это были не коммуникаторы с тачскрином, а стандартные QWERTY смартфоны. Несколько лет назад на американской барахолке всплыло объявление о продаже вот таких девкитов от Google, которые работали на самых первых версиях Android, ещё до первой публично доступной 1.5, не имевшие даже тачскрина. Этот прототип был разработан в кооперации с настоящим мастодонтом мира коммуникаторов — HTC, который ещё долго помогал Google с дальнейшим развитием платформы.

c084f98a42fb19e543347a16f58bc10d.png

Но всё же, устройства представленные выше, имели исходный код ядра (без бинарных блобов драйверов). Вероятно, также имели исходный код оболочки, однако они всё ещё оставались закрытыми проприетарными устройствами. И тут приходит тайваньская компания FIC  — First International Computer, которая вместе с сообществом OpenMoko представляет первый полностью открытый смартфон. И имя этому первенцу: Neo 1973 (GTA-01)! Но что в данном контексте означает открытый? В чём было отличие от Motorola A1200?

18972ffeb24697dbf57895e87bba17c4.png

Отличие в том, что производитель публично предоставлял всю документацию и исходный код на своё устройство. Она включала в себя: схему платы, разводку, исходный код загрузчика (изначально U-Boot, затем Qi), исходный код ядра почти со всеми драйверами, исходный код оболочки. И всё это под открытой лицензией сообщества. Например: если бы Motorola захотела производить свой Neo FreeRunner, она смогла бы это сделать без каких либо проблем или отчислений FIC. Всего было 4 итерации — GTA-01, GTA-02, GTA-03 и финальная, разработанная сообществом GTA-04.

Работали Neo 1973 и FreeRunner на базе чипсета Samsung S3C2442 с тактовой частотой 400Мгц (это было очень популярное решение для недорогих коммуникаторов, но чип уходил корнями в 2003), имела 64 мб встроенной памяти и 128 мб ОЗУ, встроенный GPS, Wi-Fi и даже OTG!

К сожалению, проект прожил всего лишь два года. В 2009 году OpenMoko прекратило работу над проектом и остались лишь сторонние разработчики, время от времени выпускавшие обновления и кастомные прошивки для своих устройств. В России официально устройство не продавалось, оно было слишком нишевым, но компания «Линуксцентр» завезла партию, которую распродала интересующимся энтузиастам. Кроме того, я видел ветку на ЛОРе (профильный российский форум о GNU/Linux), где люди хотели скооперироваться и вручную заказать партию устройств. Цена была равна 399$, что по тому курсу примерно 12 тысяч рублей.

И сегодняшнее устройство ко мне попало тоже не просто так, я не зря сказал что оно очень редкое. Маловероятно, что вы найдёте его на онлайн-барахолках. Мне было интересно посмотреть и пощупать это устройство вживую, своими руками, поэтому в один момент я решил создать топик с поиском данного девайса на linux.org.ru и купить его специально для статьи. Пожалуйста, не воспринимайте ссылку на ЛОР как рекламу, это один из самых популярных *nix форумов в РФ и в рекламе он не нуждается (специально для тех, кто читает данную статью не на Хабре).

1fa170c4ff9b405f337c236e87b6d8dc.png

Откликнулся пользователь id0, который предложил бесплатно подарить мне данное устройство, с моей стороны необходимо было оплатить автобус до отделения почты и пересылку. Сказано — сделано, доставка оплачена, а гаджет выслан, за что говорим id0 большое спасибо! В день, когда устройство было доставлено, ко мне пришла ещё и Nokia N70 в родной коробочке, которую вы можете видеть на видео.

e759de84b0bf99e749bd168531500b89.png

Смартфон вышел почти 15 лет назад, но от него сохранился даже родной аккумулятор. И даже здесь FIC пошли в сторону унификации: местный аккумулятор — вольная вариация на тему BL-4C/BL-5C и сюда отлично подходит аккумулятор от большинства кнопочных Nokia. Неудивительно, что родной аккумулятор уже не держит, поэтому сюда отправляется мой любимый BL-6C!

Включаем устройство и хоба! В отличии от красивых бутанимаций этих ваших андроидов, здесь обычная консоль linux. И именно благодаря ей, я смог найти причину kernel panic, когда оживлял это устройство (Android при panic либо виснет, либо уходит в ребут, при этом dmesg никто не покажет).

Я почти уверен, что в своё время такая картина вызывала изумление, а возможно и восторженный возглас со стороны юниксовода! Конечно были проекты по портированию Linux на обычные коммуникаторы (например, на IPaq HX4700), но тут это всё из коробки!

Но всё было не так гладко, к сожалению, устройство было в состоянии кирпича. Система загружалась, но висла на этапе загрузки оболочки и система, как бы это правильно выразить, сама себя заряжала.

Ремонт


Смартфон нужно было перепрошивать. Вики OpenMoko всё ещё работает, но все ссылки давно уже не рабочие и найти рабочий образ родной системы практически нереально. Система на OpenMoko устроена так: у нас есть загрузчик, это либо U-Boot, либо Qi (есть возможность менять их), есть ядро Linux и есть сама система — rootfs. И дистрибутивы тоже предлагались отдельно: отдельно скачивай u-boot, отдельно ядро, отдельно rootfs. И к сожалению ссылки на них давно не работают, даже в веб-архиве их нет! Увы.

Но в вики можно найти упоминания кастомных прошивок: GameRunner, QtMoko и SHR. И образ rootfs SHR мне удалось найти в закромах веб-архива! Для прошивки у нас есть два пути: загрузка с карточки micro-sd (да, прямо из коробки!) и прошивка образа в внутреннюю память с помощью режима dfu (это не тот же самый режим dfu, что в iPhone), и утилиты dfu-util.

32b00a96345289ddec2c6b068b8d8737.png

Эта утилита умеет и дампить память, но заставить её работать на Windows у меня не вышло. Однако я заказал EEEPC для экспериментов за целых 700 российских рублей (~10$), куда я скорее всего поставлю Ubuntu и уже там постараюсь восстановить оригинальную прошивку. Поэтому наш сегодняшний путь — это установка на MicroSD флэшку. Я опишу мини-гайд по установке системы на MicroSD, а в конце предоставлю полный образ флэшки, который можно записать с помощью Win32DiskImager. Тут стоит понимать, что скорость NAND памяти смартфона не сильно выше скорости типичной MicroSD флэшки, поэтому на производительности это не скажется. А вот когда я переносил Android на MicroSD флэшку, там система откровенно думала!

2f423e7825db5e56a0c1bc9bb92d5161.png

Итак, для работы системы, флэшку необходимо разбить на два раздела: первый это FAT, второй EXT2/EXT3/JFFS. Под Windows этого сделать не выйдет: ставьте виртуальную машину (у меня, как назло, нормально не работала ни puppy, ни dsl), либо поступите как я.

d4bfa1894b80f047775868a28a940b34.png

Когда функций кардридера в хабе мне не хватает, я прибегаю к использованию одного из своих смартфонов, на котором у меня стоит TWRP с ROOT доступом через adb. В этом случае, для работ я использовал его, но все команды в статье должны работать под любым десктопным linux дистрибутивом. Только поменяйте имена разделов с /dev/block/mmc, на /dev/sdb или /dev/sdc. На этом смартфоне потихоньку помирает флэш-память и именно на нём я переносил систему на MicroSD! Использовать мы будем флэшку на 2 гб, но обязательно либо SD, либо SDHC. SDXC Neo FreeRunner навряд-ли поддерживает.

Вставляем флэшку в слот MicroSD, загружаем вспомогательное устройство в рекавери, заходим в консоль и пишем adb shell. Теперь пишем:

fdisk /dev/block/mmcblk1

Удаляем существующие разделы с помощью d и создаём два раздела: один будет служить хранилищем для ядра и ваших личных данных, произвольного размера и второй под rootfs, на него нужно примерно 500 мегабайт. Записываем таблицу разделов и при необходимости перезагружаем устройство (на некоторых устройствах ioctl с требованием обновить таблицу разделов не проходит). Теперь форматируем первый раздел в FAT:

mkfs.fat /dev/block/mmcblk1p1
А второй в ext:

mke2fs -t ext2 /dev/block/mmcblk1p2

Под Windows закинуть ядро в FAT раздел не получится, он обязательно ломает суперблок второго раздела по какой-то причине! Поэтому создаём две точки монтирования:

mkdir /a/
mkdir /b/

11c3d4f297bc95ce561b20ef8f1a9dc9.png

И закидываем в них linux и рутфс. Ядро должно называться uImage.bin и должно находится в корне первого раздела. Рутфс необходимо распаковать из tar.gz. Делаем это так:

adb push uImage.bin /a/
adb push rootfs.tgz /b/
cd /b/
tar -xvf rootfs.tgz

Готово. Выключаем устройство, вытаскиваем флэшку, вставляем в Neo FreeRunner и зажимаем кнопку включения с кнопкой AUX. Появится меню загрузчика. Нам нужно выбрать загрузку с SD карты и перед нами будет такая картина (извиняюсь за грязь на устройстве, у него софттач покрытие, которое со временем начинает собирать на себя вообще всё подряд. Нужно оттереть спиртом):

Устройство загрузилось и работает, а система мимикрирует под iOS своим локскрином! Вообще, это кастомная прошивка, поэтому оценивать юзабилити устройство именно по ней не совсем корректно, но всё же прошивке есть что предложить.

Обзор

Итак, это именно Linux, в качестве оконной системы здесь настоящие «иксы» и есть полноценная многозадачность, с возможностью расположить несколько окон на одном экране. Система работает очень нешустро, полная загрузка проходит примерно за полторы-две минуты, а звонилка открывается примерно секунды две, но возможно это издержки кастомной прошивки и на стоковой прошивке всё было хорошо. Во время написании статьи, мне один раз даже пришлось перезагружать устройство!

Вот так в этой прошивке выглядит главное меню. И это практически весь доступный софт: клиент pidgin, плеер, видеоплеер, целых два терминала, настройки, wifi, заметки и это практически всё! Открытие приложений занимает несколько секунд, но, полагаю, на OpenMoko дела обстояли гораздо лучше. Там таких тормозов не было, а SHR кроме GTA-02, работал ещё и на GTA-04 и HTC Hero вроде-бы.

c127b2d13357c129dbe2775c02987d02.png

Несмотря на наличие Wi-Fi модуля, подключится к домашней сети мне не удалось. Со стоковой прошивки, устройство к Wi-Fi подключалось. Надеюсь, хотя-бы GPRS тут работал!

6c6626e2156929f87f35e417f572b5d1.png

Зато здесь куча настроек: темы, твики, настройки масштабирования, есть практически всё. Загрузка каждого подпункта занимает около секунды.

8bad6970d98e2a51175406f0756b08db.png

Но у устройства достаточно высокое разрешение экрана. Такое же, было, например у Nokia 5800, которая вышла в том же году.

8cdcb9c1254e1e09f9c1c918e0f1e42b.webp

Здесь есть аудиоплеер с эквалайзером, но даже он не умеет сам искать музыку хотя бы в домашней директории! Нужно руками добавлять папки. Выглядит не очень удобно.

b2c08d4325c94f566f0161efa9bbbc27.png

Ну, а ещё здесь, конечно же, есть терминал. По сути, это чуть ли не основной способ управления устройством, но виртуальная клавиатура очень неудобная. Если бы у этого устройства была бы QWERTY клавиатура, всё заиграло бы иными красками. Если систему грузить не с флэшки, то есть возможность передать в commandline ядра перенаправление консоли на usb, что позволит управлять мобилкой с ПК.

ec0e9ddfe9af94e64a7cce3d6fd1a4c0.png

И это все приложения, что есть в данной прошивке. Я серьёзно! Однако статья уже получилась достаточно объёмной, поэтому Quake мы сюда собирать не будем!

Заключение


Устройство имело перспективы, но было достаточно сырым. Скорее это была достаточно дорогая игрушка, ведь те, кто хотел себе коммуникатор, покупали в первую очередь решения на WinMobile. Те, кто хотел себе смартфон, брали устройства на Symbian. Те, кто хотел себе телефон, брали простую звонилку. Несколько более допиленной вышла небезызвестная Nokia N900, работавшая на ОС Maemo, но в ней из коробки даже поддержки USSD не было. Но вот, спустя столько лет вышел PinePhone и есть pmOS. Осталось ли его юзабилити на таком же уровне или всё стало гораздо лучше?! А какое ваше мнение?

p-u9l27ynelxi92bcmdxhu76ma8.png

© Habrahabr.ru