Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
 Что обсуждали люди в 2024 году? Самое время вспомнить — через виммельбух Пикабу «Спрятано в 2024»! Печенька облегчит поиск предметов.

Спрятано в 2024

Поиск предметов, Казуальные

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
287
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
1 день назад

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно⁠⁠

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Пожалуй, все мы с вами любим диковинные гаджеты из 2000-х годов, когда производители всё ещё пытались удивить пользователя некой изюминкой. Таким необычным устройством был и предок современных планшетов — MID SmartQ V7, где за цену в 150$, производитель предлагал неплохое железо, приятный дисплей и целых три предустановленных операционных системы!

Что было «под капотом» у первых планшетов и что умел «дедушка» современного iPad с Android, Ubuntu и Windows CE «на борту» — читайте в сегодняшней подробной статье!

❯ Предыстория

Планшеты — достаточно интересный класс устройств, который за всё время существования пережил недоступность, подъём и даже в какой-то степени забвение. Их история началась ещё в конце 80-х годов с выходом GRiDPad 1900, который представлял из себя небольшой x86-компьютер с полноценным HDD, резистивным тачскрином и MS-DOS на борту:

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Фото с сайта https://randoc.wordpress.com/

Планшет хоть и был популярен в узких кругах, но до массового рынка ему было ещё далеко — стоимость в 3 750$ была по карману далеко не каждому заинтересованному пользователю. Однако в 90-х годах концепция планшетов и приближенных к ним устройств только развивалась. Сначала вышел Apple Newton в 1993 году по цене в 990$, а в 1996 году — уже и доступный КПК Palm Pilot 1000 по 299$.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

И хотя Pilot — это именно КПК, чаще всего их использовали для тех же целей, что и современные планшеты

Но настоящий бум случился в 2005 году, когда Nokia на LinuxWorld Summit представила принципиально новое устройство — 770 Internet Tablet. Как становится ясно из названия, этот гаджет был предназначен для серфинга в интернете, однако благодаря Linux-дистрибутиву Maemo, он мог выполнять и другие функции обычного компьютера.

Дело в том, что в отличии от той же самой Motorola, которая использовала MontaVista Linux в своих телефонах на платформе EZX, Nokia сразу позиционировала свои гаджеты как открытые и созданные специально для гиков. После выхода устройства, Nokia опубликовала SDK для портирования существующих и разработки новых программ — благодаря чему список доступного софта постоянно расширялся и даже спустя 20 лет после релиза, коммьюнити Maemo всё ещё поддерживает их!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Гаджет использовал стандартный стек технологий, знакомый любому линуксоиду: X11, GTK2, D-Bus, systemd

В 2008 году Intel представляет новое семейство энергоэффективных процессоров под названием Atom, а параллельно с ними концепцию MID — Mobile Internet Device, то есть портативных компьютеров с возможностью выхода в сеть. И вот тут-то началось!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Прототип MID от Intel

К 2010 году на рынке мобильных чипсетов случился бум: новые процессоры выходили буквально каждые полгода, их функционал и производительность росли обратно пропорционально цене. Чипы ОЗУ и флэш-памяти тоже стремительно дешевели, а TN-TFT дисплеи пристойного разрешения уже стоили отнюдь не как крыло от Боинга. Воспользовавшись моментом, несколько китайских компаний представили как минимум 3 модели, которые выбрались за пределы локального рынка в Китае. Одним из таких был и герой сегодняшней статьи — SmartQ V7!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

В 2010 году успех Android всё ещё не был очевиден. Некоторые производители продолжали продвигать свои платформы (например Bada), да и для Android ещё было разработано не так много полезного софта. Поэтому когда перед инженерами встал выбор операционной системы, они долго не думали... и решили установить в одно устройство целых три ОС: Android, Ubuntu и Windows CE, а для переключения между ними написали собственный загрузчик!

О SmartQ V7 я узнал в начале этого года, когда исследовал китайские барахолки. Мне даже удалось раздобыть один экземпляр к себе в коллекцию, но из-за особенностей загрузчика (о которых мы поговорим позже), я окирпичил свой экземпляр... Но затем на мои поиски этого устройства откликнулся пользователь с 4pda под ником spbplus (его канал на Дзене) и согласился безвозмездно отправить мне гаджет, за что ему огромное спасибо!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Полноразмерный USB 2.0, HDMI, разъем зарядки как у Nokia и ножка — неотъемлемые атрибуты гаджетов тех лет!

Давайте же по классике разберем наше устройство и узнаем, что здесь скрывается «под капотом»!

❯ Что внутри?

В конструктивном плане гаджет выполнен очень необычно. И дело не только в дизайне и наличию ножки, но и сборке: сразу видно, что бюджеты на разработку и производство устройства были очень сильно ограничены.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Разбирается гаджет несложно, но весьма хитро: сначала необходимо открутить 4 винта с обратной стороны корпуса и расщелкнуть фронтальную панельку. А далее начинаются основные «приколы» бюджетного инжиниринга: плата с фронтальными кнопками буквально приклеена к средней части корпуса, а к ней вручную припаяны как SMD-кнопки, так и межплатный шлейф вместе с проводами питания подсветки дисплея. При этом никто даже не заморачивался с отмывкой флюса — и так сойдет!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Из-за материала плёнки, как дисплей не вытирай — всё равно будут оставаться небольшие пылинки!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Уже виднеется обвязка процессора!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

В качестве сердца устройства, здесь используется система на кристалле TeleChips TCC8902, которая состоит из одного ARM1176-ядра, работающего на частоте 800МГц, контроллера DDR2-памяти, видеоускорителя Mali-200 (в отличии от Mali-400, о существовании Mali-200 слышали единицы), а также периферийных контроллеров по типу USB, SPI, I2C, UART. Помимо этого, TCC8902 поддерживает вывод видео на множество разных источников, начиная от HDMI, заканчивая NTSC/PAL.

Выше процессора расположилась микросхема EEPROM-памяти AT88 производства Atmel. Что на ней хранится — мне неизвестно, вполне возможно что ID чипа или, что гораздо хуже, конфигурация NAND-контроллера (программаторы под эти чипы очень дорогие, а у меня «запорота» именно она).

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Столько всего в одном маленьком чипе!

Чуть правее процессора расположилось два чипа оперативной памяти производства Samsung, объёмом по 128МБ каждый. В целом, 256МБ были стандартным объёмом ОЗУ почти для всех портативных гаджетов тех лет. Даже в первом iPad был именно такой объём оперативной памяти!

Почти на самом верху платы расположился чип NAND флэш-памяти производства всё той-же Samsung, объёмом в 2ГБ. В целом, это объём характерный для MP3-плееров и совсем неясно, как на таком чипе уживаются аж три операционные системы!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

А вот у Galaxy Tab 7.0 было аж 512МБ оперативной памяти!

Слева расположился аудиокодек Wolfson WM8987G, отвечающий за вывод и запись звука, а также усилитель для стереодинамиков. Чуть ниже расположился чип M1530DM, выполняющий роль повышающего DC-DC преобразователя для подсветки дисплея, а рядом с коннектором шлейфа дисплея расположился неопознанный контроллер питания, который также выполняет функции чарджера.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

В качестве дисплея используется классическая 60 pin RGB матрица. Такую можно достать с многих планшетов тех лет!

Питает весь планшет литий-ионный аккумулятор с номинальным напряжением в 3.7В, что несвойственно для планшетов тех лет. Обычно ставили две последовательно соединенные банки. Интересно то, что аккумулятор до сих пор держит заряд и не вздулся — даже спустя 15 лет после выхода планшета на рынок. Достойный результат!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Вот и весь конструктив планшета. Как известно, всё гениальное — просто. И планшет, который в отличии от конкурентов, стоил всего 150$ — это тоже своего рода достижение и шедевр технологической мысли! Ну, что у него внутри мы узнали, а как он проявлял себя на практике? Давайте включим и узнаем!

❯ Включаем...

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Однако с этим загрузчиком был определенный нюанс. Дело в том, что большинство V7'ых и V5'ых, которые можно найти сейчас на вторичке, частично окирпиченные. Из-за своеобразного механизма разметки разделов, для установки обновленных версий Android, WinCE и Linux требовалось обновление загрузчика — так называемая смена с «синего» на «фиолетовый». Однако планшет никак не был защищен от даунгрейда прошивки, что превращало его в кирпич при попытке установить старый загрузчик поверх обновленного.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

На втором экземпляре SmartQ V7 у меня грузился только Android, остальные две системы не работали, но подготовка флэшки с обновленными образами WinCE и Ubuntu решила проблему (и сломала Android, а в веб-архиве архив битый). Скачать образы ОС можно здесь, для установки достаточно лишь скопировать их в корень SD-карты и включить планшет с зажатой кнопкой действия.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Изначально я решил загрузиться в Ubuntu и она сюда портирована довольно неплохо. В качестве рабочего стола используется модифицированная оболочка OpenBox с пакетом дополнительного софта. Производительность системы не впечатляет, но совсем уж «лагодромом» гаджет назвать нельзя. А вот за что его можно поругать — так это за резистивный тачскрин, который с годами начал выдавать фантомные нажатия (и дело не в грязи под рамками)...

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Как сюда пропатчить KDE2?

При разработке девайса, SmartQ явно оглядывалась на идейного вдохновителя — Nokia 770 Internet Tablet. Многие элементы интерфейса повторяют Maemo, но при этом, как и в прародителе, пользователь никак не ограничен в модификации своего собственного устройства. Прямо из менюшки можно открыть терминал, запатчить sources.list и накатить deb-пакеты из репозитория с помощью apt.

Но если пользователь был новичком, он мог поставить пакеты с помощью GUI-программы. Не Ubuntu Store, но тоже ничего.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

