我正在使用 DVB 调谐器、USB 调谐器。我已经将驱动程序添加到内核中并且正在注册。但是当设备连接时,它不会调用探测函数。
有什么我要补充的吗?比如设备驱动程序应该映射到设备还是其他什么?并请解释如何根据 USB 设备的类型加载驱动程序。我使用的内核是linux 3.5。
答案1
您确定您的设备可以与该驱动程序配合使用吗?如果是这样:
固件
有些设备还需要额外的固件。不幸的是,提取固件并安装它所需的方法取决于设备。有些要求您下载 Windows 驱动程序的副本并使用工具来提取固件。谷歌将在这里为您提供帮助。
更改的供应商和产品 ID
有时供应商会更改供应商和产品 ID,这是驱动程序用于识别兼容设备的方法。
这些 ID 被硬编码在驱动程序中。幸运的是,现代设备驱动程序有一种在运行时临时添加供应商和产品 ID 的方法。
用于lsusb
获取您设备的 ID:
# lsusb
Bus 002 Device 001: ID 1234:abcd Acme Corp DVB Tuner
拔下设备并卸载驱动程序(以获得新的起点):
# rmmod acme_dvb
接下来,加载您的驱动程序:
# modprobe acme_dvb
最后,告诉驱动程序新的 USB ID:
# echo 1234 abcd > sys/bus/usb/drivers/acme_dvb/new_id
请注意,确切的路径可能会有所不同。
插入您的设备并检查它是否已被识别:
# dmesg
如果这有效,正确的做法是将其报告为针对驱动程序的错误,以便维护人员添加新的 ID。