Outils pour utilisateurs

Outils du site


core:picore_rpi3

piCore-12.0 (64-bit) sur Raspberry Pi 3

  • Créer un lecteur de musique Squeezelite (client pour LMS) sur Raspberry Pi 3
  • piCore est un Raspberry Pi port de Tiny Core Linux.
  • Il y a plus d'informations sur l'usage de piCore dans la page de mon installation précédente piCore-9.0.3, qui est une installation différente pour un player UPnP.

Installer piCore-12.0

  1. Sur mon PC de bureau sous Linux, prendre le fichier piCore-12.0.zip et la mettre sur une carte micro SD (/dev/sdb dans mon cas) :
    wget http://tinycorelinux.net/12.x/aarch64/releases/RPi/piCore64-12.0.zip
    unzip piCore64-12.0.zip
    sudo dd bs=4M if=piCore64-12.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
    tc@box:~$ filetool.sh -b
  5. Étendre la deuxième partition et créer une troisième grosse partition swap (voir la section “SD card partitioning” de README). Voici un exemple avec une carte micro SD de 8G (si la commande sudo mkswap /dev/mmcblk0p3 donne un message d'erreur mkswap: write error: Text file busy, faire d'abord la commande sudo swapoff /dev/mmcblk0p3).
    • La partition swap sera reconnue et utilisée automatiquement par piCore au prochain boot. Elle est nécessaire pour la compilation de programmes.
      tc@box:~$ free -m
                    total        used        free      shared  buff/cache   available
      Mem:            912          38         856          11          17         860
      Swap:          1649           0        1649

WiFi

  • Si on a besoin d'utiliser le WiFi intégré au lieu de Ethernet.
    tce-load -wi wifi.tcz firmware-rpi-wifi.tcz
    tc@box:~$ sudo reboot
    tc@box:~$ sudo wifi.sh    [configurer le wifi]
    tc@box:~$ vi /opt/bootlocal.sh    [ajouter une ligne: wifi.sh -a -w 2>&1 > /tmp/wifi.log]
    tc@box:~$ filetool.sh -b
    • :!: wifi.sh enregistre l'info dans le fichier /home/tc/wifi.db qui est utilisé au pour la connexion wifi au boot. Il ne faut pas le supprimer !
    • Maintenant, plus besoin de Ethernet.

ALSA

  • tc@box:~$ 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 [Headphones     ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
                          bcm2835 Headphones
     1 [U20X1          ]: USB-Audio - USB Audio 2.0(X1)
                          Singxer USB Audio 2.0(X1) at usb-3f980000.usb-1.3, high speed

    Pour la désactiver,

    tc@box:~$ mount /mnt/mmcblk0p1
    tc@box:~$ vi /mnt/mmcblk0p1/config.txt
    [Il suffit de commenter la ligne "dtparam=audio=on" en ajoutant un # devant : #dtparam=audio=on]                                                                                                                         
    tc@box:~$ sudo reboot
    
    tc@box:~$ cat /proc/asound/cards
     0 [U20X1          ]: USB-Audio - USB Audio 2.0(X1)
                          Singxer USB Audio 2.0(X1) at usb-3f980000.usb-1.3, high speed
  • Vérifier/Confogurer ALSA pour volume au maximum 100 :
    tc@box:~$ sudo alsamixer
    Error opening terminal: xterm-256color.    [si cette erreur, exécuter la ligne suivante]
    tc@box:~$ export TERM=xterm                
    tc@box:~$ sudo alsamixer
    [vérifier les réglages de la carte son, il n'y a rien à changer pour mon interface USB Singxer-X1]
    ###### A faire seulement si des modifications sont faites avec la commande "sudo alsamixer"
    ### Sinon, pas besoin de cette partie sur "alsactl" :
    tc@box:~$ sudo mkdir -p /var/lib/alsa
    tc@box:~$ sudo alsactl store
    tc@box:~$ echo "var/lib/alsa" >> /opt/.filetool.lst
    tc@box:~$ vi /opt/bootlocal.sh    [ajouter une ligne: alsactl restore]
    tc@box:~$ filetool.sh -b
    ############################################################################

Sqeezelite

  • Installer squeezelite :
    tc@box:~$ wget https://sourceforge.net/projects/lmsclients/files/squeezelite/linux/squeezelite-1.9.8.1307-aarch64.tar.gz
    tc@box:~$ tar zxvf squeezelite-1.9.8.1307-aarch64.tar.gz
    tc@box:~$ mv squeezelite /mnt/mmcblk0p2/tce/
    tc@box:~$ vi /opt/bootlocal.sh
    ##### ajouter une ligne après la ligne wifi #####
    /mnt/mmcblk0p2/tce/squeezelite -n SqueezeliteRPi3 -o hw:0,0 -C 10
    ################################################################# 
    tc@box:~$ filetool.sh -b
    tc@box:~$ sudo reboot
  • Quelques informations, et lancer squeezelite avec l'option -d all=debug :
    tc@box:~$ ls -lh /mnt/mmcblk0p2/tce/squeezelite
    -rwxrwxr-x    1 tc       staff       3.9M Dec  5 14:28 /mnt/mmcblk0p2/tce/squeezelite
    
    tc@box:~$ ldd /mnt/mmcblk0p2/tce/squeezelite
            linux-vdso.so.1 (0x0000007fb88d7000)
            libdl.so.2 => /lib/libdl.so.2 (0x0000007fb844f000)
            libpthread.so.0 => /lib/libpthread.so.0 (0x0000007fb8420000)
            librt.so.1 => /lib/librt.so.1 (0x0000007fb8408000)
            libasound.so.2 => /usr/local/lib/libasound.so.2 (0x0000007fb8324000)
            libm.so.6 => /lib/libm.so.6 (0x0000007fb8289000)
            libc.so.6 => /lib/libc.so.6 (0x0000007fb813f000)
            /lib/ld-linux-aarch64.so.1 (0x0000007fb88ab000)
            
    tc@rpi3:~$ sudo /mnt/mmcblk0p2/tce/squeezelite -n SqueezeliteRPi3 -o hw:0,0 -C 10 -d all=debug
    [13:33:53.671009] stream_init:448 init stream
    [13:33:53.671251] stream_init:449 streambuf size: 2097152
    [13:33:53.681620] output_init_alsa:940 init output
    [13:33:53.681775] output_init_alsa:980 requested alsa_buffer: 40 alsa_period: 4 format: any mmap: 1
    [13:33:53.681852] output_init_common:353 outputbuf size: 3528000
    [13:33:53.682031] output_init_common:377 idle timeout: 10000
    [13:33:53.686483] output_init_common:425 supported rates: 768000 705600 384000 352800 192000 176400 96000 88200 48000 44100
    [13:33:53.708170] output_init_alsa:1006 memory locked
    [13:33:53.708326] output_init_alsa:1012 glibc detected using mallopt
    [13:33:53.709115] output_init_alsa:1032 set output sched fifo rt: 45
    [13:33:53.709200] decode_init:153 init decode
    [13:33:53.709385] register_dsd:908 using dsd to decode dsf,dff
    [13:33:53.709432] register_alac:555 using alac to decode alc
    [13:33:53.709495] register_faad:663 using faad to decode aac
    [13:33:53.709541] register_vorbis:380 using vorbis to decode ogg
    [13:33:53.709586] register_opus:324 using opus to decode ops
    [13:33:53.709631] register_flac:332 using flac to decode ogf,flc
    [13:33:53.709676] register_pcm:483 using pcm to decode aif,pcm
    [13:33:53.709739] register_mad:423 using mad to decode mp3
    [13:33:53.709784] decode_init:194 include codecs:  exclude codecs:
    [13:33:53.710618] discover_server:788 sending discovery
    [13:33:53.712771] discover_server:799 got response from: 192.168.0.23:3483
    [13:33:53.712909] slimproto:887 connecting to 192.168.0.23:3483
    [13:33:53.727403] slimproto:926 connected
    [13:33:53.727629] sendHELO:142 mac: b8:27:eb:bd:97:94
    [13:33:53.727736] sendHELO:144 cap: CanHTTPS=1,Model=squeezelite,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Firmware=v1.9.8-1307,ModelName=SqueezeLite,MaxSampleRate=768000,dsf,dff,alc,aac,ogg,ops,ogf,flc,aif,pcm,mp3
    [13:33:53.737322] process:521 strm
    [13:33:53.737503] process_strm:274 strm command q
    [13:33:53.737608] decode_flush:236 decode flush
    [13:33:53.737675] output_flush:438 flush output buffer
    [13:33:53.737762] sendSTAT:189 STAT: STMf
    [13:33:53.737951] process:521 strm
    [13:33:53.738020] process_strm:274 strm command q
    [13:33:53.738112] decode_flush:236 decode flush
    [13:33:53.738175] output_flush:438 flush output buffer
    [13:33:53.738239] sendSTAT:189 STAT: STMf
    [13:33:53.738395] process:521 setd
    [13:33:53.738489] sendSETDName:248 set playername: SqueezeliteRPi3
    [13:33:53.738612] process:521 setd
    [13:33:53.738723] process:521 aude
    [13:33:53.738786] process_aude:415 enable spdif: 1 dac: 1
    [13:33:53.738917] process:521 audg
    [13:33:53.738988] process_audg:433 audg gainL: 65536 gainR: 65536 adjust: 0
    [13:33:53.739064] set_volume:233 setting internal gain left: 65536 right: 65536
    [13:33:53.991169] process:521 strm
    [13:33:53.991361] process_strm:274 strm command t
    [13:33:53.991536] sendSTAT:189 STAT: STMt
    [13:33:59.094674] process:521 strm
    ...
    ...
    • squeezelite doit être lancer par root pour avoir
      [13:33:53.708170] output_init_alsa:1006 memory locked
       
      [13:33:53.709115] output_init_alsa:1032 set output sched fifo rt: 45

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é)
      openssh.tcz
      wifi.tcz
      firmware-rpi-wifi.tcz
      alsa.tcz
      alsa-utils.tcz

      et le fichier /opt/bootlocal.sh

      #!/bin/sh
      
      # To start serial terminal /w console
      # Add the following to the cmdline.txt console=serial0,115200
      # Reference https://www.raspberrypi.org/documentation/configuration/uart.md for UART configuration
      # Uncomment the next line
      # /usr/sbin/startserialtty &
      
      # Set CPU frequency governor to ondemand (default is performance)
      echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
      
      # Load modules - i2c-dev needs manually loaded even if enabled in config.txt
      #/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
      
      /mnt/mmcblk0p2/tce/squeezelite -n SqueezeliteRPi3 -o hw:0,0 -C 10

Divers

  • Changer le hostname : changer le hostname box en rpi3
    tc@box:~$ vi /opt/bootsync.sh
    tc@box:~$ filetool.sh -b
    tc@box:~$ sudo reboot
    
    tc@rpi3:~$ uname -a
    Linux rpi3 5.4.51-piCore-v8 #1 SMP PREEMPT Tue Jul 28 16:02:58 EDT 2020 aarch64 GNU/Linux
    tc@rpi3:~$ date
    Thu Dec 31 11:13:32 UTC 2020
  • Visualiser les processus avec htop :
    tc@rpi3:~$ tce-load -wi htop.tcz
    tc@rpi3:~$ htop
    Error opening terminal: xterm-256color.
    tc@rpi3:~$ export TERM=xterm
    tc@rpi3:~$ htop
    • Note : htop est installé avec ses dépendances htop.tcz*, aterm.tcz*, libXetx.tcz*, libxcb.tcz*, libICE.tcz*, libSM.tcz*, libXdmcp.tcz*, libXau.tcz*, libX11.tcz*.
  • 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 supprimer le package et ses dépendances installées dans /mnt/mmcblk0p2/tce/optional.
  • Manipuler les packages *.tcz :
    tce-load -wi 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
  • Backup : Sur une machine linux et avec la carte sd reconnue comme /dev/sdb
    sudo dd bs=4M if=/dev/sdb of=piCore-12.0_backupMySDCard.img
core/picore_rpi3.txt · Dernière modification: 2021/01/01 15:29 de bz31