По строке Hardware в ядре, мы сразу видим куда идут корни устройства — к референсной плате Telechips!

Впрочем, несмотря на явно гиковское направление данного гаджета, он вполне подходил и рядовому пользователю. Из коробки были доступны самые разные программы, включая просмотр документов (для чтения книг), текстовый редактор и медиаплеер VLC. Путём установки устройства на ножку и подключения хаба в полноценный USB 2.0-разъём, можно было получить почти полноценный самостоятельный компьютер, а если подключить его к телевизору с помощью HDMI — так вообще медиацентр с выходным разрешением в 1080p!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Для подключения к сети, в планшете есть Wi-Fi. Однако если возможности подключится к точке доступа не было, к планшету можно было подключить самый обычный 3G-модем и работал он не только в Linux, но и Android! Правда, аккумулятор в таком случае высаживался ещё быстрее!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Ну и куда-же без браузера! В качестве основного здесь используется Midori на базе движка WebKit. Но несмотря на то, что я успешно подключился к сети, мне не удалось открыть ни Linux.org.ru, ни OpenNet — сайт, который открывает даже PocketIE. К сожалению, сборок Chromium под ARMv6 в те годы не было, а FireFox будет слишком медленным, так что наш максимум — это Dillo.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Как перестать намеренно убирать TLS 1.2 — так это "безопасность", а как показывать заглушки доменов - так это хоть на IE 1.0!

Далее я загрузился во вторую из трёх доступных систем — Windows CE. И вот здесь картина была менее радужной, поскольку порт WinCE на Evaluation-board был ну очень кривым. Например, при переключении режима USB из Client в Host — планшет зависал, а тачскрин работал некорректно и откалибровать его возможности не было из-за кривой реализации драйвера (он эмулирует мышь, а не реализует стилус, как должно быть).

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Но к теме 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.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Подготовлено при поддержке @Timeweb.Cloud

Показать полностью 24 1
[моё] Опрос Гаджеты Покупка Планшет Android Linux Unix Моддинг Своими руками Ретроспектива Обзор Apple Длиннопост
34
28
Hagallaz
Hagallaz
27 дней назад
GNU/Linux

Набор тем для SDDM⁠⁠

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

Естественно актуально для пользователей linux :)

Для тех кто захочет развернуть подобное у себя ссылка на gihub с инструкциями, естественно всё бесплатно и для вашего удовольствия.

Демонстрация проводится в тестовом режиме, поэтому немного в жизни может отличаться.

Показать полностью 1
[моё] Linux Тема Оформление Unix Gnome Kde Анимация Заставка Видео Длиннопост
12
2
BSD.Fan
BSD.Fan
1 месяц назад
Сообщество любителей UNIX

Фундамент всего современного ИТ⁠⁠

Хорошее видео о языке с которого началась эра компьютеров как инструментов для всех (видео не моё, но на мой взгляд хорошее):

Unix YouTube Видео
0
1246
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
2 месяца назад

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции⁠⁠

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

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

Недавно я задался вопросом: а возможно ли написать для ARM нативную программу, которая будет бесшовно работать сразу на 4-х операционных системах без необходимости перекомпиляции для разных платформ и ABI. Мне очень хотелось реализовать возможность писать кроссплатформенные эльфы для мобильных телефонов из нулевых и попытаться портировать на них эмуляторы ретро-консолей. Погрузившись в документацию на исполняемые форматы, я пришёл к выводу, что да - это возможно и смог реализовать такую программу на практике без читерства по типу VM! Всех гиков приглашаю под кат!

❯ Зачем и почему?

Давным-давно, в далёком 2001 году, мир увидел легендарный японский телефон - Sony CMD-J70. Ещё до создания совместного подразделения с Ericsson, Sony выпускала достаточно занимательные девайсы, которые привлекали внимание не только рядовых пользователей, но и моддеров всех мастей. Уже через пару лет после выхода, в программном плане телефон копали все кому не лень: кто-то менял графику, кто-то писал патчи, а со временем написали даже бинлоадер (PRGLoader) - загрузчик внешних "экзешников", позволявший запускать на телефоне произвольный софт, написанный на ассемблере!

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Сейчас сложно себе представить, но в те годы это был нереальный отвал башки: на большинстве телефонов были доступны разве что Java/Mophun-приложения, которые обладали ограниченным функционалом и уж тем более не позволяли лезть в дебри прошивки телефона, а здесь были программы которые буквально позволяли делать с телефоном всё что захочешь: светомузыку из подсветки, кастомные игры, обои на главный экран... всё это было доступно только на куда более дорогих смартфонах с Symbian и Windows Mobile на борту!

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Недавно мы с вами вспоминали о легендарном Siemens M55 и узнали, что у него находится под капотом. Несмотря на диковинную архитектуру Infineon C166, даже под этот телефон делались патчи и была написана как минимум одна кастомная игра. Но рассвет моддинг-сцены Siemens произошёл с выходом платформы S-Gold на базе стандартного ядра ARM926EJ-S, когда в ~2004 году энтузиасты полностью взломали алгоритм генерации BootKEY для загрузчика, а затем в 2006 году реализовали полноценный эльфлоадер, который позволял загружать программы написанные на C и скомпилированные самым обычным компилятором ADS. В отличии от бинлоадера для CMD-J70, "эльфятник" позволял угонять функции RTOS для создания потоков и привносил в бюджетные телефоны полноценную вытесняющую многозадачность с настоящим диспетчером задач и возможностью запуска несколько программ одновременно:

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Единицы читателей поймут, что происходит на данной фотографии...

Энтузиасты раскапывали прошивку в дизассемблере, изучали её и пытались понять как работают разные её подсистемы. Результатом стало появление нативного клиента почты с предком пуш-уведомлений, аськи (NatICQ), порты самых разных эмуляторов ретро-консолей и даже полная программная поддержка MP3 в тех телефонах, где её отродясь не было! И представьте себе, почти все эти программы можно было свернуть и продолжить работу в браузере или, например, Card Explorer'е! Одним из эльфописателей был Хабровчанин @ilya_ZX

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Но если вы думаете что одними телефонами Siemens энтузиасты были едины, то вы ошибаетесь - ведь круче были только "моторолки"! В 2004-году, недорогая Motorola E398 с двумя громкими динамиками, светомузыкой и поддержкой MicroSD-флэшек, стала настоящим бестселлером и привлекла к себе не меньше энтузиастов, чем Siemens. Ребята сплотились на форуме MotoFan, нашли уязвимость в загрузчике и хакнули верификацию RSA-подписи у прошивок, позволив не только модифицировать Seem'ы (что-то типа NVRAM), но и создавать для телефона кастомные прошивки - монстрпаки, которые прибавляли громкость и без того не самым тихим динамикам и в различных аспектах изменяли главное меню устройства. Со временем, @Andy51 и ещё несколько энтузиастов реализовали эльфлоадер (EP1) для E398, раскопали прошивку и написали много полезного софта, время от времени переключаясь на Linux-телефоны от Motorola...

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Вероятно многие читатели подумают мол "было и было, мой айфон/сяоми может запускать любой произвольный софт и эти ухищрения давным-давно неактуальны...". Но как бы не так: про моторолки и сименсы не просто всё чаще вспоминают, у них есть до сих пор активное моддерское коммьюнити, которое продолжает пилить для них кастомный софт и далее колупать прошивку. Всё тот же @EXL портировал крутой софтрендер для E398 и в 2025 году наконец-то взломал C350, @Azq2 пилит аппаратный эмулятор Infineon S-Gold и многие другие делают свой вклад в моддинг сцену уже не таких мейнстримных, но отнюдь не устаревших устройств!

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Однако порог вхождения для написания эльфов достаточно высокий: нет никакой отладки кроме printf, любая ошибка в приложении приводит к зависанию или ребуту телефона (на сименсах с характерным "пик"), а API напрямую импортируется из прошивки телефона и может быть достаточно комплексным - ни о каких кроссплатформенных эльфах и речи не идет. Поэтому в какой-то момент мне стало интересно: а возможно ли написать такой эльфлоадер, который за своим рантаймом будет прятать детали реализации работы с аппаратной начинкой телефона и при этом загружать один и тот же бинарник на всех поддерживаемых платформах без особых патчей и изменений? Принявшись за изучение ABI ARM и спецификации Elf, я начал дизассемблировать и изучать самые маленькие тестовые программы...

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

❯ Формат ELF, ABI ARM и тулчейн

Начнём с самого простого: что же такое эти самые эльфы? Elf - формат исполняемых файлов, широко применяемый как в мире Unix-систем, так и в embedded-устройствах. Самые распространенные тулчейны - GCC и clang/llvm, по умолчанию собирают программы именно в этом формате и по своей сути, это прямой аналог .exe (PE) файлов из Windows. Помимо кода, Elf также содержит в себе множество секций и различных данных, при этом разработчики формата старались сделать его настолько гибким, чтобы его можно было использовать на любых архитектурах: от x86, до risc-v.

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

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

.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, если архитектура предусматривает их наличие.

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост
  • Релокацией занимается динамический линкер или интерпретатор в мире Unix (тот самый ld.so, что часто "not found" :) ), а самих релокаций есть много разных видов в зависимости от архитектуры процессора. В ARM чаще всего встречается R_ARM_REL32

  • Второй способ заключается в том, что мы компилируем программу так, будто она должна загружаться по фиксированному адресу 0x0 - то есть без PIC, однако просим линкер (--emit-relocs) создать информацию о всех обращениях к памяти в виде всё тех же релокаций. Вместо R_ARM_REL32, линкер создаёт релокации R_ARM_ABS32, которые можно разрешить обычным сложением.
    С таким подходом количество релокаций кратно увеличивается, однако из-за отсутствия GOT немного повышается быстродействие программы (вместо трёх LDR для загрузки слова из памяти нужно всего два: из Literal pool в регистр и затем из фактической памяти).

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Пример релокаций для эмулятора NES

