The article provides an introduction to writing userspace USB drivers, explaining how to use the libusb library to communicate with USB devices without needing to write kernel code. It uses an Android phone in Bootloader mode as an example device and demonstrates how to enumerate the device, send requests, and retrieve descriptors. The article aims to show that writing a driver for a USB device is not much more difficult than writing an application that uses sockets. The libusb library provides a simple API for communicating with USB devices from userspace.