Raspberry Pi - ethernet over USB

February 19, 2021

Założenia

  1. Konfiguracja od zera świeżej malinki.
  2. Dostęp przez SSH.
  3. Maszyna do której podłączamy malinkę to Linux.
  4. Przykład oparty o mojego Debiana 10 i Raspberry Pi OS Lite z 2021-01-11.

Nagrywamy obraz

Ściągamy obraz Raspberry Pi OS z oficjalnego źródła, wgrywamy na kartę pamięci.

wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-lite.zip
unzip 2021-01-11-raspios-buster-armhf-lite.zip
ddrescue 2021-01-11-raspios-buster-armhf-lite.img /dev/mmcblk0 --force

Konfiguracja

Podmontowujemy partycję boot aby dokonać zmian.

mount /dev/mmcblk0p1 /mnt

Włączamy automatyczną konfigurację ssh.

cd /mnt
touch ssh

Teraz jeszcze Ethernet over USB.

Na końcu config.txt dodać linię

dtoverlay=dwc2

Edytujemy cmdline.txt dodając:

modules-load=dwc2,g_ether

Połączenie

Podpinamy malinkę pod USB. Czekamy aż ukończy automatyczną konfigurację. Na naszym Linuxie powinien pojawić się sieciowy interfejs usbX lub enxXXXXXXXXXXXX (np. usb0 lub enxda548c914597). Aby połączyć się do malinki musimy znać jej adres IP. Zakładamy, że nie ma serwera DHCP w sieci. Jak więc połączyć się? Odpowiedzią jest ipv6 i link-local.

Wysyłamy ping na adres broadcastu:

ping6 -I usb0 ff02::1

ping6

Tablicę NDP sąsiadów możemy sprawdzić następująco:

ip -6 neighbour show

neighbour

Teraz możemy połączyć się do malinki:

ssh -B enx56ddfaf2ae37 -6 pi@fe80::8517:d5e2:c82c:c941

Standardowe dane logowania to użytkownik pi z hasłem raspberry.