lin*_*sek 7 linux usb udev kernel-module linux-kernel
这个问题有两个问题:
1-如何从USB设备手动分离驱动程序并附加另一个驱动程序?例如,我有一个设备,当连接自动使用USB存储驱动程序.
// usbview输出
Vendor Id: xxxx
Product Id: xxxx
...
Number of Interfaces: 2
Interface Number: 0
Name: usb-storage
Number of Endpoints: 2
...
Interface Number: 1
Name: (none)
Number of Endpoints: 2
...
Run Code Online (Sandbox Code Playgroud)
我不想使用usb-storage驱动程序,因此我在主机上运行了一个应用程序,我在其中使用libusb库来分离usb存储驱动程序然后我声明了接口.然后,我可以在USB设备和主机Linux系统上运行的应用程序之间发送数据.
如何在应用程序外手动分离驱动程序?
2-如何自动分配驱动程序以附加到设备插件上.我目前有一个udev规则设置来自动设置设备权限.
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
我可以使用udev规则将驱动程序分配给USB设备上的特定接口吗?例如,如果我想在接口0而不是usb-storage上自动使用usbnet模块,那么在udev中是否可以使用?
谢谢,
(我对StackExchange如何使用它的不同网站或者它们都是一样的有点困惑.这是一个Linux问题所以它也发布在Unix和Linux上.请原谅我,如果它也不应该在这里发布,但是StackOverflow也处理Linux,所以...)
这个问题听起来很像包含一个包含Windows驱动程序的小型闪存盘的USB设备,但实际上它是一种网络访问设备(我想到的是UMTS调制解调器).如果是这种情况,请尝试使用USB_ModeSwitch,其中包含USB设备的数据库以及必须用于将设备从"存储模式"移至"网络访问模式"的命令和数据.如果未在数据库中配置设备,则可以在Windows上使用Usb Sniffer for Windows跟踪USB流量并提取必要的命令/数据组合.
usb_modeswitch的自动化,以便在插入设备时执行它的魔力可以使用udev规则来完成.如果您正在使用基于Fedora或Ubuntu的发行版,那么当您安装提供usb_modeswitch的软件包时,这是为您处理的(抱歉,我没有关于SUSE的信息,但我认为它类似).在Fedora中,它是包use_modeswitch_data,它提供了usb_modeswitch cmd的包装器和必要的规则文件.
如果您真的想要将USB设备绑定/取消绑定到驱动程序,请参阅此LWN文章.作为root用户,echo $usbid > /sys/bus/usb/drivers/usb-storage/unbind将从$usbid"usb-storage"驱动程序解除USB设备的绑定.使用相同的命令,但使用bind而不是unbind,将尝试将设备绑定到驱动程序.但请注意,将充当存储设备的设备绑定到usbnet驱动程序是没有意义的(也是行不通的).
| 归档时间: |
|
| 查看次数: |
10931 次 |
| 最近记录: |