Перейти к содержимому

Что такое метки уведомлений на xiaomi

  • автор:

Настройка уведомлений и работы фоновых приложений для MIUI | Все устройства с прошивками MIUI ⁠ ⁠

Кому нужна краткая инструкция, без учета подробностей — переходим сразу к пункту 8 1.

Поставить нужные приложения в автозапуск и проверить настройки трафика!

1.1 Безопасность — Приложения — Разрешения — Автозапуск Безопасность — это отдельное приложение с зелененькой иконкой.

1.2 Там же в Безопасность: — Передача данных — Сетевые подключения — Проверить есть ли у нужных приложений доступ к Мобильный интернет и/или Wi-Fi

1.3 Там же в Безопасность: — Передача данных — Сетевые подключения — Три точки (справа вверху) — Фоновые соединения — проверить включен ли у нужных, у не нужных отключить.

2. Включить и настроить уведомления для нужных приложений

2.1 Настройки — Уведомления Тут сразу можно включить/выключить отображение уведомлений для нужных приложений. Можно перейти в настройки уведомлений на Экране блокировки / Всплывающие уведомления / Метка на иконке приложения / Стиль уведомлений в шторке При нажатии в списке на нужное приложение, откроются настройки уведомлений для него, где можете настроить нужные типы уведомлений. — Показывать уведомления — Метка на иконке приложения — Всплывающие уведомления — Экран блокировки — Разрешить звуки — Разрешить вибрацию — Разрешить световую индикацию

2.1.1 Тут можно настроить стиль отображения уведомлений в шторке (MIUI / Android)

2.1.2 Выбрав «Экран блокировки» можно настроить общий стиль отображения уведомлений на экране блокировки (Отображать полностью/Скрывать содержимое/Не отображать вообще) и доступ к панели уведомлений на экране блокировки!

2.2 Начиная с Android 8.0 (Android API 26) для уведомлений были добавлены Категории (каналы). В зависимости от того, как разработчики приложений реализуют, это могут быть и каналы/категории, и темы, и подписки, и просто настройки. Но для каждой Категории нужно проверять настройки уведомлений отдельно!

2.3 Т.к. начиная с 8-го Андроида появились категории, в настройках каждой категории появился такой пункт, как «Важность», который влияет на звук и всплывающие окна. На последних прошивках данный пункт убрали. В этом ничего страшного нет. В большинстве случаев можно настроить все так же, но раньше это делалось «одним движением», сейчас просто выбором нескольких параметров. Т.е. выбором отдельно Звук / Вибрация / Световой индикатор / Всплывающие уведомления / Экран блокировки

2.4 В связи с появлением категорий с 8-го Андроида, можно гибко настроить поведение системных уведомлений. Можно еще и настроить отдельный звук для каждого! Настройки — Приложения — Все приложения — Система Android — Уведомления и увидим настройки для различных системных уведомлений Например тут отключим звук для уведомлений о USB-подключениях (Через пункт Важность, так же можно управлять всплывающими уведомлениями/звуком)

3. Включение экрана при поступлении уведомлений Настройки — Блокировка экрана — Пробуждать для показа уведомлений *Может не работать на сторонних темах

3.1 Если хотите отключить включение экрана для какого-то отдельного приложения, можете запретить ему отображение уведомлений для «Экрана блокировки». Включать экран не будет, но и уведомлений на экране блокировки так же не будет. Вот тут на примере одного приложения для двух категорий настроено разное поведение.

Для «Сообщений» настроено высокая важность (это по умолчанию всплывающие уведомления + звук), звук дефолтный + отображение на экране блокировки (и включение экрана если оно включено для всех) Для второй категории настроена средняя важность (звук) + выбран отдельный звук + запрет на отображение на экране блокировки (соответственно и запрет на включение экрана) Т.е. для первой все по дефолту (звук / всплывающие / экран), для второй выбран другой звук и запрещено включение экрана.

4. Настройки контроля активности.

4.1 Безопасность — Питание — Контроль активности — Для каждого приложения выбираем нужный режим Слева вверху (. ) можно изменить режим сортировки для удобства по Настройкам / и по Активности. У кого нет Контроля активности на втором скрине, то вверху есть закладка «Батарея», счала нажимаем ее, дальше все, как описано. При нажатии на приложение откроется «Контроль фоновой активности» для выбранного приложения. В MIUI 12 по дефолту выставлен «Умный режим». Лично у меня пользовательские настройки выставлены всего для двух приложений. Для одного «жесткий режим», для другого (USSD-чекер) «без ограничений». Проблем с уведомлениями нет. Если у вас возникнут — пробуйте выставить «Нет ограничений», повесить замочек (в п.6 об этом)

4.2 Тут же в Безопасность — Питание — шестеренка справа вверху заглянем в настройки. Можем выставить настройки по питанию для экрана блокировки (когда девайс заблокирован). Выставить настройки для режимов «Экономия энергии» и «Ультра экономия». Например включить для них расписание (не забывайте, что в это время будут ограничения на уведомления!).

В доп.настройках можно выставить уведомление о чрезмерно высоком разряде.

4.3 Экономия батареи. Настройки — Защита конфиденциальности — Специальные разрешения — Экономия заряда батареи (если какой-то пункт в меню не найден по указанному пути — воспользуйтесь поиском в настройках) Можем посмотреть сразу те приложения, которые Не экономят батарею! А можем переключить на «Все приложения» и настроить поведение нужного! (например для приложений у которых проблемы с уведомлениями выставить принудительно «Не экономить»)

5. Режимы работы / Энергосбережение — Безопасность — Питание — Экономия энергии — Откл — Безопасность — Питание — Ультра-экономия энергии — Откл Также проверьте: Безопасность — Питание — Настройки (шестеренка справа в верхнем углу): — Отключать интернет — [Никогда] — Очищать память — [Никогда]

6. Блокировка выгрузки приложения из памяти (не обязательно, по необходимости) Левая сенсорная кнопка / или нужный жест — Увидите список запущенных или недавних — На нужных поставить замочек (Долгое нажатие на приложении, появятся дополнительные кнопки)На последних обновлениях MIUI меню по долгому нажатию убрали меню или там может не быть замочка. Тогда открываете приложение Безопасность — в правом верхнем углу шестеренка — Ускорение — Закрепленные приложения — выбираем переключателями нужные.

8. В MIUI 12 практически все можно настроить в системных настройках самого приложения Безопасность — Приложения / Или Настройки — Приложения — Все приложения — Выбираем нужное (*или просто на рабочем столе долгое нажатие на иконку приложения, в открывшемся меню «О приложении»)

1. Автозапуск (Включаем)

2. Разрешения приложения (Проверяем при проблемах)

3. Другие разрешения (Проверяем при проблемах)

4. Уведомления (Настройки уведомлений для приложения и категорий)

5. Сетевые подключения (можно включить или запретить доступ к мобильному интернету и/или Wi-Fi)

6. Контроль активности (выставляем работу приложения в фоне)

9. Всплывающие чаты (Пузырьки) Последнее время много вопросов по новым типам уведомлений в 11-м андроиде, а именно по пузырькам.

Фишка в том, что при обновлении на 11-й андроид поверх прошлых прошивок, а не начисто, эти уведомления автоматом активируются.

Давайте рассмотрим, как их отключить.

Понадобится Activity LauncherЗапускаем. В строке поиска вводим *Уведомления*. Запускаем активити «com.android.settings.Settings$ConfigureNotificationSettingsActivity»Открываем «Всплывающие чаты»

Настройка уведомлений и работы фоновых приложений для MIUI | Все устройства с прошивками MIUI Android, Смартфон, Настройка, Телефон, Xiaomi, Длиннопост

Настройка уведомлений и работы фоновых приложений для MIUI | Все устройства с прошивками MIUI Android, Смартфон, Настройка, Телефон, Xiaomi, Длиннопост

О май гад, заканчивается 2022 год, а эти говноеды так и не научились нормально организовывать работу уведомлений? Сносите это говно, заливайте RR, Bliss, да хоть AOSP, мало что-ли прошивок нормальных?

miui стала говном как и сами телефоны. поко лаунчер стал последней каплей

0609 | 31 events @ 4 min: Немецкая пятилетка⁠ ⁠

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

Правозащитники Mozilla Foundation прочитали пользовательские соглашения 25 автопроизводителей. Из них 21 передаёт данные третьим лицам, а 19 продают. Nissan собирает информацию о весе, поведении и интеллекте водителя и пассажиров, а Ford и GM о расе и сексуальной ориентации.

Народные умельцы поставили Firefox и другие Android приложения на Volvo. Без рута, но нужен платный аккаунт разработчика. Скачиваешь исходники программы, меняешь манифест и публикуешь в Play Store как версию для бета-теста. После автомобиль разрешает установку.

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

# Software
▸[4] Баг проводника Windows 11: двойное нажатие F11 [переход и выход из полноэкранного режима] ускоряет отображение и поиск файлов.

▸[5] Апдейт Xbox: добавили стрим в Discord, но не просмотр стримов, и подключение контроллеров без нажатия кнопки на приставке.

▸[6] Релиз бенчмарка Cinebench 2024: вернули тест видеокарт и обновили интерфейс.

▸[7] Апдейт часов и велокомпьютеров Garmin: добавили индекс выносливости, новые тренировки, прогноз погоды и прогноз клёва рыбы на карте.

▸[8] Zoom прокачал нейронку AI Companion: теперь умеет находить файлы, отвечать на вопросы и создавать сводки прошлых встреч. Обещают через месяц научить её отвечать на e-mail письма.

▸[9] Апдейт прошивки материнок MSI с чипсетами Intel 600-й и 700-й серии: исправили ошибку «процессор не поддерживается» при апдейте Windows 11.

▸[10] Дыра Wi-Fi роутеров ASUS RT-AX55, RT-AX56U V2 и RT-AC86U: баг в обработке строк входящих данных. Патч уже доступен.

▸[11] Релиз Android 14 перенесли на 4 октября.

# Hardpron
▸[12] Клавиатура ZSA Voyager: эргономичная механика, низкопрофильная, металлический корпус, съёмные свитчи. Цена 365 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[13] Беспроводная зарядка Nomad Base One Max 3-in-1: MagSafe, заряжает три устройства сразу. Цена 170 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[14] Камера для квадрокоптеров Sony ILX-LR1: полнокадровая, байонет E, 61 Мп, без дисплея и батарейки, вес 277 г. В продаже с декабря за 2950 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[15] Монитор Philips Creator 27E2F7901: 27″ IPS Black, 4K @ 60 Гц, 98% DCI-P3, USB-C. Цена 500 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[16] Монитор ViewSonic VG3419C: изогнутый 34″ VA, QHD @ 120 Гц, 0,4 мс, AMD FreeSync. Цены нет.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[17] Мышь + клавиатура Logitech Pebble 2: добавили версию для маков, уменьшили шум, корпус наполовину из переработанного пластика, пять цветов. Цена 60 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[18] Bluetooth колонка Ultimate Ears Epicboom: всенаправленный звук, сабвуфер, IP67, батарейка на 17 часов, вес 2 кг. Цена 350 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[19] Apple получила патент «Умные очки и жесты управления интерфейсом».

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[20] Прототип навигатора Яндекс Pathfinder: подключается к бортовому компьютеру авто и к смартфону. Когда последний теряет GPS, рассчитывает положение по скорости и поворотам руля. Будет ли продаваться неизвестно.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

▸[21] Смартфон Cubot Note 21: 6,6″ IPS HD @ 90 Гц, Unisoc T606, ОЗУ 6 Гб, ПЗУ 128 Гб, камера 50 Мп, Android 13. В продаже через две недели за 140 $.

0609 | 31 events @ 4 min: Немецкая пятилетка Mozilla, Авиация, Смартфон, Android, Видео, Без звука, Длиннопост

# Business
▸[22] Автозавод BMW заказал у Amazon серверы для обработки данных с беспилотных автомобилей.

▸[23] Канцлер Германии придумал закон: «станции техобслуживания автомобилей обязаны установить зарядки для электромобилей». Сейчас в стране 1,2 млн электромобилей и 90 000 зарядок. Канцлер хочет видеть 15 млн авто и 1 млн зарядок к 2030.

▸[24] Конкуренты Meta переманили половину разработчиков языковой модели Llama.

▸[25] Бухгалтеры кинокомпании Warner Bros. прикинули годовую прибыль: от 10,5 до 11 млрд $. Забастовка актёов и сценаристов обойдётся от -300 до -500 млн $ упущенной прибыли.

▸[26] Apple продлила договор с Arm на поставку технологий после 2040. До какого года не уточнила.

▸[27] GoPro делает новую версию камеры Max 360˚. Даты анонса нет.

▸[28] Презентация Microsoft OneDrive пройдёт 3 октября. Покажут нейросеть для поиска файлов.

▸[29] Китай запретил чиновникам iPhone и другие импортные девайсы.

▸[30] SpaceX перенесла стримы запусков с YouTube в X.

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс⁠ ⁠

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Необычный мини-телефон с ручкой, камерой, двумя SIM-картами, слот для карты памяти, сверху можно вставить пропеллер и обдувать лицо =)Стоит такой примерно 2700 руб. Ссылка на источник

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Миниатюрный телефон-раскладушка в виде спорткара. Стоит такой где-то 2400 руб.ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Телефон в форме пивной бутылки, камерой, двумя сим-картами. Стоит такой кнопочный телефон около 1500 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Миниатюрный кнопочный телефон в стиле Бентли. Стоит такой около 1700 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Миниатюрный маленький смартфон на Android 11. Стоит такой где-то 18 000 руб. ссылка на источник

6) Мобильный телефон Olmio

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Крошечный прикольный телефончик, который еле помещается в руке. Стоит такой около 1600 руб. ссылка

7) Сотовый телефон 1,77″

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Плоский мобильный телефон размером чуть больше банковской карты. стоит такой примерно 1500 руб. ссылка

8) Детский телефон

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Забавный телефон-раскладушка для детей. стоит такой где-то 2 200 руб. ссылка

9) Синий мини-телефон

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Маленький кнопочный телефон «Феррари» с MP3 и Bluetooth. стоит такой 1700 руб. ссылка на источник

10) SOYES Super Mini

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Супер-мини смартфон с экраном 2,5 дюйма. Стоит такой около 3 900 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Прикольный телефон в форме автомобиля. стоит такой около 2000 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Мобильный GSM телефон для девочек в розовом цвете. стоит такой около 3400 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Забавный телефон с радио и ушами. стоит около 2200 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Стильный мини-телефон с экраном 1,77 дюйма. стоит такой около 2400 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Крохотный телефон с гарнитурой. стоит такой 1300 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Мини-смартфон с 3 ГБ озу . Стоит такой примерно 11 000 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Супер мини-кнопочный телефон по форме пивной банки. Стоит около 3300 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Забавный аксессуар в виде трубки от старого телефона и с разъемом 3,5 мм. стоит такая примерно 660 руб. ссылка

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Ретро-телефон с функцией PowerBank. Стоит около 2900 руб. ссылка

20) Огромный ретро-телефон

Топ 20 необычных и прикольных телефонов найденных на Алиэкспресс AliExpress, Телефон, Смартфон, Гаджеты, Товары, Китайские товары, Необычное, Электроника, Мобильные телефоны, Длиннопост

Мощный телефон с мощным аккумулятором 7200 мАч, способный делиться энергией с другими устройствами, закрученная антенна для поддержки мощного сигнала сотовой связи. Стоит такой «Кирпич» около 6000 руб. Ссылка на источник.

Ответ на пост «Случилось невозможное, но долгожданное»⁠ ⁠

Никто вам не будет делать быстросъёмные батареи! Интернет завалили фейковыми заголовками! В законе пишут СОВСЕМ о другом. Ниже выдержка из статьи на хабре.

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

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

Статья целиком на хабре

Убираем рекламу в приложениях на телефонах Android 2023⁠ ⁠

Есть два лучших способа убрать рекламу:

1. Установить браузер, в предыдущей теме.

2. Скачиваем официальное приложение AdGuard. В GooglePlay его нет, поэтому скачивать можно только с оф сайта. (если вдруг сайт не открывается, то используйте VPN).

запускаем и начинаем настраивать, нажимаем:

Принять соглашение — Полная настройка – Заблокировать (поисковая реклама) – Заблокировать (виджеты) – Заблокировать (раздражители) – Конфиденциальность (выбираем комфортный, т.к. другие только в премиум версии) – Нет, не сейчас (Безопасность) – Установить сейчас (фильтрация HTTPS) – Создать локальный VPN (Он потребует пароль, который вы используете при входе в телефон, если его нет, то создайте, затем можете удалить.).

Далее уже в самом приложении:

— настройки – фильтрация DNS –Включаем ползунок.

— настройки – блокировка контента – отключаем Белый список

Заходим в настройки телефона – приложения — AdGuard – и отключаем экономию батареи для этого приложения, чтобы приложение не отключалось в фоне.

Реклама в Xiaomi

Xiaomi полностью убрала рекламу с прошивки MIUI 14 и далее. Поэтому, если есть возможность — обновитесь

Для остальных, убрать всю внутреннюю рекламу можно следующим образом:

— настройки – пароль и безопасность – доступ к личным данным – отключить ползунок приложений msa и MiuiDaemon (это рекламные службы)

— настройки – пароль и безопасность – конфиденциальность — доступ к личным данным – отключить ползунок «программа улучшения качества», «отправлять данные диагностики» — рекламные службы — отключаем ползунок «персонализированная реклама»

— настройки – конфиденциальность – реклама – сбрасываем рекламный идентификатор и включаем ползунок «отключить персонализацию рекламы»

— приложение Загрузки – настройки – отключаем ползунок «Показывать рекомендации»

— приложение Проводник – настройки – информация – отключаем ползунок «Показывать рекомендации»

— приложение Музыка – настройки – расширенные настройки — отключаем ползунок «Показывать рекомендации»

— приложение Очистка – настройки — отключаем ползунок «Показывать рекомендации»

— приложение Видео – настройки — отключаем ползунок «Push-уведомления»

— приложение Тема – профиль — настройки — отключаем ползунок «Показывать рекомендации»

— приложение Безопасность — настройки — отключаем ползунок «Показывать рекомендации»

Убраем рекламу с Google Play

— Google Play – аккаунт – play защита – настройки – отключаем все ползунки по сканированию и отправки информации Google.

Заходим в сбербанк онлайн – профиль – в правом верхнем угла нажимаем настройки – ищем Персональные предложение и отключаем ползунок. Теперь спама в приложении не будет.

Если хотите отключить рассылку рекламных пуш уведомлений, то набираете номер 900, соединяетесь с оператором и отключаете маркетинговую рассылку.

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

Если хотите отключить рассылку рекламных пуш уведомлений, то набираете номер 1000 , соединяетесь с оператором и отключаете маркетинговую рассылку.

Заходим в личный кабинет – настройки – отключить персональные предложения – сохранить.

Заходим профиль – жмем на свой профиль – снимаем галочку Маркетинговая рассылка. Там же жмем безопасность – настройки – отключаем ползунок Фоновая проверка устройства.

YouTube ReVanced

По сути, это тот же Vanced, но уже с последующими обновлениями, которые выходят на регулярной основе. Установка тоже идентичная, необходимо первым скачать MicroG Vanced и установить , а только потом открывать APK ReVanced. В противном случае приложение просто не запустится. Никакой рекламы, SponsorBlock включен автоматически, если вдруг нет, то включается в настройках. Скачать приложение можно с официального сайта, либо с сайта 4pda (нужно зарегистрироваться.

Альтернатива Vanced, простая и понятная программа. Работает в фоновом режиме, SponsorBlock включается в настройках без каких-либо проблем. Единственный недостаток, невозможно привязать аккаунт Google и нет возможности смотреть видео с ограниченным доступом, где нужно подтверждать свой возраст. Такое приложение – идеально для детей. Скачать приложение можно с официального сайта, либо с сайта 4pda.

Простое и легкое приложение, в котором можно войти в Google аккаунт, фоновый режим, однако, к огромному сожалению, нет SponsorBlock, а это очень большой и серьезный минус в нынешнее время. Данное приложение нужно скачивать исключительно с сайта 4pda, в разделе «модификации», т.к. там убрана вся реклама. В Google Play все будет в рекламе.

Напомню, что SponsorBlock – это расширение, которое с помощью всех пользователей в мире, убирает встроенную рекламу в самом ролике. Расширение для ПК и ноутов есть в официальном магазине Google. Для Android она есть только в приложении YouTube ReVanced, New Pipe и в браузере Kiwi (о нем было в 1 части)

Теперь перейдем к другим популярным приложения:

Недавно, компания Яндекс решила охватить своей рекламой данное приложение, поэтому поток мусора будет только нарастать. Чтобы это не допустить и убрать рекламу, заходим на 4pda в тему Telegram, раздел «модификации» и скачиваем МОД версия: 9.6.7 Чистый мод (Alex.Strannik), где убрана: аналитика, спонсорская реклама, проведена оптимизация. Мод скачивается и устанавливается на вашу версию, ничего дополнительно делать не нужно.

Аккаунт – Информация – О программе – Снимаем ползунок, показывать рекламу.

Если данная функция убрана в вашей версии, то скачиваем с 4пда старую версию (не выше 10.0), отключаем ползунок, затем заходим в Google Play и обновляемся до последней. Теперь в приложении рекламы не будет.

Яндекс погода:

Заходим в приложение – о приложении – не показывать рекламу (включаем ползунок)

Яндекс почта:

настройки – настройки – снимаем ползунок «Показывать рекламу». Если такого ползунка нет, то скачиваем старую версию, отключаем ползунок и обновляем.

Яндекс Метро / Яндекс Электрички / Яндекс Диск

Скачиваем модифицированную версию с сайта 4pda

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

Для всех приложений, крайне рекомендация отключить уведомления (если они вам конечно не нужны) и режим фоновой работы (кроме программы AdGuard, если она у вас установлена) (будет экономить батарею).

Отключаем рекламу в приложениях VPN.

Обычно, подобная реклама включается тогда, когда мы пытаемся отключить VPN и приходится ждать, пока она пройдет и длиться это может до минуты. Делаем все проще, на рабочем столе зажимаем приложение VPN, появляется внутреннее меню – нажимаем «Сведения» — попадаем в настройки данного приложения и просто нажимаем отключить.

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

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung?⁠ ⁠

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Мы с вами уже давно привыкли, что при покупке нового смартфона приходится выбирать всего из двух программных платформ — Android и iOS. Большинство читателей едва ли помнит, что дуополия на рынке была далеко не всегда: на заре развития смартфонов как повседневных устройств для всех и каждого, некоторые производители представляли свои собственные платформы. Но если Windows Phone всё ещё вспоминают с теплотой, то о другой системе, которая позиционировалась как конкурент Android, забыли практически полностью. И имя этой системе — bada! Недавно я купил себе парочку полностью рабочих bada-фонов с AMOLED-дисплеями по 300 рублей. Были ли у bada шансы в сравнении с Android и что из себя представляла эта система «под капотом»? Узнаете в статье!

❯ Текст

По сравнению с обычными кнопочными телефонами, современный рынок смартфонов зародился не так уж и давно — всего около 13 лет назад. На стыке нулевых и десятых шла активная борьба за карман и предпочтения пользователя: Android 1.6 потихоньку заменял современный Android 2.0/2.1 Eclair, первые три модели iPhone шли победоносной поступью благодаря наличию джейлбрейка и полной кастомизации системы, да и практически каждый крупный производитель мобильных устройств имел собственную платформу, на которой базировались её устройства.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

В середине-конце нулевых, большинство пользователей были не искушены фишками полноценных операционных систем — они привыкли жить без многозадачности (за исключением пользователей Sony Ericsson и S60), без нативных приложений, без плавных анимаций и ускорения 3D-графики. Людей подкупал встроенный функционал телефонов: если там была встроенная читалка RSS и предустановлен клиент популярных в то время соц. сетей (мой мир :)), то обладатель устройства обычно пользовался именно ими. Конечно же, уже тогда были смартфоны, напоминающие нам современные устройства: помимо Apple, свои устройства предлагали Nokia (Symbian), Sony Ericsson (Symbian/Windows Mobile), HTC (Windows Mobile), но цены на них действительно очень «кусались».

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Huawei U8500, или Билайн E300 — один из первых реально доступных Android-смартфонов в РФ. Ценник был около 6-7 тысяч рублей в конце 2010 года.

После выхода iPhone, производители потихоньку начинали отказываться от привычных кнопок и выпускать всё больше моделей с тачскрином. А поскольку попробовать новый способ управления хотелось всем, начали появляться относительно недорогиетачфоны— обычные телефоны, обладающие сенсорным дисплеем и кучей сетевых возможностей. Примеры одних из самых популярных тачфонов своих лет, это конечно же Samsung S5230 Star, Samsung S3650 Corby, LG Cookie и LG Cookie Fresh. В те времена, встретить человека с таким телефонов было не просто, а очень просто и в каких-то отдаленных местах это даже был предмет для хвастовства!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Когда уже было очевидно, что полноценные смартфоны в ближайшем будущем станут основным портативным устройством, Samsung решили взять предыдущий опыт и наработки SHP (Samsung Handset Platform — платформы S5230) и влить их в разработку совершенно новой смартфонной платформы, имя которой была —bada(с корейского — море). Новую платформу представили с свежей линейкой смартфонов Samsung Wave, а первым устройством был S8500 — смартфон на базе bada 1.0 с ёмкостным тачскрином и AMOLED-дисплеем. Вышел девайс в том же году, что и первый Android-флагман S-серии — Samsung Galaxy S…

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

И с этим связан очень интересный казус, ведь «под капотом», S8500 был очень похож на своего Android-собрата: использовался тот же чипсет Exynos 3110 «Hummingbird» (он же использовался и в iPhone 4 как Apple A4 с некоторыми доработками) с тем же радиомодулем. Конечно остальные характеристики были немного скромнее Galaxy S (384мб ОЗУ против 512мб, 8гб ПЗУ вместо 16, AMOLED-матрица немного меньше по диагонали), но и сам смартфон стоил ощутимо дешевле Android-собрата. Немудрено, что энтузиасты начали пытаться портировать Android на S8500 — и у них это получилось, хоть полноценный порт появился примерно через 2 года после выхода устройства на рынок.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Но почему большинство пользователей хотели перепрошить своё устройство на Android и чем была bada? Предлагаю узнать в практической части!

❯ Сегодняшние герои

Недавно я листал онлайн-барахолки в поисках интересных и несколько диковинных смартфонов для будущих статей. Выборка, как обычно для моего блога, стандартная: чем дешевле, тем лучше. И тут я вспомнил, что были когда-то смартфоны на базе bada — я будучи школьников даже успел потыкать Wave 525 у знакомого.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

E300 я тоже решил прихватить — за 300 рублей предлагался девайс с родной коробочкой!

Однако не все бадафоны представляли для меня интерес. В первую очередь, меня интересовали смартфоны с GPU, которых не было у самых бюджетных устройств (Wave 525) и одной из главных хотелок был крутейший SuperAMOLED дисплей. После недолгих поисков, я нашёл на юлито интересующие меня девайсы за… 300 и 500 рублей.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

«Дефект» первого смартфона заключался в забытом пароле. Это всё обходится буквально за 5 минут установкой свежей прошивки, но мне даже этого делать не пришлось: паролем оказался «1111» 🙂 S7250 работает на базе bada 2.0 — последней версии этой платформы от Samsung, до слияния с Tizen.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Второй смартфон был полностью рабочим и исправным. Ему не требовалось никакого обслуживания совсем, хотя можно найти целые варианты на пароле из 200-300 рублей. Что занимательно — S8500 работал на базе bada 1.0, что даёт нам возможность напрямую сравнить их!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

❯ Что у них под капотом?

Я намеренно не называю bada операционной системой. По сути, это лишь программная платформа (если очень условно — лаунчер), которая предоставляет набор API и интерфейс смартфона, но при этом сама может быть запущена на любой ОС — будь это Linux, или собственная RTOS, которая применялась во всех устройствах на базе bada 1.0.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

После адаптации ядра Galaxy S к S5800, многие люди переходили именно на Android, несмотря на то, что система от Google была ощутимо прожорливее. Под первый Wave выходили разные прошивки — от 4.1 JellyBean, до 4.4 KitKat, старичок долгое время оставался достаточно актуальным.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Требования платформы были отнюдь невысокими, гораздо ниже оных у Android: bada могла легко работать на смартфонах с <128мб ОЗУ (у Wave 525 завялено 80мб, по факту скорее всего 128, где 48 зарезервировано системой), чипсетом с частотой

200мгц и весьма небольшим объёмом ПЗУ. При этом в отличии от тачфонов, bada предоставляла механизм пакетов и предлагала разрабатывать приложения аж на трёх языках:

Java — в платформе была реализована полноценная поддержка J2ME приложений, что в те годы сразу устраняло недостаток приложений в магазине. При этом, Java-приложения не умели одни из самых важных фишек новой системы: уведомления и (возможно) ускорение 3D-графики. Кроме того, у Samsung не очень удобный джойстик для «кнопочных» игр.

C++ — основным языком для разработки приложений под bada были «плюсы». Платформа сразу выбрала «нативные» рельсы — что само по себе очень хорошо, однако из-за некоторых казусов, это обернулось проблемами. Найти SDK и эмулятор для разработки под bada можно и сейчас — я уже успел немного почитать документацию и посмотреть на сэмплы. И в целом, именно с точки зрения разработки, bada была весьма интересной — эдакой смесью костылей Symbian (нет исключений, полное отсутствие RAII и инициализация отдельно от аллокации) и простоты Java (приятная и удобная библиотека собственных дженериков, абстракций над базовыми типами и приятное API для построения интерфейса с конструктором форм). При этом, поддерживались все остальные фишки плюсов — в том числе и STL.

JavaScript — да, bada решила выбрать концепцию PWA, как одну из основных. При этом в JS было экспортировано часть API самой системы — что позволяло делать интерфейс как на JS, так и с использованием нативного фреймворка.

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

Отсутствие многозадачности — ядро, на которой работала bada, само по себе было многозадачным: в приложениях поддерживались потоки. Однако сами программы, за исключением предустановленных, всегда работали в однозадачном режиме. Почему так — неизвестно, возможно часть оптимизации под совсем слабые устройства типа Wave 525. Полноценная многозадачность появилась уже в bada 2.0.

Отсутствие адаптивности интерфейса — да, это не шутка. Samsung предлагали адаптировать приложение под каждое разрешение экрана отдельно, а всё позиционирование велось в пикселях. Если честно, именно этот шаг мне понятен меньше всего — Android с самого выхода предоставлял очень крутой механизм позиционирования интерфейса, да и в iOS тоже были какие-то инструменты для адаптивного UI. Это была одна из самых главных проблем bada — по сути, мы возвращались в эпоху Java-приложений а-ля 240×320/320×480.

Нестабильность системы — не на всех телефонах фирменная прошивка работала максимально стабильно. На некоторых моторолах ребут не был таким уж редким явлением, а некоторые китайчики могли начать перезагружаться после манипуляций в инженерном меню. Однако ожидать этого от смартфона в 2010 было странно — по некоторым слухам, даже если сторонняя программа вывалится с Access Violation (SIGSEGV), то в ребут уйдет вся система! Возможно, RTOS не умела нормально работать с MMU, однако если все программы действительно работают в «flat»-адресном пространстве, а не с виртуальной памятью, то это создаёт очень серьёзные уязвимости (и потенциал для моддинга прошивки).

Но были у системы и очень вкусные «плюшки», например — из коробки полностью поддерживалось хардварное ускорение 3D-графики (при наличии GPU), причём сразу свежий OpenGLES 2.0 — с поддержкой шейдеров! Благодаря этому, перспективы в новой платформе были и для разработчиков игр — я знаю как минимум несколько полноценных 3D-игр с iOS и Android для ОС от Samsung. Добавляем к этому потенциал реализации 3D-ускорения Java-приложений и получаем действительно годное устройство для прохождения такой годноты, как Galaxy On Fire 2 в 60 FPS! Кроме GPU, bada поддерживала виджеты и т.н «Хаб» — приложение-агрегатор событий из соц. сетей.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

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

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

❯ Смотрим на устройства

Первое, на что обращаешь внимание, когда берешь смартфоны начала 2010х в руки — это их компактный размер. Причём компактность здесь отнюдь не в ущерб юзабилити: в своё время, размер дисплея Wave был типичным среднячком — на уровне как 5.5″ сейчас. Но при этом дисплей смартфона действительно очень классный и приятно удивляет и сейчас. Однако, здесь есть нюанс — помимо S8500, выходил так-же S8530 — практически такой же смартфон, но с SC-LCD (Samsung IPS) матрицей. В те годы, корейская компания часто давала выбор между различными типами матриц в пределах одной модели. Да что там говорить, иногда даже серьезные различия в чипсетах были!

На моем экземпляре, к сожалению матрица немного выгорела, в самом проблемно месте — верхней шторке. Увы и ах, но заметно это не так сильно, поэтому я лично обратил на это внимание только на второй день использования. Во всём остальном, я не чувствую никакого дискомфорта от «старых» OLED-дисплеев — могу без проблем юзать их часами. Wave M — устройство попроще и там используется обычная TN-матрица. Но тем не менее, её размер в 2010-2011 году был весьма впечатляющим.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Сам интерфейс системы здесь напоминает Symbian и Android одновременно. Оно в целом и не удивительно: Samsung долгое время была участником Symbian Foundation и разрабатывала обновления для этой ОС, а также выпускала свои смартфоны на базе этой системы. Ко второй версии bada, концепцию UI сильно поменяли в сторону Android, из-за чего Wave M больше похож на смартфон с Android 2.x на борту — и лично по мне, этот интерфейс около-идеален!

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Сам девайс работает достаточно плавно. Здесь практически нет 60, или хотя-бы 30 FPS анимаций, но зато сама платформа отнюдь не «лагучая» в отличии от ранних версий Android.

