我开发了一个USB设备的内核驱动程序。这样的设备有一些引脚可以提供CDC ACM串行端口或输入按钮的功能。因此,为了实现这一点,我必须使用两个不同的USB配置描述符。
驱动程序按预期工作,但我必须在编译和加载固件到微控制器之前硬编码所选的设置。我正在寻找一种机制,从用户空间更改设备配置。
我在USB文档中读到了SET_CONFIGURATION消息,但是找不到任何Linux工具来将这种标准USB消息从用户空间发送到USB总线。
你们中的一些人(在这个主题上有更多的经验)知道一些用户空间Linux工具来向连接到USB总线的设备发送SET_CONFIGURATION消息吗?
提前感谢!:)
3条答案
按热度按时间bvn4nwqk1#
LibUSB中的函数
libusb_set_configuration()
理论上可以做到这一点,但没有必要。您可以使用“接口关联描述符”(IAD)简单地将HID(用于按钮)和CDC(串行端口)放入 * 一个 * 配置中。
jyztefdp2#
这个github回购解决了我的问题:
amrnrhlw3#
不需要任何特殊工具,只需通过
sysfs
即可:cd /sys/bus/usb/devices/X-Y/
,其中X是总线编号,Y是设备编号。bConfigurationValue
,例如使用sudoedit
就是这样!