Третий способ поддерживается не везде, но в ARM он является одним из самых распространенных в embedded-среде: код собирается с флагами /rwpi и /ropi полностью не зависит ни от GOT, ни имеет каких либо релокаций. Вместо этого, для адресации базового адреса программы он использует выделенный регистр R9, который загрузчик должен заполнить адресом, куда он загрузил программу (mov r9, textSectionBase). Такой подход теоретически чуточку быстрее, чем GOT, но медленнее второго подхода из-за необходимости добавлять сложение регистра с PC перед каждым фетчем из памяти.

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Поскольку в телефонах MMU обычно не используется, эльфлоадеры загружают программы по тому адресу, что им выделяет системный аллокатор памяти и вынуждены использовать PIC. Чаще всего используются релокации (как минимум на Siemens и Motorola), на некоторых платформах используется второй подход с использованием регистра R9.

Для большей гибкости, я решил выбрать второй подход и построить свой эльфлоадер поверх уже существующих загрузчиков, обернув API прошивок в ряд собственных стандартизированных функций: работа с дисплеем, вводом, файлами, а также звуком. При этом эльфы должны собираться современным компилятором clang с поддержкой C99, чтобы была возможность легко портировать современные single-header программы по типу эмуляторов, да и в целом не писать код на манер Ansi C, когда переменную нигде нельзя объявить кроме начала блока.

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Далее я сутками игрался с компиляторами и пытался заставить выдать их подходящий для моих целей код и по итогу написал скрипт для линкера, который для простоты загрузки файла объединяет все секции в один .text (таким образом остаётся всего один Program Header):

OUTPUT_FORMAT("elf32-littlearm")
SECTIONS
{
. = 0x0;
.text : {
*(.r9ptr)
*(.text*)
*(.data*)
*(.bss*)
*(.rodata*)
*(.functions)
}

.rel : {
*(.rel*)
}

/DISCARD/ : {
*(.ARM.*)
}

}

И следующий набор опций для компилятора, который устанавливает архитектуру и целевой процессор, ABI для FPU, включает генерацию релокаций и отключает выравнивание в линкере для выходного файла (иначе файлы забиты нулями и весят целых 64Кб:

CLANGFLAGS = -mno-unaligned-access -O3 -ffast-math -ffixed-r9 -T ld.script -target armv5e-none-eabi -nostartfiles -fno-exceptions -fno-rtti -mfloat-abi=soft -I$(ELFROOT) -Ilibnesemu/
LDDFLAGS = -Wl,-zmax-page-size=1,--emit-relocs

Когда компилятор наконец-то начал выдавать корректный код, я принялся писать сам эльфлоадер. За качество кода и отсутствие нормальной структуры не ругайте - это эмбеддед, тут можно ;))

На входе лоадеру поступает адрес загруженного в память эльфа и его длина. Задача эльфятника - верифицировать заголовок и убедится что он собран с подходящими параметрами:

// 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");

return 0;
}

if(hdr->e_ident[EI_DATA] != PLATFORM_ELF_ENDIANESS)
{
PRINT("Endianess mismatch");

return 0; // Wrong endianess
}

Проанализировать таблицу заголовков с служебной информацией о том, что находится по тому или иному смещению в файле: загружаемая секция, таблица символов или строк, а затем загрузить все секции в участок памяти, который нам выдал аллокатор. На MMU-системах адрес должен быть выровнен по размеру страницы, иначе система не даст выдать страницам флаг EXEC!

ret = (ExecInfo*)ExecAlloc(sizeof(ExecInfo));

sections = (Elf32_Phdr*)(&data[hdr->e_phoff]);
sh = (Elf32_Shdr*)&data[hdr->e_shoff];
symSectionIndex = hdr->e_shstrndx;
codeSize = 0x0;

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(hdr.p_type == PT_LOAD) {
if(hdr.p_offset == 0x0)
continue;

codeSize += hdr.p_memsz;
}
}

PRINT("Allocating memory for .text");

textSection = (char*)ExecAlloc(codeSize);
textOffset = textSection;

ret->CodeSection = textSection;

if(!textSection)
{
free(ret);
PRINT("Failed to allocate .text section");

return 0;
}

Далее найти секцию с таблицей символов и с строками, где содержатся имена символов:

PRINT("Analyzing section table");
for(i = 0; i < hdr->e_shnum; i++)
{
Elf32_Shdr sec = sh[i];

if(sec.sh_type == SHT_STRTAB && i != hdr->e_shstrndx && strTable == 0)
{
strTable = &data[sec.sh_offset];
PRINT("Found string table");
}

if(sec.sh_type == SHT_SYMTAB)
{
PRINT("Found symbol table");
symbols = (Elf32_Sym*)&data[sec.sh_offset];
symNum = sec.sh_size / sizeof(Elf32_Sym);
}

if(sec.sh_type == SHT_REL && relocs == 0)
{
UtilPrint("Found relocations");
relocs = (Elf32_Rel*)&data[sec.sh_offset];
relNum = sec.sh_size / sizeof(Elf32_Rel);
}

if(sec.sh_type == SHT_RELA)
{
PRINT("Found unsupported relocation types");
return 0;
}
}

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:
*((unsigned int*)&textSection[rel.r_offset]) += (unsigned int)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];

int symType = ELF32_ST_TYPE(sym.st_info);

if(symType == STT_OBJECT && strstr((const char*)symName, "SYS_"))
{
int funcNumber = ExecFindFunction(symName);

if(funcNumber == -1)
{
PRINT("Failed to import function: ");
UtilPrint((char*)symName);
PRINT("");

continue;
}

//drawDebug(FuncExportTable[funcNumber].Pointer == 0 ? "Not OK" : "OK");

*((unsigned int*)&textSection[sym.st_value]) = (unsigned int)FuncExportTable[funcNumber].Pointer;
}

if(symType == STT_FUNC && strstr((const char*)symName, "ElfMain"))
{
PRINT("ElfMain function is found");

ret->Main = (ExecMainFunction)&textSection[sym.st_value];
}

В Elf уже есть механизм импорта функций из сторонних библиотек, называется Platform Linkage Table. Для импорта функций прошивки, эльфлоадер Siemens использует SWI (сисколлы, что-то типа программных прерываний в x86 - int 10h и т.п.), Motorola же патчит thunk-функции на лету, которые сами вызывают настоящую функцию:

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

А я решил поступить несколько изящнее. В моем эльфятнике, функции импортируются с помощью специального макроса, который создаёт переменную-указатель на функцию, который изначально располагается в секции .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 стал первой поддерживаемой платформой - на нем мы с вами и реализуем рантайм.

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

❯ Портируем на Windows Mobile (CE)

Поскольку всю жизнь я сижу в основном на Windows, а WinAPI в CE практически полностью копирует десктопную версию, никаких проблем с портированием рантайма не возникло. Единственный выбор который передо мной встал: стоит ли прокидывать stdlib из хост-системы в "эльфятник", или же воспользоваться реализацией newlib в clang/gcc. В процессе портирования на другие платформы выяснилось, что нормально libc реализован, по сути, только на Windows, во все остальных реализациях были лишь самые основные функции по типу malloc, free, memcpy, strcmp и т.п. Поэтому я решил не городить велосипеды и прокинул из хост-системы лишь аллокатор - т.е malloc и free:

// stdlib
IMPORT(elf_malloc, void*, int size);
IMPORT(elf_free, void, void* ptr);
/*IMPORT(elf_strcmp, int, char* str1, char* str2);
IMPORT(elf_strcpy, char*, char* dst, char* src);
IMPORT(elf_strlen, int, char* str);
IMPORT(elf_strstr, char*, char* string, char* substring);
IMPORTNOARGS(elf_rand, int);
IMPORT(elf_memcpy, void*, void* dst, const void* src, uint32_t length);
IMPORT(elf_memset, void*, void* dst, int what, uint32_t length);
IMPORT(elf_memmove, void*, void* dst, void* src, uint32_t length);*/

Далее я сразу решил, что платформозависимые функции для работы с дисплеем использовать не буду и из хост-системы мне нужен будет лишь указатель на фреймбуфер, а блиттинг, рисование текста и прочие операции я реализую сам. На первый взгляд может показаться что это единственное верное решение, однако на практике в некоторых телефонах (Motorola E398, Razr V3) активно использовались 2D GPU от ATI и Nvidia, которые рисуют (BitBLT) изображение значительно быстрее любой программной реализации.

Ниже представлена черновая реализация без преобразования пиксельформатов (поскольку на подавляющем числе телефонов использовался 565) и поддержки прозрачности через колоркей. Её можно оптимизировать до быстрого копирования по сканлайнам через memcpy:

for(i = 0; i < bitmap->Height; i++)
{
for(j = 0; j < bitmap->Width; j++)
{
LCD_PLOT_565(clamp(x + j, 0, lcd->Width), clamp(y + i, 0, lcd->Height), bmp[i * bitmap->Width + j]);
}
}

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

__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;
unsigned char* glyph = &embedded_font[chr * 8];

for(i = 0; i < FONT_HEIGHT; i++)
{
short* fb = &((short*)lcd->Pixels)[(y + i) * lcd->Width + x];

for(j = 0; j < FONT_WIDTH; j++)
{
if((*glyph >> (FONT_WIDTH - j)) & 0x1)
*fb = color;

fb++;
}

glyph++;
}

return true;
}

return false;
}

