79 posts tagged

armbian

Сборка Rust на OrangePI (Armbian)

Потребовалось собрать свежий Rust.

Rust (англ. rust — ржавчина, произносится [rʌst] — раст) — мультипарадигмальный компилируемый язык программирования общего назначения, спонсируемый Mozilla.
Ключевые особенности языка: безопасность, скорость и параллелизм.

Это не отосится к сборке Rust на OrangePI, которая занимает более 12 часов.
1G памяти, маловато для сборки.
Используем swap:

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon --show
free -h

вывод free -h, в процессе сборки:

root@orangepipc:~# free -h
total used free shared buff/cache available
Mem: 1.0Gi 940Mi 13Mi 0.0Ki 46Mi 35Mi
Swap: 1.5Gi 1.1Gi 418Mi

apt-get install cmake pkg-config 

git clone https://github.com/rust-lang/rust.git
cd rust
git submodule update --init --recursive --progress
./x.py build && sudo ./x.py install

За ночь должен собраться.

rustc --version --verbose


rustc 1.32.0-dev
binary: rustc
commit-hash: unknown
commit-date: unknown
host: armv7-unknown-linux-gnueabihf
release: 1.32.0-dev
LLVM version: 8.0

А так, можно установить за пять минут.

wget https://static.rust-lang.org/dist/rust-nightly-arm-unknown-linux-gnueabihf.tar.gz
tar -xvzf rust-nightly-arm-unknown-linux-gnueabihf.tar.gz
cd $HOME/rust-nightly-arm-unknown-linux-gnueabihf
sudo ./install.sh
rustc --version --verbose


rustc 1.32.0-nightly (451987d86 2018-11-01)
binary: rustc
commit-hash: 451987d86c89b38ddd8c4c124f1b9b6d4ded6983
commit-date: 2018-11-01
host: arm-unknown-linux-gnueabihf
release: 1.32.0-nightly
LLVM version: 8.0

Nov 3   armbian   Rust

Сборка DeadBeef на OrangePi

DeadBeef — это легковесный аудиоплеер для систем семейства GNU Linux с X11, написанный на С и С++.

◾Поддержка воспроизведения форматов mp3, ogg, flac/oga, ape, wav, wv/iso.wv, aac/m4a, alac, mpc/mpp/mp+, tta, wma, shn, sid, nsf, mod, s3m, vtx, vgm/vgz, psf, midi, audio cds, а также всех поддерживаемых ffmpeg, umb, gme, libsndfile, adplug и других
◾Не использует много памяти и ресурсов процессора
◾Поддерживается расширение функционала с помощью плагинов
◾Поддерживает плейлисты CUE, M3U и PLS
◾Поддерживается воспроизведение интернет радио, а также обычных mp3 файлов по HTTP и HTTPS.
◾Глобальные горячие клавиши
◾Поддерживает чтение и запись ID3v1, ID3v2, APEv2, vorbiscomment
◾Может поддерживать не Unicode кодировки
◾Высокое качество передискретизации с помощью libsamplerate
◾Воспроизведение с помощью Alsa, oss b PulseAudio
◾Встроенный скробблер last.fm/libre.fm
◾Поддержка нескольких списков воспроизведения
◾Восемнадцати полосный эквалайзер
◾Воспроизведение файлов прямо из архива
◾Многоканальное воспроизведение аудиофайлов
◾Локализирован на многие языки, в том числе русский

Ставил на Armbian_5.38_Orangepipc_Ubuntu_xenial_default_3.4.113_desktop

apt-get update && apt-get upgrade -y

apt-get install libasound2-dev libpulse-dev libmad0-dev libwavpack-dev libsndfile1-dev libcdio-dev libcddb2-dev automake libtool libsamplerate0-dev libgtk2.0-dev libavformat-dev libcurl4-gnutls-dev libdbus-1-dev libfaad-dev intltool libimlib2-dev libzip-dev gettext libcdparanoia0 autopoint libjansson4 libjansson-dev

git clone https://github.com/DeaDBeeF-Player/deadbeef.git
cd deadbeef
./autogen.sh
./configure
make -j4
make install
2018   armbian   DeadBeef   OrangePI PC

WiFi NAT Router на esp8266

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

Тестировал на ARMBIAN 5.40 user-built Debian GNU/Linux 9 (stretch) 4.14.17-sunxi

