Building Switch USB Inspector: A Small USB Inspection Tool Written in C

I've been working on an open-source project called Switch USB Inspector, and I'm happy to share its first release: v0.1!

The project started with a simple idea: create a lightweight tool capable of inspecting connected USB devices and displaying useful information about them, including Nintendo hardware.

Why C and libusb?

I chose C because I wanted a small native application with direct access to USB functionality.

The project uses libusb 1.0, which provides the interface needed to enumerate USB devices and retrieve their descriptors.

What does it do?

Switch USB Inspector currently supports:

  • Enumerating connected USB devices.
  • Displaying Vendor ID and Product ID.
  • Reading USB version and device class.
  • Showing the number of configurations.
  • Retrieving manufacturer, product and serial number descriptors when available.
  • Identifying common USB device classes.
  • Recognizing some Nintendo-related USB identifiers.

A look at the first release

Version 0.1 is still an early release. It targets Linux x86-64 and requires the appropriate USB runtime dependencies and device permissions.

Windows support is planned for the future.

One important limitation: standard USB descriptors do not expose internal hardware specifications such as CPU or GPU configurations. This project focuses on information that the USB device actually makes available.

What's next?

There is plenty of room for improvement. Future versions may bring additional device information, improved identification and broader platform support.

Try it out!

The source code and releases are available here:

The project is open source, and contributions, suggestions and bug reports are welcome.

If you check it out, I'd love to hear your feedback!