void LcdDrawString(LcdInfo* lcd, char* str, uint32_t x, uint32_t y, uint16_t color)
{
SWITCH_CONTEXT;
if(lcd && x >= 0 && y >= 0)
{
unsigned int i;

for(i = 0; i < strlen(str); i++)
{
if(!LcdDrawChar(lcd, str[i], x, y, color))
return; // Out of screen

x += FONT_WIDTH;
}
}
END_CONTEXT;
}

Отладив эльфлоадер, я написал небольшую тестовую программу для вывода картинки и текста:

#include <system.h>

int ElfMain(void* ptr)
{
LcdInfo* lcd = lcdInit();

lcdDrawBitmap(lcd, bitmap, 0, 0);
lcdDrawString(lcd, "Test", 0, 0, COLOR_BLUE)

return 100;
}

И получил следующий результат:

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

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

❯ Портируем на MRP/MRE

И имя этой платформе, вернее даже двумя платформам - MRP и WRE. Эти платформы использовались на бюджетных китайских телефонах с 2007 по 2016 год. Встретить их можно было везде: легендарная Nokla TV E71/E72, клоны 6700, бюджетные телефоны Fly/Explay/DEXP и даже в оригинальных телефонах Nokia на платформе S30+ (например 230)!

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Легендарная "нокла"!

И хотя люди часто считали такие устройства бесполезными в плане установки сторонних приложений, многие ранние "нонейм"-телефоны поддерживали запуск нативных программ через небольшой костыль - установку специального "загрузчика" dsm_gm.mrp и ввод комбинации *#220807# в номеронабиратель. Конечно, знали об этом костыле единицы и в 2010 году MediaTek решила сделать свою платформу под названием MRE (MAUI Runtime Environment), приложения для которой можно было запускать прямо из проводника без установки! SDK для обеих платформ сейчас свободно лежит в сети.

Обе платформы, по сути, занимаются тем же самым, что и мой эльфятник - прокидывают нативные функции MMI (оболочка телефона) в приложения и для загрузки позиционно-независимых программ используют третий подход с регистром R9, который обязательно необходимо где-то хранить и восстанавливать. Изначально мой эльфятник использовал такой же подход, из-за чего я написал отдельный костыль для "свичнга" контекстов, причем восстановление R9 я делал в отдельной функции из-за бага ассемблера в ADS:

#define SWITCH_CONTEXT unsigned int staticBase; __asm { MOV staticBase, sb;
LDR r0, [sb];
MOV sb, r0 }

#define ELF_CONTEXT(ptr) unsigned int staticBase; void* elfStaticBase = ptr; __asm { MOV staticBase, sb; \
MOV r9, elfStaticBase }

#define END_CONTEXT RestoreSB(staticBase);

Но я не учел то, что MMI хоть и построены по event-based принципу, в них нельзя так просто взять и сделать while(true) {}, а необходимо использовать таймеры, что влечет за собой постоянные костыли с свичингом контекстов что по итогу только снижает производительность. По итогу я перешел на релокации и реализовал проброс таймеров.

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

Никаких отладчиков, программа что-то записала не туда? Ребут и сиди, отлаживай с printf!

Во всем остальном, MRP и MRE простые как табуретка, никаких проблем с пробросом ввода и графики не возникло:

LcdInfo* LcdInit()
{
LcdInfo* ret;
ret = (LcdInfo*)malloc(sizeof(LcdInfo));
ret->Width = screenInfo.width;
ret->Height = screenInfo.height;
ret->Pixels = (void*)w_getScreenBuffer();

return ret;
}

void LcdFree()
{

}

void LcdLock(LcdInfo* info)
{

}

void LcdFlush(LcdInfo* info)
{
mrc_refreshScreen(0, 0, 240, 320);
}

И вот, наша программа уже запускается на двух совершенно разных ОС без каких либо проблем!

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

❯ А если что-то посложнее Hello, world?

Наверняка у читателя возникнет вопрос мол "окей, твой эльфятник может и способен запускать простые программы, но как насчет чего-то посложнее?". И конечно-же, для тестов я решил портировать не абы что, а целый эмулятор NES! В конце-концов, одна из целей разработки такого эльфятника - возможность запускать Java-игр и эмуляторов на многих кнопочных телефонах из нулевых.

Какое то время назад, я обнаружил весьма шустрый эмулятор NES от неизвестного разработчика из Китая. Код был неважного качества, никаких копирайтов в нём не было. Но поскольку сам эмулятор был быстрый (быстрее, наверное, только vNesC, который является прямым source-портом Java-эмулятора vNes на C), я отвязал его от целевой платформы и превратил в небольшую библиотеку для легкого портирования на любые платформы путем вызова всего нескольких функций:

typedef struct {
uint16_t* FrameBuffer;
uint8_t* JoyState;
} emuContext;

emuContext* emuInitialize();
uint8_t emuLoadROM(void* rom, int length);
void emuReset();
void emuDoFrame();
void emuShutdown();

И, соответственно, базовый порт на наш эльфятник выглядит примерно так:

#include <string.h>

#define FUNC_PROTOTYPES
#include <system.h>

#include <nes.h>
#include "nes_rom.h"

emu_context* ctx;
LcdInfo* lcdInfo;

void EmuTick()
{
emuDoFrame();

LcdLock(lcdInfo);
short* pixels = (short*)lcdInfo->Pixels;

for(int i = 0; i < EMU_FRAMEBUFFER_HEIGHT; i++)
{
memcpy(&pixels[i * lcdInfo->Width], &ctx->FrameBuffer[i * EMU_FRAMEBUFFER_WIDTH], lcdInfo->Width * 2);
}

LcdFlush(lcdInfo);

}

void EmuSetupTimer()
{
TimerAttach(1, EmuTick); // As fast as possible
}

void EmuSetupRegularLoop()
{
while(true)
EmuTick(); // TODO: If elfloader port will be usable on Android, add FPS limit :)
}

int ElfMain(unsigned int* basePtr, void* test)
{
lcdInfo = LcdInit();

ctx = emuInitialize();
if(!emuLoadROM(nes_rom, sizeof(nes_rom)))
{
UtilPrint("Failed to load ROM");
return 100;
}

emuReset();

switch(GetMainLoopType())
{
case PLATFORM_LOOP_MMI_TIMER:
EmuSetupTimer();
break;
case PLATFORM_LOOP_REGULAR:
EmuSetupRegularLoop();
break;
}

return 100;
}

А вот и результат:

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост
Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост
Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

❯ Заключение

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

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статью) можно найти на моём YouTube канале.

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Если вам понравилась сегодняшняя статья про разработку эльфов, то спешу объявить: для подготовки будущих материалов с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я сейчас занимаюсь, а затем написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны на Linux (например Motorola EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост
Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции Смартфон, Телефон, Покупка, Гаджеты, Программирование, Моддинг, Эльфы, Linux, Unix, Операционная система, Реверс-инжиниринг, Siemens, Моторола, Ностальгия, Длиннопост
Показать полностью 25
[моё] Смартфон Телефон Покупка Гаджеты Программирование Моддинг Эльфы Linux Unix Операционная система Реверс-инжиниринг Siemens Моторола Ностальгия Длиннопост
135
279
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
5 месяцев назад

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте…⁠⁠

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

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

Я очень большой фанат портативных гаджетов с полноценными QWERTY-клавиатурами: ноутбуков, коммуникаторов и различных хэндхелдов. Когда в мои руки попадает девайс с Linux или Windows CE в том или ином виде, я стараюсь максимально расширить функционал устройства и порой даже портирую программы с других платформ! Недавно мне удалось купить китайский детский обучающий ноутбук с MIPS-процессором и поворотным дисплеем всего за 1 000 рублей. Интересно узнать о том, как я хакнул девайс и причём здесь Dingoo A320? Тогда жду вас под катом!

❯ Предыстория

В конце 2000-х годов, цена на бюджетные ноутбуки снизилась настолько, что купить полноценный лэптоп мог почти каждый студент. Если в начале нулевых годов миниатюрность была роскошью и стоила довольно дорого по отношению к обычным 15-дюймовым бюджетникам, то с выходом Asus EEEPC в 2007 году, маленькие нетбуки с 7-дюймовыми дисплеями наоборот образовали новый сегмент рынка недорогих портативных устройств.

Сейчас мы с вами привыкли, что большинство ноутбуков работает на базе процессоров с двумя архитектурами — x86_64 и ARM. Однако в те времена, инженеры и производители активно экспериментировали и с альтернативными архитектурами — например, MIPS. В 2009 году, некая китайская компания Noah Educational Holdings, которая занималась разработкой портативных устройств для обучения дошколят и школьников младших классов, выпустила на рынок свой собственный миниатюрный обучающий ноутбук — Noah NP5000.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Обычно, когда читатель слышит «детский ноутбук», он представляет себе небольшое устройство с почти полноценной QWERTY-клавиатурой, небольшим монохромным ЖК-дисплеем и набором некоторых обучающих программ. При этом замоддить такие устройства не представляется возможным — в них используются микроконтроллеры с масочной ROM (прожигаемой на заводе), которые скорее всего являются близкими родственниками процессоров тех самых Тетрисов!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Однако в случае с NP5000 всё было совершенно по другому — дисплей здесь уже цветной, а не монохромный, вместо батареек используется полноценный аккумулятор, да и в целом девайс выглядит действительно как взрослый миниатюрный нетбук с поворотным экраном! При включении пользователя встречает заставка с логотипом компании и характерным пингвинчиком, рабочий стол, напоминающий Windows XP и определенный набор обучающих программ на китайском языке.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

В один день я листал Goofish (китайский аналог Авито) в поисках интересных гаджетов, именно пингвинчик и привлёк моё внимание. Информации о том, на каком процессоре работает ноутбук, можно ли на него устанавливать сторонние приложения и что он вообще умеет в сети не было. Однако приятная цена в 1 000 рублей и желание заполучить интересный девайс в коллекцию взяли верх — и я решил рискнуть!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Мчу на своем болиде за ноутбуком для дошколят!

Когда девайс приехал ко мне, я немного поковырял его родную оболочку, попытался выйти в терминал, поставить пакеты OpenWRT — но всё тщетно, оболочка тщательно была закрыта от ушлых детских ручек! Поэтому я решил разобрать девайс и узнать, на каком процессоре он работает и есть ли у нас UART, на котором можно поискать рут-консоль или хотя-бы консоль U-Boot.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Девайс помог привезти в Россию мой подписчик Роман и сервис YouCanBuy, за что им огромное спасибо! Также этой статьи не было бы без подписчика Андрея, который занял мне определенную сумму для заказа ништячков из Китая, за что ему отдельная благодарность!

❯ Что внутри?

Разбирается маленький нетбук почти также, как и его взрослые собратья — через клавиатуру! Со стороны поддона виднеется съёмная крышка, которая на x86-устройстве должна содержать в себе место под HDD и слоты для оперативной памяти. Однако в нашем случае, здесь скрывается кое-что поинтереснее: видите характерное место под миниджек с подписанными пинами RX и TX? Это и есть UART, о котором я говорил в прошлом абзаце.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

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

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

В качестве процессора используется легендарный Ingenic JZ4757! Это готовая система на кристалле, включающая в себя MIPS-ядро собственной разработки с микроархитектурой XBurst, работающее на частоте до 380МГц, видеоконтроллер с возможностью вывода картинки на дисплей или телевизор, аудиокодек, USB-хост и т. п. Слева от процессора расположились два чипа ОЗУ типа SDRAM, в сумме образующие 64Мб, а чуть ниже распаяна NAND-флэшка от компании Samsung на 2Гб. Справа снизу «спрятался» чип часов реального времени — с которого при желании можно было бы взять шину I2C!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Что странно — маркировка флэшки была наполовину затерта с завода, при том что ноутбук ни разу не разбирался... видимо использовали Б/У-накопитель?

Я не зря назвал процессоры от Ingenic легендарными. Дело в том что именно JZ'шки использовались во многих легендарных портативных гаджетах нулевых годов. Например, JZ4732 использовался в популярной эмуляторной игровой консоли Dingoo A320, а JZ4725 использовался в журнале Vogue с экранчиком и OpenHardware-ноутбуке Ben NanoNote. Ingenic славились своей открытостью к сообществу моддеров и свободно предоставляла исходный код ядра Linux, BSP для Windows CE и даже код своей проприетарной прошивки для MP4-плееров!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Далее я решил подпаяться к UART'у, дабы почитать что у нас туда пишет система. Вне зависимости от чипсета или устройства, довольно часто на UART летят логи загрузчика и ядра, а иногда на нём можно найти и рутовую консоль. Благодаря такому «бэкдору» можно попытаться хакнуть самые разные устройства: например, тонкие клиенты на процессорах Marvell или незамысловатый ТВ-бокс. В качестве USB-UART преобразователя я использую плату с ESP32 с постоянным RESET'ом на микроконтроллере (дабы не вмешивался в работу шины):

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Не забываем общую массу, иначе на шине будет мусор!

❯ Хакаем

Далее я включил ноутбук, настроил Putty на свой COM-порт с бодрейтом 115200 и увидел логи. Выяснилось что в качестве загрузчика используется всеми любимый U-Boot (в котором нельзя прервать процесс загрузки), а в качестве ядра — Linux версии аж 2.6! И конечно же на этом терминале висела полноценная рут-консоль!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Далее я сразу решил проверить с какой системой мне придется иметь дело: заглянул в top, обнаружив что используется оболочка Qtopia (формальная альтернатива Xorg и DirectFB для КПК на Linux), пошерстил по папкам с бинарниками и посмотрел inittab. Наша задача — заставить ноутбук запускаться с текстовым терминалом на дисплее, а Qtopia запускать уже по желанию.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Сначала я закомментировал запуск Qtopia в скрипте автозагрузки - inittab'е. Однако если просто «прибить» оболочку — после включения ноутбука нас будет встречать пустой экран без какого либо взаимодействия. Поскольку у меня не было возможности изменить cmdline ядра и перенаправить консоль на терминал fbcon, я решил это сделать уже в юзерспейсе с помощью системного вызова TIOCCONS, однако он по каким-то причинам выдавал ошибку. Тогда пришлось немного костылить и дублировать терминал с помощью getty:

getty -l /login.sh 115200 tty0
...
#!/bin/sh
clear
/bin/login

После этого у меня начал нормально работать терминал! Правда, без скроллинга... пока не знаю почему. Теперь, когда у нас есть рутовая консоль и полноценный busybox, можно немного поэкспериментировать!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

❯ Портируем эмуляторы

Далее я решил попробовать портировать эмуляторы с родственной данному ноутбуку Dingoo A320. В родной системе почти никакие эмуляторы не работали даже после подкидывания всех необходимых библиотек (в том числе и uclibc с SDL), однако после chroot'а в систему от Dingoo A320 у меня запустились часть эмуляторов. Однако в этом ноутбуке используется оригинальный непропатченный кривой драйвер фреймбуфера, который постоянно сыпет ошибками и не умеет работать в виртуальном разрешении. Из-за этого, часть эмуляторов выглядело... примерно вот так:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

В эмуляторе был некорректно реализован скейлинг, который портил память

А часть вот так:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Разрешение оригинальной Dingoo A320 — 240x320, а в ноутбуке — 800x480

И я понял что без патчей в исходном коде не обойтись. Для сборки программ под старые Linux-машины, кросс-компилятор из репозиториев свежих дистрибутивов не подойдет — слишком новая версия glibc. Более того, некоторые устройства могут использовать uclibc вместо glibc, как, например, та же самая динга. Поэтому может потребоваться установка уже готового тулчейна — благо для динги он сохранился в сети. Распаковываем архив в /opt/, добавляем в переменную PATH путь к папке bin/ и пробуем собирать тестовую программу. Всё работает!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Далее предстояло найти исходный код эмуляторов для динги. Часть из них можно найти на гите (в качестве портов на GCW-Zero), часть — на сайте OpenHandhelds. Первым дело я решил портировать эмулятор GameBoy Color. Поскольку эмулятор работает поверх библиотеки SDL, в первую очередь я изменил видеорежим с 240x320 на 800x480...

if (!(fbSurface = SDL_SetVideoMode(240, 320, vmode[2], flags)))
die("SDL: can't set video mode: %s\n", SDL_GetError());

screen = SDL_CreateRGBSurface(0, 160, 144, 16, 0, 0, 0, 0);

И ожидаемо ничего не получил, никто растягивать картинку за меня не будет! Поэтому я сначала написал простейшую функцию скейлинга картинки на флоатах с заранее посчитанным шагом интерполяции, затем оптимизировал её до fixed-point арифметики, а после и вовсе решил «запечь» координаты для сэмплинга в один большой массив.

void BlitScale(SDL_Surface* srcSurface, SDL_Surface* dstSurface, framebuffer_scale_t* scales)
{
int i, j;

for (i = 0; i < dstSurface->h; i++)
{
for (j = 0; j < dstSurface->w; j++)
{
framebuffer_scale_t scale = scales[i * dstSurface->w + j];

uint16_t* pixel = &srcSurface->pixels[(scale.y * srcSurface->w + scale.x)];
uint16_t* dstPixel = &dstSurface->pixels[(i * dstSurface->w + j)];

*dstPixel = *pixel;
}
}
}

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Крайний вариант был самым быстрым, однако в нативном разрешении ноутбука я получил примерно 50%-скорости от реальной консоли — т. е., по сути, не играбельно. При этом в видеорежиме 240x320 всё работало нормально и упор был явно не в скорость растягивания картинки... по каким-то причинам либо блиттер SDL работал слишком медленно, либо драйвер фреймбуфера спотыкался об преобразование форматов пикселя из-за чего всё и тормозило.

Далее я решил попробовать запустить другие эмуляторы. NES, Sega Master System и другие консоли работали отлично... пока я не устанавливал разрешение выше 240x320. Ради интереса, я запустил оболочку для Linux-консолей gmenu2x с Ben NanoNote, которая вместо SDL использует DirectFB и получил вот такую картину. Epic fail...

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

После этого я решил попробовать накатить всем известный Debian. В отличии от эмуляторов, здесь пересобирать ничего не нужно: достаточно лишь собрать rootfs с необходимыми пакетами, отформатировать SD-карточку и chroot'унутся в систему. Для сборки можно использовать две утилиты — debootstrap и multistrap:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Сначала я хотел накатить что-то относительно современное по типу Debian Buster или Jessie, однако вскоре выяснилось, что ядро 2.6 эти версии системы не поддерживают...

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

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

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Установка БАЗОВЫХ пакетов занимает около 20 минут!

Далее мне удалось подкинуть некоторые пакеты и даже попытаться запустить иксы (на 64Мб ОЗУ!)... но затем я погряз в зависимостях и всё таки решил попытаться подкинуть сеть. Выяснилось что в ядре есть поддержка встроенного в чипсет Ethernet-контроллера, однако PHY на плате то не распаян!


❯ Заключение

Вот такая статья о попытке превратить китайский бюджетный MIPS-ноутбук в портативную игровую консоль у нас с вами получилось. И хотя в определенном смысле мне удалось добиться успехов — выйти в рутовую консоль, накатить Debian и запустить эмуляторы в половинном разрешении, всё равно это всё таки больше Epic fail... Но по крайней мере, эти бессонные ночи были очень веселыми!

А вам надеюсь было интересно почитать мой опыт моддинга такого замечательного девайса. Пишите своё мнение в комментариях! Если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет, подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я публикую бэкстейджи статей, иногда полезные посты ну и немножечко щитпоста! Если вам интересны мои видео той же тематики — предлагаю подписаться на мой YouTube-канал.

Как вам девайс?
Всего голосов:

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т.п, о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:

Показать полностью 24 1 1
[моё] Опрос Гаджеты Компьютер Ноутбук Китайцы Школьники Моддинг Linux Unix Программирование Железо Компьютерное железо Видео Без звука Короткие видео Длиннопост
35
madcmk2
5 месяцев назад

Disable ipv6 on Ubuntu⁠⁠

Настойку можно найти в файле /etc/sysctl.conf:

# For specific interface, add this to the end of file

net.ipv6.conf.eth0.disable_ipv6 = 1

# All iterfaces

net.ipv6.conf.all.disable_ipv6=1

net.ipv6.conf.default.disable_ipv6=1

net.ipv6.conf.lo.disable_ipv6=1

Затем нужно применить настройки командой:

# sysctl -p

Ubuntu Unix Текст
2
652
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
8 месяцев назад

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году?⁠⁠

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Приветствую! В сегодняшнем материале мы опробуем с вами новый формат статей, а именно — «ретрошортсы». В этой рубрике будем вкратце вспоминать крутые гиковские штуки прошлых лет, и конкретно сегодня — тот самый журнал Vogue от декабря 2010 года с внешним дисплейчиком, на который можно было накатить Linux и получить мини-компьютер буквально за 200 рублей. Если вам интересно, что за девайс придумали в далеком 2009 году, причём здесь игровые консоли и как бородатые 30-летние хабровчане бегали по всей Москве в поисках ставшего дефицитным женского журнала, то добро пожаловать под кат!

❯ Предыстория

Недавно я писал ретроспективную статью о такой замечательной гиковской консоли, как Ritmix RZX-50. Устройство, построенное на MIPS чипсете Ingenic JZ4750 отличалось относительно низкой ценой, наличием официального SDK для разработки хоумбрю и использованием Linux-дистрибутива OpenDingux в качестве операционной системы. Консоль презентовалась как разработанная моддерами для моддеров — и за исключением аппаратной платформы разработки KohoTech (также известной Android-консолями JXD, которые продавались в РФ под брендами Smaggi, EXEQ и т. д.), в целом, оно так и было.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Но причем здесь игровые консоли, спросит читатель? Дело в том, что примерно в середине 2000-х годов начал появляться такой класс устройств, как дешевые mp4-плееры. Когда техпроцесс позволил уместить в один кристалл мощное вычислительное ядро, DSP/ISP для декодирования (и кодирования) видео и аудио на лету, а также контроллер дисплея с аппаратным ускорением отрисовки 2D-графики, чипмейкеры представили по сути уже готовые решения для реализации собственных портативных плееров. Под готовыми подразумевается не только аппаратная часть устройств, но и программная — инженеры писали собственные прошивки на базе RTOS-ядер, которые включали в себя уже готовый видео-плеер, аудио-плеер, а также приложения по типу просмотра изображений и чтения книг. По сути, производителю самого плеера оставалось лишь развести плату на основе референсной и чуть приукрасить интерфейс, что и обуславливало низкую цену таких устройств.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Примерно к 2006-2007 году, на базе таких чипсетов начали делать эмуляторные игровые консоли, а в 2009 году вышла легендарная в моддерских кругах Dingoo A320 на базе MIPS-чипсета Ingenic JZ4732. Изначально консоль работала на базе собственной проприетарной ОС внутренней разработки Ingenic (кому интересно, можете поколупать исходный код здесь), однако затем один испанский инженер заметил, что A320 основана на базе референсной платы Ingenic с кодовым именем Caetus, которая из коробки работает на Linux и о чудо, нормально работает с ядром для референсной платы! После этого, к ядру подсунули дистрибутив OpenWRT (и скорее всего адаптировали драйвер дисплея — в динге использовался дисплей с 8080-шиной на базе контроллера ILI9341/9325) и он замечательно заработал на A320'ой. Так и появился кастомный Linux-дистрибутив для консолей и плееров на базе чипсетов Ingenic под названием OpenDingux. Кроме того, Ingenic не стеснялись делится PDK для своих чипсетов: на FTP-сервере компании лежали BSP для Windows CE и Linux.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

В 2009 году компания AmeriChip разработала технологию Video in Print, позволявшую в обычном бумажном журнале разместить специальную картонную страницу с миниатюрным экранчиком, который воспроизводит видео при открытии этой самой страницы. Очевидно что целевая аудитория технологии — реклама «мажорных» брендов, которые могут оплатить установку такого плеера в определенный тираж журнала, цена которого в несколько раз превышает себестоимость самого печатного издания. В Россию эта технология пришла аж в в конце 2010 года, когда бренд напитков Martini решил сделать крутую рекламу для женской ЦА в рамках декабрьского выпуска журнала Vogue. В обычном бумажном журнале за ~200 рублей разместился дисплейчик, который воспроизводит видео со звуком! Когда об этом узнали на Хабре, начался лютый ажиотаж вокруг журнала и бородатые 30-летние дядьки, одним из которых был @dlinyj, ранним утром побежали сметать журналы с полок магазинов.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Нетрудно представить, какими удивленными были лица продавцов, когда к ним целыми днями бегали мужики в погоне за женским журналом! Поскольку журнал хотели все, но далеко не весь тираж был с теми самыми дисплейчиками, некоторые ушлые ребята начали продавать их втридорога (это касалось и розничных магазинов), а иногда и отправлять их в другие страны. При препарировании страницы оказалось, что каждый плеер собирается вручную «на соплях» и работает на базе чипсета Ingenic JZ4725B, для старших версий которого, как мы помним, есть порт Linux! По сути, этот плеер являлся кровным братом тех самых игровых консолей Dingoo A320 и Ritmix RZX-50!

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Препарированная страница. Как мы видим, сборка велась вручную.

Изначально страница использовала прошивку «minios» с нужным видеороликом в памяти устройства, но коммьюнити хотелось запустить, конечно же, Linux. Ядро с Dingoo A320 удалось запустить не сразу. Дело в том, что у чипсета отсутствует часть периферии с более старших моделей (например, нет USB-хоста), из-за чего пришлось патчить драйверы, а также использовались другие пины (и в целом шина) для подключения дисплея к чипу. Благо даташит сразу же «слили» в сеть, а сам процессор был выполнен в QFP-корпусе, так что необходимые пины почти сразу вызвонили и смогли запустить на журнале... полноценный Linux!

Свои два Vogue я получил в подарок от хабровчан, за что вам огромное спасибо :) Давайте же посмотрим, что скрывается у них «под капотом».