Весьма занимательный способ установки приложений придумали пользователи бадафонов в своё время: система проверяет сертификаты и покупку только во время установки приложения, при этом вся установка заключается в распаковке zip-архива в специальную директорию на SD-карточку. По итогу очень скоро обнаружилось, что можно просто скопировать уже готовую купленную игру, скачать какое-нибудь бесплатное приложение, подменить файлы в его папке на файлы игры — и получить приложение бесплатно! В bada 2.0 этот баг поправили, но всё равно это выглядело весьма забавно для компании такого уровня.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Что насчёт юзабилити бадафонов в наше время? Ну, базовые функции они точно смогут выполнять достаточно достойно. С основной функцией «звонилки» корейцы справлялись всегда хорошо — тут и удобная синхронизация контактов с Kies (программа для синхронизации с ПК), и возможность передавать контакты через BT.

Здесь, само собой, есть Wi-Fi и 3G, но ни о каком сёрфинге речи практически не идёт. Почему практически? Потому что Opera Mini 7 всё ещё работает и уходить на покой явно не собирается — а значит прочесть материал или зайти на википедию в экстренной ситуации точно получится. bada 2.0 уже поддерживала в том числе и HTML5, но судя по всему, частично (CSS3 анимации у меня не работали). В целом, если у вас есть большое желание поставить «бадафон» в строй — то можете запилить для себя PWA-приложения, которые реализуют необходимый вам функционал. Так и клиент ВКшечки можно реализовать, и почту листать, и СМСки от банков обрабатывать.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Зато почтовый клиент работает!

Один из самых важных критериев для меня — это наличие в смартфоне годного аудиотракта. У моего BlackBerry Priv качество звука просто отменное, притом что используется встроенный ЦАП в Snapdragon 810. И плеер, и качество звука здесь очень даже ничего. Плеер удобный, есть DLNA для трансляции мультимедиа на телевизор.

Лично у меня сложилось впечатление, что в середине десятых, качество звука через 3.5мм джек заметно просело у смартфонов, по сравнению с народными музыкальными Nokia — как например 5310.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Ну и не забывая про мультимедийную часть смартфона, я проверил камеру — когда-то, у Galaxy S была весьма достойная камера, учитывая его ценовой сегмент. У Wave камера тоже вполне ничего, правда с теми же «болячками», что и у других мобильных камер прошлых лет — крайне плохое качество при съемке в темноте. Ну и автофокус забрали. 🙁

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Поскольку у смартфонов был GPU и Samsung всерьез старались привлечь разработчиков игр под свою платформу, на bada выходили и 3D-игры с очень годной, по тем временам, графикой.

В целом, недостаток нативных приложений в какой-то степени компенсируется наличием J2ME, но именно отсутствие нормально поддержки от Samsung и странная политика в отношении безопасности, в конечном итоге добили bada. После того, как превосходство Android стало очевидным, Samsung решили сделать упор в Tizen — идеологическом продолжении MeeGo, мобильной ОС, которая разрабатывалась Intel и Nokia. Компания выпустила сразу несколько устройств на новой платформе — Samsung Z (без Galaxy), после которого вышло ещё несколько смартфонов и Tizen окончательно обосновался на холодильниках/часах/телевизорах. Мобилок на Tizen я пока ещё не видел, хотя покопать их с технической точки зрения и сравнить с N9 было бы интересно — но в РФ они достаточно редкие.

Bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung? Гаджеты, Смартфон, Покупка, Телефон, Samsung, Galaxy, Bada, Диковинки, Девайс, Статья, Длиннопост, Мобильные телефоны, Android

Ну а несколько лет назад, Samsung закрыла магазин приложений Tizen, что формально означает полный провал «вертушки» 🙁

❯ Заключение

Samsung в плане самопальных платформ напоминает Microsoft — те тоже умудрились сделать действительно крутую и необычную Windows Phone, отвоевать какой-то процент рынка и заполучить фанов своей системы, но затем пришли эффективные менеджеры и решили рубить всё на корню.

И даже если команды разработчиков самих этих платформ горят идеей запилить что-то крутое, бабло и желание улучшить отчетность делают своё дело. Но раз в год и палка стреляет — не зря ведь инженеры Nokia основали свою компанию Jolla, которая пилит Sailfish OS. А ведь «Аврора» — прямой наследник Sailfish! 🙂

Но если говорить конкретно о бадафонах — то несмотря на баги и некоторые глупые решения, это были весьма годные девайсы, учитывая действительно низкую цену. Настоящим конкурентом бюджетных бадафонов была лишь Nokia 5228/5230, которая хоть и имела настоящий Symbian, но не была оснащена Wi-Fi, GPS и даже 3G. Но вот с кем bada могла конкурировать в верхнем сегменте рынка?

Пишем приложение на Mi Band 7 с сервисной частью⁠ ⁠

Недавно я купил себе Mi band 7, по началу хотел купить 6-ую версию, пока не узнал, что на 7-ой обновилась операционная система и теперь она поддерживает установку приложений. Да, официально они об этом не заявили, но умельцы уже сделали множество приложений. Они ставят их как циферблаты, и это вполне обычные приложения. Но все эти приложения работают только локально на самом MiBand 7, не имея возможности взаимодействовать ни с телефоном, ни с интернетом. Я углубился в байткод приложения и документацию по Zepp OS чтобы найти способ создавать приложения, взаимодействующие с интернетом, в этой статье я опишу свой путь. В итоге у меня получилось сделать запрос в интернет с часов и даже запустить мост для отладки приложений.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Сразу скажу, что я уже публиковал эту статью на Хабр. Но хочу теперь попробовать начать писать статьи на Пикабу, так что я буду очень рад любым комментариям и отзывам. Надеюсь пользователям Пикабу эта статья тоже зайдет)

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

Почему приложения официально не поддерживаются?

Мне интересен этот вопрос, но к сожалению я не знаю причин. Похоже что Xiaomi Band 7 сделала для xiaomi компания zepp. И им было проще не поддерживать другую операционную систему, а использовать уже имеющиеся наработки для часов zepp. Поэтому на этих часах стоит система ZeppOS. Вероятно Xiaomi решила не платить за все фишки системы и поэтому функционал часов программно ограничен.

Начало

Для начала, чтобы разобраться как работает система, я попробовал поставить пару приложений от MelianMiko. Ставил самым простым способом, через приложение для установки циферблатов, подробности можете почитать на 4PDA. Я немного поразбирался в структуре приложений и вот что я понял: приложение это bin файл, который является простым zip архивом с, как минимум, несколькими файлами: app.json(Manifest), app.js(Код инициализации и деинициализации приложения при запуске), index.js(Код страницы),icon.png. Далее я пошел на сайт официальной документации по ZeppOS, там описано как включать режим отладки через приложение ZeppApp. Но попробовав подключить часы через это приложения я получил ошибку:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Я решил на этом не останавливаться, скачал это приложение версии 7.0.1, декомпилировал через apktool в байткод и через jadx в java код:

apktool d com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk jadx com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk -d com.huami.watch.hmwatchmanager_7.0.1-play_100802_JADX

Далее для исследование кода проще использовать результат jadx, но скомпилировать обратно получится только результат apktool, поэтому изменения придется делать в байткоде.

Для начала я убедился что это приложение поддерживает ну или когда-то поддерживало MiBand. Для этого я нашел несколько упоминаний MiBand 7 (Официально он называется Xiaomi Smart Band 7). Его кодовое название в приложении “MILI_L66”.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Далее я решил обмануть приложение(пока без его изменения) и попробовал подключить свои часы к приложению, притворившись другими часами. Для этого я отсканировал qr для сетапа на своих часах я получил такую ссылку:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

В ней указан мак адресс, pnpNumber, pnpVersion — это похоже какие-то идентификаторы устройства. Я пробовал их заменить, но это не помогло, поэтому я решил посмотреть, какие qr коды у других устройств zepp при сетапе. В гугл я нашел видео в привязкой Amazfit Band 7, отсканировал код, получил такую ссылку:

Эта ссылка ссылается совсем на другое доменное имя. Далее я решил попробовать просто подставить в этот URL macAddress из своего qr кода и сделать с этого url qr код. И это помогло, мои часы подключились, приложение засетапило их как Amazfit Band 7.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Я обнаружил что весь функционал из приложения Xiaomi здесь есть и я могу полноценно настраивать свои часы. Но после сетапа приложения понимало что у меня не Amazfit а Mi Band и не давало возможности ставить никакие приложения и циферблаты для Amazfit. Поэтому дальше я решил переделать приложение.

Перекомпиляция приложения

Чтобы приложение дало мне возможность ставить mini apps на часы, я решил заставить его думать что у меня не Xiaomi Smart Band 7, а Amazfit Band 7. Для этого таже как и для Mi Band 7, нашел кодовое название для Amazfit Band 7 — “MiliBari”:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Далее нашел все упоминания MILI_L66 и MILI_BARI. Самым интересным показался класс HMDeviceSource:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Вы можете в нем увидеть коды соответствующие разным типам устройств — их идентификаторы.

Далее необходимо переключиться на байткод, который нам выдал apktools.

Здесь я тоже нашел байткод класса HMDeviceSource$a.smali и изменил в нем 3 строки как на скриншотах:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Теперь можно собрать его обратно, подписать, установить. Оригинальное приложение придется сначала удалить, так как подпись теперь не оригинальная.

apktool b com.huami.watch.hmwatchmanager_7.0.1-play_100802 —use-aapt2 apksigner sign —ks-key-alias alias_name —ks-pass pass:123456 —ks release-key.keystore com.huami.watch.hmwatchmanager_7.0.1-play_100802/dist/com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk adb install com.huami.watch.hmwatchmanager_7.0.1-play_100802/dist/com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk

Теперь можно снова логиниться в приложении и подключать Mi Band как я описывал выше, изменяя qr код.

Работа перекомпилированного приложения

После этих манипуляций приложение начало отображать функционал как для amazfit band 7! Ура! На изображении сначала будет Mi Band 7, но если поменять циферблат, то оно сменится на amazfit band 7. У меня циферблат от Аmazfit встал как родной.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Также теперь появилась кнопка App Store, там можно поставить приложения из магазина для amazfit band 7. Не все заработали идеально, но большинство. Их почему-то в магазине пока только 5. Видимо пока весьма маленькое сообщество разработчиков)

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

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

Создание проекта

На 4PDA я нашел проекты пользователя MelianMiko. Он сделал и симулятор mi band, и множество приложений, и утилиту для сборки проектов — zmake. Можете ими воспользоваться для создания простых приложений, но как я понял zmake создает проекты только без сервисной части, выполняемой на телефоне. Еще в отличии от официального сборщика он, не сжимает код в bin файл, а оставляет в формате js(Тут может ошибаюсь, поправьте если не так). Симулятор к сожалению не работает под Linux и MacOS, поэтому я им не пользовался, вместо него использовал официальный симулятор Amazfit band 7.

Для создания проекта я использовал официальную утилиту zeus для ZeppOS. Новый проект можно создать командой zeus create project-name. Необходимо выбрать “1.0 API”, апи второй версии MiBand 7 не поддерживает.

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

Когда проект будет готов, его можно собрать командой zeus build. В папке dist появится архив в формате zab, его можно открыть как простой zip архив. В нем манифест с описанием приложения и архив common.zpk, который тоже открывается как zip архив. В нем уже можно увидите основные составляющие приложения:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Файл device.zip содержит код выполняемый на часах, ему можно сменить формат на bin и поставить даже через приложение для установки циферблатов.

Файл app-side.zip сожержит код выполняемый на стороне телефона.

Вроде еще может быть файл, описывающий настройку mini app с помощью приложения телефона.

Отличный набор примеров приложений, в том числе с сервисной частью, есть на github. Я, как основу, взял пример “fetch-api”.

Настройка моста

Тут нет ничего особенного, все из документации ZeppOS. Необходимо залогиниться в один аккаунт в приложении на телефоне и в приложении симуляторе. Включить режим разработчика в приложении и потом выбрать часы в списке устройств, открыть внизу настройки разработчика и в выпадающем списка нажать кнопку включения моста. После подключиться к мосту надо и в приложении симуляторе, нажав кнопку Bridge.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Теперь можно пользоваться консольной утилитой zeus для отладки проекта:

Запрос в интернет по кнопке на часах.

Как я уже писал выше, я взял за основу пример проекта с официального гитхаб аккаунта zepp os, “fetch-api”. Изменив код в app-side, я сделал запрос с телефона на домен ident.me, чтобы получить мой текущий внешний ip, ради примера.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Вывод

В итоге я получил небольшое приложение на часах, которое может когда угодно выводить мне мой внешний ip. Это конечно не та цель, к которой я стремился. Моей целью было продемонстрировать, то что на самом деле у часов Mi Band 7 есть скрытый, программно ограниченный функционал. Эти часы могут не просто менять циферблаты, но и работать с приложениями. И даже отправлять данные через телефон в интернет и получать ответ. Такие приложения можно использовать например для управления умным домом) Вероятно в будущих версиях часов об этом официально заявят, но пока такого нет. Даже на Band 7 Pro официально не стоит zepp os.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

P.S. Это была моя первая статья. Надеюсь вам было интересно, пишите комментарии, буду рад любой критике!

Недавно я создал телеграм канал. Там я планирую регулярно делиться интересными мыслями по темам информационной безопасности, программирования и нейросетей. Если вам интересны такие темы, присоединяйтесь) буду делиться там подобным контентом.

Классический мэмас⁠ ⁠

Классический мэмас

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля⁠ ⁠

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!

Мотивация

Честно сказать, идея попытаться реализовать свою прошивку мне пришла ещё давно. Однако, дабы не завлекать опытного читателя кликбейтом, я сразу поясню, в чём заключается «прошивка с нуля»:

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

Мы не используем библиотеки AOSP: наша прошивка без необходимости не использует никаких библиотек уже имеющегося образа Android. Вся работа с железом происходит с помощью низкоуровневого API Linux. Это значит, что отрисовка графики, звук, управление ресурсами и питанием ложится полностью на нас.

Прошивка может запускать только нативные программы: да, это тоже камень в сторону Android. Изначально, наша прошивка умеет запускать только нативные программы, написанные на C. Причём она экспортирует собственное C API — дабы приложения могли использовать всю мощь нашего смартфона в виде простого и понятного набора методов.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Проектов по выкидыванию Android из, собственно, Android-смартфонов как минимум несколько: UBPorts — бывший Ubuntu Touch, FireFox OS и его наследник Kai OS и конечно же, postmarketOS. Отчасти можно сюда отнести и Sailfish OS — но там образы имеются в основном на смартфоны от Sony. Все эти проекты объединяет сложность портирования и невозможность их завести на устройствах без исходного кода ядра. Даже если у вас есть исходный код ядра, но, например, устройство использует ядро 2.6 — навряд-ли вы сможете завести современный дистрибутив на нём.

Другой вопрос в том, что можно использовать полу-baremetal подход, когда от Linux берется практически минимальный функционал. Всё, что мы имеем — busybox, libc и низкоуровневый доступ к железу, благодаря API самого ядра. Как под это всё программировать — я рассказывал впрошлойстатье. Этот же подход мы будем использовать и сейчас — как иллюстрация реального применения подобного способа.

Итак, что наша прошивка должна уметь:

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

Уметь звонить и работать с модемом: общение с модемом происходит посредством AT-команд — общепринятого в индустрии стандарта. Однако в случае нашего устройства, есть м-а-а-а-ленький нюанс, о котором я расскажу позже.

Иметь механизм приложений: мы ведь не будем хардкодить все «экраны» в прошивке в виде кучи стейтов, верно? Для этого у нас должен быть простой и понятный механизм слинкованных с прошивкой приложений.

Обрабатывать ввод: обработка тачскрина и жестов — это задача подсистемы ввода.

Реализовывать анимированный UI: здесь всё очевидно, наша прошивка должна иметь готовые элементы пользовательского интерфейса для будущих приложений: кнопки, текстовые поля и т. д. О деталях реализации этой подсистемы, я расскажу ниже (а реализовал я её очень необычно для такой системы).

Начинаем мы с хардварной части. Именно здесь я покажу вам, как использовать внешние шины вашего устройства.

Аппаратная часть

В качестве смартфона для нашего проекта, я выбрал популярную бюджетную модель из 2012 года — Fly IQ245 Wizard. Это простенький китайский смартфон, который работал на базе популярного в прошлом 2G-чипсета: MediaTek MT6573, да и стоил около 2х тысяч рублей новым. Однако вот в чём суть: мне удалось заставить работать «медиатековский» модем и даже позвонить с него на свой основной телефон, но… только ввод и вывод данных из звукового тракта модема происходит через звуковую подсистему Android — к которой доступа у нас нет!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Именно поэтому, мы идём на очень хитрый и занимательный костыль: мы распаяем внешний модем сами! В качестве радиомодуля у нас выступит модуль SIM800 от компании SIMCOM. И даже он очень близок к нашему смартфону в аппаратном плане: ведь в основе этого модуля лежит популярнейший чипсет из кнопочников тех лет: MediaTek MT6261D. Преимущество SIM800 в его цене — он стоит пару сотен рублей, так что по карману выбор модема не влияет.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

На весу паять крайне неудобно. В финальном варианте перепаяю нормально.

