There’s a compact and affordable USB-based industrial [[https://www.waveshare.com/usb-to-uart-i2c-spi-jtag.htm|digital interface adapter]] by [[https://www.waveshare.com/wiki/|Waveshare]] that lets you communicate with a variety of digital interfaces: UART, I²C, SPI (not Quad-SPI), and JTAG. I’ve been using this multi-bus adapter for a while now. It’s proven reliable enough that I’ve recommended it to others, and I think it may as well deserve a spot in your toolkit as a genuinely useful utility device. As a side note, compared to the **Bus Pirate**, it has a few quirks but behaves more predictably from my perspective, making it fun to use. Over time, I’ll show you some of the ways I use it and share a few helpful code snippets. > **Note:** as you can see, this article is work in progress and will be extended gradually > **Note:** I am mainly an Arch Linux user and will share my perspective from that angle. > However, if you’re using Windows, you’re also in luck as [[https://www.waveshare.com/wiki/USB_TO_UART/I2C/SPI/JTAG|the device’s Wiki page]] provides plenty of readily available information and setup guides for your platform. ====== Interfaces tested ====== * **UART**: works fully * **I²C**: works fully * **SPI**: works, does not support QSPI ====== Example parts to cover ====== * TOF050F (UART/Modbus for switching modes and basic IO, I²C), worked on 3.3 V mode * SSD1315-based OLED display, worked on 5 V mode * Some kind of ESP32 (as I have no SPI parts in my room)