Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux:如何为设备分配USB驱动程序_Linux_Linux Kernel_Usb_Kernel Module_Udev - Fatal编程技术网

Linux:如何为设备分配USB驱动程序

Linux:如何为设备分配USB驱动程序,linux,linux-kernel,usb,kernel-module,udev,Linux,Linux Kernel,Usb,Kernel Module,Udev,这个问题有两个方面: 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

这个问题有两个方面:

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
        ...
我不想使用usb存储驱动程序,因此我在主机上运行了一个应用程序,在该应用程序中,我使用libusb库分离usb存储驱动程序,然后声明接口。然后,我可以在USB设备和主机Linux系统上运行的应用程序之间发送数据

如何在应用程序外部手动分离驱动程序

2-如何自动分配要附加到设备插件上的驱动程序。我目前有一个udev规则设置来自动设置设备权限

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"
我可以使用udev规则为USB设备上的特定接口分配驱动程序吗?例如,如果我想在接口0上自动使用usbnet模块,而不是在usb存储上,那么在udev中是否可能

谢谢


(我对StackExchange如何与不同的站点协同工作或它们是否都是相同的感到有点困惑。这是一个Linux问题,所以它也发布在Unix和Linux上。请原谅我不应该在这里发布,但是StackOverflow也处理Linux,所以…)

这个问题听起来很像一个USB设备,其中包含一个包含Windows驱动程序的小闪存,但实际上它是一种网络访问设备(我想到了UMTS调制解调器)。如果是这种情况,请尝试使用,其中包含USB设备数据库以及将设备从“存储模式”移动到“网络访问模式”时必须使用的命令和数据。如果设备未在数据库中配置,则可以在Windows上使用,以跟踪USB通信量并提取必要的命令/数据组合

usb_modeswitch的自动化,使其在您插入设备时发挥神奇的作用,可以使用udev规则完成。如果您使用的是基于Fedora或Ubuntu的发行版,则在安装提供usb_modeswitch的软件包时会为您处理此问题(抱歉,我没有关于SUSE的信息,但我认为它与此类似)。在Fedora中,是软件包use_modeswitch_data,它为usb_modeswitch cmd和必要的规则文件提供包装


如果确实要将USB设备绑定/解除绑定到驱动程序,请参阅。作为root用户,
echo$usbid>/sys/bus/usb/drivers/usb storage/unbind
将使用
$usbid
从“usb存储”驱动程序解除usb设备的绑定。使用相同的命令,但使用
bind
而不是
unbind
,将尝试将设备绑定到驱动程序。但是请注意,将类似于存储设备的设备绑定到usbnet驱动程序是没有意义的(也不会起作用)。

类似的问题在Unix&Linux@AlessandroPezzato上,我读了那篇文章,这是类似的,但不是我问题的解决方案。正如我在问题中所说,我可以运行一个应用程序,它使用libusbapi分离并声明接口。但是我需要知道如何从命令提示符分离和连接LKM,或者在应用程序空间之外通过udev自动分离和连接LKM。如果您确实想将USB设备绑定/解除绑定到驱动程序,请参见此echo$usbid>/sys/bus/usb/drivers/usb storage/unbind将使用来自“usb storage”驱动程序的$usbid解除usb设备的绑定。相同的cmdline,但使用“绑定”而不是取消绑定,将尝试将设备绑定到驱动程序。但是请注意,将一个类似于存储设备的设备绑定到usbnet驱动程序是没有意义的(也不会起作用)。