Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022)

Материал из 0x1.tv

(перенаправлено с «20220521A»)
Докладчик
Андрей Савченко.jpg
Андрей Савченко

В докладе делается обзор наиболее популярных смартфонов, работающих исключительно на СПО (в рамках ОС).

На примере Pinephone рассматривается опыт повседневной эксплуатации такого смартфона в качестве основного телефона. Рассматриваются основные направления развития СПО для платформы.

Видео

on youtube

Презентация

Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022).pdf

Thesis

Введение

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

Обзор решений

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

Если не рассматривать исторически значимые, но заброшенные проекты (например, Openmoko) и не рассматривать многочисленные решения, где пространство пользователя Linux работает поверх проприетарного ядра от производителя (например, Volla), то остаются следующие варианты:


Replicant
— свободная версия Android. Поддерживается несколько широко распространённых устройств, но нужно делать выбор между закрытыми драйверами и/или приложениями и основной функциональностью телефона (звонки, gps, сенсоры и т.п.). Кроме того, ОС телефона плохо изолирована от ОС модема, загрузчика и иных закрытых компонент, что создаёт угрозы безопасности.
Librem 5
— свободный телефон с возможностью избирательного аппаратного отключения приёмо-передающих устройств и сенсоров. Построен на базе СПО PureOS (производная Debian), можно использовать другие дистрибутивы Linux.
Pinephone
— тоже свободный телефон с аппаратными килл-свитчами; в целом оборудование проще, но и доступнее. Есть широкий выбор дистрибутивов Linux для использования.



Существуют и иные решения, но они либо не обеспечивают базовую функциональность телефона (звонки, sms, навигация), как, например, Nemo mobile или LuneOS, либо содержат закрытые компоненты в базовой системе (например, графический интерфейс), как, например, Maemo, Sailfish OS и её отечественная производная Аврора, что не позволяет рассматривать данные решения как СПО.

Далее детали будут рассмотрены на примере Pinephone, ввиду его практической эксплуатации автором в качестве основного телефона почти год, но большинство результатов будет применимо и к Librem 5 ввиду существенного пересечения кодовой базы.

Программное обеспечение

Дистрибутивы

Основные дистрибутивы являются форками популярных дистрибутивов Linux:

  • Mobian (Debian)
  • Manjaro (Arch)
  • PostmarketOS (Alpine)
  • UBPorts (Ubuntu)
  • Arch (отдельная сборка)


Необходимость форков вызвана потребностью в дополнительных патчах или фиксации версий ПО, несовместимых с основными ветками. Перечень неполный, т.к. можно использовать любой дистрибутив под Aarch64, если там будет собран нужный софт, включая патчи.

Оболочки

Основные графические оболочки:

  • Phosh (Phone shell, GTK)
  • Plasma Mobile (KDE)
  • SXMO/SWMO (очень самобытная вещь)


Здесь всё сводится к пользовательским предпочтениям: кому-то больше GTK нравится, кому-то KDE, кто-то хочет минималистичный интерфейс. Обычно в дистрибутивах все три варианта сборок доступны, но переключаться на лету между ними просто так нельзя.

Телефония

Основная сложность СПО в мобильных ОС — функции телефонии и мобильной связи, корректное и полнофункциональное взаимодействие с модемом (звонки, sms, mms, передача данных, gnss). Есть два решения:

  • ModemManager
  • oFono

На данный момент ModemManager стабильнее работает и активнее развивается. Phosh изначально работал на ModemManager, Plasma Mobile перешёл на него недавно с релиза 21.12.

Прикладное ПО

Набор прикладного ПО сильно зависит от дистрибутива и предпочтений пользователя. В целом будет работать любое Linux-приложение, но не все они полностью оптимизированы под мобильный интерфейс. Например, основная функциональность может работать нормально, а какое-либо редкое меню не умещаться на экране — это можно исправить коэффициентом масштабирования, но не очень удобно.

Для желающих запускать Andoid приложения есть Anbox. Здесь примерно как с Wine под Linux: что-то работает хорошо, что-то не очень или вовсе не работает.

В целом основная функциональность (карты, фото, музыка) обеспечены на должном уровне (pure maps, gnome maps, megapixels, lollypop).

Периферия

Пайнфон интересен не только свободной ОС без блобов, но и открытым кодом для существенной части периферии:

  • GPU Mali — Lima
  • Загрузчик и инициализация памяти — u-boot
  • Свободная реализация TF-A (доверенное firmware)
  • SCP (system control chip) — базовый управляющий компонент SoC свободен — Crust, а сам чип AR-100 выполнен на базе OpenRISC.


Модем

Пайнфон использует модем Qualcom EG-25, который подключён под USB как внешнее устройство (с точки зрения ОС телефона). На модеме тоже работает Linux на armv7! Из коробки там закрытое решение Qualcom, но исходники свободных компонент были открыты по запросу и сообщество реализовало свободную прошивку с использованием Yocto.

Это позволило, как решить ряд проблем (например, спонтанные зависания или перезагрузки модема), так и расширить функциональность: теперь модему можно отправлять sms, получать dmesg, отложенный звонок и даже будильник; добавлен синтезатор речи для ответных звонков от модема.

При этом всё пространство пользователя модема работает на СПО, а в ядре оставлены два блоба: для trustzone (он устраним, но пока не в приоритете) и для ADSP модема.

ADSP модем представляет собой небольшую real-time OS для Hexagon VLIW и отвечает за работу с полосами частот оператора и sim картой. Его замена на данный момент не реалистична.

Итого, в пайнфоне остаётся всего 2.5 несвободных прошивки в периферии: wifi/bluetooth, ADSP модема и неработающий автофокус задней камеры (заменяется программным фокусом).

Заключение

Итак, смартфон на СПО вполне пригоден к повседневной практической эксплуатации, а высокая ремонтопригодность и открытость схемотехнических решений предоставляет широкие перспективы развития.


Смартфон на СПО (Андрей Савченко, OSSDEVCONF-2022)!.jpg

Примечания и ссылки