87 заметок с тегом

armbian

Headers в сборке Buster minimal от armbian

При компиляции драйверов на целевой платформе OrangePIPC, возникли проблемы с headers на Buster minimal от armbian.

Покажу как обойти эти проблемы на ядрах 5.3.x , например на этом имидже: Armbian_5.96.190911_Orangepipc_Debian_buster_dev_5.3.0-rc8_minimal.img

uname -a


Linux orangepipc 5.3.0-rc8-sunxi #5.96.190911 SMP Wed Sep 11 02:03:29 CEST 2019 armv7l GNU/Linux

ставим headers и пакеты которые понадобятся:

apt install linux-headers-dev-sunxi build-essential flex bison -y

обновим пакеты:

apt update &&  apt list --upgradable && apt upgrade -y

проверка:

cd /usr/src/linux-headers-5.3.0-rc8-sunxi
make headers_check

Ошибка:

root@orangepipc:/usr/src/linux-headers-5.3.0-rc8-sunxi# make headers_check
HOSTCC scripts/unifdef
make[1]: *** No rule to make target ’arch/arm/tools/syscall.tbl’, needed by ’arch/arm/include/generated/uapi/asm/unistd-common.h’. Stop.
make: *** [arch/arm/Makefile:321: archheaders] Error 2
root@orangepipc:/usr/src/linux-headers-5.3.0-rc8-sunxi#

для исправления комментируем строки в файле /usr/src/linux-headers-5.3.0-rc8-sunxi/arch/arm/Makefile:

#archheaders:
#       $(Q)$(MAKE) $(build)=arch/arm/tools uapi

#archprepare:
#       $(Q)$(MAKE) $(build)=arch/arm/tools kapi

после команды:

make modules_prepare

Ошибка:

scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory

для исправления ставим пакет libssl-dev

apt install libssl-dev
 2 комментария    2979   2 мес   armbian   Headers

Сборка загрузчика UBOOT

u-boot. запросто и быстро компилируется на OPi
тестировал на Armbian_5.75_Orangepipc_Ubuntu_bionic_next_4.19.20

uname -a


Linux orangepipc 4.19.20-sunxi #5.75 SMP Sat Feb 9 19:02:47 CET 2019 armv7l armv7l armv7l GNU/Linux

надо например мне включить в u-boot CONFIG_OLD_SUNXI_KERNEL_COMPAT=y

apt install libncurses-dev python-dev swig
git clone git://git.denx.de/u-boot-sunxi.git
cd u-boot-sunxi

For all supported boards there are ready-to-use default
configurations available; just type make board_name_defconfig

make orangepi_pc_defconfig
make menuconfig
make -j4
dd if=/dev/zero of=/dev/mmcblk0 bs=1024 seek=544 count=128
dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
reboot

Здесь, первая команда dd предназначена для очистки переменных окружения U-Boot, а вторая, — для записи начального SPL загрузчика и, непосредственно, U-Boot.
подробнее тут.

Вывод U-Boot информации serial console на плате Orange Pi PC

U-Boot SPL 2019.04-rc1-00629-gd065a6c00a (Feb 19 2019 - 07:15:33 +0000)
DRAM: 1024 MiB
Trying to boot from MMC1


U-Boot 2019.04-rc1-00629-gd065a6c00a (Feb 19 2019 - 07:15:33 +0000) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi PC
DRAM:  1 GiB
MMC:   mmc@1c0f000: 0
Loading Environment from FAT... Unable to use mmc 0:1... In:    serial
Out:   vidconsole
Err:   vidconsole
Net:   phy interface0
eth0: ethernet@1c30000
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
USB2:   USB EHCI 1.00
USB3:   USB OHCI 1.0
USB4:   USB EHCI 1.00
USB5:   USB OHCI 1.0
USB6:   USB EHCI 1.00
USB7:   USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
scanning bus 2 for devices... 1 USB Device(s) found
scanning bus 3 for devices... 1 USB Device(s) found
scanning bus 4 for devices... 1 USB Device(s) found
scanning bus 5 for devices... 1 USB Device(s) found
scanning bus 6 for devices... 1 USB Device(s) found
scanning bus 7 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
3798 bytes read in 2 ms (1.8 MiB/s)
## Executing script at 43100000
U-boot loaded from SD
Boot script loaded from mmc
201 bytes read in 1 ms (196.3 KiB/s)
8129656 bytes read in 368 ms (21.1 MiB/s)
7323200 bytes read in 332 ms (21 MiB/s)
Found mainline kernel configuration
29109 bytes read in 10 ms (2.8 MiB/s)
4155 bytes read in 6 ms (675.8 KiB/s)
Applying kernel provided DT fixup script (sun8i-h3-fixup.scr)
## Executing script at 44000000
## Loading init Ramdisk from Legacy Image at 43300000 ...
   Image Name:   uInitrd
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    8129592 Bytes = 7.8 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
EHCI failed to shut down host controller.
   Loading Ramdisk to 4983f000, end 49fffc38 ... OK
   Loading Device Tree to 497cf000, end 4983efff ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Ubuntu 18.04.1 LTS orangepipc ttyS0

orangepipc login:
 Нет комментариев    1154   8 мес   armbian   UBOOT

LIRC (ir-keytable + lircd) на armbian

LIRC стабильная и проверенная библиотека с открытым кодом, которая позволяет отправлять и получать команды по инфракрасному порту, (англ. Linux Infrared Remote Control, «управление Linux при помощи инфракрасного пульта дистанционного управления»)

При использовании irrecord он будет просить вас несколько раз нажимать кнопки различным образом, использование ir-keytable лишает этой радости, но всё равно надо привязать названия к кнопкам. Не обязательно ко всем, можно только к тем, которые планируете использовать.

тестировал на Armbian_5.75_Orangepipc_Ubuntu_bionic_next_4.19.20

uname -a


Linux orangepipc 4.19.20-sunxi #5.75 SMP Sat Feb 9 19:02:47 CET 2019 armv7l armv7l armv7l GNU/Linux

ставим ir-keytable

apt install ir-keytable -y

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

mkdir -p  /etc/rc_keymaps
touch /etc/rc_keymaps/my_keymaps

ir-keytable -c -p other,lirc,rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp -w /etc/rc_keymaps/my_keymaps

ir-keytable -t

нажимаем на кнопки пульта, пример выдачи моего пульта
при нажатии кнопки «1» , «2», «-VOL», «+VOL» и т. д.

root@orangepipc:~# ir-keytable -t
Testing events. Please, press CTRL-C to abort.
1300.707932: lirc protocol(nec): scancode = 0xc
1300.758474: lirc protocol(nec): scancode = 0xc repeat
1305.305770: lirc protocol(nec): scancode = 0x18
1308.840815: lirc protocol(nec): scancode = 0x18 repeat
1810.025185: lirc protocol(nec): scancode = 0x15
1810.075733: lirc protocol(nec): scancode = 0x15 repeat
1811.312910: lirc protocol(nec): scancode = 0x9
1811.363469: lirc protocol(nec): scancode = 0x9 repeat

scancode прописываем в файл: /etc/rc_keymaps/my_keymaps

0x0c KEY_1
0x18 KEY_2
0x15 KEY_VOLUMEDOWN
0x09 KEY_VOLUMEUP

для автозапуска ir-keytable в  файл /etc/rc.local прописываем строку:

ir-keytable -c -p other,lirc,rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp -w /etc/rc_keymaps/my_keymaps

вывод команды: lsmod | grep ir_

root@orangepipc:~# lsmod | grep ir_
ir_xmp_decoder 16384 0
ir_mce_kbd_decoder 16384 0
ir_sharp_decoder 16384 0
ir_sanyo_decoder 16384 0
ir_sony_decoder 16384 0
ir_jvc_decoder 16384 0
ir_rc6_decoder 16384 0
ir_nec_decoder 16384 0
ir_rc5_decoder 16384 0

после настройки, лишние модули при запуске ir-keytable в опции -p можно не указывать.

Ставим lirc

apt install lirc -y

запуск irw

irw

при нажатии на кнопки пульта «1» , «2», «-VOL», «+VOL» и т. д. если scancode прописали в файл: /etc/rc_keymaps/my_keymaps наблюдаем выдачу irw.
пример выдачи моего пульта:

root@orangepipc:~# irw
0000000080010002 00 KEY_1 devinput-32
0000000080010003 00 KEY_2 devinput-32
0000000080010072 00 KEY_VOLUMEDOWN devinput-32
0000000080010073 00 KEY_VOLUMEUP devinput-32

Далее требуется настроить команды, которые будут получать приложения, использующие управление при помощи ПДУ, при нажатии кнопок пульта. Они указываются в файле: /etc/lirc/irexec.lircrc в котором описывается как и какому приложению реагировать на нажатие клавиши на пульте. Для примера как всегда поморгаем светодиодами на плате OrangePI PC и поуправляем громкостью с помощью amixer, запустив alsamixer наблюдаем визуально столбик «Line Out» при регулировке громкостью с помощью пульта.

begin
   remote = devinput-32	
   button = KEY_1
   repeat = 0
   delay = 0
   prog = irexec
   config = echo heartbeat | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
   config = echo none | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
end
begin
   remote = devinput-32	
   button = KEY_2
   repeat = 0
   delay	= 0
   prog = irexec
   config = echo heartbeat | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"
   config = echo none | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"
end
begin
   remote = devinput-32
   prog   = irexec
   button = KEY_VOLUMEDOWN
   config = amixer set "Line Out" 3%- &> /dev/null
   repeat = 10
   delay  = 10
end
 begin
   remote = devinput-32
   prog   = irexec
   button = KEY_VOLUMEUP
   config = amixer set "Line Out" 3%+ &> /dev/null
   repeat = 10
   delay  = 10
end
 1049   9 мес   armbian   IR/InfraRed

Модуль gpio-rotary encoder на armbian

Энкодер или датчик угла поворота — это электромеханическое устройство, предназначенное для преобразования углового положения вала или оси в электрические сигналы.

тестировал на Armbian_5.75_Orangepipc_Ubuntu_bionic_next_4.19.20

uname -a


Linux orangepipc 4.19.20-sunxi #5.75 SMP Sat Feb 9 19:02:47 CET 2019 armv7l armv7l armv7l GNU/Linux

обновим нашу систему и ставим headers

wget https://apt.armbian.com/pool/main/l/linux-4.20.7-sunxi/linux-dtb-dev-sunxi_5.75_armhf.deb

wget https://apt.armbian.com/pool/main/l/linux-4.20.7-sunxi/linux-headers-dev-sunxi_5.75_armhf.deb

wget https://apt.armbian.com/pool/main/l/linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb

dpkg -i *.deb
reboot
apt update &&  apt list --upgradable && apt upgrade -y
uname -a


Linux orangepipc 4.20.7-sunxi #5.75 SMP Fri Feb 8 09:02:10 CET 2019 armv7l armv7l armv7l GNU/Linux

в linux-headers-4.20.7-sunxi есть ошибка, для исправления надо создать пустой файл
source «net/wireguard/Kconfig» и запустить make scripts в папке /usr/src/linux-headers-4.20.7-sunxi

mkdir -p  /usr/src/linux-headers-4.20.7-sunxi/net/wireguard
touch /usr/src/linux-headers-4.20.7-sunxi/net/wireguard/Kconfig
cd /usr/src/linux-headers-4.20.7-sunxi
make scripts
cd

Использовал драйвер ядра gpio-keys (для кнопки энкодера) и драйвер ядра rotary-encoder,
по умолчанию в armbian, модуль rotary-encoder не установлен.
компилируем и ставим модуль rotary-encoder :

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

компилируем и ставим оверлей gpio-rotary.dts:

armbian-add-overlay gpio-rotary.dts
reboot

в файле /boot/armbianEnv.txt появится строка: user_overlays=gpio-rotary
в папке /boot/overlay-user появится файл: gpio-rotary.dtbo
в файле /etc/udev/rules.d/90-devinput-rotary.rules строки:

SUBSYSTEM=="input", MODE="666"
SUBSYSTEMS=="input", ATTRS{name}=="rotary_axis", SYMLINK+="input/rotary_axis"
SUBSYSTEMS=="input", ATTRS{name}=="rotary_button", SYMLINK+="input/rotary_button"

проверка:

dmesg | grep rotary


