Yesterday I had the idea that it would be cool if I turned a Nintendo Switch (will be referred to as NX to avoid confusion as NX is the code name for the Nintendo Switch) console into an actual network switch. I thought about it a bit and realized that it would be doable in hardware at least, since the NX docking station has USB-A ports.
Next step is software, while I have done some NX homebrew stuff in the past, it didn’t sound fun implementing this pretty much from scratch. But then I remembered switchroot that has Android and Linux for the NX and setting up a network switch inside Linux would be easy.
After that was done, I plugged in the USB Ethernet dongle, opened a terminal on the switch and executed
cynthia@cynthia-switch:~$ lsusb Bus 002 Device 002: ID 057e:200c Nintendo Co., Ltd Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 009: ID 057e:200a Nintendo Co., Ltd Bus 001 Device 011: ID 2357:0601 Bus 001 Device 005: ID 0b95:7e2b ASIX Electronics Corp. AX88772B Bus 001 Device 012: ID 04d9:0348 Holtek Semiconductor, Inc. Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub Bus 001 Device 002: ID 057e:200c Nintendo Co., Ltd Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
My dongle is
2357:0601, For some reason it does not have a vendor name but I confirmed that was not unique to the switch so proceeded along.
However, when I checked
ip link all I saw was interfaces internal to the NX like
lo and the WiFi interface, but no USB network card.
To help debug why my USB interfaces were not showing up, I used the
usb-devices tool and saw
Driver=(none) for my USB Ethernet dongle. :(
I was honestly a bit confused and not sure what to do next, I tried re-compiling the kernel and all sorts of stuff that didn’t help.
Then I realized. On the download page for switchroot there is an updates folder, so I tried that.
All I had to do was download the update zip and extract it to the boot partition of the SD card after I had deleted the
boot directory and the
I put the SD card in the NX again and booted it back up with hekate.
Upon opening a terminal and running
ip link I was presented with this:
16: enx9cebe816215d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 9c:eb:e8:16:21:5d brd ff:ff:ff:ff:ff:ff 18: enx8416f90eae20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 84:16:f9:0e:ae:20 brd ff:ff:ff:ff:ff:ff
🎉🎉🎉 Finally I had gotten the dongles to work and it was only the configuration left!
So I just did some quick configuration with
brctl addbr br0 # Adding the bridge interface # Adding the physical interface to the bridge brctl addif br0 enx8416f90eae20 enx9cebe816215d ip link set br0 up # Set the bridge interface to up
Then I connected one dongle to my LAN and one to a computer that I used for testing.
And after checking twitter.com on the test computer finally it was all working!
A speedtest shows that it can at least do 90Mbps (one of my dongles is only 100Mbps).
If this was to your liking then maybe you will find my Twitter interesting @bitcynth.
I have some other plans related to this that will be posted soon™.