Как продлить подписку Гугл?
Введите новый адрес страны, где у вас была выдана карта, после чего вы можете подвязать свою карту к профилю. После подвязки карты вы сможете продлить свою подписку в Google Диск и в любых других сервисах от Google.Apr 29, 2022
Как продлить Гугл подписку?
На сайте Google Play в левой части страницы нажмите Мои подписки. Рядом с подпиской Google One нажмите Настроить. В разделе «Основной способ оплаты» нажмите Обновить. Выберите один из вариантов и следуйте инструкциям на экране.
Как оплатить подписку Google из России?
Оплата подписки Google Диска при наличии карт иностранных банковВключите на смартфоне VPN той страны, где вы получали карту. . Войдите в аккаунт и перейдите на страницу pay.google.com;В верхней части экрана нажмите Настройки и в разделе «Платежный профиль» рядом с пунктом «Страна/регион» нажмите на значок редактирования
Как заплатить за хранилище Google?
Что делать, если не удается заплатить за хранилищеОткройте страницу аккаунта Google Play на компьютере.Нажмите Добавить способ оплаты.Следуйте инструкциям на экране.Способ оплаты будет добавлен в ваш аккаунт Google.
Как оплатить Google One с телефона?
Если вы зарегистрировались через Google PlayОткройте приложение Google One. на телефоне или планшете Android.В верхней части экрана нажмите Меню Настройки.Нажмите Изменить способ оплаты.Выберите Google One. Обновить.Выберите нужный вариант.Следуйте инструкциям на экране.
Как оплатить подписки в App Store и Google Play без банковских карт: лайфхаки

Не все приложения в App Store и Google Play бесплатные: многие из нас оформляют подписки, чтобы в полной мере пользоваться тем или иным сервисом. Однако с марта 2022 года выпущенные российскими банками карты Visa и Mastercard перестали приниматься к оплате за рубежом и в иностранных интернет-магазинах. В связи с этим возникли вопросы, можно ли оплачивать подписки в магазинах приложений другим путем, если привычный стал невозможен? Рассказываем, как можно решить эту проблему.
Как оплатить подписку в App Store
Накануне отключения многие судорожно стали пополнять баланс Apple ID, так как решили, что оплатить подписку в России будет теперь совсем непросто. Безусловно, всем хотелось продолжать свободно пользоваться не только приложениями, но и Apple Music, а также iCloud, без которых многие из нас не представляют жизни сегодня.
Если закинуть N-ную сумму на счет на многие месяцы вперед ты не успела, не расстраивайся. Пополнить свой баланс Apple ID, чтобы оплатить подписку, можно не только банковской картой. Хотя и с ней есть некоторые решения.

Пополнение Apple ID через счет мобильного телефона
Когда банковская карта в этом случае перестает работать, подскажем, как оплатить за подписку Apple без ее помощи. Один из самых доступных способов – снимать деньги со счета мобильного. Чтобы всё получилось, нужно просто изменить настройки оплаты.
Войди в AppStore, нажми на значок профиля, там перейди в раздел «Управлять способами оплаты», далее выбери «Добавить способ оплаты», жми на строчку «Мобильный телефон» и вводи свой номер. После этого придет смс с кодом, и после подтверждения произойдет оплата подписки в AppStore.
Пополнение Apple ID через счет приложение банка
Указанный выше вариант не единственный, как можно оплачивать подписки на Айфоне в 2022 году. Когда стоит запрет на платежи с мобильного телефон, попробуй следующее. В приложениях некоторых банков (например, «Тинькофф») есть раздел «Платежи», где достаточно в поиске вбить «App Store», и тут же появится соответствующий пункт. Далее — дело механики.
Оплатить подписку через приложение банка так же легко, как со счета мобильного телефона. Нужно авторизоваться в приложении по своему номеру или заполнить соответствующую графу. Далее ввести код активации, который тут же придет на телефон, и после этого указать сумму пополнения. И вуаля — деньги поступили на твой Apple ID.
Покупка подарочной карты App Store и iTunes
Тут всё просто: ты покупаешь подарочную карту App Store и iTunes любым номиналом, а дальше вводишь код активации, указанный на карте, в приложении App Store, кликнув на иконку своего профиля. Затем вводишь «Погасить подарочную карту или код».
Она позволяет оплатить подписку как на музыку, так и на различные стриминговые сервисы и другие приложения. Купить такую карту можно во многих магазинах техники или маркетплейсах, а также, например, приобрести прямо в приложениях банков.
Как оплачивать подписки в Google Play
В магазине приложений для Android дела обстоят несколько сложнее. В нем отключены все транзакции на территории России, но мы попробуем рассмотреть варианты, как оплатить подписку в 2022 году.
Как продлить подписку Google Play в России
После того как в мир встретился со сложностями в общении на мировом уровне, обычным людям пришлось приспосабливаться к новому. Естественно, менять свои привычки в использовании некоторых виртуальных сервисов приходится многим россиянам. Это касается не только различных зарубежных кинотеатров или платных приложений, но и подписок Google play, которые все-таки можно продлить, воспользовавшись некоторыми лайфхаками. Особо полюбились в нашей стране инструменты «Гугл карты» и «Гугл фото», которые очень точно передают не только местонахождение на дорогах мира, но и качественную картинку близлежащих домов и культурных объектов.
Оплата сервиса Google
Есть несколько взаимосвязанных услуг компании Google, без которых представить привычное использование ресурсов просто невозможно. Речь идёт не только о почтовом ящике, но и виртуальном хранилище. После того как Google запретил оплачивать своим услуги картами, выпущенными в России, большинству пользователей остается довольствоваться бесплатными 15 ГБ свободного места в облаке.
Стоит понимать, что после переполнения хранилища доступ к почте и её работа будут ограниченными. Но, несмотря на многие запреты, виртуозные пользователи сервиса придумали пару интересных вариантов для оплаты.
В этом случае нужно открыть криптовалютный счет и выпустить к нему виртуальную карту. В перспективе данный вариант предлагает не просто оплачивать услуги, заблокированные сервисом в России, но и научиться зарабатывать на интернет-торгах. Как раз в этом случае отлично подойдут карты Puzl. Виртуальный сервис хорошо адаптирован к современным запросам и позволяет без проблем проводить оплату пакетов от «Гугл»
Для этого варианта нужен яблочный телефон. Если в кругу друзей есть держатели данного вида смартфонов, то можно попросить его провести небольшую операцию по оплате вашего сервиса на Google. Первое, что нужно сделать, – завести Apple ID. Следуя подсказкам, указать номер телефона одного из мобильных операторов. Далее нужно перейти в App Store и устанавливать приложение Google One. Пополнить баланс до нужного лимита. Войти в свой аккаунт, но не синхронизировать его с устройством. Далее кликнуть на кнопку «Сменить план». Выбрать нужный вариант и кликнуть по кнопке «Подписаться». Подтвердить операцию вводом пароля от аккаунта, оплатить услугу и выйти из сервиса.
Теперь после проведения данных манипуляций можно пользоваться своим профилем с другого устройства и при этом все подписки будут оплачены, а хранилище расширено до необходимого размера.
@moderator, новорег, который пытается продвинуть какой-то сервис Puzl
0609 | 31 events @ 4 min: Немецкая пятилетка

Правозащитники 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 $.

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

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

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

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

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

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

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

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

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

