69 posts tagged

OrangePI PC

Kodi 18 Mainline Linux AllWinner H3 на wayland

Тестировал на Armbian Bionic mainline kernel 4.14.y на имидже Orangepipc от armbian:
Armbian_5.65_Orangepipc_Ubuntu_bionic_next_4.14.78.img Armbian Link.

Kodi собран с опциями (про сборку kodi, распишу в отдельном посте)
-DCORE_PLATFORM_NAME=wayland -DWAYLAND_RENDER_SYSTEM=gles
патчи от jernejsk.

ставил на weston
Weston – это «эталонный» графический сервер от wayland который служит как пример реализации + для всяких тестов, в реальном DE (gnome, kde) он не используется

Wayland работает непосредственно поверх ядра, и позволяет клиентским приложениям осуществлять рендеринг напрямую без использования промежуточного слоя. В Wayland используется прямой рендеринг через OpenGL или OpenGL ES.

Обращаю ваше внимание, все команды я выполняю от root’а на терминале PuTTY
вывод команды uname -a

Linux orangepipc 4.14.78-sunxi #412 SMP Fri Oct 26 11:37:04 CEST 2018 armv7l armv7l armv7l GNU/Linux

для компиляции модуля mali нужны хидеры ядра, хидеры есть в бета версии armbian,
переключаемся на ночную версию:

sed -i 's/apt.armbian.com/beta.armbian.com/' /etc/apt/sources.list.d/armbian.list
apt update 
apt list --upgradable
apt -y upgrade
reboot

после перезагрузки ставим хидеры ядра:

apt install -y linux-headers-next-sunxi

собираем модуль mali.ko (просто скопируйте код, и вставьте в терминал )
исходники пропатчены, patch.

wget https://ua3nbw.ru/files/DX910-SW-99002-r9p0-01rel0.tgz
tar -xvf DX910-SW-99002-r9p0-01rel0.tgz
cd $HOME/DX910-SW-99002-r9p0-01rel0/driver/src/devicedrv/mali
export CROSS_COMPILE=arm-linux-gnueabihf-
export KDIR=/lib/modules/$(uname -r)/build

make MALI_PLATFORM_FILES=platform/sunxi/sunxi.c \
    EXTRA_CFLAGS="-DCONFIG_MALI_DVFS \
    -DMALI_FAKE_PLATFORM_DEVICE=1 \
    -DCONFIG_MALI_DMA_BUF_MAP_ON_ATTACH" \
    CONFIG_MALI400=m USING_DVFS=1 

mkdir -p /lib/modules/$(uname -r)/extra
cp -PR mali.ko /lib/modules/$(uname -r)/extra/mali.ko

depmod
modprobe mali

вывод команды ls -l /dev/mali

crw------- 1 root root 10, 57 Oct 28 15:08 /dev/mali

вывод команды lsmod | grep mali

mali 475136 0

ставим блобы (просто скопируйте код, и вставьте в терминал )

cd
wget https://ua3nbw.ru/files/mali-blobs.tgz
tar -xvf mali-blobs.tgz
cd $HOME/mali-blobs
    cp -av include/wayland/* /usr/include
  mkdir -p /usr/lib/pkgconfig
    cp -PRv pkgconfig/*.pc /usr/lib/pkgconfig

  MALI="r6p2/arm/wayland/libMali.so"
  mkdir -p /usr/lib/mali
    cp -v $MALI /usr/lib/mali

    for lib in libEGL.so \
               libEGL.so.1 \
               libEGL.so.1.4 \
               libGLESv2.so \
               libGLESv2.so.2 \
               libGLESv2.so.2.0 \
               libgbm.so \
               libgbm.so.1; do
      ln -sfv libMali.so /usr/lib/mali/${lib}
        
    done

echo "/usr/lib/mali" > /etc/ld.so.conf.d/1-mali.conf
ldconfig

ставим необходимые пакеты

apt install -y xwayland  weston libavahi-client3  libbluray2  libcec4 \
 liblirc-client0 libmicrohttpd12  libnfs11  libpulse0 libpython2.7 \
 libsmbclient libxslt1.1 libass9 libcdio17  libva2 libvpx5 libopencore-amrwb0 \
 libopencore-amrnb0 libtheora0 libvo-amrwbenc0 libx264-152 libx265-146 \
 libxvidcore4 libva-drm2 libvdpau1 libfstrcmp0 libpcrecpp0v5 \
 libtag1v5-vanilla libtinyxml2.6.2v5 libva-x11-2

ставим пакет kodi

wget https://ua3nbw.ru/files/deb/kodi_18.0.3_armhf.deb
dpkg -i kodi_18.0.3_armhf.deb

для автозапуска weston-launch создаём файл

nano /lib/systemd/system/weston-launch.service

копируем и вставляем в nano следующий код.

[Unit]
Description=Weston Wayland compositor startup
RequiresMountsFor=/run

[Service]
User=root
EnvironmentFile=-/etc/default/weston
Environment="XDG_RUNTIME_DIR=/run/user/1000"
Environment="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/dbus/user_bus_socket"
ExecStartPre=/usr/bin/sudo /bin/mkdir -p /run/user/1000/dbus
ExecStartPre=/usr/bin/sudo /bin/chown -R root:root /run/user/1000/dbus
ExecStartPre=/bin/chmod -R 0700 /run/user/1000
ExecStart=/usr/bin/sudo -E -- /bin/openvt -v -w -s -- su root -l -c "XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/weston-launch -- $OPTARGS 2>~/.weston-errors"

[Install]
WantedBy=multi-user.target

Сохраняем изменения в файле (ctrl + o) и закрываем файл (ctrl + x).
включение и запуск сервиса

systemctl enable weston-launch.service
systemctl start weston-launch.service

вывод команды systemctl status weston-launch.service


● weston-launch.service – Weston Wayland compositor startup
Loaded: loaded (/lib/systemd/system/weston-launch.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-10-18 11:48:29 UTC; 2s ago
Process: 1869 ExecStartPre=/bin/chmod -R 0700 /run/user/1000 (code=exited, status=0/SUCCESS)
Process: 1867 ExecStartPre=/usr/bin/sudo /bin/chown -R root:root /run/user/1000/dbus (code=exited, sta
Process: 1865 ExecStartPre=/usr/bin/sudo /bin/mkdir -p /run/user/1000/dbus (code=exited, status=0/SUCC
Main PID: 1870 (sudo)
Tasks: 2 (limit: 2225)
CGroup: /system.slice/weston-launch.service
├─1870 /usr/bin/sudo -E -- /bin/openvt -v -w -s -- su root -l -c XDG_RUNTIME_DIR=/run/user/10
└─1871 /bin/openvt -v -w -s -- su root -l -c XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/weston-l


если

lsmod | grep mali

выводит:
mali 475136 5
идём дальше, драйвер (модуль) mali, успешно загрузился и работает.

в левом углу weston иконка виртуального терминала
запускаем виртуальный терминал и из терминала запускаем kodi

kodi

Кому лень повторять эту ахинею, вот готовый образ для PC. img для OrangePI-PC
pass root:orangepi
user ua3nbw:orangepi
Audio на AV выход:

amixer -c 0 -q set "Line Out"  100%+ unmute
amixer -c 0 -q set "DAC"  100%+ unmute
speaker-test -twav -c2   #тест на аудио выход

Прикрыл комментарии в блоге, атака спамеров, на вопросы могу ответить на форуме orangepi.pp.ua, слежу за этой темой : mali на mainline ядре
иногда просматриваю Kodi vs mpv Video Player on Armbian

Вы должны понимать, что Weston не предназначен для повседневного использования,
а используется исключительно для тестов, гашение экрана каждые 5 минут
можно отключить добавив параметр idle-time=0 в секцию [core] в файле .config/weston.ini
Автозапуск kodi: в секцию [shell] добавить client=/usr/local/bin/kodi
weston.ini man page
Из Weston можно выйти по Ctrl+Alt+Backspace.
Про audio тут отвечал модифицировать .asoundrc

acestream: на данной сборке не проверял.
Инструкция по развертыванию acestream – acestream и TTV без aceproxy
iptvsimple тут: pvr.iptvsimple

Oct 18   Kodi   Mainline   Mali   OrangePI PC

Сборка 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 модулей с помощью 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

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

Device Tree Mainline Linux

Дерево устройств (ДУ) представляет собой структуру данных для описания оборудования. Mainline Linux использует его для активации и настройки драйверов, доступных в ядре.
В Linux есть механизм для определения подключенных устройств – Device Tree. Это список всех устройств подключенных к компьютеру. Ядро подгружает его при старте и настраивает все устройства согласно настройкам в файле.

«Оверлеями» называются частичные, «опциональные» ДУ.
Оверлей состоит из нескольких фрагментов, каждый из которых нацелен на какой-то конкретный нод (и его суб-ноды). Хотя эта концепция выглядит довольно просто, сам синтаксис на первый взгляд может показаться довольно странным.
Вот оверлей включающий пины (PA11,PA12) GPIO при начале загрузки,
использовал драйвер gpio-leds,
создаём файл you-overlay.dts и вставляем код:

/dts-v1/;
/plugin/;

/ {
	compatible = "allwinner,sun8i-h3";

	fragment@0 {
		target = <&pio>;
		__overlay__ {
			gpio_pin: gpio_pin {
				pins = "PA11","PA12";
				function = "gpio_out";
			};
		};
	};

	fragment@1 {
		target-path = "/";
		__overlay__ {
			gpiopull: gpiopull {
				compatible = "gpio-leds";
				pinctrl-names = "default";
				pinctrl-0 = <&gpio_pin>;
				status = "okay";
				gpio_out_11 {
					label = "GPIO PIN_11";
					gpios = <&pio 0 11 0>;  /* PA11 GPIO_ACTIVE_LOW */
				};
				gpio_out_12 {
					label = "GPIO PIN_12";
					gpios = <&pio 0 12 1>;  /* PA12 GPIO_ACTIVE_HI */
				};

			};
		};
	};
};

