Конкурс 2012. Работа #4

Четвертая конкурсная работа. Посмотрите, кто заглянул на огонек!

Ник: lion_rsm

MiniX + напильник = СЧАСТЬЕ

Здравствуйте, меня зовут lion_rsm и я типичный гик. Я очень люблю всевозможные цифровые гаджеты, от компьютеров до смартфонов, от беспроводных наушников до больших цифровых телевизоров. У меня четыре компьютера, два планшета и смартфон на android, объединенные в одну домашнюю WIFI сеть. И мне этого мало!

В очередной раз размышляя, какую бы еще интересную игрушку прикупить, я наткнулся на новость с интригующим заголовком «Mini X Android TV превратит обычный телевизор в Smart TV». Как ни странно, у меня оказался в наличии действующий ЭЛТ-старичек Panasonic, который просто мечтал превратиться в Smart TV. У панасоника HDMI входа, естественно, не оказалось, но не беда, ведь у него есть композитный AV вход, а у MiniX, судя по картинкам и описаниям, присутствует AV выход. Как оказалось, подружить эти два устройства с разных временных эпох оказалось не так уж легко, но об этом позже.

Мысль о покупке какой-нибудь Android TV Box посещала меня и раньше, но то, что продавалось на тот момент было либо неоправданно дорого, либо своим дизайном вызывало ужас в моем сердце. Но с MiniX все по-другому. Я просто влюбился в это устройство с первого взгляда! Корпус выглядел супер компактным, два USB входа и гнездо Micro SD карточки располагалось на лицевой части устройства, разъем адаптера питания, HDMI и AV выход — на задней части MiniX. Внешняя антенка вызывала экстаз и внушала уверенность в качественном приеме WIFI сигнала. Корпус выполнен из алюминия и окрашен в один из трех цветов: красный, синий или черный. Давайте взглянем на характеристики этого замечательного устройства:

  • Модель: MiniX (H24)
  • OS Android: 2.3 или 4.0
  • Тип SoC: Allwinner A10, 1.0 Ghz with GPU Mali-400
  • Оперативная память: 512 Mb
  • Пользовательская память: 4 Gb
  • Поддержка карт памяти: TF card up to 32 Gb
  • Беспроводная связь: WIFI 802.11b/g/n
  • Видео/аудио интерфейсы: HDMI, AV
  • Другие интерфейсы: 1xUSB HOST, 1xUSB OTG, 1xTF, 1xDC 5V

Характеристики вполне типичные для современных микрокомпьютеров на базе Android. Комплект поставки:

1 x Media player MiniX
1 x Remote controller
1 x HDMI cable (80cm)
1 x Charging adapter (US plug / 120cm cable)
1 x WIFI antenna

Как известно, перед покупкой какого-либо устройства нужно определиться, для каких целей нужно это устройство, какие основные функции оно должно выполнять. В случае с Android TV Box я предъявлял к приставке следующие требования:

  • устройство должно иметь: процессор с частотой не ниже 1 ГГц, RAM/ROM не менее 512 Mb / 4 Гб, WIFI стандарта n и, что само важное, AV выход, для подключения к обычному телевизору;
  • устройство должно с успехом проигрывать по сети мою коллекцию фильмов, располагающуюся на сетевом хранилище. Для этого в приставке должно быть реализовано аппаратное декодирование HD контента;
  • на устройстве должны хорошо работать эмуляторы, так как второй моей слабостью является эмуляция 8-16 битных систем;
  • ну и было бы неплохо иметь андроид 4-й версии, рабочий Google Play Market, возможность поиграть в простые игры вроде Angry Birds или Fruit Ninja.

Smart TV приставка MiniX удовлетворяла меня по всем параметрам (хотя немного огорчало отсутствие Bluetooth), но было очень стремно ее заказывать, так как на тот момент в сети отсутствовали какие-либо отзывы о ней. Были лишь новости с одним и тем же заголовком, фотографиями и странным китайским роликом, демонстрирующем работу MiniX. Но я все же решился заказать, так как любовь с первого взгляда ничем не удержать!