Компиляция и прошивка A full functional WiFi Repeater (correctly: a WiFi NAT Router) на OrangePi :

Как собирать компилятор и установить esp-open-sdk в этом посте – Сборка компилятора на основе Crosstool-NG и esp-open-sdk
качаем с гита исходники wifi repeater:

cd /opt/Espressif/esp-open-sdk
git clone https://github.com/martin-ger/esp_wifi_repeater.git
cd esp_wifi_repeater

меняем в файле Makefile окружение в двух строках 15 и 30:

BUILD_AREA = /opt/Espressif
ESPPORT		?= /dev/ttyS3

если надо, копаемся в коде и компилируем:

export PATH=/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
make

Прошивка чипа ESP8266
схема подключения модуля ESP8266 к OrangePi  – пост Прошивка ESP8266 модулей на Orange Pi
перед прошивкой кратковременно нажать кнопку сброс (подключена к RST модуля)
не забывайте включить uart3. В терминале OrangePi:

armbian-config --> System --> Hardware

включаем uart3 — это 8,10 (PA13,PA14) пины на гребёнке OrangePi
команда прошивки:

make flash

Рекомендуется прошить в модуль файл esp_init_data_default.bin с калибровками по умолчанию, эти настройки влияют на работу wifi и adc. В большинстве случаев модули работают корректно без этого файла. Последние SDK могут вообще не запускаться без данного файла.
Адрес прошивки файла зависит от установленного размера flash памяти:

0x7c000 для 512 kB.
0xfc000 для 1 MB.
0x3fc000 для 4 MB.
0xffc000 для 16 MB.

wget http://demo.homes-smart.ru/foto/esp_init_data_default.bin

esptool.py --port /dev/ttyS3  write_flash -fs 4m -ff 40m \
    0x7c000 esp_init_data_default.bin

Подключаемся к появившейся точке доступа MyAP. Адрес интерфейса настройки сети http://192.168.4.1/
скорость не мерял, “Чудес не бывает”. но вполне достаточно, чтобы смотреть ютюб и прочие видео.

2018   armbian   ESP8266   NAT Router   OrangePI PC

Сборка прошивки DeviceHive для чипа ESP8266 на OrangePi

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

Сборка компилятора на основе Crosstool-NG и esp-open-sdk
Тестировал на ARMBIAN 5.40 user-built Debian GNU/Linux 9 (stretch) 4.14.17-sunxi
Для сборки нужна флешка не менее 8Gb.
Установку кросс-компилятора и сборку производим из под обычного пользователя

sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf \
    flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial \
    sed git unzip bash help2man wget bzip2 libtool-bin
sudo mkdir /opt/Espressif

username меняем на логин текущего пользователя.

sudo chown username:root /opt/Espressif/
cd /opt/Espressif/ 
git clone --recursive https://github.com/pfalcon/esp-open-sdk
cd esp-open-sdk

в файл /opt/Espressif/esp-open-sdk/crosstool-config-overrides добавляем строки:

# CT_GMP_V_6_0_0 is not set
CT_GMP_V_5_1_3=y
CT_GMP_VERSION="5.1.3"

компилируем:

make STANDALONE=y
export PATH=/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

Пару часов ожидания...
И можно собрать WiFi NAT Router или продолжим собирать DeviceHive esp8266-firmware :

cd /opt/Espressif/esp-open-sdk
git clone https://github.com/devicehive/esp8266-firmware.git
cd /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src

Меняем строки в файлах,
в директории /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src
сохраняя табуляцию в начале строк:

6 строка Makefile

CROSS_COMPILE	?= /opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-

54 строка Makefile

@(cd $(dir $(FIRMWARE)) && ./../../esp-utils/build/esp-flasher   /dev/ttyS3 --developer)

62 строка Makefile

@./../esp-utils/build/esp-terminal /dev/ttyS3

25 строка genbin.sh

CROSS_COMPILE="/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-"

Компилируем утилиты:

cd /opt/Espressif/esp-open-sdk/esp8266-firmware/esp-utils
make

Компилируем прошивку DeviceHive для чипа ESP8266:

cd /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src
make


text data bss dec hex filename
394491 2352 38728 435571 6a573 build/devicehive.elf
Extract sections...
Writing header...
Writing .text section...
Writing .data section...
Writing .rodata section...
Writing checksum...
Writing irom0 section...
Done
Firmware file is firmware/devicehive.bin, size is 413323 bytes

