RK3588 HID 配置、部署、调试与安全

RK3588 HID 配置、部署、调试与安全

1. 默认配置画像

arch/arm64/configs/rockchip_linux_defconfig 显式包含:

1
2
3
4
5
6
7
8
CONFIG_BT_HIDP=y
CONFIG_HID_BATTERY_STRENGTH=y
CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_KENSINGTON=y
CONFIG_HID_MULTITOUCH=y
CONFIG_USB_HIDDEV=y
CONFIG_I2C_HID_OF=y

HID、HID_GENERIC、USB_HID 有默认 y 关系,但最终产品必须检查合并后的 .config。vehicle 片段关闭 USB HIDDEV。

2. 场景建议

场景 必要能力
USB 键鼠 HID、HID_GENERIC、USB_HID
USB 游戏手柄 USB_HID + 对应 vendor/FF
蓝牙键鼠 BT、BT_HIDP;BLE 还依赖 BlueZ/UHID
I2C HID 触摸屏 I2C_HID_OF + HID_MULTITOUCH
Android 虚拟 HID UHID
专有控制设备 HIDRAW
旧 UPS/显示器应用 USB_HIDDEV

3. 枚举分层

1
2
3
4
5
6
USB/I2C/Bluetooth device exists?
-> transport driver bound?
-> /sys/bus/hid/devices node exists?
-> hid-generic/vendor driver bound?
-> input/hidraw node created?
-> udev/SELinux permission allows userspace?

逐层定位比反复重插或重启服务有效。

4. USB 排查

1
2
3
4
5
lsusb -t
lsusb -v
cat /sys/bus/usb/devices/*/power/runtime_status
cat /proc/interrupts
dmesg | grep -Ei 'usb|usbhid|hid'

RK3588 还需检查 USB2/USB3 PHY、Type-C role、hub 电源和 VBUS。

5. I2C 排查

  • DTS status/address;
  • IRQ GPIO 和极性;
  • reset GPIO;
  • regulator;
  • descriptor address;
  • I2C pinctrl/rate;
  • suspend wake;
  • reset/post-power delay。

IRQ 增长但无 input 事件时检查 packet length/report ID;无 IRQ 时先查 GPIO/供电。

6. 输入排查

1
2
3
4
cat /proc/bus/input/devices
evtest /dev/input/eventX
getevent -lt
libinput debug-events

确认事件映射、属性 DIRECT/POINTER、ABS range、MT slots 和 keycode。

7. HID 原始层

1
2
3
4
5
for d in /sys/bus/hid/devices/*; do
echo "$d"; cat "$d/uevent"
done

cat /sys/bus/hid/devices/DEVICE/report_descriptor > /tmp/rdesc

抓 raw 数据时避免向生产设备盲发 Feature/Output report。

8. 性能

  • 高频 gaming mouse 会增加 USB IRQ/input event;
  • ALWAYS_POLL 阻止空闲停轮询;
  • I2C 大 report + 低 bus rate 增加延迟;
  • multitouch contact 数显著增加每帧处理;
  • debugfs/dynamic debug 会改变时序;
  • userspace input stack 也会增加手势和合成延迟。

9. PM/wakeup

唤醒链必须同时满足:

  • device wake capability;
  • HID/transport driver;
  • USB hub 或 I2C IRQ;
  • RK3588 controller/power domain;
  • DT wakeup-source
  • userspace /sys/.../power/wakeup

10. 安全

HID 外设可伪装键盘并立即注入按键。建议:

  • 量产关闭不用的 UHID/HIDDEV/vendor drivers;
  • 限制 hidraw/uhid 权限;
  • USB authorization/port policy;
  • 不信任 descriptor/report;
  • 容器不默认映射 input/hidraw/uhid;
  • 固件升级协议需签名和长度校验;
  • 启用必要 LSM/udev allowlist。

11. 裁剪

嵌入式固定硬件可保留:

1
2
3
4
HID + HID_GENERIC
USB_HID and/or I2C_HID_OF
HID_MULTITOUCH if required
specific vendor driver

按需求关闭 Wacom、游戏 FF、x86 sensor hub、HIDDEV、UHID、HIDRAW。关闭前确认工厂测试、蓝牙栈、升级工具是否依赖。

文章互动

阅读 --

留言

0 条留言

正在加载留言…