Заказал в одном известном китайском магазине за 78 баксов или около того. Сейчас MiniX вроде бы стоит около 66 баксов, поговаривают что есть версия с 1 Гб RAM а так же есть обновленная версия MiniX Plus. Посылка в виде стандартного конверта с внутренними пупырками пришла спустя месяц. Углы коробки были слегка примяты, что, впрочем, совершенно не повлияло на содержимое.

Я испытал культурный шок, когда впервые открыл коробку. Устройство оказалось не просто маленьким, оно чуть больше спичечного коробка! Положив микрокомпьютер, словно маленький зверек на ладонь, я принялся изучать его. Устройство изготовлено очень аккуратно и качественно, без перекосов, зазоров и заусенец. Передняя панель MiniX была заклеена тоненькой пленочкой. Антенный разъем на устройстве и ответная часть на самой антенне покрыты желтым металлом.

Что касается остального содержимого коробки: у шнура HDMI разъемы были закрыты пластиковыми колпачками (из упаковки не извлекался, поскольку его некуда пихать в ЭЛТ-телевизор), блок питания, судя по маркировке, рассчитан на 2А, вилки плоские поэтому понадобился переходник с американской на европейскую розетку. Китайчики заботливо описали на коробке комплект поставки, указав в том числе и инструкцию, но забыли ее положить. В комплекте отсутствуют батарейки для пульта, пришлось купить их отдельно.

Пришло время протестировать устройство на работоспособность. Сначала я решил проверить MiniX, подключив его по HDMI к кухонному TFT телевизору Samsung. Похолодевшими от волнения конечностями я присоединил к приставке HDMI кабель, блок питания и приемник для беспроводного комплекта клавиатура + мышь, вставил в пульт ДУ батарейки. Воткнул блок питания в розетку, на экране появилась надпись MiniX. Приставка начала загружаться. На устройстве отсутствует какая-либо кнопка включения/выключения, поэтому MiniX включается или перезагружается путем «передергивания» блока питания.

Загрузка длилась больше минуты, поэтому я рекомендую держать устройство всегда включенным, дабы как можно реже испытывать мучительное ожидание загрузки OS Android. Поскольку на момент покупки в продаже еще не было MiniX с Android 4.0, то на моем экземпляре ожидаемо оказался андроид версии 2.3. Оригинальный лаунчер, который хорошо видно на известном китайском ролике, выглядел весьма неплохо и был достаточно простым для управления пультом ДУ. Первым делом я пошел в настройки, и попытался выставить русский язык, но китайская версия русского языка меня сильно расстроила и мне пришлось вернуться на английский.

Пожалуй, основной особенностью прошивки MiniX являются пара дополнительных пунктов меню в настройках для управления выводом изображения на телевизор. В Display output mode есть большой список режимов для HDMI а так же пункты PAL и NTSC, которые задают режим вывода видео через разъем AV. При помощи настройки Screen trimming можно подстраивать размер изображения на экране телевизора.

На прошивке 2.3 стояла древнючая версия Google Android Market. Тем не мение, через нее удалось установить приложение YouTube, MX Player, Antutu benchmark, ES File Explorer, Злые птички и некоторые другие приложения. В тесте Antutu benchmark микрокомпьютер набрал 2700+ попугаев, и расположился в диаграмме баллов между SonyEricsson X10i и Samsung Galaxy S. Результат не самый выдающийся, однако вполне приемлемый для устройства с одноядерным процессором. Злые птички на большом экране выглядели впечатляюще и игрались очень хорошо, поддтормаживания не были замечены.