Но как его подключать? SIM800 общается с другими устройствами посредством протокола UART — универсальный асинхронный приемо-передатчик. И вот тут мы включаем смекалочку. Разбираем устройство и видим то, что я пытаюсь долгое время донести до моих читателей — аж два канала UART: один практически посередине, второй справа. Нам нужны пятачки TXD4 и RXD4:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Обычно на этот канал UART летят логи ядра, которые можно без проблем отключить минорной правкой U-Boot в HEX-редакторе. Впрочем, модем никак не реагирует на «мусор» из консоли и просто отвечает ошибками — хватит лишь очистить буфер сообщений для того, чтобы все работало нормально. Подпаиваемся к UART’у с помощью преобразователя — у меня оным выступает ESP32 с выпаянным чипом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Увидели логи? Замечательно, пора попытаться что-то отправить на ПК и с ПК. UART работают без тактовых сигналов и зависит исключительно от старт/стоп битов и бодрейта, который на устройствах MediaTek равен 921600. TXD4 и RXD4 обнаруживаются в системе на консоли/dev/ttyMT3. Пробуем что-то отправить: всё работает!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Вот теперь-то можно подключить наш внешний модем и попытаться пообщаться с ним, отправив тестовую командуAT. Модем отвечаетOK! На этот раз я работаю с смартфоном из режимаFactory mode— практически тоже самое, что и режим recovery, но позволяющий, например, получить доступ к камере устройства. Простая и понятная схема, поясняющая что и куда подключать:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

На этом модификация аппаратной частипоказакончена. Пора переходить к реализации софта! Я решил разделить материал на каждый модуль, который я реализовывал — дабы вам был понятен процесс разработки и отладки прошивки!

Заставляем смартфон запускать нашу прошивку

На этот раз я решил загружать смартфон из режима рекавери. Однако никто не мешает в будущем просто прошить раздел recovery вместо boot и получить прямую загрузку прямо в нашу прошивку. Время такой загрузки будет заниматься

3-4 секунды с холодного старта. Очень даже ничего.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Я взял уже готовый образ TWRP для своего смартфона и пропатчил его, дабы сам рекавери не мешал своим интерфейсом. Для этого я распаковал образ recovery.img с помощью MtkImgTools и убрал в init.rc запуск службы /sbin/recovery. После этого, я залил прошивку обратно на устройство и получил подобную свободу действий — консоль через USB и чистый холст в виде смартфона! Старые смартфоны на чипсетах MediaTek шьются через USB только после замыкания тест-поинта — на моем аппарате его местонахождение очевидно. Замыкаем контакты между собой, подключаем смартфон без АКБ к ПК и ждем прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Теперь можно деплоить программы! Важный нюанс: в отличии от Makefile из прошлой статьи, для Android 2.3 параметр -fPIE нужно убрать — иначе динамический линкер (/sbin/linker) будет вылетать в segmentation fault.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

❯ Графическая подсистема

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

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

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

В случае с этим устройством (и большинством старых устройств), формат пикселя оказался RGB565 — т. е. 5 бит красный, 6 бит синий, 5 бит зеленый. Конвертация форматов пикселей всегда была занозой в заднице для программных рендереров, поскольку занимает дополнительное время, которое обратно зависимо от размера дисплея. Изначально я решил выделить буфер в том же формате, что и фреймбуфер, но затем решил сделать классический и самый портативный формат — RGB888 (24х-битный цвет), а при копировании кадра на экран, на лету делать преобразования цвета:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Очень важный нюанс, который я не упомянул в предыдущей статье: на устройствах прошлых лет для обновления фреймбуфера необходимо послать структуру var_screeninfo, где хотя бы что-то изменено, иначе никаких изменений мы не увидим. Этот же костыль используется в родном recovery для отрисовки, а судя по исходникам драйвера fb, «правильный» способ обновить экран — послать драйверу ioctl (который я пока что не пробовал).

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

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Загрузчик TGA сильно не поменялся: я таскаю его в неизменном виде из проекта в проект. Он поддерживает любые форматы пикселя, кроме палитровых, но я его искусственн ограничиваю на RGB888 и RGBA8888 — для поддержки обычных картинок и картинок с альфа-каналом. После этого, я написал не очень шустрые, но достаточно универсальные методы для отрисовки картинок. Для больших участков кода, я буду использовать pastebin, поскольку на Пикабу до сих пор не добавили ни подсветки синтаксиса, не нормальный перенос форматирования табов 🙁

PutPixel желательно заинлайнить в будущем. В целом, сама отрисовка работает достаточно быстро, но поскольку рендеринг выполняется на ЦПУ — рано или поздно мы упремся в количество картинок на экране. Есть некоторые оптимизации: например, непрозрачные картинки можно просто коприовать сканлайнами прямо в задний буфер.

Сразу же реализовываем методы для рисования шрифтов: они у нас будут совсем простенькими — только моноширинные (все символы имеют одинаковую ширину) и растровыми (для каждого размера придется «запекать» несколько шрифтов). Для этого я написал маленькую программку, которая рисует виндовые шрифты прямо в наш самопальный формат:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

1 байт говорит нам о размере шрифта и далее идут 255 изображений символов. Да, это не очень эффективно т.к попадают пустые символы из ASCII-таблицы, но в будущем это можно поправить.

Прозрачность в символах обеспечивает фоновый цвет Magena — ярко-розовый. Я не стал делать дополнительный альфа-канал, т. к. иначе будут серьезные лаги при выводе большого количества текста.

Теперь у нас есть отображение картинок и текста! Что с этим можно сделать?

❯ Обработка ввода

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Пока что здесь не хватает обработки «хардварных» кнопок — домой, меню, назад и т. п. Однако в будущем это всё можно реализовать!

❯ Анимация

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

Аниматор напоминает оный из ранних версий Android: он имеет фиксированный набор свойств, которые умеет интерполировать в промежутках определенного времени. Если простыми словами: то он оперирует линейными отрезками времени a и b, в промежутке которых мы имеем значение «прогресса» — которое даёт нам результат от 0.0f (начало анимации) до 1.0f (конец анимации). Пока время тикает до необходимого интервала (duration), аниматор интерполирует заранее назначенные ему поля до нужных значений.

Именно так и получается плавность! Похожим образом реализованы анимационные системы во многих играх и мобильных ОС, только там они гораздо более комплексны: есть сериализация/десериализация из файлов, поддержка кейфреймов (несколько последовательных состояний на одном промежутке времени), поддержка кастомных свойств и т. п.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

❯ Модем

Как я уже говорил раннее, работа с модемом происходит посредством AT-команд. Лучше всего обрабатывать ввод-вывод модема из отдельного потока, поскольку он может отвечать довольно медленно и тормозить UI-поток основной программы, вызывая лаги. В SIM800 уже реализован весь GSM-стек, в том числе декодирование и вывод звука через встроенный усилитель с фильтром — остается только подключить динамики и микрофон от нашего телефона. Пока что я подсобрал аудиотракт на том, что было под рукой — микрофон от нерабочего смартфона и динамик от планшета, но для проверки этого хватает:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Важный нюанс: по умолчанию, tty-устройства в Linux работают по терминальному принципу — т. е. дробят транзакции по символу окончания строки (\n), имеют ограниченный буфер и т. д. Для нормальной работы в условиях модема — когда фактически длина ответа неизвестна, а в сам ответ могут «вклиниваться» Unsolicited-команды (своеобразные флаги о состоянии от модема, которые могут прийти в произвольное время — т. е. при входящем звонке, модем начнёт флудить RING в терминал), необходимо иметь возможность точно прочитать весь буфер до конца и парсить данные «по месту». Для этого используется raw-режим терминала:

(BRKINT | ICRNL | INPCK | ISTRIP | IXON);

tio.c_oflag &=

(OPOST);

tio.c_cflag |= (CS8);

tio.c_lflag &=

(ECHO | ICANON | IEXTEN | ISIG);

tcsetattr(modemFd, TCSAFLUSH, &tio);

После чего можно запросить состояние модема:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

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

Пытаемся позвонить с помощью метода Dial и видим, что всё работает! Это очень круто! А теперь, конечно же, самое время переходить к реализации того, чего вы ждали — пользовательского интерфейса!

❯ Главный экран

К выбору концепции для интерфейса, я поступил максимально просто — «слизал» дизайн первых версий iOS. Как по мне, это одни из самых красивых версий iOS вообще — все эти приятные градиенты и переливания. Конечно, я не так крут, как инженеры Apple, да и мощного UI-фреймворка у меня пока что нет, поэтому я приступил к реализации с «минимальным» функционалом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Начал я с разделения главного экрана на модули и продумывания архитектуры основного «лаунчера». У нас есть статусбар, который рисуется поверх всех приложений, полка с приложениями — AppDrawer и сами экраны приложений, унаследованные от суперкласса CScreen.

На данный момент, отрисовка достаточно примитивная: сначала рисуются фоновые обои, затем, если нет никаких активных экранов — AppDrawer и в самом конце рисуется статусбар и всевозможные оверлеи.

Практически сразу я решил обкатать анимационную «систему» и добавить первые анимашки — выезжающий статусбар и анимация а-ля айфон:

animator = new CAnimator();

animator->SetTranslation(0, -imFiller->Height, 0, 0);

animator->Run();

Выглядит симпатичненько. Если я смогу поднять хардварный GLES, то это получится сделать в разы плавнее и шустрее — не хуже айфонов тех лет! Реализация самого статусбара примитивненькая, но вполне рабочая:

gLauncher->Graphics->DrawImage(imFiller, animator->X, animator->Y);

gLauncher->Graphics->DrawImage(imBattery[(int)gLauncher->PowerManager->GetBatteryLevel()], imFiller->Width — imBattery[0]->Width — 5, animator->Y + 5);

char timeFmt[64];

time_t _time = time(0);

tm* _localTime = localtime(&_time);

strftime((char*)&timeFmt,

sizeof(timeFmt), «%R», _localTime);

gLauncher->Graphics->DrawString(gLauncher->Font, (char*)&timeFmt, 0, 0);

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

Обратите внимание на удобство примененного подхода Immediate GUI. Нам понадобился новый элемент интерфейса, который описывает кнопку номеронабирателя? Мы просто реализовываем ещё один метод, который берет за основу стандартную кнопку и дорисовывает к ней текст. Всё крайне просто и понятно, хотя на данный момент слишком захардкожено. 🙂

❯ Звоним!

Пришло время совершить первый звонок с нашей по настоящему кастомной прошивки. Набираем номерок и…

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Да, всё работает и мы без проблем можем дозвониться 🙂

❯ Заключение

Конечно же, это далеко не весь функционал, необходимый любому современному смартфону. Здесь много чего еще нужно реализовать хотя бы для соответствия уровню бюджетных кнопочных телефонов: телефонную книгу, поддержку СМС/ММС, мультимедийный функционал с играми. Однако начало уже положено и самая необходимая часть модулей реализована. Этот проект очень занимательный для меня и я горд, что смог не на словах, а на деле показать вам, моим читателям, возможности моддинга совершенно NoName-устройств, без каких либо опознавательных знаков…

Моя задача заключается в том, чтобы показать вам возможности использования старых телефонов не только в потребительских, но и в гиковских DIY-сферах. Судите сами: огромный классный дисплей, емкостной тачскрин, готовый звук, камера — и всё это за каких-то пару сотен рублей. Главное показать людям, как всю эту мощь использовать в своих целях и делать совершенно новые устройства из существующих, а не выбрасывать их на помойку!
Сейчас смартфоны, подобные Fly из этого поста стоят копейки, а портировать на них прошивку можно без каких-либо трудностей. Я очень надеюсь, что после этого поста читатели попытаются сделать что-то своё из старых смартфонов, благо свои наработки я выкладываю на GitHub!

Pochinochnay отзыв⁠ ⁠

У меня есть телефон OnePlus 5. Ему уже 6 лет. Он до сих пор отлично работает, но после того как утонул года 3 назад, не сразу видит зарядку, а быстро вообще не заряжается. Я его давно хотел починить, но имел плохой опыт с мастерскими до этого, как-то обманули меня пару раз. Да и телефон не широко распространённый, большинство сервисов просто с ними не работают.

Увидел в пикабу посты @Pochinochnay, и решил попробовать. Пару дней назад написал им в ватсап, мне ответили что надо менять разъем, а лучше нижнюю плату, займёт времени час, и указали стоимость.

Сегодня я был в тех краях, нашёл их в картах. Немного посомневался, куда заходить — вход гостиницы «Тверская», но почти сразу увидел их баннер.

Что в итоге — телефон сдал, получил через час, заплатил столько сколько написали в ватсапе. Поменяли мне нижнюю плату, телефон заряжается, и от быстрой зарядки тоже. Дали гарантийный договор на 90 дней.

Про Пикабу я не упоминал, так что отношение ко мне было как к обычному заказчику.

Ни о каком отзыве меня не просили, решил написать просто потому что хочу чтобы больше было информации о честном и качественном сервисе. Это просто трындец, сколько в Москве жуликов, надо как-то помогать людям их избегать.

Они лежали молча в ряд: их было восемь⁠ ⁠

Мои незаменимые помощники, мои друзья, мои окно в мир. До сих пор храню (правда, ещё двух не хватает: их украли).

Они лежали молча в ряд: их было восемь Телефон, Смартфон, Мобильные телефоны, Коллекция, Владимир Высоцкий

Как не трогать себя за телефон в публичных местах⁠ ⁠

Как не трогать себя за телефон в публичных местах

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android⁠ ⁠

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!

❯ Что нам нужно знать?

Даже относительно старые устройства флагманского сегмента обладают весьма неплохими характеристиками. Зачастую они гораздо мощнее современных дешевых одноплатников и могут выполнять самые разные задачи: эмуляция консолей, работа в качестве плееров, да даже просто сделать настольные часики самому было бы здорово. Но есть одно но — это Android. Платформа от Google может тормозить даже на достаточно мощном железе, что резко ограничивает потенциально возможные применения подобных гаджетов. Да и многие программисты не особо хотят заморачиваться и учить API Android для реализации каких-то своих проектов.

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Но конечно же, есть один способ писать нативные программы, при этом используя все ресурсы смартфона/планшета. Для этого нужно понимание, как работает процесс загрузки на многих Android-гаджетах:

Первичный загрузчик (BootROM) инициализирует какую-то часть периферии и загружает вторичный загрузчик (U-boot/LK).

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

После загрузки ядра Linux и подключения ramdisk начинается выполнение процессов системы.

Как раз в третьем пункте и лежит ключ к способу, который будем использовать мы. Дело в том, что в смартфоне обычно есть несколько boot-разделов и у каждого свой образ ядра Linux со своим ramdisk. Первый из них — это знакомый моддерамboot.img, который отвечает за загрузку системы и инициализирует железо/монтирует разделы/подготавливает окружение к работе (.rc файлы) и запускает главный процесс Android —zygote. При этом используется собственная реализация init от Android.

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Второй, не менее знакомый многим раздел —recovery, отвечает за так называемый режим восстановления, в котором мы можем сбросить данные до заводских настроек/очистить кэши или прошить кастомную прошивку. Вероятно, многие из вас замечали, насколько быстро ваш девайс загружает этот режим, гораздо быстрее, чем загрузка обычного Android. И именно в его реализацию нам нужнозаглянуть(я намеренно выбрал бранч версии 2.3 — т.е Gingerbread для простоты):

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

А recovery оказывается самой обычной нативной программой, написанной на C со своим небольшим фреймворком для работы с графикой и вводом. В процессе загрузки режима recovery, скрипт запускает одноименную программу в /sbin/, благодаря которому мы видим простую и понятную менюшку. Так почему бы не использовать этот раздел в своих целях и не написать какую-нибудь нативную программу самому?

Как я уже говорил выше, в этом режиме доступны многие аппаратные возможности вашего смартфона, за исключением модема. Используя полученную информацию, предлагаю написать наше небольшое приложение под Android-смартфон без Android сами!

❯ Подготавливаем окружение

В первую очередь, хотелось бы отметить, что программы под «голый» смартфон можно писать не только на C/C++. Нам доступен как минимум FPC, который довольно давно умеет компилировать голые бинарники под Android. Кроме того, мы можем портировать маленькие embedded-версии интерпретаторов таких языков, как lua, micropython и duktape (JS).

Однако в случае нативных программ, есть два важных правила, которые необходимо понимать. Во-первых, в Android используется собственную реализацию стандартной библиотеки libc — bionic, в то время как на десктопных дистрибутивах используется glibc. Между собой они не совместимы — именно поэтому вы не можете просто взять и запустить консольную программу для Raspberry Pi, например.

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

А второе правило заключается в том, что начиная с версии 4.1, Androidтребует, чтобы все нативные программы были скомпилированы в режиме -fPIE — т. е. выходной код должен не зависеть от адреса загрузки программы в виртуальную память. Для этого достаточно добавить ключ -fPIE, однако учтите, что если вы разрабатываете программу под Android 4.0 и ниже, то fPIE наоборот необходимо убрать — старые версии Androidнеподдерживают такой способ генерации кода и будут вылетать с Segmentation fault.

