image

В наше время, из-за санкций одноплатники стали стоить каких-то «конских» денег. Даже б/у RaspberryPi Zero стоит 2-3 тысячи рублей на барахолках, что, мягко скажем, не совсем лояльная цена для «самого дешевого одноплатного компьютера в мире». Конечно, Orange Pi Zero всё ещё можно купить в пределах 1.500-2.000 рублей, но как по мне и эта цена не слишком лояльна за те характеристики, который предлагает такой одноплатник. С другой стороны, Android-планшеты 10-летней давности продаются на барахолках по 100-300 рублей, что выглядит гораздо привлекательнее, причём на некоторые устройства практически без костылей можно установить полноценный дистрибутив Linux! Вероятно, многие читатели скажут мол «автор бомж» и будут правы: ведь в рамках этой статьи, я хочу рассказать о том, как использовать полурабочий древний планшет в качестве полноценного одноплатника путём подключения его к микроконтроллеру и выводу GPIO! Сегодня мы с вами: узнаем, как подключить микроконтроллер к шине UART в планшете и научимся работать с последовательной шиной в Android прямо из Java и нативных программ. Интересна моя концепция антикризисного одноплатника? Тогда добро пожаловать под кат!

Зачем это нужно?


Пожалуй, нельзя сказать, что подобная концепция пристраивания старых планшетов — вопрос исключительно цены. 2-3 тысячи рублей не такие уж и большие деньги и при желании можно купить хотя бы Б/У, но всё таки полноценный одноплатник с нормальной GPIO-гребенкой. Однако здесь стоит вопрос не столько дешевизны, сколько E-Waste: зачем выкидывать в помойку потенциально рабочие планшеты с живым процессором, если их можно пристроить куда-то ещё?

image

На самом деле, планшеты с ROOT-доступом уже из коробки могут выполнять весьма полезные задачи, как, например, хостинг http-сервера для домашней страницы, работать как панель с часиками и погодой, или, например, работать в качестве HMI-панели для оформления заказов в шаурмечной. Кроме того, многие планшеты на базе смартфонных чипсетов (MediaTek, Spreadtrum) имеют полноценный Bluetooth-модуль, что позволяет «подружить» планшет с микроконтроллером через радиоканал, что значительно расширяет возможный спектр применений.

image

Преимуществ у такого подхода много: у «пожилого» планшета уже есть большой, достаточно качественный (хороший TN, либо даже IPS) дисплей с тачскрином, который поддерживает мультитач, GPU для вывода 3D-графики, 3.5мм для вывода звука + встроенные динамики, а также весьма неплохое, по сравнению с дешевыми одноплатниками, железо. Звучит весьма вкусно для цены в 300 рублей: собрать хоть немного похожую конфигурацию на базе RPi выйдет в 10-15 тысяч рублей (учитывая дороговизну MIPI-матриц с тачскринами + цену самой «малинки» и обвязки для аудиотракта).

image

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

image

С таким подходом можно использовать как «голый» Linux, используя концепцию, которую я представил в этой статье, так и взаимодействовать из Java-приложений для Android (что даёт уже, как минимум, удобный GUI-фреймворк). Сегодняшняя статья будет «без воды», только чистая конкретика, поэтому давайте перейдем к реализации!

image

Подготовка


Как я уже говорил выше — в рамках данной статьи мы рассмотрим использование UART в планшете для наших собственных целей. UART — это двунаправленная полнодуплексная цифровая шина, которая позволяет обеспечить стабильную передачу данных при относительно невысокой скорости, измеряемой в бодах. То есть, быстро стримить картинку с её помощью вы не сможете, но сможете, например, получить состояние входов МК, прочитать что-то на шине I2C, используя мост UART -> I2C или, например, прочитать показания датчиков, которые МК предварительно опросил.

Сама по себе концепция очень простая: многие китайские производители планшетов и смартфонов не только разводят UART в виде отдельного пятачка на плате, но и подписывают его, задействуя UART-канал как вывод для логов ядра, а иногда и предоставляя доступ к рутовой консоли! В свою очередь, из юзерспейса мы можем получить доступ к UART с помощью устройства /dev/ttyS<x> на подавляющем числе чипсетов и /dev/ttyMT<x> на MediaTek. Однако учтите, что в некоторых случаях придется патчить загрузчик, дабы редиректнуть логи ядра в /dev/null.

image

