Outils pour utilisateurs

Outils du site


debian:armbian_stretch_odroid_hc1

Armbian Stretch/Buster sur Odroid-HC1

  • Nanopi NEO2 (player) est connecté à Odroid-HC1 (serveur) par un câble Ethernet.
  • UPnP ou LMS : on choisit soit UPnP, soit LMS.
    • Minimserver : Un serveur de musique UPnP, très bien pour gérer la musique classique.
    • Upmpdcli (player virtuel) : un UPnP Media Renderer front-end pour MPD.
    • Logitech Media Server (LMS) : Un serveur de musique différent

Installation du système

  • Suivre https://www.armbian.com/odroid-hc1 pour installer la version “Armbian Stretch” “Armbian Buster” (Armbian_5.65_Odroidxu4_Debian_stretch_next_4.14.78.7z Armbian_5.91_Odroidxu4_Debian_buster_next_4.14.127.7z au moment de mon installation ma réinstallation (upgrade)).
    • :!: Je n'utilise que le compte root, pas besoin de créer un compte utilisateur, toutes les commandes ci-dessous sont exécutées sous root.
  • Avec le même disque dur déjà utilisé, créer un répertoire /archives et ajouter dans /etc/fstab la ligne suivante pour monter le disque dur au démarrage (la commande blkid affiche le UUID de /dev/sda1) :
    UUID=8f99812d-689d-4a29-8b1d-b4110e304869 /archives ext4 defaults,noatime 0 2
  • Time zone :
    root@odroidxu4:~# timedatectl
    root@odroidxu4:~# timedatectl list-timezones
    root@odroidxu4:~# timedatectl set-timezone Europe/Paris
  • Heure et Date : Armbian utilise ntp.service. Pour mon usage, il suffit de régler l'heure au boot et une fois par jour. Donc désactiver ce service ntp
    root@odroidxu4:~# systemctl stop ntp.service
    root@odroidxu4:~# systemctl disable ntp.service

    Créer un timer /etc/systemd/system/time-sync.timer

    [Unit]
    Description=Synchronisation de l'heure
    
    [Timer]
    OnBootSec=60
    OnCalendar=*-*-* 23:50:00
    Persistent=true
    
    [Install]
    WantedBy=multi-user.target

    et l'activer par

    root@odroidxu4:~# systemctl enable time-sync.timer

    Créer le service correspondant (pas besoin de l'activer) /etc/systemd/system/time-sync.service

    [Unit]
    Description=Synchronisation de l'heure
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/sbin/ntpd -qg
  • Lancer armbian-config, aller à la section System → DTB et selectionner hc1.
  • Un petit jeu : J'ai ajouté un adaptateur USB 3.0 vers RJ45 Gigabit Ethernet avec chipset RTL8153. Il se branche sur un port USB de Odroid et se connecte en Ethernet sur le routeur-wifi. L'idée est de configurer un pont (bridge) entre les deux interfaces Ethernet de Odroid. Cela transforme le Odroid-HC1 en un switch à deux ports. Le player NanoPi NEO2 se connecte alors directement sur le port Ethernet de Odroid-HC1.
    • Il se trouve que le port Ethernet de Odroid-HC1 est en fait de même type
      root@odroidxu4:~# lsusb
      Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
      Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 004 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
      Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
      Bus 001 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    • Les noms des deux interfaces :
      root@odroidxu4:~# ifconfig -a
      enx001e0630d049: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              ether 00:1e:06:30:d0:49  txqueuelen 1000  (Ethernet)
              RX packets 0  bytes 0 (0.0 B)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 557  bytes 97918 (95.6 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      enx00e04c618396: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.0.23  netmask 255.255.255.0  broadcast 192.168.0.255
              inet6 fe80::a839:c210:63a2:e112  prefixlen 64  scopeid 0x20<link>
              ether 00:e0:4c:61:83:96  txqueuelen 1000  (Ethernet)
              RX packets 5622  bytes 1498058 (1.4 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 1368  bytes 219324 (214.1 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
              inet 127.0.0.1  netmask 255.0.0.0
              inet6 ::1  prefixlen 128  scopeid 0x10<host>
              loop  txqueuelen 1000  (Local Loopback)
              RX packets 182  bytes 43348 (42.3 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 182  bytes 43348 (42.3 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

      On voit que l'interface enx00e04c618396 correspond à l’adaptateur USB-Ethernet car elle a une adresse IP 192.168.0.23 attribuée par le routeur.

    • Maintenant installer le package bridge-utils et configurer /etc/network/interfaces (garder une copie de ce fichier avant de le remplacer) avec le contenu
      iface enx001e0630d049 inet manual
      iface enx00e04c618396 inet manual
      
      auto br0
      iface br0 inet dhcp
        hwaddress ether 00:e0:4c:61:83:96 
        bridge_ports enx001e0630d049 enx00e04c618396
        
      # Local loopback
      auto lo
      iface lo inet loopback

      et reboot et on voit

      root@odroidxu4:~# ifconfig -a
      br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.0.23  netmask 255.255.255.0  broadcast 192.168.0.255
              inet6 fe80::2e0:4cff:fe61:8396  prefixlen 64  scopeid 0x20<link>
              ether 00:e0:4c:61:83:96  txqueuelen 1000  (Ethernet)
              RX packets 957  bytes 299579 (292.5 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 1252  bytes 129224 (126.1 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      enx001e0630d049: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              ether 00:1e:06:30:d0:49  txqueuelen 1000  (Ethernet)
              RX packets 585  bytes 235458 (229.9 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 1028  bytes 92761 (90.5 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      enx00e04c618396: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              ether 00:e0:4c:61:83:96  txqueuelen 1000  (Ethernet)
              RX packets 388  bytes 78545 (76.7 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 304  bytes 59633 (58.2 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
              inet 127.0.0.1  netmask 255.0.0.0
              inet6 ::1  prefixlen 128  scopeid 0x10<host>
              loop  txqueuelen 1000  (Local Loopback)
              RX packets 22  bytes 6694 (6.5 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 22  bytes 6694 (6.5 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

      L'interface enx001e0630d049 est prête pour recevoir NanoPi NEO2.

  • Note : Le système est 32 bit (armv7)
    root@odroidxu4:~# uname -a
    Linux odroidxu4 4.14.133-odroidxu4 #2 SMP PREEMPT Tue Jul 16 19:33:01 CEST 2019 armv7l GNU/Linux

Serveurs de musique UPnP ou LMS

  • MinimServer : Suivre Installing MinimServer on Linux pour installer ejdk-8u211-linux-armv6-vfp-hflt.tar.gz et MinimServer (version pour Linux ARM hard float). Télécharger (sur un autre ordinateur) les deux fichiers d'installation et les transmettre dans Odroid-HC1, ensuite :
    root@odroidxu4:~# tar xf ejdk-8u211-linux-armv6-vfp-hflt.tar.gz
    root@odroidxu4:~# ln -s /root/ejdk1.8.0_211/linux_armv6_vfp_hflt/jre/bin/java /usr/local/bin/
    root@odroidxu4:~# java -version
    java version "1.8.0_211"
    Java(TM) SE Embedded Runtime Environment (build 1.8.0_211-b12)
    Java HotSpot(TM) Embedded Client VM (build 25.211-b12, mixed mode)
    
    root@odroidxu4:~# tar xf MinimServer-0.8.5.2-linux-armhf.tar.gz
    root@odroidxu4:~# ./minimserver/bin/setup
    MinimServer desktop integration is not available
    MinimServer automatic startup is disabled
    Do you want to change these settings (y/n)?
    y
    Enable automatic startup for MinimServer (y/n)?
    y
    MinimServer automatic startup has been enabled
    
    root@odroidxu4:~# ./minimserver/bin/startc
    MinimServer 0.8.5.2, Copyright (c) 2012-2017 Simon Nash. All rights reserved.
    autoUpdate: installed package 'minimserver-0.8-update-129'
    Enter command (? for help):
    autoUpdate: relaunching
    >MinimServer 0.8.5.2 update 129, Copyright (c) 2012-2019 Simon Nash. All rights reserved.
    starting MinimServer[odroidxu4]
    Enter command (? for help):
    >Enter content directory, or null to continue:
    #/archives/music
    >exit
    stopping MinimServer[odroidxu4]
    MinimServer[odroidxu4] is stopped
    
    root@odroidxu4:~# systemctl start minimserver
    • Suivre le lien dans cette page pour installer MinimWatch sur un autre ordinateur. Il permet de gérer facilement MinimServer à distance.
    • Option : Utiliser tag update avec le fichier tagupdate.txt
    • Option : Installer MinimStreamer et configurer le transcodage flac:wav dans le champs stream.transcode à l'aide de l'interface MinimWatch.
  • Upmpdcli : C'est un player virtuel qui commande le vrai player MPD sur NanoPi NEO2. Voir Upmpdcli_Debian. Créer un fichier /etc/apt/sources.list.d/upmpdcli.list avec le contenu
    deb http://www.lesbonscomptes.com/upmpdcli/downloads/raspbian/ buster main
    deb-src http://www.lesbonscomptes.com/upmpdcli/downloads/raspbian/ buster main

    et lancer

    root@odroidxu4:~# apt-key adv --keyserver pool.sks-keyservers.net --recv-keys F8E3347256922A8AE767605B7808CE96D38B9201
    root@odroidxu4:~# apt-get update
    root@odroidxu4:~# apt-get install upmpdcli

    Dans le répertoire /etc/

    mv upmpdcli.conf upmpdcli.conf.orig
    wget http://download.tuxfamily.org/bz31notes/armbian/upmpdcli_radiolist
    wget http://download.tuxfamily.org/bz31notes/armbian/upmpdcli.conf

    et adapter /etc/upmpdcli.conf (personnaliser le nom du player, compatibilité LUMIN, définir l'adresse IP de NanoPi NEO2, utiliser ma liste de radio), et

    systemctl restart upmpdcli
  • Qobuz : Deux manières pour utiliser un abonnement Qobuz.
    • BubbleUPnP. Configurer Qobuz dans BubbleUPnP.
    • LUMIN. On installe le package upmpdcli-qobuz et configurer qobuzuser/qobuzpass/qobuzformatid dans /etc/upmpdcli.conf. Pour utiliser qobuz, il faut sélectionner UpMpd[OdroidHC1]-mediaserver
  • Spotify : Installer le package upmpdcli-spotify en suivant la doc. Pour utiliser spotify, il faut sélectionner UpMpd[OdroidHC1]-mediaserver. Voici les commandes
    [Installer libspotify] 
    wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
    wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
    apt-get update
    apt-get install libspotify12
    
    [Méthode alternative, plus simple : download directement le package debian]
    wget http://apt.mopidy.com/dists/buster/non-free/binary-armhf/libspotify12_12.1.103-0mopidy1_armhf.deb
    dpkg -i libspotify12_12.1.103-0mopidy1_armhf.deb
    
    [Installer upmpdcli-spotify]
    apt-get install upmpdcli-spotify
    
    [Configurer spotifyuser et spotifypass dans /etc/upmpdcli.conf]
    
    [Suivre https://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html#SPOTIFY-AUTH]
    [Si /var/cache/upmpdcli/spotify n'existe pas, on peut le créer manuellement avant de copier le fichier "token"]
    mkdir /var/cache/upmpdcli/spotify
    chown upmpdcli /var/cache/upmpdcli/spotify
    
    [Relancer upmpdcli]
    systemctl restart upmpdcli
  • LMS : LMS s'installe facilement et fonctionne bien. Il suffit de télécharger et installer le package Debian pour ARM de la version stable community release sur la page http://downloads.slimdevices.com/
    root@odroidxu4:~# http://downloads.slimdevices.com/LogitechMediaServer_v7.9.1/logitechmediaserver_7.9.1_arm.deb
    root@odroidxu4:~# apt-get install libio-socket-ssl-perl
    root@odroidxu4:~# dpkg -i logitechmediaserver_7.9.1_arm.deb
    • Aller sur la page http://ip_de_OdroidHC1:9000 pour configurer LMS. Pas besoin de prendre un compte mysqueezebox.com. Installer le plugin Qobuz
    • Si on l'utilise pas, il suffit de le désactiver
      root@odroidxu4:~# systemctl stop logitechmediaserver
      root@odroidxu4:~# systemctl disable logitechmediaserver

Divers

  • Systemd :
    • default.target :
      root@odroidxu4:~# systemctl get-default
      graphical.target
      
      root@odroidxu4:~# ls -l /lib/systemd/system/default.target 
      lrwxrwxrwx 1 root root 16 Oct 27 11:03 /lib/systemd/system/default.target -> graphical.target

      Changer-le en multi-user.target :

      root@nanopineo2:~# systemctl set-default multi-user.target
      Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target.
      
      root@odroidxu4:~# systemctl get-default
      multi-user.target 
      
      root@odroidxu4:~# reboot
    • Autres services inutiles :
      systemctl stop hostapd keyboard-setup remote-fs.target getty@tty1 serial-getty@ttyS0
      systemctl disable hostapd keyboard-setup remote-fs.target getty@tty1 serial-getty@ttyS0
      systemctl mask serial-getty@ttyS0
  • Captures d'écran de htop (ancienne installation debian stretch) après 16 jours uptime (on remarque que MinimServer a ouvert 50 threads)


    • Pour la barre Mem, la couleur jaune correspond au cache (appuyer sur la touche h dans htop pour voir l'explication)
      root@odroidxu4:~# free -m
                    total        used        free      shared  buff/cache   available
      Mem:           1996         141         196          21        1659        1775
      Swap:           998           1         996
debian/armbian_stretch_odroid_hc1.txt · Dernière modification: 2019/11/15 16:58 par bz31