Для разработки нам понадобится ndk — там есть все необходимые заголовочники и компиляторы для нашей работы. Я используюndk r9c, поскольку в свежих версиях Google регулярно может что-то сломать.
ndk-build, к сожалению, здесь работать не будет, поэтому Makefile придется написать самому. Я составил полностью рабочий Makefile, который без проблем скомпилирует валидную программу, вам остаётся лишь поменять NDK_DIR.

NDK_DIR = D:/android-ndk-r11c/

TOOLCHAIN_DIR = $(NDK_DIR)toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/

GCC = $(TOOLCHAIN_DIR)arm-linux-androideabi-g++

PLAT_DIR = $(NDK_DIR)platforms/android-17/arch-arm/usr/

LINK_LIBS = -l: libEGL.so -l: libGLESv1_CM.so

OUTPUT_NAME = cmdprog

build:

$(GCC) -I $(PLAT_DIR)include/ -L $(PLAT_DIR)lib/ -fPIE -Wl,-dynamic-linker=/sbin/linker $(LINK_LIBS) -static -o $(OUTPUT_NAME) main.cpp micro2d.cpp

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

❯ Деплоим на устройство

Несмотря на то, что грузиться мы будем в режим recovery, нам всё равно будет доступен adb, через который мы сможем запускать и отлаживать нашу программу. Это очень удобно, однако по умолчанию adb включен только в TWRP, который нужно сначала найти или портировать под ваш девайс (на большинство старых брендовых устройств порты есть, на нонейм придется портировать самому — гайды есть в интернете). Под ваше устройство есть TWRP? Отлично, распаковываете recovery.img с помощью так называемой «кухни» (MTKImgTools как вариант):

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Открываете init.recovery.service.rc и убираете оттуда запуск одноименной службы (можно просто оставить файл пустым).

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Запаковываем образ обратно тем же MTKImgTools и прошиваем флэшером для вашего устройства — в моём случае, это SP Flash Tool (MediaTek):

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Заходим в режим рекавери и видим зависшую заставку устройства и звук подключения устройства к ПК. Если у вас установлены драйвера, то вы сможете без проблем зайти в adb shell и попасть в терминал для управления устройством. Теперь можно закинуть программу — прямо в корень рамдиска (записывается программа в ОЗУ, но при переполнении, телефон уйдет в ребут — осторожнее с этим). Пишем:

adb push cmdprog /: adb shell chmod 777 cmdprog ./cmdprog

И видим результат. Наша программа запускается и работает!

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

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

❯ Выводим графику

Для вывода графики без оконных систем, мы будем использовать API фреймбуфера Linux, которое позволяет нам получить прямой доступ к массиву пикселей на экране. Однако учтите, что этот способ полностью программный и может оказаться тормозным для вашего приложения: скорость работы прямо-пропорциональна разрешению дисплея вашего устройства. Чем выше разрешение, тем ниже филлрейт. В моём случае, матрица была с разрешением 960×540, 32млн цветов, IPS — очень недурно, согласны?

Фреймбуфер Linux может работать с самыми разными форматами пикселя, имейте это ввиду. На некоторых устройствах может быть 16-битный формат (262 тысячи цветов, RGB565), на моём же оказался 32х-битный с выравниванием по строкам (имейте это также ввиду). 32х битный формат. Работать с ним легко: открываем устройство /dev/graphics/fb0, получаем параметры (разрешение, формат пикселя), делаем mmap для отображения буфера с пикселями на экране в память нашего процесса и выделяем второй буфер для двойной буферизации дабы избежать неприятных мерцаний.

void m2dAllocFrameBuffer()

<

fbDev = open(PRIMARY_FB, O_RDWR);

fb_var_screeninfo vInfo; fb_fix_screeninfo fInfo;

ioctl(fbDev, FBIOGET_VSCREENINFO, &vInfo);

ioctl(fbDev, FBIOGET_FSCREENINFO, &fInfo); fbDesc.width = vInfo.xres;

fbDesc.height = vInfo.yres;

fbDesc.pixels = (unsigned char*)mmap(0, fInfo.smem_len, PROT_WRITE, MAP_SHARED, fbDev, 0); f

bDesc.length = fInfo.smem_len; fbDesc.lineLength = fInfo.line_length;

backBuffer = (unsigned char*)malloc(fInfo.smem_len); memset(backBuffer, 128, fInfo.smem_len);

printf(«Framebuffer is %s %ix%ix%i\n», (char*)& fInfo.id , fbDesc.width, fbDesc.height, vInfo.bits_per_pixel, fInfo.type);

>

Если не сделать предыдущий шаг и запускать нашу программу параллельно с recovery, то они обе будут пытаться друг друга «перекрыть» — эдакий race condition:

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

После этого пишем простенькие функции для блиттинга картинок (в том числе с альфа-блендингом). В инлайнах и критичных к скорости функциям лучше не делать условия на проверку границ нашего буфера — лучше «отрезать» ненужное еще на этапе просчета ширины/высоты:

__inline void pixelAt(int x, int y, byte r, byte g, byte b, float alpha)

<

if(x < 0 || y < 0 || x >= fbDesc.width || y >= fbDesc.height) return;

unsigned char* absPtr = &backBuffer[(y * fbDesc.lineLength) + (x * 4)];

if(alpha >= 0.99f)

<

absPtr[0] = b;

absPtr[1] = g;

absPtr[2] = r;

>

else <

absPtr[0] = (byte)(b * alpha + absPtr[0] * (1.0f — alpha));

absPtr[1] = (byte)(g * alpha + absPtr[1] * (1.0f — alpha));

absPtr[2] = (byte)(r * alpha + absPtr[2] * (1.0f — alpha));

> absPtr[3] = 255; >

for(int i = 0; i < image->height; i++)

<

for(int j = 0; j < image->width; j++)

<

byte* ptr = &image->pixels[((image->height — i) * image->width + j) * 3]; pixelAt(x + j, y + i, ptr[0], ptr[1], ptr[2], alpha);

>

>

И загрузчик TGA:

CImage* m2dLoadImage(char* fileName) <

FILE* f = fopen(fileName, «r»);

printf(«m2dLoadImage: Loading %s\n», fileName);

if(!f)

<

printf(«m2dLoadImage: Failed to load %s\n», fileName);

return 0;

>

CTgaHeader hdr;

fread(&hdr, sizeof(hdr), 1, f);

if(hdr.paletteType)

<

printf(«m2dLoadImage: Palette images are unsupported\n»);

return 0;

>

if(hdr.bpp != 24) <

printf(«m2dLoadImage: Unsupported BPP\n»);

return 0;

>

byte* buf = (byte*)malloc(hdr.width * hdr.height * (hdr.bpp / 8));

assert(buf);

fread(buf, hdr.width * hdr.height * (hdr.bpp / 8), 1, f);

fclose(f);

CImage* ret = (CImage*)malloc(sizeof(CImage));

ret->width = hdr.width;

ret->height = hdr.height;

ret->pixels = buf;

printf(«m2dLoadImage: Loaded %s %ix%i\n», fileName, ret->width, ret->height);

return ret;

>

И попробуем вывести картинку:

m2dInit();

test = m2dLoadImage(«test.tga»);

test2 = m2dLoadImage(«habr.tga»);

while(1)

<

m2dClear();

m2dDrawImage(test, 0, 0, 1.0f);

m2dDrawImage(test2, tsX — (test2->width / 2), tsY — (test2->height / 2), 0.5f);

m2dFlush();

>

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Не забываем про порядок пикселей в TGA (BGR, вместо RGB), меняем канали b и r местами в pixelAt и наслаждаемся картинкой на большом и классном IPS-дисплее:

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

Производительность отрисовки не очень высокая, однако если оптимизировать код (копировать непрозрачные картинки сразу сканлайнами и убрать проверки в инлайнах), то будет немного шустрее. Google для подобных целей сделали собственный простенький софтрендер —libpixelflinger.

Есть вариант для быстрой и динамичной графики: использовать GLES, который без проблем доступен и из recovery. Однако, насколько мне известно (в исходники драйверов посмотреть не могу), указать фреймбуфер в качестве окна не получится, поэтому в качестве Surface для рендертаргета у нас будет служить Pixmap (так называемый off-screen rendering), которому нужно задать правильный формат пикселя (см. документацию EGL). Рисуем туда картинку с аппаратным ускорением и затем просто копируем в фреймбуфер с помощью memcpy.

❯ Обработка нажатий

Однако, ни о каких GUI-программах не идёт речь, если мы не умеет обрабатывать нажатия на экране с полноценным мультитачем! Благо, даже механизм обработки событий в Linux очень простой и приятный: мы точно также открываем устройство и просто читаем из него события в фиксированную структуру. Эта черта мне очень нравится в архитектуре Linux!

Каждое устройство, которое может передавать данные о нажатиях, находится в папке /dev/input/ и имеет имя вида event. Как узнать нужный нам event? Нам нужен mtk-tpd — реализация драйвера тачскрина от MediaTek (у вашего чипсета может быть по своему), для этого загружаемся в Android и пишем getevent. Он покажет доступные в системе устройства ввода — в моём случае, это event2:

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

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

// Open input device evDev = open(INPUT_EVENT_TPD, O_RDWR | O_NONBLOCK);

После этого, читаем события с помощью read и обрабатываем их. На устройствах с резистивным тачскрином, передается просто ABS_POSITION_X, на устройствах с поддержкой нескольких касаний — используетсяпротокол MT. Когда пользователь нажал на экран, посылается нажатие BTN_TOUCH с значением 1, а когда отпускает — соответственно BTN_TOUCH с значением 0. Разные драйверы тачскрина используют разные координатные системы (насколько я понял), в случае MediaTek — это абсолютные координаты на дисплее (вплоть до ширины и высоты). На данный момент, я реализовал поддержку только одного касания, но при желании можно добавить трекинг нескольких нажатий:

void m2dUpdateInput()

<

input_event ev;

int ret = 0;

while((ret = read(evDev, &ev, sizeof(input_event)) != -1))

<

if(ev.code == ABS_MT_POSITION_X) tsState.x = ev.value;

if(ev.code == ABS_MT_POSITION_Y) tsState.y = ev.value;

if(ev.code == BTN_TOUCH) tsState.isPressed = ev.value == 1;

>

tsState.cb(tsState.isPressed, tsState.x, tsState.y); >

Теперь мы можем «возить» логотип Хабра по всему экрану:

void onTouchUpdate(bool isTouching, int x, int y) <

if(isTouching)

int main(int argc, char** argv) <

printf(«Test\n»);

m2dInit();

test = m2dLoadImage(«test.tga»);

test2 = m2dLoadImage(«habr.tga»);

printf(«Volume: %i %i\n», vol, muteState);

m2dAttachTouchCallback(&onTouchUpdate);

while(1) <

m2dUpdateInput();

m2dClear();

m2dDrawImage(test, 0, 0, 1.0f);

m2dDrawImage(test2, tsX — (test2->width / 2), tsY — (test2->height / 2), 0.5f);

m2dFlush();

>

return 0;

>

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android Гаджеты, Смартфон, Linux, Телефон, IT, Хакеры, Hacking, Программирование, Embedded, C++, Одноплатный компьютер, Nix, Unix, Ядро, Kernel, Android, Длиннопост

В целом, это уже можно назвать минимально-необходимым минимумом для взаимодействия с устройством и использованию всех его возможностей на максимум без Android. Более того, такой метод заработает почти на любом устройстве, в том числе и китайских NoName, где ни о каких исходниках ядра и речи нет. Теперь вы можете попытаться использовать ваше старое Android-устройство для чего-нибудь полезного без необходимости изучать API Android.

❯ Звук, модем и другие возможности

Для звука нам придётся использовать ALSA — поскольку эта подсистема звука сейчас используется в большинстве устройств на Linux. Судя по всему, тут есть режим эмуляции старого и удобного OSS, поскольку устройства /dev/snd/dsp присутствует. Однако, вывод в него какого либо PCM-потока не даёт ничего, поэтому нам пригодится ALSA-lib.

Другой вопрос касается модема и сети. И если Wi-Fi ещё можно поднять (wpa_supplicant можно взять из раздела /system/), то с модемом будут проблемы — нет единого протокола по общению с ним и кое-где, чтобы его заставить работать, нужно будет немного попотеть. Не стесняйтесь изучать исходники ядра (MediaTek охотно делится реализацией вообще всего — там и RIL, и драйвер общения с модемом) и смотреть интересующие вас фишки!

❯ Заключение

Как мы с вами видим, у старых девайсов все еще есть перспективы стать полезными в какой-либо сфере даже без Android на борту. На тех устройствах, где нет порта Ubuntu или обычного десктопного Linux, всё равно сохраняется возможность писать нативные программы и попытаться приносить пользу.

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

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума!⁠ ⁠

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

В прошлой статье, мы с вами рассмотрели на что способен одноплатный компьютер, который стоит всего 1.000 рублей. Как мы выяснили, перспективы у данного девайса весьма неплохие, однако по факту, Orange Pi продаёт практически голую железку, которую нужно дорабатывать самому. Да, тут есть Ubuntu/Fedora, да, тут выведена гребенка с I2C/SPI — однако из коробки это всё работает криво-косо, либо не работает совсем. Даже обещанные шины SPI/I2C фактически не доступны в системе «из коробки». Материалов о доработке этого одноплатника в сети мало, поэтому я решил довести его до ума сам и поделится с вами — в том числе, готовыми бинарными образами! Интересно, на что способен доработанный одноплатник по цене ящика пива? 🙂

Над чем будем работать

В прошлой статье, мы с вами определились с потенциальными перспективами такого устройства. По цене 3х ESP32, производитель предлагает нам два полноценных вычислительных ARM-ядра, 256 мегабайт оперативной памяти, 512 мегабайт встроенной NAND-памяти, контроллер питания с возможностью работы от литий-ионных АКБ и 3G модем. Но в бочке меда нашлась ложка дегтя: никто не собирался это всё поддерживать и Orange Pi практически сразу «забили» на поддержку устройства, ограничившись портом Debian/Ubuntun на устройство.

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Более того, производитель даже не описал как работать с GPIO и шинами устройства — что фактически превращало его из одноплатника в обычную ТВ-приставку, только без нормального видеовыхода. Меня крайне удивило, почему над такой дешевой платой не хотело работать коммьюнити — большинство людей только видели всю ситуацию и шли оставлять негативный отзыв, не попытавшись даже разобраться. А ведь для опытного линуксоида-эмбеддера здесь работы на день-два!

Ко всему прочему, в Linux не работает GSM-стек. Да, совсем. Производитель даже не стал кооперироваться с MediaTek, чтобы попытаться реализовать работу с модемом на уровне системы. А ведь фактически, вся работа с модемом происходит лишь на уровне AT-команд. Так в чем же проблема была?

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Со всем этим мне и предстоит разобраться! Клонируем репозиторий с исходниками ядра и бежим собирать!

Собираем ядро. I2C и SPI.

Вместо типичного Buildroot, Orange Pi использует свою собственную простую систему сборки на shell-скриптах: в качестве тулчейна используется уже готовый linaro. Отчасти, это связано с самими чипами, на которых работают их устройства — MediaTek, например, не использует Mainline ядро и в процессе сборке имеет ещё кучу шагов для подготовки финального образа. Там даже menuconfig не работает и все изменения приходится делать в уже сгенерированной когда-то конфигурации.

Клонируем репозиторий с системой сборки и запускаем скрипт:

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Выбираем нашу плату — 3G IoT и ждем, пока система сборки фактически скачает все необходимое для сборки — исходный код ядра, папки external (драйвера, загрузчик и порт linux MediaTek). Обратите внимание, OrangePi даже систему сборки завязали на конкретной версии системы: только Ubuntu 18.04, но на самом деле, ядро соберется без проблем практически где угодно. После того, как все было скачано, переходим в папку с скриптом сборки и запускаем скрипт сборки:

А нет, не запускаем — скрипт жалуется на то, что не может поставить некоторые пакеты. Не беда — ставим bsdtar и python minimal вручную и идем править код скрипта. Находится в он scripts/ general.sh : убираем оттуда устаревшие имена пакетов.

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

После этого, компиляция ядра должна пройти успешно. Обратите внимание на версию вашей платы — те, что продают сейчас — именно A. Если пытаться подкинуть им ядро для B, то они будут уходить в kernel panic из-за отсутствия eMMC.

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Если mkbootimg будет жаловаться на libstdc++6, то ставим его x86 версию из репозиториев.

Готовое ядро будет лежать вoutput/kernel/boot.img, которое можно прошить на устройство. С одним маленьким нюансом — оно рассчитано на загрузку из внутренней памяти, которой критически мало для дистрибутива Linux! У нас нет boot_sd.img, который есть в оригинальном дистрибутиве. Попытка разобрать образ стандартным AndImgTool не увенчалась успехом — рамдиск встроен прямо в образ zImage, а не отдельно, как это обычно бывает у Android-образов.

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Покопавшись в скриптах сборки, я так и не понял логику создания boot_sd, ничего связанного с sd я не нашел даже grep’ом по всей папке. Ну что-ж, тогда попробуем обходным путем: скомпилируем нужные драйвера в виде загружаемых модулей (ko). Идём в наш конфиг, расположенный в linux/arch/arm/configs/3giot_defconfig и меняем CONFIG_I2C_CHARDEV и CONFIG_SPI_SPIDEV на m. Пояснение: y заставит систему сборки скомпоновать драйвер статически с ядром, а m выделит его в виде отдельного модуля ko, который затем можно загрузить черезinsmod.

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Снова собираем ядро, на этот раз компиляция занимает не больше минуты. Нужные нам файлы появятся в linux/drivers/spi/spidev.ko и linux/drivers/i2c/i2c-d-ev.ko. Переносим их на хост-пк, а затем и на само устройство с помощью SSH:

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Загружаем модули ядра:

insmod i2c-dev.ko

И та-дам! Целых две i2c шины появилось в системе (/dev/i2c-0, /dev/i2c-1). Устанавливаем i2c-tools и идем проверять с помощью i2cdetect: первая шина полностью свободна под наши проекты, а на второй по некоторым адресам висит периферия (FM-радио как вариант):

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

I2C теперь точно работает! Но как насчет SPI?

insmod spidev.ko
Device or resource busy.

Увы! spidev нельзя подгружать динамически, только статически линковать с ядром, чего мы сделать пока не можем. Однако техническая возможность заставить работать SPI есть: например, написать свой драйвер, который транслирует команды из юзерспейса в SPI API, которое работает на уровне ядра.

В прошлой статье, я вкратце рассказал, как работать с gpio из user-space на уровне терминала. Однако, большинство разработчиков потенциально будет пользоваться нативным API для GPIO — ну не всерьез же им парсить вывод состояния в консоль? Поэтому я решил написать крошечную библиотеку для работы с GPIO, такую же простую, как и DigitalWrite/DigitalRead!

Давайте сначала разберемся, как именно работать с драйвером GPIO. Для этого открываем исходники ядра и смотрим внимательно, что нам предлагает драйвер: в нашем случае, это вызовы IOCTL, да еще и простые и понятные. Это просто отлично! Я написал single-header библиотеку минут за 10: без проверки ошибок, но работоспособная.

void gpioInit();

void gpioSetDir(int num, byte dir);

byte gpioGetDir(int num);

void gpioWrite(int num, byte value);

byte gpioGetState(int num); byte gpioRead(int num);

void gpioSetPullState(int num, byte enabled, byte up);

Пример использования (141 — крайний пин на гребенке):

#define GPIO_IMPL

#include «gpio.h»

#include <stdio.h>

void testPin(int pin)

<

printf(«Pin state %i is %i\n», pin, gpioGetState(pin));

gpioSetDir(pin, 1);

gpioWrite(pin, 0);

printf(«Pin state %i is %i\n», pin, gpioGetState(pin));

gpioWrite(pin, 1);

printf(«Pin state %i is %i\n», pin, gpioGetState(pin));

>

int main(int argc, char** argv) <

gpioInit();

testPin(141);

>

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

Скажу сразу: пока что завести модем мне не удалось, но я активно работаю над этим. В этой части статьи я распишу свои находки и догадки касательно модемов на чипах MediaTek.

В устройствах MediaTek, драйвер для общения с GPS, A-GPS и модемом один — ccci, судя по всему cross chip communication interface. Именно ccci создает устройства, с в которые поступает вход с микрофона и выход на динамики, а также он создает управляющие интерфейсы для общения с различными модулями этого SoC.

При старте ядра, ccci создаёт много устройств — ccci_ioctl, ccci_ipc, ccci_fs и самое нужное нам —ttyC0/ttyC1/ttyC2— в зависимости от количества СИМ-карт в системе. Кроме ccci, в системе есть некий 6620_launcher — бинарник, который загружает прошивку Wi-Fi и gsm0710muxd — специальный сервис, который позволяет в GPRS-сетях одновременно разговаривать и сидеть в интернете.

На смартфонах MTK есть factory mode — так называемый тестовый режим, который гоняют на заводах. Вы, вероятно, когда-то видели китайские меню похожее на рекавери — это и есть factory mode. Из этого режима можно дозвонится в 911 и активировать модем без запуска Android и RIL. Как это работает? Идём читать исходники ядра!

В factory-режиме, для каждого теста, программа активирует модем заново. Для этого есть функции тестового режима для работы с AT-командами и для инициализации модема. Сначала, она открывает терминал /dev/ttyC0 — именно там происходит общение с модемом с помощью AT-команд:

Мы сделали вам плату, а дальше вы сами: Доводим дешевый одноплатник за "косарь" до ума! Гаджеты, Смартфон, Программирование, IT, Orange Pi, Одноплатный компьютер, Linux, Android, Raspberry pi, Минипк, Дешево, Покупка, Моддинг, Своими руками, Embedded, Длиннопост, Авторская неделя на Пикабу

После этого, программа выводит модем из режима сна с помощью команды «AT+ESLP=0», инициализирует СИМ-карту с помощью команды «AT+ESIMS» и задает режим работы с помощью «AT+EFUN=1» и «AT+CREG=1». После этого, модем начинает искать сеть и доступен для обычного общения с помощью AT-команд. Однако, написав тестовую софтину для общения с модемом из под Debian, я получал ошибки вида Device not found. Почему? Пока не знаю. Однако я продолжаю изучать данный вопрос!

Подготовленные мною файлы вы можете скачать на диске. Там скомпилированные модули ядра, библиотека для работы с GPIO и пару тестовых программ в качестве примеров.

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

Немного энтузиазма, опыта и видения будущего проекта — и все получится 🙂

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед⁠ ⁠

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Многие из нас помнят компанию Nokia, как одного из лидеров мобильного рынка и производителя самых разных, необычных устройств, которые опережали свое время на много лет вперед! К сожалению, нынешняя Nokia — это уже совсем не та компания, которую мы любили и которой отдавали предпочтение при выборе мобильного девайса. Однако ещё во времена перехода под крыло Microsoft, практически под самый закат, финны сделали шедевральное устройство на десктопном Linux, которое до сих пор находит отголоски в современном мире смартфонов. И имя этому шедевру — Nokia N9! Недавно мне написал почётный хабровчанинdlinyjи предложил подарить этого красавца мне: причём с полным комплектом! Почему он оказался прорывным и что общего имеет с Lumia 800? Читайте подробнее в статье!

❯ Что за гаджет?

Когда-то у Nokia было две основных платформы, на базе которых они выпускали свои портативные гаджеты: S40, на которой работали функциональные Java-телефоны, сейчас их называют «фичефонами», и S60 — версия Symbian, на которой работало большинство смартфонов этой компании. Финская корпорация смогла занять серьезный процент практически в каждом сегменте рынка: бюджетники (1110, 1202 «фонарик», 2700c), средний класс (5310 XpressMusic, 5230/5228, 6300), флагманы (N95, N91, N72/N73) и, конечно же, бизнес-сегмент (8800 Arte/Luna, E90, в каком-то смысле Vertu).

Однако помимо выпуска девайсов на стандартных платформах была у Nokia и команда разработчиков, отвечавшая за гиковские устройства, которые были предназначены исключительно для энтузиастов. Началось всё с выпуска одного из первых устройств в классе «интернет-планшетов», имя которому было Nokia 770 Internet Tablet. Устройство, вышедшее за 5 лет до появления iPad, предоставляло обычному пользователю почти все возможности портативного компьютера тех лет: серфинг интернета через Wi-Fi, прослушивания музыки и просмотр видео с флэшек RS-MMC, а также работа с документами.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Но это если смотреть с точки зрения обычного пользователя. На самом же деле устройство обладало огромными возможностями для разработчиков благодаря тому, что работало на базе ОС Maemo — адаптации десктопного окружения Linux под мобильные устройства. Nokia не просто выпустили на рынок занимательный продукт: они полностью открыли исходный код всей системы, позволяя кастомизировать прошивку как угодно, реализовали «магазин приложений» в виде репозитория с различными пакетами и позволяли запускать абсолютно любое Linux приложение, скомпилированное под ARMv5.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

В то время это было как глоток свежего воздуха. Конечно же, уже существовали КПК на базе Windows Mobile, где пользователи вовсю кастомизировали прошивки: подменяли драйвера из устройства в устройство, делали патчи и твики реестра/ядра, русифицировали и подменяли встроенные программы. Однако WinMobile оставалась проприетарной операционной системой, где хоть и был доступ к исходному коду ядра для любого желающего (Platform Builder), без BSP (Board Support Package — порт системы на определенную материнскую плату) в этом практически не было смысла. Другое дело — пользователи планшетов от Nokia: там была полная свобода во всем!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Отдельной особенностью Maemo оставалось то, что даже пользовательский интерфейс строился по принципам обычного ПК и на базе тех же библиотек. В качестве официальной библиотеки интерфейса, Nokia предлагала GTK с набором виджетов для построения общего Look&Feel системы, но никто не мешал использовать Qt, или, например, wxWidgets.

И вот так, из года в год, выходили всё новые и новые устройств на базе Maemo. После 770 был успешный N800, а позднее в том же году появился и N810 с QWERTY-клавиатурой. В репозиториях появлялось всё больше и больше софта и, хотя едва ли обычный пацаненок с района мог увидеть у кого-то в руках такое устройство, именно они, в паре с КПК, стали прообразами современных смартфонов. Но был ещё один важный нюанс: ни один из интернет-планшетов от Nokia не имел радиомодуля. Выходить в интернет предлагалось с помощью Wi-Fi или через Bluetooth. Таким образом, эти девайсы нельзя было назвать полноценными коммуникаторами и смартфонами…

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

До 2009 года. Ведь именно в этом году Nokia представляет коммуникатор N900 с QWERTY-клавиатурой, который снабдили радиомодулем, благодаря которому он оказался способен как звонить, так и выходить в интернет через 3G. Кроме того, у N900 были все характеристики современного смартфона: достаточно мощный ARM-чипсет TI OMAP с частотой 600мгц, способный запустить Linux; 256 мегабайт оперативной памяти (топовые коммуникаторы имели 128мб); GPU PowerVR SGX530 (что вообще было редкостью в мобильниках тех лет и только Qualcomm встраивали Adreno вообще во все свои чипы); магазин приложений и, конечно же, тачскрин, пусть и резистивный! Подробнее про N900 читайте в моей соответствующей статье.

В 2010-2011 годах Android уже начал идти победоносной поступью, будучи предустановленным на самые разные гаджеты: от телефонов и планшетов до тв-боксов и электронных книг. iPhone уже успел полностью согнуть свою линию и доказать, что за гаджетами с емкостными тачскринами и мощным железом будущее. Symbian уже было тяжело конкурировать с мастодонтами рынка: не помогал даже Qt, а о нативном API системы говорить вообще не стоит (оно неплохое, но своеобразное), нужно было думать, куда двигаться дальше. Сделать свой Android смартфон? Продолжать работу над Maemo? Microsoft уже начали потихоньку потирать руки и пытаться прибрать мобильное подразделение Nokia к себе: сначала поставили в кресло CEO Стивена Элопа, а затем сменили курс компании с Symbian/Maemo на Windows Phone.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Symbian развивали и поддерживали до последнего, до 2012 года, когда Nokia совсем сдалась и прекратила выпускать серьезные апдейты, коим стал Symbian Bella. Nokia уже успела выпустить первые смартфоны линейки Lumia на базе Windows Phone и пыталась удержаться на плаву. Но у компании припасен ещё один козырь за пазухой. О котором знали в Microsoft, который действительно имел все шансы перевернуть мобильный рынок с ног на голову, и который развивали вместе с Intel. И имя ему — MeeGo!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Nokia действительно могла перевернуть мобильный мир, если бы ей не мешала Microsoft. И не нужны были бы ей смартфоны на Android, когда у них самих была такая классная система. И ведь кто-то подумает «ну было и было», ан-нет, отголоски MeeGo раздаются и сейчас. Часть инженеров Nokia ушли развивать MeeGo в виде отдельной компании Jolla с смартфонами на базе Sailfish OS — дальнейшее развитие перспективной системы от Nokia. И как бы необычно это не звучало, сейчас Sailfish развивают в… России! Ростелеком выкупил контрольный пакет акций Jolla, что позволило реализовать свой форк под знакомым многим из вас названием Aurora OS! Я даже рискнул оставить заявку на закрытое бета-тестирование, авось и я смогу подержать в руках устройство на Авроре и даже что-то запилить на него, например, 3D-игрушку! 🙂

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Nokia N9 стал первым и последним гаджетом на базе MeeGo, на который будет крайне интересно взглянуть и… понять, что мы пришли ко всему тому, что Nokia реализовала много лет назад! N9 мне подарил мой читатель, наставник авторского дела и просто крутой мужик Сергей «@dlinyj» Долин! Этот человек сыграл довольно большую роль в становлении меня, как автора: давал советы касательно фотографий, стилистики текста, кое-где поправлял меня. И в один день он скинул фотографию N9 в родной коробочке со словами «хочешь же?))», заранее зная мой ответ! Сергей и сам успел поработать над Авророй, поэтому наличие у него N9 не вызывает вопросов.
Этот материал я решил подготовить на круглую и праздничную для меня дату — день рождения моего блога! Ровно год назад, 16 июля 2022 года, я написал свою первую статью — обзор на Samsung X450. 🙂

❯ Распаковываем.

Поставлялся девайс в большой коробочке, фирменного синего цвета и с гравировкой логотипа, как и свойственно всем флагманам Nokia. В N900 на коробке гравировали даже кнопки QWERTY-клавиатуры на силуэте устройства — даже над дизайном такой мелочи поработали знатно. Нас сразу встречает заветная надпись: Nokia N Series!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Открываем коробочку и видим там комплект из: смартфона, буклетов, наушников и ЗУ. Всё весьма компактно и в чем то даже напоминает стиль iPhone.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Основные интерфейсные разъемы устройства расположены сверху: там и слот под SIM, и разъем для ЗУ, причем на магнитах (!).

Что самое интересное — у N9 был параллельный «собрат» на Windows Phone в виде Lumia 800. Несмотря на то, что работают они на совершенно разных чипсетах и имеет немного отличающийся тачскрин, у этих девайсов очень похожий дизайн корпуса, конструкция, полностью совместимые дисплеи с немного разной диагональю, у них даже есть некоторые сходства в разводке материнской платы.

Характеристики нашего устройства такие:

Чипсет: TI OMAP 3630, одно ядро Cortex A8 на частоте 1ггц.

GPU: PowerVR SGX530. Весьма неплохое видеоядро по тем годам, немного более мощное использовалось, например, в первом iPad. Есть поддержка OpenGL ES 2.0.

ОЗУ: 1гб. Очень серьёзный объем по тем временам, некоторые флагманы комплектовались лишь 512мб ОЗУ, что было стандартом индустрии в 2012-2013 годах.

ПЗУ: 16 или 64гб. По тем временам, очень серьезный объем памяти.

Камера: 8мп фотокамера с оптикой от Carl Zeiss. Данная оптика стала стандартом и визитной карточкой многих камерафонов от Nokia. Помимо съемки фото, смартфон способен записывать видео в 720p при 30 кадрах в секунду.

Дисплей: 3.9″ AMOLED матрица 854×480.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

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

❯ Патчим в программном плане

Поскольку MeeGo — это по сути, полноценный десктопный Linux, адаптированный под мобильные платформы, он точно также, как и Maemo, использует менеджер пакетов dpkg. Все приложения для этих систем распространяются в виде знакомым большинству линуксоидов пакетов .deb.

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

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Установить файловый менеджер можно скачав соответствующий .deb и скинув его через Bluetooth. Я выбрал FileBox. Затем его можно установить в списке переданных файлов обычным тапом. Обратите внимание, что пакеты для MeeGo имеют подпись а-ля Symbian, поэтому если у вас не устанавливается ничего — проверьте дату и время.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Некоторые программы можно установить только в терминале, вручную вызвав dpkg -i с необходимым пакетом .deb. Для активации режима разработчика, который добавляет возможность связи с ПК и эмулятор терминала, нам нужно сначала обновить зеркала репозиториев с пакетами, установивэтот .debи затем активировать девмод в настройках. Смартфон докачает и установит нужные пакеты, перезагрузится, и мы сможем свободно пользоваться терминалом.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Теперь гаджет полностью работает и может оказаться весьма полезным. Так в чем же N9 оказалась шедевральна? Какие её концепции до сих пор заимствуют?

❯ Смотрим на MeeGo

В первую очередь, MeeGo ещё в 2011 году вводила концепцию полного управления системой жестами. Здесь вообще нет никаких кнопок «домой», «назад», «диспетчер приложений» — все это инженеры Nokia посчитали не нужным и реализовали всё взаимодействие благодаря простым и понятным свайпам. Обратите внимание, ничего не напоминает? Неужто кто-то с выходом десятки полностью позаимствовал фишку финского гиганта?

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

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