# 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.
Подборка SQL тренажёров
1. Интерактивный тренажер по SQL – Stepik
В курсе большинство шагов — это практические задания на создание SQL-запросов. Каждый шаг включает минимальные теоретические аспекты по базам данных или языку SQL, примеры похожих запросов и пояснение к реализации.
2. SQL Тренажер. Бесконечное приключение 00. Интро. – Stepik
Короткий тренажер, с интересным сценарием уроков.
В игровой форме закрепляются знания SQL. Необычные задачи от простого к сложному. Планируется целый цикл интересных историй, где каждое задание это необычный квест. Сейчас пока самые простые азы.
3. SQL Academy: онлайн курс SQL и тренажёр c упражнениями ( sql-academy.org )
Всесторонний курс по SQL, спроектированный так, чтобы навсегда изменить твоё отношение к SQL. Мы вместе пройдём путь, чтобы понять как этот язык работает, и получим все необходимые навыки для эффективного применения его на работе.
4. Упражнения по SQL ( sql-ex.ru )
Сайт поможет каждому, кто хочет приобрести или повысить свои навыки в написании операторов манипуляции данными языка SQL. Суть обучения состоит в том, что вы сами пишете операторы, которые должны вернуть или изменить данные, требуемые заданием.
5. Задачи по Python, SQL, программированию и Data Science | IT Resume
Сайт с платным доступом, но часть задач беспалтные.
[Тестовое Альфа-банк] Покупки телефонов в Туле по месяцам | IT Resume
6. Master Coding for Data Science — StrataScratch
Зарубежный сайт, напоминающий leetCode, есть бесплатная версия использования
Материал подготовлен участниками чата

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

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

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

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

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

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

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

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

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

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


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

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

Требования платформы были отнюдь невысокими, гораздо ниже оных у 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 поддерживала виджеты и т.н «Хаб» — приложение-агрегатор событий из соц. сетей.

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

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

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

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

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

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

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


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

Ну а несколько лет назад, Samsung закрыла магазин приложений Tizen, что формально означает полный провал «вертушки» 🙁
❯ Заключение
Samsung в плане самопальных платформ напоминает Microsoft — те тоже умудрились сделать действительно крутую и необычную Windows Phone, отвоевать какой-то процент рынка и заполучить фанов своей системы, но затем пришли эффективные менеджеры и решили рубить всё на корню.
И даже если команды разработчиков самих этих платформ горят идеей запилить что-то крутое, бабло и желание улучшить отчетность делают своё дело. Но раз в год и палка стреляет — не зря ведь инженеры Nokia основали свою компанию Jolla, которая пилит Sailfish OS. А ведь «Аврора» — прямой наследник Sailfish! 🙂
Но если говорить конкретно о бадафонах — то несмотря на баги и некоторые глупые решения, это были весьма годные девайсы, учитывая действительно низкую цену. Настоящим конкурентом бюджетных бадафонов была лишь Nokia 5228/5230, которая хоть и имела настоящий Symbian, но не была оснащена Wi-Fi, GPS и даже 3G. Но вот с кем bada могла конкурировать в верхнем сегменте рынка?

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

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

Проектов по выкидыванию 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 — к которой доступа у нас нет!

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

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

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


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

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

На этом модификация аппаратной частипоказакончена. Пора переходить к реализации софта! Я решил разделить материал на каждый модуль, который я реализовывал — дабы вам был понятен процесс разработки и отладки прошивки!
Заставляем смартфон запускать нашу прошивку
На этот раз я решил загружать смартфон из режима рекавери. Однако никто не мешает в будущем просто прошить раздел recovery вместо boot и получить прямую загрузку прямо в нашу прошивку. Время такой загрузки будет заниматься
3-4 секунды с холодного старта. Очень даже ничего.

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

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

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

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

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

Загрузчик TGA сильно не поменялся: я таскаю его в неизменном виде из проекта в проект. Он поддерживает любые форматы пикселя, кроме палитровых, но я его искусственн ограничиваю на RGB888 и RGBA8888 — для поддержки обычных картинок и картинок с альфа-каналом. После этого, я написал не очень шустрые, но достаточно универсальные методы для отрисовки картинок. Для больших участков кода, я буду использовать pastebin, поскольку на Пикабу до сих пор не добавили ни подсветки синтаксиса, не нормальный перенос форматирования табов 🙁
PutPixel желательно заинлайнить в будущем. В целом, сама отрисовка работает достаточно быстро, но поскольку рендеринг выполняется на ЦПУ — рано или поздно мы упремся в количество картинок на экране. Есть некоторые оптимизации: например, непрозрачные картинки можно просто коприовать сканлайнами прямо в задний буфер.
Сразу же реализовываем методы для рисования шрифтов: они у нас будут совсем простенькими — только моноширинные (все символы имеют одинаковую ширину) и растровыми (для каждого размера придется «запекать» несколько шрифтов). Для этого я написал маленькую программку, которая рисует виндовые шрифты прямо в наш самопальный формат:

1 байт говорит нам о размере шрифта и далее идут 255 изображений символов. Да, это не очень эффективно т.к попадают пустые символы из ASCII-таблицы, но в будущем это можно поправить.
Прозрачность в символах обеспечивает фоновый цвет Magena — ярко-розовый. Я не стал делать дополнительный альфа-канал, т. к. иначе будут серьезные лаги при выводе большого количества текста.
Теперь у нас есть отображение картинок и текста! Что с этим можно сделать?
❯ Обработка ввода


Пока что здесь не хватает обработки «хардварных» кнопок — домой, меню, назад и т. п. Однако в будущем это всё можно реализовать!
❯ Анимация
Не забыл я и про анимации. Ну кому с такими ресурсами нужен неанимированный топорный интерфейс? Пусть лучше будет анимированный, пусть и примитивный!
Аниматор напоминает оный из ранних версий Android: он имеет фиксированный набор свойств, которые умеет интерполировать в промежутках определенного времени. Если простыми словами: то он оперирует линейными отрезками времени a и b, в промежутке которых мы имеем значение «прогресса» — которое даёт нам результат от 0.0f (начало анимации) до 1.0f (конец анимации). Пока время тикает до необходимого интервала (duration), аниматор интерполирует заранее назначенные ему поля до нужных значений.
Именно так и получается плавность! Похожим образом реализованы анимационные системы во многих играх и мобильных ОС, только там они гораздо более комплексны: есть сериализация/десериализация из файлов, поддержка кейфреймов (несколько последовательных состояний на одном промежутке времени), поддержка кастомных свойств и т. п.

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

Важный нюанс: по умолчанию, 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);
После чего можно запросить состояние модема:

И продолжить работу дальше. После этого, можно переходить к реализации самой прослойки между модемом и вашей программой:
Пытаемся позвонить с помощью метода Dial и видим, что всё работает! Это очень круто! А теперь, конечно же, самое время переходить к реализации того, чего вы ждали — пользовательского интерфейса!
❯ Главный экран
К выбору концепции для интерфейса, я поступил максимально просто — «слизал» дизайн первых версий iOS. Как по мне, это одни из самых красивых версий iOS вообще — все эти приятные градиенты и переливания. Конечно, я не так крут, как инженеры Apple, да и мощного UI-фреймворка у меня пока что нет, поэтому я приступил к реализации с «минимальным» функционалом.

Начал я с разделения главного экрана на модули и продумывания архитектуры основного «лаунчера». У нас есть статусбар, который рисуется поверх всех приложений, полка с приложениями — 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. Нам понадобился новый элемент интерфейса, который описывает кнопку номеронабирателя? Мы просто реализовываем ещё один метод, который берет за основу стандартную кнопку и дорисовывает к ней текст. Всё крайне просто и понятно, хотя на данный момент слишком захардкожено. 🙂
❯ Звоним!
Пришло время совершить первый звонок с нашей по настоящему кастомной прошивки. Набираем номерок и…

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

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

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

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

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

А recovery оказывается самой обычной нативной программой, написанной на C со своим небольшим фреймворком для работы с графикой и вводом. В процессе загрузки режима recovery, скрипт запускает одноименную программу в /sbin/, благодаря которому мы видим простую и понятную менюшку. Так почему бы не использовать этот раздел в своих целях и не написать какую-нибудь нативную программу самому?
Как я уже говорил выше, в этом режиме доступны многие аппаратные возможности вашего смартфона, за исключением модема. Используя полученную информацию, предлагаю написать наше небольшое приложение под Android-смартфон без Android сами!
❯ Подготавливаем окружение
В первую очередь, хотелось бы отметить, что программы под «голый» смартфон можно писать не только на C/C++. Нам доступен как минимум FPC, который довольно давно умеет компилировать голые бинарники под Android. Кроме того, мы можем портировать маленькие embedded-версии интерпретаторов таких языков, как lua, micropython и duktape (JS).
Однако в случае нативных программ, есть два важных правила, которые необходимо понимать. Во-первых, в Android используется собственную реализацию стандартной библиотеки libc — bionic, в то время как на десктопных дистрибутивах используется glibc. Между собой они не совместимы — именно поэтому вы не можете просто взять и запустить консольную программу для Raspberry Pi, например.

А второе правило заключается в том, что начиная с версии 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 как вариант):

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

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

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

Это просто отлично. Однако я ведь обещал вам, что мы напишем программу, которая сможет выводить графику и обрабатывать ввод, предлагаю перейти к практической реализации!
❯ Выводим графику
Для вывода графики без оконных систем, мы будем использовать 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:

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

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


Производительность отрисовки не очень высокая, однако если оптимизировать код (копировать непрозрачные картинки сразу сканлайнами и убрать проверки в инлайнах), то будет немного шустрее. Google для подобных целей сделали собственный простенький софтрендер —libpixelflinger.
Есть вариант для быстрой и динамичной графики: использовать GLES, который без проблем доступен и из recovery. Однако, насколько мне известно (в исходники драйверов посмотреть не могу), указать фреймбуфер в качестве окна не получится, поэтому в качестве Surface для рендертаргета у нас будет служить Pixmap (так называемый off-screen rendering), которому нужно задать правильный формат пикселя (см. документацию EGL). Рисуем туда картинку с аппаратным ускорением и затем просто копируем в фреймбуфер с помощью memcpy.
❯ Обработка нажатий
Однако, ни о каких GUI-программах не идёт речь, если мы не умеет обрабатывать нажатия на экране с полноценным мультитачем! Благо, даже механизм обработки событий в Linux очень простой и приятный: мы точно также открываем устройство и просто читаем из него события в фиксированную структуру. Эта черта мне очень нравится в архитектуре Linux!
Каждое устройство, которое может передавать данные о нажатиях, находится в папке /dev/input/ и имеет имя вида event. Как узнать нужный нам event? Нам нужен mtk-tpd — реализация драйвера тачскрина от MediaTek (у вашего чипсета может быть по своему), для этого загружаемся в Android и пишем getevent. Он покажет доступные в системе устройства ввода — в моём случае, это event2:

Из 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;
>

В целом, это уже можно назвать минимально-необходимым минимумом для взаимодействия с устройством и использованию всех его возможностей на максимум без Android. Более того, такой метод заработает почти на любом устройстве, в том числе и китайских NoName, где ни о каких исходниках ядра и речи нет. Теперь вы можете попытаться использовать ваше старое Android-устройство для чего-нибудь полезного без необходимости изучать API Android.
❯ Звук, модем и другие возможности
Для звука нам придётся использовать ALSA — поскольку эта подсистема звука сейчас используется в большинстве устройств на Linux. Судя по всему, тут есть режим эмуляции старого и удобного OSS, поскольку устройства /dev/snd/dsp присутствует. Однако, вывод в него какого либо PCM-потока не даёт ничего, поэтому нам пригодится ALSA-lib.
Другой вопрос касается модема и сети. И если Wi-Fi ещё можно поднять (wpa_supplicant можно взять из раздела /system/), то с модемом будут проблемы — нет единого протокола по общению с ним и кое-где, чтобы его заставить работать, нужно будет немного попотеть. Не стесняйтесь изучать исходники ядра (MediaTek охотно делится реализацией вообще всего — там и RIL, и драйвер общения с модемом) и смотреть интересующие вас фишки!
❯ Заключение
Как мы с вами видим, у старых девайсов все еще есть перспективы стать полезными в какой-либо сфере даже без Android на борту. На тех устройствах, где нет порта Ubuntu или обычного десктопного Linux, всё равно сохраняется возможность писать нативные программы и попытаться приносить пользу.
Не стесняйтесь лезть и изучать вендорские исходники — это даёт понимание, как работают устройства изнутри. Собственно, благодаря такому ежедневному копанию исходников системы и появилась данная статья! 🙂

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

В прошлой статье, мы с вами рассмотрели на что способен одноплатный компьютер, который стоит всего 1.000 рублей. Как мы выяснили, перспективы у данного девайса весьма неплохие, однако по факту, Orange Pi продаёт практически голую железку, которую нужно дорабатывать самому. Да, тут есть Ubuntu/Fedora, да, тут выведена гребенка с I2C/SPI — однако из коробки это всё работает криво-косо, либо не работает совсем. Даже обещанные шины SPI/I2C фактически не доступны в системе «из коробки». Материалов о доработке этого одноплатника в сети мало, поэтому я решил довести его до ума сам и поделится с вами — в том числе, готовыми бинарными образами! Интересно, на что способен доработанный одноплатник по цене ящика пива? 🙂
Над чем будем работать
В прошлой статье, мы с вами определились с потенциальными перспективами такого устройства. По цене 3х ESP32, производитель предлагает нам два полноценных вычислительных ARM-ядра, 256 мегабайт оперативной памяти, 512 мегабайт встроенной NAND-памяти, контроллер питания с возможностью работы от литий-ионных АКБ и 3G модем. Но в бочке меда нашлась ложка дегтя: никто не собирался это всё поддерживать и Orange Pi практически сразу «забили» на поддержку устройства, ограничившись портом Debian/Ubuntun на устройство.

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

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

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

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

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

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

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

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

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

Скажу сразу: пока что завести модем мне не удалось, но я активно работаю над этим. В этой части статьи я распишу свои находки и догадки касательно модемов на чипах 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-команд:

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

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

Многие из нас помнят компанию 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, а также работа с документами.

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

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

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

До 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.

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

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

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

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

Основные интерфейсные разъемы устройства расположены сверху: там и слот под 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.

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

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

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

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

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

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

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

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


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

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


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

❯ Заключение
N9 получился первым гиковским устройством, которое могли без проблем использовать и обычные пользователи. Nokia вложили много сил и времени для того, чтобы привнести в N9 революционные по тем временам идеи, да так, что некоторые фишки потом у неё «позаимствовали» сами гиганты индустрии!
И очень хорошо, что история MeeGo не закончилась на этом. Кто знает, быть может эта система когда-нибудь сделает камбэк и скинет обросший кучу легаси Android? А вы как считаете? Жду ваше мнение в комментариях!

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


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

Друзья! Много ли гиковских серийных смартфонов вы знаете на текущее время? 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 на ПК был введен отдельный режим, где разрабы могли бы запускать и отлаживать свои приложения в эдаком симуляторе.

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

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

Сама прозрачность корпуса даёт нам разглядеть светодиоды подсветки дисплея, подключенные шлейфы, АКБ, слоты под сим и строение кнопки домой. Кроме того, задняя крышка покрыта интересным рельефом, приятным на ощупь. Кому-то этот дизайн кажется отталкивающим, но как по мне — он классный. Не менее интересна и железная начинка девайса:
Процессор: 2-х ядерный Qualcomm Snapdragon 400 с видео-ускорителем Adreno 305.
Оперативная память: 1.5гб ОЗУ.
Дисплей: 4.7″ IPS матрица с HD-разрешением.
Камера: 8мп/2мп.
ОС: FireFox OS 2.
Для 2014 года это вполне неплохие характеристики для средне-бюджетного аппарата. Похожими хар-ками обладает, например, Galaxy S4 Mini.

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

Конкретно про опыт использования FireFox OS в 2023 году я писал в статье про Alcatel Fire E. В этом материале давайте прошьём наш Fx0 и посмотрим, на что он способен сейчас!
❯ Прошиваем
Собственно, в этом нет ничего сложного. Работы буквально на 15 минут, благо уже есть готовая и рабочая прошивка CyanogenMod под наше устройство.
Первым делом качаем саму прошивку и TWRP — раздел recovery. Пригодятся драйверы и adb/fastboot.
Теперь нам нужно включить режим разработчика. Идём в настройки -> О телефоне -> Больше информации и включаем галочку режима разработчика. Теперь идем в соответствующее меню для разработчиков и выбираем режим работы USB — нам нужен режим adb.
Подключаем устройство к ПК и открываем командную строку (cmd.exe). Переходим в папку с скачанным adb (например, C:/adb/) и запускаем терминал:
adb shell su

После этого нам нужно сдампить три важных раздела — с специальным режимом обновления 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

Далее в папке с 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
Готово! Варнинги в консоли — это нормально.

Теперь пишем в консоли reboot и выполняем команду, одновременно зажав громкость вверх, устройство перейдет в режим fastboot. Теперь нам нужно загрузить recovery, пишем:
fastboot boot twrp_302-madai01.img
Устройство загрузится в режим recovery. Свайпаем ползунок и попадаем в главное меню.

Теперь у нас два варианта: закинуть прошивку на 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 — никаких гугл-сервисов, ничего лишнего. Как оно работает теперь? Давайте узнаем!

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


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

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


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

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





Ну и конечно же игры! Как раз отличная возможность вспомнить 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, Приложение на iOS, Поисковик, Поиск по картинкам, Яндекс, Google, Сайт, Длиннопост](https://cs14.pikabu.ru/post_img/2023/05/14/9/1684078473111129591.jpg)
Расскажу о 10 способах поиска своего двойника. Я попробовал все из них и это дало тот результат, который я хотел получить.
Google поиск по картинкам — один из самых быстрых и бесплатных инструментов. Загрузил фото и сразу получил ответ. Я всегда начинаю поиски по фото именно с него.
Яндекс поиск по картинкам — аналог Google, но результаты могут быть совершенно другие. Также если вы используете Яндекс Алису через приложение на телефоне, то можете использовать ее навык «На кого я похож?» в котором она попросит вас загрузить фото для поиска двойника.
Twinstrangers.net — хороший сервис, но придется заморочиться с заполнением анкет. Суть его работы в том, что вы загружаете фотографию на сайт, далее выбираете среди предложенных характеристик, те, что подходят вашему лицу. Например, что оно имеет овальную форму, глаза миндалевидные, а губы пухлые. После этого сервис в автоматическом режиме показывает фотографии похожих людей и предлагает связаться с ними.
![Как найти своего двойника? [ или ] Как найти человека по фото? Двойники, Близнецы, Поиск, Поиск людей, Фотография, Приложение, Приложение на Android, Приложение на iOS, Поисковик, Поиск по картинкам, Яндекс, Google, Сайт, Длиннопост](https://cs13.pikabu.ru/post_img/2023/05/28/9/1685282433247036109.jpg)
FindClone.ru — популярный сервис для поиска похожих людей в социальных сетях. В основном ищет по пользователям Вконтакте. Требуется регистрация по номеру телефона.
![Как найти своего двойника? [ или ] Как найти человека по фото? Двойники, Близнецы, Поиск, Поиск людей, Фотография, Приложение, Приложение на Android, Приложение на iOS, Поисковик, Поиск по картинкам, Яндекс, Google, Сайт, Длиннопост](https://cs14.pikabu.ru/post_img/2023/05/28/9/168528294013861310.jpg)
Betaface.com — чтобы найти похожего на себя человека в их базе данных, вам, как и на других сайтах, нужно будет загрузить свое фото в хорошем качестве, можно сразу несколько. Есть возможность сравнения двух лиц, а также поиск данных о найденном человеке в Википедии.
Pictriev.com — очень простой и понятный сайт, чтобы найти двойника по фото бесплатно. Также помогает определить на кого вы похожи из знаменитостей.
![Как найти своего двойника? [ или ] Как найти человека по фото? Двойники, Близнецы, Поиск, Поиск людей, Фотография, Приложение, Приложение на Android, Приложение на iOS, Поисковик, Поиск по картинкам, Яндекс, Google, Сайт, Длиннопост](https://cs13.pikabu.ru/post_img/2023/05/28/9/1685282628163370372.jpg)
TinEye.com — сайт на английском языке, но с интуитивным интерфейсом. Полный доступ ко всем функциям поиска двойников по фото онлайн можно получить после регистрации, она бесплатная.
Pimeyes.com ( телеграм бот pimeyesbot ) — очень крутой сервис. Ищет по соц сетям и по обычным сайтам. Через телеграм бот есть возможность попробовать бесплатно.
![Как найти своего двойника? [ или ] Как найти человека по фото? Двойники, Близнецы, Поиск, Поиск людей, Фотография, Приложение, Приложение на Android, Приложение на iOS, Поисковик, Поиск по картинкам, Яндекс, Google, Сайт, Длиннопост](https://cs13.pikabu.ru/post_img/2023/05/28/9/1685282705192235426.jpg)
ilooklikeyou.com — поиск осуществляется по внутренней базе данных совмещенной с Facebook. Есть возможность бесплатного поиска.
Gradient Al (iOS или Android) — приложение включает в себя много функций одна из которых поиск на кого вы похожи из знаменитостей. Она бесплатная, позволяет буквально за пару секунд получить результаты работы алгоритма. Часть функций входит в бесплатную версию, расширенный функционал нужно будет оплатить отдельно.
Для максимального эффекта нужно прогнать фото по всем сервисам. Удачного поиска
Используем телефон как датчик движения
Всем привет! Решил написать пост, т.к. столкнувшись с проблемой не нашел готового решения
Итак, на работе имеется компьютерная программа, в которой, при ошибке, начинает двумя цветами мигать окно с этой программой, но звукового сигнала нет. Это создаёт проблему при ночном дежурстве, когда шанс заснуть на рабочем месте неуклонно растёт. Поизучав эту программу и обсудив проблему с компетентными людьми, пришел к следующему:
1. Звук в этой программе включить нельзя, в настройках нет такой возможности
2. Установить на компьютер какой-то скрипт или программу, которая будет фиксировать изменение цвета нужного окна, тоже оказалось невозможным. Никак, прямо совсем.
3. Можно спаять небольшую схему с датчиком движения или фоторезистором (что более подходит), биппером и парой резисторов. Запитав ее от USB кабеля получим приспособление, которое будет издавать звук при изменении цвета
(вопрос подбора компонентов остаётся открытым, т.к. нужно экспериментировать)
4. Можно пойти дальше, и сделать все на Arduino, ведь настроить в таком случае будет ещё проще, но для этого нужно всего лишь иметь опыт общения с Arduino (увы, не имею)
Склоняясь к пункту 3, я внезапно вспомнил, как из старого смартфона делал камеру с датчиком движения для парковки у дома. Немного Гугла и вот оно, необходимое приложение

Приложение очень простое, включаю всегда первую камеру (CAMERAX)

В настройках почти ничего не менял, только пару параметров


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

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


Этого для моей задачи вполне достаточно, ну и вот сам тест (извиняюсь за грязный экран, салфеток или тряпочки в кабинете не нашлось)
Результат меня очень порадовал. Поиск приложения и настройка заняли всего лишь 15 минут. Как я понял, есть более сложные приложения с множеством настроек и более эстетично оформленные, но я решил остановиться на нем. Надеюсь, что кому-то этот пост пригодится. Остался последний вопрос: вопрос крепления телефона напротив экрана, но с этим что-нибудь быстро придумаю
P.S. Извиняюсь за воду в тексте и косноязычие
P.P.S. Если не стало понятно из текста: все это делалось для страховки, а не для переложения ответственности с сотрудника, который должен следить за аппаратурой. Просто дублирующая система

Не хватает денег на настоящие инструменты? Не беда

WorldTV Client — Обновление 2.7

Ловите большое обновление. На сегодняшний день добавлены:
— Перевод интерфейса на русский язык. Для переключения языка нажмите на иконку «Знак вопроса» в нижнем правом углу и выберите нужный язык. Доступны русский и английский.
Так же при выборе языка будет доступна небольшая инструкция настройки и использованию приложения.
— Добавлена сортировка списков категорий и каналов по алфавиту
— Добавлены 2 встроенных плеера. «BASIC» и «PLYR»
— Добавлена возможность быстрой смены плеера. В случае, если выбранный плеер не открывает нужный канал, в списке каналов нажмите на шестеренку в нижнем правом углу и выберите другой плеер.
Для новых пользователей в вкратце оп приложении.
WorldTV Client — Клиент под Android предоставляющий доступ к базе ТВ каналов. Всего более 5000 каналов рассортированных по категориям: Страны, Языки, Категории, Регионы.
Более подробно можно ознакомиться полистав ветку темы.
Проект не коммерческий, делаю для себя, делюсь с вами.
Скачать можно в Google Play(базовая версия) — В данный момент может быть не актуальной
Актуальную версию с последними обновлениями качайте посылке: https://t.me/worldtvandroidclient
Буду радо отзывам и предложениям. Хейтеры, люблю вас.

World TV Client — Обновление 2.5

Добрались шальные ручки до обновления.
В этот раз нововведений не очень много, в основном это исправление некоторых багов и одно наиболее значимое обновление на этапе тестирования. А именно:
— Добавлен встроенный плеер. Он задумывался изначально как метод просмотра каналов Wink ну и обычных каналов конечно тоже. В сторонних плеерах эти каналы мы видим как баннер с призывом идти в. а точнее к ним на сайт.
Сразу заметил ограничение: При Просмотре через местный интернет все норм, но если подключить vpn, то мы все равно получаем этот баннер.
Прошу потестить обновление ну и отписаться конечно же, как вам новый плеер.
Для новых пользователей в кратце опишу суть программы:
World TV Client Это каталог тв каналов со всего мира. Базы постоянно самообновляются и на текущее обновление насчитывают более 5000 каналов.
В приложении теперь есть одни встроенный плеер и еще три сторонних.
Советую поставить все доступные плееры и в случае если один плеер не может открыть какой то канал, попробовать открыть его через другой

WorldTV Client — Большое Обновление 2.0

Приветствую всех пикабушников. В первую очередь огромное спасибо всем, кто поддерживает проект копеечкой, через кнопку «поддержать».
Прошло много времени с последнего обновления, но наконец оно готово.
В данной редакции были выполнены следующие изменения:
— Добавлена функция выхода из приложения по нажатию кнопки «Назад»
— Списки каналов теперь загружаются в самом приложении. Доступен как общий список, так и списки по категориям.
— При выборе канала, он сканируется на доступность. Статус отображается в диалоговом окне
— Исправлены баги со списком избранных каналов
— Добавлена функция поиска по каналам
— Добавлены справки на двух языках: Русский, Английский
— Добавлены множество мелких исправлений.
Буду рад если протестируете и дадите обратную связь.
Всем кто читает про проект первый раз в кратце расскажу:
Приложение представляет собой каталог каналов со всего мира рассортированных по категориям: Страны, Категории, Языки и Регионы. Всего порядка 7000 каналов.
В приложении нет встроенного плеера. Дополнительно требуется установить один из трех предложенных: VLC, BS или MPV
Проект был и останется некоммерческим. Нет рекламы и встроенного платного контента.
Делаю для себя и для вас.
Работает под Android. Может быть установлена как на телефон так и на телик с android на борту.
Актуальную, не опубликованную в маркете версию можно скачать по ссылкам:
Буду рад позитивному отзывы на маркете. Ну и свои пожелания и комментарии не забывайте. Эо помогает в развитии.

Как получить доступ к Bing AI?
Bing c GPT-4 стал доступен всем. Больше не нужно сидеть в списке ожидания. Рассказываем, как воспользоваться новым ботом без регистрации и смс.
Инструкция, как воспользоваться:
Включите VPN.
Из РФ, как обычно, не работает;
Откройте браузер Edge
Работает только через него. Edge — это браузер от Microsoft;
Войдите в учетную запись Microsoft;
В этом браузере откройте https://www.bing.com;
В меню выберите «Чат» и нажмите «Присоединиться к списку ожидания»;
Никакого ожидания не будет, вы сразу сможете воспользоваться ботом.


WorldTV Client — Обновление

Приветствую всех любителей моей поделки и всех пикабушников в целом.
Давненько я не писал статьи о приложении.
На днях упал сервак снабжающий приложение ссылками на каналы, плейлисты перестали формироваться да и открываться тоже перестали.
Сейчас все собрано на новом сервере. Приложение работает, но находится в режиме тестирования на стабильность. Единственное не работает это кнопка «All Playlist» но это тоже в скором времени починю.
Прошу потестить и отписаться все ли нормально.
Для тех кто не зном с приложением. Кратко расскажу.
Приложуха представляет из себя клиент для формирования и воспроизведения плейлистов нужных тематик. Скажем: Кино, каналы на Русском языке или другом языке и так далее.
Всего в базе более 7000 каналов со всего мира.
Работает под Android. Может быть установлена как на телефон так и на телик с android на борту.
Проект не коммерческий. Делаю для себя и для вас. Все бесплатно и без рекламы.
Буду рад позитивному отзывы на маркете. Ну и свои пожелания и комментарии не забывайте. Эо помогает в развитии.

Предварительный выпуск Android 14

Компания Google представила первую тестовую версию открытой мобильной платформы Android 14. Релиз Android 14 ожидается в третьем квартале 2023 года. Для оценки новых возможностей платформы предложена программа предварительного тестирования. Сборки прошивки подготовлены для устройств Pixel 7/7 Pro, Pixel 6/6a/6 Pro, Pixel 5/5a 5G и Pixel 4a (5G).
Продолжена работа по улучшению работы платформы на планшетах и устройствах со складными экранами. Обновлены рекомендации по разработке приложений для устройств с большими экранами и добавлены типовые шаблоны интерфейса для больших экранов, учитывающие такие применения, как социальные сети, коммуникации, мультимедийный контент, чтение и совершение покупок. Предложен предварительный выпуск Cross device SDK с инструментами для разработки приложений, корректно работающих с разными типами устройств (смартфоны, планшеты, умные телевизоры и т.п.) и разными форм-факторами.
Проведена оптимизация координации выполнения ресурсоёмких фоновых работ, таких как загрузка больших файлов при наличии Wi-Fi-соединения. Внесены изменения в API запуска приоритетных сервисов (Foreground Service) и планирования задач (JobScheduler), в которые добавлена новая функциональность для запускаемых пользователем работ, связанных с передачей данных. Введены требования по указанию типа запускаемых приоритетных сервисов (работа с камерой, синхронизация данных, воспроизведение мультимедийных данных, отслеживание местоположения, доступ к микрофону и т.п.). Упрощено определение условий активации загрузки данных, например, для загрузки только при доступе через Wi-Fi.
Внутренняя система доставки широковещательных сообщений приложениям (broadcast system) оптимизирована для снижения энергопотребления и повышения отзывчивости. Улучшен приём приложениями зарегистрированных потоков сообщений — сообщения могут помещаться в очередь, объединяться (например, серия сообщений BATTERY_CHANGED будет агрегирована в одно) и доставляться только после выхода приложения из кэшированного состояния.
Использование в приложениях функции выполнения операций в точное время (exact alarms) теперь требует получения отдельного полномочия SCHEDULE_EXACT_ALARM, так как применение данной функциональности может негативно влиять на время автономной работы и приводить к повышенному потреблению ресурсов (для заданий, выполняемых по расписанию, рекомендуется использовать активацию в приблизительное время). Приложениям с реализацией календаря и часов, использующим активацию в точное время, при установке должно быть предоставлено полномочие USE_EXACT_ALARM. Публикации в каталоге Google Play приложений с разрешением USE_EXACT_ALARM допускается только для программ с реализацией будильника, таймера и календаря с уведомлениями о событиях.
Расширены возможности масштабирования шрифтов, максимальный уровень масштабирования шрифта увеличен со 130% до 200%, а для того, чтобы текст при большом увеличении не выглядел слишком большим автоматически теперь применяется нелинейное изменение уровня масштабирования (уже большой текст увеличивается не так сильно, как мелкий).
Предоставлена возможность указания настроек языка, привязанных к отдельным приложениям. Разработчик приложения теперь может изменять параметры localeConfig через вызов LocaleManager.setOverrideLocaleConfig для определения списка языков, показываемых для приложения в интерфейсе настройки Android.
Добавлен API Grammatical Inflection для упрощения добавления переводов элементов интерфейса, учитывающих языки с системой родов.
Для предотвращения перехвата вредоносными приложениями intent-запросов в новой версии запрещена отправка intent-ов без явного указания пакета или внутреннего компонента.
Повышена безопасность динамической загрузки кода (DCL, Dynamic Code Loading) — для избежания подстановки вредоносного кода в динамически загружаемые исполняемые файлы, данные файлы теперь должны иметь права доступа, допускающие только чтение.
Запрещена установка приложений, для которых заявлена версия SDK ниже 23, что позволит блокировать обход ограничений полномочий через привязку к старым API (версия API 22 запрещена, так как в верcии 23 (Android 6.0) появилась новая модель управления доступом, позволяющая на лету запросить доступ к системным ресурсам). Установленные ранее приложения, использующие старые API, после обновления Android продолжат свою работу.
Предложен API Credential Manager и реализована поддержка технологии Passkeys, позволяющей пользователю проходить аутентификацию без паролей с использованием биометрических идентификаторов, таких как отпечаток пальца или распознавание лица.
В Android Runtime (ART) реализована поддержка OpenJDK 17 и предоставляемых в данной версии языковых возможностей и Java-классов, в том числе классов типа record, многострочных строк и сопоставления c образцом в операторе «instanceof».
Для упрощения тестирования работы приложений с учётом изменений в новой версии Android, разработчикам предоставлена возможность выборочного включения и отключения отдельных новшеств через секцию Developer в конфигураторе или утилиту adb.
5 Способов Как Оплатить Google Play В России В 2023 году
От Редакция Последнее обновление Апр 27, 2023

Как оплатить Google Play из России после блокировки
Пожалуй каждый владелец смартфона на платформе Android сегодня задаётся вопросом о том, как оплатить Google Play в России после блокировки популярных платёжных средств Visa и MasterCard. В этом материале мы подробно расскажем как легко оплатить покупки Гугл Плей после санкций, включая оплату игр и программ, подписки на сервисы YouTube Premium, Google Drive, G Suite, Google Workspace, Google Ads при помощи банковской картой зарубежного банка, подарочной картой и другими способами, доступными Россиянам в 2023 году.
Из-за комплексных ограничений со стороны компании Google и платёжных систем Visa и MasterCard, Российским пользователям стало проблематично скачивать платные приложения из популярного маркетплейса. Однако, данную проблему всё же можно решить, и в этом материале мы подробно расскажем, как можно оплатить сервисы Гугл Плей в России.
Как оплачивать покупки Google Play в 2023 году?
Не смотря на то, что загрузка платных приложений для устройств на базе ОС Android заметно усложнилась, в Сентябе 2023 года всё ещё существует несколько способов оплаты в Google Play, в т.ч.: при помощи банковских карт зарубежных банков, с использованием подарочных карт, или через альтернативные маркетплейсы для приложений вроде AppGallery, где так же можно оплатить покупки и подписки.

Оплата сервисов Google с помощью банковской карты
1. Оплата Google Play картой зарубежного банка
Платить за программы и подписки Google Play в 2023 году особенно удобно при помощи зарубежной банковской карты. Существуют различные онлайн-сервисы, позволяющие выпустить физическую или виртуальную карту иностранного банка в системах VISA и MasterCard, которую можно привязать к Google Pay для оплаты игр, приложений или подписок.
Помимо виртуальной карточки зарубежного банка, для оплаты Гугл Плэй вам потребуется приложение VPN для смены вашей географической локации на другую страну. В противном случае, если вы попытаетесь оплатить с Российского IP – система Google просто не позволит вам это сделать.
Обзаведясь зарубежной картой и VPN вы можете оплатить сервисы Google, проделав следующие шаги:
- Включите программу VPN на вашем устройстве. В настройках VPN выберите страну, где была выпущена ваша зарубежная карта. Если вы создали виртуальную карту через какой-либо онлайн-сервис, и не уверены в её географической принадлежности, то это можно проверить при помощи онлайн-сервиса поиска банка по BIN карты, введя первые 6 цифр номера карты.
- Войдите в ваш аккаунт Google и выберите раздел «Настройки» профиля.
- Перейдите в раздел «Общие» настройки.
- Откройте раздел «Настройки аккаунта и устройства».
- Выберите «Страна и профили».
- Из открывшегося списка требуется выбрать страну, соответствующую вашей карте и настройкам VPN.
- Укажите адрес в стране, где была получена карта.
- Завершите привязку карты.
Если у вас ещё нет виртуальной карты зарубежного банка, то создать такую карту очень просто, воспользовавшись сервисом PST (Pay Store Transfer), который позволяет моментально открыть виртуальные карточки Visa и MasterCard, пригодные для любых целей, в том числе для подписок и покупок приложений и игр в сервисах Google. Всё, что необходимо сделать – это, отправить заявку на создание карты, и она моментально станет доступна для в вашем личном кабинете.

Подарочные карты Google Play разных стран
2. Оплата подарочной картой Google Play
Доступ к платным сервисам магазина Google Play можно получить пополнив баланс с помощью заранее приобретённой подарочной карты, однако, так же как и в случае с зарубежными банковскими картами вам потребуется использовать VPN-сервис для входа в учётную запись Google и активации карты. Настройки геолокации VPN следует производить в соответствии с той страной, где была выпущена ваша подарочная карта Google Play.
Где купить подарочную карту Google Play в 2023 году:
-
– полностью русскоязычный сайт с широким выбором подарочных карт разного номинала с оплатой из России – принимаются карты Мир, оплата через Сбербанк Онлайн, ЮМани, Qiwi, Webmoney, Альфа-банк, Тинькофф, карты Visa и MasterCard зарубежных банков, криптовалюты USDT, Биткоин, Эфир, Litecoin и другие удобные способы. Сейчас в основном представлены подарочные карты Google Play из Турции, США, Бразилии, Германии и некоторых других стран, однако на сервисе регулярно происходит добавление новых товаров. – русскоязычный магазин по продаже карт Google Play, – доступно около 20 (!) вариантов карт. Покупку можно оплачивать рублями по карте МИР, или с помощью Сбер Онлайн, ЮMoney, Киви, Вебмани, через банки Альфа-банк и Тинькофф, картами Visa и MasterCard зарубежных банков, криптовалютами и многими другими способами. – предлагает более 100 вариантов подарочных карт Google Play из разных стран с возможностью оплаты заказа картами Юнион Пэй, Bitcoin, Skrill, Visa, MasterCard, PayPal и другими способами. Кроме того представлены карты для оплаты Steam, XBox, PlayStation и множества игровых проектов. – покупайте подарочные карты Google Play разных стран за криптовалюту, в том числе Tether USDT (TRC-20, ERC-20), Bitcoin, Ethereum и многие другие.
Как активировать подарочную карту Google-сервисов:
- Откройте приложение Google Play.
- Нажмите на значок вашего профиля в правом верхнем углу экрана.
- Выберите раздел «Платежи и подписки».
- Нажмите на кнопку «Использовать подарочный код».
- Введите код вашей подарочной карты и подтвердите активацию.

Оплата со счёта мобильного номера
3. Оплата Google Play со счёта мобильного номера
Оплата подписок и покупка приложений в Google Play при помощи мобильного номера всегда была одним из самых быстрых и удобных способов оплаты, однако теперь вносить плату за услуги и сервисы «корпорации добра» Google при помощи этого способа нельзя.
А как дело обстояло до санкций? – спросите вы. До запретов и ограничений оплату со счёта мобильного номера могли вносить абоненты провайдеров «Билайн», «Мегафон» и «МТС». Остальные операторы мобильной связи, такие как «Теле2», «Ростелеком» или «Тинькофф Мобайл» не поддерживались и перед ограничениями.
4. Использование альтернативных маркетплейсов
В качестве альтернативного способа, оплатить подписки на платных сервисах можно например использовать маркетплейс AppGallery от компании Huawei. На сегодняшний день в AppGallery имеется более 1 млн. приложений, включая, к примеру, приложения большинства российских банков – Сбера, Тинькофф, ВТБ, сервисы от Яндекса, и, конечно, популярные игры: Cyber Hunter, HeroWars, State of Survival и многие другие.
AppGallery поддерживает функцию оплаты при помощи Российской банковской карты МИР, Visa и MasteCard, через мобильные платежи для абонентов «Мегафон», «Билайн», «Теле2», «МТС» и «Yota», а так же при помощи электронного кошелька платёжной системы Qiwi.
Для оплаты в AppGallery добавьте банковскую карту, оператора связи или другой способ оплаты, проделав следующие шаги:
- Загрузите приложение AppGallery с официального сайта, после чего произведите установку и примите условия использования.
- Загрузите утилиту HMS Core (Huawei Mobile Services) и создайте новый профиль AppGallery.
- В разделе «Платежи и покупки» добавьте способ оплаты выбрав раздел «Банковские карты», «Мобильный платёж» или «Qiwi» и задайте пароль.
- Теперь вы можете совершать любые покупки и офомлять подписки на приложения и игры доступные в AppGallery.
Оплачивать покупки со счёта мобильного номера можно при условии, что ваш тарифный план имеет поддержку мобильных платежей (можно уточнить у поддержки вашего оператора).

Оплата Google Play при помощи Paypal
5. Оплата в Google Play через кошелёк Paypal
Google Play предоставляет возможность покупать приложения и цифровой контент с помощью кошелка PayPal, однако данный способ так же является проблематичным для Россиян ввиду санкционных ограничений. Вы можете настроить работу аккаунта Пэйпал, ознакомившись с нашим материалом: как привязать карту и пополнить баланс Paypal из России в 2023 году.
Что важно знать при оплате Гугл Плэй через Пэйпал:
Если на вашем аккаунте Пэйпал активирован ключ безопасности, то вам необходимо добавить Пэйпал в аккаунт Google Play через интернет-браузер на компьютере или смартфоне. Однако, это невозможно сделать через приложение “Play Маркет”. Чтобы привязать аккаунт PayPal в качестве платёжного средства, вставьте ссылку play.google.com/store/account в адресную строку браузера (например, Google Chrome, Firefox или Safari) и выберите “Добавить способ оплаты”. После этого вы сможете оплачивать покупки в “Play Маркет” и на сайте Google Play при помощи платёжной системы PayPal.
В остальном, оплата сервисов Google через Пэйпал не сильно отличается от оплаты при помощи банковской карты, подарочной карты или баланса мобильного номера.
Лучшие зарубежные карты для оплаты Google Play в России
В этом разделе мы рассмотрим виртуальные и физические банковские карты, пригодные для оплаты сервисов Гугл Плэй, в том числе игр, приложений, подписок Google Drive, Google G Suite, Google Workspace, Google For Business, YouTube Premium, Google One и других.
Официально Google Play поддерживает дебитовые и кредитные карты, работающие в системах: American Express, Discovery, JCB, MasterCard, Visa и Visa Electron. Далее представлены наиболее удобные платёжные операты, позволяющие моментально оформить карты этих систем в дистанционном режиме.

Выпустить платёжную карту PST
1. Банковские карты PST (Pay Store Transfer)
Платёжная система PST (Pay Store Transfer) позволяет выпускать универсальные виртульные платёжные карты VISA с бинами Американских банков, пригодные для привязки к различным сервисам и оплаты на подписок и приложений. Данные карты можно использовать для широкого круга целей, в том числе для совершения любых онлайн-покупок, подписок, оплаты рекламы и т.д.
Выпуск карты можно осуществить моментально, – оформите заявку на выпуск виртуальной карты VISA и её реквизиты сразу станут доступны в вашем личном кабинете.
Примеры доступных для заказа карт:
- 3DS Universal (VISA). Универсальная долларовая карта для совершения транзакций любого типа, с повышенной степенью безопасности 3D Secure.
- Universal Card (VISA). Долларовая карта для совершения любого типа операций, схожая с предыдущей из списка, но без функции 3D Secure.
- Advertisement Card (VISA). Долларовая карта, специально разработанная для оплаты рекламы на платформах онлайн рекламы, таких как Google Ads и прочих.
После регистрации в системе, для вашего аккаунта будет открыт персональный счёт в Долларах США (USD) и Евро (EUR), который будет работать в связке с выпущенными картами. Кроме фиатных валют, система позволяет использовать счета криптовалютах, таких как Bitcoin (BTC) и Tether (USDT).
Для пополнения счёта можно использовать различные способы, в том числе:
- Банковские карты Visa и MasterCard, а так же в скором времени планируется поддержка карт МИР, Union Pay, American Express и других.
- Криптовалюту Tether (USDT) в сетях TRC-20 и ERC-20, USD Coin (USDC), DogeCoin (DOGE), Bitcoin (BTC), Ethereum (ETH), Dash (DASH), Litecoin (LTC). Если вы ещё не знакомы с миром криптовалют, тогда у нас есть отдельный материал о том, как купить криптовалюту в России в 2023 году.
- Банковский перевод SWIFT, ACH, SEPA
- Платёжные системы Wise, Capitalist, QIWI, WebMoney, AdvCash, Perfect Money, Payeer, Skrill
Вывод средств с платформы можно так же осуществить при помощи карты, или отправкой на адрес криптовалютного кошелька.
Достоинства карт PST:
- Выпуск первой карты без идентификации личности (без KYC).
- Моментальный выпуск карты без необходимости ожидания.
- Возможность выбора BIN’a выпускаемой карты из доступных.
- Нет ограничения на количество выпускаемых карт (для верифицированных пользователей).
- Доступны карты с функцией 3D Secure, позволяющие оплачивать покупки где угодно.
- Русскоязычный интерфейс (язык переключается в личном кабинете).

Виртуальные платёжные карты Capitalist
2. Карты Capitalist MasterCard
Система расчётов Capitalist зарегистрирован на Британских островах, поэтому продолжает работать, несмотря на международные санкции.
После регистрации в системе, для вашего аккаунта будут открыты персональные счета в различных валютах, включая фиатные и криптовалюты: Российский Рубль (RUB), Доллар США (USD), Евро (EUR), Биткоин (BTC), Ethereum (ETH) и Tether (USDT).
Преимущества карт Capitalist:
- Пополнение счёта с помощью рублёвой карты МИР.
- Моментальный выпуск виртуальной карты MasterCard.
- Мультивалютный счёт.

Виртуальные карты VISA и MasterCard от AdvCash
3. Физические и виртуальные банковские карты AdvCash
Электронная платёжная система Advanced Cash работает по принципу виртуального кошелька, имея множество дополнительных функций включая:
- Выпуск физических и виртуальных карт Visa, MasterCard, Union Pay. Карты AdvCash удобны для снятия наличных в банкоматах за рубежом, оплаты покупок в магазинах и сети интернет, а так же для оформления подписок и привязки к различным платёжным сервисам.
- Быстрые банковские переводы, в т.ч. поддержка SEPA.
- Обмен криптовалюты.
Баланс карты будет привязан к внутреннему счёту в системе в любой из валют на выбор: Рублях (RUB), Долларах США (USD), Евро (EUR), Турецких Лирах (TRY), Фунтах Стерлингов (GBP), Казахских Тенге (KZT), Вьетнамских Донгах (VND), Бразильских реалах (BRL) или другой валюте.
Достоинства платёжных карт AdvCash:
- Дистанционный выпуск карты.
- Бесконтактная оплата.
- Бесплатная доставка карты.
- Возможность снятия с карты наличных денег.
- Русскоязычный интерфейс системы и служба поддержки.
Вопросы и ответы
В данном разделе собраны наиболее частые вопросы читателей относительно оплаты Гугл Плэй из России после санкций, в т.ч. обход блокировок.
Как поменять страну в Google Play?
Для того, чтобы изменить вашу страну в Google Play, проделайте следующие действия:
- Откройте приложение Play Store на вашем устройстве.
- Нажмите на значок профиля в правом верхнем углу экрана, рядом с полем поиска.
- В открывшемся окне перейдите в раздел Настройки -> Общие Настройки -> Страна и профили.
- Выберите желаемую страну.
Перед изменением страны лучше всего настроить VPN сервис на соответствующую страну.
Как убрать сообщение «недоступно в вашей стране» в Google Play?
Сообщение «недоступно в вашей стране» может быть вызвано как санкционными, так и другими причинами. Для того, чтобы обойти данное ограничение, следует воспользоваться VPN сервисом для смены IP адреса. Однако данная мера не может гарантировать быстрого решения данной проблемы, т.к. иногда приходится долго эксперементировать, выставляя в настройках VPN разные страны.
Как изменить способ оплаты в Google Play?
Если у вас возникла проблема с текущим способом оплаты, или вы хотите произвести покупку в «Google Маркет» при помощи иного платёжного средства, проделайте следующие шаги:
- Войдите в приложение Play Store.
- Найдите желаемое приложение и откройте страницу с деталями
- Нажмите кнопку на которой указана стоимость.
- Нажмите на текущий способ оплаты.
- Выберите другой способ оплаты из списка или добавьте новый способ оплаты.
Как можно платить в Google Play без банковской карты?
Для оплаты Google Play без карты доступны следующие альтернативные способы:
- Оплата с мобильного номера.
- Оплата при помощи подарочной карты.
- Оплата через PayPal.
- Другие способы в зависимости от выставленной в настройках страны.
Как теперь оплачивать приложения в Google Play?
В настоящее время для покупки приложений в Google Play следует использовать VPN сервис для смены IP адреса на другую страну и оплаты услуг в обход блокировок. Помимо того, при выборе способа оплаты следует учитывать тот факт, что пластиковые карты МИР, а так же ранее выпущенные в России Visa и MasterCard утратили свою работоспособность. Для оплаты приложений и другого цифрового контента следует пользоваться: виртуальными картами, подарочными картами или другими способами, приведёнными выше в этом материале.
Учтите, что для оплаты игр, программ, подписок и других товаров в Google Play нельзя использовать:
- Банковские переводы
- Western Union
- Money Gram
- Транспортные карты
Как добавить новый способ оплаты в Google Play?
Для добавления нового способа оплаты в Google Play, произведите следующие действия на вашем устройстве:
- Войдите в приложение Google Play.
- Кликните на значок профиля в правом верхнем углу экрана.
- В появившемся окне выберите раздел Платежи и подписки -> Способы оплаты -> Другие варианты.
- Нажмите на ссылку Изменить, расположенную под текущим способом оплаты.
- Добавьте новый способ оплаты.
- Сохраните изменения.
Как оплатить аккаунт разработчика Google Play?
Разработчики приложений так же как и простые пользователи пострадали из-за санкционных мер, введённых странами Запада против России. Ранее, для оплаты аккаунта разработчика можно было использовать отечественные банковские карты, в т.ч. виртуальные. После регистрации нового разработчика, система Google Play требует оплатить единовременный взнос в размере 25 Долларов США.
Официально поддерживаемые способы для оплаты, из документации Google:
- Mastercard
- Visa
- American Express
- Discover (только США)
- Visa Electron (за пределами США)
Сейчас некоторые создатели приложений прибегают к использованию банковских карт, открытых за рубежом. Например, популярным способом является оплата аккаунта разработчика картами банков Казахстана и Киргизии.
Помимо оплаты аккаунта, в дальнейшем разработчики могут столкнуться с дополнительными вопросами:
- Необходимость открытия счёта в Долларах США, с возможностью получения средств из заграницы. Естественно, что при текущей ситуации, счета в санкционных Российских банках не подойдут.
- Для рекламы продукта потребуется создать аккаунт в системе Google AdMod, в котором так же потребуется приложить усилия для обхода блокировок при оплате.
Карты каких Российских банков работают с Google Play в 2023 году?
До всем известных событий, в магазине приложений Google Play можно было использовать практически любые банковские карты VISA и MasterCard выпущенные в России, в т.ч. карты от Сбербанка, ВТБ, Тинькофф, МТС Банка, Альфабанка и других.
Однако начиная с 10 марта 2022 года Google Play, как и подавляющая часть других зарубежных провайдеров, остановила обслуживание Россиян, поэтому сегодня приходится искать альтернативные пути для оплаты и привязки карт к сервисам Google.
Для оплаты Google Play в 2023 году Россияне чаще всего используют:
- Виртуальные банковские карты VISA и MasterCard с иностранными бинами.
- Физические дебетовые и кредитные банковские карты VISA, MasterCard, American Express и Maestro, выпущенные за границей.
- Оплату при помощи подарочных карт.
- Оплату через зарубежный аккаунт PayPal.
Помимо использования заграничных платёжных средств, есть дополнительные рекомендации по оплате Play Store и других сервисов Google из России:
- Используйте VPN сервисы для доступа к сервисам Google, иначе система может не дать провести транзацию даже если вы сменили страну в настройках аккаунта.
Как добавить карту МИР для оплаты Google Play в 2023 году?
Использование карты МИР для приобретения цифровых товаров в Google Play всегда являлось самым востребованным способом при осуществлении оплаты в маркетплейсе. Сегодня не уменьшается количество вопросов от пользователей, относительно использования карточек МИР в качестве способа оплаты в аккаунте Google.
Платёжная система Mir Pay, наряду с банковскими картами системы МИР принимается в маркетплейсах Huawei App Gallery и RuStore, однако привязать эти способы оплаты к Google Play в 2023 году не получится. Это касается и популярных кобейджинговых карт, работающих в системах МИР – Юнион Пэй.
Как оплатить Google Play через Qiwi?
Оплата сервисов Play Market через кошелёк Киви, некогда было одним из наиболее удобных способов, доступных в нашей стране. Сегодня напрямую осуществить платежи через внутренний счёт QIWI или при помощи виртуальной карты системы уже не получиться, так как данные платёжные средства попали под блокировку.
Поэтому, в случае необходимости оплаты через Qiwi, можно прибегнуть к таким способам:
- Купить криптовалюту за рубли со счёта Qiwi и далее приобрести подарочную карту Google Play.
- Открыть виртуальную карту зарубежного банка с пополнением через Qiwi, и использовать её для привязки к Google Play.
Заключение
В 2023 году для того, чтобы оплатить приложения и игры в магазине Google Play наиболее удобно использовать связку: виртуальная карта зарубежного банка + VPN сервис. Кроме того, можно оплачивать сервисы Google при помощи подарочных карт Google Play или зарубежного счёта PayPal, однако в любом случае потребуется подключение к VPN для смены IP адреса.