linux下多個usb設備固定名稱方法

當我們接入兩個或兩個以上的同類型usb設備時,內核會在/dev目錄下生成對應的設備文件例如/dev/ttyUSB0,/dev/ttyUSB1。這樣就會導致我們在訪問設備時不知道相應的設備文件對應的是哪一個usb設備。下面講一下幾種方法來讓大家能夠正確的訪問到想訪問的設備。

方法一:

       如果是臨時測試可以通過手動順序插入設備來做到區分,先插入的設備生成的設備文件編號較低,比如usb轉串口設備是按照ttyUSB0,ttyUSB1這種方式逐漸生成。

方法二:

        如果是想開機自動固定usb設備的名稱,而且你又可以控制usb設備的上電順序的話,你可以按照一定的順序給usb設備上電,這樣先上電的設備會被先識別,識別規則和方法一相同。

方法三:

       如果你想開機自動固定名稱但是又沒有辦法控制usb設備的上電的話可以按照下面的步驟來固定。

第一步:

      終端輸入:sudo vi /etc/udev/rules.d/10-local.rules, 添加下面的內容(這句話是個模板,每固定一個設備把這句話複製一次,把開頭的#號去掉,把KERNELS和SYMLINK改成自己想要的就可以了)。

#ACTION=="add",KERNELS=="1-2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="name"

第二步:

      查找需要 需要固定的usb設備,例如我要固定兩個usb轉串口的設備

輸入命令:ls /sys/class/tty/ttyUSB* -l,輸出結果如下

lrwxrwxrwx root     root              2017-08-01 13:40 ttyUSB0 -> ../../devices/ff540000.usb/usb3/3-1/3-1.1/3-1.1:1.0/ttyUSB0/tty/ttyUSB0

lrwxrwxrwx root     root              2017-08-01 13:43 ttyUSB1 -> ../../devices/ff540000.usb/usb3/3-1/3-1.2/3-1.2:1.0/ttyUSB1/tty/ttyUSB1= 

第三步: 

將需要固定的串口編號(第二步的紅色部分)賦值給KERNELS,把name改爲要固定的設備名字這裏我改爲my_serial0,my_serial1。改好之後如下,把這兩句話追加到 /etc/udev/rules.d/10-local.rules文件。

ACTION=="add",KERNELS=="3-1.1:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="my_serial0"

ACTION=="add",KERNELS=="3-1.2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="my_serial1"

保存退出。重新插拔設備(或重啓)就會在/dev目錄下生成固定的設備名(本實例爲:/dev/my_serial0,/dev/my_serial1)。 

備註:

1.固定好之後usb設備插入的usb端口不能再改變。

2.操作中如果提示權限問題,用root用戶操作即可。

3.若ttyUSB設備過多找不到自己要固定的串口設備,可以對要固定的設備進行拔插,通過比較插拔前後ls /sys/class/tty/ttyUSB* -l命令輸出結果來找到所需要固定的串口號。

4.此方法也適用其他usb設備的固定,例如usb攝像頭。