Видео через приложение YouTube смотрелось нормально, без тормозов. HD видео по сети через MX Player подергивалось и притормаживало. Тогда у меня возникла мысль, что тормоза вызваны либо не работоспособностью аппаратного декодера HD видео, либо малой пропускной способностью моего WIFI. Позже я разобрался с этой проблемой, но об этом ниже. В ходе тестирования стало очевидно, что приставка MiniX под нагрузкой очень сильно греется, однако опыт дальнейшей эксплуатации показал, что устройство не теряет стабильности и работает без каких-либо проблем.

Следующим этапом тестирования была проверка работоспособности основной фичи устройства, из-за которой оно, собственно, и покупалось, а именно AV выхода. Без тени сомнения я воткнул в AV шнурок от Dingoo A320, подключил его к телевизору. В настройках Display output mode выбрал PAL и переключил телевизор на вход AV. Каково же было мое удивление, когда я обнаружил, что сигнал с приставки отсутствует! Помню в тот вечер я перепробовал массу вариантов: и выбирал режим NTSC, и отключал полностью HDMI, и подключал к Panasonic’у, и разбирал MiniX чтобы удостовериться, что разъем нормально распаян — результат был один, сигнал отсутствовал!

Я решил, что возможно в прошивке на Android 2.3 просто не реализована поддержка выхода AV, так часто бывает с китайскими устройствами. На следующий день я немного погуглил и обнаружил прошивку на Android 4.0. В архиве с образом была инструкция по обновлению прошивки MiniX с помошью Micro SD карточки и программы PhoenixCard. Процес оказался весьма простым и прошел гладко, в результате на устройство была установлена «июньская» прошивка Android 4.0. После повторного тестирования обнаружилось, что AV выход по-прежнему не работает. В тот вечер моему горю не было границ! Так MiniX отправился обратно в свою коробку до лучших времен когда я его перепродам или найду другое применение…

…Спустя где-то полтора месяца в сети начали появляться ресурсы, посвященные MiniX. Вокруг приставки начало формироваться сообщество. Вот парочка наиболее популярных ресурсов: https://www.miniand.com/forums/categories/mini-xplus и http://minixandroid.wordpress.com из которых я узнал о сущности проблемы с AV выходом. Причиной всему стал нестандартный разъем AV на плате MiniX. Для этого разъема требуется специальный 3.5 миниджек штекер длиной 17 мм, который практически невозможно найти в свободной продаже (позднее, в обновленную версию MiniX Plus производитель стал докладывать в комплект необходимый кабель). Штекер стандартного AV кабеля, например от динги, имеет длину 14,5 мм и, естественно, не достает до последнего контакта в разъеме. Как на зло, последний контакт как раз и отвечает за видео. Сам производитель устройства находится в недоумении, как такое произошло и где теперь брать «правильные» AV кабеля.

На тех же ресурсах было обнаружено изображение распайки разъема AV, где указано какой контакт за что отвечает. В голове возникло два варианта решения проблемы: первый оптимистичный заключался в том, что я смогу найти нужный мне кабель или хотя бы штекер на местном радио-рынке, второй пессимистичный — в том, что мне придется припаять провода к контактам разъема и вывести их наружу для дальнейшего подключения к телевизору.

Вооружившись скриншотом необходимого штекера, я поехал на местный радио-рынок. Я провел там гребанных полдня и так ничего и не нашел! Проблемой стал даже поиск обыкновенного 14,5 мм 4-х контактного штекера и гнезда. Радио-рынок превратился в какую-то барахолку, где продают мобильные телефоны, старые советские радиодетали и всякий б/у или нерабочий старый хлам. Я был очень расстроен и подавлен, но как-то решать проблему все же нужно было, поэтому я решил прибегнуть ко второму плану. Был куплен провод а так же обычный 4-х контактный разъем миниджек — я решил припаяться к контактам AV разъема MiniX, вывести хвост наружу и припаять к нему обычный разъем миниджек, к которому потом можно будет подключить стандартный AV кабель.

Операция по приживлению «хвоста» к MiniX была хоть и не сложная, но заняла у меня полдня. Вот что получилось в результате:

