Помните мою статью про историю моддинга и аппаратную платформу Motorola E398? Если ещё не читали, то рекомендую ознакомиться. А тем временем у EXL нашёлся редчайший прототип E398, который работал на Linux! Если интересно почитать его историю - жду вас под катом.
Что за девайс?
Прототип, разработанный в 2003-2004 году, на первый взгляд представлял из себя самый обычный E398 (также известный как D398 или E399) с немного измененным дизайном. Отличия по большей части минорные: немного другая форма клавиатуры, синий цвет корпуса и кнопка меню, которая больше напоминает оную из C350.
На самом же деле, это корпус от раннего прототипа E398, который разрабатывался параллельно с Linux-моделью:
Однако при включении этого экземпляра, нас встречает не классическая заставка Hellomoto, а загрузчик, который радостно сообщает о запуске AP-процессора...
Что такое AP-процессор?
В обычных телефонах для работы всего устройства достаточно лишь одного процессора - так называемого Baseband'а. Чаще всего это один чип, который содержит в себе одно ядро общего назначения - например ARM7TDMI, которое занимается задачами отрисовки интерфейса, высокоуровневой работой с GSM-стеком и обработкой AT-команд, и вспомогательное ядро DSP, в задачи которого входит низкоуровневая работа с сетью, кодирование/декодирование звука и иногда некоторые другие задачи. Baseband-процессоры всегда работают исключительно на RTOS, поскольку при работе с GSM-стеком необходима гарантированная и строгая по времени выполнения реакция на события в сети.
В смартфонах же всё работает чуточку по другому: там задача запуска операционной системы, пользовательских программ и обработка ввода ложится на отдельный Application-процессор. На нём можно использовать любую операционную систему, включая по большей части не-реалтаймовые по типу Linux, Windows NT и Windows CE. Однако в смартфонах Baseband-процессор всё равно присутствует, только теперь он подключен к AP-процессору через шину по типу UART (в современных шин несколько, а сам Baseband переехал в основной SoC).
После этого, телефон показывал логотип MontaVista Linux и загружал самый обычный рабочий стол, почти как в E398... Но это только на первый взгляд!
Дело в том, что у Motorola существовало сразу несколько программных платформ для телефонов:
Знакомый нам P2k, который использовался в основной линейке телефонов компании.
Motorola EZX, который был построен на базе дистрибутива MontaVista Linux и UI-фреймворка Qt с кастомной оконной системой. Эта платформа встречалась в флагманских устройствах компании с 2003 по 2007 год: Moto E680, Moto A1200 Ming, Moto A780, Moto ROKR E2 и ROKR E6.
MotoMAGX, который также был построен на базе дистрибутива MontaVista, только уже под названием Mobilinux. Как и EZX, MotoMAGX использовала Qt в качестве UI-фреймворка, но изнутри значительно отличалась от EZX и предназначалась для флагманских телефонов Moto вышедших в 2007-2009 годах: RAZR2 V8, EM30, ZN5.
JUIX, который по сути света так и не увидел. Это была промежуточная разработка между EZX и MAGX на без той-же самой MontaVista, однако теперь вместо Qt использовалась Java, а весь интерфейс и окружение были написаны с использованием профиля CDC (урезанная Java 1.3). По сути, это была некая попытка написать Android ещё до самого Android, только с заделом сразу под кнопочные устройства и без возможности лицензирования...
И этот прототип как раз использовал раннюю версию JUIX. Однако несмотря на то, что внешне телефон кажется полностью функциональным, у него вообще не работали кнопки навигации. Скорее всего, инженеры Motorola просто не успели написать драйвер для обработки клавиатуры, поэтому EXL написал небольшую программу для проброса ввода через telnet:
Но как вы понимаете, у раннего прототипа особо никакого функционала и не было, а проект довольно быстро отменили. Но самое интересное скрывается у него внутри. На первый взгляд кажется, что у прототипа с серийными телефонами нет никаких отличий:
Однако если присмотреться, то можно заметить что вместо слота MicroSD выглядывает какой-то чип... И при ближайшем рассмотрении оказывается, что это не просто какая-то eMMC-флэшка, которую повесили на MMC-шину устройства, а тот самый AP-процессор! Причём сама аппаратная платформа осталась до боли знакомой: в качестве Baseband'а используется всё тот же Neptune LTE, практически вся схемотехника идентична оригинальному устройству, однако в телефоне отсутствует чип, отвечающий за Fun lights и вместо него разведен отдельный драйвер подсветки дисплея.
Поскольку это прототип, Neptune LTE здесь сразу же установлен инженерный и следовательно загрузчик устройства разблокирован с завода. Однако в его модификации смысла нет, так как P2k здесь не используется, да и пока неизвестно есть ли что-то на микросхеме его Flash-памяти.
Зато AP-процессор здесь очень даже знакомый! Это легендарный Intel PXA272, который также использовался в других Linux-телефонах Motorola на платформе EZX, как, например, A1200 Ming, а также в подавляющем числе Windows Mobile смартфонов. По своей сути, это один из самых мощных мобильных процессоров тех лет, который применялся в флагманских КПК и коммуникаторах. Внутри него скрывается:
Одно вычислительное ядро Intel XScale, реализующее набор инструкций ARMv5. Да, когда-то Intel не просто выпускала ARM-процессоры, но и разработала свою собственную микроархитектуру, отличную от ядра ARM9. XScale способен работать на частоте до 624МГц (это огромная частота и MIPS по меркам телефонов тех лет, процессор мало в чём уступал пока ещё не совсем устаревшим младшим Pentium III), использовал относительно короткий 7-ступенчатый конвейер инструкций (для сравнения, P III имел около 10 стадий, P4 - аж 20-30 стадий в зависимости от ядра, что его значительно замедляло из-за "сломанного" Branch Prediction), имел 32КБ кэша инструкций и 32КБ кэша данных и поддержку одного из первых мобильных SIMD - набор инструкций Wireless MMX (за ~7-8 лет до массового появления NEON в смартфонах). Однако у PXA был и минус - не было FPU, поэтому все операции с плавающей точкой были относительно медленными.
32 или 64 мегабайта NOR-памяти по технологии Intel StrataFlash, плюс 32 или 64 мегабайта SDRAM-оперативной памяти прямо на борту процессора! Да, бутербродные процессоры придумали задолго до Qualcomm, только раньше в них ещё и Flash устанавливали :)
Контроллеры USB (включая хост), AC97, I2S, I2C, SPI, UART, SD/MMC, ШИМ и GPIO.
Контроллер дисплея. С ним связана отдельная особенность в E398.
И всё это построено по техпроцессу ~130нм!
Если вы читали статью о E398, то могли узнать, что телефоны на платформе Neptune LTE использовали отдельный GPU ATi Imageon, поскольку процессор работающий на частоте 52МГц, не вывозил отрисовку графики своими силами. В этом прототипе необходимость в нём отпала, поскольку контроллер дисплея в XScale напрямую умеет работать с параллельными RGB-матрицами и способен быстро отрисовывать графику самостоятельно. Именно поэтому я сказал что дисплей в E398 носит явные коммуникаторные корни!
По итогу у EXL получилось хакнуть устройство, портировать на него и SDL и запустить Doom. Результатами он пока ещё не поделился... Но факт остаётся фактом, если E398 Linux Edition вышел бы в свет, он мог потенциально стать не менее популярным гиковским устройством. Но увы, в стенах R&D-лабораторий компаний погибает множество интересных и перспективных устройств, отправляясь в шреддер или по счастливой случайности попадающие в руки гиков.
Так и получилось с этим прототипом, который EXL'у подарил бывший сотрудник подрядчика Motorola в России - компании Telma в Нижнем Новгороде. Приятно знать, что немалую часть в разработку E398 вложили именно в России :)
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Если вам понравилась статья и вы хотите меня поддержать, у меня есть Boosty, а также виджет на Пикабу ниже. А ещё мне можноотправить какое-нибудь интересное железо: устройства на WinCE/WinMobile, китайские кнопочники, китайские подделки на iPhone/Samsung из начала 2010-х, ретро-ПК железо - всё это я очень люблю :) Всем огромное спасибо!
Год назад на просторах маркетплейсов появилась невиданная ранее диковинка — ретро-консоль с Linux на борту под немудреным названием R36s. На первый взгляд кажется что это очередная нонейм-консоль собранная из неликвидных комплектующих, однако при детальном рассмотрении выясняется, что это очень мощный гаджет не только для любителей ретро-игр, но и для гиков!
Сейчас консоль стоит на маркетплейсах всего 1.800 рублей. Но если бы всё так было просто... Если вам интересно узнать, откуда в 2025 году взялся 2х-ядерный MIPS с частотой 1ГГц, что представляет из себя R36s на практике и как не запутаться в великом множестве ревизий — жду вас под катом!
Предисловие
Портативные игровые консоли с Linux на борту берут своё начало с 2000-х годов. Изначально это были относительно дорогие малотиражные гаджеты, созданные исключительно для гиков, а их стартовая библиотека игр была слишком мала для рядового геймера. Однако мощное железо, наличие свободного SDK и возможность запускать любое хоумбрю привлекали энтузиастов со всего света — и сообщество не только разрабатывало новые игры «с нуля», но и портировало эмуляторы и игры с других платформ. Одной из первых таких консолей была известная в узких кругах GP2x от корейской компании GamePark Holdings:
GP2x во всей красе!
Однако GP2x, как и её последователи, так и осталась исключительно гиковским гаджетом не получив широкого распространения. С одной стороны на это повлиял малый рынок сбыта (США, Корея и ещё некоторые страны), с другой — консоль стоила слишком дорого, целых 190$. За 250$ можно было купить уже PSP 1000 — которая была не только в разы мощнее, но ещё и предоставляла куда более обширный мультимедийный функционал. Ближе к 2007 году, в Китае случился бум мощных мультимедийных чипсетов (SoC) от локальных чипмейкеров, благодаря чему практически каждую неделю выходили новые модели MP4-плееров. Помимо базового функционала просмотра видео и прослушивания музыки, производители добавляли возможность читать электронные книги, снимать фото на встроенную камеру и даже играть в игры...
И вот с играми у таких консолей всё было хорошо. Дело в том, что чипсеты в этих плеерах обычно базировались на современном и мощном для тех лет ядре ARM926EJ-S, которое свободно работало на частоте от 104 до 208МГц. Помимо этого, в таких чипсетах был достаточно продвинутый контроллер дисплея, который позволял не только выводить фреймбуфер на ЖК-матрицу, но и быстро рисовать примитивы по типу линий и прямоугольников, а также копировать изображения на дисплей (BitBLT). Покумекав, китайцы поняли — если MP4-плееру приделать игровые кнопки и портировать туда эмулятор NES, то он становится вполне полноценной портативной ретро-консолью. Учитывая что встроенная память позволяла загрузить почти весь ромсет NES, это были почти ультимативные устройства для ретро-гейминга!
Это было гениально... И ведь эта консоль появилась за 3 года до PSP Go! Иронично что эта модель выпускалась также под брендом Sony (как клон).
Но такие устройства все равно стоили достаточно дорого. Qumo GameBox LE на фото выше стоил около 4.000 рублей в московской рознице по состоянию на 2008 год и поэтому был по карману далеко не всем. Однако всё изменилось, когда в феврале 2009 года, малоизвестная китайская компания Dingoo представила свою первую ретро-консоль — A320, по цене всего лишь в 70$. Консоль стала настоящим бестселлером: уже из коробки она предлагала возможность играть в игры с GBA, NES, Neo Geo, SNES и Sega Mega Drive, а также функционал полноценного плеера. A320 был удобен в использовании, у него был неплохой 2.4 дисплей с приличным разрешением в 240x320, да и с точки зрения эргономики консоль очень хорошо ощущалась в руках.
Однако главной особенностью Dingoo A320 была отнюдь не цена или форм-фактор кирпичика, а используемый чипсет. Дело в том, что одним из чипмейкеров, который посодействовал буму мультимедийных чипов, была китайская компания Ingenic. В отличии от конкурентов, её чипсеты использовали MIPS-совместимое ядро собственной разработки под названием XBurst, которое могло работать на частоте аж до 400МГц. Ingenic была публичной компанией и поэтому предоставляла доступ к своему ftp-серверу с даташитами, схемами на референсные платы, а также портами Windows CE/Linux всем желающим. В какой-то момент испанский инженер Игнасио Гарсиа заметил схожесть платы консоли с одной из референсных плат (Caetus) и смог успешно запустить ядро Linux от рефборды. Вот тут всё и началось...
После написания драйвера ввода и дисплея, Игнасио опубликовал гайд по установке Dingux, после чего на A320 начали портировать софт с GP2x и других консолей. Маленький кирпичик за 70$ не только научился эмулировать даже весьма экзотические платформы, но и обзаводился своими собственными играми. Сообщество поддерживало A320 даже спустя 4 года после релиза...
Итогом стало появление Ritmix RZX-50 — игровой консоли с Dingux на борту.
Но время шло, Android становился всё популярнее, а портативный гейминг понемногу «переезжал» в смартфоны и планшеты. Здесь китайские производители тоже были на шаг впереди и на базе бюджетных планшетных чипсетов начали выпускать игровые консоли, представляющие из себя эдакий планшет с стиком и кнопками. Цена и функционал таких устройств снова поражали: уже в 2012 году, за ~150$ можно было получить игровую консоль с 7"-дисплеем, одноядерным 800МГц-процессором, видеоускорителем Mali-400, 512МБ оперативной памяти и Wi-Fi модулем. И вот тут то Dingoo A320, как и её бесчисленные клоны, начали отходить на второй на план...
Однако было ещё несколько попыток сделать Linux-консоль. Самой перспективной была GCW Zero с Kickstarter, которая использовала куда более мощный чипсет Ingenic JZ4770 с видеоускорителем Vivante GC960... Но увы, консоль постигла та же участь, что в 2005 и GP2x. Рынок портативных Linux-консолей спал примерно до 2019 года — пока не появились реинкарнации GCW-Zero в виде Retro PocketGo V2 и Anbernic RG-350. Эти консоли — немного доработанные ревизии оригинальной GCW Zero с Type-C вместо MicroUSB. А уже к 2020 году начали появляться консоли на базе чипсетов AllWinner F1C100s и RK3326, и индустрия портативного рейтро-гейминга заиграла новыми красками!
Как итог — на рынке появилось множество брендов по типу Anbernic, Miyoo и Data Frog, в бюджетном сегменте все они продают +- похожие консоли, аппаратную часть которых предположительно разрабатывает и производит одна и та же компания. Сначала эти консоли стоили около 100$, затем стало возможным найти вариант за ~75$, а теперь — так вообще за 23$ или 1.800 рублей! Но всё ли так просто? Для проверки я приобрел 3 вида R36s: «клон» на MIPS-процессоре от подписчика под ником Avia, новую консоль за 1.800 рублей с Ozon и ещё один «как-бы клон» R36s у подписчика Романа. Давайте же узнаем что у них находится под капотом!
Отделяем котлеты от мух
Взгляните на фото ниже. На первый взгляд кажется, что в руке лежат две абсолютно одинаковые консоли. Однако если присмотреться внимательнее, то можно заметить различие в форме крестовины...
Особо внимательные читатели могут обратить внимание на разную обвязку вокруг 3.5мм разъёма.
С обратной стороны отличия становятся очевидными. Дело в том, что консоль слева — это клон, причём собранный практически на той же самой компонентной базе, что и оригинал. Дисплей, стики, кнопки — всё используется точно такое-же, как и на оригинальном устройстве. Даже трассировка платы местами идентична, однако у них есть одно очень важное отличие.
Оба устройства собраны весьма добротно и более того — достаточно ремонтопригодны. Разбираются они очень просто: достаточно лишь открутить шесть винтиков по периметру устройства, отключить аккумулятор и вытащить заднюю часть корпуса.
На этом фото клон расположен справа.
И вот здесь то мы и видим главное отличие: при общей схожести обеих плат, в клоне используется экзотический процессор в корпусе LQFP вообще без какой-либо маркировки. При детальном рассмотрении оказывается что это не просто какой-нибудь ARM-чипсет в духе AllWinner F1C100s, а настоящая экзотика — HiChip C3100 с MIPS-ядром, работающим на частоте аж до 1ГГц! К сожалению детали реализации неизвестны, но скорее всего используется либо лицензированное ядро Ingenic XBurst II, либо HiChip разработали что-то своё.
C3100 представляет из себя систему на кристалле с контроллером DDR3 памяти и большим количеством самой разной периферии по типу I2C, I2S, SPI, UART, USB и eMMC. Однако в отличии от оригинальной консоли, у чипсета нет полноценного GPU, из-за чего мы лишаемся поддержки 3D-игр, а также шейдеров в эмуляторах. Зато в отличии от оригинальной консоли, у C3100 есть поддержка HDMI и даже NTSC/PAL!
В остальном же, элементная база у клона стандартная для устройства подобного формата. Чуть ниже процессора распаяна SPI-флэшка 25-ой серии, на которой содержится загрузчик ОС и предположительно ядро. Ближе к динамику расположилась неизвестная микросхема-усилитель звука, а два чипа с нижней части платы — это I2S ЦАП TM8211, который отвечает за воспроизведение звукаи чарджер литий-ионных аккумуляторов ETA9740.
С обратной стороны платы можно найти один единственный чип памяти Samsung K4B2G1646E-BCK0 типа DDR3 и объёмом всего в 256МБ.
Как же отличить клон от оригинала? Да очень просто: достаточно лишь вытащить MicroSD-карту с ОС и если устройство при включении попросит вставить карту памяти — значит это клон на MIPS-процессоре. Но если вы фанат гаджетов на необычном железе — рекомендую всё же оставить такой интересный экземпляр себе!
Оригинальная консоль конструктивно практически не отличается за исключением используемых моделей чипов. Здесь всё также используется усилитель TCS7191A, а в качестве чарджера выступает микросхема 4057AN (да, брат той самой TP4056!), при этом необходимости в отдельном ЦАПе уже нет. Но вот железо — уже совершенно другого уровня!
В качестве сердца устройства, здесь выступает чипсет Rockchip RK3326, который состоит из четырех ядер Cortex-A35, работающих на частоте до 1.5ГГц, видеоускорителя Mali-G31 с поддержкой Vulkan, а также контроллеров различной периферии — SPI, I2C, UART и MIPI. В тандеме с ним работают два чипа DDR3-оперативной памяти Micron D9SHD (MT41K256M16TW-107), каждый объёмом в 512МБ. Как и в случае с клоном, постоянной памяти у устройства нет — предполагается использование двух MicroSD карт памяти: первая с системой и встроенным паком игр, а вторая — на усмотрение пользователя.
Как я уже говорил ранее, дисплеи на устройствах одинаковые — это 3.5" IPS-матрица с разрешением 640x480 и интерфейсом MIPI DSI, однако контроллеры у разных ревизий отличаются. Дело в том, что заказывая замену на AliExpress или используя дисплей от донора, у вас есть все шансы получить белый экран или артефакты. Решается это относительно просто: достаточно лишь найти подходящий dt-оверлей с корректно-прописанным контроллером дисплея и подкинуть его на карту памяти.
В качестве аккумулятора обе консоли используют литиевый элемент ёмкостью в 3.500мАч. Вполне неплохо!
Не меньший интерес вызывают и стики. Внимательные читатели могут приметить их сходство с оными для Nintendo Switch и как показывает практика, они полностью подходят и для консоли от Nintendo. Тактильно они удобные, но лично мне стики в геймпаде Xbox 360 нравятся больше.
Однако даже если вам попалась ревизия на RK3326 — это не повод сразу же радоваться. Дело в том, что на маркетплейсах продаётся ещё одна вариация R36s (предположительно просто другая ревизия), где объём оперативной памяти сокращен вдвое — с 1ГБ до 512МБ. Её можно опознать и без разборки устройства: если у вас версия с прозрачным корпусом, то один чип памяти - прямой признак «клона».
В целом, оба устройства конструктивно очень простые, их легко диагностировать и в случае поломки — отремонтировать. Не удивлюсь если через годик-два будет популярна тактика покупки нерабочей консоли за 300 рублей, замены чарджера на такой-же копеечный чип и дальнейшей перепродажи за 1.000-1.500 рублей...
Тестируем
В комплекте с консолью идёт MicroSD карта памяти объёмом 64ГБ с операционной системой и набором ромов. Важно сразу же подключить флэшку к ПК и скопировать все файлы из корневого FAT32-раздела: производитель использует отбраковку, которая даже в режиме «только чтение» умудряется полностью сыпаться и «кирпичить» консоль. В случае если у вас нет бэкапа — поищите подходящий dtb, ядро или попробуйте поставить прошивку от K36s — у этих консолей огромное коммьюнити и всевозможные бэкапы уже есть в сети.
В зависимости от установленной прошивки, вас могут встречать два вида меню: EmuELEC на MIPS-клоне и ArkOS на оригинальном устройстве. Прошивку всегда можно обновить, скачав образ вот здесь. Есть и другие кастомные прошивки — на любой вкус!
Слева консоль с свежей ArkOS 2.0, справа — с чуть более старой ArkOS.
Конечно-же «эмуляторным» сердцем консоли выступает RetroArch. В комплекте с каждым дистрибутивом предустановлено огромное количество ядер самых разных систем: от классических NES/SMD/Neo Geo, до экзотики по типу Amstrad и даже сложных для эмуляции консолей по типу N64 и PSP. Помимо эмуляторов, в консоли предустановлен рантайм Pico-8 (платформа предлагает современные игры в ретро-стилистике, написанные на Lua), а также есть возможность установки других нативных приложений как, например, reVC для игры в GTA: Vice City!
За свою цену, консоль показывает себя в играх просто прекрасно. Её даже нельзя сравнить с устройствами 2020-2022 года по типу Powkiddy X12, она лучше них вообще во всем. Классические платформы по типу NES и SMS консоль эмулирует прекрасно: лагов нет, нагрев минимален, а благодаря сочному дисплею с соотношением сторон 4:3, игры ощущаются почти также, как в свое время на CRT-телевизорах (с поправкой на отсутствие сглаживания, конечно. Но при желании можно включить соответствующий CRT-шейдер).
Тоже самое касается и консолей потяжелее. R36s свободно тянет любое игровое устройство до PlayStation 1 включительно и благодаря хорошему ромсету, можно долгие часы залипать в классику по типу Crash Bandicoot. У консоли всё очень даже неплохо с 3D, единственный момент — хоть GPU и поддерживает Vulkan, в самой системе libvulkan нет, только GLES 3.0.
Даже с играми для Nintendo DS консоль показывает себя в лучшем свете. Есть специальная кнопка для переключения дисплеев, плюс виртуальный курсор для эмуляции стилуса. В New Super Mario играть одно удовольствие.
А вот реальные проблемы начинаются уже с PSP при игре в нативном разрешении, причём даже с пропуском софтовых эффектов. Если в кадре есть ощутимый Overdraw — игра начинает жутко тормозить и при этом у меня есть большие сомнения, что Mali G31 не тянет сцены уровня PSP. Но учитывая что у PSP был аппаратный вершинный конвейер, навряд-ли здесь упор в процессор...
Да уж... до чего дошёл прогресс, полноценная Linux-консоль с «трушным» квадратным IPS-дисплеем и достаточно мощным чипсетом стоит всего 1.800 рублей. Для кого-то эти устройства покажутся одноразовым мусором, однако на практике R36s — чудо инженерной мысли!
По понятным причинам ссылки на устройства прикладывать не буду, однако если захотите такую консоль себе — сможете без проблем найти их на маркетплейсах.
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Если вам понравилась статья и вы хотите меня поддержать, у меня есть Boosty, а также виджет на Пикабу ниже. Всем огромное спасибо!
В наше время сложно себе представить человека, который носит смартфон с аппаратными кнопками. Всего каких-то 15 лет назад, Nokia E72 считался эталоном быстрой и удобной печати на смартфоне, однако даже он уступил место экранной клавиатуре и Swype. Я с таким положением дел не согласен и продолжаю повседневно пользоваться смартфоном с аппаратной QWERTY-клавиатурой...
Но тот гаджет, что я совершенно случайно купил в Китае за 1.500 рублей, просто перевернул моё представление о QWERTY-клавиатурах в смартфонах и о таком забытом классе устройств, как коммуникаторы. И да, он действительно выполнен в форм-факторе ноутбука!
❯ Предисловие
У смартфонов с QWERTY-клавиатурами сложилась довольно сложная судьба. Сначала они были устройствами бизнес-класса и просто имиджевыми моделями, затем они стремительно подешевели и стали главными гаджетами для общительной молодёжи, ну а в какой-то момент стало возможным купить телефон с полноценной клавиатурой менее чем за 100$.
Пик QWERTY-устройств пришелся примерно на 2008-2011 годы, когда новые гаджеты представляли чуть ли не каждую неделю. Тут тебе и легендарный бизнес-коммуникатор Nokia E71/E72 (2008/2009), и один первых производительных Android-смартфонов Motorola DROID (2009), и необычный BlackBerry 9800 (2010), сочетающий в себе вертикальный QWERTY-слайдер с большим дисплеем, и конечно легендарный миниатюрный Sony Ericsson Xperia Mini Pro (2011).
Я и сам стал фанатом телефонов с полноценными клавиатурами ещё со времён школьной скамьи. В те годы китайские ODM-производители частенько копировали дизайн моноблоков Nokia и BlackBerry, нередко даже с такими характерными фишками, как трекбол и оптический джойстик. В 2011 году один из таких «китайцев» в лице Fly Q115 достался и мне! Модель была самой бюджетной в этом классе и не умела запускать какие-либо сторонние приложения, но всё равно практически полностью покрывала нужды школяра в мультимедийном плане, а также в общении и серфинге WAP-сайтов... Именно этот маленький гаджет когда-то привил мне любовь к устройствам с полноценными клавиатурами!
К 2012 году, рынок QWERTY-устройств начал уменьшаться. Смартфоны стремительно дешевели, диагональ дисплеев росла, а емкостные тачскрины с мультитачем полностью заменили аппаратные клавиатуры. Даже такой мастодонт как BlackBerry принял решение о разработке смартфона без клавиатуры — Z10, который в конечном итоге и станет одной из причин закрытия мобильного подразделения. К 2015 году, на рынке практически не осталось QWERTY-смартфонов кроме BlackBerry и редких китайцев...
Passport когда-то продлил жизнь BlackBerry, но не смог спасти её от краха
Ну как редких? Мы ведь все знаем, что на азиатском рынке котируются совсем иные гаджеты и там, к примеру, кнопочные смартфоны вообще не выходили из моды. Раскладушки с двумя AMOLED-дисплеями и флагманским железом? Пожалуйста — Samsung W-серии и устройства от Sharp/NTT DoCoMo. Простые кнопочные моноблоки с крутыми IPS-матрицами высокого разрешения и железом среднего ценового сегмента? Miwang M2s и позже Xiaomi Qin. Об игровых смартфонах с аппаратными кнопками я уже не раз рассказывал на Хабре. Даже QWERTY-моноблоки от Unihertz — и те по заказу разработаны китайским вендором A-Gold.
Поскольку я большой фанат BlackBerry Passport, моим основным смартфоном сейчас является оригинальный Unihertz Titan. Однако я всё равно продолжаю собирать в коллекцию необычные QWERTY-устройства и исследуя китайские барахолки наткнулся на ультимативный гаджет от бренда Dion, который поверг меня в шок... Мало того что это смартфон в форм-факторе ноутбука, так ещё и с емкостным тачскрином, оптическим трекпадом и... телевизором.
Конечно я не смог устоять и купил его по весьма приятной цене в 1.500 рублей. Гаджет помог мне привезти подписчик Роман и сервис YouCanBuy, за что им огромное спасибо!
❯ Осматриваем
На первый взгляд может показаться, что смартфон в форме ноутбука это громоздко и неудобно. На самом деле это не так: Dion на практике даже несколько компактнее многих современных смартфонов и при всём этом, его толщина находится примерно на уровне бронированных гаджетов с ёмкими аккумуляторами. Единственный момент — он довольно тяжеленький и весит около 400 грамм... Но меня, как фаната Unihertz, это ничуть не смутило :)
Сама по себе концепция устройства не нова: в 2008 году, Toshiba совместно с ODM-производителем TechFaith представила весьма неоднозначный Portege G910. Модель обладала большим дисплеем с высоким по меркам тех лет разрешением, сканером отпечатков пальцев, мощным чипсетом Qualcomm MSM7200, а также внешней OLED-матрицей для уведомлений и кнопками для управления в закрытом виде.
Сорян, я практически не умею фоткать на зеркалки... поэтому в кадре видна только перхоть)
На верхней части Dion расположилась глянцевая крышка с логотипом компании, а также отдельным светодиодом для индикации уведомлений и статуса зарядки. В отличии от G910, дополнительного дисплея здесь нет, а кнопки управления звонком расположились с торцевой части устройства, причём отдельно для первой и второй сим, а также для сброса звонка. Из разъёмов здесь только MiniUSB и 3.5мм джек по бокам устройства — никаких излишеств с док-станциями!
И вот, когда мы открываем крышку гаджета — нас встречает самое главное достоинство устройства: полноценная мембранная QWERTY-клавиатура с ноутбучным ходом клавиш. Они не только тактильно ощущаются абсолютно также, как и на полноценном ноутбуке, но даже имеют схожие размеры — на первый взгляд кажется, что это идеальный гаджет для общения и системного администрирования!
Несмотря на наличие «стрелок», чуть выше клавиатуры скрывается оптический 5-позиционный трекпад, который можно ещё и нажать. По своей натуре он выполняет функции курсора, однако в системе привязан к аппаратному джойстику и предназначен для навигации по пунктам меню. Решение логичное: в те годы, некоторые Android-разработчики закладывали поддержку джойстиков/трекболлов в свои игры и приложения, но забывали о стрелках клавиатуры, да и тактильно трекпад ощущается куда лучше, чем просто тач или кнопки клавиатуры!
❯ Включаем
После включения, нас встречает вторая крутая фишка гаджета: большая и качественная TFT-матрица приличного разрешения, а также емкостной тачскрин с поддержкой мультитач. Далее мы видим рабочий стол ностальгической Android 2.2, который я лично считаю эталоном мобильного UX. Лаунчер немного адаптирован под необычный форм-фактор устройства, однако во всём остальном это обычный чистый AOSP, но почему-то с предустановленным Play Market.
На первый взгляд система работает довольно шустро, однако в сети информации о Dion нет даже в поисковике Baidu, поэтому узнавать характеристики гаджета мы будем прямо на самом устройстве. Устанавливаем эмулятор терминала и в путь... Ой, а ведь здесь root есть прямо из коробки. Как неожиданно и приятно (для гика)!
Изучив служебные файлы в директории /proc/, я узнал что Dion работает на редчайшем процессоре Marvell XScale PXA930 с одним ядром собственной микроархитектуры Marvell Sheeva, работающим на частоте 0.8-1ГГц в паре с модемом собственной разработки. О PXA930 очень мало информации в сети, известно лишь то, что процессоры этой линейки использовались в смартфонах BlackBerry 9-ой серии. В отличии от систем на кристалле MediaTek MT65xx, TI OMAP и ST-Ericsson NovaThor, Marvell использовала не типичное ядро Cortex A, а своё собственное, которое является ближайшим потомком таких легендарных процессоров, как Intel PXA27x и Intel StrongARM SA-1100!
Пусть всё же и троюродные, но всё же братья с HTC Universal!
Как вы могли заметить, производные от XScale ядра поддерживают лишь набор инструкций ARMv5, что сильно ограничивает набор поддерживаемых гаджетом приложений. Например сюда необходимо отдельно собирать Quake или Wolfenstein 3D, а большинство приложений, использующих нативные библиотеки вообще здесь не запустятся. Так что из игр здесь остаются только порты с J2ME-устройств и такой редкий, буквально вымирающий класс игр, как написанные на Java с использованием самопальных движков!
Года эдак до 2017, Dion был вполне неплохой машинкой для серфинга интернета. В Android 2.2 ещё использовался WebKit вместо Chromium, поэтому какая-никакая совместимость с HTML5 сайтами всё ещё оставалась, да и фронтэнд в целом был гораздо легче чем сейчас. На самом деле, главная проблема 2.2 - отсутствие поддержки TLS 1.3, что автоматически отсекает большую часть интернета в наше время. Ну, хотя-бы OpenNET загружает - нам и этого хватит!
Но даже с учетом устаревшего браузера, у гаджета находятся применения даже сейчас. Например это почти идеальный SSH-терминал, клиент для почты и в целом не самый плохой гаджет для общения в чатах с открытыми протоколами типа IRC. По моему мнению, он вполне себе выдержал проверку временем и показал себя как концептуально крутейший гаджет... которому не суждено было стать массовым.
Здесь даже есть ТВ-приемник, причем не аналогового сигнала или DVB-T2, а что-то типа DVB-S2. Предполагалось что можно было купить подписку у китайского оператора, ввести код и смотреть телевидение в любом месте. В отличии от других Android-смартфонов с телевизорами, где эфир можно было записывать, здесь такой возможности нет - DRM :)
❯ Всё ещё достоин?
Вот такой необычный гаджет сделал небольшой китайский стартап в далеком 2010 году. И ведь концепция реально крутая и очень смелая: мало того что сделали смартфон в формате субноутбука, так ещё и установили клавиатуру с ноутбучным ходом клавиш, ТВ-приёмник, а также редкий и необычный процессор от компании Marvell. Концептуально — это продолжение QTek 9000, но на практике он был даже круче!
Если вам понравилась статья и вы хотите поддержать меня копеечкой - это можно сделать с помощью формы ниже. Всем большое спасибо!
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Как вам такой гаджет?
Важно!
Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)
Кроме того, я ищу подделки на брендовые смартфоны 2009-2015 года выпуска. Многие из них работают на весьма интересном железе и об их моддинге я бы мог сделать интересный контент. Особо разыскиваются подделки Apple iPhone и HTC (по типу HD2 и Touch Diamond 2)на Windows Mobile и Android, а также Samsung Galaxy. Также представляют моддерский интерес первые смартфоны Xiaomi из серии Mi, Meizu (ещё на Exynos) и телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E6, ZINE ZN5, о которых я хотел бы подготовить отдельные статью и видео, поскольку они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake.
Большое спасибо читателям и зрителям за подгоны, без вас контент бы не выходил!
Пожалуй, все мы с вами любим диковинные гаджеты из 2000-х годов, когда производители всё ещё пытались удивить пользователя некой изюминкой. Таким необычным устройством был и предок современных планшетов — MID SmartQ V7, где за цену в 150$, производитель предлагал неплохое железо, приятный дисплей и целых три предустановленных операционных системы!
Что было «под капотом» у первых планшетов и что умел «дедушка» современного iPad с Android, Ubuntu и Windows CE «на борту» — читайте в сегодняшней подробной статье!
❯ Предыстория
Планшеты — достаточно интересный класс устройств, который за всё время существования пережил недоступность, подъём и даже в какой-то степени забвение. Их история началась ещё в конце 80-х годов с выходом GRiDPad 1900, который представлял из себя небольшой x86-компьютер с полноценным HDD, резистивным тачскрином и MS-DOS на борту:
Планшет хоть и был популярен в узких кругах, но до массового рынка ему было ещё далеко — стоимость в 3 750$ была по карману далеко не каждому заинтересованному пользователю. Однако в 90-х годах концепция планшетов и приближенных к ним устройств только развивалась. Сначала вышел Apple Newton в 1993 году по цене в 990$, а в 1996 году — уже и доступный КПК Palm Pilot 1000 по 299$.
И хотя Pilot — это именно КПК, чаще всего их использовали для тех же целей, что и современные планшеты
Но настоящий бум случился в 2005 году, когда Nokia на LinuxWorld Summit представила принципиально новое устройство — 770 Internet Tablet. Как становится ясно из названия, этот гаджет был предназначен для серфинга в интернете, однако благодаря Linux-дистрибутиву Maemo, он мог выполнять и другие функции обычного компьютера.
Дело в том, что в отличии от той же самой Motorola, которая использовала MontaVista Linux в своих телефонах на платформе EZX, Nokia сразу позиционировала свои гаджеты как открытые и созданные специально для гиков. После выхода устройства, Nokia опубликовала SDK для портирования существующих и разработки новых программ — благодаря чему список доступного софта постоянно расширялся и даже спустя 20 лет после релиза, коммьюнити Maemo всё ещё поддерживает их!
Знакомый форм-фактор, приемлемая цена в 350 долларов и умеренная популярность всей линейки N-таблетов заложили первый кирпичик в фундамент современных планшетов.
В 2008 году Intel представляет новое семейство энергоэффективных процессоров под названием Atom, а параллельно с ними концепцию MID — Mobile Internet Device, то есть портативных компьютеров с возможностью выхода в сеть. И вот тут-то началось!
В Китае MID очень понравилась местным производителям гаджетов и некоторые из них начали разрабатывать и выпускать самые разные, порой даже диковинные серийные устройства — нетбуки-трансформеры, нетбуки-телефоны, планшеты-слайдеры... и конечно же привычные нам планшеты без физических кнопок!
Прототип MID от Intel
К 2010 году на рынке мобильных чипсетов случился бум: новые процессоры выходили буквально каждые полгода, их функционал и производительность росли обратно пропорционально цене. Чипы ОЗУ и флэш-памяти тоже стремительно дешевели, а TN-TFT дисплеи пристойного разрешения уже стоили отнюдь не как крыло от Боинга. Воспользовавшись моментом, несколько китайских компаний представили как минимум 3 модели, которые выбрались за пределы локального рынка в Китае. Одним из таких был и герой сегодняшней статьи — SmartQ V7!
В 2010 году успех Android всё ещё не был очевиден. Некоторые производители продолжали продвигать свои платформы (например Bada), да и для Android ещё было разработано не так много полезного софта. Поэтому когда перед инженерами встал выбор операционной системы, они долго не думали... и решили установить в одно устройство целых три ОС: Android, Ubuntu и Windows CE, а для переключения между ними написали собственный загрузчик!
О SmartQ V7 я узнал в начале этого года, когда исследовал китайские барахолки. Мне даже удалось раздобыть один экземпляр к себе в коллекцию, но из-за особенностей загрузчика (о которых мы поговорим позже), я окирпичил свой экземпляр... Но затем на мои поиски этого устройства откликнулся пользователь с 4pda под ником spbplus (его канал на Дзене) и согласился безвозмездно отправить мне гаджет, за что ему огромное спасибо!
Полноразмерный USB 2.0, HDMI, разъем зарядки как у Nokia и ножка — неотъемлемые атрибуты гаджетов тех лет!
Давайте же по классике разберем наше устройство и узнаем, что здесь скрывается «под капотом»!
❯ Что внутри?
В конструктивном плане гаджет выполнен очень необычно. И дело не только в дизайне и наличию ножки, но и сборке: сразу видно, что бюджеты на разработку и производство устройства были очень сильно ограничены.
Разбирается гаджет несложно, но весьма хитро: сначала необходимо открутить 4 винта с обратной стороны корпуса и расщелкнуть фронтальную панельку. А далее начинаются основные «приколы» бюджетного инжиниринга: плата с фронтальными кнопками буквально приклеена к средней части корпуса, а к ней вручную припаяны как SMD-кнопки, так и межплатный шлейф вместе с проводами питания подсветки дисплея. При этом никто даже не заморачивался с отмывкой флюса — и так сойдет!
Из-за материала плёнки, как дисплей не вытирай — всё равно будут оставаться небольшие пылинки!
Материнская плата отделена от дисплея той самой средней частью корпуса, которая крепится на 5 винтов и две клипсы. И самое забавное то, что по материалу средняя часть напоминает первые опыты в 3D-печати: всё очень примитивно и несимметрично, из-за чего плату немного перекашивает уже с завода. Под дисплеем спрятано 3 потайных винта и при их откручивании надо быть предельно осторожным: если дисплей зайдет уголком за ушко, то есть немалый шанс случайно порвать его шлейф.
Уже виднеется обвязка процессора!
Материнская плата также вытаскивается вместе с средней частью корпуса и аккумулятором, но с этим никаких проблем уже нет: риск что-то повредить минимален. При взгляде на плату устройства сразу приходит понимание, почему этот гаджет стоил 150 долларов: максимальная интеграция всей периферии в один чип:
В качестве сердца устройства, здесь используется система на кристалле TeleChips TCC8902, которая состоит из одного ARM1176-ядра, работающего на частоте 800МГц, контроллера DDR2-памяти, видеоускорителя Mali-200 (в отличии от Mali-400, о существовании Mali-200 слышали единицы), а также периферийных контроллеров по типу USB, SPI, I2C, UART. Помимо этого, TCC8902 поддерживает вывод видео на множество разных источников, начиная от HDMI, заканчивая NTSC/PAL.
Выше процессора расположилась микросхема EEPROM-памяти AT88 производства Atmel. Что на ней хранится — мне неизвестно, вполне возможно что ID чипа или, что гораздо хуже, конфигурация NAND-контроллера (программаторы под эти чипы очень дорогие, а у меня «запорота» именно она).
Столько всего в одном маленьком чипе!
Чуть правее процессора расположилось два чипа оперативной памяти производства Samsung, объёмом по 128МБ каждый. В целом, 256МБ были стандартным объёмом ОЗУ почти для всех портативных гаджетов тех лет. Даже в первом iPad был именно такой объём оперативной памяти!
Почти на самом верху платы расположился чип NAND флэш-памяти производства всё той-же Samsung, объёмом в 2ГБ. В целом, это объём характерный для MP3-плееров и совсем неясно, как на таком чипе уживаются аж три операционные системы!
А вот у Galaxy Tab 7.0 было аж 512МБ оперативной памяти!
Слева расположился аудиокодек Wolfson WM8987G, отвечающий за вывод и запись звука, а также усилитель для стереодинамиков. Чуть ниже расположился чип M1530DM, выполняющий роль повышающего DC-DC преобразователя для подсветки дисплея, а рядом с коннектором шлейфа дисплея расположился неопознанный контроллер питания, который также выполняет функции чарджера.
В качестве дисплея используется классическая 60 pin RGB матрица. Такую можно достать с многих планшетов тех лет!
Питает весь планшет литий-ионный аккумулятор с номинальным напряжением в 3.7В, что несвойственно для планшетов тех лет. Обычно ставили две последовательно соединенные банки. Интересно то, что аккумулятор до сих пор держит заряд и не вздулся — даже спустя 15 лет после выхода планшета на рынок. Достойный результат!
Вот и весь конструктив планшета. Как известно, всё гениальное — просто. И планшет, который в отличии от конкурентов, стоил всего 150$ — это тоже своего рода достижение и шедевр технологической мысли! Ну, что у него внутри мы узнали, а как он проявлял себя на практике? Давайте включим и узнаем!
❯ Включаем...
После включения планшета, нас встречает меню загрузчика (местный аналог BIOS) аж с тремя системами на выбор. Но помимо выбора ОС, здесь есть дополнительная менюшка с настройками загрузки системы, где можно отрегулировать объём памяти для видеоускорителя (я такого вообще больше нигде не видел на мобильных устройствах).
Однако с этим загрузчиком был определенный нюанс. Дело в том, что большинство V7'ых и V5'ых, которые можно найти сейчас на вторичке, частично окирпиченные. Из-за своеобразного механизма разметки разделов, для установки обновленных версий Android, WinCE и Linux требовалось обновление загрузчика — так называемая смена с «синего» на «фиолетовый». Однако планшет никак не был защищен от даунгрейда прошивки, что превращало его в кирпич при попытке установить старый загрузчик поверх обновленного.
На втором экземпляре SmartQ V7 у меня грузился только Android, остальные две системы не работали, но подготовка флэшки с обновленными образами WinCE и Ubuntu решила проблему (и сломала Android, а в веб-архиве архив битый). Скачать образы ОС можно здесь, для установки достаточно лишь скопировать их в корень SD-карты и включить планшет с зажатой кнопкой действия.
Изначально я решил загрузиться в Ubuntu и она сюда портирована довольно неплохо. В качестве рабочего стола используется модифицированная оболочка OpenBox с пакетом дополнительного софта. Производительность системы не впечатляет, но совсем уж «лагодромом» гаджет назвать нельзя. А вот за что его можно поругать — так это за резистивный тачскрин, который с годами начал выдавать фантомные нажатия (и дело не в грязи под рамками)...
Как сюда пропатчить KDE2?
При разработке девайса, SmartQ явно оглядывалась на идейного вдохновителя — Nokia 770 Internet Tablet. Многие элементы интерфейса повторяют Maemo, но при этом, как и в прародителе, пользователь никак не ограничен в модификации своего собственного устройства. Прямо из менюшки можно открыть терминал, запатчить sources.list и накатить deb-пакеты из репозитория с помощью apt.
Но если пользователь был новичком, он мог поставить пакеты с помощью GUI-программы. Не Ubuntu Store, но тоже ничего.
По строке Hardware в ядре, мы сразу видим куда идут корни устройства — к референсной плате Telechips!
Впрочем, несмотря на явно гиковское направление данного гаджета, он вполне подходил и рядовому пользователю. Из коробки были доступны самые разные программы, включая просмотр документов (для чтения книг), текстовый редактор и медиаплеер VLC. Путём установки устройства на ножку и подключения хаба в полноценный USB 2.0-разъём, можно было получить почти полноценный самостоятельный компьютер, а если подключить его к телевизору с помощью HDMI — так вообще медиацентр с выходным разрешением в 1080p!
Для подключения к сети, в планшете есть Wi-Fi. Однако если возможности подключится к точке доступа не было, к планшету можно было подключить самый обычный 3G-модем и работал он не только в Linux, но и Android! Правда, аккумулятор в таком случае высаживался ещё быстрее!
Ну и куда-же без браузера! В качестве основного здесь используется Midori на базе движка WebKit. Но несмотря на то, что я успешно подключился к сети, мне не удалось открыть ни Linux.org.ru, ни OpenNet — сайт, который открывает даже PocketIE. К сожалению, сборок Chromium под ARMv6 в те годы не было, а FireFox будет слишком медленным, так что наш максимум — это Dillo.
Как перестать намеренно убирать TLS 1.2 — так это "безопасность", а как показывать заглушки доменов - так это хоть на IE 1.0!
Далее я загрузился во вторую из трёх доступных систем — Windows CE. И вот здесь картина была менее радужной, поскольку порт WinCE на Evaluation-board был ну очень кривым. Например, при переключении режима USB из Client в Host — планшет зависал, а тачскрин работал некорректно и откалибровать его возможности не было из-за кривой реализации драйвера (он эмулирует мышь, а не реализует стилус, как должно быть).
Но к теме Windows CE на планшетах мы обязательно с вами вернемся немного позже, ведь помимо SmartQ V7, был ещё один планшет с возможностью загрузки нескольких ОС. И имя ему — ePad Zenithink ZT-180!
❯ Заключение
Вот такая статья про интересный гаджет из далекого 2010 года у нас с вами получилась. И хотя на первый взгляд кажется, что установка сразу 3-х ОС — странное решение, однако в годы когда на рынке мобильных систем ещё не было однозначного лидера — это было логично, ведь производитель предоставлял пользователю полную свободу действий над своим устройством.
Если вы хотите поддержать блог материально, то это можно сделать используя форму ниже. всем большое спасибо!
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Как вам SmartQ V7?
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Я ищу подделки на брендовые смартфоны 2009-2015 года выпуска. Многие из них работают на весьма интересном железе и об их моддинге я бы мог сделать интересный контент. Особо разыскиваются подделки Apple iPhone и HTC (по типу HD2 и Touch Diamond 2)на Windows Mobile и Android, а также Samsung Galaxy. Также представляют моддерский интерес первые смартфоны Xiaomi из серии Mi, Meizu (ещё на Exynos) и телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5, о которых я хотел бы подготовить отдельные статью и видео, поскольку они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake.
Большое спасибо читателям и зрителям за подгоны, без вас контент бы не выходил! Связаться со мной можно в тг monobogdan.
Сегодня компьютером на x86-совместимом процессоре едва ли можно кого-то удивить с гиковской точки зрения. Другое дело - обучающий ноутбук для детей, который работает на интересном и необычном ARM-процессоре от небезызвестной компании VIA. И хотя для запуска произвольных программ его необязательно было хакать - всем гикам известно, надо было ставить Linux!
К чему приводит давняя детская мечта об обучающем ноутбуке, что скрывается внутри устройства за 500 рублей и как на всё это накатить Linux с дуалбутом в родную систему - читайте в сегодняшней подробной статье!
❯ Предисловие
С самых ранних лет своей жизни, я так или иначе интересовался компьютерами. Когда многие мои читатели уже заканчивали университет или жили взрослой жизнью в начале-середине 2000-х годов, ваш покорный слуга всё ещё ходил в детский сад — и уже тогда мечтал о своём собственном личном компьютере.
В те годы, даже в моём провинциальном Ейске уже можно было найти за бесценок списанный с госсектора компьютер на условном 486'ом или даже Pentium MMX. Однако у моих родителей таких знакомств не было, да и друзей с личными ПК — тоже. Даже с популярными в те годы «Денди-ноутбуками» я познакомился лишь пару лет назад, несмотря на то, что аппаратный клон NES стал моей основной игровой платформой детства.
О нём я тоже писал статью. Довольно интересный гаджет, храню его в своей коллекции.
В те времена, зажиточные семьи часто покупали своим детям так называемые детские обучающие компьютеры, которые представляли из себя ничто иное, как «Brick Game» с клавиатурой и несколькими обучающими играми/программами. Примитивность и одновременная гениальность этих устройств зашкаливала: тайваньские инженеры умудрились сделать достаточно многофункциональную машину на простейшем микроконтроллере из 90-х — по типу тех, что использовались в «Тетрисе»: 4-битный процессор на 1МГц, система команд напоминающая 8051 с отдельными инструкциями для управления звукогенератором, встроенный контроллер ЖК-дисплея, 4Кб ROM-памяти и 64 байта оперативной - в общем, это маленькое инженерное чудо не могло не привлекать к себе внимание детей с гиковскими наклонностями!
Но даже такого компьютера у меня в детстве не было, оставалось лишь смотреть и облизываться на экземпляры у соседских друзей... И я думаю многие читатели знают, что такое несбывшиеся детские мечты!
К 2010 году, в Китае и Тайване случился бум мощных и недорогих систем на кристалле. Буквально каждые полгода выходили новые чипы, которые совмещали в одном корпусе практически весь компьютер: от центрального процессора, до 3D-видеоускорителя и всё это буквально за пару долларов. Среди популярных моделей вспоминаются MIPS-чипсеты от Ingenic (использовались в плеерах и игровых консолях Dingoo и Ritmix) и ARM-чипсеты от InfoTMIC, TeleChips, Rockchip (использовались в первых Android-планшетах за 100-150$, которые в те годы назывались MID). Добавьте к этому резкое удешевление NAND-памяти объёмом в 2-4ГБ и оперативной памяти типа SDRAM/DDR1 - очевидно, что предприимчивые китайские компании захотят собрать что-нибудь массовое и при этом недорогое!
Планшет с процессором в слоте DDR2-SODIMM - это самое диковинное, что вы сегодня видели :)
На волне популярности нетбуков, а конкретно — свежего Asus EeePC 700, некий китайский ODM-производитель разработал несколько очень дешевых платформ для ноутбуков, которые между собой были похожи как две капли воды, но отличались процессорами. Больше всего устройств использовало чипы разработки WonderMedia, но также встречались гаджеты на процессорах Anyka и даже Ingenic. И цена таких ноутбуков была просто невероятной: от 50$ до 100$ за штучку. Полноценный ноутбук с RJ-45, Wi-Fi модулем, 2-4ГБ встроенной памяти и лицензионной Windows всего за 2.000 рублей по тому курсу... это было что-то невероятное!
В России такие ноутбуки тоже продавались. В основном их закупали предприимчивые граждане с Таобао/Алика и затем торговали ими в павильоне на рынке или в переходе. Но были также и небольшие официальные поставки, среди которых затесался герой нашей сегодняшней статьи — некий «Бам-Бук», который стоил аж 6.500 рублей в 2010 году (~210$ по тому курсу)!
Будучи фанатом портативных гаджетов на необычных процессорах, я разместил пост о поиске подобных ноутбуков на Хабре, Пикабу и 4pda. И год спустя, Toshan с 4pda предложил мне купить тот самый «Бам-Бук» за символические 500 рублей... а мы ведь помним, что такое несбывшиеся детские мечты!
❯ Что внутри?
Ноутбук приехал в целостности и сохранности, однако Антон сразу предупредил о том, что у устройства не работает часть клавиш на клавиатуре, а также тачпад. После включения «БамБука», меня встретил рабочий стол Windows CE, но системой едва ли можно было пользоваться без клавиатуры.
Поскольку на устройстве уже были видны следы разборки, я решил его перебрать и проверить целостность шлейфов, а также пайки коннекторов. Разбирается нетбук очень просто: достаточно лишь открутить несколько винтов на поддоне, включая потайной под наклейкой EasyPC и отключить шлейф клавиатуры с тачпадом со стороны топкейса.
В процессе снятия клавиатуры, я обратил внимание на криво вставленный в коннектор шлейф. Вообще, такие устройства требуют сноровки и опыта в процессе сборки, поэтому иногда зафиксировать шлейф бывает проблематично и он начинает просто болтаться в коннекторе. Казалось бы, причина неработоспособности клавиатуры найдена!
После снятия топкейса, нас встречает «голая» в буквальном смысле плата. По сравнению с любым x86-нетбуком тех лет, это устройство выглядит таким же простым, как GameBoy по сравнению с PSP...
На плате устройства и тут и там были видны следы неотмытого флюса. Все DIP-элементы (разъёмы), а также динамики паялись вручную. Судя по маске, в плате используется не более 5-6 слоев — что очень и очень мало для ноутбука... но в чём секрет?
Переворачиваем плату устройства и всё становится предельно ясно! Дело в том, что процессор, ОЗУ и Flash-память распаяны на отдельной плате, называемой System on Module (SoM), которая припаяна к основной методом поверхностного монтажа. Такие платы служат для быстрой разработки и прототипирования устройств в условиях ограниченного техпроцесса и бюджета — по сути, на хост-плате разводят лишь питание и периферию, а используют их везде: начиная от ЧПУ-станков, заканчивая кассовыми аппаратами!
В качестве сердца устройства используется система на кристалле WonderMedia WM8505, также известная как VIA VT8505. В её основе лежит ARMv5-совместимое ядро 926EJ-S на частоте 300МГц с 16Кб кэша, кастомный 2D GPU собственной разработки VIA, контроллер DDR2-памяти, а также большое количество самой разной периферии: от шин по типу SPI, I2C и UART, до SD и USB. И всё это в миниатюрном чипе за несколько долларов!
Снизу расположилась одна банка оперативной памяти типа DDR2 объёмом в 128МБ, а справа — микросхема SPI-флэш памяти, где хранится загрузчик U-Boot (BIOS) устройства.
Многим читателям корпорация VIA знакома как производитель чипсетов, аудио-кодеков и даже x86-процессоров... кто бы мог подумать, что они будут делать и ARM-чипсеты?
Немного выше процессора расположилась микросхема NAND-памяти производства Samsung. И как мы с вами видим по характерным потертостям и следам флюса - скорее всего этот чип сдули с MP4-плеера, который когда-то сдали в утиль. В Китае эти чипы памяти продают за бесценок сразу с частями платы устройств - их даже не всегда выпаивают!
Чуть выше SoM можно обнаружить 4 пина под колодку — это диагностический UART-разъём, который можно использовать для восстановления устройства при окирпичивании.
С левой части платы расположился USB-хаб AU6256, а рядом с ним — микроконтроллер производства Holtek (и тут процессор от «Тетриса»!) в весьма необычном корпусе. Скорее всего, он выполняет функции SMC и контроллера клавиатуры одновременно — эдакий мультиконтроллер «на коленке»!
С правой стороны платы у нас расположилась схема питания на основе чарджера SUN4001S, понижающего DC-DC преобразователя APW7145 (основная шина питания) и LDO SY8088, формирующий напряжение 3.3В. Немного правее расположился аудиокодек Wolfson WM1613G - чаще в таких ноутбуках можно найти что-то от самой VIA!
И... это всё! Вся схема ноутбука настолько простая и гениальная, что буквально состоит из SoM, микроконтроллера, USB-хаба, аудиокодека и простейших питальников...
❯ Включаем...
После сборки и включения ноутбука, я обрадовался что большая часть клавиатуры заработала нормально, но одна линия матричной клавиатуры всё же была повреждена. Осмотрев её, я обнаружил что клавиатура вся погнутая и... ну в общем, здесь явно постарались шаловливые ручки. Однако это не делает данный ноутбук бесполезным!
Помимо клавиатуры, мне не удалось отремонтировать и тачпад. Не знаю, что с ним делали, но даже GPIO-кнопки мыши не работают.
С завода здесь стоит Windows CE 6.0 с различным обучающим софтом для детей, но прошлый хозяин накатил сюда универсальную кастомную прошивку для устройств на WM8505 от PC_USER. Для верности я решил переустановить образ системы (благо он сохранился здесь): для этого достаточно лишь отформатировать SD-карту в FAT и скопировать папку script из архива в корень карты памяти. Поскольку в устройстве используется U-Boot, обновление прошивки реализовано за счёт использования autoscript'ов, которые заставляют загрузчик грузить ядро Linux или Windows CE с карты памяти и уже из юзерспейса копировать себя в NAND. Путем небольших манипуляций с скриптами, можно реализовать полноценный дуалбут или даже триплбут!
После установки системы, нас встречает такой родной рабочий стол... и вендор устройства сделал всё, чтобы опыт использования такого ноутбука был максимально приближен к полноценному компьютеру. Тут есть большое количество самого разного софта: начиная от офиса, заканчивая играми. И даже есть полноценный Windows Media Player вместе с TCPMP для поддержки YouTube:
Другие ревизии этого ноутбука с Wi-Fi и Ethernet могли также свободно сёрфить интернет. Из коробки был предустановлен пока ещё не совсем бесполезный PocketIE, а с помощью небольших манипуляций можно было даже установить Opera Mobile на актуальном в те годы движке Presto:
OpenNet откроет — и этого хватит!
Помимо этого, в устройстве был предустановлен клиент ещё популярного тогда Skype. Уж не знаю как он работал на Windows CE, но учитывая что нормальный порт на Android делали года три — возможно что определенные нюансы точно в нём были.
Касательно офиса — здесь было всё необходимое: начиная от клиента почты, заканчивая эдакой вариацией на тему Excel. В целом, такие ноутбуки чаще всего и покупали для использования в качестве печатных машинок, SSH-терминалов (есть порт Putty на WinCE) и других подобных целей. Интересно что для WinCE есть частичный порт MS Office, причём даже с PowerPoint'ом, но в этой прошивке его почему-то нет.
Ну и куда-же без игр! Под ARM WinCE было достаточно много портов различной классики: начиная от эмуляторов игровых консолей, заканчивая казуалками по типу Zuma от Astraware. Однако большинство игр и программ использовали библиотеку gx.dll, которая давала прямой доступ к фреймбуферу устройства и была доступна только на коммуникаторах и КПК с PocketPC/WinMobile на борту. Энтузиаст из Германии даже разработал свою реализацию gx через GDI (заведомо более медленную), но большинство игр работает не совсем корректно, а эмуляторы по типу PocketNES банально не влезают в экран:
Внимательные читатели могли заметить, что в таскбаре запущено много программ, но при этом оперативной памяти в устройстве всего 128Мб и её всё ещё достаточно для запуска ещё нескольких приложений. В чём-же секрет? В том, что Windows CE потребляла памяти даже меньше, чем Win95, но при этом на ней был доступен .NET и часть прелестей WinAPI времен Windows XP. При этом над оптимизацией программ действительно заморачивались и поэтому софт не только экономен к ОЗУ, но ещё и шустро бегает на горяченном 300МГц ARMv5 процессоре!
Все запущенные программы в сумме занимают 30 мегабайт памяти с учетом ядра системы. Впечатляет!
❯ Ставим Linux
Эти ноутбуки появились в золотое время развития Android, когда каждый вендор чипсетов старался поддерживать все доступные на рынке операционные системы. Поскольку WonderMedia разрабатывала 8505 в том числе и для MID (планшетов), для чипсета был доступен порт Android 1.5 и исходный код ядра Linux. Имея такие вводные данные, вполне очевидно, что гики рано или поздно смогли запустить на нём какой-нибудь дистрибутив.
На WM8505 доступно два образа: с Arch и Debian Lenny. Поскольку я никогда не пользовался Арчем и всю линуксоидную жизнь я сидел либо на Debian, либо на Slackware, я решил остановиться на Дебиане. Некий добродетель выложил на archive.org уже собранное ядро + rootfs, готовое к установке: нам достаточно лишь разбить SD-карту на два раздела (первый — 32Мб, второй — остальное доступное пространство) с помощью утилиты fdisk, отформатировать первый раздел в FAT и скопировать на него папку script с ядром:
su mkfs.fat /dev/sdb1 mkdir /mnt/wmboot mount /dev/sdb1 /mnt/wmboot tar -xvf ~/fatpart.tgz sync
И отформатировать второй раздел в ext2, распаковав туда rootfs:
su mkfs.ext2 /dev/sdb2 mkdir /mnt/wmrootfs mount /dev/sdb2 /mnt/wmrootfs tar -xvf ~/extpart.tgz sync
После этого можно вставить SD-карту в ноутбук, включить его и посмотреть на надпись «Loading Windows...», которая плавно сменяется на вывод kmsg :)
Единственный нюанс — здесь собрана минимальная рутфс со всем необходимым софтом, включая dpkg и apt. Чтобы поставить XOrg и другие программы нужно искать свисток на чипе Realtek RT3070, либо же организовывать локальный файловый репозиторий на USB-флэшке (ведь в комплекте нет даже веб-сервера, который можно было бы развернуть на локалхосте)... но это мы с вами оставим уже для следующей статьи :)
В общем и целом, гиковские перспективы у таких гаджета есть. Если бы у меня было чуточку больше времени, я бы портировал в фреймбуфер эмулятор NES и SEGA, как я это делал для детского MIPS-ноутбука и мы бы с вами даже провели тесты — чьи 300МГц быстрее!
❯ Заключение
Вот такая статья об интересном детском ноутбуке у нас с вами сегодня получилось. Конечно нельзя сказать, что такой ноутбук является альтернативой старенькому ThinkPad'у с Арчем на борту, но сама концепция и понимание того, что твой гаджет работает на ARM-процессоре, как минимум достойна внимания!
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Как вам такой ноутбук?
Что больше всего любите в моих статьях из рубрики обзоров и моддинга ретро-гаджетов?
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)
А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!
Недавно я исследовал китайские онлайн-барахолки и наткнулся на лот с продажей абсолютно новых КПК Sharp Zaurus за 4.500 рублей. Будучи прожженным гиком и ярым фанатом всего, что хоть как-то похоже на ноутбук и работает на ARM-процессоре, я не смог устоять и решил приобрести его в свою коллекцию необычных Linux-гаджетов. А поскольку устройство абсолютно новое и опечатанное, я решил оформить распаковку и ретроспективу в виде ламповой статьи!
❯ Предыстория
В наше время нет никаких проблем купить себе интересный гиковский гаджет. То и дело небольшие компании по типу Planet Computers и Pine64 выпускают необычные устройства, по большей части предназначенные для доводки напильником и ковыряния ради самого процесса. Более того, в эпоху DIY, многие начинающие инженеры сами себе собирают гиковские штучки: я и сам являюсь одним из таких доморощенных маминых конструкторов.
Cosmo Communicator
Но в девяностых и нулевых всё было не так просто: Open Hardware-компьютеров вообще практически не существовало (кроме смартфона Neo Freerunner), а серийные Linux-устройства можно было пересчитать по пальцам. Но обширное коммьюнити не отчаивалось и пыталось портировать ядро на все гаджеты, где есть MMU и хоть какая-то документация на процессор. HP Jornada, Dingoo A320, HTC Magician, HTC Gene - на все эти устройства Linux был полноценно портирован исключительно силами коммьюнити!
RZX-50 использовал наработки сообщества по Dingoo A320.
Среди легендарных гиковских гаджетов, особенно выделяется серия портативных компьютеров Sharp Zaurus. Ещё в 2001 году, японская корпорация поверила в перспективы Linux и Qt и выпустила один из первых серийных КПК с «пингвином» на борту - SL-5000D. Модель отличалась полноценной QWERTY-клавиатурой, которая пряталась под выдвигающимся блоком системных клавиш, крупным цветным дисплеем с приличным разрешением 240x320, мощным процессором Intel StrongARM и наличием свободного SDK для разработки программ с использованием Qt.
Несмотря на высокую цену, устройство стало бестселлером среди гиков, которые старались выжать из устройства максимум. Кастомные прошивки, ядра с разгоном процессора, порты программ с ПК - всё это появилось задолго до Android-смартфонов! Попробуйте представить себе, насколько круто было запустить полноценный Wolfenstein3D в 2002 году на портативном гаджете...
Будучи коллекционером и одним из таких энтузиастов, мне тоже захотелось обзавестись легендарным японским КПК. Сначала я купил за копейки SL-5500D из утиля с эффектом, известным как «уксусный синдром» - когда из-за неправильного хранения поляризационная пленка дисплея начинает отслаиваться и из-за кристаллизации клея изображение начинает «плыть».
А затем мне попался лот с абсолютно новым SL-7500C для китайского рынка по весьма приятной цене в 4.500 рублей. Благодаря подписчику Роману и сервису YouCanBuy, я смог заказать гаджет и привезти в Россию, за что вам огромное спасибо!
❯ Распаковываем
Поскольку многие модели Zaurus продавались в основном на рынке Японии, в другие страны их нередко ввозили «серым» импортом. Китай, однако, был исключением - там ввозом устройств занималась корпорация CEC и буква 'C' в конце названия модели как раз говорит о том, что у нас версия для Китая. От японской она отличается упаковкой и языком прошивки.
Гаджет приехал ко мне в посылке, где находился фирменный пакет, коробка с аксессуарами и опломбированная отдельная коробка для самого гаджета. В коробке с аксессуарами лежат два огромных талмуда - один с инструкцией для устройства, а второй для внешнего CF-модема GC, который позволяет добавить устройству GPRS и даже возможность звонить! Самого модема в комплекте не было, зато был диск с софтом и драйверами, проприетарный дата-кабель, блок питания (5В с Barrel-jack, как на PSP и КПК HTC/HP), запасной стилус, аккумулятор и гарантийная информация. В общем, почти стандартный набор для тех лет.
А вот сам гаджет упакован особенно: отдельная коробочка с ленточной подпоркой, обшитая красной тканью, в которой гордо расположился SL-7500C. В подобных коробочках поставляются либо шедевры ювелирной работы... либо крутейшие гиковские гаджеты!
В качестве аккумулятора здесь используется литий-ионный элемент на 950мАч. Учитывая что АКБ хранится отдельно, мне было интересно остался ли в нём ещё хоть какой-то заряд спустя 21 год после выхода устройства. При первичном замере на клеммах было 0В (это на BMS, в самом аккумуляторе было ~2.6В), однако АКБ сразу же раскачался от лабораторного блока питания и подал признаки жизни.
На первый взгляд кажется, что литий-ионные АКБ не могут жить так долго, но при условии правильного хранения, аккумуляторы могут лежать и 10, и 15 лет, сохраняя заводской заряд. У меня лежат запечатанные аккумуляторы для сонериков и моторолл, которые всё ещё неплохо держат заряд и даже у SL-5500D, который я показывал чуточку выше, аккумулятор всё ещё жив спустя почти 25 лет!
Ну что-ж, пришло время подзарядить аккумулятор и впервые за 21 год включить нашего красавца...
❯ Знакомимся ближе
Даже спустя 22 года после релиза этот красавец включается и работает как ни в чем не бывало, причём родной аккумулятор всё ещё держит заряд минимум несколько часов. При включении нас встречает консоль Linux, затем логотип Qtopia и рабочий стол устройства, который представляет из себя вариацию на тему Windows. Изначально интерфейс у большинства «Завриков» на японском или китайском языке и возможности сменить язык на английский нет - нужно прошивать кастомную прошивку.
У Zaurus есть своя консоль восстановления, откуда можно прошить кастом, сделать бэкап и отформатировать пользовательский раздел. Вызывается она включением с зажатой кнопкой «ОК», далее можно выбрать метод обновления: с CF-карточки, SD или через USB. «Завры» очень прихотливы к SD-картам, даже обычные MMC он не видит и нормально работает только с CompactFlash!
Самой популярной кастомной прошивкой была CackoROM, предположительно от разработчиков из СНГ. В довесок к стандартной Qtopia, CackoROM добавлял менеджер пакетов, позволяя устанавливать новый софт, терминал, порты различных программ на Qt с KDE и кастомное ядро. Даже Midnight Commander портировали. Буквально LineageOS в мире Zaurus!
Прошиваемся
После прошивки, printk начинает выводить логи на экран, что прибавляло к крутости владельца 100 очков... А ведь раньше даже во времена Android убирали бутанимацию и делали вывод сообщений ядра!
SL-7500 - кровный брат-близнец модели C750, работающий на идентичном железе. Под капотом у них флагманское для своих лет железо:
Процессор - Intel XScale PXA255 на частоте 400МГц с одним ARMv5-совместимым ядром собственной разработки Intel. Процессор набирает почти в два раза больше очков MIPS, чем Pentium MMX и идёт на равных с Pentium II 300 - уже в 2003 году!
ОЗУ - 64Мб типа SDRAM. Классика для КПК тех лет, хотя в 2003 году ещё выходили модели и с 32Мб памяти.
Постоянная память - 64Мб типа NAND, производства Samsung. Для расширения памяти есть слот для SD, а также для карт CompatFlash.
Дисплей - TN-матрица разработки CG-Silicon с огромным по меркам тех лет разрешением - 640x480, диагональю в 3.7" и отличной цветопередачей с глубиной пикселя в 16-бит. У компактного КПК дисплей был не хуже, чем у некоторых актуальных для тех лет десктопов!
Коммуникации - USB, COM-порт, Wi-Fi и ИК-порт. CF также можно использовать для расширения функционала устройства с помощью дополнительных модулей.
После загрузки нас встречает рабочий стол Qtopia, разделенный на несколько вкладок: основные приложения, Java-приложения, настройки и проводник. Есть также фирменное меню пуск и панель задач - у «Заврика», как и у любого уважающего себя Linux-гаджета, есть многоконность!
Также здесь есть поддержка Java, но не J2ME как на телефонах, а Jeode с профилем, близким к CDC (J2SE ~1.1). По сути, это почти полноценная Java-машина с поддержкой awt - а значит на ней можно запустить различный ретро-софт. Из коробки здесь есть демо-апплеты, а также игра крестики-нолики, да и в целом поверх этой JVM можно реализовать MIDP 1.0 и запускать игры и программы для ретро-телефонов.
Zaurus отличался очень неплохими мультимедийными возможностями. Уже из коробки был предустановлен MP3-плеер, а также видеоплеер с поддержкой формата 3gp. Конечно едва ли в те годы можно было посмотреть на нём фильм, SD-карточки были ещё слишком малого объёма, но вот счастливые обладатели CF-карт на 256Мб уже могли попробовать посмотреть сильно пережатый фильмец!
Помимо этого, у Zaurus был полноценный веб-браузер NetFront 3.1 от компании Access. Это вам не урезанные WAP-сайты: миниатюрный гаджет мог просматривать настоящие WEB 2.0 страницы, а двумя движениями ноутбук превращался... в компактный планшет! В SL-7500C к сожалению нет ни WLAN, ни Bluetooth, поэтому подключить его к сети я не смог. Но уверяю у вас, OpenNet он бы точно открыл!
Поскольку Zaurus - это ещё и органайзер, в нём предустановлен различный офисный софт. Заметки, клиент E-Mail, календарь, записная книжка - всё это входит в стандартный набор программ. В целом, Zaurus можно считать прямым конкурентом тех же самых HP Jornada, LG Phenom и других WinCE-субноутбуков тех лет.
Ну и какой-же Linux-КПК обходится без возможности зайти в консоль под рутом и управлять системой как вздумается? На Zaurus легко можно было запускать консольный софт вообще без особых изменений, а также GUI-софт. Причём Qt был необязателен: многие эмуляторы рисуют сами себя либо сразу в фреймбуфер, либо используют библиотеку SDL. Возможности моддинга гаджета были неограниченными!
❯ Заключение
Вот такой необычный Linux-гаджет разработали в Японии в далёком 2003 году. На первый взгляд кажется что у него совсем нет применений в современном мире, однако на практике это вполне достойный портативный терминал, печатная машинка, игровая консоль и... телефон, если конечно у вас есть CF-радиомодуль. Подытоживая, можно сказать что Zaurus - один из самых ярких представителей ушедшей эпохи карманных портативных компьютеров.
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статью) можно найти на моём YouTube канале.
Как вам Sharp Zaurus SL-7500C?
А что думаете о Zaurus в целом?
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)
А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!) и устройства на Windows Mobile. Всем большое спасибо за донаты!
Нет, это не шутка и не кликбейт. Такое действительно возможно - правда через небольшой хак.
Недавно я задался вопросом: а возможно ли написать для ARM нативную программу, которая будет бесшовно работать сразу на 4-х операционных системах без необходимости перекомпиляции для разных платформ и ABI. Мне очень хотелось реализовать возможность писать кроссплатформенные эльфы для мобильных телефонов из нулевых и попытаться портировать на них эмуляторы ретро-консолей. Погрузившись в документацию на исполняемые форматы, я пришёл к выводу, что да - это возможно и смог реализовать такую программу на практике без читерства по типу VM! Всех гиков приглашаю под кат!
❯ Зачем и почему?
Давным-давно, в далёком 2001 году, мир увидел легендарный японский телефон - Sony CMD-J70. Ещё до создания совместного подразделения с Ericsson, Sony выпускала достаточно занимательные девайсы, которые привлекали внимание не только рядовых пользователей, но и моддеров всех мастей. Уже через пару лет после выхода, в программном плане телефон копали все кому не лень: кто-то менял графику, кто-то писал патчи, а со временем написали даже бинлоадер (PRGLoader) - загрузчик внешних "экзешников", позволявший запускать на телефоне произвольный софт, написанный на ассемблере!
Сейчас сложно себе представить, но в те годы это был нереальный отвал башки: на большинстве телефонов были доступны разве что Java/Mophun-приложения, которые обладали ограниченным функционалом и уж тем более не позволяли лезть в дебри прошивки телефона, а здесь были программы которые буквально позволяли делать с телефоном всё что захочешь: светомузыку из подсветки, кастомные игры, обои на главный экран... всё это было доступно только на куда более дорогих смартфонах с Symbian и Windows Mobile на борту!
Недавно мы с вами вспоминали о легендарном Siemens M55 и узнали, что у него находится под капотом. Несмотря на диковинную архитектуру Infineon C166, даже под этот телефон делались патчи и была написана как минимум одна кастомная игра. Но рассвет моддинг-сцены Siemens произошёл с выходом платформы S-Gold на базе стандартного ядра ARM926EJ-S, когда в ~2004 году энтузиасты полностью взломали алгоритм генерации BootKEY для загрузчика, а затем в 2006 году реализовали полноценный эльфлоадер, который позволял загружать программы написанные на C и скомпилированные самым обычным компилятором ADS. В отличии от бинлоадера для CMD-J70, "эльфятник" позволял угонять функции RTOS для создания потоков и привносил в бюджетные телефоны полноценную вытесняющую многозадачность с настоящим диспетчером задач и возможностью запуска несколько программ одновременно:
Единицы читателей поймут, что происходит на данной фотографии...
Энтузиасты раскапывали прошивку в дизассемблере, изучали её и пытались понять как работают разные её подсистемы. Результатом стало появление нативного клиента почты с предком пуш-уведомлений, аськи (NatICQ), порты самых разных эмуляторов ретро-консолей и даже полная программная поддержка MP3 в тех телефонах, где её отродясь не было! И представьте себе, почти все эти программы можно было свернуть и продолжить работу в браузере или, например, Card Explorer'е! Одним из эльфописателей был Хабровчанин @ilya_ZX
Но если вы думаете что одними телефонами Siemens энтузиасты были едины, то вы ошибаетесь - ведь круче были только "моторолки"! В 2004-году, недорогая Motorola E398 с двумя громкими динамиками, светомузыкой и поддержкой MicroSD-флэшек, стала настоящим бестселлером и привлекла к себе не меньше энтузиастов, чем Siemens. Ребята сплотились на форуме MotoFan, нашли уязвимость в загрузчике и хакнули верификацию RSA-подписи у прошивок, позволив не только модифицировать Seem'ы (что-то типа NVRAM), но и создавать для телефона кастомные прошивки - монстрпаки, которые прибавляли громкость и без того не самым тихим динамикам и в различных аспектах изменяли главное меню устройства. Со временем, @Andy51 и ещё несколько энтузиастов реализовали эльфлоадер (EP1) для E398, раскопали прошивку и написали много полезного софта, время от времени переключаясь на Linux-телефоны от Motorola...
Вероятно многие читатели подумают мол "было и было, мой айфон/сяоми может запускать любой произвольный софт и эти ухищрения давным-давно неактуальны...". Но как бы не так: про моторолки и сименсы не просто всё чаще вспоминают, у них есть до сих пор активное моддерское коммьюнити, которое продолжает пилить для них кастомный софт и далее колупать прошивку. Всё тот же @EXL портировал крутой софтрендер для E398 и в 2025 году наконец-то взломал C350, @Azq2 пилит аппаратный эмулятор Infineon S-Gold и многие другие делают свой вклад в моддинг сцену уже не таких мейнстримных, но отнюдь не устаревших устройств!
Однако порог вхождения для написания эльфов достаточно высокий: нет никакой отладки кроме printf, любая ошибка в приложении приводит к зависанию или ребуту телефона (на сименсах с характерным "пик"), а API напрямую импортируется из прошивки телефона и может быть достаточно комплексным - ни о каких кроссплатформенных эльфах и речи не идет. Поэтому в какой-то момент мне стало интересно: а возможно ли написать такой эльфлоадер, который за своим рантаймом будет прятать детали реализации работы с аппаратной начинкой телефона и при этом загружать один и тот же бинарник на всех поддерживаемых платформах без особых патчей и изменений? Принявшись за изучение ABI ARM и спецификации Elf, я начал дизассемблировать и изучать самые маленькие тестовые программы...
❯ Формат ELF, ABI ARM и тулчейн
Начнём с самого простого: что же такое эти самые эльфы? Elf - формат исполняемых файлов, широко применяемый как в мире Unix-систем, так и в embedded-устройствах. Самые распространенные тулчейны - GCC и clang/llvm, по умолчанию собирают программы именно в этом формате и по своей сути, это прямой аналог .exe (PE) файлов из Windows. Помимо кода, Elf также содержит в себе множество секций и различных данных, при этом разработчики формата старались сделать его настолько гибким, чтобы его можно было использовать на любых архитектурах: от x86, до risc-v.
Каждая программа состоит из так называемых секций - участков кода, данных и метаданных, необходимых для её загрузки в память. Среди секций простой программы можно выделить как минимум четыре основных:
.text - хранит в себе код программы и обычно записывается в память с флагами MMU R X (чтение и выполнение)
.data - преинициализированные данные, имеет флаги R W (чтение и запись). Например, заполненная структура в C:
int a[] = { 1, 2, 3 };
.bss - не инициализированные данные, иными словами глобальные переменные, которые при старте программы должны быть забиты нулями. Имеет те же флаги, что и .data.
.rodata - различные константы: строковые, const-преинициализированные массивы, а также структуры и т.п, имеет только флаг R и на системах с MMU попытка запись в эту секцию повлечет SIGSEGV.
За загрузку всех этих секций отвечает загрузчик Elf в ядре ОС. Однако это справедливо только для простых программ, которые загружаются в фиксированный адрес виртуальной памяти и которые не используют внешние библиотеки (.so, аналог в Windows - .dll). Поскольку адрес загрузки для всех библиотек предсказать невозможно, разработчики ABI придумали позиционно-независимый код (PIC и его производное - PIE), который может загружаться в любую область памяти и оттуда выполняться.
Реализация PIC может достигаться тремя разными способами:
Первый способ заключается в использовании глобальной таблицы смещений (GOT) и релокаций. Релокации - специальные данные в Elf, которые позволяют переместить программу в другой адрес путём патчинга адресов в секции .got "на лету": иными словами, сам код (.text) остаётся позиционно-независимым (дабы библиотеку можно было загрузить один раз и использовать во множестве процессов) и обращается к GOT относительно PC, но в самом GOT (который представляет из себя массив void* addresses[]) указатели на остальные сегменты находятся так, будто программа загружается по смещению 0x0. Задача динамического линкера - посчитать абсолютный адрес для всех указателей в GOT: в простейшем случае, это got[address] += baseAddress. Релокации могут затрагивать сразу literal pools в обход GOT, если архитектура предусматривает их наличие.
Релокацией занимается динамический линкер или интерпретатор в мире Unix (тот самый ld.so, что часто "not found" :) ), а самих релокаций есть много разных видов в зависимости от архитектуры процессора. В ARM чаще всего встречается R_ARM_REL32
Второй способ заключается в том, что мы компилируем программу так, будто она должна загружаться по фиксированному адресу 0x0 - то есть без PIC, однако просим линкер (--emit-relocs) создать информацию о всех обращениях к памяти в виде всё тех же релокаций. Вместо R_ARM_REL32, линкер создаёт релокации R_ARM_ABS32, которые можно разрешить обычным сложением. С таким подходом количество релокаций кратно увеличивается, однако из-за отсутствия GOT немного повышается быстродействие программы (вместо трёх LDR для загрузки слова из памяти нужно всего два: из Literal pool в регистр и затем из фактической памяти).
Пример релокаций для эмулятора NES
Третий способ поддерживается не везде, но в ARM он является одним из самых распространенных в embedded-среде: код собирается с флагами /rwpi и /ropi полностью не зависит ни от GOT, ни имеет каких либо релокаций. Вместо этого, для адресации базового адреса программы он использует выделенный регистр R9, который загрузчик должен заполнить адресом, куда он загрузил программу (mov r9, textSectionBase). Такой подход теоретически чуточку быстрее, чем GOT, но медленнее второго подхода из-за необходимости добавлять сложение регистра с PC перед каждым фетчем из памяти.
Поскольку в телефонах MMU обычно не используется, эльфлоадеры загружают программы по тому адресу, что им выделяет системный аллокатор памяти и вынуждены использовать PIC. Чаще всего используются релокации (как минимум на Siemens и Motorola), на некоторых платформах используется второй подход с использованием регистра R9.
Для большей гибкости, я решил выбрать второй подход и построить свой эльфлоадер поверх уже существующих загрузчиков, обернув API прошивок в ряд собственных стандартизированных функций: работа с дисплеем, вводом, файлами, а также звуком. При этом эльфы должны собираться современным компилятором clang с поддержкой C99, чтобы была возможность легко портировать современные single-header программы по типу эмуляторов, да и в целом не писать код на манер Ansi C, когда переменную нигде нельзя объявить кроме начала блока.
Далее я сутками игрался с компиляторами и пытался заставить выдать их подходящий для моих целей код и по итогу написал скрипт для линкера, который для простоты загрузки файла объединяет все секции в один .text (таким образом остаётся всего один Program Header):
И следующий набор опций для компилятора, который устанавливает архитектуру и целевой процессор, ABI для FPU, включает генерацию релокаций и отключает выравнивание в линкере для выходного файла (иначе файлы забиты нулями и весят целых 64Кб:
Когда компилятор наконец-то начал выдавать корректный код, я принялся писать сам эльфлоадер. За качество кода и отсутствие нормальной структуры не ругайте - это эмбеддед, тут можно ;))
На входе лоадеру поступает адрес загруженного в память эльфа и его длина. Задача эльфятника - верифицировать заголовок и убедится что он собран с подходящими параметрами:
// Read and verify ELF header Elf32_Ehdr* hdr = (Elf32_Ehdr*)data;
PRINT("Loading ELF..."); if(hdr->e_machine != EM_ARM) { PRINT("Not an EM_ARM executable");
Проанализировать таблицу заголовков с служебной информацией о том, что находится по тому или иному смещению в файле: загружаемая секция, таблица символов или строк, а затем загрузить все секции в участок памяти, который нам выдал аллокатор. На MMU-системах адрес должен быть выровнен по размеру страницы, иначе система не даст выдать страницам флаг EXEC!
PRINT("Processing program headers"); // Process program headers and determine total size for(i = 0; i < hdr->e_phnum; i++) { Elf32_Phdr hdr = sections[i];
if(!strTable || !symbols) { free(ret); PRINT(".strtab or .symtab not found");
return 0; }
А затем найти функцию ElfMain, которая служит точкой входа и пропатчить таблицу импортированных функций! На этом, загрузка эльфа завершена - можно устанавливать регистр R9 и вызывать Main!
PRINT("Relocation fix-up"); for(i = 0; i < relNum; i++) { Elf32_Rel rel = relocs[i]; int sym = ELF32_R_SYM(rel.r_info);
switch(ELF32_R_TYPE(rel.r_info)) { case R_ARM_ABS32: *((unsignedint*)&textSection[rel.r_offset]) += (unsignedint)textSection; break; case R_ARM_JUMP24: break; case R_ARM_CALL: break; default: PRINT("Unsupported relocation type"); } }
PRINT("Patching import table");
// Analyze symbol table and patch all imported function pointers to real counterparts for(i = 0; i < symNum; i++) { Elf32_Sym sym = symbols[i]; uint8_t* symName = &strTable[sym.st_name];
В Elf уже есть механизм импорта функций из сторонних библиотек, называется Platform Linkage Table. Для импорта функций прошивки, эльфлоадер Siemens использует SWI (сисколлы, что-то типа программных прерываний в x86 - int 10h и т.п.), Motorola же патчит thunk-функции на лету, которые сами вызывают настоящую функцию:
А я решил поступить несколько изящнее. В моем эльфятнике, функции импортируются с помощью специального макроса, который создаёт переменную-указатель на функцию, который изначально располагается в секции .functions. При этом с помощью ключевого слова asm, символу присваивается иное имя - с префиксом SYS_, которое означает то, что загрузчик эльфа должен пропатчить адреса функций на реальные (которые предварительно зарегистрированы в рантайме) в процессе загрузки программ и таким образом, избежать thunk-функций и позволить оптимизатору легко выкидывать указатели на неиспользуемые функции:
#ifndef LOADER #define IMPORT(name, ret, ...) __attribute__ ((section(".functions"))) ret (* name )( __VA_ARGS__ ) asm( "SYS_" #name ) #define IMPORTNOARGS(name, ret) __attribute__ ((section(".functions"))) ret (* name )() asm( "SYS_" #name ) #else #define IMPORT(name, ret, ...) ret name( __VA_ARGS__ ) #define IMPORTNOARGS(name, ret) ret name() #endif
Что самое забавное, лучший способ отладить эльфлоадер - в QEMU с GDB под Linux. Однако я решил время не терять и отлаживал его сразу на смартфоне с Windows Mobile. А раз WM стал первой поддерживаемой платформой - на нем мы с вами и реализуем рантайм.
❯ Портируем на Windows Mobile (CE)
Поскольку всю жизнь я сижу в основном на Windows, а WinAPI в CE практически полностью копирует десктопную версию, никаких проблем с портированием рантайма не возникло. Единственный выбор который передо мной встал: стоит ли прокидывать stdlib из хост-системы в "эльфятник", или же воспользоваться реализацией newlib в clang/gcc. В процессе портирования на другие платформы выяснилось, что нормально libc реализован, по сути, только на Windows, во все остальных реализациях были лишь самые основные функции по типу malloc, free, memcpy, strcmp и т.п. Поэтому я решил не городить велосипеды и прокинул из хост-системы лишь аллокатор - т.е malloc и free:
Далее я сразу решил, что платформозависимые функции для работы с дисплеем использовать не буду и из хост-системы мне нужен будет лишь указатель на фреймбуфер, а блиттинг, рисование текста и прочие операции я реализую сам. На первый взгляд может показаться что это единственное верное решение, однако на практике в некоторых телефонах (Motorola E398, Razr V3) активно использовались 2D GPU от ATI и Nvidia, которые рисуют (BitBLT) изображение значительно быстрее любой программной реализации.
Ниже представлена черновая реализация без преобразования пиксельформатов (поскольку на подавляющем числе телефонов использовался 565) и поддержки прозрачности через колоркей. Её можно оптимизировать до быстрого копирования по сканлайнам через memcpy:
С точки зрения отрисовки текста, нативные функции платформ тоже предоставляют крутые фичи по типу сглаживания, поддержки не-моноширинных шрифтов, множества кодировок, а также различные типы выравнивания. Но здесь встаёт вопрос с портативностью таких решений: разные рендеры шрифтов оперируют по разному и не все из них используют в качестве системы координат пиксели. Соответственно, я пошёл по олдовому "эмбеддерскому" пути и сделал обычные битмапные шрифты, которые (пока) статически слинкованы с самим эльфятником.
__inline int LcdDrawChar(LcdInfo* lcd, char chr, uint32_t x, uint32_t y, uint16_t color) { if(x >= 0 && y >= 0 && x + FONT_WIDTH < lcd->Width && y + FONT_HEIGHT < lcd->Height) { int i, j; unsignedchar* glyph = &embedded_font[chr * 8];
Вот теперь всё работает! Пришло время портировать эльфятник на весьма необычную платформу, о потенциалах моддинга которой знают единицы...
❯ Портируем на MRP/MRE
И имя этой платформе, вернее даже двумя платформам - MRP и WRE. Эти платформы использовались на бюджетных китайских телефонах с 2007 по 2016 год. Встретить их можно было везде: легендарная Nokla TV E71/E72, клоны 6700, бюджетные телефоны Fly/Explay/DEXP и даже в оригинальных телефонах Nokia на платформе S30+ (например 230)!
Легендарная "нокла"!
И хотя люди часто считали такие устройства бесполезными в плане установки сторонних приложений, многие ранние "нонейм"-телефоны поддерживали запуск нативных программ через небольшой костыль - установку специального "загрузчика" dsm_gm.mrp и ввод комбинации *#220807# в номеронабиратель. Конечно, знали об этом костыле единицы и в 2010 году MediaTek решила сделать свою платформу под названием MRE (MAUI Runtime Environment), приложения для которой можно было запускать прямо из проводника без установки! SDK для обеих платформ сейчас свободно лежит в сети.
Обе платформы, по сути, занимаются тем же самым, что и мой эльфятник - прокидывают нативные функции MMI (оболочка телефона) в приложения и для загрузки позиционно-независимых программ используют третий подход с регистром R9, который обязательно необходимо где-то хранить и восстанавливать. Изначально мой эльфятник использовал такой же подход, из-за чего я написал отдельный костыль для "свичнга" контекстов, причем восстановление R9 я делал в отдельной функции из-за бага ассемблера в ADS:
Но я не учел то, что MMI хоть и построены по event-based принципу, в них нельзя так просто взять и сделать while(true) {}, а необходимо использовать таймеры, что влечет за собой постоянные костыли с свичингом контекстов что по итогу только снижает производительность. По итогу я перешел на релокации и реализовал проброс таймеров.
Никаких отладчиков, программа что-то записала не туда? Ребут и сиди, отлаживай с printf!
Во всем остальном, MRP и MRE простые как табуретка, никаких проблем с пробросом ввода и графики не возникло:
И вот, наша программа уже запускается на двух совершенно разных ОС без каких либо проблем!
❯ А если что-то посложнее Hello, world?
Наверняка у читателя возникнет вопрос мол "окей, твой эльфятник может и способен запускать простые программы, но как насчет чего-то посложнее?". И конечно-же, для тестов я решил портировать не абы что, а целый эмулятор NES! В конце-концов, одна из целей разработки такого эльфятника - возможность запускать Java-игр и эмуляторов на многих кнопочных телефонах из нулевых.
Какое то время назад, я обнаружил весьма шустрый эмулятор NES от неизвестного разработчика из Китая. Код был неважного качества, никаких копирайтов в нём не было. Но поскольку сам эмулятор был быстрый (быстрее, наверное, только vNesC, который является прямым source-портом Java-эмулятора vNes на C), я отвязал его от целевой платформы и превратил в небольшую библиотеку для легкого портирования на любые платформы путем вызова всего нескольких функций:
switch(GetMainLoopType()) { case PLATFORM_LOOP_MMI_TIMER: EmuSetupTimer(); break; case PLATFORM_LOOP_REGULAR: EmuSetupRegularLoop(); break; }
return 100; }
А вот и результат:
❯ Заключение
Вот так и можно написать программу, которая бесшовно работает на трёх разных операционных системах, которые не имеют ничего общего друг с другом! На первый взгляд всё это кажется сложным, однако на практике очень просто и интересно! Нужно лишь взять дизассемблер в зубы и немножечко изучить то, что выдаёт компилятор.
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статью) можно найти на моём YouTube канале.
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Если вам понравилась сегодняшняя статья про разработку эльфов, то спешу объявить: для подготовки будущих материалов с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я сейчас занимаюсь, а затем написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)
А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны на Linux (например Motorola EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!
Есть у меня страсть к коллекционированию и ремонту интересных смартфонов прошлых лет. Недавно подписчик подарил мне весьма диковинный и необычный гаджет 2011 года: бюджетный QWERTY-смартфон Samsung Galaxy Y Pro с чипсетом от Broadcom. Помимо самого факта того, что смартфон обладал QWERTY-клавиатурой, меня также заинтересовало его кровное братство с Raspberry Pi первого поколения. Но вот незадача, смартфон не включался и просто висел на логотипе. Если вам интересен необычный кейс "отвала" eMMC и переноса Android на MicroSD-флэшку - жду вас под катом!
❯ Теория
Проблема "отваливающейся" памяти преследует смартфоны и планшеты с начала 2010х-годов. После массового перехода с NAND-накопителей на eMMC, многие смартфоны начали страдать от того, что в один прекрасный день зависали и затем больше не включались... или же включались, но бесконечно висели на заставке. Обычный пользователь нёс смартфон в сервисный центр, более продвинутый шёл на профильные ресурсы и скачивал прошивку... чтобы с грустью обнаружить, что ничего не помогает и смартфон всё так же висит на логотипе.
Происходит это из-за того, что для загрузки системе необходим доступ как минимум к трём разделам: system для чтения, а также data и cache для чтения и записи. У eMMC и современной UFS-памяти есть свой собственный контроллер в чипе, который по своим собственным параметрам определяет S.M.A.R.T накопителя и, если по его мнению, флэшка уже близка к "кончине", просто переводит её в режим Read only, из-за чего данные пользователя остаются на месте, но смартфон уже больше никогда не загрузится без вмешательства специалиста.
В теории всё замечательно: данные на месте, в сервисе просто вычитают дамп старой флэшки, подберут такой же или совместимый по корпусу новый чип, а затем запишут на него дамп и восстановят все данные без потери. Но на практике бывают определенные казусы: например, у некоторых чипов Samsung 2012-2014 года был баг в прошивке, из-за чего они полностью умирали с потерей всех данных, после чего смартфон вообще не подавал никаких признаков жизни (примеры: Galaxy S4 Mini в 9008, S4 Zoom, Note N8000), иногда eMMC просто уходила в полный ReadOnly (HTC Desire SV и некоторые другие HTC'шки 2011-2012 годов), а иногда чип уходил в ReadOnly лишь частично - операции записи просто заканчивались неудачей (предположительно из-за того, что бэды ремаппить уже просто некуда) и смартфон даже мог загрузится... правда все приложения постоянно крашились, а настройки телефон не сохранял.
Примерно так вышло и в моём случае. В январе, подписчик Андрей предложил подарить мне весьма необычный смартфон - Samsung Galaxy Y Pro. Читатель попытался его перепрошить, однако смартфон всё так же продолжал висеть на заставке. Конечно я согласился, причём мне из принципа хотелось разобраться в платформе и при возможности перенести всю систему на MicroSD-флэшку.
❯ Переносим на MicroSD
После того как смартфон приехал ко мне, я убедился в том, что он действительно висит в бутлупе и никак не реагирует ни на сброс до заводских настроек через рекавери, ни на прошивку. Смартфон всё также продолжал висеть на бутанимации - а значит мы можем сделать вывод, что ядро Linux уже загрузилось и сам смартфон перешёл в последнюю фазу загрузки - запуск zygote и "отпочковывание" от него app_process.
Чтобы понять, что всё это значит - давайте вкратце рассмотрим процесс загрузки Android:
Старт BootROM, SPL и загрузчика: После включения смартфона или подключения ЗУ, контроллер питания даёт разрешение на запитывание всех модулей устройства. После этого, процессор начинает выполнять код загрузчика, однако поскольку ни NAND, ни eMMC не поддерживают XIP (eXecute In Place - возможность подключить флэшку прямо в шину процессора, на манер ROM в спектруме), первым делом процессор выполняет код из BootROM - небольшого, физически прожженного в небольшую ROM-память на заводе загрузчика, в задачи которого входит экстренный режим восстановления при окирпичивании устройства (MTK USB Port на MediaTek, 9008 на Qualcomm, FEL на AllWinner) и загрузка вторичного загрузчика из eMMC/NAND - SPL (на MediaTek называется Preloader). В его задачи входит инициализация ОЗУ и передача управления вторичному загрузчику - тот самый, который вы, возможно, захотите разблокировать и который загружает ядро Linux.
Но вот нюанс, на чипсетах Broadcom BootROM'а нет: там запуском ARM-ядер занимается GPU VideoCore, который по своей натуре - векторный DSP! Так что Y Pro интересен ещё и этой малозначимой, но забавной деталью :)
Linux: Обычно ядро хранится не в сыром виде, а в специальном разделе boot/recovery и представляет из себя образ zImage + рамдиск. На этом рамдиске хранятся минимально-необходимые для старта устройства программы: init, busybox (не всегда) и... всё!
Формат таких образов условно стандартизирован и их можно разобрать и собрать с помощью специальных программ. Например, AndImgTool!
init: Далее самая главная программа с PID 0 - init, запускает набор скриптов в корне рамдиска с расширением .rc. В скриптах содержатся обработчики событий (early-boot, boot, late-boot и т.п), а также список служб для запуска. В скриптах идёт монтирование разделов, запуск служб если это нужно, создание ссылок, загрузка динамических модулей и конфигурация драйверов/ядра, а также режима USB и adb. Помимо этого, init отвечает за properties - свойства в build.prop, а также default.prop, которые позволяют включить adb даже если устройство не загружается. Это нам позже пригодится.
app_process: После того, как раздел system примонтирован, RIL запущен и другие важные операции выполнены - rc-скрипт запускает наконец-то app_process с параметром zygote. Это самый важный процесс в Android, его краш ведет к "мягкой перезагрузке" - т.е появлению анимации загрузки и появлению рабочего стола. app_process - это как-бы Java-машина Dalvik (или ART в Android 5.1+), аналог java.exe, только размножается она методом почкования - с помощью системного вызова fork.
Ну и когда все службы работают - устройство показывает рабочий стол и вызывается событие ON_BOOT_COMPLETE.
Да, всё вот так просто. Итак, основываясь на сказанном выше, как мы можем перенести Android на MicroSD? Правильно, пропатчив скрипты загрузки так, чтобы они монтировали систему и раздел data с cache не с внутреннего накопителя, а с флэшки. Но для патча необходимо чтобы eMMC была хоть сколь-либо перезаписываема.
Сначала я попытался установить кастомную прошивку с помощью CWM (он здесь не перепрошивается навсегда, а запускается с помощью бага в update.zip) и заметил, что поведение смартфона поменялось: он просто висел на первичном логотипе и не загружал даже бутанимацию. А значит какие-то операции перезаписи завершились ошибкой и init либо не может примонтировать system, либо там у нас там творится бардак. Но что-то ведь всё таки перезаписалось, а после перепрошивки родной системы смартфон снова начинал показывать бутанимацию... значит, флэшка не полностью в readonly?
Я решил пропатчить boot.img, активировав в нём режим отладки через USB, дабы посмотреть что творится у нас в dmesg. Для этого я распаковал образ с помощью AndImgTool, открыл файл default.prop и заменил свойства ro.secure = 0, ro.debuggable = 1, а также persist.service.adb.enable = 1
Samsung в те годы ещё не блокировал загрузчики и прошить произвольный раздел можно было фирменным флэшером. Для этого необходимо было создать tar-архив, куда положить образ (например boot.img), выбрать его в программе и нажать "Start".
После прошивки, смартфон всё также висел на заставке... но определился в диспетчере устройств и команда adb devices показала, что смартфон подключен. Значит, раздел перезаписался и только часть eMMC ушла в readonly! Те разделы, которые никогда не перезаписываются (куда входит system, boot, recovery и SPL) - в норме?
Пишем dmesg и... видим как драйвер eMMC флудит в printk об ошибках перезаписи в раздел /data/. А ведь я говорил о том, что Android для загрузки этот раздел обязательно нужен!
Но что же за stl11, если в Linux принято называть eMMC-устройства mmcblk? Давайте посмотрим в init.rc:
Разделы используют какую-то самопальную файловую систему RFS (что-то проприетарное от Samsung), а также J4FS, вместо общепринятых YAFFS или EXT4. Давайте сделаем логический вывод: если раздел system и efs (с настройками модема) у нас в норме и никогда не перезаписывается, а после загрузки ядра, Android нужны для перезаписи data и cache... значит можно просто перенести эти разделы на MicroSD, а init.rc заставить монтировать разделы именно оттуда!
Для этого мы берём MicroSD-флэшку и с помощью fdisk бьём её на три раздела: один будет для /data/ (30% от ёмкости MicroSD - или хотя-бы 256Мб), второй для /cache/ около 64Мб и третий для обычных файлов. Затем форматируем первый и второй разделы в ext2 с помощью программы mke2fs, а третий - в обычный FAT32 (или тоже ext2, по желанию).
Далее прописываем новые точки монтирования в init.rc, собираем boot.img и прошиваем в смартфон:
И, спустя пару минут загрузки... нас встречает рабочий стол! Радости нет предела :) Но некоторые читатели могут усомнится в юзабельности всей этой затеи, ведь MicroSD как минимум в десять раз медленнее eMMC... Но всё ли так плохо? Давайте посмотрим на практике!
❯ Тестируем
Поскольку смартфон у нас с QWERTY-клавиатурой и горизонтальным дисплеем, здесь лаунчер подогнан под частичное управление с кнопок, при этом стоить иметь ввиду, что далеко не каждое приложение адаптировано для такого DPI. Тачскрин тоже есть, причём емкостной, что не может не радовать. Дисплей выполнен по технологии TN, разрешение - всего 240x320, что в целом совсем немного для смартфона, но вполне нормально для QWERTY-бюджетника тех лет.
Под капотом скрывается чипсет от Broadcom - BCM21553 с одним ядром ARM1136, работающем на частоте 832МГц. И да, это ARMv6 ядро, что значительно сужает круг поддерживаемых игр и приложений. Когда-то на 4pda даже был отдельный клуб владельцев смартфонов на этом чипсете, где люди жаловались на отсутствие поддержки ARMv7! Также в смартфоне установлено 384Мб DDR2 ОЗУ и 512Мб постоянной памяти.
В качестве GPU используется ядро собственной разработки Broadcom - VideoCore IV. И оно тоже было предметом критики на профильных форумах. Все дело в том, что как и у GPU от Samsung - FIMG, у VC IV были плохие драйвера для GLES - что было критично для игр тех лет. Поскольку большинство релизов оптимизировалось на Qualcomm Adreno и Mali, во многих играх на Y Pro были белые текстуры, или же графические артефакты.
Для сравнения: Raspberry Pi Model A и B - братья данного смартфона, которые в аппаратной части похожи почти во всем. Теперь мы с вами выяснили, что смартфон представляет определенный коллекционный интерес для любителей гаджетов на необычных процессорах!
Производительность смартфона после переноса части системы на MicroSD упала лишь немного. Девайс всё ещё продолжает относительно плавно работать, нет каких-то явно медленных подгрузок и тормозов. Многие приложения работают хорошо, однако лаги не исключены:
Но можно ли назвать смартфон бесполезным в наше время? Я думаю, что нет, определенный набор задач он все еще способен выполнять. Например, серфинг в сети - самый базовый просмотр страниц всё ещё можно осуществить с помощью Opera Mini 7, которая до сих пор продолжает работать спустя 10+ лет после релиза. Многие страницы отображаются некорректно, ни о каких сайтах с интерактивом и речи не идет... но почитать Википедию или Хабр всё равно можно!
При условии отключения проверки сертификатов (Защита -> "SSL (Принимать все)") и использования одноразовых паролей, можно использовать почтовый клиент. Работает шустро, однако пуши не поддерживает, поэтому сообщения будут проверяться с интервалом в ~5мин.
Также можно посидеть в мессенджерах. Я писал клиенты ВК и ТГ (работает через прокси) для смартфонов с Android 1.5+ и запускал их даже на первом серийном Android-смартфоне в мире и они здесь работают вполне неплохо. Об официальных клиентах и речи не идет - Android 2.3 слишком сильно устарел по мнению большинства разработчиков.
И конечно можно поиграть. Начиная от Java-игр, в которые играть вполне удобно благодаря наличию аппаратных кнопок, заканчивая эмуляторами консолей, которые в большинстве своём здесь летают и нативными играми. Таким образом, старенький смартфон превращается в миниатюрную портативную консоль. Единственный нюанс - VC IV совсем уж слабенький GPU, когда заходит вопрос запуска 3D-игр. Даже Raging Thunder 2 со своим замечательно оптимизированным рендером здесь иногда чуточку подтормаживает, при том что она же идеально работает на Adreno 200 (ATI Z430), Mali-300 и даже Vivante GC-600!
Пусть круг задач и не слишком широкий, но смартфон всё равно очень интересный и крутой :)
❯ Заключение
Вот такая статья о восстановлении необычного смартфона из 2011 года у нас с вами получилось. Надеюсь, вам было интересно и полученные знания вам пригодятся. Ну а если будут какие-то вопросы по поводу возможности переделки смартфона на загрузку с MicroSD - не стесняйтесь спрашивать в комментариях!
Что думаете насчет переноса Android на MicroSD?
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет - подписывайтесь на мой Telegram-канал "Клуб фанатов балдежа", куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А видеоверсии статей можно найти на моём YouTube канале.
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)
А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!
А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам.