Raspberry Zero : Configuration en clé USB-Gadget

Raspberry Zero : Configuration en clé USB-Gadget.

Permet de faire une connexion réseau entre un ordinateur hôte et un Raspberry Zero via l’Usb en mode Ethernet (USB-Gadget).

* Configuration matériel et logiciel :
Ordinateur hôte :
– Distribution de travail : Lubuntu 18.04
– @ip : 192.168.12

Raspberry Zero :
– Raspberry Zero WH : https://www.gotronic.fr/art-carte-raspberry-pi-zero-wh-27670.htm
– Distribution : 2017-02-16-raspbian-jessie
Après différents tests, avec les dernières version de Raspbian/Raspberry OS, l’USB-Gadget ne fonctionne malheureusement pas.

* Liens :
https://www.blaess.fr/christophe/2017/02/05/raspberry-pi-zero-et-usb-net/
https://www.framboise314.fr/attribuer-une-adresse-apipa-fixe-a-un-raspberry-pi-headless/

1/ Sous l’ordinateur hôte, création du répertoire de travail.

util01@station66:~$ mkdir RASPIZERO
util01@station66:~$ cd RASPIZERO/
util01@station66:~/RASPIZERO$ 

2/ Sous l’ordinateur hôte, téléchargement de Raspbian 2017-02-16.

util01@station66:~/RASPIZERO$ wget -c https://downloads.raspberrypi.org/raspbian/images/raspbian-2017-02-27/2017-02-16-raspbian-jessie.zip

3/ Sous l’ordinateur hôte, décompression de l’archive.

util01@station66:~/RASPIZERO$ unzip 2017-02-16-raspbian-jessie.zip 

4/ Sous l’ordinateur hôte, copier l’image sur la carte micro-sd.

util01@station66:~/RASPIZERO$ sudo dd bs=4M if=2017-02-16-raspbian-jessie.img of=/dev/mmcblk0 

5/ Sous l’ordinateur hôte, retirer la carte micro-sd.

6/ Sous le Raspberry Zero, insérer la carte micro-sd.

7/ Effectuer un démarrage du Raspberry Zero avec un clavier, souris, écran en hdmi et une alimentation externe.

8/ Sous le Raspberry Zero, effectuer la configuration du bureau LXDE.

– Configuration réseau :

Configuration de Raspbian sous Raspberry Zero sans écran

– Installation de logiciel.

– Désinstallation de logiciel inutile :

Supprimer des paquetages inutiles

– Configuration d’application :

Désactivation l’écran de veille

– Compilation de jeu :

Installation : Zandronum 3.1-alpha / Eureka 1.27b / WadC 3 / Oblige 7.70 / Restfull-doom

– Configuration du bureau.

– Configuration du système.

 Activation de SSH
 Activation de VNC
 Memory split : 128 Mo

9/ Activation du pilote USB.

Ouvrir :

/boot/config.txt

Ajouter à la fin :

dtoverlay=dwc2

10/ Activation des modules ‘usb-ethernet’.

Ouvrir :

/boot/cmdline.txt

Chercher :

rootwait

Ajouter après:

modules-load=dwc2,g_ether

11/ Activation du service ssh.

Ouvrir :

/etc/rc.local

Chercher :

exit 0

Ajouter avant :

update-rc.d  ssh  enable
invoke-rc.d  ssh  start

12/ Arrêter proprement le Raspberry Zero.

13/ Branchement du Raspberry Zero.

Brancher le Raspberry Zero de son port micro-usb de données vers sur le port USB de l’ordinateur hôte via un cable USB.

14/ Sous l’ordinateur hôte, vérification de la présence du Raspberry Zero.

util01@station66:~$ dmesg
...
[ 4816.380239] usb 1-2: new high-speed USB device number 5 using ehci-pci
[ 4816.924213] usb 1-2: device descriptor read/64, error -71
[ 4817.528182] usb 1-2: device descriptor read/64, error -71
[ 4817.764221] usb 1-2: new high-speed USB device number 6 using ehci-pci
[ 4817.921161] usb 1-2: New USB device found, idVendor=0525, idProduct=a4a2
[ 4817.921165] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4817.921167] usb 1-2: Product: RNDIS/Ethernet Gadget
[ 4817.921169] usb 1-2: Manufacturer: Linux 4.4.48+ with 20980000.usb
[ 4817.966243] cdc_ether 1-2:1.0 usb0: register 'cdc_ether' at usb-0000:00:1d.7-2, CDC Ethernet Device, c6:e0:37:22:d4:0b
[ 4817.967411] usbcore: registered new interface driver cdc_ether
[ 4817.972182] usbcore: registered new interface driver cdc_subset
[ 4818.007025] cdc_ether 1-2:1.0 enp0s29f7u2: renamed from usb0
[ 4818.027115] IPv6: ADDRCONF(NETDEV_UP): enp0s29f7u2: link is not ready
[ 4818.067332] IPv6: ADDRCONF(NETDEV_UP): enp0s29f7u2: link is not ready

15/ Sous l’ordinateur hôte, vérification des interfaces réseaux disponibles.

Vérifier la présence de l’interface réseau : enp0s29f7u2

util01@station66:~$ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1e:90:32:1d:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.17/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
       valid_lft 81467sec preferred_lft 81467sec
    inet 192.168.1.40/24 brd 192.168.1.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::d54c:cd23:a30e:4fc9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s29f7u2:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether c6:e0:37:22:d4:0b brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2393:aa40:fcdd:b996/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

16/ A partir de l’interface de gestion réseau.

- Sur l'icône 'réseau' de la barre de tâche : [BGS ]
    - [Modifier les connexions...]
        - [Ethernet]
            - Sélectionner la connection 'Ethernet' où dans la liste des 'Périphérique' =  enp0s19f2u3 (C6:E0:37:22:D4:0B)
           
        - [Paramètres IPv4]
            - Méthode : Lien-Local uniquement
            
        -[Enregistrer]    

17/ Pour le gestionnaire de réseau, attendre que l’indicateur de connexion réseau du panel ait acquis une adresse ip statique.

18/ Vérification.

L’interface réseau ‘usb-ethernet’ a une adresse ip de type APIPA.

util01@station66:~$ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1e:90:32:1d:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.17/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
       valid_lft 81319sec preferred_lft 81319sec
    inet 192.168.1.40/24 brd 192.168.1.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::d54c:cd23:a30e:4fc9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s29f7u2:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether c6:e0:37:22:d4:0b brd ff:ff:ff:ff:ff:ff
    inet 169.254.190.69/16 brd 169.254.255.255 scope link noprefixroute enp0s29f7u2
       valid_lft forever preferred_lft forever
    inet6 fe80::ba88:c373:16de:e7c6/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

19/ Test de connexion ssh.

util01@station66:~$ ssh pi@doompizero.local
The authenticity of host 'doompizero.local (192.168.1.39)' can't be established.
ECDSA key fingerprint is SHA256:U0IDJKn1luzr4n44A4jk+uCvnEZd/NLX5uSoDqzveyE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'doompizero.local,192.168.1.39' (ECDSA) to the list of known hosts.
pi@doompizero.local's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 22 22:40:21 2021
pi@doompizero:~ $ 

20/ Sous le Raspeberry Zero, vérifier les interfaces réseaux.

pi@doompizero:~ $ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: usb0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2e:de:57:f2:8c:7a brd ff:ff:ff:ff:ff:ff
    inet 169.254.122.128/16 brd 169.254.255.255 scope global usb0
       valid_lft forever preferred_lft forever
    inet6 fe80::6b7f:882b:8068:903d/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:55:52:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.39/24 brd 192.168.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::97c1:5dab:5bc4:f5d7/64 scope link 
       valid_lft forever preferred_lft forever

21/ Changement de résolution du bureau.

pi@doompizero:~ $ sudo raspi-config
- 7 Advanced Options     Configure advanced settings       
    - A5 Resolution        Set a specific screen resolution
        - DMT Mode 16 1024x768 60Hz 4:3 

22/ Installation de VNC sur l’ordinateur hôte et activation du serveur VNC sur le Raspberry Zero.

https://miniordi.hacktech.dev/raspberry-zero-configuration-vnc/

23/ Visualisation du bureau avec VncViewer.

util01@station66:~$ vncviewer doompizero.local