Русский
Русский
English
Статистика
Реклама

Termux

Разработка приложения с использованием Python и OpenCV на Android устройстве

18.11.2020 22:19:29 | Автор: admin

В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как python с библиотекой opencv в среде VSCode (будет использован code-server). В конце статьи приведено небольшое сравнение производительности Termux на моем Android устройстве и Raspberry Pi 3B.

Все действия описанные статье выполнялись на:
Huawei MediaPad M5 10.8
4GB ОЗУ, Hisilicon Kirin 960s, EMUI 9, без root

Для начала понадобится установить Termux (эмулятор терминала, предоставляющий возможности среды Linux), о придожении уже писали на habr.

Далее установим необходимые пакеты, а так же, для более быстрой настройки в дальнейшем, установим ssh сервер:
$ pkg update -y pkg install curl openssh autossh termux-services screen$ sv-enable sshd$ sv up sshd

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

По умолчанию openssh прослушивает порт 8022, узнать ip адрес устройства можно с помощью команды ifconfig:
$ ifconfigwlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500         inet 192.168.1.88  netmask 255.255.255.0  broadcast 192.168.1.255

Подключаемся к Termux:
$ ssh u0_a137@192.168.1.88 -p 8022 

Установить opencv-python в собственном окружении Termux мне не удалось, поэтому воспользуемся трудами Andronix и запустим в Termux Ubuntu 18.04.
$ curl https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Ubuntu/ubuntu.sh | bash

В официальном приложением Andronix можно найти команды для установки других дистрибутивов таких как Kali, Manjaro и т.д.
Если все выполнилось успешно на экране появится
You can now launch Ubuntu with the ./start-ubuntu.sh script

Запускаем Ubuntu
$ ./start-ubuntu.sh 

Установим пакеты необходимые для разработки на python3 с использованием opencv:
$ apt update$ apt install curl git net-tools unzip yarn nano nodejs python3-dev python3-pip python3-opencv -y

Установка занимает довольно много времени.
Теперь установим code-server
$ curl -fsSL https://code-server.dev/install.sh | sh

После установки code-server необходимо отредактировать файл конфигурации
$ nano ~/.config/code-server/config.yamlbind-addr: 127.0.0.1:8080auth: passwordpassword: 4a40bd9973dae545b3b4c037cert: false

По умолчанию code-server прослушивает адрес 127.0.0.1:8080, для обращения к code-server с других устройств необходимо поменять bind-addr на 0.0.0.0:8080. Присутствует возможность авторизации по паролю. Для задания пароля необходимо изменить значение password. Для отключения авторизации необходимо указать auth: none.

Все действия в статье выполняются в Ubuntu без графического интерфейса в результате чего нет возможности использовать imshow, но есть способ транслировать видео в браузер используя библиотеку flask и специальный MIME тип multipart.

Чтобы не отвлекаться на написание кода, используемого в статье для примера, его можно взять в моем github репозитории.
$ git clone https://github.com/guinmoon/flask_opencv_sample$ cd flask_opencv_sample && pip3 install flask

Открываем проект в code-server

При первом открытии будет предложено установить расширение Python соглашаемся.
Установим приложение для потоковой передачи с камеры устройства, например IP Webcam. Главное требование к приложению возможность транслировать с камеры поток понятный opencv, например rtsp. Разрешение видео потока настраиваем в зависимости от производительности устройства. На моем самое оптимальное 1280x720.


Запускаем трансляцию видео в IP Webcam и проект:


В заключение хочу отметить, что при наличии современного Android устройства его можно использовать как альтернативу raspberry pi. Так, например, сняв ограничения энергопотребления домашний планшет можно использовать как полноценный arm64 мини пк, работающий в фоне постоянно. При этом производительность у Termux вполне высокая.
Сравнение запуска того же кода на Raspberry pi 3
Разрешение видео 1280x720


Далее несколько дополнений которые не вошли в основную статью

Память устройства
Для того чтобы иметь возможность обмениваться файлами между termux и android необходимо в выполнить команду
$ termux-setup-storage

Теперь локальная память устройства примонтирована в ~/storage

