linux - Linux 如何确定设备类别?

标签 linux unix linux-kernel linux-device-driver

Linux 新手问题。

只是想知道 Linux 如何确定设备是哪个设备类?具体来说,当我插入条形码扫描器时,它如何知道它是一个 ttyACM 设备?我有一台适用于我的 Linux 操作系统的扫描仪,但无法识别新型号,所以我想知道我是否可以更改系统中某处的文件,告诉它将该扫描仪识别为 ttyACM0 并使用现有驱动程序。

最佳答案

USB 设备(我假设你的扫描仪是 USB)由 vendorIdproductId(两个 16 位整数)标识,每个驱动程序用支持的供应商列表填充一个数组/prods id(创建关系 vendor:prod->driver),我猜想在编译时数组中的所有 id 都合并在一个列表中,然后在插入设备时用于查找搜索。

通常,您可以在插入设备后立即使用 dmesg 命令(或使用 lsusb)查看连接设备的供应商和产品 ID。

对于 ttyACM,请参阅 drivers/usb/class/cdc-acm.c 中的 acm_ids[]

小心摆弄设备驱动程序,即使是 ttyACM 终端接口(interface),只有当接口(interface) tty-> 硬件实现不佳时,一些命令可能会破坏硬件。

也许这个问题应该在Unix & Linux stackexchange

关于linux - Linux 如何确定设备类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254953/

相关文章:

linux - 仅使用 ls 可以找到正在运行的进程的 PID 吗?

php - 如何从 php 脚本运行 linux 命令来编译 c 程序

c++ - 将 "xxd -i"编码的C源代码转换为C源代码的脚本/工具?

linux - 使用 RS 和 RT 在 awk 命令中匹配多个字符串

linux - 如何在我的 LKM 和 Linux 内核之间同步共享数据结构?

c - 使用 5 个或以上参数调用 moscat() 时出现段错误

linux - 用于多线程进程的 Shell 脚本

linux - 如何在 expect shell 脚本中获取生成进程的退出代码?

linux - 有关内核 3.x 上的设备驱动程序编程的文档

c - copy_from_user() 的任何示例?内核和用户空间