![](https://cs13.pikabu.ru/post_img/2024/06/13/6/1718266191157311927.jpg)
Часто Android-устройства считаются «бесполезными» через 5-10 лет после их выпуска. Особенно это актуально для бюджетных моделей, которые не справляются с современным обслуживанием или оборудования, которое по каким-то причинам было физически повреждено в течение срока службы. Однако пока одни люди выбрасывают свои смартфоны и планшеты, считая их электронными отходами, засоряющими мир, другие пытаются найти всему применение, и оказывается, что Android-устройства по-прежнему полезны. Однако бывают случаи, когда устройство необходимо автоматически включать при подключении к зарядке, и именно здесь у многих возникает замешательство – ведь кнопки выключения зачастую недостаточно! В сегодняшнем материале я расскажу о своем случае использования блока питания для питания устройства и случае достижения автоматического запуска на разных чипсетах интересный? Так что добро пожаловать в разрез!
❯ Как и зачем?
Читатели могут спросить: «Зачем вам устройство Android 10-летней давности?» Если задуматься на минутку, то можно прийти к выводу, что гаджеты прошлого действительно были очень полезны во многих областях, не только в планшетах, но и в Android-умных устройствах телефон. Помимо «стандартного» функционала в виде красивых Android-часов с будильником или мультимедийной станции вроде iPod, существует еще множество интересных ситуаций, в которых можно использовать такие устройства. Я лично для себя собрал кое-что:
-
Панель HMI: это интеллектуальные программируемые модули дисплея, которые могут отображать на экране определенную информацию с микроконтроллера или любого другого устройства. С помощью 10-дюймового планшета можно очень удобно переключать режимы работы тех или иных устройств или отображать информацию от различных датчиков в помещении в режиме реального времени. Никто не мешает вам поставить в машину такой планшет для сбора информации о двигателе.
Устройства Android имеют огромные преимущества перед традиционными дисплеями HMI: наличие 3D-ускорителей и возможность отображать красивые визуализации и графику, а также анимацию. В будущем проекте моего автомобиля ВАЗ 2110 я покажу как на практике использовать планшет для таких целей.
-
Сбор данных: микроконтроллер имеет слишком мало встроенной флэш-памяти, чтобы хранить какие-либо большие наборы данных и строить на их основе статистику. Конечно, можно подключить MicroSD.. но нельзя подключить отдельные флэшки для всех одновременно, а MicroSD ни в коем случае не долговечна, когда данные постоянно перезаписываются - вот тут-то и приходят на помощь такие планшеты eMMC вообще более долговечен по сравнению с MicroSD, с него можно получать данные (без шифрования), а мощный процессор планшета также может обрабатывать входящие данные и отправлять их куда-то. Очень полезно!
-
Использование в качестве единого плательщика: недавно я написал об этом статью. Многие дешевые планшеты имеют на плате UART, доступ к которому можно получить из пользовательской среды или даже из Java-приложения! Так что с микроконтроллером можно общаться по проводному интерфейсу, либо тянуть ветку микроконтроллера напрямую, реализуя прошивку для МК.
-
Нестандартное приложение: Ну тут я просто хочу показать свой проект превращения планшета в игровую консоль с помощью внешнего микроконтроллера :)
итак, как мы с вами видим, устройства прошлого отнюдь не бесполезны, и при некоторой изобретательности мы можем дать им вторую жизнь и приспособить их для работы на определенных объектах. Понятное дело, что никто на него ничего серьезного вешать не будет, но например заказать что-то типа ням-панели в чебуречку или установить ГУ на машину - почему бы и нет?
Однако иногда необходимо включить автоматический запуск устройства при подключении смартфона к зарядному устройству или даже реализовать схему автономного питания. Схемы с автономным питанием относительно просты в реализации: иногда 5В можно подать напрямую от источника питания на VBat (положительный и отрицательный контакты аккумулятора). Пороговое напряжение батареи MediaTek CP достигает 5,5–5,6 В и не сгорает. Но это рискованно, если питание плохое и произойдет скачок, то может повредиться жгут/редуктор/ключи (входы со стороны USB обычно защищены). Лучше всего использовать DC-DC преобразователь ~4,2В с током 1,5-2А.
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266561141877403.jpg)
А вот с автозапуском проблема интереснее. Все зависит от реализации этой кнопки питания и чипсета: например, на смартфонах Sony с чипами Qualcomm иногда просто отключаешь кнопку питания и замыкаешь ее контакты перемычкой: все будет работать нормально и без проблем. Но на некоторых смартфонах удержание кнопки питания заставляет устройство перезагружаться каждые 10 секунд, что может быть неприемлемо.
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266572151791906.jpg)
Несколько месяцев назад читатель под ником @A1f установил мне китайский iPhone 7 Plus на Android — именно такой, какой я люблю :) Аппарат работал нормально, но после того, как читатель сдал его в сервис, и по каким-то причинам это не работает.
Обратите внимание: 12 лучших смартфонов Xiaomi.
Не хватает нескольких винтов, сломана кнопка включения на кабеле, смартфон не заряжается...![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266628181018749.jpg)
что ж, проблему с зарядкой я быстро решил: в отечественных айфонах иногда используются собственные «Осветительные» устройства, которые несовместимы с оригинальными и не могут заряжать оригинальные айфоны. К счастью, в комплекте был засохший оригинальный кабель, который я разобрал и припаял все обратно. Теперь USB и зарядка работают нормально!
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266651133043954.jpg)
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266660129228386.jpg)
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266670158924259.jpg)
вопрос про кнопку интереснее: хотя поиск кнопки на кабеле и перекидка с нее перемычки занял 5 минут, вместо того, чтобы искать простой способ, я решил запустить автоматически при подключении к зарядному устройству - точно так же, как в оригинал То же, что и на iPhone :)
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266678184865138.jpg)
И, как вы уже поняли, просто поставить перемычки на контакты питания и массу не получится — смартфон будет постоянно перезагружаться. Поэтому я сбросил загрузчик с помощью SP Flash Tool и начал модифицировать его в IDA Pro, поскольку устройство не требовало разблокировки того же загрузчика. Этот метод работает на многих устройствах на MediaTek, в том числе на некоторых 67хх (возможно, потребуется разблокировать загрузчик), а на устройствах с другими чипсетами алгоритм может быть +- аналогичный, но если напрямую вмешаться в загрузку программой невозможно, можно автоматически загрузите стартовый patch.img.
❯ Реверсим и патчим
Для реализации автозагрузки необходимо пропатчить загрузчик. В устройствах на базе чипсета MediaTek их два — первый — Preloader, который занимается первичной инициализацией периферии и оперативной памяти, второй — lk, который инициализирует дисплей, загружает ядро Linux и передает ему управление; Объединенные исходники Preloader и lk уже давно гуляют в сети, поэтому проблем с их изучением не возникнет, идея общая для всех устройств.
итак, что происходит, когда вы включаете свой смартфон? lk определяет так называемый режим загрузки, который варьируется в зависимости от раздела, с которого загружается ядро (загрузка или восстановление), и передает ядру аргументы (атаги). Во время работы lk и перед загрузкой ядра, перед показом анимации зарядки, загрузчик проверяет, была ли нажата кнопка питания - если да, то быстро перезагружает устройство в обычный режим.
![](https://cs13.pikabu.ru/post_img/2024/06/13/6/1718266273184542665.jpg)
Да, это так просто! Поэтому все, что нам нужно сделать, это исправить ситуацию, проверив кнопку питания, чтобы смартфон думал, что кнопка нажата, хотя на самом деле это не так. В IDA Pro lk загружается по смещению памяти 0x0, подсказки в виде отладочных строк помогут нам найти нужную инструкцию. IDA Pro мгновенно создает все внешние ссылки и доступ к строкам, поэтому найти необходимые данные не составит труда. Ищем «[%s] PowerKey Pressed in Kernel Charging Mode Before Jump to Kernel, Reboot Os» и видим все обращения к адресу памяти в начале строки.
![](https://cs13.pikabu.ru/post_img/2024/06/13/6/1718266296170541139.jpg)
чуть выше метода вызова printf вы можете найти наше условие, которое начинается с инструкции CMP R0, #0. Далее следует инструкция BNE, которая уничтожает код и продолжает загрузку системы в режиме «зарядки». Все, что нам нужно было сделать, это заменить его на NOP в шестнадцатеричном редакторе той же IDA Pro и система сразу ушла в перезагрузку и перезапустилась в обычном режиме после попытки открытия в режиме зарядки, точно так же, как мы только что открыли Смартфон кнопкой!
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266306111337651.jpg)
прошиваем наш новый lk:
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/1718266321114886029.jpg)
Мы видим, что все работает хорошо! :)
❯ Второй способ
если пропатчить загрузчик невозможно, второй подход - пропатчить boot.img - раздел, содержащий ядро устройства и ramdisk, содержащий скрипт (*.rc), используемый для инициализации устройства. Проблема в том, что даже при зарядке смартфон загружает ядро Linux, начальный рамдиск и запускает app_process (основной процесс в Android), запускает загрузку системы или специальную программу в зависимости от режима загрузки, которую обычно называют зарядником, находится в /system/bin/ (иногда находится в самом boot.img).
Реализация этого метода может существенно отличаться на смартфонах с разными чипсетами, но в качестве примера я буду использовать смартфон Sony Ericsson 2011 года выпуска (у меня Xperia Play со сломанной кнопкой питания). Там устройство начинает выполнять скрипт init.rc, который в свою очередь запускает init.semc.rc и на этапе инициализации запускает программу chargemon, которая показывает анимацию зарядки, выключает смартфон, если кабель отключен и слушает кнопку питания, которую нужно нажать. Если пользователь нажимает кнопку питания, процесс загрузки продолжается. Так что весь фикс в том, чтобы закомментировать эту строку :)
#exec /system/bin/chargemon
Для МТК также можно попробовать пропатчить init.rc, чтобы система продолжала загружаться даже при подключении кабеля в режиме зарядки. Способов много, главное быть умным и не бояться понимать странные вещи :)
❯ Заключение
как видите, реализовать автоматический запуск вашего устройства не сложно. Где-то есть перемычка на кнопке питания, где-то патч boot.img, где-то патч загрузчика. Но тем не менее на практике это вполне возможно и позволяет делать интересные вещи, как я это делаю со своим китайским айфоном :)
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/17182663541217985.jpg)
Надеюсь, эти материалы будут вам интересны и полезны! Напишите, пожалуйста, в комментариях, нужно ли вам реализовать что-то подобное и как вы это сделали!
Друзья, если у вас есть подобные китайские устройства и вы не хотите вдыхать в них жизнь, а выбросить жалко, вы можете подарить их мне :) Как видите, эти устройства в надежных руках. Недавно я получил от SC в качестве основного смартфона непригодную для использования встроенную китайскую версию 14 Pro Max. У меня также есть канал в Telegram, где я публикую статьи по бэкенду, различные заметки и свои мысли по поводу ремонта, моддинга, программирования и реверс-инжиниринга, а также ссылки на мои новые статьи и видео. Если кому-то интересно, приходите к нам!
![](https://cs15.pikabu.ru/post_img/2024/06/13/6/171826674114661649.jpg)
Статья написана при поддержке Time Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!
[Мое] Исследование гаджетов для Android-смартфонов Покупка модифицированного микроконтроллера UnixLinux своими руками Длинный пост 12Больше интересных статей здесь: Гаджеты.
Источник статьи: Автостарт Android-устройств — это просто! Реверсим, патчим загрузчик и заставляем смартфон включаться самому.