Połączenie z Raspberry Pi Zero przez USB
Raspberry Pi Zero, to dziwny komputerek... Pozbawiony łączności, ze złączem mini-HDMI, oraz jednym portem micro-USB, jest nieco większy niż od listka gumy do żucia i kosztuje ok. 20 zł oczywiście w przeliczeniu $5 na złotówki, bo chyba w żadnym sklepie nie znajdziemy w tej cenie. Jeśli ktoś zaczyna swoją przygodę z tego rodzaju zabawkami, to może sobie sprawić coś takiego. I własnie tym materiałem udowodnie że poza kablem micro-USB (takim do przesyłania danych, nie tylko ładowania), kartą microSD i komputerem z GNU/Linux-em nie potrzebujemy innych akcesoriów, aby móc z niego korzystać.
- Wgrywamy system operacyjny na kartę możemy uzyć do tego programu Balena Etcher, lub klasycznego polecenia
dd
. - Po nagraniu systemu na kartę, pojawią nam się w systemie dwie dodatkowe partycje. Przechodzimy do partycji oznaczonej jako boot.
- Otwieramy plik config.txt i na samym dole dopisujemy
dtoverlay=dwc2
. Plik zapisujemy i zamykamy. - Otwieramy plik cmdline.txt i po słowie
rootwait
dopisujemymodules-load=dwc2,g_ether
. - Bezpośrednio na partycji boot tworzymy nowy pusty plik o nazwie ssh.
- Wyciągamy kartę, wkładamy ją do naszego RPI. Następnie kabel podłączamy do komputera i do portu USB Raspberry (to bardzo ważne)!
- W systemie (Ubuntu 20.04 amd64), powinna pojawić się kolejna karta sieciowa. Jeśli pojawia się łaczenie oraz dostajemy
powiadomienie że
Włączenie sieci nie powiodło się
", musimy ustawić nasz interfejs na local-link. Jeśli używamy środowiska Gnome, to przechodzimy doUstawienia
->Sieć
-> przycisk opcji przyEthernet (USB)
-> zakładkęIPv4
->Metoda IPv4: Tylko Local-Link
->Zastosuj
, następnie wyłączamy włączamy interfejs, klikając na przełącznik obok przycisku opcji. Teraz powinniśmy dostać jeden z adresów z tej klasy 169.254.X.Y/16 i moć się połączyć z RPI. - Łączymy sie z Raspberry przez SSH:
$ ssh pi@raspberrypi.local
- Po zalogowaniu, powinniśmy od razu zmienić hasło. Zatem
passwd
. Po zmienia hasła przydałoby się połączenie z Internetem. Żeby chociaż zaktualizować system. Na nowej karcie terminala, na naszym komputerze uruchamiamy przekazywanie pakietów oraz za pomocą iptables załączamy NAT. Jeśli martwimy się o bałagan, to po zabawie z RPI, robimyreboot
i wszystko wraca do normy. Załączenie przekazywania pakietów:
$ sudo sysctl net.ipv4.ip_forward=1
Włączenie NAT-u:
$ sudo iptables -t nat -I POSTROUTING -o <interfejs sieciowy naszego komputera> -j MASQUERADE
To jeszcze nie wszystkie czynności, aby RPI 0 miało dostęp do Internetu. Wydając polecenie
ip a
odszukujemy intefejsu 'usb0', zapamiętujemy, lub zapisujemy gdzieś przypisany mu adres. Następnie na Raspberry dodaje trasę bramy domyślnej wskazując właśnie ten adres.$ sudo ip route add default via <adres interfejsu USB0 na naszym komputerze>
Po dodaniu bramy, możemy smiało wydawać polecenia:
apt update
orazapt upgrade
Jak widać na powyższych czynnościach nie potrzeba masy akcesoriów jakby się mogło wydawać patrząc na to jak niepozorne jest to urządzenie. Gdyby nie to że trzeba wlutować pinów do GPIO, to korzytał bym RPI Zero przy swoich projektach.
~xf0r3m