Input 调试、性能、安全与部署建议
1. 识别设备
1 | cat /proc/bus/input/devices |
优先使用 by-path/by-id或 udev属性,不写死 eventN。
2. 事件
1 | evtest /dev/input/eventN |
确认 capability、press/release、SYN边界、MT slots、timestamp、repeat。
3. 分层排查
1 | 无设备 -> config/module -> DTS/MFD/bus -> probe error |
4. IRQ
1 | cat /proc/interrupts |
按键/触摸时 IRQ应增长。持续高速增长提示极性、清中断或硬件噪声问题。
5. Dynamic debug
1 | mount -t debugfs none /sys/kernel/debug |
敏感键值日志只在受控环境启用。
6. 性能
- ADC key降低 poll interval会增加 IIO访问和功耗;
- touch IRQ thread的 I2C transfer应批量且有上限;
- 每帧只发变化和一个 SYN_REPORT;
- 估算合理 events_per_packet;
- 避免 ESD work与 IRQ同时重置;
- 检查 evdev
SYN_DROPPED。
7. 安全
/dev/input/event* 可记录密码,/dev/uinput 可注入控制。建议:
- seat ACL;
- 最小 group权限;
- 容器不透传整目录;
- 禁用
INPUT_EVBUG; - 调试日志脱敏;
- 校验触摸 firmware/update输入;
- 厂商 ioctl严格检查 length和 copy_from_user。
8. 稳定性测试
- 快速按键和长按;
- 多指全屏、边缘、slot churn;
- suspend/resume循环;
- 热插拔/拔线;
- display rotation;
- 高 CPU/I2C负载;
- IR repeat/wakeup;
- ADC电压边界和温漂;
- 异常退出后 grab释放。
9. 常见误判
- eventX变化不是驱动丢失;
- evtest正常但 GUI无反应常是 capability/seat/映射;
- USB键鼠源码主要在 HID;
- RK806 power key driver名仍为 rk805;
- DTS中候选触摸节点不代表全部硬件同时存在;
- input sensor与 IIO sensor不可按目录名混为一谈。
10. 生产建议
保存 device identity、能力 bitmap和内核日志基线;升级 kernel/DT后自动比较 event设备、keycodes、ABS范围、wakeup和 latency,避免用户空间依赖隐式 probe顺序。
正在加载留言…