Подключив приставку к ЭЛТ-телевизору Panasonic и включив ее, я увидел заветную заставку с загрузкой андроида. Изображение присутствовало, звук работал. Моему счастью не было предела! Позже начали проявляться все «прелести» работы приставки на ЭЛТ-телевизоре.

Во-первых, андроид любит «широкоформатное» изображение, поэтому некоторые элементы на экране телевизора из-за соотношения сторон 4:3 выглядели слегка растянуты по вертикали, особенно это касается кастомного лаунчера MiniX. Во-вторых, мой ЭЛТ-телевизор поддерживает только аналоговый сигнал (еще бы, я пока не видел ЭЛТ-телевизоров с HDMI входом) в телевизионных системах PAL 576i или NTSC 480i. Изображение с приставки в таких видеорежимах оказалось очень мелким, текст в самой системе и в приложениях был практически нечитабельный. К тому же, курсор мыши был настолько мелкий, что его с трудом можно было увидеть на экране, даже если истерически дергать мышкой.

Несмотря на очевидные сложности в использовании устройства, я отложил решение проблемы до лучших времен и сосредоточился на тестировании и настройке других аспектов приставки MiniX. Была обновлена прошивка до «июльской» версии Android 4.0. Особых изменений не заметил. Был заново установлен необходимый набор ПО. Так же я пытался определить, какое устройство лучше подходит для управления приставкой. Многие владельцы MiniX жалуются на плохую чувствительность и неудобство использования комплектного пульта ДУ, но для моих приложений и моей модели использования приставки возможностей пульта вполне хватает. В некоторых приложениях, например YouTube, выбранный на экране элемент не всегда подсвечивается рамкой, поэтому в таких случаях лучше пользоваться мышкой. Для ввода текста лучше пользоваться клавиатурой. В общем, не все так просто с управлением. Но, к счастью, в китайских магазинах появилось множество устройств, сочетающих в себе беспроводную клавиатуру и тачпед. Лично для себя я недавно заказал пульт, который помимо клавиатуры имеет на борту Air Flying Mouse (положение курсора на экране зависит от положения пульта в пространстве), а так же имеет ИК-передатчик, который, после обучения, можно использовать для управления как телевизором, так и самой приставкой.

Помучившись какое-то время с мелкими нечитаемыми шрифтами, я решил все таки устранить эту проблему. Где-то из глубины сознания на ум пришли три мысли:

1) размер элементов на экране зависит от заданного в системе DPI (dots per inch);

2) DPI в системе Android задается в системном файле build.prop;

3) Для доступа к build.prop нужны root-права.

Насколько я знаю, в прошивке на базе Android 4.0 для MiniX root-права доступны по умолчанию. Осталось корректно модифицировать файл системных настроек build.prop. Для этого из Google Play Market была установлена замечательная программа BuildProp Editor. Параметр, задающий DPI, называется ro.sf.lcd_dencity. Изначально он имел значение 160. Я поменял его на 320 и перезагрузил приставку. Шрифты стали огромными, включится «телефонный» интерфейс и статус бар переместился вверх экрана, изменив свой внешний вид. Мне удалось добиться своего, но 320 DPI было многовато и я решил выставить промежуточный вариант — 240 DPI.

После перезагрузки обнаружилось несколько интересных моментов. Шрифты стали поменьше, но все еще оставались вполне читабельными. С экрана совсем пропала статусная строка! С одной стороны это плохо: на строке располагались значки нотификейшинов, уровень сигнала WIFI и часы. Но с другой стороны, все видео при проигрывании в Full screen стали занимать всю площадь экрана, и это меня чертовски радует! Сильно изменился интерфейс приложения YouTube. Теперь он выглядит как на планшете Google Nexus 7, т. е. превью роликов стали большими и располагаются в две колонки на весь экран, что позволяет рассмотреть на ЭЛТ-телевизоре эти самые превью. Курсор мыши стал хорошо различим на экране. Количество попугаев в Antutu benchmark подросло до 2800+, хотя это может быть заслугой «июльской» версии прошивки. В общем, с этого момента устройством стало поистине удобно пользоваться, ну а старичек Panasonic таки превратился в Smart TV 🙂