.Net Core
Присутствует возможность компилировать приложения .net-core, но к сожалению без возможности отладки так как нет версии OmniSharp скомпилированной под arm.
в start_ubuntu.sh
ищем строчку
command+=" -b /data/data/com.termux/files/home:/root"
и исправляем ее на
command+=" -b /data/data/com.termux/files/home"
curl -SL -o dotnet-sdk-3.1.403-linux-arm64.tar.gz https://download.visualstudio.microsoft.com/download/pr/7a027d45-b442-4cc5-91e5-e5ea210ffc75/68c891aaae18468a25803ff7c105cf18/dotnet-sdk-3.1.403-linux-arm64.tar

если ссылка не работает то руками качаем от сюда

mkdir -p /usr/share/dotnettar -zxf dotnet-sdk-3.1.403-linux-arm64.tar.gz -C /usr/share/dotnetln -s /usr/share/dotnet/dotnet /usr/bin/dotnetdotnet new console -o appcd appdotnet run


Тестируем производительность с помощью sysbench
В sourses.list добавляем
deb ftp.debian.org/debian buster-backports main
apt-get updateapt install sysbenchsysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

Подробнее..

Смартфон как системный блок, почему нет?

02.11.2020 12:06:03 | Автор: admin

Linux Deploy от Антона Скшидлевского aka meefik

Современные смартфоны по CPU и объёму оперативной памяти практически сравнялись с настольными компьютерами и ноутбуками: не редкость 8 ГБ оперативной памяти и флэш-накопитель на 512 гигабайт. Например, в последнем айфоне 6-ядерный CPU и 4-ядерный графический процессор, причём CPU сделан по 5-нанометровому техпроцессу. Сейчас ни один CPU для настольных компьютеров не производится по такой технологии. То есть мы дошли до того, что технический прогресс сначала обслуживает смартфоны, потом ноутбуки, а до настольных компьютеров доходит в последнюю очередь.

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

Всё-таки удобнее вводить команды в Linux-консоли с клавиатуры, а не прицеливаться пальцами по экрану.

Содержание



Режим десктопа на смартфонах


Некоторые смартфоны не заменяют нормальный компьютер, а просто эмулируют десктопный режим.

Например, в ноябре 2019 года вышел складной Huawei Mate Xs стоимостью около $2600. Он работает под Android 9.0 Pie, но в режиме Desktop Mode его можно использовать как системный блок настольного компьютера.



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



Для системного блока характеристики вполне нормальные: 8 ГБ оперативной памяти, процессор Kirin 980, модем Balong 5000 5G. Оба чипа производства Huawei. Компания давно заявляла, что её процессоры вдвое превзойдут по производительности чипы конкурентов. В данном случае конкурентами являются Qualcomm Snapdragon и Samsung Exynos. Из других характеристик: 512 ГБ флэш-памяти, батареи 4500 мАч (общая ёмкость двух аккумуляторов), функция быстрой 55-ваттной зарядки до 85% за 30 минут.

Аналогичный десктопный режим (Desktop Mode) есть и на других смартфонах, в том числе Galaxy S10, Galaxy Note 9, Huawei P20, P20 Pro, Mate 10/10 Pro, Mate 20 X, P30, Honor Magic 2 (десктопный режим у Huawei) и другие.

Для подключения телевизора выпускаются переходники с USB-C на HDMI.


Адаптер USB-C/HDMI

Есть вариант беспроводного подключения смартфона к ТВ по стандартному протоколу Miracast, если телевизор его поддерживает.

Например, у Huawei в таком режиме экран смартфона работает в качестве тачпада или мышки для управления курсором на экране телевизора.



Обычные клавиатура и мышь подключаются по Bluetooth.

Самое главное, что в версии Android Q (Android 10) десктопный режим добавили в качестве стандартной функции, причём с поддержкой сторонних лаунчеров (Nova, Apex и др.).

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


Десктопный режим в Android Q

Но всё-таки режим десктопа это не полноценный компьютер, а просто некая эмуляция. Да, есть внешний монитор, но мы по-прежнему работаем с Android-приложениями в этой операционной системе, просто проецируем картинку на большой экран.

Для нормального системного блока, конечно, нужна нормальная операционная система, то есть Linux.

Linux-смартфоны


