เนื่องจากเรากำลังพูดถึงอุปกรณ์ USB และสมมติว่าคุณมี udev คุณสามารถตั้งค่ากฎ udev ได้
ฉันเดาและนี่เป็นเพียงการคาดเดาใครบางคนหรือบางสิ่งบางอย่างถอดปลั๊ก / ลบอุปกรณ์และเสียบกลับเข้าไปใน / เพิ่มอุปกรณ์อีกครั้งซึ่งกระแทกขึ้นจำนวน
ตอนนี้ก่อนอื่นคุณต้องมีผู้จำหน่ายและรหัสผลิตภัณฑ์:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
ถัดไปคุณต้องมีหมายเลขซีเรียล (ในกรณีที่คุณมีหลายหมายเลข):
# udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
ATTRS{serial}=="A6008isP"
ตอนนี้ให้สร้างกฎ udev:
กฎ udev /etc/udev/rules.d
มักจะกระจายลงในไฟล์จำนวนมากใน สร้างไฟล์ใหม่ชื่อ99-usb-serial.rules
และวางบรรทัดต่อไปนี้ในนั้นฉันมีสามอุปกรณ์แต่ละอันมีหมายเลขซีเรียลต่างกัน:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
หากคุณไม่ต้องการหมายเลขซีเรียลอุปกรณ์ใด ๆ จากผู้ขายที่มีชิปเดียวกันจะได้รับ symlink เดียวกันโดยสามารถเสียบเพียงครั้งเดียวในเวลาใดก็ตาม
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="MySerialDevice"
ถ่ายจากที่นี่
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
หากคุณมีการกระจายลินุกซ์ที่ผ่านมาส่วนใหญ่แล้วจะสร้างอุปกรณ์ที่เป็น นี่อาจเพียงพอสำหรับคุณโดยไม่มีกฎ udev ที่กำหนดเอง