❯ Под капотом

Как я уже говорил ранее, каждая такая страница вручную собиралась некими ушлыми китайцами. И если сама материнская плата представляет из себя самый обычный mp4-плеер со всей необходимой обвязкой, то внешние модули распаивались «на соплях» и сажались на клей.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Начинаем с самой материнской платы устройства. Как уже было упомянуто выше, девайс использует MIPS-чипсет Ingenic JZ4725B, работающий на частоте 360МГц. Насколько я понимваю, это один из самых бюджетных чипов этой серии и не умеет в вышеупомянутый USB-хост, что значительно сужает круг применения такого девайса на практике. Рядом с чипсетом установлена банка SDRAM-памяти на 32Мб, а также NAND-флэшка объемом в 1Гб. Хотя казалось бы, плеер предполагается «одноразовым» (посмотрел рекламу и забыл), но на плате разведен в том числе и чарджер литий-ионных АКБ, а также выведены пины для USB-клиента.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

На нижней части платы можно заметить место для нераспаянных аппаратных кнопок. Всего их здесь 6, так что с минимальной пайкой из плеера можно сделать, например, эмулятор GameBoy или NES. Из внешних шин на плате доступен только UART, который благодаря пинмуксингу «висит» на одной из аппаратных кнопок — так что если захочется подключить устройство к МК, то придётся выпаивать SMD-конденсатор над кнопкой K2. В целом, это не значит что к девайсу нельзя подключить клавиатуру или мышь, просто для них придется делать отдельный переходник на МК, который будет слать кейкоды через UART в input-драйвер устройства. Таким образом можно подключить HID-клавиатуру или геймпад, но без прослойки — никуда :(

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Сам USB удивляет не меньше: он распаян отдельно, используется MiniUSB на небольшой breakout-плате, которая посажена на клей-соплю. На стоковой прошивке при попытке подключить девайс к ПК, устройство требует ввод «кода», дабы хитрые ручонки не подменяли видеоролики на свои и не пользовались плеером для личных целей.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Снизу мы видим довольно большой динамик, а также литий-ионный аккумулятор на 800мАч. Учитывая что журнальчики после прочтения нередко отправляются на чердак, где маринуются под палящим летним солнцем, решение странное — АКБ может и воспламениться.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

А сверху мы видим тот самый дисплейчик. Это TN-матрица с разрешением 480x232 и интерфейсом TTL, 40 pin. Такие же использовались в GPS-навигаторах, вышеупомянутой RZX-50 и других самых разных консолях! Если у вас есть девайс с разбитым 40-pin дисплеем, то его вполне можно взять с Vogue и поставить — он должен заработать «из коробки».

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

И конечно же, с левой стороны нас ждёт что-то типа концевого выключателя, который и выводит плеер из режима сна и заставляет воспроизвести видеоролик и динамик.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Как говорится, всё гениальное — просто, и производителю удалось сделать дешевое устройство, которое ещё и нехило поддаётся моддингу! Давайте же включим девайс и посмотрим, что он из себя представляет.

❯ Запускаем

Подключаем USB-кабель, девайс промаргивается и... мы видим вывод kmsg! На моём экземпляре уже была установлена прошивка Vogeeky, основная на OpenWRT и девайс загрузился, показав готовность к работе.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Взаимодействовать с ним предлагается с помощью всё того же USB: плеер «прикидывается» сетевой картой и позволяет подключиться к SSH с помощью нескольких команд:

sudo ifconfig usb0 192.168.1.2 up
ssh 192.168.1.1

Логинимся как root (без пароля) и получаем доступ к rootfs-устройства. В целом, из интересностей здесь есть порт Qtopia и... видеопроигрыватель.

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

Однако никто не мешает накатить на девайс программы и эмуляторы для того же самого Dingux. Они будут здесь работать, но скорее всего придется ремаппить GPIO аппаратных кнопок в драйвере ввода. Драйвер кейпада, разработанный сообществом вполне работает — в kmsg даже летят дебаг-сообщения от единственной выведенной кнопки устройства (не забываем про места под кнопки с нижней части платы).

Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост
Женский журнал с дисплеем и... Linux на борту. Что за диковинный журнал вышел в 2010 году? Опрос, Гаджеты, Покупка, Linux, Unix, Vogue, Девайс, Диковинка, IT, Необычное, Длиннопост

В целом, развитие моддинг-сцены девайса остановилось на Proof of Concept: участники проекта Vogeeky смогли запустить на устройстве Linux, однако найти интересное применение, кроме плеера, к сожалению не смогли. Но это не значит, что девайс бесполезен. С минимальными навыками пайки и программирования, из девайса можно сделать:

  • Стационарные часы с ЖК-дисплеем, будильником и подтягиванием погоды по сети.

  • Игровую консоль. Но опять же, число аппаратных кнопок ограничено — без доработок у нас максимум будет GameBoy/NES и другие консоли с геймпадами на 6 кнопок.

  • Мини-ноутбук. Если я созрею для этого проекта, то расскажу о превращении журнала в миниатюрный лэптоп с апгрейдом дисплея и подключением клавиатуры через UART с запилом кастомного драйвера :)

  • Собственно, плеер, только умеющий играть и произвольные видеоролики и аудиофайлы.

