Linux 如何确定设备 class?

How does Linux determine a device class?

Linux新手问题。

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

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

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

对于 ttyACM,请参见 drivers/usb/class/cdc-acm.c

中的 acm_ids[]

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

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