Outils pour utilisateurs

Outils du site


core:picore_8.0_rpi3

piCore-8.0 sur Raspberry Pi 3

  • Créer un lecteur de musique UPnP OpenHome et AirPlay sur Raspberry Pi 3.
  • piCore est un Raspberry Pi port de Tiny Core Linux.

Installation

  1. Sur mon PC de bureau sous Linux, prendre le fichier piCore-8.0.zip et la mettre sur une carte micro SD :
    wget http://tinycorelinux.net/8.x/armv6/releases/RPi/piCore-8.0.zip
    unzip piCore-8.0.zip
    sudo dd bs=4M if=piCore-8.0.img of=/dev/sdb
    sudo sync
  2. Lire IMPORTANT et README.
  3. Booter la RPi avec une connexion Ethernet et se connecter via ssh avec login/passwd tc/piCore.
  4. Sauvegarder les clés SSH générées avec la commande
    filetool.sh -b
  5. Étendre la deuxième partition et créer une troisième grosse partition swap après login sur la RPi (voir la section “SD card partitioning” de README). Voici un exemple.
    • La partition swap sera reconnue et utilisée automatiquement par piCore au boot. Elle est nécessaire pour la compilation de programmes.

Extensions

WiFi

  • Je vais utitiliser le WiFi intégré.
    tce-load -wi wifi.tcz firmware-rpi3-wireless.tcz
    sudo reboot
    sudo wifi.sh    [configurer le wifi]
    vi /opt/bootlocal.sh    [ajouter une ligne: wifi.sh -a -w 2>&1 > /tmp/wifi.log]
    filetool.sh -b
    • :!: wifi.sh enregistre l'info dans le fichier /home/tc/wifi.db qui sera utilisé automatiquement au boot pour la connexion wifi. Il ne faut pas le supprimer !
    • Maintenant, plus besoin de Ethernet.

ALSA

  • tce-load -wi alsa.tcz alsa-utils.tcz
  • La carte son interne est activée par défaut :
    tc@box:~$ cat /proc/asound/cards
     0 [ALSA           ]: bcm2835 - bcm2835 ALSA
                          bcm2835 ALSA
     1 [UAC2           ]: USB-Audio - hiFaceTWO UAC2
                          M2Tech hiFaceTWO UAC2 at usb-3f980000.usb-1.3, high speed

    Pour la désactiver,

    mount /mnt/mmcblk0p1
    vi /mnt/mmcblk0p1/config.txt
    ===========
    Il suffit de commenter la ligne dtparam=audio=on :
    # Enable onboard audio                                                       
                                                                                   
    #dtparam=audio=on
    ===========
    sudo reboot
  • Configure ALSA :
    sudo alsamixer    [vérifier les réglages de la carte son, il n'y a rien à changer pour mon interface usb]
    ###### A faire seulement si des modifications dans la commande "sudo alsamixer" ####
    ### Sinon, pas besoin de cette partie sur "alsactl" :
    sudo alsactl store
    echo "var/lib/alsa" >> /opt/.filetool.lst
    vi /opt/bootlocal.sh    [ajouter une ligne: alsactl restore]
    ############################################################################
    sudo vi /etc/asound.conf [voir le contenu plus bas]
    echo "etc/asound.conf" >> /opt/.filetool.lst
    filetool.sh -b
    • :!: N'utilisant pas la carte son interne de RaspberryPi, l'interface usb devient la carte son numéro 0. Pas besoin de alsa-config.tcz. Je configure directement mon interface usb dans le fichier /etc/asound.conf :
      pcm.!default {
              type hw
              card 0    [ou bien UAC2 au lieu de 0]
      }
      
      ctl.!default {
              type hw
              card 0    [ou bien UAC2 au lieu de 0]
      }

MPD Minimaliste

  • Compiler et installer un MPD minimaliste.
    #### Créer un dossier persistant de compilation ####
    sudo mkdir /mnt/mmcblk0p2/compile
    sudo chown tc:staff /mnt/mmcblk0p2/compile
    
    #### Préparation pour compiler ####
    tce-load -wi compiletc.tcz squashfs-tools.tcz binutils-dev.tcz    [compilation générale]
    tce-load -wi libasound-dev.tcz glib2-dev boost-dev.tcz libmad-dev.tcz curl-dev.tcz faad2-dev.tcz mpg123-dev.tcz libsndfile-dev.tcz sqlite3-dev.tcz lame-dev.tcz expat2-dev.tcz libid3tag-dev.tcz    [pour mpd]
    
    #### D'abord libmpdclient (voir http://repo.tinycorelinux.net/6.x/armv6/tcz/src/libmpdclient/) ####
    mkdir /mnt/mmcblk0p2/compile/libmpdclient
    cd /mnt/mmcblk0p2/compile/libmpdclient/
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libmpdclient/libmpdclient-2.10.tar.xz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libmpdclient/libmpdclient.build
    sh libmpdclient.build
    mv /tmp/libmpdclient/libmpdclient.tcz* /mnt/mmcblk0p2/tce/optional/
    mv /tmp/libmpdclient-dev/libmpdclient-dev.tcz* /mnt/mmcblk0p2/tce/optional/
    tce-load -i libmpdclient.tcz libmpdclient-dev.tcz
    
    #### MPD ####
    mkdir /mnt/mmcblk0p2/compile/mpd
    cd /mnt/mmcblk0p2/compile/mpd
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/mpd/mpd-0.19.19.tar.xz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/mpd/mpd.build
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/mpd/mpd.conf
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/mpd/mpd.tcz.dep
    sh mpd.build
    mv /tmp/mpd/mpd.tcz* /mnt/mmcblk0p2/tce/optional/
    mv /tmp/mpd-doc/mpd-doc.tcz* /mnt/mmcblk0p2/tce/optional/
    cp mpd.tcz.dep  /mnt/mmcblk0p2/tce/optional/
    
    #### tester ####
    tce-load -i mpd.tcz
    sudo mpd /usr/local/etc/mpd.conf
    
    #### Configurer ####
    vi /mnt/mmcblk0p2/tce/onboot.lst    [ajouter une ligne : mpd.tcz]
    vi /opt/bootlocal.sh    [ajouter une ligne: mpd /usr/local/etc/mpd.conf]
    filetool.sh -b
    sudo reboot

Upmpdcli

  • Préparation pour compiler Upmpdcli :
    tce-load -i compiletc.tcz squashfs-tools.tcz binutils-dev.tcz
    tce-load -i curl-dev.tcz expat2-dev.tcz libmpdclient-dev.tcz    [pour upmpdcli]
  • Compiler/Installer :
    #### libupnp ####
    mkdir /mnt/mmcblk0p2/compile/libupnp
    cd /mnt/mmcblk0p2/compile/libupnp
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libupnp/libupnp-1.6.19.jfd3.tar.gz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libupnp/libupnp.build
    sh libupnp.build
    mv /tmp/libupnp/libupnp.tcz* /mnt/mmcblk0p2/tce/optional/
    mv /tmp/libupnp-dev/libupnp-dev.tcz* /mnt/mmcblk0p2/tce/optional/
    tce-load -i libupnp.tcz libupnp-dev.tcz
    
    #### libupnpp ####
    mkdir /mnt/mmcblk0p2/compile/libupnpp
    cd /mnt/mmcblk0p2/compile/libupnpp
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libupnpp/libupnpp-0.14.1.tar.gz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libupnpp/libupnpp.build
    sh libupnpp.build
    mv /tmp/libupnpp/libupnpp.tcz* /mnt/mmcblk0p2/tce/optional/
    mv /tmp/libupnpp-dev/libupnpp-dev.tcz* /mnt/mmcblk0p2/tce/optional/
    tce-load -i libupnpp.tcz libupnpp-dev.tcz
    
    #### upmpdcli ####
    mkdir /mnt/mmcblk0p2/compile/upmpdcli
    cd /mnt/mmcblk0p2/compile/upmpdcli
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/upmpdcli/upmpdcli-1.1.3.tar.gz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/upmpdcli/upmpdcli.build
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/upmpdcli/upmpdcli.tcz.dep
    sh upmpdcli.build
    mv /tmp/upmpdcli/upmpdcli.tcz /mnt/mmcblk0p2/tce/optional/
    cp upmpdcli.tcz.dep /mnt/mmcblk0p2/tce/optional/
    tce-load -i upmpdcli.tcz
    #############################
    
    #### tester ####
    upmpdcli -D -c /usr/local/etc/upmpdcli.conf
    ############################################
  • Configurer :
    vi /mnt/mmcblk0p2/tce/onboot.lst    [ajouter upmpdcli.tcz]
    cp /usr/local/etc/upmpdcli.conf /home/tc/
    vi /home/tc/upmpdcli.conf    [changer "friendlyname = " et "ohproductroom =", ajouter/modifier la liste des radios, ...]
    vi /opt/bootlocal.sh    [ajouter une ligne: su tc -c "upmpdcli -D -c /home/tc/upmpdcli.conf"]
    filetool.sh -b
    sudo reboot

Shairport Sync (AirPlay)

  • Note : Utiliser tinysvcmdn au lieu de avahi pour réduire les dépendances.
  • tce-load -i compiletc.tcz squashfs-tools.tcz binutils-dev.tcz
    tce-load -i libasound-dev.tcz
    tce-load -wi openssl-dev.tcz popt-dev.tcz autoconf.tcz automake.tcz
    
    # Il manque encore deux extensions libconfig et libdaemon.
    
    # D'abord libconfig :
    mkdir /mnt/mmcblk0p2/compile/libconfig
    cd /mnt/mmcblk0p2/compile/libconfig
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libconfig/libconfig-1.5.tar.gz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libconfig/libconfig.build
    sh libconfig.build
    mv /tmp/libconfig/libconfig.tcz* /mnt/mmcblk0p2/tce/optional/
    mv /tmp/libconfig-dev/libconfig-dev.tcz* /mnt/mmcblk0p2/tce/optional/
    tce-load -i libconfig.tcz libconfig-dev.tcz
     
    # Ensuite libdaemon (voir http://repo.tinycorelinux.net/6.x/armv6/tcz/src/libdaemon/):
    mkdir /mnt/mmcblk0p2/compile/libdaemon
    cd /mnt/mmcblk0p2/compile/libdaemon
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libdaemon/libdaemon-0.14.tar.gz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/libdaemon/libdaemon.build
    sh libdaemon.build 
    mv /tmp/libdaemon/libdaemon.tcz* /mnt/mmcblk0p2/tce/optional/
    mv /tmp/libdaemon-dev/libdaemon-dev.tcz* /mnt/mmcblk0p2/tce/optional/
    tce-load -i libdaemon.tcz libdaemon-dev.tcz
    
    # Maintenant shairport-sync
    mkdir /mnt/mmcblk0p2/compile/shairport-sync
    cd /mnt/mmcblk0p2/compile/shairport-sync
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/shairport-sync/shairport-sync-2.8.4.tar.gz
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/shairport-sync/shairport-sync.build
    wget http://download.tuxfamily.org/bz31notes/picore/tcz_src/shairport-sync/shairport-sync.tcz.dep
    sh shairport-sync.build
    mv /tmp/shairport-sync/shairport-sync.tcz* /mnt/mmcblk0p2/tce/optional/
    cp shairport-sync.tcz.dep /mnt/mmcblk0p2/tce/optional/
    tce-load -i shairport-sync.tcz
    
    #### tester ####
    shairport-sync
    ############################################
    
    vi /mnt/mmcblk0p2/tce/onboot.lst    [ajouter shairport-sync.tcz]
    cp /etc/shairport-sync.conf /home/tc/shairport-sync.conf
    vi /opt/bootlocal.sh    [ajouter deux lignes: "sleep 5" et "shairport-sync -c /home/tc/shairport-sync.conf &"]
    filetool.sh -b
    sudo reboot

Nettoyage final

  • Lorsque tout marche bien, on optimise l'utilisation de RAM. Pour ne charger que le nécessaire au boot, supprimer tous les fichiers non nécessaires dans /home/ et /opt/. Enlever les packages non nécessaires dans /mnt/mmcblk0p2/tce/onboot.lst. Et reboot !
    • Le fichier /mnt/mmcblk0p2/tce/onboot.lst (wifi activé)
      firmware-rpi3-wireless.tcz
      wifi.tcz
      openssh.tcz
      alsa.tcz
      alsa-utils.tcz
      mpd.tcz
      upmpdcli.tcz
      shairport-sync.tcz

      et le fichier /opt/bootlocal.sh

      #!/bin/sh
      
      # Start serial terminal
      /usr/sbin/startserialtty &
      
      # Set CPU frequency governor to ondemand (default is performance)
      echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
      
      # Load modules
      /sbin/modprobe i2c-dev
      
      # Start openssh daemon
      /usr/local/etc/init.d/openssh start
      
      # ------ Put other system startup commands below this line
      wifi.sh -a -w 2>&1 > /tmp/wifi.log
      #alsactl restore
      mpd /usr/local/etc/mpd.conf
      su tc -c "upmpdcli -D -c /home/tc/upmpdcli.conf"
      # Attendre 5 secondes avant de charger l'extension shairport-sync :
      sleep 5
      shairport-sync -c /home/tc/shairport-sync.conf &

Divers

  • Désactiver/Supprimer un package : Pour ne pas le charger au boot, il suffit de l'enlever dans /mnt/mmcblk0p2/tce/onboot.lst et reboot. Ensuite si on veut le supprimer complètement, il suffit de le supprimer dans /mnt/mmcblk0p2/tce/optional.
  • Manipuler les packages *.tcz :
    tce-load -i squashfs-tools.tcz
    # Lister les fichier :
    unsquashfs -l /mnt/mmcblk0p2/tce/optional/nom_package.tcz
    # Extraire un package :
    unsquashfs -f -d /chemin_vers_dossier-destination nom_package.tcz
  • Changer le hostname : changer le hostname box en rpi3
    vi /opt/bootsync.sh
    filetool.sh -b
  • SWAP : “By default piCore has a zlib compressed swap in RAM, automatically sized to 25% of available RAM, 106 Mbyte on 'Version B' boards. This can be disabled with the NOZSWAP boot code.” (README). Donc ajouter l'option nozswap dans /mnt/mmcblk0p1/cmdline3.txt (monter d'abord la partition : mount /mnt/mmcblk0p1). Attention, c'est cmdline3.txt pour RPi3, et pas cmdline.txt pour les autres. <code>tc@rpi3:~$ free -m total used free shared buffers cached Mem: 925 99 825 9 7 36 -/+ buffers/cache: 55 869 Swap: 1999 0 1999 </code> (la partition swap sur la carte SD est de 2GB) et on peut le comparer avec la situation sans l'option nozswap <code>tc@box:~$ free -m total used free shared buffers cached Mem: 925 100 825 9 7 36 -/+ buffers/cache: 56 869 Swap: 2222 0 2222 </code> * GPU : Par défaut, 64MB de RAM est alloué pour GPU. Ajouter <code>gpu_mem=16</code> vers la fin du fichier /mnt/mmcblk0p1/config.txt pour réduire à 16MB (minimal). On récupère 973-925=48MB de RAM : <code>tc@rpi3:~$ free -m total used free shared buffers cached Mem: 973 99 873 9 7 36 -/+ buffers/cache: 55 917 Swap: 1999 0 1999 </code>
  • Pas besoin de i2c, i2s et spi, …. Désactiver les dans /mnt/mmcblk0p1/config.txt
    ...
    ...
    
    gpu_mem=16                                                                     
                                                                                  
    #----------------------------------------------------                          
    # Enable peripheral buses                                                      
                                                                                  
    #dtparam=i2c=on,spi=on,i2s=on
                                                                                   
    # Enable onboard audio                                                         
                                                                                   
    #dtparam=audio=on
            
    # Enable serial console                                                       
                                                                                  
    #enable_uart=1
                                                                                            
    [PI3]                                                                         
    dtoverlay=pi3-disable-bt                                                                 
  • Backup : Sur une machine linux et avec la carte sd reconnue comme /dev/sdb
    sudo dd bs=4M if=/dev/sdb of=piCore-8.0_backupMySDCard.img

Installer l'image obtenue directement

  • RPi3 avec une connexion Ethernet/wifi et une carte son ou interface USB.
  • Installer l'image complète piCore-8.0_UpMpd_ShairportSync.img.
    • Pour configurer une connexion wifi :
      sudo wifi.sh
      vi /opt/bootlocal.sh    [ajouter une ligne (avant la ligne du lancement de MPD): wifi.sh -a -w 2>&1 > /tmp/wifi.log]
      filetool.sh -b
core/picore_8.0_rpi3.txt · Dernière modification: 2017/10/13 20:12 par bz31