❯ Заключение

Вот такой интересный материал у нас с вами получился про легендарный бумжаный журнал на Linux. Надеюсь, молодым читателям было интересно узнать что-то новое, а олдам Хабра было интересно вспомнить тот ажиотаж и те хабратортные статьи, что породил журнал!

Подписывайтесь на мой Telegram-канал, если вам интересна тематика программирования, моддинга и подручного ремонта различных девайсов, а если вам интересны мои видео о ретро-девайсах, то подписывайтесь на мой YouTube или паблик ВК.

А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:

Классная штука?
Всего голосов:
Как вам формат техношортсов?
Всего голосов:
Знали ли вы о существовании такого девайса?
Всего голосов:
Показать полностью 17 3
[моё] Опрос Гаджеты Покупка Linux Unix Vogue Девайс Диковинка IT Необычное Длиннопост
64
503
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
9 месяцев назад

Честно и по делу: смотрим на F+ R570E с российской системой на борту⁠⁠

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Я большой фанат Linux на мобильных системах и давно слежу за такими проектами, как Meego, Maemo и конечно же, Sailfish-подобными ОС. Недавно я самолично написал в компанию F+ и попросил какой-нибудь смартфон на «Авроре» для статьи и на моё удивление, представители компании согласились! Что из себя представляет R570E, какова «Аврора» с точки зрения обычного пользователя, какие проблемы могут возникнуть у разработчика и есть ли у этой системы перспективы? Читайте в сегодняшней статье!

❯ Предисловие

Пожалуй сейчас Linux'ом на смартфонах и мобильных системах никого не удивить. Ядро Linux используется в ОС Android, благодаря чему хотя бы одно устройство с пингвином на борту можно найти почти в каждом доме. Однако Android использует именно само ядро Linux, выстраивая вокруг него собственное пользовательское окружение (или более корректно — userspace): подсистема абстракции от железа (HAL), оконная система и фреймворк для приложений. На десктопных же системах используется стек, известный как GNU/Linux, предоставляющий этакое знакомое нам unix-окружение со стандартным набором программ, glibc и компилятором GCC. При этом Android абсолютно не совместим с программами, собранными для обычных GNU/Linux систем как раз таки из-за преусловутой glibc (вместо неё в Android используется bionic и свой собственный динамический линкер), и поэтому многие гики хотят запустить полноценный дистрибутив на мобильном устройстве.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Но благодаря тому, что ядро Linux распространяется по лицензии GPL3, производители смартфонов обязаны открывать исходный код своих модификаций ядра под собственные устройства. И пока развивалась моддинг-сцена Android с такими кастомами, как CyanogenMod или, например, MIUI, на некоторые устройства выходили такие диковинные системы, как Ubuntu Touch, pmOS и, конечно же, Sailfish OS.

Linux на мобильных устройствах берёт своё начало ещё с середины 2000-х годов. Именно в это время компания Motorola решила использовать в своих продвинутых устройствах ядро Linux, а если более конкретно — построить собственную оболочку Motorola EZX на базе MontaVista Linux. Немудрено, что систему быстро хакнули и наделали для неё кастомного софта, патчей и других примочек. Примерно в тоже самое время компания Nokia начала развивать линейку собственных интернет-планшетов на базе дистрибутива Linux под названием Maemo.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Сын (Nokia N900), батя (Nokia N800, ещё планшет) и племянник на фоне

В 2007 году на свет появился первый полностью открытый смартфон (в том числе и с аппаратной точки зрения — то есть принципиальная схема, разведенная плата и иные необходимые для постановки устройства на конвейер документы) Neo 1973, построенный на базе хакнутого проектом OsmocomBB модема TI Calypso и ОС OpenMoko, который получил умеренный успех среди Linux-гиков. А в 2009 году вышел легендарный Linux-смартфон Nokia N900, который до сих пор считается одним из самых удачных и успешных гиковских смартфонов из когда-либо выпущенных.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

И вот в 2011 году Nokia, почти полностью перешедшая на Windows Phone и остановившая развитие Symbian, выпускает свой последний гиковский смартфон — Nokia N9, который в некоторых аспектах стал «батей» многих фишек в современных смартфонах. Несмотря на популярное заблуждение, N9 работает не на Meego, а на Maemo со значительно доработанным пользовательским интерфейсом. И как раз UI устройства был крайне необычным и на своё время прорывным: управление системой жестами, наличие двух всегда доступных страниц, своё видение шторки уведомлений и очень плавная работа. Когда стало ясно, что Nokia больше не будет выпускать Linux-смартфоны, несколько инженеров компании основали свою собственную фирму Jolla и продолжили развивать Meego для полноценного запуска на Nokia N9. Результатом их работы стала новая система — Sailfish OS.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Такие разные: N9 вышел флагманским смартфоном в 2011 году, в то время как R570E корпоративным и относительно бюджетным в ~2023. Но всё же в R570E есть частичка работы инженеров той самой Nokia, причём довольно большая.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Тот самый Neo, только это уже FreeRunner.

Основной фишкой системы было наличие инкрементальных обновлений, возможность разработки приложений с использованием Qt (т. е в отличии от Android, все приложения и подсистемы полностью нативные, а не написаны на Java), и довольно неплохая совместимость с обычным ARM-софтом для других дистрибутивов Linux. Со временем Ростелеком увидел перспективы в Sailfish OS и выкупил долю в компании, начав работу над своим собственным форком этой системы — ОС «Аврора». С годами «Аврора» полностью отделилась от материнского проекта и начала развитие в другом направлении: если Sailfish OS была системой для гиков и просто пользователей, то «Аврора» больше нацелена на Enterprise-сегмент (т. е. «госка»), на гиков и только потом на конечных пользователей.

И мне, как фанату Linux на мобильных устройствах, очень хотелось пощупать и заполучить свой собственный девайс на этой ОС. Набравшись смелости, я написал в PR-отдел F+ и через пару недель получил положительный ответ. Радости моей не было предела! Но когда девайс пришёл ко мне, начались определенные трудности...

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Прикладывать скриншоты деловой переписки -- плохой тон, однако в случае с F+ всё было максимально приятно: ребята поняли, что девайс поедет к гику и дали свободу воли и перо в руки автору, т. е. мне :)

❯ Распаковка

Начать стоит с распаковки девайса. Ко мне смартфон пришёл «не новым», его уже распаковали и накатили на него некоторые тестовые приложения для внутренних нужд PR-отдела. Кроме того, у меня стоит «особенная» версия Авроры 5.1, доступная пока ещё не всем пользователям.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

В коробке нас встречает сам девайс, защитное стекло (девайс всё таки защищенный) на дисплей, краткий мануал по использованию «Авроры» (в кои-то веки он нужен!), а также скрепка, Type-C кабель и 5В/2А блок питания. В рознице к девайсу прилагаются ещё и TWS-наушники.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Поскольку смартфон предполагается защищенным по стандарту IP68 (пыленепроницаемый и способен выдержать погружение в воду на длительное время), он выполнен в прорезиненном корпусе с небольшой выемкой для дисплея. В руке лежит хорошо, хоть и полноват.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