root@orangepipc:~# dmesg | grep rotary
[ 9.346633] input: rotary_button as /devices/platform/rotary_button/input/input0
[ 9.356333] rotary_encoder: loading out-of-tree module taints kernel.
[ 9.357242] rotary-encoder rotary_axis: gray
[ 9.377227] input: rotary_axis as /devices/platform/rotary_axis/input/input2

cat /sys/kernel/debug/gpio | grep rotary


root@orangepipc:~# cat /sys/kernel/debug/gpio | grep rotary
gpio-200 ( |rotary_axis ) in  hi IRQ ACTIVE LOW
gpio-201 ( |rotary_axis ) in  hi IRQ ACTIVE LOW

ls -la /dev/input | grep rotary


root@orangepipc:~# ls -la /dev/input | grep rotary
lrwxrwxrwx 1 root root 6 Feb 17 15:58 rotary_axis -> event2
lrwxrwxrwx 1 root root 6 Feb 17 15:58 rotary_button -> event0

Тестируем.
энкодер подключаем к контактам 32 («PG8») и 36 («PG9») гребенки, общий вывод к 34 контакту.

evtest  /dev/input/rotary_axis

вращение енкодера по часовой стрелке и против часовой:
вывод команды evtest /dev/input/rotary_axis:

root@orangepipc:~# evtest  /dev/input/rotary_axis
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0
Input device name: "rotary_axis"
Supported events:
  Event type 0 (EV_SYN)
  Event type 2 (EV_REL)
    Event code 1 (REL_Y)
Properties:
Testing ... (interrupt to exit)
Event: time 1550422364.373974, type 2 (EV_REL), code 1 (REL_Y), value -1
Event: time 1550422364.373974, -------------- SYN_REPORT ------------
Event: time 1550422364.488588, type 2 (EV_REL), code 1 (REL_Y), value -1
Event: time 1550422364.488588, -------------- SYN_REPORT ------------
Event: time 1550422364.651093, type 2 (EV_REL), code 1 (REL_Y), value -1
Event: time 1550422364.651093, -------------- SYN_REPORT ------------
Event: time 1550422365.439925, type 2 (EV_REL), code 1 (REL_Y), value 1
Event: time 1550422365.439925, -------------- SYN_REPORT ------------
Event: time 1550422365.656337, type 2 (EV_REL), code 1 (REL_Y), value 1
Event: time 1550422365.656337, -------------- SYN_REPORT ------------
Event: time 1550422365.727505, type 2 (EV_REL), code 1 (REL_Y), value 1
Event: time 1550422365.727505, -------------- SYN_REPORT ------------

кнопку энкодера подключаем к контактам 7 («PA6») гребенки, и к  9 контакту гребенки.

evtest  /dev/input/rotary_button

вывод команды при нажатии кнопки энкодера:

root@orangepipc:~# evtest  /dev/input/rotary_button
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "rotary_button"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 99 (KEY_SYSRQ)
Properties:
Testing ... (interrupt to exit)
Event: time 1550424346.724098, type 1 (EV_KEY), code 99 (KEY_SYSRQ), value 1
Event: time 1550424346.724098, -------------- SYN_REPORT ------------
Event: time 1550424346.912050, type 1 (EV_KEY), code 99 (KEY_SYSRQ), value 0
Event: time 1550424346.912050, -------------- SYN_REPORT ------------

Видим, что все события энкодера генерирует ядро.

 1017   9 мес   armbian   GPIO   rotary encoder

Сборка Mesa 3D на Orangepi

mesa — свободная реализация графических API OpenGL и Vulkan с открытым исходным кодом, и других спецификаций, а также набор видеодрайверов пространства пользователя для GPU.

OpenGL driver for ARM Mali400/450
Linux-Lima — ориентирован на поддержку ARM Mali серии 400/500, одной из нескольких попыток реверс-инжиниринга с открытым исходным кодом, которые сейчас применяются к различным поколениям аппаратного обеспечения Mali.
Включен по умолчанию на сборках armbian Next LTS kernel 4.19.y Allwinner A10, A20, A64, H2+, H3, H5, H6 тема на форуме armbian.

lsmod | grep "lima"


lima 40960 0
gpu_sched 20480 1 lima
ttm 57344 1 lima