UX системы вообще очень необычный. Он пытается сочетать все лучшее из iOS, WP и отчасти Android. Да, здесь есть шторка уведомлений, но выглядит она максимально минималистично и единственная настройка — громкость звука. Да, часть параметров приложений можно найти в настройках — прямо как в iOS. Да, здесь уже был относительно строгий полу-Flat стиль, немного напоминающий стиль iOS 7 (который вышел на 2 года позже MeeGo). Даже меню опций нет, лишь значки действий снизу — как и в N8 на Symbian.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Кроме того, здесь довольно удобно реализован диспетчер задач. В Android он только-только появился в 3.0 Honeycomb, а в iOS он был реализован жутко неудобно. Однако, судя по всему, MeeGo не умеет сама закрывать или отправлять в сон приложения, как это делает Android и iOS — такова нативная линуксовая натура системы. Из-за этого, если открыть слишком много приложений, можно наблюдать небольшие лаги. Вообще, система действительно не сказать что работает уж очень плавно: яблочки тех лет работали гораздо шустрее и плавнее, однако по тем временам плавность системы достаточно приемлема.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Я решил установить некоторые приложения и использовать N9 в современном мире. И в целом, для каких-то базовых действий он отлично подойдёт и сегодня!

В системе есть браузер на базе WebKit — тот самый браузерный движок, что используется и в Safari на iOS, и долгое время использовался в стандартном браузере Android. Благодаря дисплею, страницы выглядят очень сочно, но только те, которые загрузятся 🙂 И дело даже не в веб-стандартах, большинство страниц браузер сможет худо-бедно переварить. Однако встает проблема с сертификатами — браузер их не умеет игнорировать, если они просрочены, и вываливается в ошибку, отказываясь загружать сайт. Кроме того, браузер не поддерживает SSL 1.2, который использует большинство сайтов на данный момент.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Зато в системе полностью функционирует почтовый клиент, причем довольно удобный. И здесь открывается еще одна фишка системы: один менеджер для всех аккаунтов на устройстве. Подобную концепцию имеет Android почти с самого начала, но в MeeGo она выделена в отдельное приложение. Не исключено, что в будущем туда хотели добавить и менеджер паролей — было бы весьма удобно!

Что же касается самого клиента почты, то его без проблем можно настроить на Яндекс почту, и на gmail — только не забываем включить SSL (по умолчанию отключен) и использовать одноразовые пароли — двухэтапную аутентификацию большинство старых гаджетов не поддерживает.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

И, конечно же, девайс подойдет для прямого применения — звонков. Помимо весьма удобного приложения номеронабирателя, N9 полностью поддерживает Nokia PC Sync и без проблем позволяет синхронизировать как контакты из vcf/outlook, так и фото/видео/музыку. Есть поддержка и CalDAV и некоторых других сервисов для синхронизации по сети.

Помимо всего прочего, у девайса отличный аудиотракт. Музыка в наушниках звучит отлично, кроме того, есть улучшалки от Dolby, благодаря чему девайс вполне можно юзать как плеер. Сергей похоже так и юзал его, судя по трекам в плейлисте. Само приложение не менее удобное и создавалось для взаимодействие с Ovi Music — аналогом iTunes от Nokia. Уже потом, музыкальный сервис от Nokia начали использовать в устройствах на WP.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

А ещё устройство неплохо подойдет в качестве камеры. На 2011 год качество снимков весьма на уровне! Как уже сказано выше, девайс умеет записывать и видео в 720p при 30 FPS.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Полный фотосет есть на imgur.

А ещё смартфон сможет статьи отличной платформой для прохождения отличных мобильных игр — без доната и таймеров!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

❯ Заключение

N9 получился первым гиковским устройством, которое могли без проблем использовать и обычные пользователи. Nokia вложили много сил и времени для того, чтобы привнести в N9 революционные по тем временам идеи, да так, что некоторые фишки потом у неё «позаимствовали» сами гиганты индустрии!

И очень хорошо, что история MeeGo не закончилась на этом. Кто знает, быть может эта система когда-нибудь сделает камбэк и скинет обросший кучу легаси Android? А вы как считаете? Жду ваше мнение в комментариях!

Заголовок съел журавль⁠ ⁠

Заголовок съел журавль Телефон, Смартфон, iPhone, Android, Nokia, Картинка с текстом, Повтор, Nokia 3310, Комиксы

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска⁠ ⁠

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Друзья! Много ли гиковских серийных смартфонов вы знаете на текущее время? PinePhone, Pixel, Nothing Phone, да даже AYYA — выбор не так уж и велик. В 2014 году компания LG представила смартфон для гиков на базе FireFox OS эксклюзивно для рынка Японии — Fx0, который был интересен не только своей системой, но и прозрачным стильным дизайном, под которым можно было рассмотреть некоторые внутренности смартфона. Кроме того, это был самый мощный серийный смартфон на FireFox OS из когда-либо выпущенных. Несколько месяцев назад мне написал читатель с Хабра, предложив подарить такой девайс и попросил написать подробную инструкцию о перепрошивке на Android. Предлагаю сегодня посмотреть на этот уникальный и коллекционный смартфон поближе!

❯ Что за гаджет и почему FireFox OS?

Вероятно, многие читатели вообще никогда не слышали про такую систему, как FireFox OS, но вполне возможно, продолжают использовать её потомка и сейчас. Ещё в начале десятых Mozilla решила выйти на мобильной рынок, припася несколько тузов в кармане:

Тотальная открытость. Вся операционная система должна была быть открытой и свободной для модификации, а не только AOSP — как в случае с Android (маркет, сервисы — всё ещё закрытые и проприетарные продукты Google).

Низкие системные требования. Android по первой вполне неплохо работал и с устройствами с 256мб ОЗУ и одноядерными ARMv6 чипсетами частотой

600мгц. Но FF OS умудрялась чуть ли не летать при таких характеристиках.

Веб-приложения. Концепция системы заключалась в том, что все приложения должны быть написаны с использованием HTML5 + JS. Если очень условно, то это аналог современных PWA приложений (только на FFOS было доступно больше API). А благодаря Cordova, приложения с FFOS можно было бы легко портировать на iOS/Android.

Портируемость. Здесь всё серьёзно: FFOS умеет работать через прокладку libhybris, позволяющую загружать библиотеки и драйвера (формально) от стоковых Android-прошивок. Благодаря чему систему можно было портировать почти на любое устройство с доступными исходниками ядра.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

И некоторые производители поддержали молодую систему, выпустив один или несколько аппаратов на различных версиях. Так или иначе, почти все эти устройства были в бюджетном классе и предназначались в первую очередь для гиков и веб-разработчиков, которые могли бы разрабатывать новые приложения для развивающейся системы. Кроме того, в основную версию FireFox на ПК был введен отдельный режим, где разрабы могли бы запускать и отлаживать свои приложения в эдаком симуляторе.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Как уже было сказано выше, все приложения под эту систему пишутся на связке HTML5 + JS. Однако немногие знают, что большая часть системы и интерфейса тоже написаны на JS, в том числе некоторые сервисы. Приложениям предоставляются упрощенные, но типичные для мобильных систем API в виде доступа к базе данных мультимедиа/контактов, API для файлов, диалогов и т. п. При этом, несмотря на «веб» корни интерфейса, работает он очень шустро даже на слабых девайсах и имеет некоторую многозадачность.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Из самых известных моделей на FFOS, можно вспомнить ZTE Open, Alcatel Fire E, про который я уже писали конечно же Fx0! Девайс был выпущен эксклюзивно для рынка Японии в 2014 году, под местного оператора au (KDDI), лого которого красуется и на нашем девайсе. В первую очередь интерес к устройству вызывает его прозрачный дизайн, наводящий некоторые мысли о киберпанке. LG видимо хотели подчеркнуть гиковскую составляющую своего нового устройств.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Сама прозрачность корпуса даёт нам разглядеть светодиоды подсветки дисплея, подключенные шлейфы, АКБ, слоты под сим и строение кнопки домой. Кроме того, задняя крышка покрыта интересным рельефом, приятным на ощупь. Кому-то этот дизайн кажется отталкивающим, но как по мне — он классный. Не менее интересна и железная начинка девайса:

Процессор: 2-х ядерный Qualcomm Snapdragon 400 с видео-ускорителем Adreno 305.

Оперативная память: 1.5гб ОЗУ.

Дисплей: 4.7″ IPS матрица с HD-разрешением.

Камера: 8мп/2мп.

ОС: FireFox OS 2.

Для 2014 года это вполне неплохие характеристики для средне-бюджетного аппарата. Похожими хар-ками обладает, например, Galaxy S4 Mini.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Fx0 подарил мне мой читатель Артём с Хабра. Несколько месяцев назад он написал мне и предложил прислать два таких девайса: один в качестве подарка для статьи, другой для того, чтобы я перепрошил его на Android и отправил обратно. Под Fx0 уже был готовый порт CyanogenMod, поэтому в процессе прошивки ничего сложного нет, но Артёму нужна была подробная инструкция, дабы не убить девайсы. У него их оказалось несколько: в своё время он купил по вкусной цене и так они у него лежат новыми, а некоторые даже не распакованы!

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Конкретно про опыт использования FireFox OS в 2023 году я писал в статье про Alcatel Fire E. В этом материале давайте прошьём наш Fx0 и посмотрим, на что он способен сейчас!

❯ Прошиваем

Собственно, в этом нет ничего сложного. Работы буквально на 15 минут, благо уже есть готовая и рабочая прошивка CyanogenMod под наше устройство.

Первым делом качаем саму прошивку и TWRP — раздел recovery. Пригодятся драйверы и adb/fastboot.

Теперь нам нужно включить режим разработчика. Идём в настройки -> О телефоне -> Больше информации и включаем галочку режима разработчика. Теперь идем в соответствующее меню для разработчиков и выбираем режим работы USB — нам нужен режим adb.

Подключаем устройство к ПК и открываем командную строку (cmd.exe). Переходим в папку с скачанным adb (например, C:/adb/) и запускаем терминал:

adb shell su

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

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

dd if=/dev/block/platform/msm_sdcc.1/by-name/laf of=/sdcard/laf.bin
dd if=/dev/block/platform/msm_sdcc.1/by-name/modemst1 of=/sdcard/modem0.bin
dd if=/dev/block/platform/msm_sdcc.1/by-name/modemst2 of=/sdcard/modem1.bin

И затем загружаем их к себе на ПК из памяти телефона:

exit
exit
adb pull /sdcard/laf.bin
adb pull /sdcard/modem0.bin
adb pull /sdcard/modem1.bin

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Далее в папке с adb появятся наши бэкапы. Это важно! Можно и систему забэкапить, если хотите потом вернутся на FireFox OS (раздел system). Теперь нам нужно получить доступ к fastboot, дабы загрузить кастомное рекавери. У устройства изначально разблокирован загрузчик, поэтому заморачиваться с разблокировкой не нужно. Однако для того, чтобы войти в него, нужно затереть раздел с режимом обновления LG — тот самый laf. Почему так? Загрузчик LG, при переходе в режим прошивки фирменным софтом, пытается загрузить специальный образ ядра и системы из раздела laf. Если он его не находит — то «сваливается» в обычный режим fastboot. Это работает и на некоторых других устройствах LG тех лет. Снова идем в командную строку:

adb shell su dd if=/dev/zero of=/dev/block/platform/msm_sdcc.1/by-name/laf

Готово! Варнинги в консоли — это нормально.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Теперь пишем в консоли reboot и выполняем команду, одновременно зажав громкость вверх, устройство перейдет в режим fastboot. Теперь нам нужно загрузить recovery, пишем:

fastboot boot twrp_302-madai01.img

Устройство загрузится в режим recovery. Свайпаем ползунок и попадаем в главное меню.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Теперь у нас два варианта: закинуть прошивку на MicroSD флэшку и вставить её в устройство (судя по всему, девайс поддерживает горячую замену), либо загрузить прошивку вообще не прибегая к MicroSD. Я выбрал второй вариант: заходим в Advanced -> Sideload и свайпаем полузнок. После этого, устройство «переподключится» к ПК и мы можем просто написать:

Готово! Теперь девайс прошьется сам. Можно сделать вайпы и перезагрузится в систему. Вероятно, кто-то спросит, почему всё так легко и откуда тут даже разметка памяти под Android? Потому что изначально FireFox и использует стандартную разметку андроида, что и позволяет легко портировать их на устройства под управлением каждой из них.

Если мы хотим вернуться на FFOS, то можно взять образ /system/ вот тут. Прошить можно из под TWRP через adb с помощью команды:

dd if=/sdcard/jp-system.img of=/dev/block/platform/msm-sdcc.1/by-name/system

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

❯ Юзаем девайс

Ну что ж. Устройство прошито и теперь работает на базе чистого Android 4.4 — никаких гугл-сервисов, ничего лишнего. Как оно работает теперь? Давайте узнаем!

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

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

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Например, здесь все еще работает клиент ВК Kate Mobile, через который можно посидеть не только в ВКшечке, но и послушать музыку через местный стриминговый сервис. Однако могут возникать проблемы при воспроизведении видео, причем только некоторых. Работает и Telegram, который пока ещё поддерживает все устройства с Android 4.2 и выше.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Стандартный браузер уже сильно устарел и едва ли открывает современные страницы. Поэтому накатываем последнюю версию Chrome для 4.4 — 81. Он пока еще может открывать большинство сайтов, но на Pikabu/DTF уже ломается верстка.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Без каких либо проблем работает и встроенный клиент почты. Тут уж я не перестану хвалить почтовый клиент Android — он в разы лучше и Gmail, и любых других сервисов как по мне. Работает без проблем, только не забываем про одноразовые пароли и ставить SSL с одобрением всех сертификатов.

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Кроме того, здесь очень неплохая камера для своих лет. 8мп матрица выдает достойную картинку, на уровне флагманского Galaxy S4 2013 года выпуска. Однако есть важный нюанс: в предпросмотре кадра картинка получается мыльная, но сами фотографии сохраняются вполне неплохими. Оцените сами:

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Редчайший прозрачный смартфон на FireFox OS — прошиваем и смотрим на LG Fx0 2014 года выпуска Гаджеты, Смартфон, Покупка, Редкость, Диковинка, Android, LG, Firefox, Гик, Моддинг, Кастомизация, Телефон, Мобильные телефоны, Длиннопост

Ну и конечно же игры! Как раз отличная возможность вспомнить 2012-2014 годы в мобильном гейминга и поиграть в годноту тех лет. Балдеж!

❯ Заключение

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

Но увы, LG уже более года назад закрыли свое мобильное подразделение и ушли с рынка мобилок. А жаль, ведь зачастую у них выходили очень годные девайсы — абы какую компанию к работе над Nexus не привлекут! А вы как считаете? Жду ваше мнение в комментариях!

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

Как на Озоне продают всякий треш⁠ ⁠

Нужда заставила задуматься о приобретении нового современного смартфона, я решил посмотреть во сколько обойдется карта памяти в 1 Тб к нему. И О! Мое удивление! Озон предлагает карты памяти от китайских продавцов всего за 1800+ рублей. При том, что в ДНС я карты подобного объема видел по цене от 10к+.

Что-то тут не то, подумал я и изучил вопрос конкретнее, обойдя все релевантные для себя магазины.

Карта памяти microSD 1Tb

DNS 11990 15990, 18990

Яндекс.Маркет 10690, 17991, 19000

МВидео какой-то печальный, там нет таких карт памяти в принципе

Ситилинк предлагает аж целую одну за 6990

Вайлдберриз тоже не о чем, карт памяти на теру у них нет, даже скринить не стал.

А теперь смотрим на ОЗОН

1855, 1840, 1933, 2150. была одна за 618 рублей, но я не успел заскринить, видимо нашлись доверчивые люди, чтобы выкупить весь остаток, заведенный на склад и карточка товара исчезла.

Производитель таких карт описан в стиле «Xinhuanji» и прочие в подобном роде. Made in China, доставка из Китая.

Все бы ничего, только есть один нюанс. Вероятнее всего там карта памяти размером 1Гб, перепрошитая до 1Тб. Возможно больше, но Вы не успеете это заметить, если не начнете сразу заливать до 800 Гб информации (помним про двоичную систему, где 1Тб не равняется 1000Гб реальной памяти). А когда Вы поймете, что карта вовсе не 1 Тб, а 64Гб или вообще 1Гб — там или султан или ишак сдохнет.

Всем спасибо за внимание. У меня все.

Как на Озоне продают всякий треш Смартфон, Мобильные телефоны, Android, iPhone, OZON, Китайские товары, Длиннопост, Негатив

Как на Озоне продают всякий треш Смартфон, Мобильные телефоны, Android, iPhone, OZON, Китайские товары, Длиннопост, Негатив

Как на Озоне продают всякий треш Смартфон, Мобильные телефоны, Android, iPhone, OZON, Китайские товары, Длиннопост, Негатив

Как на Озоне продают всякий треш Смартфон, Мобильные телефоны, Android, iPhone, OZON, Китайские товары, Длиннопост, Негатив

Как на Озоне продают всякий треш Смартфон, Мобильные телефоны, Android, iPhone, OZON, Китайские товары, Длиннопост, Негатив

Нищеброд что ли?⁠ ⁠

Нищеброд что ли? Юмор, Картинки, Картинка с текстом, iPhone, Не айфон, Android, Девушки, Телефон, Мобильные телефоны, Длиннопост

Нищеброд что ли? Юмор, Картинки, Картинка с текстом, iPhone, Не айфон, Android, Девушки, Телефон, Мобильные телефоны, Длиннопост

