Using the switch on Turris Omnia with Debian

After installing Debian on Turris Omnia there are a few more steps needed to make use of the network switch.

The Armada 385 CPU provides three network interfaces. Two are connected to the switch (but only one of them is used to "talk" to the switch), and one is routed directly to the WAN port.

After booting you might have to issue the following commands to make the devices representing the five external ports of the switch appear and functional:

# ip link set eth1 up
# modprobe mv88e6xxx

After that you can use the network devices lan0 to lan4 like normal network devices. To make them actually behave as you would expect from a network switch you have to put them into a bridge. The driver then offloads forwarding between the ports to the switch hardware such that the cpu doesn't need to bother for each single packet.

To automate setup of the bridged ports I used systemd-networkd as follows:

# echo mv88e6xxx > /etc/modules-load.d/switch.conf
# printf '[Match]\nPath=platform-f1030000.ethernet\n[Link]\n#MACAddress=...\nName=eth1\n' > /etc/systemd/network/00-platform-f1030000-eth1.link
# printf '[NetDev]\nName=brlan\nKind=bridge\n' > /etc/systemd/network/brlan.netdev
# printf '[Match]\nName=brlan\n\n[Network]\nLinkLocalAddressing=ipv6\n' > /etc/systemd/network/brlan.network
# printf '[Match]\nName=lan[01234]\n\n[Network]\nBridge=brlan\nBindCarrier=eth1\n' > /etc/systemd/network/lanX.network
# printf '[Match]\nName=eth1\n' > /etc/systemd/network/eth1.network
# systemctl enable --now systemd-networkd.service

You also might want to mask NetworkManager and/or ifupdown to not interfere with the above setup. And obviously you might want to add some more options to brlan.network to configure the addresses used there. See systemd.network(1).

social