На рынке есть несколько смартфонов, которые изначально проектируются с расчётом на установку операционной системы Linux и работу в десктопном режиме. Например, компания Canonical планировала выпускать собственный Ubuntu Phone на мобильной платформе Ubuntu Touch, но не получилось. Сама платформа была создана и предустанавливалась на некоторые смартфоны, но в 2017 году Марк Шаттлворт объявил о прекращении проекта. Дальнейшую разработку взяло на себя сообщество UBports. Первое обновление вышло 11.01.2019 (Ubuntu Touch OTA-7) для всех официально поддерживаемых смартфонов и планшетов, в числе которых: OnePlus One, Fairphone 2, Nexus 4, Nexus 5, Nexus 7 2013, Meizu MX4/PRO 5, BQ Aquaris E5/E4.5/M10. Сейчас в продаже можно найти некоторые из перечисленных моделей, которые изначально работают под UBports.

PinePhone


Один из самых известных настоящих Linux-смартфонов, которые изначально поставляются с Linux на борту, называется PinePhone. Его выпускает компания Pine64, производитель ноутбуков и одноплатных компьютеров-конкурентов Raspberry Pi.


Клавиатура, HDMI-монитор и зарядка подключены к смартфону через докинг-станцию USB-C (в центре)

PinePhone дешёвый ($150), но cо средними техническими характеристиками: чипсет Allwinner A64 с четырёхъядерным процессором ARM Cortex A-53 на 1,2 ГГц и графическим видеоускорителем Mali-400MP2, 2 ГБ оперативной памяти, 16 ГБ флэш-хранилища. Впрочем, в июле 2020 года была анонсирована продвинутая версия Community Edition: Manjaro With Convergence Package с 3/32 ГБ оперативной/флэш-памяти, ОС Manjaro Linux и докинговой станцией в комплекте за $200.

Такой смартфон можно использовать как портативную рабочую станцию системного администратора со всем необходимым программным обеспечением. То есть в любом месте вы подключаете монитор, клавиатуру и запускаете стандартные рабочие инструменты в консоли Linux. С десктопа можно подключаться к интернету через 3G/4G телефона.

На смартфоне установлена postmarketOS на базе Alpine Linux известный дистрибутив Linux для смартфонов.

Кроме postmarketOS, можно установить Ubuntu Touch, Sailfish OS и Plasma Mobile.

В октябре 2020 года состоялся релиз Fedora Linux, которую тоже можно установить на PinePhone.

Librem 5


Другой известный Linux-смартфон это Purism Librem 5 на Debian Linux.


Смартфон Librem 5 работает в роли настольного компьютера с монитором, клавиатурой и мышью

Librem 5 работает на PureOS, полностью свободной опенсорсной операционной системе, которая не имеет отношения ни к iOS, ни к Android это чистый Linux (почему это важно).

PureOS на основе GNU/Linux стандартная операционная система для всех продуктов компании Purism, в том числе ноутбуков. Другими словами, в смартфоне реализована стандартная функциональность десктопной операционной системы, которая не отличается от такой же системы в ноутбуке The Road Warrior. Например, в смартфоне работает не мобильная версия Firefox, а самый обычный Firefox, как и на стационарном компьютере. То есть Librem 5 фактически и есть стационарный компьютер, просто маленького размера. Хотя цена немного кусается: $749.



Технические характеристики: восьмиядерный процессор NXP i.MX 8M (Cortex A53) на 1,5 ГГц, графический ускоритель Vivante GC7000Lite GPU, экран 5.7 (IPS TFT 7201440), оперативная память 3 ГБ LPDDR4-3200, хранилище 32 ГБ eMMC, батарея 3500 мАч (сменная).

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



В качестве источника вдохновения разработчики называют универсальную операционную систему Debian, которая тоже портирована практически на все платформы и архитектуры CPU. Если посмотреть абстрактно на существующий зоопарк гаджетов, то действительно непонятно, зачем нужно так много совершенно несовместимых операционных систем iOS, Android, Windows и так далее. Гораздо удобнее, когда абсолютно все устройства будут работать на единой свободной и открытой системе. Тогда везде можно запускать одни и те же приложения и у нас больше не возникнет вопросов, как использовать смартфон в качестве системного блока, потому что технически они не будут отличаться друг от друга на уровне операционной системы.

Зашифрованное хранилище паролей Password Safe одинаково работает на всех устройствах PureOS/Debian

Установка Linux на смартфон


С помощью специальных Linux-дистрибутивов отдельные смартфоны можно превратить в некое подобие компьютера.

Linux можно поставить двумя способами:

  1. Установка на голое железо, как postmarketOS.
  2. Установка утилиты chroot для смены рутовой директории текущего процесса, а уже затем Linux как второй системы.

