
理论上,编写 Linux 设备驱动程序应该不难,但实际操作起来比想象中要难。不过,使用 libusb,你可以轻松地从用户空间处理 USB 设备,这在很多情况下都行。[Crescentrose] 在编写并为我们提供了文档之前,对编写用户空间 USB 驱动程序一无所知。哦,代码是用 Rust 编写的,所以没有太多相关示例。
有问题的设备是一个 USB 集线器,带有一些额外的指示灯和小工具。所以在我们看来,真正的问题不在于代码,而在于弄清楚协议和 USB 堆栈。这篇文章也涵盖了这些内容,解释了配置、接口和端点。
还有其他一些辅助主题,例如设置 udev。这可以让你在 USB 设备(或其他设备)插入时加载相关内容。
当然,您是冲着主代码来的。一旦完成了准备工作,Rust 程序就相当简单了。libusb 库帮了大忙。最后,代码会启动一些线程,处理中断,并执行其他类似设备驱动程序的操作。
所以,如果你喜欢 Rust,并且曾经想过为 USB 设备开发一个用户空间的设备驱动程序,那么现在就是你亲眼见证它实现的机会。这并没有花费你数年时间。然而,你可以在用户空间做很多事情。
原文: https://hackaday.com/2025/06/26/rust-drives-a-linux-usb-device/