Итак, как же MiniX справляется с возложенными на него задачами? Начнем с проигрывания видео. Как я сказал ранее, приставка должна нормально проигрывать HD контент, передаваемый по сети WIFI из моего NAS хранилища. Хранилище в сети представляет собой несколько папок, доступных по SMB протоколу (расшареные папки Windows). Для этой задачи я всегда использовал программу ES File Explorer. Этот файловый менеджер умеет подключаться к SMB шарам, а так же организовывать HTTP-сервер, если необходимо стримить файл для видео или аудио проигрывателя. Ну и для обычных операций с файлами он вполне пригоден. В качестве видео проигрывателя я предпочитаю использовать проверенный временем MX Player. Одной из многочисленных функций плеера является проигрывание HTTP-стрима.

Как оказалось, MX Player умеет работать с аппаратным декодированием HD, реализованном в MiniX. Нужно просто правильно сконфигурировать настройки декодера видео. Аппаратное декодирование доступно практически для всех файлов в формате MKV, а так же для некоторых в формате AVI. Похоже, что аппаратно декодируется поток H.264. Если по какой-то причине аппаратное декодирование недоступно, то всегда можно воспользоваться софтовым декодером, однако он плохо справляется с HD (720p — 1080p) контентом. Так же плеер поддерживает субтитры и несколько звуковых дорожек. Однако, почему-то звук присутствует только если в настройках выставлено программное декодирование звука. Надо будет еще погуглить на эту тему.

Немного позднее обнаружилась еще одна неприятная мелочь. Некоторые HD видео в формате AVI при проигрывании по сети начинают «заикаться». В ходе следствия было установлено, что виноват во всем ES File Explorer и что такое поведение наблюдается не только на MiniX. Подобные видео имеют относительно большой битрейт, поэтому данные с буфера ES File Explorer читаются быстрее, чем записываются туда из сети. Так же причиной может быть недостаточный размер буфера. Я испробовал еще три файловых менеджера, имеющих функцию стримминга видео, однако указанная проблема в них так же присутствовала. На ум пришел еще один файловый менеджер, которым я пользовался на заре знакомства с системой андроид — File Expert. Через этот менеджер видео застримилось без сучка и задоринки. Я бы сделал File Expert основным своим файловым менеджером, но у него есть существенное ограничение — умеет стримить только AVI файлы, поэтому я оставил его на вторых ролях.

MiniX поддерживает работу с внешними жесткими дисками. Подключенный 2.5″ винт прекрасно работал даже без дополнительного питания. Все фильмы проигрывались без каких либо проблем! Кстати, жесткий диск отформатирован в NTFS, видимо прошивка имеет поддержку данной файловой системы.

Теперь пришло время рассказать о том, как я подключал геймпад к MiniX. Когда-то я задался вопросом подключения геймпадов к устройствам на андроид и узнал о существовании программы USB/BT Joystick Center 6. Как обычно, я пошел на широко известный ресурс, скачал оттуда программу и установил ее на MiniX. Программа оказалась с защитой. Пришлось установить LuckyPatcher, который должен был снять защиту. Но этот патчер стал ругаться на root-доступ, просить установку каких-то дополнительных программ. Конечно я пират еще тот, но не люблю так глубоко закапываться. Решил приобрести программу легально, пошел в маркет и не нашел ее там. Видимо, из под MiniX эта программа не видна в маркете. Вот и замкнулось кольцо! Интуиция подсказала, что на программу USB/BT Joystick Center 6 нужно забить, что я незамедлительно и сделал.

