2017-05-30 71 views
1

Linux新手問題。Linux如何確定設備類?

想知道Linux如何確定設備是哪種設備類?具體來說,當我插入一個條形碼掃描器,它是如何知道它是一個ttyACM設備?我有一臺能夠與我的Linux操作系統配合使用的掃描儀,但是新模型無法識別,所以我想知道是否可以在系統中的某個地方更改文件,告訴它識別掃描儀爲ttyACM0並使用現有的驅動程序。

回答

1

USB設備(我假設您的掃描儀是USB)通過VENDORID的productId(2個16位整數)標識,每個司機充滿支持的供應商列表中的數組/電棒ID(創建關係的供應商: prod-> driver),我想在編譯時,陣列中的所有id都合併在一個列表中,然後用於設備插入時的查找搜索。

通常您可以查看供應商和產品ID在設備插入後(或使用lsusb),連接設備的命令爲dmesg

對於ttyACMdrivers/usb/class/cdc-acm.c

仔細看到acm_ids[]與設備驅動程序玩弄,甚至是ttyACM只有當該接口tty->硬件實現差一些命令可能會破壞硬件終端接口。

或許這個問題應在Unix & Linux stackexchange

+0

所討論的兩個條碼掃描器顯然是相同的PID和VID,根據製造商標識,但具有不同的序列號。他們說新的掃描儀有一個不同的MCU來控制USB接口。所以看起來好像在確定設備類時也使用了序列號。 –

+0

@LukeAllison,請參閱[drivers/usb/core/driver.c:](https://github.com/torvalds/linux/blob/v4.10/drivers/usb/core/driver.c#L615),那裏是符合其他標準的標誌,如果您查看'acm_ids []'宏'USB_INTERFACE_INFO'匹配的末尾* class * * subclass *和* proto * – Alex