Однако наличие UART на плате — не всегда признак того, что он сконфигурирован в системе верно. Например, на смартфонах с чипсетами SC6820 нормально завести UART я так и не смог, а на некоторых устройствах на базе MT657x нужно патчить загрузчик, дабы он «увидел» нужный канал UART! В моём случае, героем статьи стал планшет Prestigio, у которого отказал тачскрин, но был доступен UART:

image

Конкретно в моём случае, после установки последней официальной прошивки планшет перестал слать логи на UART и устройство /dev/ttyMT3 оказалось доступным для наших операций, в вашем же случае может потребоваться настройка devicetree, или просто патчинг загрузчика, дабы редиректнуть консоль на другой вывод UART. Кроме того, необходимо обязательно получить root-доступ хотя бы к adb shell, поскольку доступ к /dev/tty устройствам возможен только от имени суперпользователя. Как же проверить UART на возможность чтения/записи? Сначала нам необходимо взять ESP32 или любой UART-USB преобразователь, припаять сигнальные линии RX/TX и использовать любую программу для работы с последовательным портом, например Putty. Заходим в adb shell, и пишем что-нибудь в консоль:

image

Вуаля! Всё работает :)

Работает? Замечательно, значит мы сможем использовать планшет вместе с микроконтроллером! Переходим к практической реализации нашего приложения!

Используем из Java


Я специально решил выделить для Java-подхода отдельный раздел, поскольку просто взять и открыть /dev/ttyMT3 с помощью FileInputStream не выйдет. Дело в том, что даже несмотря на наличие root-доступа, по факту ни одно Android-приложение его не имеет (за исключением подписанных системных в папке /system/app/) и для всех операций, требующих повышенных привилегий, либо распаковывают и запускают внешнюю нативную программу из под суперпользователя, либо с помощью специального костыля с запуском sh-программ читают/пишут нужные блочные устройства сами. Связано это с тем, что все Android-приложения работают в хост-процессе app_process, который форкается (отпочковывается) от «главного» процесса, который запущен из под «простого» пользователя, который не находится в группе system.

Здесь концепция также очень простая: su имеет аргумент -c, который позволяет запустить команду от имени root-пользователя и возвращает объект процесса, дабы мы потом могли перехватить stdout:

    private Process runAsRoot(String cmd)
    {
        try {
            return Runtime.getRuntime().exec(new String[] { "su", "-c", cmd });
        }
        catch (IOException e)
        {
            e.printStackTrace();

            return null;
        }

Таким образом, для чтения текстовых данных из UART'а нам достаточно лишь периодически «слушать» stdout команды cat и обрабатывать данные:

                Process proc = runAsRoot("cat /dev/ttyMT" + tty);
                BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

                while(true)
                {
                    try {
                        String line = reader.readLine();

                        if(line != null && line.length() > 0) {
                           processCommand(line);
                        }
                    }
                    catch(IOException e)
                    {
                        e.printStackTrace();
                    }

                    /*try {
                        Thread.sleep(1000 / 30);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }*/
                }

Костыль, но со вкусом :) Если вас не устраивает такой подход или ваше приложение значительно более комплексное, вы можете использовать UART и из под нативных программ.

Используем из C


Работа с последовательными портами в Linux не отличается от работы с любыми другими файлами и устройствами: вызовов open, read, write и close обычно хватает и лишь иногда к ним в довесок нужен ioctl.

    int fd = open("/dev/ttyMT3", O_RDWR);
    int result = write(fd, command, strlen(command));

Для работы с терминалом необходимо использовать модуль termio который предоставляет все необходимые структуры для настройки режима работы терминала, в т.ч и бодрейт. Дело в том, что изначально последовательное устройство настроено на режим работы в качестве терминала, т.е драйвер отдаст данные только после того, как устройство на UART пошлёт \n, или превысит размер внутреннего буфера для сообщения. Если вам нужно работать с бинарными данными и получать их «на лету» — необходимо настроить последовательный порт в «binary» режим:

    tcgetattr(modemFd, &tio);
    tio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
    tio.c_oflag &= ~(OPOST);
    tio.c_cflag |= (CS8);
    tio.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
    tcsetattr(modemFd, TCSAFLUSH, &tio);

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

Заключение


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

Надеюсь, материал вам был интересен и полезен :) Пишите своё мнение, можно ли использовать дешевые планшеты по 300 рублей в качестве одноплатников? Также у меня есть свой Telegram-канал, куда я выкладываю свои мысли, советы по ремонту и моддингу разных девайсов, бэкстейджи статей и вовремя выкладываю ссылки на новые материалы!