ставим хидеры ядра,
как поставить описал в начале этого поста: Кнопки на GPIO Mainline Linux OrangePi

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

armbian-add-overlay you-overlay.dts
reboot

проверка:

cat /sys/kernel/debug/gpio

если установлен WiringOtherPi ввести команду: gpio readall:

Raspberry Pi:Настройка/Деревья устройств, оверлеи и параметры

2018   armbian   Device Tree   OrangePI PC   overlay

I2S slave на mainline ядре OrangePi

Для качественного аудио интерфейса требуется перевести I2S в слэйв-режим и подать сформированные на базе внешнего, стабильного клока, сигналы BCLK и LRCLK.

BCLK (Bit Serial Clock) — тактовые импульсы, по срезам которых происходит распознавание нужных пакетов данных.
LRCK (Left/Right Clock) — сигнал разделения левого и правого каналов – по нему ЦАП распознает, когда данные обрабатывать в левом, а когда в правом канале.
DATA — поток данных левого и правого каналов – то, что потом волшебным образом радует наш слух.
При использовании цифрового транспорта на базе OrangePi с подключением к ЦАП по I2S в слэйв-режиме, качество этого самого транспорта перестаёт иметь определяющее значение для конечного звука и дальше всё зависит от реализации самого ЦАП, усилителя, АС.
Используется патч драйвера I2S автор – Nikkov тема на веге и плата формирователя :
Цифровой транспорт с открытым кодом на NanoPI-Neo*
схема подключения к гребёнке :

собирал armbian на Win10 с VirtualBox + Ubuntu 16.04 x64 Developer-Guide_Build-Preparation

копируем файл:
sunxi-opipc-patch-I2S.patch в директорию /build/patch/kernel/sunxi-next

./compile.sh BOARD=orangepipc BRANCH=next RELEASE=jessie BUILD_DESKTOP=no KERNEL_ONLY=on KERNEL_CONFIGURE=yes

make linux-menuconfig (by buildroot)

Device Drivers
<*> -->Sound card support
<*>  -->Advanced Linux Sound Archtecture
<*>   -->ALSA for Soc audio support
          -->Allwinner Soc Audio support
             <*> Allwinner A10 Codec Support
             <*> Allwinner SUN8I audio codec
             <*> Allwinner sun8i Codec Analog Controls Suppor  
             <*> Allwinner A10 I2S Support
             <M> Allwinner A10 SPDIF Support
             <*> Allwinner sun8i I2S Support

Вот собранный имидж для OrangepiPC Armbian_5.35_Orangepipc_Debian_jessie_next_4.13.16.7z
На Opi:

armbian-config --> System --> Hardware

cat /proc/asound/cards

0 [Codec          ]: H3_Audio_Codec - H3 Audio Codec
                      H3 Audio Codec
 1 [sndsun8ii2sdac ]: snd-sun8i-i2s-d - snd-sun8i-i2s-dac
                      snd-sun8i-i2s-dac
 2 [allwinnerhdmi  ]: allwinner_hdmi - allwinner,hdmi
                      allwinner,hdmi
2017   armbian   I2S   OrangePI PC
Ctrl + ↓ Earlier