Why does the Nintendo Switch only work with USB-LAN Adapters with the AX88179 chipset

networkingnintendo-switch

I consider myself to have decent knowledge of networking fundamentals, but I have no clue what the role of chipsets in LAN Adapters is.
I can see that they probably run a small process that converts USB Signals to Ethernet Signals, but I don't understand how some chipsets are compatible with a certain hardware and others aren't – shouldn't the data, as soon as it leaves the device, be the same? Why can the Switch support only one chipset? And is it intentional, or is it a lot of work to add "support" for more chipsets?

Best Answer

The data is indeed the same, but it's packaged in a different way.

The adapters do not simply convert USB signals to Ethernet signals, and the computer cannot simply start sending Ethernet frames over the USB connection. Instead, it still has to act like a regular USB host – the OS will identify the adapter as a USB device, enumerate interfaces and endpoints it offers, then send each Ethernet frame using a USB transfer. The adapter's chip receives the USB transfer, extracts the data, then re-sends the data over Ethernet.

However, there are several different standards describing how a USB device could provide Ethernet emulation. Newer ones such as RNDIS were created to provide more capabilities that older ones such as ECM couldn't satisfy.

And on top of that, some manufacturers have decided to invent their own customized protocols instead – ASIX with its AX88179 chipset line is indeed one of them, using neither RNDIS nor ECM nor any other standard. (This does allow them to provide more control over the Ethernet adapter's behavior – ethtool on Linux shows a great deal more information about the connection status than it does with other adapters.)

The computer's OS needs to have a driver for each method it wants to support, because it has to know which endpoints are to be used, how the transfers must be formatted, etc. Some operating systems only come with ECM drivers. Others support RNDIS as well (Android tethering uses it, and you used to need drivers in WinXP). And Nintendo Switch apparently has only drivers for ASIX AX88179.