udev는 규칙을 적용하지 않습니다

udev는 규칙을 적용하지 않습니다

udev에서 규칙을 할당하는 데 문제가 있습니다.

나는 2개를 가지고 있다FTDI232내 보드에 설치된 칩(총 3개가 있지만 지금은 그 중 2개에 관심이 있음), 커널이 드라이버를 통해 칩을 관리합니다.ftdi_sio, 이름을 지정하세요ttyUS0그리고ttyUSB1이름을 지정하기 위해 이 규칙을 적용하고 있습니다.USBS1그리고USBS2:

KERNELS=="1-2.1" KERNEL=="ttyUSB0" ATTR{idVendor}=="0403" ATTR{idProduct}=="6001" SUBSYSTEMS=="usb" NAME="usbS1"
KERNELS=="1-2.2" KERNEL=="ttyUSB1" ATTR{idVendor}=="0403" ATTR{idProduct}=="6001" SUBSYSTEMS=="usb" NAME="usbS2"

의 정보를 바탕으로정보

[    4.676116] usb 1-2.1: new full-speed USB device number 3 using ehci-omap
[    4.811920] usb 1-2.1: New USB device found, idVendor=0403, idProduct=6001
[    4.819244] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.826965] usb 1-2.1: Product: FT232R USB UART
[    4.831726] usb 1-2.1: Manufacturer: FTDI
[    4.835968] usb 1-2.1: SerialNumber: A101XRTT
[    4.963256] usb 1-2.2: new full-speed USB device number 4 using ehci-omap
[    5.102355] usb 1-2.2: New USB device found, idVendor=0403, idProduct=6001
[    5.109649] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.117370] usb 1-2.2: Product: FT232R USB UART
[    5.122161] usb 1-2.2: Manufacturer: FTDI
[    5.126403] usb 1-2.2: SerialNumber: A101XRTQ

...

[   16.839935] usbserial: USB Serial support registered for FTDI USB Serial Device
[   16.848327] ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected
[   16.856781] usb 1-2.1: Detected FT232RL
[   16.977935] usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0
[   16.986785] ftdi_sio 1-2.2:1.0: FTDI USB Serial Device converter detected
[   16.994720] usb 1-2.2: Detected FT232RL
[   17.099914] usb 1-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
[   17.108581] ftdi_sio 1-2.7:1.0: FTDI USB Serial Device converter detected
[   17.116485] usb 1-2.7: Detected FT232RL
[   17.165710] i2c 2-005c: Driver mt9v032 requests probe deferral
[   17.187561] twl4030_madc 48070000.i2c:twl@48:madc: clk disabled, enabling
[   17.228759] usb 1-2.7: FTDI USB Serial Device converter now attached to ttyUSB2

그러나 이것은 작동하지 않습니다. 이유는 모르겠습니다.

이전 시스템(커널 2.6.34)에서는 다음 규칙을 적용했습니다.

KERNELS=="2-2.1" SUBSYSTEMS=="usb" NAME="usbS1"
KERNELS=="2-2.2" SUBSYSTEMS=="usb" NAME="usbS2"

해당 시스템에서는 제대로 작동했지만 지금 개발 중인 시스템에서는 작동하지 않았습니다(물론 커널 매개변수가 변경됨).

내 규칙 파일에 어떤 문제가 있나요?

답변1

다음 중 하나일 수 있습니다.

  1. 규칙에서는 이러한 장치를 커널 이름(KERNEL=)으로 직접 참조하고 커널이 장치를 호출하지 않을 수 있으므로 ttyUSB?규칙이 적용되지 않습니다.
  2. udev규칙을 작성한 파일을 읽을 수 없거나 읽을 수 없습니다.
  3. udevttyUSB?동일한 장치에 대한 규칙을 재정의하고 해당 장치에 이름을 적용하는 다른 규칙이 이미 있습니다 .

그래서 나는 당신에게 제안합니다 ...

  • 다음 사항을 확인하세요.커널 이름당신의 장치는 정말ttyUSB?
  • udev규칙을 재정의할 수 있는 다른 규칙에 의해 동일한 장치에 대한 다른 이름 변경이 있는지 확인하세요 .
  • 새 규칙이 실제로 로드되었는지 확인하고 udev(가능한 경우 다른 장치를 사용하여 테스트) udev새 규칙이 있는 파일을 읽을 수 있는지 확인하거나 규칙을 기존 규칙 파일에 넣어서 규칙을 읽을 수 있는지 테스트하세요.

답변2

디버깅을 돕기 위해 루트가 아닌 다음을 수행할 수 있습니다.

udevadm monitor

그런 다음 장치를 연결하여 udev에 표시되는 이벤트를 확인하세요. 규칙이 add여러 이벤트와 일치하는 것을 확인할 수 있습니다 .

장치 이름을 다음과 같은 경로로 변환할 수 있습니다.

udevadm info -q path -n /dev/ttyUSB0

그런 다음 이 출력 경로를

udevadm test <path>

udev가 읽고 있는 파일과 그들이 따르는 규칙을 추적하십시오. 실제로 명령 등을 실행하지 않으므로 단지 프롬프트일 뿐입니다.

답변3

이것이 내가 해결한 방법입니다.

KERNELS=="1-2.1", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS0"
KERNELS=="1-2.2", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS1"
KERNELS=="1-2.7", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS3"

쉼표와 SYMLINK 지시어를 사용하면 작동합니다.

관련 정보