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.
So the first step was to install switchroot Ubuntu. I just flashed the image file to an SD card, booted it with hekate (a boot loader for the NX) and followed the setup wizard.
After that was done, I plugged in the USB Ethernet dongle, opened a terminal on the switch and executed lsusb
.
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 boot.scr
file.
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
and ip
:
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β’.