Возможно, захочется почитать и это:


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале

Комментарии (56)


  1. bodyawm Автор
    01.05.2024 08:08
    +6

    Друзья! Надеюсь материал вам был полезен. Теперь, по традиции, рассмотрим наш будущий контент-план:

    1. Проект с машиной потихоньку развивается. Само собой машина не новая, потребовала после покупки некоторые вложения (система охлаждения не герметична, а по мнению прошлого владельца доводить антифриз до кипения, который при разгерметизации кипит на 95гр. и кататься на вентиляторе - норма). Я сейчас вообще почти денег, у меня долг 20 тыщ и надо купить радиатор с новым расширительным, но ребята из ТаймВеба помогают, за что им большое спасибо.

    2. Меня давно просят вернуть "классические" обзорно-технические статьи на редкие и диковинные смартфоны. Таковым на следующей неделе станет BlackBerry Priv - очень редкий, ценный и дорогой смартфон с QWERTY-клавиатурой! Я ходил с этим девайсом на протяжении более полугода как с основным и готов расписать все плюсики и минусы этого красавца.

    3. Многие читатели-олды давно предлагают мне параллельно с текстовым блогом пилить и видосы на YouTube. Я с этим согласен и у меня уже есть некоторые мысли для первых видосов (в основном, адаптация прошлых статей, потом будут параллельно видосы с новыми статьями). Осталось подкопить на китайскую пародию на гопро, штатив, петличку и адекватный микро для закадровой записи (уложусь в пределах 10-15к т.к все самое бомжатское) и думаю можно начинать :)


    1. bodyawm Автор
      01.05.2024 08:08
      +4

      А ещё вчера мне подогнали крутейший девайс - Nokia N900!

      А пару недель назад, ко мне приезжал читатель (тоже из Ейска) и лично привез Xperia X8, за что ему большое спасибо :) Очень приятно.


    1. aegelsky
      01.05.2024 08:08
      +2

      можно больше инфы или ссылку про "проект с машиной", перерыл ваши статьи до конца 2023 и не нашёл упоминаний


      1. MaFrance351
        01.05.2024 08:08
        +2

        Это будущий проект, он только на подходе.


      1. bodyawm Автор
        01.05.2024 08:08

        MaFrance351 верно подметил, проект пока только в планах. Сейчас занимаюсь машиной.


      1. Javian
        01.05.2024 08:08

        Двигатель УЗАМ-412 чувствует себя "нормально" при негерметичной системе охлаждения. Скорее всего речь о нем.


        1. strvv
          01.05.2024 08:08

          вообще-то исходные моторы хорошо работают и на 70* термостате. даже безопаснее.


          1. bodyawm Автор
            01.05.2024 08:08
            +1

            Именно. Без давления, антифриз кипит на 90-95гр. УЗАМ и классический мотор работает и при 80 нормально


  1. NickDoom
    01.05.2024 08:08

    Салют, а я свой HTC One отправил вместе с «Дезиркой» и буком, или он у меня где-то валяется ещё? Там выход на матрицу вроде бы убился (ну или сама матрица, не сильно легче). Пытался вроде Линягу вкорячить, должен быть разлочен бут. С ним такое прокатит?


    1. bodyawm Автор
      01.05.2024 08:08
      +1

      Привет. Да, они у меня :)

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

      Где конкретно выход на матрицу убился? На дезике? Ну, там буты лоченные с завода, но если HSPL живой то легко разлачиваются и да, линух тогда можно вкорячить) Но думаю там скорее шлейф крякнул.


      1. NickDoom
        01.05.2024 08:08
        +1

        Дезик жив, Х Уан сдох. Криво вставил шлейф и не заметил, всё пожёг %( обидно до чертей


        1. bodyawm Автор
          01.05.2024 08:08
          +1

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


  1. meljohin
    01.05.2024 08:08
    +1

    А что мешает подключить Rpi Pico как USB serial устройство? Просто подключив через переходник к usb. Это должно работать без аппаратного ковыряния телефона/планшета, если он достаточно современный конечно. Отсутствие возможности зарядки телефона без отключения как единственный минут.


    1. bodyawm Автор
      01.05.2024 08:08

      Нет дров на UART -> USB преобразователь к сожалению. Пробовал и не на одном девайсе.

      Но! Если есть исходный код ядра для устройства, то ничего не мешает собрать внешний линкуемый модуль и потом просто сделать insmod :)


      1. okhsunrog
        01.05.2024 08:08

        А вот интересно, на каких устройствах нет этого драйвера, а на каких есть? На моём Google Pixel 8 Pro я подключал esp32-c3 по usb к смартфону, и через какой-то serial terminal из Google Play без всякого рута мог работать с последовательным портом, полноценно читал и писал в порт. Т.е. usb-serial драйвер в ядра есть, со стороны андроида тоже что-то есть, раз рут не требуется. Andoid 14, версия ядра 5.15.131-android14-11-gd99d9fe08e0c-ab11209359


        1. bodyawm Автор
          01.05.2024 08:08

          Не факт, что драйвер в ядре есть. Возможно прям в программе USB-стек заюзали напрямую, Android это позволяет!


        1. NutsUnderline
          01.05.2024 08:08
          +2

          чем дальше чем больше драйверов, но никто ничего не гарантирует...


        1. nikolz
          01.05.2024 08:08

          До кучи:

          можно без ESP32 обойтись.


      1. MaFrance351
        01.05.2024 08:08
        +1

        Так в Pico нет конвертера USB-UART. Там программная его реализация средствами самого чипа RP2040. Поэтому запросто может быть, что FT232 или CH340 работают, а малина - неа.


        1. bodyawm Автор
          01.05.2024 08:08

          Верно


      1. Qlavrt
        01.05.2024 08:08

        Добрый день! У меня тоже есть в плане подключение старых телефонов/планшетов к (абстрактному) МК для отображения данных от них и для передачи им команд. Меня интересует реализация обозначенной задачи стандартными средствами как со стороны пациента (Андроид), так и со стороны МК, то есть без написания "своих" драйверов, "своего" USB-стека и т.п. По этой задаче еще конь не валялся, но тут подвернулась ваша публикация. Поэтому, пользуясь случаем, хочу... :)

        Нет дров на UART -> USB преобразователь к сожалению. Пробовал и не на одном девайсе.

        Но ниже вы пишите

        Так что идея с USB вполне имеет право на жизнь.

        Вы не стали реализовывать соединение через USB-стек, потому что тогда не получилось бы "общаться" с пациентом через терминал с ПК (хотя бы в целях отладки на начальном этапе)? Или же в целом реализовывать общение пациента с МК через USB-соединение слишком затруднительно? Какой МК можно использовать в качестве USB-хоста, если не надеяться на наличие хоста на чипсете телефона/планшета? ESP32? Я прочитал ваше утверждение по этому вопросу ниже, но вы все-таки его загнули в сторону AllWinner... Или с хостом на МК лучше не связываться, и подбирать пациента с наличием хоста?

        Можете поподробнее прояснить ваш опыт по этим вопросам?


        1. NutsUnderline
          01.05.2024 08:08
          +2

          я наверное еще больше запутаю но попробую по рассуждать

          драйвера популярных usb-serial микросхем (FTDI, CP, CH, Prolific) в андройды вообще включать никто не обещал но они встроены в ядро линукса и поэтому производителю нет особых проблем есть включить. В ESP32 в половине случаев тоже такие мосты стоят. Плюс сразу такой момент что на serial реле не повесить.

          Поэтому предлагаю рассмотреть вариант usb hid, который формально предназначены для устройств ввода типа клавиатур и мышек, поэтому драйвера есть в андройдах начиная чуть ли не с 4го. Ддля hid устройства необязательно быть клавиатурой, это можно рассматривать просто как стандартный протокол с пакетами с данными. По нему подключают, в том числе к андройдам, например программаторы. Для нескольких реле и датчиков - вполне достаточно.

          Собственно этот протокол прекрасно умеют реализовать самые простые контроллеры начиная с Atmega, тот же arduino, есть куча готовых библиотек/стэков и примеров, в основном в клиентском режиме

          Более навороченный вариант есть именно для андройдов, используеться можно сказать специальный микроконтроллер который реализует специализированный хост для андройдов, (ADK или как то так называется), но широкого распространения это похоже не получило.

          Наконец есть вариант обычной IP сети по RNDIS USB, тоже штатный протокол, что почти тоже самое что просто к ESP32 по WiFi подключится. НО RNDIS хост уже на линуксе проще сделать, а для WiFi есть и ESP32 и еще пара вариантов. Подключать андройды к самоделкам по WiFi и BLE - более чем популярно.


          1. Javian
            01.05.2024 08:08
            +1

            HID - это OTG, а оно появилось примерно в Android 5 и не в каждой модели.


            1. bodyawm Автор
              01.05.2024 08:08
              +1

              OTG появился во времена планшетов на Android 2.3 и HID, очевидно, поддерживал сразу. OTG не было лишь в бюджетных ранних смартфонах, со времен MT6572 OTG был почти везде.


        1. bodyawm Автор
          01.05.2024 08:08

          Почему не получилось? В Android есть API а-ля libusb для работы с устройствами из юзерспейса.

          Без OTG можно только к уарту подцепится. И обычно уарт есть везде, даже +- открытый, просто иногда его нужно выцеплять из обвязки :)


    1. bodyawm Автор
      01.05.2024 08:08
      +1

      При этом, у RPi Pico, как вы верно отметили, есть USB и стек TinyUSB. т.е фактически никто не мешает заюзать USB Accessory API, или напрямую дергать API для USB (в стиле libusb) линукса и напрямую управлять bulk-транзакциями :)


  1. Jury_78
    01.05.2024 08:08
    +1

    «ногодрыг» через BT-радиоканал

    Идея не нова была даже платка с PIC.

    Хорош еще вариант с USB входом, но вроде не часто такие делали.


    1. bodyawm Автор
      01.05.2024 08:08

      USB-хосты есть даже на самых дешевых планшетах тех лет. Почему? Потому что в чипсетах помимо OTG-хоста был еще и полноценные USB-хосты, куда очень часто подключали Wi-Fi модули. Именно поэтому они выполнены в виде отдельных плат.

      Убедится в этом можно, глянув на плату любого планшета на аллвиннере тех лет :) Так что идея с USB вполне имеет право на жизнь. А вот с BT есть куча проблем.


  1. esisl
    01.05.2024 08:08
    +5

    Хмм... А я то к экрану фоторезисторы прижимаю...


    1. xoid555
      01.05.2024 08:08
      +2

      у вас есть андроид приложение для засветки участков экрана? Можно посмотреть исходники/проект?



  1. VO_Obsidian
    01.05.2024 08:08

    Вот если б можно было дергать ноги через libgpiod, то было бы интереснее и проще использовать


    1. bodyawm Автор
      01.05.2024 08:08

      В MTK GPIO можно из sysfs дергать, если вы сможете их достать с проца :) Также, можно экспортировать i2c в юзерспейс, я рассказывал как с аккаунта-псевдонима

      @MDXE1337


  1. inkelyad
    01.05.2024 08:08

    Почти у всех этих устройств есть еще один итерфейс - тот, который для SIM карты предназначался. Его никак задействовать нельзя? Я понимаю, что это сомнительно, но вдруг?

    AT команды в контроллер сотового модема Android как то же посылает.

    Да и у (micro)SD интерфейса, помнится, был какой-то режим, который не запоминающее устройство, а для всяких хитрых устройств расширения.

    Ах да, еще аудио - если пожертвовать звуком, через него тоже с внешними платами общаться можно.


    1. bodyawm Автор
      01.05.2024 08:08
      +2

      Интерфейсом SIM управляет прошивка радиомодуля. Android общается с модемом с помощью RIL - абстракции от конкретной системы команд для модема, настолько лоулевельных операций там нет.

      У MicroSD есть два режима: SDIO и SPI. Однако работает с ним модуль MMC, который не умеет обычно ничего, кроме как читать SD-карты)

      Через ЦАП единственный адекватный вариант - так передают программы на спектрум через "аукс".


      1. inkelyad
        01.05.2024 08:08
        +1

        Android общается с модемом с помощью RIL - абстракции от конкретной системы команд для модема, настолько лоулевельных операций там нет.

        Т.е. с sendEnvelopeWithStatus на практике ничего полезного сделать нельзя?

         Однако работает с ним модуль MMC, который не умеет обычно ничего, кроме как читать SD-карты)

        Выходит, те NFC SD, которые в свое время пытались выпускать для тех, у кого прямо в телефоне интерфейса не было - работали с весьма ограниченным числом моделей телефонов?


        1. bodyawm Автор
          01.05.2024 08:08

          Т.е. с sendEnvelopeWithStatus на практике ничего полезного сделать нельзя?

          Маловероятно.

          Выходит, те NFC SD, которые в свое время пытались выпускать для тех, у кого прямо в телефоне интерфейса не было - работали с весьма ограниченным числом моделей телефонов?

          Видимо так. Я вообще особо не видел SDIO модулей в форм-факторе MicroSD (не SD)


          1. acc0unt
            01.05.2024 08:08

            Смотри фокус. Есть такая штука как "меню SIM" - оно же "SIM Toolkit". И это меню фактически работает не на самом телефоне, а именно на SIM-карте. Телефон рисует меню, но на каждое действие пользователя отправляет в симку запросы.

            Поэтому если ты собрал эмулятор симки на микроконтроллере, то именно через это меню можно кидать в него команды. Так, например, работали в своё время сим-карты "20 в 1".


            1. MaFrance351
              01.05.2024 08:08

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


    1. MaFrance351
      01.05.2024 08:08
      +3

      SDIO (точнее, подключение чего-то иного, нежели карт памяти) в потребительских девайсах уже мало где остался. Это КПКшное явление.


      1. eugenex15
        01.05.2024 08:08

        hp250g4 ноут (модификация аля планшет на n3050) стоит wifi/bt модуль usb/sdio и таких множество.


  1. NutsUnderline
    01.05.2024 08:08

    поскольку просто взять и открыть /dev/ttyMT3 с помощью FileInputStream 

    здесь должна быть картинка с Арагорном


    1. grvelvet
      01.05.2024 08:08
      +1

      Боромиром


  1. riky
    01.05.2024 08:08
    +1

    Тоже думал на эту тему. Я бы наверное в сторону блютуз полез. Т. К. Работал немного с ним на андройде и есп. Но с совсем старыми где андройд меньше 6 будут проблемы подружить с современным андройд сдк.
    Uart вариант хороший, но у каждого устройства надо ещё его найти выходы и настроить связь с ними, не универсально.


    1. bodyawm Автор
      01.05.2024 08:08

      Но с совсем старыми где андройд меньше 6 будут проблемы подружить с современным андройд сдк.

      Ноль проблем. Пилю под Android 2.2+, юзая самый последний SDK :)


  1. S-trace
    01.05.2024 08:08
    +1

    В статье ни слова про SELinux - а он может мешать работать с устройством UARTа, даже если его chmodнуть на 666.

    SELinux можно выключить до ребута командой setenforce 0 под рутом, или же пропатчить cmdline в boot.img добавив туда параметр androidboot.selinux=permissive

    Хотя, есть информация что трюк с cmdline может не прокатить если build variant == user. Подробнее: https://source.android.com/docs/security/features/selinux/validate?hl=en


  1. awsswa59
    01.05.2024 08:08

    Одноплатники хороши для какого нибудь законченного проекта - поставил например openwrt и забыл, где то оно там маршрутизирует. Да пару тысяч можно найти плату ATX с каким нибудь Core2DUO - воткнуть туда proxmox, нарезать 5 виртуалок по 512 мб памяти и Linux в придачу ( тут и роутер, почтовый сервер, web сервер, чат, sql база ... ). И есть уже на чем разбежаться фантазии


    1. YMA
      01.05.2024 08:08
      +3

      Только к плате ATX потребуется ещё и блок питания с корпусом, все это будет гудеть вентиляторами и есть ватт 60 вместо 5, да и места занимать в разы больше. :)


    1. M_AJ
      01.05.2024 08:08
      +4

      Да пару тысяч можно найти плату ATX с каким нибудь Core2DUO

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


    1. bodyawm Автор
      01.05.2024 08:08

      И жрать такая сборка будет довольно много :)


  1. DarkWolf13
    01.05.2024 08:08
    +2

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


    1. NutsUnderline
      01.05.2024 08:08

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


  1. xoid555
    01.05.2024 08:08
    +1

    как-то пропущен вопрос запуска линукс на произвольном планшете. А это самое трудное. Что касается UART, какое там напряжение может быть?


    1. MaFrance351
      01.05.2024 08:08

      Обычно там 1,8 или 3,3 В. Иногда бывает, что к трём вольтам выводы толерантны, но всё равно лучше использовать преобразователь уровней, иначе есть риск спалить.


      1. bodyawm Автор
        01.05.2024 08:08

        Ничего там не нужно использовать, диагностический UART на пятаках (не из обвязки) всегда 3.3В.


    1. bodyawm Автор
      01.05.2024 08:08
      +1

      На аллвиннерах частенько достаточно прост образ на микросд записать и он сам подтянется :)