файл прошивки в папке
/opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src/firmware devicehive.bin

Прошивка чипа ESP8266
не забывайте включить uart3. В терминале OrangePi:

armbian-config --> System --> Hardware

включаем uart3 — это 8,10 (PA13,PA14) пины на гребёнке OrangePi

reboot
cd /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src

схема подключения модуля ESP8266 к OrangePi – пост Прошивка ESP8266 модулей на Orange Pi
перед прошивкой кратковременно нажать кнопку сброс (подключена к RST модуля)

make flash

Рекомендуется прошить в модуль файл esp_init_data_default.bin с калибровками по умолчанию, эти настройки влияют на работу wifi и adc. В большинстве случаев модули работают корректно без этого файла. Последние SDK могут вообще не запускаться без данного файла.
Адрес прошивки файла зависит от установленного размера flash памяти:

0x7c000 для 512 kB.
0xfc000 для 1 MB.
0x3fc000 для 4 MB.
0xffc000 для 16 MB.

wget http://demo.homes-smart.ru/foto/esp_init_data_default.bin

/opt/Espressif/esp-open-sdk/esp8266-firmware/esp-utils/build/esp-flasher /dev/ttyS3 0x7c000 esp_init_data_default.bin

Теперь настроить все предельно просто:
• устройство трижды перезагружается (с интервалом не более 3-х секунд), после чего превращается в точку доступа Wi-Fi;
• вы подключаетесь к этой точке и через браузер вводите все необходимые настройки;
• после применения настроек устройство автоматически перезагружается уже с новыми настройками.
запуск терминала:

make terminal

команда help выведет описание команд терминала

После успешного коннекта заходим вручную по адресу http://192.168.2.1 используя веб браузер.

Подробнее про DeviceHive
2018   armbian   DeviceHive   ESP8266   Grafana   OrangePI PC

Установка MQTT-сервера Mosquitto на Debian9 (stretch)

MQTT или Message Queue Telemetry Transport – это легкий, компактный и открытый протокол обмена данными созданный для передачи данных на удалённых локациях, где требуется небольшой размер кода и есть ограничения по пропускной способности канала. Вышеперечисленные достоинства позволяют применять его в системах M2M (Машинно-Машинное взаимодействие) и IIoT (Промышленный Интернет вещей).
Основные особенности протокола MQTT:

  • Асинхронный протокол
  • Компактные сообщения
  • Работа в условиях нестабильной связи на линии передачи данных
  • Поддержка нескольких уровней качества обслуживания (QoS)
  • Легкая интеграция новых устройств

Mosquitto – это популярный MQTT-сервер (или брокер). Он прост в установке и настройке и активно поддерживается сообществом.
Установка на Debian9 (stretch)
лучше установить более современную версию пакета из репозитория проекта Mosquitto. Загрузите ключ репозитория и установите его::

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key

Добавьте URL репоизтория в файл /etc/apt/sources.list.d/

nano /etc/apt/sources.list.d/mosquitto.list

В этот пустой файл вставьте такую строку:

deb http://repo.mosquitto.org/debian stretch main
apt-get update
apt-get install mosquitto mosquitto-clients

Откройте ещё одну сессию терминала, в результате у вас должно быть два терминала. Запустите в новом терминале команду mosquitto_sub, чтобы подписаться:

mosquitto_sub -h localhost -t "sensor/temperature"

Флаг –h указывает имя хоста сервера MQTT, -t – тему. После запуска команды на экране не появится вывода, поскольку команда mosquitto_sub ждет получения сообщений. Вернитесь в первый терминал и опубликуйте сообщение:

mosquitto_pub -h localhost -t "sensor/temperature" -m 21.0

Команда mosquitto_pub использует те же опции, что и mosquitto_sub, однако в этот раз используется дополнительный флаг –m (он позволяет ввести текст сообщения). Нажмите Enter, и вы увидите в другом терминале MQTT-сообщение 21.0.

Mosquitto ставим перед установкой OpenHAB

2018   armbian   Mosquitto   MQTT   OrangePI PC

Прошивка ESP8266 модулей с помощью Platformio на Orange Pi

PlatformIO — это проект, созданный разработчиками из Украины. Он включает в себя утилиту коммандной строки, через которую можно запускать компиляцию и загрузку программ на несколько семейств микроконтроллеров (Atmel AVR, Atmel SAM, ST STM32, TI MSP430 и другие). При этом поддерживаются разные наборы библиотек(на сайте PlatformIO называются фреймворками): Arduino, Energia, mbed, а также нативный код для Atmel AVR, espressif, MSP430.

схема подключения модуля ESP8266 к OrangePi из предыдущего поста Прошивка ESP8266 модулей на Orange Pi
Устанавливаем PlatformIO

apt upgrade && apt install python-pip -y
pip install --upgrade pip
pip install setuptools
pip install -U platformio

Для начала посмотрим, какие платы поддерживаются. Для этого есть команда:

platformio boards

Создадие каталога и шаблона проекта с помощью PlatformIO
у моего модуля esp07 flash всего 512Kbyte, поэтому выбрал модуль esp01:

mkdir esp-simple
cd esp-simple
platformio init -d ./ -b esp01 --ide sublimetext

добавим в файл platformio.ini строки:

upload_port = /dev/ttyS3
upload_speed = 115200

Создадим в каталоге src/ файл Main.cpp со следующим содержимым:

#include <Esp.h>

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(900);
}

Скомпилируем его:

pio run

Процесс прошивки не сложнее процесса сборки, перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)
uart3 на OrangePi должен быть включен (armbian-config > System > Hardware)

pio run -t upload
2018   armbian   ESP8266   Platformio

Прошивка ESP8266 модулей с помощью esptool на Orange Pi

Wi-Fi модуль ESP8266 на сегодняшний день является, пожалуй, самым популярным устройством среди радиолюбителей и энтузиастов, позволяющим подключать свои проекты к сети Wi-Fi и организовывать “Интернет вещей”.
SoC ESP8266 построен на базе процессора Xtensa LX106 фирмы Tensilica
У меня оказался модуль ESP-07,схема подключения для прошивки :

тестировал на ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.15-sunxi
В терминале OrangePi:

armbian-config --> System --> Hardware

включаем uart3 – это 8,10 (PA13,PA14) пины на гребёнке OrangePi
подключаем к OrangePi данный модуль

Утилита для загрузки прошивки

В данном случае мы используем esptool – это утилита на базе Python, разработанная Фредриком Албергом (Fredrik Ahlberg).

apt upgrade && apt install python-pip -y
pip install --upgrade pip
pip install setuptools
pip install esptool

команда flash_id
перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)

esptool.py --chip esp8266 --port /dev/ttyS3    flash_id

вывод команды:

esptool.py v2.2.1
Connecting...
Chip is ESP8266EX
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4013
Detected flash size: 512KB
Hard resetting...

видим, что модуль содержит 512Kbyte флеш памяти.

Прошьём ESP-link

Возможности проекта ESP-link ESP-LINK: Wifi-Serial Bridge
•Прозрачный шлюз между Wi-Fi и последовательным портом для отладки и обмена данными
•Программирование микроконтроллеров AVR/Arduino модулей ESP8266, LPC800 и других с последовательным интерфейсом по «воздуху» через WiFi.
•Встроенные протокол STK500V1 для загрузки файла с прошивкой AVR через встроенный WEB-сервер.
•Отправка HTTP REST запросов через интернет
•MQTT клиент для связи микроконтроллера с сервисами

Загрузка прошивки для ESP8266:

curl -L http://s3.voneicken.com/esp-link/esp-link-v3.0.14-g963ffbb.tgz | \
    tar xzf -
cd esp-link-v3.0.14-g963ffbb

очистка флеш ESP8266: перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)

esptool.py --chip esp8266 --port /dev/ttyS3   erase_flash

прошивка для модуля 4Mbit / 512Kbyte
перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)

esptool.py --port /dev/ttyS3  write_flash -fs 4m -ff 40m \
    0x00000 boot_v1.6.bin 0x1000 user1.bin \
    0x7C000 esp_init_data_default.bin 0x7E000 blank.bin

отсоединяем GPIO0 модуля от земли, перезагружаем модуль и подсоединяемся к появившейся точке доступа, IP вебинтерфейса http://192.168.4.1/

2018   armbian   ESP8266   OrangePI PC

Кнопки на GPIO Mainline Linux OrangePi

Мы можем использовать GPIO (линии ввода/вывода общего назначения ) и с минимальными ресурсами отслеживать изменения на линии GPIO.
Также мы можем запустить любой скрипт или программу с помощью кнопок подключённых к GPIO.
тестировал на mainline ядре 4.14.15-sunxi

Пример подключения пяти нормально разомкнутых кнопок:

использовал драйвер gpio-keys
ставим хидеры ядра, в терминале:

apt upgrade

armbian-config -> Software -> Headers

по умолчанию в armbian, модуль gpio-keys не установлен.
ставим модуль gpio-keys :

git clone https://github.com/ua3nbw-cf/gpio-keys
cd gpio-keys
make all install

вот фрагмент оверлея gpio-keys.dts из папки gpio-keys

g-keys_up {
					label = "GPIO KEY_UP";
					linux,code = <103>; /* KEY_UP, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 7 1>; /* PA7 GPIO_ACTIVE_LOW */
				};

				g-keys_down {
					label = "GPIO KEY_DOWN";
					linux,code = <108>; /* KEY_DOWN, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 8 1>; /* PA8 GPIO_ACTIVE_LOW */
				};

				g-keys_left {
					label = "GPIO KEY_LEFT";
					linux,code = <105>; /* KEY_LEFT, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 9 1>; /* PA9 GPIO_ACTIVE_LOW */
				};

				g-keys_right {
					label = "GPIO KEY_RIGHT";
					linux,code = <106>; /* KEY_RIGHT, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 10 1>; /* PA10 GPIO_ACTIVE_LOW */
				};
				g-keys_enter {
					label = "GPIO KEY_ENTER";
					linux,code = <28>; /* KEY_ENTER, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 21 1>; /* PA21 GPIO_ACTIVE_LOW */
				};

можно менять linux,code и gpios
компилируем:

armbian-add-overlay gpio-keys.dts
reboot

проверяем:

cat /sys/kernel/debug/gpio
evtest

в моём случае device event number 1 (gpio-keys-user)

готово, кнопки подключённые к GPIO дублируют кнопки обычной клавиатуры.

Компилируем демон, который будет следить за нажатиями

git clone https://github.com/elopez/keybinder.git
cd keybinder
make install

проверяем:

keybinder /dev/input/event1

event1 это мой event номер один, у вас event может быть другой.
жмакаем кнопки которые подключили к GPIO
Идем /etc/ правим keybinder.conf
для примера опять моргаем светодиодами на плате

28,reboot
103,echo heartbeat | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
105,echo none | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
106,echo heartbeat | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"
108,echo none | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"

.....................................................................

Для автозапуска после перезагрузки
Идем /etc/ правим rc.local ……………..
до строки exit
добавляем строку

/usr/local/bin/keybinder /dev/input/event1 >/dev/null &

Device Tree Mainline Linux

2018   armbian   Device Tree   GPIO   overlay

Libgpiod “New GPIO Interface for User Space” OrangePI

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

тема sgjava на форуме armbian
ставим хидеры ядра:
в терминале: armbian-config -> Software -> Headers

sudo apt-get install libtool pkg-config 
git clone https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git 
cd libgpiod 
mkdir -p include/linux 
cp /usr/src/linux-headers-$(uname -r)/include/linux/compiler_types.h include/linux/.
 
./autogen.sh --enable-tools=yes --prefix=/usr/local CFLAGS="-I/usr/src/linux-headers-$(uname -r)/include/uapi -Iinclude" 

make 
sudo make install 
sudo ldconfig

README
cnx-software

2018   armbian   Libgpiod   OrangePI PC

Linphone version: 3.12 на OrangePi

Linphone (англ. Linux Phone) — кроссплатформенный программный клиент IP-телефонии в стандарте SIP с открытым исходным кодом, распространяемый по лицензии GNU GPL. Программа Linphone предназначена для организации аудио и видео-вызовов, а также обмена текстовыми сообщениями посредством Интернета.

Консольные приложения linphonec и linphonecsh version: 3.12.0
linphonec — версия программы для работы из командной строки.
linphonecsh — консольная программа для управления работающей в фоновом режиме программой linphonec
Сборка:
git clone https://github.com/ua3nbw-cf/linphone_arm.git
cd linphone_arm
./compil.sh

Проверено на:

Armbian_5.35_Orangepipc_Ubuntu_xenial_default_3.4.113
Armbian_5.37_Orangepipc_Debian_stretch_next_4.14.12
2018   armbian   Linphone   OrangePI PC
Ctrl + ↓ Earlier