Решил зайти с другой стороны. Насколько я знаю, большинство, если не все эмуляторы на андроиде позволяют использовать для управления клавиатуру. Стало быть там можно назначить клавиши для управления. Возможно, подключенный к USB геймпад видится как обыкновенное HID-устройство и его кнопки так же можно назначить для управления. Из широко известного ресурса был на халяву скачан и установлен эмулятор NES.emu. Это весьма неплохой эмулятор от моего коллеги по цеху Robert Broglia. Роберт, так же как и я, использует собственный фреймворк как платформу для целой серии эмуляторов. Это обеспечивает одинаковый GUI и ускоряет разработку новых эмуляторов. Советую посетить его веб-сайт http://www.explusalpha.com.

Так вот, геймпад заработал еще в меню эмулятора. Хороший знак! В разделе Input/Player Mapping появился пункт Keyboard/HID Gamepad 1. Далее я пошел в раздел Options -> Input -> Key Config -> Gamepad Controls и настроил соответствие кнопок виртуального джойстика кнопкам реального геймпада. В качестве геймпада я подключал: проводной Logitech Rumblepad 2 и беспроводной Logitech Wireless Gamepad F710 — оба прекрасно работали в любом из двух USB входов, все доступные на геймпаде кнопки можно было настроить для управления. Для более комфортной работы настройки эмулятора были изменены следующим образом:

1) Options -> Video -> Aspect Ration = Full Screen.
2) Options -> Audio -> Sound Rate = 22KHz (на телевизоре нет разницы между 22 и 44KHz, зато быстродействие выше).
3) Options -> Input Options On-screen Controls = Off.
4) Options -> Key Input = по своему вкусу.
5) Options -> GUI -> DPI Override = 240.
6) Input/Player Mapping -> Keyboard/HID Gamepad 1 = 1.

Позднее выяснилось, что управление в играх хоть и отзывчивое, но имеет небольшую задержку. Так же я обнаружил, что эмулятор прекрасно видит сразу два HID Gamepad, но существует только один набор Gamepad Controls, соответственно настроить управление можно только на один геймпад. Я как-нибудь соберусь с силами и опишу Роберту проблему, возможно он ее решит в будущих версиях.

Сами же игры работают прекрасно, быстродействия MiniX вполне хватает для эмуляции 8-16 битных консолей. Системы посерьезней я не пробовал, так как не испытываю к ним особой нежности. В дополнение к эмулятору NES.emu я так же установил MD.emu, Snes9xEX, NEO.emu и PCE.emu. Я уверен, что на приставке будут работать и другие эмуляторы, но вышеприведенные мне нравятся больше всего. Атмосферу дополняет настоящий ЭЛТ-телевизор, на котором картинка выглядит почти так же, как в старые добрые 90-ые. Для достижения полной аутентичности можно прикупить Buffalo USB Nintendo PC Game Pad или Buffalo USB Super Nintendo PC Game Pad 🙂 Чертовски приятно после тяжелого рабочего дня взяться за давно любимые игрушки вроде Марио, Контры или Танчиков, сыграть несколько матчей в Blades of Steel, помахать кулаками в Comix Zone или ногами в Mortal Kombat! А сколько еще игр не пройдено, сколько еще нового можно познать в мире 8-16 бит!!!

В заключение хочу сказать, что MiniX — это просто замечательный микрокомпьютер с сексуальным дизайном и крайне привлекательной ценой! Да, наверняка у многих из вас есть что-нибудь вроде Dingoo или Ritmix или какая-то еще китайская портативная приставка, которую можно по AV подключить к телевизору. Но MiniX уникальна тем, что похожа на настоящую приставку, только маленькую и многофункциональную…

Ссылки с дополнительной информацией по MiniX:
http://www.pineriver.cn/eshowProDetail.asp?ProID=1531
http://mysku.ru/blog/dealextreme/8487.html
http://mysku.ru/blog/others/8723.html
https://www.miniand.com/forums/categories/mini-xplus
http://minixandroid.wordpress.com
http://4pda.ru/forum/index.php?showtopic=360548
http://forum.china-iphone.ru/viewtopic.php?t=20735

Эта статья прислана на конкурс.

ОБСУЖДЕНИЕ