Я хочу рассказать об любопытном устройстве Cosmo Communicator, пойдя по стопам RuVDS, правда обойдясь своими мыслями, а не переводом )) Так как формат ресурса уже давно поплыл и перестал быть сугубо направлен на код или аппаратуру, то я подумал что смогу внести свои 5 копеек не вызвав гнева, а наоборот - надеясь привлечь внимание к устройству.

Итак, Cosmo это полноценный смартфон на базе MTK Helio P70, на борту имеет 6Gb RAM, 128Gb eMMC и 4220 mAh батарею. Но самое интересное в нем не это, а "полноразмерная" qwerty клавиатура и второй активный экран. Т.е. телефон представляет clam shell, где в "верхней" части экраны, камеры, кнопки, а в "нижней" - backlight клавиатура и батарея плюс 2 USB-С разъема. Если этого кажется мало, то еще аппарат умеет в 2 sim, nfc, flash карты и eSIM.

Фактически, это получился прямой конкурент GPD, только с несколько неформатным по меркам desktop экраном и GSM связью на борту.

Что же такого интересного в Cosmo и почему я про него пишу. Аппарат, как уже упоминалось имеет multi boot, что позволяет запускать на нем несколько операционных систем.

В настоящее время поддерживаются:

  • Android 9

  • Gemian (адаптация Debian)

  • UBPorts (тут есть некие оговорки, о которых ниже)

  • Sailfish OS (тут явная work in progress)

Я думаю, что описанного выше уже достаточно что бы вызвать интерес к устройству, но позвольте мне "углубить и расширить" тему, пройдясь по истории, особенностям и текущему состоянию как аппаратно/программной части, так и сообщества.

Аппаратные особенности и проблемы для СПО

Как уже говорилось, аппарат работает на SoC MTK, а последний славится отсутствием любви открывать исходники. Фактически разработку и производство железа для Planet выполнила китайская компания AEON, так что и "прошивки" делали они. Судя по нескольким найденным следам, как Android, так и Linux были переданы от MTK специалистам AEON, которые адаптировали обе ОС под конечное железо и запросы Planet. А раз так, то всякие copyright и NDA запрещают как AEON, так и самой Planet публиковать какие-либо данные про аппаратуру, кроме общих спецификаций, а равно и исходные коды драйверов. Тем не менее, нужно сказать что для Cosmo Planet создало собственный репозиторий на GitHub, на котором доступно ядро, загрузчик и ряд других хаков, нужных что бы запустить Linux или подружить с ним второй экран.

Но вернёмся к аппаратуре.

Задняя крышка

Большая картинка 1
(c) Planet Computers
(c) Planet Computers
Большая картинка 2
К вопросу о рамке экрана. (c) CES 2019
К вопросу о рамке экрана. (c) CES 2019

Украшена вторым экраном c сенсором, а также камерой, "вспышкой" и кнопкой-качалкой у которой целый ряд функций (от регулировки звука, до приёма звонков, перемотки треков и т.п.) под которой прячется fingerprint сенсор. Также на этой крышке есть 4 RGB светодиода и антенна NFC. Упомянутое счастье объеденённое в отдельный модуль, называемый CoDi. Однако, кнопки и LED с камерой имеют прямое подключение к основной плате, тогда как LCD и сенсорная панель работают через STM32 и общаются с "основной" платой по i2c.

Камера - Samsung S5K2X7. С этим модулем невероятное количество сложностей, так как он представитель линейки "интерполяционных", где физические 6MP раздуваются... ну от 14 до 24х в зависимости от желания маркетологов. Сообщество не смогло найти никакие data sheet с регистрами на сей гений инженерной мысли, поэтому в Linux драйверов для камеры нет. В Android дела обстоят получше - было написано приложение, которое умеет брать с чипа RAW и дальше делать с ним что-то, но тут также не все хорошо (об этом будет подробнее в части про ПО). Оригинальное приложение камеры есть, но оно... просто есть.

Внешний LCD - AMOLED матрица, доподлинно модель которой не известна, но мы знаем что он 240х536 пикселов.

Fingerprint, LED - про это также нет особой информации. Стоит упомянуть, что все светодиоды имеют привязку к событиям или состояниям, ими можно управлять из специальной утилиты из-под Android и в целом крайне удобны и полезны. И нет, 4 это не перебор - это фича.

Экран - также на верхней крышке прячется дисплей умеющий 2160х1080 пикселов, подсветкой которого можно управлять горячими клавишами с клавиатуры. Экран занимает не всю внутреннюю поверхность "крышки": там притаилась вторая (фронтальная) камера и датчики освещённости и удаления. Многие удивляются, почему экран не занимает всю площадь, оставляя две не равные чёрные зоны по краям, но на самом деле в этом есть эргономический смысл - так гораздо удобнее держать устройство, когда вы не печатаете что-то на клавиатуре. Т.е. уперев большие пальцы в эти области получается надёжный и удобный захват. При этом сенсор не воспринимает пальцы, они не загораживают изображение и не оставляют отпечатки на рабочей части стекла.

Нижняя часть устройства

Большая картинка 1
(c) Jeet from Gizmochina.com/author/jeet/
(c) Jeet from Gizmochina.com/author/jeet/
Большая картинка 2
(c) Planet Computers
(c) Planet Computers

Прежде всего это клавиатура и батарея. Однако, там же прячутся USB-3, mini jack, 2 микрофона, стерео-динамики и кнопка, которая в обычном телефоне была бы кнопкой питания, а тут - программно определяемый элемент (т.н. silver button).

Клавиатура - мембранная, 5 рядов настоящих клавиш, управляемая через aw9523, с 5ю уровнями подсветки. При кажущейся сложности запоминания сочетаний вызывающих дополнительные функции, а их много, через неделю начинаешь на компьютере удивляться, когда они не срабатывают. Я печатаю и 10ти пальцевым методом (хотя, и не так удобно) и большими пальцами - проблем нет. При этом клавиатура не задевает экран, на нем не остаётся отпечатков клавиш. Для заказа доступно огромное количество локализаций, но я, как и многие, выбрал US, так как каждая делается на заказ, а US есть практически всегда.

Батарея - LiOn 4220 mAh, аппарат может использовать QC3.0 и этого хватает что бы работать целый день и достаточно оперативно подзаряжаться.

USB-C - тут нужно заметить, что один из разъёмов - родной для "телефона", а второй - для CoDi. И хотя оба могут использоваться для зарядки аппарата, тот что справа, у серебряной кнопки, будет делать это значительно медленнее, а при выключенном CoDi и вовсе отказываться заряжать аппарат. Сам производитель продаёт некоторое количество переходников, самым важным из которых является USB-C <> HDMI, так как "железо" хочет работать только с ним и ни с каким другим.

Миниджек и кнопки я уже описывал, про них особо сказать нечего, также как и про колонки и микрофоны. Пожалуй скажу что колонки достаточно мощные, но не блещут и больше напоминают старые "ноутбуки для бизнеса" где "звук есть". Их хватает что бы говорить по громкой связи или прослушать трек-другой, но не более.

Также в нижнюю часть аппарата спрятаны пара магнитов, которые держат весь "бутерброд" закрытым, когда половинки сомкнуты вместе.

В сети есть документ с подробными фотографиями аппарата и начинки рожденный для сертификации FCC, так что рассмотреть все можно достаточно подробно без необходимости физически что-то разбирать.

Программная часть

Так как же все это работает? На удивление - хорошо. Следует сказать, что Planet Computers будучи маленькой компанией, направленной на создание Palm подобных устройств приходилось решать задачу "развитие или поддержка". Буквально до недавнего времени развитие побеждало, но что-то случилось в консерватории - слон начал поворачиваться к пользователям лицом! Что это значит я расскажу ниже.

Начнём с загрузчика. Код его открыт и доступен в соответствующем репозитории. С завода загрузчик разблокирован. Мы, пользователи, используя заранее подготовленные скрипты и инструкции можем поставить себе Linux, Rooted Android, перепрошить всю ОС, переразбить диск, а кто посмышленее и понимает как написать свой пункт к комбайну - залить любой образ который ему захочется.

При старте аппарата нам покажут красивое boot меню, которое вот "вчера" обновили, и оно стало понимать клавиатуру, хотя раньше управлялось кнопками громкости (я говорил что слон повернулся лицом - ждали этого года 2,5). Можно выбрать пункт по умолчанию, есть хоткеи, короче красота.

С этой частью особо рассказывать нечего - код открыт, процесс прост. А что же мы можем загрузить?

Android

И так, у нас есть Android, который для этого аппарата - главная ОС. В нем есть собственный софт от Planet и AEON, который делает устройство "не просто еще одним телефоном", но про это я могу рассказать вам в комментариях или вы можете сами загуглить что там такое. И да - это не просто пара программ. Также Android поставляет нам драйверы для всего аппаратного великолепия. Последнее обновление V25 исправило кучу проблем, главная из которых "сонная" клавиатура, которой требовалось пара секунд после открытия крышки что бы очухаться. А также нам прилетел январский security patch от Google.

Следует сказать, что вендорский софт позволяет управлять как поведением CoDi, так и определять ориентацию дисплея в зависимости от запущенного приложения, а равно - настраивать silver button и паттерны засветки светодиодов в зависимости от события. Это одна из самых "сложных" для понимания вещей в аппарате.

Не обошлось без казусов - есть серьезное предположение, что ПО для проверки и обновления как CoDi так и самого Android, в котором практически backdoor в телефон от китайцев (тут немного предыстории вопроса). Последние, конечно же, говорят что все поправили, но вы же помните про Eye4 и аналоги?.. Ну так вот. Правилом хорошего тона считается выпиливать его или блочить файрволом.

К слову о CoDi: при загруженном Android коде сможет "подсосать" адресную книгу, по которой можно будет искать и звонить контактам. Да, прямо с маленького экранчика на крышке! Когда я тестировал это последний раз, "влезало" только 700 "тяжёлых" контактов (т.е. не просто ФИО+телефон). Возможно что в последнем v15 обновлении что-то исправили. Также экран можно использовать для набора номера, ответа на звонок, включения громкоговорителя, mute, записи и т.п. Короче полноценный dialer app. Также этот экран понимает воспроизведение медиа - будет показывать трек и предоставлять кнопки управления воспроизведением, а светодиоды мигать сообщая что "звук идет". Ну и в довершение на этом же экране отображаются уведомления Android, которые еще можно открыть и прочитать! Экран умеет в слип и настройку яркости. На самом деле описанным выше функции CoDi не ограничиваются, но это самые яркие и нужные (вот тут да - ИМХО). Все это счастье крутится под FreertOS, сборка которой, напомню - закрытая.

Я уже упоминал основной экран, который достаточно "стандартный" (в хорошем смысле) для сегодняшних телефонов... только вот работать вы с ним будете в планшетном режиме. А это значит, что большинство приложений будут крайне коряво отображаться, так как для планшета экран узкий, а для телефона - не так повернут. И да, я могу аппаратно настроить масштабирование, но это не помогает. И тут на выручку приходит одно из приложений вендора, в котором можно указать ориентацию для нужного софта. Но согласитесь - если у вас есть аппаратная клавиатура, то пользоваться софт вариантам и держать телефон как книжку... ну вы поняли. Так что с этой точки зрения аппарат получился странным и именно по этому сей час готовится к выпуску младший брат - Astro. Он будет уже слайдером, где экран будет закрывать клавиатуру решая проблему "книги" для портретно ориентированных приложений. Стоит сказать, что поворот в портрет является "не родной" ориентацией для аппарата, при которой дико корёжит камеру, очень странно делаются скриншоты и вообще случается много непонятного. Но если использовать, скажем, браузер - все ок. А вот если использовать какой-то более экзотичный софт вроде сканера QR кодов - еще вопрос.

rooted Android

Да, root поддерживается из коробки. Так как Cosmo это Tribal A аппарат, то наличие еще одного раздела никак не мешает использовать общие data и vendor. По сути рут это патченный vendor, но тут я могу ошибаться. Magisk можно обновить, поставить доп модули, но exposed работать не будет, также как не получится полностью избавиться от Google. Я как-то слышал что был человек, который смог в MicroG, но это не точно. Тем не менее, вполне можно подмонтировать system.img в RW и поковырять в свое удовольствие. Окирпичить аппарат очень сложно, но можно если заиграться именно с загрузчиком. Связка AndroidFirewall с включенным boot leak protection + Magisk и возможность создавать пользователей в Android = вполне секьюрное решение. Ненужный софт можно задизейблить на уровне ОС из консоли. Также можно завернуть проверку CaptivePortal на свой ресурс без каких либо проблем. Основная беда лишь в том, что геолокация сделана на основе Baidu Location Services, а Google лишь обёртка сверху. И тут вариантов пока что нет, если только не найдётся энтузиаст, который сможет заменить Baidu на что-то более "кошерное". Кстати, аппаратные кнопки отключения микрофона и самолётного режима прекрасно работают и не обходятся ПО, ну или по крайней мере я не встречал еще софт, который бы переопределял отключенный микрофон.

Linux

Второй ОС, официально поставляемой для аппарата является Gemian. Это модифицированный дистрибутив на основе Debian, где как это часто бывает - ядро частично опирается на vendor.img, т.е. драйвера из Android (halium). При этом само ядро на сегодня 4.4.146, а также есть патчи для клавиатуры и ее раскладок. В последнем обновлении завезли поддержку CoDi, который теперь также может звонить под Linux или использоваться как трэкпад, если аппарат открыт (это опять же свежая история, так как до этого Planet делала вид что она глуховата и не слышала стоны сообщества). Кстати, звонилка умеет в 2 sim карты. В настоящее время через не очень грязный хак можно затащить GSM Data в Linux, но только для SIM0. Bluetooth работает для гарнитур и мышей. USB-C поддерживается. В остальном же - обычный Debian под оболочкой KDE Plasma. Народ уже придумал пару интересных хаков, в т.ч. как управлять подсветкой клавиатуры. Многие аппаратные хоткеи работают - можно регулировать звук, яркость и т.п. Единственное что требуется - в параметрах клавиатуры или в xkb выставить соответствующую раскладку от Planet. Опять же есть хаки и патчи завозящие другие языки в варианте Planet, что бы использовать "второй слой" клавиш под Linux.

Если кто знаком с мобильным Linux, то быстро поймёт, что разрешение 2160х1080 мягко говоря не располагает к нормальному отображению классических desktop-oriented приложений. А других сегодня в линуксе практически нет! Но можно масштабировать для HiDPI (это раз) и можно поставить другие оболочки по выбору (это 2). Обходной вариант это yad но все равно тут ещё далеко до действительно мобильно ориентированных приложений.

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

UBPorts

В настоящий момент оно умеет работать как read-only образ, запускаемый с root раздела Debian. Тем не менее, там работает все, что работает на Debian и довольно шустро. Экран поворачивается, Bluetooth коннектится. До полноценной установки пока не доросли, но это вопрос времени.

Особенно рассказать тут нечего. Камера даже запускается, но падает при попытке снять кадр или переключиться на другой "объектив", Anbox не доступен... Но то, что идет из коробки работает.

Следует сказать, что если UBPorts изначально адаптирована к "мобильному" использованию, то Gemian поставляет полноценную "Плазму", с маленькими патчами приложения настроек. Как я писал выше - регулярно возникают проблемы скейлинга приложений, которые удивляются длинному, но узкому экрану. Теперь жизнь стала проще (с появлением трекпада в лице CoDi), но в целом все равно странно и не очень функционально.

И тут мы подходим, пожалуй к главной части статьи.

Sailfish OS

Я ничего не могу сказать про эту операционную систему, так как никогда с ней не работал. Слышал массу восторженных отзывов тут и там, а также от обладателей Gemini...
Вся информация собирается в треде на основном форуме устройства, хотя и обновляется "по запросу". Следует сказать, что Jolia не смотря на изначально заявленный интерес, пока не спешит выделять силы на порт своего продукта (кстати, к старшему брату Gemini - SailFish официально есть) так что разработка ведётся в большей степени силами сообщества но с привлечением инженеров как Planet так и Jolia в случае уж каких-то совсем сложных случаев.

Камера (бонус для терпеливых)

Для пытливых и терпеливых - бонус. Разработчик под ником shuntcap на основном форуме проекта опубликовал приложение, фактически перепиленная GCamera, которое умеет брать RAW с сенсора и постобрабатывать его. Результат значительно превосходит оригинальное приложение от MTK... и вообще вся эта ветка полна боли и страдания в попытках как-то повлиять на ситуацию как с драйверами, так и в понимании как это все работает. Но факт в том, что даже при полном отсутствии информации удалось создать достаточно интересный софт!

Выводы или что я хотел этим всем сказать

Cosmo Communicator совершенно потрясающий аппарат. При своих не выдающихся по сегодняшним меркам аппаратных компонентах и компромиссам форм-фактора - он вполне способен составить конкуренцию маленькому ноутбуку, а по стабильности и скорости работы Linux - далеко обгоняет Libre и Pine. Учитывая аппаратную клавиатуру не с "пупырками", а вполне взрослыми клавишами - он просто вне конкуренции.

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

Cosmo вполне можно ткнуть в USB-C хаб и получить полноценный ноутбук или просто таскать в кармане как нормальный терминал удалённого доступа и телефон одновременно.

В настоящее время скромное сообщество, рассредоточенное по IRC (#planet-devices), Telegram, Matrix, Discord и Facebook (я не привожу тут ссылки, так как спам боты быстро портят всю красоту, интересующимся прошу сюда, где после регистрации все ссылки будут доступны) в силу возможностей пилит Linux под Cosmo. Часть из этих каналов слинкована, так что можно выбрать мессенджер по предпочтениям.

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

Если вам нравится ковырять Linux, вы верите в мобильное будущее этой ОС и готовы приблизить такое будущее - Cosmo очень интересный кандидат. Ну или знаете кого-то кто был бы не прочь... Да, сложный, да во многом закрытый и проприетарный - он уникальный ровно также, как в свое время был уникальным Nokia N900 с которого я начал эту статью.