最好的方法是使用 Linux Gadget Drivers 和硬件,让您成为 USB 设备。小工具驱动程序允许计算机“假装”为任何类型的设备。然后,您的被测系统有一根 USB OTG 电缆连接到小工具盒。如果您的小工具盒具有正确的硬件,您甚至不需要拔下电缆。“gadget box”可以是运行 Linux 的台式机/笔记本电脑(如果它支持 USB OTG),甚至可以是 Android 手机或 Raspberry Pi。(请注意 USB 电缆很烂。仅仅因为电缆适合并不意味着它已正确连接到 USB OTG。)
一旦您拥有正确的 USB OTG 硬件,您的小工具盒就是所有软件:
1) 如果您的被测设备支持 OTG,请确保您的小工具盒不会尝试成为 USB 主机。(然后您的被测设备将成为 USB 客户端。)即确保usb_storage
不会自动加载诸如此类的内容。
2) 开箱即用,内核支持 USB 集线器、USB 以太网、USB 串行端口和 USB 记忆棒的小工具。只需在您的小工具盒上加载正确的模块,它就会“正常工作”。例如,要创建 U 盘,请执行以下操作:“ insmod g_file_storage.ko file=/dev/ram0
”。远端会认为您插入了 U 盘。
对于串行设备,您的小工具可以在 /dev/USBx 上运行“拿起电话”的用户空间代码并与您的被测设备对话。(可能模拟 4G 调制解调器或其他。)
大量设备实际上是“USB 串行”,因为制造商懒得理解 USB。
3)稍微重新编译或配置,您可以让那些通用小工具设备伪装成各种 USB ID 或返回各种供应商字符串等。这与“针对真实硬件进行测试”不同,但至少您正在使用这些设备的通用版本进行测试。
4) 对于内核中尚不存在的设备类型(即 WiFi 或其他),您需要自行处理。有了足够的血汗和泪水,您就可以使用编写自己的小工具类型。(理想情况下,尽可能多地保留在用户空间中,并且只处理内核中的性能关键部分..)
注意:同时理解和欣赏 USB 是不可能的。