====== ODROID C4 ====== {{tag>système}}{{tag>Odroid}} C'est un Single Board Computer genre Raspberry en mieux * https://wiki.odroid.com/odroid-c4/odroid-c4 * https://www.armbian.com/odroid-c4/ Notre usage est celui d'une machine de création sonore utilisant des capteurs, cela nécessite l'installation de puredata (purr,pd-l2ork,vanilla) et l'acces correcte aux GPIO, bouton Power (uart,i2c,...), ici c'est la C4 plutôt que la N2 parce qu'elle est plus petite et loge bien dans nos tuyaux. de https://wiki.odroid.com/odroid-c4/getting_started/os_installation_guide#tab__odroid-c4hc4, récupérer [[https://de.eu.odroid.in/ubuntu_20.04lts/c4-hc4/ubuntu-20.04-4.9-minimal-odroid-c4-hc4-20220228.img.xz | l'image minimale ubuntu focal C4]] apt install odroid-wiringpi odroid-wiringpi-python vim git journalctl --vacuum-size=1M echo "SystemMaxUse=5M" >> /etc/systemd/journald.conf root@odroid:~# gpio readall +-----+-----+---------+------+---+--- C4 ---+---+------+---------+-----+-----+ | I/O | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | I/O | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3V | | | 1 || 2 | | | 5V | | | | 493 | 8 | SDA.2 | ALT1 | 1 | 3 || 4 | | | 5V | | | | 494 | 9 | SCL.2 | ALT1 | 1 | 5 || 6 | | | 0V | | | | 481 | 7 | IO.481 | IN | 1 | 7 || 8 | 1 | ALT1 | TxD1 | 15 | 488 | | | | 0V | | | 9 || 10 | 1 | ALT1 | RxD1 | 16 | 489 | | 479 | 0 | IO.479 | IN | 1 | 11 || 12 | 1 | IN | IO.492 | 1 | 492 | | 480 | 2 | IO.480 | IN | 1 | 13 || 14 | | | 0V | | | | 483 | 3 | IO.483 | IN | 1 | 15 || 16 | 1 | IN | IO.476 | 4 | 476 | | | | 3.3V | | | 17 || 18 | 1 | IN | IO.477 | 5 | 477 | | 484 | 12 | MOSI | ALT4 | 1 | 19 || 20 | | | 0V | | | | 485 | 13 | MISO | ALT4 | 1 | 21 || 22 | 1 | IN | IO.478 | 6 | 478 | | 487 | 14 | SLCK | ALT4 | 1 | 23 || 24 | 1 | OUT | SS | 10 | 486 | | | | 0V | | | 25 || 26 | 0 | IN | IO. 23 | 11 | 433 | | 474 | 30 | SDA.3 | ALT2 | 1 | 27 || 28 | 1 | ALT2 | SCL.3 | 31 | 475 | | 490 | 21 | IO.490 | IN | 1 | 29 || 30 | | | 0V | | | | 491 | 22 | IO.491 | IN | 1 | 31 || 32 | 0 | IN | IO. 24 | 26 | 434 | | 482 | 23 | IO.482 | IN | 0 | 33 || 34 | | | 0V | | | | 495 | 24 | IO.495 | IN | 0 | 35 || 36 | 1 | OUT | IO. 22 | 27 | 432 | | | 25 | AIN.2 | | | 37 || 38 | | | 1V8 | 28 | | | | | 0V | | | 39 || 40 | | | AIN.0 | 29 | | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | I/O | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | I/O | +-----+-----+---------+------+---+--- C4 ---+---+------+---------+-----+-----+ ===== Ajout bouton on/off ===== Connexion du bouton sur 9/11 ajouter dans /media/boot/boot.ini dans la section Boot Args juste apres la ligne bootargs en surcharge ### in case of GPIOX.3 (Pin 11) of 2x20 pins connector setenv gpiopower "479" setenv bootargs ${bootargs} gpiopower=${gpiopower} ===== Ajout interface graphique ===== Un bureau fluxbox minimaliste consommant moins de 300Mo (mieux que les 800 de mate ou 600 de xfce),\\ sous root pour minimiser les temps de latence (attention aux connexion...) apt install xserver-xorg-core xserver-xorg-input-libinput xinit dbus-x11 xfonts-base x11-xserver-utils x11-utils libgl1-mesa-dri mesa-utils mesa-utils-extra apt install vim fluxbox xterm xfonts-base x11-xserver-utils apt install pcmanfm xpad avahi-daemon # options echo "startfluxbox" > /root/.xsession echo " # fluxbox startup-script: # ~/.fluxbox/startup # Lines starting with a '#' are ignored. # doit finir par exec fluxbox #fbsetbg -l fbsetroot -solid black xterm -T 'Top' -e /usr/bin/top & /root/.fluxbox/x11vnc.sh 2>&1 > /tmp/x11vnc.log & exec fluxbox -log ~/.fluxbox/fluxbox.log " > /root/.fluxbox/startup chmod 755 /root/.fluxbox/startup menu fluxbox ./fluxbox/menu [begin] (Fluxbox) [exec] (Bash) { /usr/bin/xterm -T "Bash" -e /bin/bash --login} <> [exec] (ROX) {rox-filer} <> [exec] (Xkill) {xkill} <> [exec] (Xrefresh) {xrefresh} <> [submenu] (Monitoring) {} [exec] (Pstree) { xterm -T "Pstree" -e /usr/bin/pstree.x11} [exec] (Top) { xterm -T "Top" -e /usr/bin/top} <> [exec] (Top) { xterm -T "HTOP" -e /usr/bin/htop} <> [exec] (Xconsole) {xconsole -file /dev/xconsole} <> [exec] (Xload) {xload} <> [end] [submenu] (Styles) {} [stylesdir] (/usr/share/fluxbox/styles) [stylesdir] (~/.fluxbox/styles) [end] [config] (Configuration) [workspaces] (Workspaces) [reconfig] (Reconfigure) [restart] (Restart) [exec] (Power Off) {sudo /sbin/shutdown -h now} [exec] (Reboot) {sudo /sbin/shutdown -r now} [exit] (Exit) [end] ===== VNC ===== apt install x11vnc x11vnc -storepasswd votre_mot_de_passe ~/.vnc_passwd echo " sleep 3 /usr/bin/x11vnc -rfbauth /root/.vnc_passwd -geometry 1024x780 \ -reopen -bg -avahi -forever -display :0 exit 0 " >/root/.fluxbox/x11vnc.sh ===== audio et Puredata ===== Une partie particulière pour nos installations audio apt install qjackctl puredata- extra multimedia-puredata liste des paquets puredata dans cette debian: {{ :ressources:list_paquet_puredata.txt |}} ---- Archives Le suivi du noyau est un peu chaotique, ceux téléchargés ne sont pas satisfaisant voir pas fonctionnels ... je passe par la phase de fabrication d'Armbian : https://docs.armbian.com/Developer-Guide_Build-Preparation/ cd ~ #user odroid précédemment crée sudo apt-get -y -qq install git git clone --depth=1 --branch=main https://github.com/armbian/build cd build ./compile.sh # ATTENTION il faut plus de 16Go sur exclusivement une ubuntu jammy ! * image simple sans bureau on obtient dans ./build/images/ le fichier Arm...img **Sinon**\\ Il faut utiliser le noyau 4.9 legacy pour avoir un bon compromis avec le 'device tree' des GPIO... et ne pas encore passer sur un 5 ou 6 ! (ce qui est un véritable problème pour le suivi) * https://imola.armbian.com/archive/odroidc4/archive/ * https://wiki.odroid.com/odroid-c4/os_images/ubuntu * Dietpi a aussi des images basées sur armbian pour la partie kernel et trop à jour j'avais récupèré : https://wiki.odroid.com/odroid-c4/os_images/ubuntu/mate/20220713 pour avoir un bureau que je viderai, +VNC +...De fait en y repassant, les images desktop fournis par Armbian ou Dietpi (qui utilise le noyau armian) ne me sont pas fonctionnelles en version legacy :( Je me connecte en serie par gtkterm. Dans le cas de l'image récupérée toute faite il faut faire du ménage de ce qui m'est inutile apt remove --purge office* cups shotwell rhythmbox transmission-common transmission-gtk simple-scan poppler-utils apparmor modemmanager brltty mate-desktop pipewire lightdm apt autoremove journalctl --vacuum-size=1M echo "SystemMaxUse=5M" >> /etc/systemd/journald.conf ===== GPIO ===== * https://bricoles.du-libre.org/xu4 , autogen.sh, configure , make , make install gpio readall +-----+-----+---------+------+---+--- C4 ---+---+------+---------+-----+-----+ | I/O | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | I/O | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3V | | | 1 || 2 | | | 5V | | | | 493 | 8 | SDA.2 | IN | 1 | 3 || 4 | | | 5V | | | | 494 | 9 | SCL.2 | IN | 1 | 5 || 6 | | | 0V | | | | 481 | 7 | IO.481 | IN | 1 | 7 || 8 | 1 | IN | TxD1 | 15 | 488 | | | | 0V | | | 9 || 10 | 1 | IN | RxD1 | 16 | 489 | | 479 | 0 | IO.479 | IN | 1 | 11 || 12 | 1 | IN | IO.492 | 1 | 492 | | 480 | 2 | IO.480 | IN | 1 | 13 || 14 | | | 0V | | | | 483 | 3 | IO.483 | IN | 1 | 15 || 16 | 1 | IN | IO.476 | 4 | 476 | | | | 3.3V | | | 17 || 18 | 1 | IN | IO.477 | 5 | 477 | | 484 | 12 | MOSI | IN | 1 | 19 || 20 | | | 0V | | | | 485 | 13 | MISO | IN | 1 | 21 || 22 | 1 | IN | IO.478 | 6 | 478 | | 487 | 14 | SLCK | IN | 1 | 23 || 24 | 1 | IN | SS | 10 | 486 | | | | 0V | | | 25 || 26 | 0 | IN | IO. 23 | 11 | 433 | | 474 | 30 | SDA.3 | IN | 1 | 27 || 28 | 1 | IN | SCL.3 | 31 | 475 | | 490 | 21 | IO.490 | IN | 1 | 29 || 30 | | | 0V | | | | 491 | 22 | IO.491 | IN | 1 | 31 || 32 | 0 | IN | IO. 24 | 26 | 434 | | 482 | 23 | IO.482 | IN | 0 | 33 || 34 | | | 0V | | | | 495 | 24 | IO.495 | IN | 0 | 35 || 36 | 0 | IN | IO. 22 | 27 | 432 | | | 25 | AIN.2 | | | 37 || 38 | | | 1V8 | 28 | | | | | 0V | | | 39 || 40 | | | AIN.0 | 29 | | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | I/O | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | I/O | +-----+-----+---------+------+---+--- C4 ---+---+------+---------+-----+-----+ ===== truc autour du device tree ===== * https://forums.raspberrypi.com/viewtopic.php?t=339588 * https://stackoverflow.com/questions/21670967/how-to-compile-dts-linux-device-tree-source-files-to-dtb /boot/dtb/amlogic# dtc -I dtb -O dts meson-sm1-odroid-c4.dtb -o meson-sm1-odroid-c4.dts :-( ... trop de taf de ce coté du device tree ... je laisse tombé et reviens sur les images Hardkernel Odroid! ===== install truc fluxbox ===== #si image toute faite apt install software-properties-common add-apt-repository ppa:hardkernel/ppa apt update apt install odroid-wiringpi sudo usermod -G sudo odroid #user odroid deja fait # dans tous les cas apt install vim fluxbox xterm xfonts-base x11-xserver-utils apt install pcmanfm xpad # options ===== Ajout bouton on/off ===== Connexion du bouton sur 9/11 ajouter dans /media/boot/boot.ini pour Ubuntu-Odroid ou boot.cmd pour Armbian juste avant # Load kernel, dtb and initrd ### in case of GPIOX.3 (Pin 11) of 2x20 pins connector setenv gpiopower "479" setenv bootargs ${bootargs} gpiopower=${gpiopower} #recompile mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr ===== autologin ===== apt remove lightdm apt install nodm modifier /etc/default nodm pour loger l'utilisateur odroid et pas root # nodm configuration # Set NODM_ENABLED to something different than 'false' to enable nodm NODM_ENABLED=true # User to autologin for NODM_USER=odroid # First vt to try when looking for free VTs NODM_FIRST_VT='7' # X session NODM_XSESSION=/usr/bin/startfluxbox # Options for nodm itself NODM_OPTIONS= # Options for the X server. # Format: [/usr/bin/] [:] # The Xserver executable and the display name can be omitted, but should # be placed in front, if nodm's defaults shall be overridden. NODM_X_OPTIONS='-nolisten tcp' # If an X session will run for less than this time in seconds, nodm will wait an # increasing bit of time before restarting the session. NODM_MIN_SESSION_TIME=60 # Timeout (in seconds) to wait for X to be ready to accept connections. If X is # not ready before this timeout, it is killed and restarted. NODM_X_TIMEOUT=300 ..j'ai cherché longtemps le truc de remplacer Xsession par startfluxbox ... pour avoir une compatibilité maximale et surtout le lancement automatique par le fichier .fluxbox/startup ! # fluxbox startup-script: # ~/.fluxbox/startup # Lines starting with a '#' are ignored. # doit finir par exec fluxbox #fbsetbg -l xterm -T "Top" -e /usr/bin/top & /usr/bin/x11vnc -rfbauth ~/.vnc/passwd -forever -display :0 & exec fluxbox -log ~/.fluxbox/fluxbox.log ===== VNC ===== apt install x11vnc x11vnc -storepasswd votre_mot_de_passe ~/.vnc_passwd poser x11vnc -many -rfbauth ~/.vnc_passwd dans un startmenu ... cf https://doc.ubuntu-fr.org/x11vnc