postmarketOS


Опенсорсная система postmarketOS на базе Alpine Linux один из дистрибутивов Linux, который разрабатывается специально для установки на смартфоны.



В настоящее время гарантируется нормальная работа на 11 моделях:

  • Arrow DragonBoard 410c
  • ASUS MeMO Pad 7 (ME176C(X))
  • BQ Aquaris X5
  • Motorola Moto G4 Play
  • Nokia N900
  • PINE64 PinePhone
  • Purism Librem 5
  • Samsung Galaxy A3 (2015)
  • Samsung Galaxy A5 (2015)
  • Samsung Galaxy S4 Mini Value Edition
  • Wileyfox Swift

Частичная функциональность заявлена на более 200 устройствах, в том числе многих Android-смартфонах и планшетах, очках Google Glass, умных часах разных марок и iPhone 7 (после того, как хакерская группа Corellium портировала Linux на iPhone).



Кроме postmarketOS, можно упомянуть опенсорсные мобильные системы Sailfish OS и LuneOS на ядре Linux, а также LineageOS (бывшая CyanogenMod) и Replicant на базе Android.

Установка через chroot


Вот список приложений и скриптов для установки chroot на Android с последующей инсталляцией Linux:


Linux Deploy


Linux Deploy опенсорсное приложение с открытым исходным кодом для простой и быстрой установки GNU/Linux на Android.

Приложение создаёт образ диска на флеш-карте, монтирует его и устанавливает туда дистрибутив ОС. Приложения из новой системы запускаются в chroot окружении параллельно со штатной работой платформы Android. Установка дистрибутива производится с официальных зеркал в интернете. Для работы нужны рутовые привилегии.







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

Установка новой ОС занимает около 15 минут. Поддерживаемые дистрибутивы: Alpine, Debian, Ubuntu, Kali, Arch, Fedora, CentOS, Slackware, Docker, RootFS (tgz, tbz2, txz). Поддерживаемые архитектуры: ARM, ARM64, x86, x86_64, режим эмуляции (ARM ~ x86). Способы подключения к контейнеру: CLI, SSH, VNC, X-сервер, фреймбуфер. Интерфейсы управления (CLI): Android-терминал (или adb), telnet, веб-интерфейс (терминал через браузер). Окружение рабочего стола: XTerm, LXDE, Xfce, MATE, другое (ручная настройка). Инструкции и руководства см. здесь.

Termux


Termux эмулятор консоли и Linux-окружение под Android, которое устанавливается как обычное приложение под Android и не требует рутового доступа.





Пожалуй, это самый простой способ запустить Linux-инструменты на Android: терминалы Bash, fish или Zsh, текстовые редакторы nano, Emacs и Vim, привычные grep, curl и rsync. Поддерживается пакетный менеджер APT, так что на телефон можно поставить практически любой софт: последние версии Perl, Python, Ruby и Node.js, что угодно.

Подключаем по Bluetooth клавиатуру и дисплей и можно полноценно работать почти как за обычным Linux-компьютером. Termux поддерживает стандартные сочетания клавиш и работу с мышью.

Это практически идеальный терминал, да ещё с пакетным менеджером.

Подводя итог, если мы хотим использовать как полноценный компьютер под Linux, то у нас есть три основных варианта:

  1. Купить настоящий Linux-смартфон: PinePhone, Librem 5 или модель на UBports
  2. Накатить Linux-дистрибутив: postmarketOS или любой дистрибутив через Linux Deploy
  3. Установить Linux-окружение практически на любой смартфон (Termux)

Хотя есть и другие варианты установки Linux, но это более-менее основные.

Затем остаётся лишь подключить внешний дисплей и/или клавиатуру.

С другой стороны, несколько дней назад вышла Ubuntu 20.10 (Groovy Gorilla): великолепная система с поддержкой Raspberry Pi. Согласно опросу на Хабре, Ubuntu это самый популярный дистрибутив Linux у нашей аудитории, и теперь он впервые официально поддерживает Raspberry Pi. Получается, что отличное десктоп-окружение работает на одноплатнике за $35, который по техническим характеристикам практически не уступает смартфонам от $150 до $2600, парадокс.



На правах рекламы


Закажи и сразу работай! Создание VDS любой конфигурации и с любой операционной системой в течение минуты. Максимальная конфигурация позволит оторваться на полную 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Эпичненько :)

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru