RETRO MOBILE
3 поста
3 поста
Обычно Android-устройства принято считать "бесполезными" через 5-10 лет после выхода. Особенно, это касается бюджетных моделей, которые "не тянут" современные сервисы или те девайсы, которые по каким-то причинам физически пострадали в процессе своей жизни. Но пока одни выкидывают смартфоны и планшеты, считая их электронным хламом и засоряя мир, другие стараются найти применение всему подряд и оказывается, что Android-устройства ещё вполне себе могут оказаться полезными. Однако порой необходимо реализовать автоматическое включение устройства при подключения к зарядке и вот здесь многие впадают в ступор - ведь замкнуть кнопку включения зачастую недостаточно! В сегодняшнем материале я расскажу свои кейсы запитывания устройств от блоков питания, а также реализацию автовключения на разных чипсетах. Интересно? Тогда добро пожаловать под кат!
Вероятно, читатель спросит мол "зачем 10-летние Android устройства могут быть нужны?". И если немного призадуматься, то можно прийти к выводу, что действительно гаджеты прошлых лет могут быть достаточно полезными во многих сферах, причём не только планшеты, но и Android-смартфоны. И помимо реализации чего-то "стандартного" на манер красивых Android-часов с будильником или, например, мультимедиа станции а-ля iPod, есть ещё множество интереснейших кейсов, в которых можно использовать такие устройства. Я лично собрал для себя несколько:
HMI-панель: это умные программируемые дисплейные модули, которые могут выводить ту или иную информацию с микроконтроллеров или любых других устройств на экран. Благодаря 10-дюймовому планшету можно сделать очень удобное переключение режимов работы каких-то устройств, либо сделать показ информации с различных датчиков в помещении в реальном времени. Никто не мешает и в машину такой планшет поставить для сбора информации о двигателе.
У Android-устройств перед классическими HMI-дисплеями есть огромное преимущество: наличие 3D-ускорителя и возможность выводить красивые визуалиации и графики, а также анимацию. В будущем проекте со своей машиной - "ВАЗ 2110", я покажу как использовать планшет в таких целях на практике.
Сбор данных: у микроконтроллеров слишком маленький объем встроенной Flash-памяти, чтобы хранить какие-то большие датасеты и строить из них статистику. Конечно можно подключить MicroSD... но ведь ко всем сразу не будешь по отдельной флэшке подключать, да и MicroSD отнюдь невечные при постоянной перезаписи данных - и здесь приходит на помощь такой планшет. eMMC обычно значительно более выносливая через MicroSD, с неё можно достать данные (при отсутствии шифрования), а мощный процессор планшета вполне может ещё и обрабатывать приходимые данные и куда-то отправлять. Вполне полезно!
Использование как одноплатника: я писал об этом недавно статью. Во многих бюджетных планшетах разведен UART на плате, к которому есть доступ из пользовательского окружения и даже Java-приложений! Таким образом, можно общаться с микроконтроллерами по проводному интерфейсу, или напрямую дергать ножками микроконтроллера реализовав прошивку-прослойку для МК.
Нестандартные применения: ну, тут я просто хотел похвастаться своим проектом с превращением планшета в игровую консоль с помощью внешнего микроконтроллера :)
Так что, как мы с вами видим, устройства прошлых лет отнюдь не бесполезны и при определенной смекалке мы можем им дать вторую жизнь и приспособить для работы на каком-нибудь объекте. Понятное дело что что-то серьёзное на них никто вешать не будет, но например панель заказа нямки в чебуречной или что-то на манер ГУ в машине - почему бы и нет?
Однако порой возникает задача реализовать авто-старт устройства при подключении смартфона к зарядке или вообще реализация автономной схемы питания. Автономная схема питания реализуется относительно легко: порой можно кинуть 5В от блока питания на VBat (плюсовой и минусовой контакт АКБ) напрямую. КП у MediaTek, имеют пороговое напряжение на аккумуляторе до 5.5-5.6В и не выгорают. Но это рискованно, если БП плохой и произойдет скачок - есть шанс того, что окажется пробитой обвязка/КП/ключи (вход со стороны USB обычно защищен от такого). Лучше всего использовать DC-DC преоразователь на ~4.2В с током от 1.5-2А.
А вот с авто-стартом вопрос интереснее. Всё зависит от реализации этой самой кнопки включения и от чипсета: например, на смартфонах Sony с чипами Qualcomm иногда достаточно лишь сдуть кнопку включения и замкнуть её контакты перемычкой: всё будет работать без каких-либо проблем. Но на некоторых смартфонах, зажатая кнопка включения будет уводить устройство в циклический ребут каждые 10 секунд, что может быть неприемлемо.
Несколько месяцев назад, читатель под ником @A1f подогнал мне китайский iPhone 7 Plus на Android - всё как я и люблю :) Девайс был рабочий, однако после того, как читатель отдал его в сервис, у него по каким-то причинам потерялось пару винтов, оказалась сломана кнопка включения на шлейфе, а смартфон не заряжался...
Ну, с зарядкой вопрос я решил быстро: китайские айфоны иногда используют свои "Lighting'и", несовместимые с оригиналом и которые не могут заряжатьоригинальный айфон. Благо в комплекте был пожухлый оригинальный кабель, который я разобрал и припаял всё обратно. Теперь и USB, и зарядка работают нормально!
С кнопкой вопрос был интереснее: хотя найти такую на шлейфе и кинуть с неё перемычки - дело 5 минут, я лёгких путей не искал и решил сделать автостарт при подключении к зарядке - как и на оригинальном айфоне :)
И, как вы уже поняли, просто так поставить перемычку на контакте Power и массу не получится - смартфон будет постоянно уходить в ребут. Поэтому я сдампил загрузчик с помощью SP Flash Tool и начал ковырять его в IDA Pro, благо устройство не требует разблокировки этого самого загручзика. Способ рабочий для многих устройств на MediaTek, в том числе и некоторых 67xx (возможно придется разблокировать загрузчик), а на устройствах с другими чипсетами алгоритм может быть +- похожим, но если нет возможности напрямую вмешаться в загрузчик, можно сделать авто-загрузку патчем boot.img.
Для реализации автозагрузки, необходимо пропатчить загрузчик. В устройствах на чипсетах MediaTek их два - первый Preloader, который занимается первичной инициализацией периферии и ОЗУ, а второй - lk, который инициализирует дисплей, грузит ядро Linux и передаёт ему управление. В сети уже давно лежат слитый исходный код и Preloader, и lk, так что с их изучением проблем не возникнет, идея общая у всех устройств.
Итак, что-же происходит при включении смартфона? lk определяет так называемый режим загрузки, в зависимости от которого меняется раздел, с которого грузится ядро (boot или recovery), а также параметры передаются ядру (atags). В процессе работы lk и перед загрузкой ядра, перед тем как показать анимацию зарядки, загрузчик проверяет нажата ли кнопка включения - и если да, то быстренько перезагружает устройство в обычный режим.
Да, всё так легко! Таким образом, нам остаётся лишь пропатчить условие с проверкой кнопки включения, дабы смартфон считал что кнопка нажата тогда, когда она по факту не нажата. В IDA Pro, lk загружается с смещением памяти в 0x0, а найти нужную инструкцию нам поможет зацепка в виде отладочной строки. IDA Pro сразу строит все xref'ы и обращения к строкам, так что найти нужные данные не составит труда. Ищем "[%s] PowerKey Pressed in Kernel Charging Mode Before Jumping to Kernel, Reboot Os" и смотрим все обращения к адресу памяти, с которого начинается строка.
Чуть выше метода вызова printf, можно найти наше условие, которое начинается с инструкции CMP R0, #0. Сразу после него идёт инструкция BNE, которая бранчит код и продолжает загрузку системы в режиме "зарядки". Нам остаётся лишь заменить её на NOP в hex-редакторе в той-же IDA Pro и система сразу после попытки включится в режиме зарядки уйдет в ребут и перезагрузится в обычном режиме, будто мы просто включили смартфон с кнопки!
Прошиваем наш новый lk:
И видим, что всё работает! :)
Если возможности пропатчить загрузчик нет, в дело вступает второй способ, заключающийся в патче boot.img - раздела с ядром устройства и ramdisk'ом, в котором содержаться скрипты для инициализации устройства (*.rc). Всё дело в том, что даже при зарядке смартфон загружает ядро Linux, первоначальный рамдиск и в зависимости от режима загрузки запускает либо app_process (главныйй процесс в Android), стартуя загрузку системы, либо специальную программу, которая часто называется charger и находится в /system/bin/ (иногда в самом boot.img).
На смартфонах с разными чипсетами реализация этого способа может сильно отличаться, однако приведу пример с смартфонами Sony Erisson из 2011 года (у меня есть Xperia Play с сломанной кнопкой включения). Там устройство начинает выполнение скрипта init.rc, тот в свою очередь запускает init.semc.rc и на этапе инициализации запускает программу chargemon, которая выводит анимацию зарядки, отключает смартфон, если кабель вытащили и слушает нажатие кнопки включения, продолжая процесс загрузки, если пользвоатель зажал кнопку включения. Соответственно, весь фикс - закомментировать эту строку :)
#exec /system/bin/chargemon
В случае MTK, можно попробовать ещё пропатчить init.rc, дабы он продолжал загрузку системы даже в случае подключения кабеля в режиме зарядки. Способов много, главное проявить смекалку и не бояться разбираться в чём-то непонтяном :)
Как видите, ничего сложного в реализации автоматического старта устройства нет. Где-то можно обойтись перемычкой на кнопку включения, где-то патчем boot.img, а где-то и патчем загрузчика. Но тем не менее, это вполне возможно на практике и позволяет делать такие приколюхи, как я со своим китайским айфоном :)
Надеюсь, материал вам был интересен и полезен! Пишите, нужно ли вам было реализовать что-то подобное и как это делали в комментариях!
Друзья, если у вас есть подобные китайчики и вы не разделяете желания пытаться вдохнуть в них жизнь, но выбрасывать их жалко — можете задонатить их мне :) Как сами видите — девайсы попадают в хорошие руки. Из недавнего — я взял нерабочую, утопленную китайскую копию 14 Pro Max из под СЦ в качестве основного смартфона. Также у меня есть канал в Telegram, куда я выкладываю бэкстейджи статей, различные заметки о ремонте, моддинге, программировании и реверс-инжиниринге и свои мысли, а также ссылки на свои новые статьи и видео. Кому интересно — залетайте!
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!
А новая статья выйдет завтра :)
Придется погреть гпу. Сервисмены наверняка скажут мол "ты чо прогреваст, очешуел?", но здесь это допустимо. Напоминаю, что это макбук на платформе PowerPC, дискретка ему необходима, встроек в чипсетах этой платформы не было (вроде). Устройство вышло в 2001 году, тогда пока ещё чипы (тем более такие, как ATI Rage - GPU родом из конца 90х) производили с свинцовыми бга-шарами, в т.ч и от кристалла к подложке. Но по каким-то причинам, со временем нарушался контакт подложки к плате и гпу отваливался, помогала именно перекатка (судя по сообщениям олдов на форумах тех лет). Мне пока-что поиграть в бильярд нечем (нет таких больших трафаретов), поэтому побуду прогревастом и хорошо погрею, если повезет - оживет и будет работать ещё долгое время.
Как читатель предложил его подогнать, я сразу загорелся и полез изучать схему, думая как ща буду сидеть вызванивать шлейф, вызванивать линии до лвдс и т.п... а тут типовуха оказывается (но это не точно) :)
Рубрика «сам себе экосистема» уже успела стать постоянной в моем блоге. Для тех, кто читает меня в первый раз, расскажу: одним из основных направлений блога всегда был моддинг и попытка использования устройств прошлых лет в современных реалиях. Именно поэтому я пишу клиенты нужных мне сервисов с нуля, дабы иметь возможность пользоваться такими замечательными смартфонами, как Xperia Pro, Xperia Play, Desire Z и конечно же Motorola Droid, а в статьях я делюсь с вами не только причинами своей мотивации, но и рассказываю, как разрабатываются приложения для 10+ летних смартфонов с нуля и с минимальным набором зависимостей и детали реализации тех или иных фишек. В сегодняшнем материале мы подведем с вами промежуточные итоги и узнаем, справляются ли смартфоны 14 летней давности с современными сервисами?
Наверняка у многих читателей за последние годы сложилось впечатление, мол пользоваться смартфоном, которому 5+ лет просто невозможно: ОЗУ и постоянной памяти мало, дисплей «низкого» разрешения, смартфон лагучий и отнюдь не плавный, а разработчики приложений давным-давно забыли о том, что такое поддержка 10-летнего Android 5.1. Я лично так не считаю: при определенной сноровке, наличии запала и энтузиазма, а также истинной любви к интересным смартфонам, выясняется, что все необходимые в повседневной жизни приложения можно разработать и самому, с нуля и даже без зависимостей!
Изначально я и не думал писать материал в таком формате, вроде бы всё очевидно: кто ищет приложения под старенький смартфон, может найти их чуть ли не по первым ссылкам в гугле на 4pda, а кому интересны детали реализации — переходят по линкам на соответствующие статьи из первого сообщения в теме.
Подписчики, которые давно читают мой блог, уже более года просили попробовать начать выпускать материал и в видео-формате. Именно поэтому я решился экранизировать рубрику «сам себе экосистема» и запилить видео, где наглядно показываю, на что способны «старички» в современном мире с самопальными приложениями, дабы популяризовать такой вот своеобразный «техно-дауншифтинг» :)
Если вам нравятся мои статьи — можете и на YouTube подписаться!
Реакция зрителей была очень приятной и я решил написать статью в «простом и понятном» формате о том, как и где взять такие приложения и показать, как они работают на реальных смартфонах тех лет.
Все приложения можно взять либо в соответствующих топиках (см. подпись) на 4pda (на форуме обязательна регистрация для скачивания файлов, иначе будет ошибка 404), либо на моём GitHub в релизах.
Для тестов я выбрал 4 легенды своих лет и каждый по своему может быть интересен читателям даже для покупки в 2024 году. Все смартфоны, перечисленные ниже, стоят до 1 500 рублей по рынку на вторичке!
Первым будет Sony Ericsson Xperia Pro, основная фишка которого — выдвижная QWERTY-клавиатура и достаточно компактные размеры. К сожалению, выдвижных сайд-слайдеров уже давно не делают и ценителям QWERTY-устройств остается лишь использовать Б/У устройства или переходить на смартфоны а-ля UniHertz Titan. Смартфон вышел в 2011 году и работал на базе чипсета Qualcomm MSM8255 с одним ядром Scorpion (на базе Cortex A8) на частоте 1.5ГГц и имел 512Мб ОЗУ и 512Мб постоянной флэш-памяти. Из коробки смартфон работал на Android 2.3, есть апдейт до 4.0.4. Казалось бы, характеристики совсем слабые по сравнению даже с современными реалми по 5 000 рублей. В среднем, сейчас эти смартфоны можно найти за 1 000 рублей на онлайн-барахолках.
Вторым будет не менее легендарный Sony Ericsson Xperia Play. Это единственный в своем роде смартфон с выдвижным геймпадом и при этом реально удобным! На устройстве есть адаптированные под аппаратный геймпад эксклюзивы и я частенько люблю поиграть на Play в классические Android-игры 2010-2011 годов. Именно благодаря уникальности смартфона я продоолжаю время от времени использовать его и сейчас в качестве портативной игровой консоли. Характеристики практически идентичны Xperia Pro, за исключением наличия того самого геймпада, где роль стиков выполняют маленькие тачпады с контроллером Synaptics! Не исключено, что смартфоны строились на одной платформе, конструктивно они похожи. Сейчас Play можно найти на барахолках за 2-3 тысячи рублей (это адекватная цена), иногда дешевле. Я время от времени покупаю нерабочие Play'и по 500 рублей и собираю из десяти ещё один — поскольку много плеев в коллекции не бывает и я их очень люблю :)
Третьим будет Samsung Galaxy Ace — в своё время очень популярный смартфон, о котором я когда-то мечтал, будучи юнцом. Отличный смартфон, сбалансированный и недорогой по меркам Samsung в те годы. За 15 000 рублей можно было получить 384Мб ОЗУ, Qualcomm MSM7227 и неплохоий дисплей. Сейчас их можно найти на барахолках буквально по 200-300 рублей рабочими и с аккумуляторами, они практически не ценятся и их очень много поскольку модель была крайне массовой и успешной.
Четвёртым будет диковинка сегодняшней статьи — Samsung Galaxy Pocket. Это очень бюджетный смартфон, «топ за свои деньги» тех лет, который может быть интересен читателю благодаря очень компактным размерам. Смартфон легко помещается в кармашек рубашки и его удобно носить в качестве второго. Интересны и характеристики: чипсет Broadcom на частоте 832МГц, родственный процессору Raspberry Pi 1, 256Мб ОЗУ, 4Гб встроенной памяти, работает смартфон на базе Android 2.3 и дисплей всего 2.8". Да, пусть всего 240x320, но всё равно! Какой-же он крошечный :)
Вот такие интересные и необычные смартфоны собрались в сегодняшнем тесте. Их всех объединяет одно: примерно похожий уровень производителньости, который в разы уступает любому современному бюджетнику. Но значит ли это что эти «ретро» смартфоны бесполезны? Давайте посмотрим на практике!
Начинаем с ВК. На смартфонах Xperia приложения работают крайне плавно, а в случае Xperia Pro можно без проблем чатиться с помощью встроенной QWERTY-клавиатуры. Несмотря на то, что функционал клиента совсем базовый, тем не менее он вполне функционален и, что немаловажно, практически не потребляет и без того небольшие ресурсы смартфонов в фоне.
Анимация чуть-чуть подлагивает лишь на Galaxy Pocket в силу не самого мощного железа.
YouTube тоже работает нормально, однако есть важный нюанс: в смартфоны Xperia для работы нужно обязательно вставить MicroSD-флэшку (поскольку как таковой пользовательской памяти в них нет, только под приложения). YouTube пока что отдаёт видео в h263, который поддерживают большинство смартфонов тех лет и не сваливаются в программный декодер. Так что всё работает очень быстро — хоть и видео необходимо загружать перед началом просмотра.
Клиент Telegram работает также быстро, хоть и реализован с костылем в виде прокси-сервера. Контакты и аватарки прогружаются моментально, никаких лагов при скроллинге нет. В целом, учитывая, что телега один из самых популярных мессенджеров в СНГ и большинство контактов уже есть там, это вполне себе новая жизнь для смартфонов тех лет!
Помимо клиентов основных приложений, такие смартфоны пригодятся и для других задач.
Например, для использования электронной почты. Клиент в Android 2.3 до сих пор работает при условии включения опции «разрешить все SSL-сертификаты»:
Простой серфинг. Да, большинство сайтов с динамикой уже «отваливаются», но пока что Opera Mini ещё работает на 2.3, позволяя почитать Хабр или зайти на лор.
Ну и, конечно-же, послушать музыку.
Вот мы и узнали с вами, на что способны смартфоны которым более 13 лет! Как я уже говорил, немножечко сноровки, энтузиазма и любви к гаджетам тех лет и можно вполне пользоваться ими как основными каждый день! А какие смартфоны были у вас? Пишите в комментариях! Если вам интереса тематика программирования, моддинга и ремонта гаджетов прошлых лет, подписывайтесь на мой Telegram-канал, куда я вовремя публикую ссылки на новые статьи, а также различные мысли и фото-отчеты о ремонте гаджетов!
Также я реализовал подобные приложения и для Windows Phone, когда снова хотел ими пользоваться как основными. Уж очень мне понравилась Lumia 640, купленная за 100 рублей в своё время, с которой я ходил как с основным смартфоном :)
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждый день!
Для лиги ЛЛ в комментах пояснение.