这个问题有两个方面:
首先,您如何手动从 USB 设备上分离驱动程序并连接不同的驱动程序?例如,我有一个连接时自动使用 USB 存储驱动程序的设备。
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 存储驱动程序,因此在我的应用程序中,我使用该libusb库来分离 USB 存储驱动程序,然后声明该接口。然后,我可以在我的 USB 设备和我的主机 Linux 系统上运行的应用程序之间发送数据。
如何在应用程序之外手动分离驱动程序?
其次,如何自动分配驱动程序以附加到设备插件上?我目前有一个 udev 规则设置来自动设置设备权限:
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
我可以使用 udev 规则为 USB 设备上的特定接口分配驱动程序吗?例如,如果我希望在接口 0 上自动使用 usbnet 模块而不是 usb-storage,这在 udev 中可能吗?
我已经安装了一个带有两个串行端口和一个并行端口的 PCI 卡。芯片组是MCS9865。我从这里下载了最新的驱动程序(V1.0.12)。我跑make和make install。现在两个串口是/dev/ttyD0和/dev/ttyD1。我已经对它们进行了测试,picocom并且运行良好。问题是,当我重新启动系统时,没有/dev/ttyD0和/dev/ttyD1。我需要做另一个make install。有什么解决办法吗?
输出lspci -v显示:
03:01.0 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 02 [16550])
Subsystem: Device a000:1000
Flags: bus master, medium devsel, latency 32, IRQ 19
I/O ports at df00 [size=8]
Memory at fbeff000 (32-bit, non-prefetchable) [size=4K]
Memory at fbefe000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [48] Power Management version 2
Kernel driver in use: …Run Code Online (Sandbox Code Playgroud)