Kvůli nestabilní WiFi v jednom z míst instalace nelze použít Raspberry Pi Zero W, ale je nutné připojení prostřednictvím LAN.
K Raspberry Pi lze použít nějaký ten "USB LAN", nebo "HAT" (který stejně chce to USB). Ale tohle řešení mi nabourává estetický vzhled krabičky – blokuje to jeden USB konektor.
Rozhodl jsem se proto použít ethernet modul, který se připojuje přes SPI přímo na GPIO header maliny. Volba padla na „Mini Ethernet modul W5500“ - protože je skladem a za dobrou cenu na českém bastlířském Aliexpresu. Navíc už je k tomu zpracovaný návod na Instructables - How to Use Ethernet on Raspberry Pi Zero W
Takže tento článek je v podstatě jen rychlé shrnutí ať to nemusím příště hledat. Navíc jsem přidal nastavení pevné MAC adresy
HW, zapojení
Připojení W5500 k Raspberry Pi je dle schématu níže. Realizace „ustřuhnuté kšandy“ , ehm IDE propojovací placatý kabel. GND a 3.3V možno použít kterékoliv piny z GPIO headeru.
Konfigurace Raspberry Pi
Jde to naklikat v raspi-config, ale přes úpravu /boot/config.txt je to rychlejší. Stačí přidat dvě volby – povolit SPI a naloadovat patřičný modul při bootu
sudo nano /boot/config.txt
dtparam=spi=on
dtoverlay=w5500
Další parametry (int_pin, rychlost, Chip Select) viz README
Reboot a zkontrolovat, jestli je přítomen další síťový adapter – ifconfig …
Pevná MAC adresa
MAC adresa modulu se generuje nádodně při každém rebootu, což dělá bordel v DHCP, DNS a tak podobně - protože má malina pokaždé jinou IP.
Tohle je možno obhackovat přidáním pravidel/service pro systemd a skriptíku, který danému rozhraní přidělí MAC natvrdo.
sudo nano /lib/systemd/system/setmac.service
[Unit]
Description=DSet the MAC address for the W5500 net adapter at eth0
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-eth0.device
After=sys-subsystem-net-devices-eth0.device
[Service]
Type=oneshot
ExecStart=/path/to/setmac.sh
[Install]
WantedBy=multi-user.target
Samotný skriptík generuje MAC adresu ze seriového čísla Raspberry Pi. Případně to tam můžete nahackovat natvrdo.
sudo nano /path/to/setmac.sh
sudo /sbin/ip link set dev eth0 address `/bin/sed -n "s/Serial.*: 00000000..(..)(..)(..)/b8:27:eb:1:2:3/p" /proc/cpuinfo`
Nezapomenut na práva a automatické spuštění/povolení service
sudo systemctl enable setmac.service
sudo chmod +x /path/to/setmac.sh
Obdobný postup lze aplikovat i pro moduly s LAN8720, stačí pouze naloadovat jiný modul. (nezkoušel jsem)