Mesa, над которым работает Qiang Yu для обеспечения поддержки OpenGL для Mali 400/500 и являющийся реализацией на основе Gallium3D.

Установим зависимости, несколько пакетов можно не устанавливать, но для тестового запуска пусть будут.

apt update
apt list --upgradable
apt install -y pkg-config libwayland-dev wayland-protocols libdrm-dev libgbm-dev libinput-dev libxkbcommon-dev libpixman-1-dev libx11-dev libegl1-mesa-dev gettext libtool libsystemd-dev libcap-dev libxcb-xkb-dev libxcb-composite0-dev  libavutil-dev libghc-xcb-types-dev libpng-dev libavutil-dev  libavcodec-dev libavformat-dev  libvdpau-dev libxvmc-dev  libomxil-bellagio-dev gperf libpcre2-dev libaudit-dev libselinux1-dev libpolkit-gobject-1-dev kexec-tools valgrind docbook-xsl docbook-xml libunwind-dev ninja-build libcairo2-dev libpam0g-dev libpango1.0-dev libgdk-pixbuf2.0-dev xutils-dev python3-mako libva-dev meson llvm-dev libsensors4-dev libpciaccess-dev libxrandr-dev  llvm mesa-utils-extra mesa-utils glmark2 glmark2-drm glmark2-es2 glmark2-es2-drm

git clone https://gitlab.freedesktop.org/lima/mesa
cd mesa
meson build   --prefix=/usr -Dvulkan-drivers=[] -Dplatforms=drm,x11 -Ddri-drivers=[] \
  -Dgallium-drivers=lima,exynos,sun4i,meson,rockchip

ninja -C build install
reboot
DISPLAY=:0 glxinfo | grep OpenGL


OpenGL vendor string: lima
OpenGL renderer string: Mali400
OpenGL version string: 2.1 Mesa 18.3.0 (git-0a153b2aae)
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.3.0 (git-0a153b2aae)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

 1077   10 мес   armbian   mesa   OrangePI PC

Сборка OpenCV 4 на Orangepi

OpenCV — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++

тестировал на Armbian_5.69_Orangepipc_Ubuntu_bionic_next_4.19.13
обновим нашу систему

apt update && apt upgrade

установим зависимости и инструменты разработчика, включая CMake

apt-get install cmake pkg-config libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev libcanberra-gtk* libatlas-base-dev gfortran python-pip python3-dev

Ставим виртуальную среду Python 3 для OpenCV 4

wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
pip install virtualenv virtualenvwrapper
rm -rf ~/get-pip.py ~/.cache/pip

в файл ~ / .profile , добавить строки:

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

перезагружаем ~ / .profile

source ~/.profile

Создаём виртуальную среду для  OpenCV 4 и дополнительных пакетов

mkvirtualenv cv -p python3

проверяем , что мы находимся в  среде cv , используя команду workon :

workon cv

ставим NumPy

pip install numpy

1G памяти, маловато для сборки.
увеличим swapfile:

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

загружаем opencv,opencv_contrib и компилируем OpenCV 4

wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/4.0.0.tar.gz
tar -xvzf opencv.tar.gz
mv opencv-4.0.0 opencv

wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/4.0.0.tar.gz
tar -xvzf opencv_contrib.tar.gz
mv opencv_contrib-4.0.0 opencv_contrib

cd ~/opencv
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D BUILD_EXAMPLES=OFF ..

make -j4

make install
ldconfig

обязательна символьная ссылка для виртуальной среды OpenCV 4

cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
ln -s /usr/local/python/cv2/python-3.6/cv2.cpython-36m-arm-linux-gnueabihf.so cv2.so
cd ~

быстрый тест:

workon cv
python
>>> import cv2
>>> cv2.__version__

выведет

’4.0.0’

>>> exit()

Первая команда активирует нашу виртуальную среду. Затем мы запускаем интерпретатор Python, связанный со средой.
Использованы материалы сайта:
pyimagesearch.com.

 989   10 мес   armbian   OpenCV   OrangePI PC

Сборка пакета kodi (kodi-wayland) для Mainline Linux AllWinner H3 на Armbian Bionic

собирал на OrangePiPC, sd карта 4Gb.
будем задействовать аппаратное ускорение H3-GPU + wayland

Тестировал на дату публикации.
Обращаю ваше внимание, все команды я выполняю от root’а на терминале PuTTY

собирается на Armbian Bionic на дату публикации это — Armbian_5.65_Orangepipc_Ubuntu_bionic_next_4.14.78.img Armbian Link.
вывод команды 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

Если у меня всё работает так как надо и всё учтено, то нужно подробно это оговаривать — все нюансы.
Либо сделать так чтобы нюансов был минимум.

Попытка собрать пакет kodi для Mainline Linux AllWinner H3 на wayland на автомате.

git clone https://github.com/ua3nbw-cf/kodi-build.git
cd kodi-build
./build.sh

или

./kodi_build.sh all

в файле kodi_build.sh можно подредактировать версии пакетов

KODI=18.0b5-Leia
FFMPEG=4.0.3-Leia-Beta5
IPTVSIMPLE=3.5.3-Leia
WAYLAND=1.16.0
WAYLANDPROTOCOLS=1.16
WESTON=4.0.0
LIBDRM=libdrm-2.4.96

по умолчанию на выходе в папке kodi-build/build имеем пакет kodi_18.0b5-Leia_armhf.deb с предустановленным плагином pvr.iptvsimple
пакет после сборки установится автоматически.

Установка пакета на чистую систему аналогична этому посту:
Kodi 18 Mainline Linux AllWinner H3 на wayland .

 Нет комментариев    352   11 мес   armbian   Kodi   wayland

Создание пакета deb с использованием fpm

Устанавливать программы через make, в обход системы управления пакетами в дистрибутивах — является дурным тоном.
Установка fpm

apt -y install ruby ruby-dev rubygems build-essential
gem install --no-ri --no-rdoc fpm

Получить полный список опций позволяет команда fpm —help.
• -C: каталог, в который нужно перейти до поиска файлов.
• —prefix: путь к каталогу, в котором будут установлены файлы в выходном пакете.
• -p: имя и путь пакета. Это может переопределить имя результирующего файла.
• -n: имя, которое вы хотите использовать для пакета. Это имя отображается в инструментах упаковки платформы.
• -v: номер версии, которую вы хотите использовать для своего пакета.
• —iteration: информация о релизе пакета. Имя дистрибутива для этого номера может отличаться; обычно это способ отслеживать версию пакета, в отличие от версии приложения.
• —license: лицензионное имя пакета. Включает тип лицензии в метаданных, но не содержит связанный файл лицензии в самом пакете.
• —category: категория, к которой относится этот пакет (можно использовать для организации пакета в репозитории).
• -d: зависимости пакета (можно использовать несколько раз).
• —provides: можно использовать для указания функциональности системы, предоставляемой этим пакетом.
• —conflicts: определяет пакеты, которые несовместимы с вашим пакетом.
• —replaces: используетсядля указания пакетов, которые необходимо удалить при установке этого пакета.
• —config-files: используется для маркировки конфигурационных файлов в пакете. Как правило, менеджеры пакетов оставят такие файлы при удалении пакета.
• —directories: помечает каталог как принадлежащий пакету.
• -a: указывает архитектуру пакета.
• -m: позволяет переопределить поле сопровождающей стороны пакета. По умолчанию здесь будет использоваться username@host.
• -e: вручную просмотреть и отредактировать файл спецификации до создания пакета. Эту опцию можно использовать для корректировки любых значений по умолчанию, которые были использованы в спецификации.
• —description: описание пакета.
• — after-install, — before-install, — after-remove, — before-remove: файлы сценариев, которые должны запускаться в соответствующее время.

Существует также несколько специфичных опций для разных форматов. Для получения полного списка используйте подкоманду help.

Для примера вот так создаётся пакет kodi для Debian/GNU Linux

make -j4 install DESTDIR=/tmp/18.0b5-Leia
fpm -s dir -t deb -n kodi -v 18.0b5-Leia  -C /tmp/18.0b5-Leia

Создание пакетов в разных форматах с помощью fpm .

 Нет комментариев    80   11 мес   armbian   fpm

Сборка 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

 84   1 год   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
 1 комментарий    84   2018   armbian   DeadBeef   OrangePI PC
Ранее Ctrl + ↓