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 optionsSPIYes 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.