Nietypowa karta sieciowa dla Raspberry Pi
Niedawno w moje ręce wpadło Raspberry Pi Zero W. Niestety łączność z nim jest jedynie przez WiFi (w przypadku Zero W) lub wcale. Dlatego trzeba było kombinować ;) I oto wykombinowałem 2 sposoby: prosty i ciekawy. Poniższy tutorial zadziała bez problemu także ze zwykłymi wersjami maliny, jeżeli potrzebowalibyście dodatkowych portów ethernetowych.
Sposób prosty
Tutaj krótka piłka: wklepałem w internecie frazę „usb ethernet” i na jednym z ogólnoświatowych portali aukcyjnych znalazłem kartę sieciową z końcówka micro-b w skandalicznie niskiej cenie. Po podłączeniu jej do raspberry zaczęła działać od razu bez żadnych sterowników, a identyfikowała się jako kontroler realteka. Całkiem nieźle, jeżeli chcemy nasze tanie rpi zero doposażyć w jeszcze tańszą kartę sieciową.
Jedynym mankamentem tutaj jest dziwna nazwa interfejsu sieciowego tej karty, ale to da się zmienić :)
Nie byłbym jednak sobą, gdybym nie spróbował metody alternatywnej – nieco trudniejszej, ale dającej więcej satysfakcji :)
Sposób ciekawy
Kojarzycie zapewne populary moduł sieciowy ENC28J60. Skoro da się go podłączyć do Arduino i z powodzeniem używać w celu połączenia z internetem to co stoi na przeszkodzie, żeby podłączyć go do Raspberry Pi?
Istnieje jedyna słuszna odpowiedź a to pytanie: absolutnie nic.
Podłączenie
ENC28J60 posiada wyprowadzoną magistralę SPI i to jej właśnie użyjemy w RPi do połączenia z kartą sieciową. Nazwy pinów w poniższej tabelce odpowiadają tym ze strony https://pinout.xyz/.
[table id=2 /]
Konfiguracja
Skonfigurować kartę można na 2 sposoby. Pierwszy z nich wymaga dostępu do terminala, drugi jedynie do karty pamięci malinki.
Sposób 1
Wpisujemy w konsoli
sudo raspi-config
Następnie wybieramy po kolei opcje Interfacing options > SPI > Yes po czym wychodzimy z konfiguratora.
Teraz wpisujemy polecenie
sudo nano /boot/config.txt
I na końcu pliku dopisujemy takie linijki:
# ENC28J60 Ethernet Support dtoverlay=enc28j60
Zapisujemy wciskając kombinację Ctrl + O i wychodzimy z nano.
Teraz restartujemy raspberry poleceniem
sudo reboot
i bum, nasza karta powinna już działać wyśmienicie :)
Sposób 2
Ten sposób wymaga od nas podłączenia karty pamięci raspberry do komputera i ręczna edycja pliku config.txt na partycji boot.
Ważną rzeczą jest, aby odkomentować (usunąć znak #) z takiej linijki:
# dtparam=spi=on
Jeżeli nie ma jej w tym pliku, to należy dopisać:
dtparam=spi=on
Tak jak w poprzednim sposobie na końcu pliku dopisujemy też
# ENC28J60 Ethernet Support dtoverlay=enc28j60
Teraz możemy włożyć kartę z powrotem do raspberry i uruchomić je ciesząc się w pełni spraną kartą.
Testowanie
Jeżeli z jakichś powodów karta nam nie działa możemy wpisać w konsoli
dmesg | grep spi
Powinien wyświetlić się nam log co system robił na magistralach SPI. To chyba pierwsze miejsce, gdzie należy szukać przyczyny błędu.
W celu sprawdzenia adresu IP możemy wydać polecenie
ifconfig
lub przeskanować sieć programem np. Advanced IP Scanner.
w jakiej cenie była karta micro usb->rj45?
Znalazłem w historii i było to dokładnie 1,82$, aczkolwiek zarówno ta karta jak i karta zrobiona z ENC28j60 nie są zbyt wydajne i mogą służyć jedynie jako zapewnienie podstawowego łącza lub ciekawostka. Do bardziej łączo-żernych spraw się nie nadadzą. Sprawdzałem tę kartę speedtestem to miałem transfer na poziomie 5 mbitów/s, podczas gdy po kablu z oryginalnej karty sieciowej w laptopie było to 360 mbit/s