我的目标是为Linux 2.6.32及更高版本(我使用debian squeeze)创建一个可由系统识别的虚拟USB字符设备(不是块设备)。
我希望将此设备列为lsusb作为普通USB设备,并且每个应用程序都可以使用libusb来打开设备,并发送控制消息,并进行批量写入/读取。但是在这个虚拟设备背后,它的行为将由我的应用程序设置。我想设置它的产品ID,它的供应商ID,USB状态答案和批量读取。
我已经阅读了一些关于如何使用USB / IP创建虚拟USB设备的帖子,而这正是我想做的事情 Installation and emulation of virtual USB Device http://breaking-the-system.blogspot.fr/2014/08/emulating-usb-devices-in-python-with-no.html
但不幸的是,当我尝试使用2.6.32及更高版本的内核时,我没有成功使其工作。所以我研究了如何创建一个可以创建虚拟设备的内核模块: http://pete.akeo.ie/2011/08/writing-linux-device-driver-for-kernels.html
这个看起来也很棒,但提供的示例并不表示如何使其成为USB设备。 我已经看到一些帖子用windows谈论它,但没有一个可以帮助我使用Linux。
我想避免在使用软件时购买一些USB可编程卡。
有没有人知道如何让第一种方法在新内核下运行,或者转换第二种方法的示例代码来制作USB设备?
答案 0 :(得分:2)
我修复了http://breaking-the-system.blogspot.fr/2014/08/emulating-usb-devices-in-python-with-no.html的代码(使用USB / IP的第一种方法)来使用linux 4.3。
原始代码中缺少USB请求,例如设置配置和获取状态。如果没有实现用于OS驱动程序的所有USB请求,代码将无法工作。