Нищеброд что ли? Юмор, Картинки, Картинка с текстом, iPhone, Не айфон, Android, Девушки, Телефон, Мобильные телефоны, Длиннопост

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера⁠ ⁠

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!

❯ Мотивация

Прошло уже практически 10 лет с того момента, как у меня появилась моя первая портативная консоль. Несмотря на то, что я был заядлым ПК-игроком, я уже успел посмотреть на PS3 и PSP, но денег на их покупку у меня особо не было, да и к тому времени уже был в наличии Android-планшет. Но к моему 13-летию в 2014 году, когда я ходил и выбирал себе будущий девайс на день рождения, отец и мама решили подарить мне мою первую портативную консоль. Изначально, я уговаривал её купить мне целых два девайса, но бюджет был ограничен 4.000 рублей, а я хотел взять смартфон Fly IQ239 и консоль JXD S601 одновременно:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Однако, увидев здоровую 7-дюймовую консоль в магазине TREC (думаю, жители южной части РФ помнят такой), мама уговорила меня взять именно её, мотивируя это «ну и чего ты будешь тыкаться в этот мелкий экран? Возьми большую». После покупки гаджета, я был доволен: играл какие-то игрушки с ретро-платформ, устанавливал игры на Android, сидел в ВК через Kate Mobile. Что еще нужно было школяру? Однако, планшет прожил у меня недолго: с очередного лага я психанул и ударил по нему кулачком, унеся на тот свет и дисплей и тачскрин. Так консолька и пролежала в подвале около 8 лет. Впрочем, мне продолжали импонировать подобные устройства и в прошлом году я купил и написал про несколько подобных девайсов.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Несколько месяцев назад, мой читатель Кирилл Севостьянов с Хабра прислал мне HTC HD2 в качестве донора и планшет Prestigio PMP7170B3G, который был рабочим, но… у него отказал тачскрин. Я всё думал, чего бы с ним сделать и решил реализовать игровую консольку своими руками из подручных средств. Идея крутилась в голове довольно давно, но реализовал я её только сейчас.

❯ Что нам нужно сделать?

Итак, что должно быть у портативной консоли? Чипсет, дисплей, звук, ОС — это всё нам уже предоставляет планшет. Нам остаётся лишь сделать свой геймпад. Давайте подумаем, что нам будет нужно для того, чтобы его сделать и передавать от него события на планшет:

Контроллер для геймпада: тут нам подойдет практически любой микроконтроллер, который работает от 3.3в. Выбор большой: Arduino Pro Mini 3.3v, ESP32, RPi Pico. Я остановился на последнем: недавно я взял себе две штучки «пощупать» их — и они мне очень понравились!

Физический интерфейс: с планшетом нужно как-то общаться. У нас есть три варианта: USB (не факт, что поддержка преобразователей включена в ядре), UART и SPI/I2C на пятачках тачскрина (потребуют написания драйвера т. к. в android-устройствах нет прямого доступа к SPI/I2C из userland’а). Я остановился на UART: его легко найти на большинстве китайских планшетов, а если не получилось — то на помощь может прийти схема платы.

Программная реализация: как это будет работать? Я решил реализовать геймпад в виде сервиса на Android, который слушает состояния кнопок с UART и «инжектит» события напрямую в драйвер ввода. Таким образом, поддержка нашего геймпада появляется даже в самой системе — можно управлять менюшкой или приложениями как с клавиатуры!

С планом определились, пора начать с программной части: сначала нам обязательно понадобится ROOT-доступ. Его получение на разных девайсах отличается — на prestigio уже был порт CWM и я просто поставил SuperSU. Без ROOT доступа мы не сможем использовать UART!

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Теперь нам нужно найти пятачки UART на плате. Разведен он не везде, но в случае устройств на MediaTek — почти всегда, ещё и пятачки подписаны. На моём планшете он нашёлся сразу: был между двух металлических экранов и соответствовал 4-ому каналу UART. Получить к нему доступ можно в /dev/ttyMT3. Я использую ESP32 в качестве UART преобразователя: подпаиваемся к RX/TX, запускаем putty и заходим в adb shell. Определяем бодрейт (скорость) нашего UART порта — на MediaTek он обычно равен 921600, на других чипсетах — 115200. Пытаемся что-то вывести и хоба — мы уже можем «поболтать» с планшетом!

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

❯ Приложение-сервис

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

InputManager.injectInputEvent — именно этим методом пользуется команда input, которую вы можете использовать через adb. Но увы, он работает только при наличие разрешения INJECT_EVENTS, который доступен только системным приложениям — находятся они в /system/app и подписаны тем же сертификатом, что и остальная прошивка.

Модуль uinput дает возможность создать виртуальное устройство ввода и посылать события из userland’а — т. е. из прикладного приложения. У моего планшета было устройство /dev/uinput, но lsmod показывал, что сам модуль не загружен. Так что отметаем — он есть не везде.

Прямой инжект событий в character устройство — весьма грязный хак, который позволяет инжектить события, не притворяясь системным приложением, но имеет некоторые ограничения. Именно его я и выбрал и о ограничениях ниже.

Сначала нам нужно узнать, какие кнопки поддерживают загруженные устройства ввода в системе. Для этого используем команду getevent -li. Там есть разные устройства ввода, в том числе и тачскрин (если вам нужно симулировать нажатия на экран), мне же подошёл драйвер физических кнопок mtk-kpd. Он занимается обработкой кнопок громкости, включения и т. п. Тут важно обратить внимание на то, что если попытаться послать кнопку, которое устройство не реализует (например пробел), то ничего не произойдет:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Инжект событий я писал на C, т. к. это требовало прямой записи input_event, а в Java прокинул его через Jni. Концепция простая: открываем устройство /dev/input/event2 и посылаем в него события ввода и синхронизации (это обязательно!), которые затем Android читает и обрабатывает:

#include <linux/uinput.h>

#include <fcntl.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <android/log.h>

#include <jni.h>

int uinput;

extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_init(JNIEnv *env, jclass clazz) <

uinput = open(«/dev/input/event2», O_WRONLY);

__android_log_print(ANDROID_LOG_DEBUG , «Test», uinput >= 0 ? «Open event OK» : «Failed to open event»); >

void emit(int fd, int type, int code, int val) <

struct input_event ie; ie.type = type;

ie.code = code; ie.value = val;

ie.time.tv _sec = 0;

ie.time.tv _usec = 0;

write(fd, &ie, sizeof(ie)); >

extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_sendKeyEvent(JNIEnv *env, jclass clazz, jint key_code, jboolean pressed) <

__android_log_print(ANDROID_LOG_DEBUG , «Test», «Send»);

emit(uinput, EV_KEY, key_code, (bool)pressed ? 1 : 0);

emit(uinput, EV_SYN, SYN_REPORT, 0);

>

Основной обработкой занимается сервис, который я реализовал в отдельном потоке: он слушает события с UART и посылает соответствующие изменения состояния через sendKeyEvent. На вход приходят простые сообщения вида:

U L где U/D — нажато, не нажато, а L — однобайтовый идентификатор кнопки. В случае L — это влево, R — вправо и т. п. Вся доступная раскладка хранится в словаре. Причём само чтение из UART реализовано костылем с чтением «чужого» stdout, т. к. android-приложения не умеют сами по себе работать с root правами. В теории, это могло дать неприятный оверхед, но на практике никакого серьезного инпут лага это не создает. Не забываем сделать устройство event записываемым — ставим ему права 777:

package com.monobogdan.inputservicebridge;

public class InputListener extends Service <

private static final int tty = 3;

private InputManager iManager;

private Map<Character, Integer> keyMap;

private Method injectMethod;

private Process runAsRoot(String cmd)

<

try <

return Runtime.getRuntime().exec(new String[] < "su", "-c", cmd >);

>

catch (IOException e)

<

e.printStackTrace();

return null;

>

>

@override

public void onCreate() <

super.onCreate();

// According to linux key map (input-event-codes.h)

keyMap = new HashMap<>();

keyMap.put(‘U’, 103);

keyMap.put(‘D’, 108);

keyMap.put(‘L’, 105);

keyMap.put(‘R’, 106);

keyMap.put(‘E’, 115);

keyMap.put(‘B’, 158);

keyMap.put(‘A’, 232);

keyMap.put(‘C’, 212);

InputNative.init();

try <

runAsRoot(«chmod 777 /dev/input/event2»).waitFor();

> catch (InterruptedException e) <

throw new RuntimeException(e);

>

Executors.newSingleThreadExecutor().execute(new Runnable() <

@override

public void run() <

Process proc = runAsRoot(«cat /dev/ttyMT» + tty);

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

while(true)

<

try <

String line = reader.readLine();

if(line != null && line.length() > 0) <

Log.i(«Hi», «run: » + line);

boolean pressing = line.charAt(0) == ‘D’;

int keyCode = keyMap.get(line.charAt(2));

Log.i(«TAG», «run: » + keyCode);

InputNative.sendKeyEvent(keyCode, pressing);

>

>

catch(IOException e)

<

e.printStackTrace();

>

/*try <

Thread.sleep(1000 / 30);

> catch (InterruptedException e) <

e.printStackTrace();

>*/

>

>

>);

>

@override

public IBinder onBind(Intent intent) <

return null;

>

>

Таким образом, если мы отправляем с ПК «D L» — система считает, что мы зажали стрелку влево, а U L — считает что мы отпустили. Но если mtk-kpd поддерживает стрелки и еще некоторые действия без каких либо проблем, то enter в список обрабатываемых кнопок не входит: придется мудрить! И тут нам приходит на помощь механизм трансляции кодов кнопок в действия: они хранятся в специальных файлах .kl в /system/usr/keylayout/. Я назначил DPAD_CENTER на… кнопку регулировки громкости звука! Ну, а почему бы и нет. 🙂 Таким образом можно переназначить уже имеющиеся кнопки громкости на, например, start/select.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

❯ Геймпад

После того, как сервис был готов и отлажен, нужно было реализовать хардварную часть проекта — сам геймпад. В качестве контроллера я, как уже говорил, выбрал Raspberry Pi Pico на базе МК RP2040 — бодреньком контроллере с двумя ARM Cortex-M0 ядрами. Стоит копейки, а в отличии от ESP’шек, его SDK не такое перегруженное и выглядит более приближенным к bare-metal.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

На данный момент, я решил развести все кнопки на бредборде — макетной плате без пайки, т. к. макеток для пайки у меня под рукой не было. Сделал примитивный геймпад:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Развел на соответствующие GPIO:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

И написал примитивную прошивку, которая отслеживает состояние кнопок. В прошивке точно так же есть словарь, задающий ассоциацию между физическими пинами и «виртуальными» кнопками. При нажатии или отжатии кнопки, программа изменяет стейт и отсылает новое состояние планшету.

Собираем всё вместе и тестируем. Хоба, всё работает, мы можем перемещаться по менюшке используя наш геймпад!

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

А почему бы не попробовать поиграть в какую-нибудь игру? Ну мы же консоль вроде делаем: берём эмулятор NES, биндим кнопки в настройках и наслаждаемся игрой в Марио!

❯ Заключение

Реализация этого проекта заняла у меня не так уж и много времени: всего около 3-х дней работы по вечерам. Вероятно кто-то спросит: «а чего ты просто Bluetooth геймпад не купил?». Так это не прикольно ведь. Гораздо приятнее играть в девайс, к которому ты приложил руку сам. Более того, не у всех старых планшетов есть BT. Обошёлся на данной стадии проект недорого: планшет мне подарили бесплатно (точно также у вас дома может лежать подобный), RPi Pico — 350 рублей, кнопки по 10 рублей/штучка.

В целом, я сам по себе обожаю копаться в различных железках и их софтварной части (вспомнить хотя-бы статью про перекомпиляциюu-boot из вендорских исходников для нонейм консоли), а созидать что-то свое вообще вызывает какие-то нереальные всплески эндорфина — оно и понятно! 🙂

Однако несмотря на то, что мы уже имеем рабочий «прототип», проект далёк от завершения: я намерен довести его до конца и окончательно перевоплотить старый планшет в автономную игровую консоль (и рассказать об этом во второй части статьи). Для этого мне понадобится распечатать корпус и кнопки на 3D-принтере. К сожалению, у меня в городе ни у кого особо нет 3D-принтеров, поэтому начну копить на Ender 3, а от вас, читателей, с удовольствием почитаю мнение в комментариях и советы касательно выбора принтера!

�� Настройка уведомлений на смартфонах Xiaomi с MIUI 11

Смартфон без уведомлений — плохой смартфон. Фирменная оболочка MIUI 11 позволяет гибко настроить различного вида уведомления для каждого приложения в отдельности. Понадобится для этого фирменное приложение «Настройки» вашего Xiaomi или Redmi.

Розыгрыш ламп 06.09 - 20.09

Следующий пункт — «Уведомления».

В данном меню имеется несколько установок. Вид шторки уведомлений доступен в 2 вариантах: MIUI и чистый Android.

Снизу располагается список приложений, в котором можно включить либо отключить уведомления для приложения. Кроме того, имеется три типа уведомлений, которые можно настраивать отдельно: уведомления на экране блокировки, всплывающие уведомления и метка на иконке приложения, от которого пришло уведомления.

Для настройки каждого вида необходимо нажать на нужный вариант и выбрать необходимые приложения.

Как установить цифру уведомлений вместо пустых кружков

Уведомление цифра на иконке pocophone

На Xiaomi Pocophone F1, когда вам приходит уведомление, то на иконки соответствующего приложения отображается кружочек. Тем, кто раньше использовал классическую MIUI, может быть это не привычно. Ведь в ней, в этом кружочке отображается еще и цифра, которая сообщает, сколько именно уведомлений пришло от приложения. Достаточно удобно, не правда ли? До недавнего времени, сделать тоже самое в Poco, стандартными средствами, не представлялось возможным. Но, к счастью, разработчики добавили такую возможность в последних версиях Poco Launcher.

Поэтому, если хотите активировать подобную функцию, сначала обновите компоненты, а именно «Рабочий стол MIUI» или обновите прошивку целиком. А затем:

    На пустом месте рабочего стола удерживайте палец до того момента, пока не появится дополнительное меню. В нем выбираем «Настройки» и открываем пункт «Еще»

Как настроить уведомления на мобильных телефонах Xiaomi с MIUI 12

С появлением MIUI 12 на телефонах Xiaomi одно из основных изменений, в которое мы не вошли, было расположено в Уведомления Xiaomi . До сих пор уровень настройки китайской фирмы никогда не был очень легким для понимания перед лицом предупреждений, но с этой версией он нанес серьезный удар по таблице с намерением сделать все проще и практичнее.

Эти изменения, однако, могут усложнить нам задачу. Чтобы упростить задачу, мы все еще показываем вам, как вы можете настроить уведомления на мобильных телефонах Xiaomi с MIUI 12 . Больше никаких проблем, путаницы и трудностей, вы можете адаптировать уведомления к тому, что вы хотите, выбрать для себя, как они работают, и даже стиль, который они имеют на своем мобильном телефоне.

Пошаговая настройка уведомлений в Xiaomi

Чтобы управлять предупреждениями на нашем мобильном телефоне с помощью MIUI 12, мы должны принять во внимание многие вещи, все в одном разделе. Из уведомлений мы сможем выбрать все параметры, чтобы настроить их по своему вкусу. Нам просто нужно зайти в Настройки> Уведомления и знать варианты, которые мы вам показываем.

уведомления о конфигурации miui 12

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

Изменить стиль уведомлений в MIUI 12

Первый замечательный вариант, который мы находим, — это изменить стиль этих уведомлений. Xiaomi является пионером в этом, поскольку была одной из первых, кто позволил изменить эстетику. Это изменение может быть выполнено путем входа в «Панель уведомлений», где мы можем выбирать между MIUI или стиль Android в версии нашего смартфона.

стиль уведомлений xiaomi miui 12

Это изменение обычно является решением некоторых проблем с уведомлениями в Xiaomi, поскольку в некоторых случаях не все приложения хорошо оптимизированы для отображения новостей в стиле MIUI, и этот слой плохо решает проблему.

Уведомления на экране блокировки

Следующая опция, которую мы находим, находится в Уведомлениях> Экран блокировки. В этом варианте мы можем выбрать уведомления, которые будут отображаться на экране блокировки MIUI 12, не затрагивая остальную систему. Но мы также можем выбрать, можно ли с экрана блокировки опустить панель уведомлений для выполнения быстрых действий или необходимо разблокировать смартфон Xiaomi.

Блок уведомлений miui 12 xiaomi

  • Показать уведомления и контент.
  • Показывать уведомления, но скрывать содержимое.
  • Не показывать уведомления на экране блокировки.

Оповещения о значках и плавающих уведомлениях в MIUI 12

Еще один метод, который у нас есть в нашем мобильном телефоне Xiaomi, чтобы выбрать способ известить нас MIUI 12 есть в уведомлениях значками и плавающими уведомлениями. Эти два режима позволяют нам выбирать, какие приложения могут отображать небольшое предупреждение над значком на главном экране или в панели приложений, второй — тот, который показывает пузыри на экране, когда мы используем мобильный телефон, показывая полученное сообщение. о других приложениях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *