RK3588 HID 配置、部署、调试与安全
1. 默认配置画像
arch/arm64/configs/rockchip_linux_defconfig 显式包含:
1 | CONFIG_BT_HIDP=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 | USB/I2C/Bluetooth device exists? |
逐层定位比反复重插或重启服务有效。
4. USB 排查
1 | lsusb -t |
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 | cat /proc/bus/input/devices |
确认事件映射、属性 DIRECT/POINTER、ABS range、MT slots 和 keycode。
7. HID 原始层
1 | for d in /sys/bus/hid/devices/*; do |
抓 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 | HID + HID_GENERIC |
按需求关闭 Wacom、游戏 FF、x86 sensor hub、HIDDEV、UHID、HIDRAW。关闭前确认工厂测试、蓝牙栈、升级工具是否依赖。
正在加载留言…