После включения нас встречает логотип «Авроры», а затем и предложение ввода пин-кода (есть также сканер отпечатков пальца). Enterprise-направленность девайса видна сразу: MDM-политики, возможность удаленного бана украденного устройства по ключу активации системы и возможность добавления своих репозиториев с софтом помимо возможности установки RPM и использования стандартных репозиториев ОМП.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Характеристики девайса следующие:

  • Процессор: MediaTek Helio A25. 2020 год, 8 ядер Cortex-A53 на частоте от 1.5 до 1.8ГГц (пламенный привет MT6753 в любимых мной китайских айфонах). В целом, это довольно бодрый по меркам бюджетника чипсет, именно A25 сейчас частый гость на смартфонах до 5-6 тысяч рублей.

  • GPU: PowerVR GE8320 на частоте 600МГц. В целом, GPU можно назвать гордостью девайса: и если с 3D-играми на Авроре и Sailfish вяло, то для эмуляторов даже относительно тяжелых консолей он подойдет замечательно.

  • Память: eMCP «бутерброд» с 4Гб предположительно LPDDR4 оперативной памяти и 64Гб eMMC 5.1 постоянной памяти. UFS-флэшки чипсет не поддерживает в силу своей бюджетности.

  • Дисплей: 5.7" IPS HD+ матрица. Вполне годная, очень похожа на матрицу моего китайского айфона, есть ощущение что на современных бюджетниках используется +- похожие дисплеи.

  • Звук: есть 3.5мм джек! Это настолько редкость сейчас, что я выделил эту фичу в отдельный пункт.

  • Сеть: Wi-Fi a/b/g/n ac, Bluetooth 5.0, 2G, 3G, LTE. Стандартный минимальный набор.

  • Камера: 13Мп + 2Мп

  • Аккумулятор: 5080мАч, литий-полимерный. Для броневика ёмкость средненькая.

В целом, аппаратно R570E - больше классический китайский OEM-смартфон на привычной MediaTek'овской платформе. Мне говорили, что есть какие-то изменения в плате "под капотом", однако девайс я пока не разбирал. Если F+ выложит в общий доступ схему устройства, то смартфон сможет похвастаться ещё и повышенной ремонтопригодностью, что очень актуально как для шаловливых энтузиастких ручек, так и для компаний, закупивших девайс для бизнеса. В целом, как по мне, — характеристики вполне неплохие, но стоит иметь в виду, что я почти всю жизнь пользовался бюджетными девайсами и выжимал из них все соки, так что мне привычно доводить девайс до идеала и после покупки.

Но в случае R570E, самое важное в девайсе — это «Аврора». И на её пользовательские качества мы сейчас с вами и посмотрим.

❯ Знакомимся поближе

Сначала предлагаю взглянуть на «пользовательскую» часть системы. Недавно пользователям начали прилетать апдейты с «РуСтором» на борту (в бета-ветке), однако мой смартфончик пока что обделен этим обновлением. Об этом чуть позже.

Как и «батя» в лице Sailfish OS, «Аврора» управляется полностью жестами. Некоторые обзорщики сравнивают UI Авроры как «украденный у Android и iOS», однако это не так: корни интерфейса уходят в Nokia N9, из которого как раз все всё и позаимствовали спустя почти 10 лет. Несмотря на бюджетный 4-х летний чипсет, девайс работает очень плавно и у него есть адекватная многозадачность.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

По умолчанию в системе предустановлен классический набор приложений, плюс ярлыки PWA можно выносить на рабочий стол. К слову о браузере — здесь используется Firefox 78 (2020 год) с самопальным интерфейсом, который всё ещё открывает большинство сайтов, но стремительно теряет актуальность. С апдейтами обещали обновить и WebView, едва-ли 78'ой останется актуальным в 2025 году.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

R570E неплохо подходит и по основному предназначению (т. е. как телефон): номеронабиратель удобный, есть импорт контактов из Exchange, vcf-файлов и других телефонов. Что ещё, собственно, нужно? Приложение для обмена SMS самое обычное, ничего примечательного.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Само собой есть встроенный плеер для прослушивания музыки. Из-за броненаправленности смартфона, мне не удалось нормально подключить мои основные полноразмерные наушники, но в целом качество ЦАПа... на уровне остальных смартфонов с MTK на борту: нормально, но после флагманских BlackBerry с ЦАП'ом Wolfson, смартфонов Sony или ZTE Axon с аж двумя отдельными аудиотрактами (!) хочется вернуться всё же к флагманам: А вот что в плеере не понравилось, так это отсутствие эквалайзера: плеер совсем простенький.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

В целом, понравился клиент почты. Есть интеграция с российскими сервисами, плюс поддержка POP3/IMAP-ящиков. Сам клиент шустрый и удобный. Единственный момент - не работает поиск по всему ящику, только по синхронизированным сообщениям и не сразу заработал SMTP gmail'а.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Поговорим о камере. Модуль здесь бюджетный, на уровне флагманских смартфонов эдак года 2013-2014. По качеству выдает картинку близкую к Galaxy S2-S3, но немного не хватает цветокоррекции. Макро тоже у смартфона получается "с трудом", по крайней мере в авторежиме. Правда всё это можно объяснить тем, что для камеры у MTK есть куча блобов с различными алгоритмами для улучшения изображения, и эти блобы разработаны для использования с Android и возможно Аврора использует лишь самый простой вариант захвата изображения с камеры:

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост
Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Также я накатил клиент Telegram «Tavro» на базе библиотеки TDlib, который вполне неплох... однако его полная версия платная. Впрочем, подразумевается что полная версия «Тавро» предназначена для бизнеса. Если будет наблюдатся тенденция с платным жизненноважным софтом на «Авроре» — то система точно не станет популяряной у обычных пользователей. А ещё Тавро лагучий и если пару дней не открывать Telegram, то синхронизация большого числа изменений может занять пару минут, а интерфейс будет висеть.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Также я хотел написать вторую статью о разработке небольшой 3D-аркады с нуля под «Аврору», однако возникли определенные трудности о которых я и говорил в начале статьи. Дело в том, что на мой смартфон установлена немножко «особенная» версия ОС, где режим разработчика (отладчик и ещё некоторые фичи) просто сломан. Пакет (сломанный) уже установлен, однако не удаляется, не обновляется и не устанавливается. В моём случае можно только сделать бэкап и прошить дамп чистой системы с 4pda, благо такая возможность есть.

Честно и по делу: смотрим на F+ R570E с российской системой на борту Опрос, Android, Гаджеты, Смартфон, Ос Аврора, F+, Linux, Unix, Приложение, Мобильные телефоны, Обзор, Ништяки, Длиннопост

Тем не менее, даже несмотря на «поломанность», есть возможность установки сторонних приложений. Просто включаем соответствующую галку в настройках — и вот, мы можем ставить сторонние rpm-пакеты прям как apk в Android.

В целом, «Аврору» можно назвать достаточно открытой для моддинга и разработки собственных программ системой. За деплой приложений не нужно ничего платить, есть неплохая документация и можно делать с системой всё что угодно из терминала: благо root-доступ есть из коробки для всех. Я немного общался с @chuvilin(техдир в ОМП), а он когда-то сам хоумбрю приложения для Maemo (Nokia N900) писал, так что вполне очевидно что даже сами разработчики держат вектор на открытость системы для гиков.

❯ Есть ли перспективы?

Пожалуй, наличие перспектив у «Авроры» зависит от того, зачем вам нужен девайс с ней на борту. Если говорить о Enterprise-секторе и гос-организациях, то система со временем может занять довольно большой процент рынка и так или иначе, у вас будет шанс пощупать её на промышленном устройстве. В целом, её интеграцией в бизнес уже сейчас активно занимается компания «Марвел» (владелец бренда F+).

Также у «Авроры» есть хорошие перспективы среди гиков: существуют тематические каналы в Telegram, а также люди активно обсуждают систему на 4pda. Аврора очень интересная «под капотом» и достаточно дружелюбная по отношению к разработчикам, так что гики — определенно одна из ЦА этой системы.

Есть ли перспективы среди обычных пользователей? Тут сказать сложно. Дело в том, что основная проблема «Авроры», Sailfish OS, Meego и Maemo — относительно малое количество софта, которым можно пользоваться «из коробки». И если гикам часть приложений можно запилить самому (например, клиент банка на СМСках), то что делать простым пользователям? Правильно, ждать появления нужного софта в магазинах, а до этого использовать веб-версии в FireFox. Будем честны, такой вариант устраивает далеко не всех.

❯ Заключение

Вот такой материал об «Авроре» и F+ R570E у нас с вами сегодня получился. А как вам данный смартфон? Есть ли у него перспективы? Пишите своё мнение в комментариях!

P.S: Я не получил от F+ ни копейки за статью, кроме самого девайса. Все впечатления — мои личные, а меня довольно легко впечатлить (достаточно чтобы на девайсе был Linux :) ) Поэтому, надеюсь, даже те читатели, которые не питают симпатию к Авроре», останутся довольны после прочтения статьи.

Также у меня есть Telegram-канал "Клуб фанатов балдежа", куда я публикую ссылки на новые статьи, видео, а также мысли по программированию, ремонту и моддингу различных гаджетов, а также немного щитпоста. Подписывайтесь, если интересно. Недавно я начал вести ещё и паблик в ВК, там в основном репосты видосов с ютуба для тех, кто не хочет юзать VPN, но кому интересны мои видосы. Также туда публируется часть постов из телеги.

Нравится R570E?
Всего голосов:
Пользовались бы смартфоном на Авроре «на постоянке»?
Всего голосов:

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud чтобы не пропускать новые статьи каждую неделю!

Показать полностью 20 2
[моё] Опрос Android Гаджеты Смартфон Ос Аврора F+ Linux Unix Приложение Мобильные телефоны Обзор Ништяки Длиннопост
242
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии