Outils pour utilisateurs

Outils du site


raspberry_pi

Ceci est une ancienne révision du document !


Raspberry Pi

Le Raspberry Pi est un micro-ordinateur conçu par la Fondation Raspberry Pi

Choix de l'OS

On peut trouver les systèmes d'exploitations officiellement supportés sur le site de la fondation. J'utilise beaucoup Raspbian (basée sur Debian).

Raspbian

Tous les détails sur la page de Raspbian.

Ubuntu Mate

On peut trouver Ubuntu Mate pour Raspberry Pi sur leur site. J'ai téléchargé la dernière LTS en torrent. Ils proposent d'utiliser ddrescue à la place de dd. Pour l'installer :

$ sudo aptitude install gddrescue xz-utils

Il faut utiliser unxz pour décompresser l'image téléchargée :

$ unxz ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz

L'image est assez grande (~8Go). Il faut donc choisir une carte SD de 16Go. Comme toujours, on vérifie l'emplacement de la carte SD avec lsblk avant de copier l'image dessus.

$ lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 149,1G  0 disk 
├─sda1   8:1    0 145,2G  0 part /
├─sda2   8:2    0     1K  0 part 
└─sda5   8:5    0   3,9G  0 part [SWAP]
sdb      8:16   1  16G    0 disk 
└─sdb1   8:17   1  16G    0 part /media/ordi/blabla
 
$ sudo ddrescue -D --force ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img /dev/sdb
[sudo] Mot de passe de salon : 
GNU ddrescue 1.19
Press Ctrl-C to interrupt
rescued:     8053 MB,  errsize:       0 B,  current rate:    9830 kB/s
   ipos:     8052 MB,   errors:       0,    average rate:   10582 kB/s
   opos:     8052 MB, run time:   12.68 m,  successful read:       0 s ago
Finished    

HypriotOS

HypriotOS est une distribution basée sur Raspbian, optimisée pour l'utilisation de Docker. Elle est disponible sur le site d'Hypriot, dans la partie downloads. On suit la même procédure que pour l'Ubuntu Mate :

$ lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 149,1G  0 disk 
├─sda1   8:1    0 145,2G  0 part /
└─sda5   8:5    0   3,9G  0 part [SWAP]
sdb      8:16   1   7,4G  0 disk 
 
$ sudo ddrescue -D --force Téléchargements/hypriotos-rpi-v0.8.0.img /dev/sdb
GNU ddrescue 1.19
Press Ctrl-C to interrupt
rescued:     1363 MB,  errsize:       0 B,  current rate:    8126 kB/s
   ipos:     1363 MB,   errors:       0,    average rate:    8519 kB/s
   opos:     1363 MB, run time:    2.66 m,  successful read:       0 s ago
Finished     

MINIBIAN

Minibian (site) est une distribution basée sur Debian Jessie dont l'objectif est d'être très légère et de ne pas embarquer de logiciels superflus.

Trucs et astuces

Port série

Repérer et récupérer des informations sur le port série

On débranche/rebranche et on lance la commande suivante :

$ dmesg | grep tty
(...)
[  852.021751] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 1009.732832] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device

Une autre possibilité consiste à utiliser ce script (source (stackexchange.com)) :

$ nano find-uart-device.sh
 
$ cat find-uart-device.sh
#!/bin/bash
 
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && continue
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && continue
        echo "/dev/$devname - $ID_SERIAL"
    )
done
 
$ chmod +x find-uart-device.sh
 
$ ./find-uart-device.sh
/dev/ttyACM0 - 3D_Robotics_PX4_FMU_v2.x_0

On peut également utiliser lsusb :

pi@raspberrypi:~ $ lsusb 
(...) 
Bus 001 Device 006: ID 26ac:0011  
(...)

Un autre moyen de récupérer des informations, udevadm :

$ udevadm info -a -n /dev/ttyACM0 
(...)
  looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/tty/ttyACM0':
    KERNEL=="ttyACM0"
    SUBSYSTEM=="tty"
    DRIVER==""
(...)
  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.2"
    ATTRS{idVendor}=="26ac"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="8"
    ATTRS{configuration}=="Bulk"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0101"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="15"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="3D Robotics"
    ATTRS{removable}=="removable"
    ATTRS{idProduct}=="0011"
    ATTRS{bDeviceClass}=="02"
    ATTRS{product}=="PX4 FMU v2.x"
 
  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="02"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="0424"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="2mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="5"
    ATTRS{bcdDevice}=="0200"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="113"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="9514"
    ATTRS{bDeviceClass}=="09"
 
  looking at parent device '/devices/platform/soc/3f980000.usb/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="1"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{bcdDevice}=="0404"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="3f980000.usb"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="25"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 4.4.13-v7+ dwc_otg_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="DWC OTG Controller"
 
  looking at parent device '/devices/platform/soc/3f980000.usb':
    KERNELS=="3f980000.usb"
    SUBSYSTEMS=="platform"
    DRIVERS=="dwc_otg"
    ATTRS{hnp}=="HstNegScs = 0x0"
    ATTRS{srp}=="SesReqScs = 0x1"
    ATTRS{regvalue}=="invalid offset"
    ATTRS{hsic_connect}=="HSIC Connect = 0x1"
    ATTRS{guid}=="GUID = 0x2708a000"
    ATTRS{mode}=="Mode = 0x1"
    ATTRS{srpcapable}=="SRPCapable = 0x1"
    ATTRS{regdump}=="Register Dump"
    ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
    ATTRS{ggpio}=="GGPIO = 0x00000000"
    ATTRS{hprt0}=="HPRT0 = 0x00001005"
    ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 370 msecs (37 jiffies)"
    ATTRS{driver_override}=="(null)"
    ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
    ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
    ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
    ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
    ATTRS{busconnected}=="Bus Connected = 0x1"
    ATTRS{hcddump}=="HCD Dump"
    ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"
    ATTRS{spramdump}=="SPRAM Dump"
    ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
    ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
    ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
    ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
    ATTRS{devspeed}=="Device Speed = 0x0"
    ATTRS{fr_interval}=="Frame Interval = 0x1d4c"
    ATTRS{rem_wakeup_pwrdn}==""
    ATTRS{bussuspend}=="Bus Suspend = 0x0"
    ATTRS{buspower}=="Bus Power = 0x1"
    ATTRS{hnpcapable}=="HNPCapable = 0x1"
    ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 920 msecs (92 jiffies)"
    ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
    ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
    ATTRS{regoffset}=="0xffffffff"
 
  looking at parent device '/devices/platform/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"
 
  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
 
$ udevadm info -a -n /dev/ttyACM0 | grep idVendor
    ATTRS{idVendor}=="26ac"
    ATTRS{idVendor}=="0424"
    ATTRS{idVendor}=="1d6b"
 
$ udevadm info -a -n /dev/ttyACM0 | grep idProduct
    ATTRS{idProduct}=="0011"
    ATTRS{idProduct}=="9514"
    ATTRS{idProduct}=="0002"
 
$ udevadm info -a -n /dev/ttyACM0 | grep serial
    ATTRS{serial}=="0"
    ATTRS{serial}=="3f980000.usb"
 
$ udevadm info -a -n /dev/ttyACM0 | grep manufacturer
    ATTRS{manufacturer}=="3D Robotics"
    ATTRS{manufacturer}=="Linux 4.4.13-v7+ dwc_otg_hcd"
 
$ udevadm info -a -n /dev/ttyACM0 | grep product
    ATTRS{product}=="PX4 FMU v2.x"
    ATTRS{product}=="DWC OTG Controller"

Ou encore, en regardant dans les logs :

$ sudo cat /var/log/messages | grep SerialNumber
(...)
Aug 16 14:10:22 raspberrypi kernel: [ 1060.450258] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Aug 16 14:10:22 raspberrypi kernel: [ 1060.450296] usb 1-1.2: SerialNumber: 0

Fixer le chemin d'accès vers du matériel en série

$ sudo nano /etc/udev/rules.d/99-usb-serial.rules
 
$ sudo cat /etc/udev/rules.d/99-usb-serial.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="1-1.2", 
ATTRS{idProduct}=="1.0", ATTRS{serial}=="0", SYMLINK+="autopilot"
 
#matériel débranché :
$ ls -al /dev/a*
crw------- 1 root root 10, 235 aoû 16 13:50 /dev/autofs
 
#matériel branché :
$ ls -al /dev/a*
crw------- 1 root root 10, 235 aoû 16 13:50 /dev/autofs

( source (hintshop.ludvig.co.nz) )

raspberry_pi.1471349941.txt.gz · Dernière modification : 2020/08/09 12:59 (modification externe)