Слухи о том, что китайская компания Meizu планирует выпустить коммуникатор на базе Ubuntu Touch, появились еще в начале прошлого года. В течении 2014 г. компания периодически демонстрирует прототип устройства на выставках и осенью объявляет, что Meizu MX4 на Ubuntu Touch выйдет в декабре, сообщает некоторые технические подбробности и открывает предзаказ. Наконец, после непродолжительного затишья, 17.05.2015 Ubuntu-версия смартфона появилась в онлайн-магазине Meizu по цене ¥1799, т.е. ≈$290 (причем только 16-гигабайтная модель в белой или золотистой расцветке), но купить MX4 Ubuntu Edition можно было лишь в течении пары дней: затем Ubuntu-опция внезапно исчезла из списка доступных; одновременно с этим стартовая цена опустилась до ¥1499 (≈$240).
Мне удалось познакомиться поближе с MX4 Ubuntu Edition, устройством несомненно очень интересным, но оставившим у меня неоднозначные впечатления. В интернете уже есть довольно неплохие обзоры как Ubuntu Touch вообще (в отрыве от «железа»), так и «обычного» MX4 (на Android), поэтому я не стану подробно их пересказывать, а постараюсь описать коммуникатор как конечный продукт с «гиковской» точки зрения, уделив особое внимание операционной системе.
Unboxing и первые впечатления
Смартфон поставляется в обыкновенной картонной коробке без изысков; внутри обнаруживаешь небольшой, затянутый в пластик параллелепипед белого цвета и картонную же пустышку-placeholder (по-видимому, обычно в ней спрятаны дополнительные аксессуары, но с MX4 Ubuntu Edition в комплекте идут только кабель и USB-переходник для зарядки — они лежат рядом со смартфоном внутри белой коробки-книжки; жаль, что красиво сфотографировать этот этап распаковки у меня не получилось).
Сам аппарат довольно крупный; все-таки идеальный для меня размер экрана это 4″ (как у Nokia N9), у MX4 же диагональ 5.36″. Металлический каркас-рамка сбоку очень напоминает шестой iPhone и выглядит отлично, особенно с определенных ракурсов, как на этом промо-рендере:
Сверху расположены 3.5″ разъем для наушников и кнопка включения-блокировки, с левой стороны — качелька громкости (у меня она чуть-чуть люфтит), снизу — отверстия для динамиков и разъем micro-USB. Задняя крышка пластиковая, глянцевая, но не маркая; пригнана к корпусу практически идеально, снимается с трудом. Под ней находятся несъемная (по-простому во всяком случае) батарея и одинокий лоток для µSIM-карты: похвастаться поддержкой нескольких симок или microSD-карточки MX4 не может. Но есть и ложка мёда: можно подключать USB-флешки, они без проблем монтируются и читаются, хоть и с невысокой скоростью (порядка 10 МБ/с).
Основные технические характеристики аппарата:
Процессор | MediaTek MT6595 (4 ядра A17 2.2 ГГц + 4 ядра A7 1.7 ГГц) |
Графический чип | PowerVR G6200 |
ОЗУ | 2 ГБ |
Дисплей | 5.36″ IPS (New Mode 2), 1920×1152 (418 PPI), 1100:1 500 кд/м² |
Основная камера | 20.7 Мп, 1/2.3″ CMOS (Sony Exmor IMX 220), двойная LED-вспышка (2200/5500K), ISO 1600, f/2.2, 78°, 4K@30fps/720p@120fps, H.265 |
Фронтальная камера | 2.0 Мп, 1080p@30fps |
Связь (сотовая) | TD-LTE (1900/2300/2600 МГц), LTE FDD (1800/2100/2600 МГц), TD-SCDMA (1880-1920/2010-2025 МГц), WCDMA/HSPA+ (805/900/1900/2100 МГц), GSM/GPRS/EDGE (850/900/1800/1900 МГц) |
Связь (прочая) | 802.11a/b/g/n/ac (2.4/5.0 ГГц), Bluetooth 4.0, USB |
Навигация | GPS, ГЛОНАСС, BeiDou |
ПЗУ | 16 ГБ (доступно ≈12 ГБ), нерасширяемо :-( |
Батарея | 3100 мА·ч (несъемная) |
Размеры и масса (вес) | 144.0×75.2×8.9 мм, 147 г |
При первом включении нужно будет дождаться приветствия (запускается и перезагружается смартфон довольно долго, чуть меньше минуты), порадоваться, что это действительно Ubuntu, а не Android, ответить на пару-тройку стандартных вопросов и посмотреть короткую демку про swipe-управление (можно пропустить).
Здесь надо сказать несколько слов об управлении жестами. Лучше всего оно реализовано, по-моему, в той же Nokia N9 (MeeGo). Идея в том, что пересечение пальцем каждой из четырех кромок экрана тактильно и когнитивно отличается от свайпов внутри экрана (приложения), и на них можно навесить до 8-ми функций (четыре стороны и два направления), как то: переключение между состояниями (экранами) и приложениями, закрытие активного приложения (эта фича мне очень нравилась в MeeGo; в iOS и Android приходится сначала отправлять приложение в background, и лишь затем убивать его из списка), вытягивание «шторки» и quick launch, меню приложения и т.д. Это, в свою очередь, позволяет отказаться от кнопки «Home» сотоварищи, а значит увеличить полезное пространство дисплея. После Nokia N9 у меня выработалась стойкая аллергия на эти «лишние» кнопки, особенно на «Back» из-за ее контекстно-зависимого поведения, и тот факт, что в Ubuntu Touch она by design отсутствует, я лично только приветствую (хотя и допускаю, что это понравится не всем).
В то же время центральная кнопка в MX4 осталась на месте, а переход к предыдущему экрану в разлапистых приложениях (например, в системных настройках) реализован как в iOS: слева от заголовка появляется стрелочка (несколько уродская, на мой вкус; в iOS это выглядит опрятнее). В общем, управление в MX4 Ubuntu Edition представляет собой некий гибрид подходов MeeGo и iOS, решение имхо не бесспорное, но во всяком случае явно лучше, чем у Android.
Ubuntu Touch
Начать знакомство с мобильной операционкой от Canonical можно с официального сайта. Кроме жест-ориентированного управления, еще одна фирменная «фишка» Ubuntu Touch — это т.н. scopes, этакие агрегаторы контента определенного типа, что по идее должно избавить пользователя от необходимости вручную перебирать нужные приложения. Так, все новости собраны в одном месте, «мир вокруг» (погода, ближайшие события, концерты, заведения в ε-окрестности и пр.) — в другом. Аналогично сгруппированы фотографии (локальные и из ваших соцсетей), музыка, видео и т.д.
Источники данных (e.g. новостные агентства для News-скоупа) можно фильтровать, а вот добавлять новые источники в существующие scopes пока нельзя (это известная проблема). Но можно создавать свои scopes. Принудительно обновить содержимое (где эта операция имеет смысл) можно, как это принято везде, потянув страницу вниз и отпустив ее. Новости, к слову, показываются на том языке, который выставлен в настройках в качестве системного.
Ладно, приложения и scopes подождут. Самое время залезть в настройки (нужно как минимум установить часовой пояс и добавить русскую клавиатуру), ну и вообще посмотреть, что там к чему.
Настроек не очень много (что для верхнего уровня, имхо, хорошо). Сразу бросается в глаза Rotation Lock (под строкой поиска); кстати, в отличие от Android, здесь он реализован правильно (как в iOS). На скриншоте Language & Text можно заметить странность: Display language показывает, что выбран русский, хотя язык интерфейса явно английский. Далее станет понятно, как так получилось.
Верхняя «шторка» мне показалась намного удобней, чем в Android. Все как-то логично сгруппировано и сразу под рукой. Скажем, в меню Network я могу тут же переключиться в авиарежим (радиомолчание), перейти к настройкам сотовой сети, отключить WiFi или выбрать, к какой точке доступа подключиться. Столь же информативны и интерактивны остальные вкладки (на скриншотах ниже три крайние справа):
Т.к. я обещал не увлекаться, я не стану рассказывать про браузер, камеру (с ними все в порядке, разве что браузер слишком часто падает), аудио- (понимает .ogg, .mp3, .flac, а вот .ape, увы, нет) или видео-плееры (скаченные с YouTube .mp4-файлы проигрываются без проблем) и перейду сразу к выводам. Ubuntu Touch в целом выглядит многообещающе, но пока еще весьма сырая. Что мне не понравилось в первую очередь (в произвольном порядке):
- Интерфейс (собственно системы и многих приложений) жестко привязан к выбранному языку. По привычке выбрав «English (United States)», вы получаете заодно 12-часовое время и фаренгейты. Приходится выбирать какую-нибудь более подходящую локаль, типа «English Canada» или «English Denmark». Впрочем, как вы уже догадываетесь, это не единственный выход. ;-)
- Не везде реализовано контекстное меню, или реализовано как-то вразнобой. Например, нельзя выделить и скопировать номер телефона в списке звонков, выделить часть текста в SMS-сообщении и т.д. В некоторых приложениях (например в браузере) контекстное меню вызывается долгим нажатием, в других требуется сдвинуть объект влево или вправо (именно так можно скопировать текст сообщения или удалить его), что не всегда очевидно. Не везде можно вставить (paste) ранее выделенный текст, более-менее надежно это работает разве что в обычных полях ввода. В Android я могу вставить текст из буфера практически в любую форму на сайтах, в Ubuntu Touch — нет.
- В настройках сотовой сети нет возможности создать Bluetooth- или WiFi-хотспот, хотя это предусмотрено спецификацией (судя по всему, AP-режим не поддерживается драйвером карточки, а для BNEP не хватает модулей ядра, см. ниже).
- Иногда смартфон просит заново ввести пароль для известной WiFi-сети. (Если нажать «Cancel» и выбрать ее из списка, спокойно соединяется.)
- Нельзя переименовать устройство в настройках Bluetooth (однако можно из командной строки).
- В файловом менеджере нет возможности передать файл через Bluetooth, NFC, или ad-hoc WiFi; аналогично, фотографию в Галерее можно расшарить только в соцсетях, музыкальную композицию или видео можно лишь проиграть. Здесь Ubuntu Touch пока вчистую сливает Android. :-(
- Браузер не умеет соединяться через прокси (известная проблема). К сожалению, браузер работает через Chromium Content API via Oxide, а не основан, например, на православном Firefox/Gecko. User-agent: «Mozilla/5.0 (Linux; Ubuntu 14.04 like Android 4.4) AppleWebKit/537.36 Chromium/35.0.1870.2 Mobile Safari/537.36».
- Нет возможности записывать телефонные разговоры или хотя бы просто диктофона.
- Нет FM-радио. С Nokia N9 я мог слушать радио, используя провод наушников в качестве антенны.
- Будильник не выключается, а телефон не переходит временно в беззвучный режим во время входящего звонка при переворачивании (крайне удобная фича MeeGo — перевернуть лежащий на столе смартфон намного быстрее, чем взять его в руки и нажать кнопку «Mute» или «Отбой»).
- Я так и не понял, предусмотрена ли какая-либо LED-индикация. Смартфон ни разу ничем не моргнул, кроме центральной сенсорной кнопки. О пропущенных звонках или садящейся батарее визуально никак не уведомляет.
- Кстати, о батарее: держит около суток, ничего выдающегося. (График расхода батареи можно увидеть на скриншоте выше.)
- При подключении USB-мышки на экране не появляется курсор (мышь при этом работает).
- Приложение Document Viewer, хоть и умеет открывать PDF-файлы, к комфортному чтению не располагает: слишком часто падает и не позволяет удобно прокручивать текст (зафиксировав горизонтальное положение страницы). Случайные zoom in/out текста или поворот экрана превращаются в пытку: шрифт становится нечитаемым до окончания операции, которая занимает продолжительное время (1-2 с).
- Приложений вообще в Ubuntu Store пока что очень мало; большинство клиентов тех же соцсетей на самом деле не нативные программы, а лишь оболочки над web-интерфейсом (т.н. webapps).
- Иногда на какое-то время пропадает сглаживание на границах иконок и кнопок; не везде правильно пишутся (с прописной буквы) и склоняются названия месяцев (7 Июнь 2015) или употребляется суффикс множественного числа -s (1 calls made today) — при том, что gettext/libintl и фрюниксы вообще это давно умеют, и другие мелкие огрехи интерфейса.
- Очень уж из многих мест торчат
ушикуски Android. - Несъемный аккумулятор, малый объем ПЗУ, невозможность пользоваться картами памяти.
К счастью, некоторые проблемы можно вполне побороть самостоятельно: устройство никак специально не огорожено, стандартно предоставляется shell (в т.ч. удаленно, через ADB или SSH), есть рутовый доступ и все такое — ведь это линукс, детка! Многие ответы можно найти, как ни странно, в гугле. Стоит бегло ознакомиться с вики-страничкой, чтобы гуглить было проще.
Берем в руки напильник
По умолчанию ADB недоступен, его надо включать через About this phone → Developer mode. При этом почему-то обязательно просят установить 4-значный код разблокировки экрана или пароль; надеюсь, в будущем добавят что-нибудь типа галки «я знаю, что делаю».
На хосте (рабочем комьютере) нужно будет установить пакет android-tools-adb; также может понадобиться настроить права доступа к USB-устройствам и дописать в файл $HOME/.android/adb_usb.ini
идентификатор производителя (Vendor ID) Meizu (0x2a45).
Можно обойтись и без ADB, подняв SSH-сервер через терминал, и работать удаленно. Приложение Терминал по умолчанию не установлено, но доступно в Ubuntu Store (требуется аккаунт Ubuntu One; к счастью, подошел мой имеющийся логин на ланчпаде). Было бы вообще замечательно, если для бесплатных приложений сразу давали прямую ссылку для скачивания безо всякой идентификации, но пока вот так. Запускаем терминал и пишем:
$ sudo service ssh start
$ sudo setprop persist.service.ssh true
Вторая команда нужна в том случае, если вы хотите, чтобы SSH-сервер запускался автоматически. Обратите внимание: sudo(8)
не спросило пароль, т.е. по умолчанию у пользователя phablet
пароль пустой. Если его установить через passwd(8)
, то придется вводить его при разблокировке экрана. В свою очередь, поставив в системных настойках 4-значный код разблокировки, его же придется вводить и для запуска терминала (на смартфоне), и для sudo(8)
.
Но это еще не все: SSH-сервер пустит вас только по ключу, в чем легко убедиться, посмотрев на команду запуска:
$ ps ax | grep sshd
4282 ? Ss 0:00 /usr/sbin/sshd -D -o PasswordAuthentication=no
4344 ? Ss 0:00 sshd: phablet [priv]
4359 ? S 0:00 sshd: phablet@pts/11
Это радует — аутентификация по паролю должна уйти в прошлое. Как скопировать на смартфон публичный ключ описано по ссылке, и ничем не отличается от стандартной процедуры. К сожалению, WiFi-соединение редко бывает достаточно устойчивым для комфортной работы: случаются лаги, продолжительные залипания, вплоть до обрывов связи.
Запустив терминал, попробовав выполнить несколько команд и убедившись, что это полноценное окружение (а не обкоцанный BusyBox), испытываешь странное ощущение. Больше не нужно задумываться, а есть ли под рукой wget(1)
, rsync(1)
, nc(1)
интерпретаторы Perl или Python — все есть (ну или почти все). А если и нет, то можно поставить как обычно через apt-get
, правда, для этого придется сперва переключить аппарат в read-write режим, или хотя бы перемонтировать корень (ради полного доступа к /var/cache/apt
). Имейте ввиду, что это не поддерживаемый официально режим работы смартфона: в нем не работают автоматические OTA-обновления и вообще, use at your own risk. Не думаю, что поставив несколько leaf-пакетов, мы что-то серьезно поломаем, а вот делать apt-get upgrade
стоит с куда большей осторожностью (если стоит вообще).
Если вы пока не хотите пускаться во все тяжкие, то можете просто скачать интересующий вас пакет через apt-get download
и распаковать его куда вам удобно. Для многих простых программ этого будет вполне достаточно.
Что ж, первым делом разберемся с языком и нормальными часами (т.н. military time) вместо 12-часового AM/PM-недоразумения. Если заглянуть в исходники ubuntu-system-settings, а именно файлик plugins/language/language-plugin.cpp
, можно увидеть, что выбранный язык переводится в локаль и тупо присваивается двум пользовательским свойствам в accountsservice: Language и FormatsLocale. Пока этот баг не пофикшен, мы просто подправим FormatsLocale вручную после установки языка в настройках:
$ dbus-send --print-reply --system --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID
org.freedesktop.Accounts.User.SetFormatsLocale string:ru_RU.UTF-8
$ sudo reboot
Перезагрузка нужна, чтобы изменения вступили в силу. Вот что должно получиться в итоге:
$ locale
LANG=en_US.UTF-8
LANGUAGE=en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
Этим и объясняется забавное несоответствие выбранного и реального языка интерфейса на скриншоте выше. Правда, в прогнозе погоды почему-то все равно остались градусы Фаренгейта.
Bluetooth
Bluetooth поддерживается пока лишь номинально: есть раздел в настройках, и в общем-то на этом все. Даже имя устройства там не поменять. Инициировать pairing с комьютером у меня тоже не получилось (принимать и отвечать на pair request'ы смартфон тем не менее умеет). Передача файлов, как я уже говорил, не реализована. Попробуем хоть немного исправить это незавидное положение.
Временно (до следующей перезагрузки) поменять название устройства можно с помощью утилиты hciconfig(8)
:
$ sudo hciconfig -a hci0 name 'A Better Name'
Чтобы новое имя сохранилось и после ребута, модифицируйте файл /etc/machine-info
(симлинк на /etc/writable/machine-info
) и, по желанию, перезапустите сервис Bluetooth:
$ sudo service bluetooth restart
Обычно для обмена файлами по Bluetooth я использую ноутбук и программу obexapp(1)
. Сначала нужно инициировать pairing с ноутбука (FreeBSD): для этого добавим в /etc/bluetooth/hcsecd.conf
новое устройство с MAC-адресом смартфона и придумаем ему какой-нибудь PIN-код. Так же нам понадобится в ключить аутентификацию, и можно устанавливать соединение (по MAC-адресу или имени, если вы задали таковое в /etc/bluetooth/hosts
):
# hccontrol -n ubt0hci write_authentication_enable 1
# hccontrol -n ubt0hci create_connection mx4
На смартфоне выскочит окошко, где нужно будет ввести наш PIN-код. После того, как устройства обменялись ключами (link keys), принудительную аутентификацию соединений можно отключить.
Файлы по Bluetooth передаются через FTRN (OBEX File Transfer service) или OPUSH (OBEX Push service). На смартфонах под управлением Android обычно второе, здесь же нужно использовать FTRN:
$ obexapp -n -C FTRN -a mx4 put "04 - In Your Room.flac"
35696810 bytes streamed in 968 seconds (36876 bytes/sec)
Файлы заливаются в /tmp
(tmpfs), что меня вполне устраивает. Время модификации при этом не сохраняется, имейте ввиду (если вы mtime-фрик). По сравнению с Samsung Galaxy S3 скорость передачи оказалась в 2-4 раза ниже и не превышала 45 кБ/с. :-(
Окей, заливать (пусть и небыстро) на смартфон файлы мы умеем. А как насчет в обратную сторону? Тут все хуже: скачиваемые файлы оказываются нулевой длины (возможно, проблема на принимающей стороне):
$ obexapp -n -C FTRN -a mx4 get "04 - In Your Room.flac"
0 bytes streamed in 919 seconds (0 bytes/sec)
Проще все-таки передавать файлы через rsync(1)
или scp(1)
.
Hotspot/Tethering
Чего еще очень не хватает в Meizu MX4 — это возможности раздать сотовый интернет через Bluetooth или WiFi: в настройках попросту нет такого пункта, хотя поддержка хотспотов в ubuntu-system-settings появилась довольно давно.
В репозитории есть пакеты hostapd и iw (по умолчанию не установлены), но с вайфаем сразу же вышел облом:
$ iw list | grep -A 3 'Supported interface modes'
Supported interface modes:
* IBSS
* managed
Band 1:
Т.е. AP-режим не поддерживается. Ни один из имеющихся у меня WiFi-донглов (ZyDAS и Ralink) ядро не опознало. С блютусом тоже ничего нахрапом не получилось:
$ sudo modprobe bnep
modprobe: ERROR: ../libkmod/libkmod.c:557 kmod_search_moddep() could not open moddep file '/lib/modules/3.10.35+/modules.dep.bin'
$ lsmod
Module Size Used by
$ ls -l /lib/modules
total 0
$ _
Как делать скриншоты
Ubuntu Touch умеет делать не только скриншоты, но и скринкасты! Для этого обзора я использовал следующие команды (на смартфоне):
$ mirscreencast -n 1 -m /var/run/mir_socket
... несколько строк ругани, это не страшно
$ mv /tmp/mir_screencast_1152x1920_60.85Hz.rgba shotX.rgba
На хосте полученные файлы можно преобразовать в формат PNG, с чем отлично справляется программа convert(1)
из пакета ImageMagick; вот пример склейки трех экранов в одну картинку:
$ convert +append -resize 25% -alpha off -depth 8 -size 1152x1920 rgba:shot{1,2,3}.rgba shot.png
Уменьшенные в четыре раза, они, конечно, потеряли в зрелищности, но уж больно огромное у смартфона разрешение.
Заключение и выводы
Если вам нужен смартфон, в котором все сразу работает «из коробки» и имеется вагон приложений, то Meizu MX4 Ubuntu Edition (во всяком случае в том виде, в каком он находится на момент написания этого текста) вас вряд ли устроит. Фраза «после сборки обработать напильником» в данном случае более чем уместна.
Если же вы привыкли к более-менее полноценному Unix-окружению, хотите иметь полный доступ к файловой системе и сервисам, не переживаете из-за некоторых отсутствующих функций и дефицита программ, зато готовы терпеть (еще лучше, фиксить) баги, экспериментировать, гуглить и читать исходники — то на MX4 стоит обратить внимание, ведь в отличие от кастомных сборок в данном случае мы имеем дело с официальной поддержкой Ubuntu Touch производителем, т.е. есть все шансы на то, что в какой-то момент основные косяки пофиксят, а маркет наполнится хорошими, годными приложениями.
Автор: danfe
Спасибо! Хороший обзор. Сегодня заказал. Придется совершенствоваться вместе с телофоном.