Outils pour utilisateurs

Outils du site


raspberry_pi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
raspberry_pi [2017/09/17 07:06] – [Debian] simonraspberry_pi [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1
Ligne 1: Ligne 1:
-====== Raspberry Pi ====== 
  
-Le Raspberry Pi est un micro-ordinateur conçu par [[https://www.raspberrypi.org/about/|la Fondation Raspberry Pi]]. 
- 
-===== Choix de l'OS ===== 
-On peut trouver les [[https://www.raspberrypi.org/downloads/|systèmes d'exploitations officiellement supportés]] sur le site de la fondation. J'utilise beaucoup [[Raspbian]] (basée sur [[Debian]]). 
- 
-==== Debian ==== 
-Une version (non supportée officiellement en septembre 2017) de Debian Stretch est [[https://wiki.debian.org/RaspberryPi3|disponible]]. 
- 
-<code bash> 
-$ wget https://people.debian.org/~stapelberg/raspberrypi3/2017-03-22/2017-03-22-raspberry-pi-3-stretch-PREVIEW.img 
- 
-# ddrescue -D --force 2017-03-22-raspberry-pi-3-stretch-PREVIEW.img /dev/sdb 
-GNU ddrescue 1.22 
-     ipos:  417857 kB, non-trimmed:        0 B,  current rate:  16580 kB/s 
-     opos:  417857 kB, non-scraped:        0 B,  average rate:  16714 kB/s 
-non-tried:  582142 kB,  bad-sector:        0 B,    error rate:       0 B/s 
-  rescued:  417857 kB,   bad areas:        0,        run time:         25s 
-pct rescued:   41.78%, read errors:        0,  remaining time:         35s 
-                              time since last successful read:          0s 
-Copying non-tried blocks... Pass 1 (forwards) 
-</code> 
- 
-<WRAP center round alert 60%> 
-Ça n'a pas booté lors de mon essais... 
-</WRAP> 
- 
- 
-==== Raspbian ==== 
-Tous les détails sur la page de [[Raspbian]]. 
-==== Ubuntu Mate ==== 
-On peut trouver [[Ubuntu Mate]] pour Raspberry Pi sur [[https://ubuntu-mate.org/raspberry-pi/|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 :  
-<code bash> 
-$ sudo aptitude install gddrescue xz-utils 
-</code> 
- 
-Il faut utiliser [[unxz]] pour décompresser l'image téléchargée : 
-<code bash> 
-$ unxz ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz 
-</code> 
- 
-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. 
-<code bash> 
-$ lsblk  
-NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT 
-sda      8:0    0 149,1G  0 disk  
-├─sda1   8:   0 145,2G  0 part / 
-├─sda2   8:   0     1K  0 part  
-└─sda5   8:   0   3,9G  0 part [SWAP] 
-sdb      8:16    16G    0 disk  
-└─sdb1   8:17    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     
-</code> 
- 
-==== HypriotOS ==== 
-HypriotOS est une distribution basée sur Raspbian, optimisée pour l'utilisation de [[Docker]]. Elle est disponible sur le site d'[[http://blog.hypriot.com/|Hypriot]], dans la partie [[http://blog.hypriot.com/downloads/|downloads]]. On suit la même procédure que pour l'[[Ubuntu Mate]] :  
-<code bash> 
-$ lsblk  
-NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT 
-sda      8:0    0 149,1G  0 disk  
-├─sda1   8:   0 145,2G  0 part / 
-└─sda5   8:   0   3,9G  0 part [SWAP] 
-sdb      8:16     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      
-</code> 
- 
-==== MINIBIAN ==== 
-[[Minibian]] ([[https://minibianpi.wordpress.com/|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 ===== 
-==== Redémarrer le wifi automatiquement ==== 
-Voici un script trouvé sur [[https://paste.k3a.me/view/449a6f1c|k3a.me]] qui permet de vérifier si le wifi est toujours fonctionnel et si ce n'est pas le cas, de le redémarrer. 
- 
-<WRAP center round important 60%> 
-Pas encore testé! 
-</WRAP> 
- 
-==== 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 : 
-<code bash> 
-$ 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 
-</code> 
- 
-Une autre possibilité consiste à utiliser ce script ([[http://unix.stackexchange.com/questions/144029/command-to-determine-ports-of-a-device-like-dev-ttyusb0|source (stackexchange.com)]]) : 
-<code bash>$ 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 
-</code> 
- 
-On peut également utiliser [[lsusb]] : 
-<code bash> 
-$ lsusb  
-(...)  
-Bus 001 Device 006: ID 26ac:0011   
-(...) 
- 
-$ lsusb -v | more 
-(...) 
-Bus 001 Device 008: ID 26ac:0011   
-Device Descriptor: 
-  bLength                18 
-  bDescriptorType         1 
-  bcdUSB               2.00 
-  bDeviceClass            2 Communications 
-  bDeviceSubClass          
-  bDeviceProtocol          
-  bMaxPacketSize0        64 
-  idVendor           0x26ac  
-  idProduct          0x0011  
-  bcdDevice            1.01 
-  iManufacturer           1 3D Robotics 
-  iProduct                2 PX4 FMU v2.x 
-  iSerial                 3 0 
-  bNumConfigurations      1 
-  Configuration Descriptor: 
-    bLength                 9 
-    bDescriptorType         2 
-    wTotalLength           62 
-    bNumInterfaces          2 
-    bConfigurationValue     1 
-    iConfiguration          4 Bulk 
-    bmAttributes         0x80 
-      (Bus Powered) 
-    MaxPower              500mA 
-    Interface Descriptor: 
-      bLength                 9 
-      bDescriptorType         4 
-      bInterfaceNumber        0 
-      bAlternateSetting       0 
-      bNumEndpoints           1 
-      bInterfaceClass         2 Communications 
-      bInterfaceSubClass      2 Abstract (modem) 
-      bInterfaceProtocol      1 AT-commands (v.25ter) 
-      iInterface              0  
-      CDC Header: 
-        bcdCDC               1.10 
-      CDC ACM: 
-        bmCapabilities       0x06 
-          sends break 
-          line coding and serial state 
-      CDC Union: 
-        bMasterInterface        0 
-        bSlaveInterface          
-      Endpoint Descriptor: 
-        bLength                 7 
-        bDescriptorType         5 
-        bEndpointAddress     0x81  EP 1 IN 
-        bmAttributes            3 
-          Transfer Type            Interrupt 
-          Synch Type               None 
-          Usage Type               Data 
-        wMaxPacketSize     0x0040  1x 64 bytes 
-        bInterval              10 
-    Interface Descriptor: 
-      bLength                 9 
-      bDescriptorType         4 
-      bInterfaceNumber        1 
-      bAlternateSetting       0 
-      bNumEndpoints           2 
-      bInterfaceClass        10 CDC Data 
-      bInterfaceSubClass      0 Unused 
-      bInterfaceProtocol      0  
-      iInterface              0  
-      Endpoint Descriptor: 
-        bLength                 7 
-        bDescriptorType         5 
-        bEndpointAddress     0x03  EP 3 OUT 
-        bmAttributes            2 
-          Transfer Type            Bulk 
-          Synch Type               None 
-          Usage Type               Data 
-        wMaxPacketSize     0x0040  1x 64 bytes 
-        bInterval               1 
-      Endpoint Descriptor: 
-        bLength                 7 
-        bDescriptorType         5 
-        bEndpointAddress     0x82  EP 2 IN 
-        bmAttributes            2 
-          Transfer Type            Bulk 
-          Synch Type               None 
-          Usage Type               Data 
-        wMaxPacketSize     0x0040  1x 64 bytes 
-        bInterval               1 
-Device Status:     0x0000 
-  (Bus Powered) 
-(...) 
-</code> 
- 
-Un autre moyen de récupérer des informations, [[udevadm]] :  
-<code bash>$ 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" 
-</code> 
- 
-Ou encore, en regardant dans les logs :  
-<code bash> 
-$ 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 
-</code> 
- 
-=== Fixer le chemin d'accès vers du matériel en série === 
-Pour fixer le chemin d'accès vers du matériel en série, on doit créer une règle [[udev]]. Le plus compliqué est de retrouver les informations nécessaires dans les différentes commandes saisies précédemment. 
-<code bash> 
-$ sudo nano /etc/udev/rules.d/99-usb-serial.rules 
- 
-$ sudo cat /etc/udev/rules.d/99-usb-serial.rules  
-SUBSYSTEM=="tty", ATTRS{idVendor}=="26ac", ATTRS{idProduct}=="0011", SYMLINK+="autopilot" 
- 
-#on recharge les règles udev 
-$ sudo udevadm control --reload 
- 
-#matériel débranché : 
-$ ls -al /dev/a* 
-crw------- 1 root root 10, 235 aoû 16 13:50 /dev/autofs 
- 
-#matériel branché : 
-$ ls -alh /dev/a* 
-crw------- 1 root root 10, 235 aoû 16 14:40 /dev/autofs 
-lrwxrwxrwx 1 root root       7 aoû 16 14:43 /dev/autopilot -> ttyACM0 
-</code> 
- 
-Finalement, pour être compatible avec différents autopilot du même fabricant (différentes versions du même produit), j'ai retiré la notion d'''idProduct'' dans la règle udev. 
-<code bash> 
-$ sudo cat /etc/udev/rules.d/99-usb-serial.rules  
-SUBSYSTEM=="tty", ATTRS{idVendor}=="26ac", SYMLINK+="autopilot" 
-</code> 
- 
-( sources : [[http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/|hintshop.ludvig.co.nz]] et [[https://www.domoticz.com/wiki/PersistentUSBDevices|domoticz.com]] ) 
raspberry_pi.1505632013.txt.gz · Dernière modification : 2020/08/09 12:59 (modification externe)