Linux kernel 启用hid输入的最小Linux内核选项
我需要使用定制Linux(v5.8)处理HID设备(条形码阅读器) 我有一个模块化的内核,它与其他USB外围设备(存储设备和串行设备都可以正常工作)一样工作,但我似乎无法扫描这个设备 将其插入桌面(Linux Mint“Ulyana”,如果有必要的话),我会得到一个正常的枚举:Linux kernel 启用hid输入的最小Linux内核选项,linux-kernel,usb,embedded-linux,hid,Linux Kernel,Usb,Embedded Linux,Hid,我需要使用定制Linux(v5.8)处理HID设备(条形码阅读器) 我有一个模块化的内核,它与其他USB外围设备(存储设备和串行设备都可以正常工作)一样工作,但我似乎无法扫描这个设备 将其插入桌面(Linux Mint“Ulyana”,如果有必要的话),我会得到一个正常的枚举: [525428.367216] usb 1-11: new full-speed USB device number 9 using xhci_hcd [525428.517071] usb 1-11: New USB
[525428.367216] usb 1-11: new full-speed USB device number 9 using xhci_hcd
[525428.517071] usb 1-11: New USB device found, idVendor=05e0, idProduct=1200, bcdDevice= 1.00
[525428.517077] usb 1-11: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[525428.517080] usb 1-11: Product: Symbol Bar Code Scanner
[525428.517083] usb 1-11: Manufacturer: Symbol Technologies, Inc, 2008
[525428.517086] usb 1-11: SerialNumber: S/N:0641F625A3A943949AF00BAB171ABFE2 Rev:PAACFS00-001-R023
[525428.519932] input: Symbol Technologies, Inc, 2008 Symbol Bar Code Scanner as /devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11:1.0/0003:05E0:1200.0005/input/input32
[525428.579736] hid-generic 0003:05E0:1200.0005: input,hidraw4: USB HID v1.10 Keyboard [Symbol Technologies, Inc, 2008 Symbol Bar Code Scanner] on usb-0000:00:14.0-11/input0
而在我的目标上,我看不到新外围设备的迹象lsusb
仅显示根集线器,即使我手动modprobe
(我认为是)相关模块:
# lsusb
Bus 001 Device 001: ID 1d6b:0002
# lsmod
Module Size Used by Not tainted
usbhid 23296 0
usbmon 19424 0
mt7603e 38048 0
mt76 31648 1 mt7603e
mac80211 380000 2 mt7603e,mt76
sha256_generic 2240 0
libsha256 8480 1 sha256_generic
ehci_platform 4704 0
cfg80211 236736 3 mt7603e,mt76,mac80211
ehci_hcd 37936 1 ehci_platform
rfkill 8544 1 cfg80211
usbcore 143456 4 usbhid,usbmon,ehci_platform,ehci_hcd
libarc4 832 1 mac80211
mtk_eth 30208 0
usb_common 2768 3 usbmon,ehci_platform,usbcore
我显然错过了什么,但我似乎无法理解什么。
我应该交叉核对什么
注意:请随时询问相关细节,我并没有在这里放太多东西,只是为了避免混乱,但我完全准备好提供所有被认为有用的信息。事实证明,即使低速外设连接到USB2(EHCI)控制器,也需要OHCI驱动程序来处理这些外设 实际上,MT7628有一个“辅助”OHCI控制器,甚至没有在数据表中公布 这意味着,除了选择
CONFIG\u USB\u OHCI\u HCD=m
和CONFIG\u USB\u OHCI\u HCD\u PLATFORM=m
之外,还需要以下补丁:
diff --git a/arch/mips/boot/dts/ralink/mt7628a.dtsi b/arch/mips/boot/dts/ralink/mt7628a.dtsi
index bf6b6a459bd6..b4ac008fdfdf 100644
--- a/arch/mips/boot/dts/ralink/mt7628a.dtsi
+++ b/arch/mips/boot/dts/ralink/mt7628a.dtsi
@@ -323,6 +323,17 @@ ehci@101c0000 {
interrupts = <18>;
};
+ ohci@101c1000 {
+ compatible = "generic-ohci";
+ reg = <0x101c1000 0x1000>;
+
+ phys = <&usb_phy>;
+ phy-names = "usb";
+
+ interrupt-parent = <&intc>;
+ interrupts = <18>;
+ };
+
ethernet: ethernet@10100000 {
compatible = "ralink,rt5350-eth";
reg = <0x10100000 0x10000>;
diff--git a/arch/mips/boot/dts/ralink/mt7628a.dtsi b/arch/mips/boot/dts/ralink/mt7628a.dtsi
索引bf6b6a459bd6..B4AC008FDF 100644
---a/arch/mips/boot/dts/ralink/mt7628a.dtsi
+++b/arch/mips/boot/dts/ralink/mt7628a.dtsi
@@ -323,6 +323,17 @@ ehci@101c0000 {
中断=;
};
+ ohci@101c1000 {
+compatible=“通用ohci”;
+reg=;
+
+phys=;
+phy name=“usb”;
+
+中断父项=;
+中断=;
+ };
+
以太网:ethernet@10100000 {
compatible=“ralink,rt5350 eth”;
reg=;
注:MT7628编程手册中未提及地址101c1000,它距离标准(并记录)EHCI控制器单元(101c0000)有“一个单元距离”(0x1000)
我假设其他SOC也存在类似情况,因为USB标准要求将低速设备“移交”给传统的USB1控制器
我希望这会让那些遇到同样问题的人省去很多麻烦。USB条形码扫描仪通常看起来像键盘,通常不会创建设备节点。@stark确认。此扫描仪工作在“键盘模拟模式”。我不清楚你想说什么;请你详细说明一下好吗?我看到桌面:“Bus 001 Device 009:ID 05e0:1200 Symbol Technologies条码扫描器”在目标机上时,我看不到任何东西,扫描器也不工作,甚至连启动的蜂鸣声都没有,好像根本没有通电。你确定你的目标机提供了足够的电源吗?@stark:是的。同样的硬件与一个古老的内核版本(3.18吨以上的供应商补丁)一起工作。我正在尝试迁移到一个现代版本(用于不相关的问题),这是“端口”剩下的最后一件事情之一。不幸的是,内核配置更改得太多,难以进行比较。您可以尝试插入其他版本,还是硬连线?