Tôi có một thiết bị 3G / GPS tạo ra 5 nút, mặc dù đó chỉ là một kết nối USB vật lý. Về cơ bản, một bộ chuyển đổi nối tiếp usb đa cổng.
Tôi đang cố gắng tạo một số udev
quy tắc để đảm bảo các nút đó luôn có cùng tên hoặc ít nhất là một liên kết tượng trưng cho chúng.
Tôi thực sự có thể tìm thấy thiết bị tại /sys/devices/platform/pxa27x-ohci/usb1/1-2/1-2.2/
. Bên trong là 1-2.2:1.0/
để 1-2.2:1.4/
, cho 5 nút nó tạo ra.
Tôi cũng có thể tìm thấy nó tại /sys/bus/usb/devices/1-2.2
.
Thông tin udev cho thiết bị như sau:
udevadm info -a -p /sys/bus/usb/devices/1-2.2/1-2.2\:1.0
looking at device '/bus/usb/devices/1-2.2/1-2.2:1.0':
KERNEL=="1-2.2:1.0"
SUBSYSTEM=="usb"
DRIVER=="option"
ATTR{bInterfaceNumber}=="00"
ATTR{bAlternateSetting}==" 0"
ATTR{bNumEndpoints}=="03"
ATTR{bInterfaceClass}=="ff"
ATTR{bInterfaceSubClass}=="01"
ATTR{bInterfaceProtocol}=="01"
ATTR{modalias}=="usb:v12D1p1506d0000dc00dsc00dp00icFFisc01ip01"
ATTR{supports_autosuspend}=="0"
Từ thời điểm này, tất cả các nút có cùng thông tin. Và điều duy nhất khác nhau giữa các nút là thuộc tính bInterfaceNumber và đường dẫn thiết bị. Vì vậy, tôi nghĩ đến việc viết một quy tắc bằng dev path.
Bây giờ, vì một số lý do, quy tắc sau được khớp bởi tất cả các nút đó.
ACTION=="add", DEV="/devices/platform/pxa27x-ohci/usb1/1-2/1-2.2/1-2.2:1.0" SYMLINK+="huawey0"
Về cơ bản, huawey0
điểm đến nút cuối cùng được liệt kê. Thiết bị đã tạo các nút từ ttyUSB2 đến 6 và liên kết này trỏ đến USB6.
Vì vậy, tôi đã thử bằng nút kernel:
ACTION=="add", KERNEL=="1-2.2:1.0" SYMLINK+="huawey0"
Bây giờ, không có gì xuất hiện trên / dev.
Sau này, tôi đã thử sử dụng bInterfaceNumber để tách chúng. Tôi đã sử dụng quy tắc sau
ACTION=="add", DEV="/devices/platform/pxa27x-ohci/usb1/1-2/1-2.2/1-2.2:1.[0-4]" ATTR{bInterfaceNumber}=="00" SYMLINK+="huawey0"
Và vẫn không có gì xảy ra. Tôi thậm chí đã thử một phiên bản rút gọn của quy tắc ..
ACTION=="add", ATTR{bInterfaceNumber}=="00" SYMLINK+="huawey0"
Và vẫn không có gì xảy ra. Tại sao nó không phù hợp?