![ESP 보드 이름을 변경하는 udev의 규칙이 작동하지 않습니다.](https://linux55.com/image/185175/ESP%20%EB%B3%B4%EB%93%9C%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%8A%94%20udev%EC%9D%98%20%EA%B7%9C%EC%B9%99%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
두 개의 ESP 보드(USB 허브에 연결됨)를 연결했습니다. 따라서 ESP 보드는 USB 허브의 USB 포트 중 하나를 통해 간접적으로 acer-extensa-5630z(이전 모델)에 연결되었습니다. /dev 디렉토리에는 두 개의 ESP 보드가 ttyUSB0 및 ttyUSB1로 나열되어 있습니다.
"ttyUSB0" 및 "ttyUSB1" 이름을 각각 "esp1" 및 "esp2"로 변경하고 싶습니다. 내 이름을 변경하기 위해 수행한 단계는 다음과 같습니다.
- 아래 나열된 속성을 얻기 위해 다음 명령을 사용하여 속성을 나열했습니다.
udevadm 정보 --attribute-walk --name=/dev/ttyUSB0
ram@ram-Extensa-5630:/etc/udev/rules.d$ udevadm info --attribute-walk --name=/dev/ttyUSB0 udevadm 정보는 devpath에 지정된 장치에서 시작됩니다. 상위 장치 체인 위로 이동합니다. 모든 장치에 대해 인쇄됩니다. udev 규칙 키 형식에서 가능한 모든 속성을 검색합니다. 일치 규칙은 장치 속성으로 구성될 수 있습니다. 단일 상위 장치의 속성. 장치 보기 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB0/tty/ttyUSB0': 커널 == "ttyUSB0" 하위 시스템 == "tty" 드라이버=="" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB0' 보기: 커널 == "ttyUSB0" subsystem=="USB-직렬" 드라이버=="ch341-uart" ATTRS{포트번호}==“0” 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2/2-1.2:1.0' 보기: 커널=="2-1.2:1.0" 하위 시스템 == "usb" 드라이버=="ch341" ATTRS{bInterfaceNumber}==“00” ATTRS{승인됨}=="1" ATTRS{bAlternateSetting}==“0” ATTRS{bInterfaceSubClass}==“01” ATTRS{bInterfaceClass}=="ff" ATTRS{지원_자동-일시 중지}=="1" ATTRS{bInterfaceProtocol}==“02” ATTRS{bNumEndpoints}==“03” 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.2' 보기: 커널=="2-1.2" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{bmAttributes}=="80" ATTRS{bDeviceClass}=="ff" ATTRS{속도}=="12" ATTRS{rx_lanes}=="1" ATTRS{버전}=="1.10" ATTRS{idProduct}=="7523" ATTRS{bNumConfigurations}==“1” ATTRS{product}=="USB2.0-직렬" ATTRS{제거 가능}=="알 수 없음" ATTRS{avoid_reset_quirk}==“0” ATTRS{bMaxPacketSize0}==“8” ATTRS{bNumInterfaces}==“1” ATTRS{urbnum}=="16" ATTRS{devnum}=="27" ATTRS{idVendor}=="1a86" ATTRS{bDeviceProtocol}==“00” ATTRS{devpath}=="1.2" ATTRS{구성}=="" ATTRS{tx_lanes}==“1” ATTRS{bMaxPower}==“98mA” ATTRS{ltm_capable}=="아니요" ATTRS{버스 번호}=="2" ATTRS{maxchild}==“0” ATTRS{bcdDevice}==“0263” ATTRS{bDeviceSubClass}==“00” ATTRS{Quirk}=="0x0" ATTRS{승인됨}=="1" ATTRS{bConfigurationValue}==“1” 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1' 보기: 커널 == "2-1" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{bDeviceProtocol}==“01” ATTRS{rx_lanes}=="1" ATTRS{버전}=="2.00" ATTRS{bDeviceClass}==“09” ATTRS{bMaxPacketSize0}==“64” ATTRS{urbnum}==“35” ATTRS{bNumInterfaces}==“1” ATTRS{idVendor}=="045b" ATTRS{Quirk}=="0x0" ATTRS{devnum}=="25" ATTRS{bConfigurationValue}==“1” ATTRS{devpath}=="1" ATTRS{승인됨}=="1" ATTRS{bDeviceSubClass}==“00” ATTRS{제거 가능}=="알 수 없음" ATTRS{idProduct}==“0209” ATTRS{속도}=="480" ATTRS{tx_lanes}==“1” ATTRS{버스 번호}=="2" ATTRS{bNumConfigurations}==“1” ATTRS{avoid_reset_quirk}==“0” ATTRS{bMaxPower}==“0mA” ATTRS{maxchild}=="4" ATTRS{bmAttributes}=="e0" ATTRS{bcdDevice}==“0100” ATTRS{ltm_capable}=="아니요" ATTRS{구성}=="" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2' 보기: 커널=="usb2" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{idVendor}=="1d6b" ATTRS{bcdDevice}==“0504” ATTRS{avoid_reset_quirk}==“0” ATTRS{Quirk}=="0x0" ATTRS{시퀀스}=="0000:00:1d.7" ATTRS{버전}=="2.00" ATTRS{bDeviceSubClass}==“00” ATTRS{rx_lanes}=="1" ATTRS{bNumConfigurations}==“1” ATTRS{ltm_capable}=="아니요" ATTRS{bConfigurationValue}==“1” ATTRS{제조업체}=="리눅스 5.4.0-58-일반 ehci_hcd" ATTRS{tx_lanes}==“1” ATTRS{authorized_default}==“1” ATTRS{속도}=="480" ATTRS{버스 번호}=="2" ATTRS{bMaxPower}==“0mA” ATTRS{bmAttributes}=="e0" ATTRS{제거 가능}=="알 수 없음" ATTRS{devnum}=="1" ATTRS{maxchild}=="6" ATTRS{urbnum}=="226" ATTRS{제품}=="EHCI 호스트 컨트롤러" ATTRS{bMaxPacketSize0}==“64” ATTRS{bDeviceClass}==“09” ATTRS{bNumInterfaces}==“1” ATTRS{승인됨}=="1" ATTRS{구성}=="" ATTRS{interface_authorized_default}==“1” ATTRS{bDeviceProtocol}==“00” ATTRS{devpath}=="0" ATTRS{idProduct}==“0002” 상위 장치 '/devices/pci0000:00/0000:00:1d.7' 보기: 커널 == "0000:00:1d.7" 하위 시스템 == "pci" 드라이버=="ehci-pci" ATTRS{local_cpulist}=="0-1" ATTRS{dma_mask_bits}==“32” ATTRS{d3cold_allowed}==“1” ATTRS{하위 시스템 제공자}=="0x1025" ATTRS{공급업체}=="0x8086" ATTRS{uframe_periodic_max}==“100” ATTRS{confirm_dma_mask_bits}==“32” ATTRS{numa_node}=="-1" ATTRS{driver_override}=="(비어 있음)" ATTRS{개정}=="0x03" ATTRS{장치}=="0x293a" ATTRS{irq}=="23" ATTRS{local_cpus}=="3" ATTRS{활성화}=="1" ATTRS{동반자}=="" ATTRS{하위 시스템 장치}=="0x013c" ATTRS{ari_enabled}==“0” ATTRS{msi_bus}==“1” ATTRS{broken_parity_status}==“0” ATTRS{class}=="0x0c0320" 상위 장치 "/devices/pci0000:00" 보기: 커널=="pci0000:00" 하위 시스템=="" 드라이버=="" ram@ram-Extensa-5630:/etc/udev/rules.d$
다음은 ttyUSB1의 속성을 표시하는 데 사용한 명령입니다.
udevadm 정보 --attribute-walk --name=/dev/ttyUSB1
ram@ram-Extensa-5630:/etc/udev/rules.d$ udevadm 정보 --attribute-walk --name=/dev/ttyUSB1 udevadm 정보는 devpath에 지정된 장치에서 시작됩니다. 상위 장치 체인 위로 이동합니다. 모든 장치에 대해 인쇄됩니다. udev 규칙 키 형식에서 가능한 모든 속성을 검색합니다. 일치 규칙은 장치 속성으로 구성될 수 있습니다. 단일 상위 장치의 속성. 장치 보기 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.4/2-1.1.4:1.0/ttyUSB1/tty/ttyUSB1': 커널 == "ttyUSB1" 하위 시스템 == "tty" 드라이버=="" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.4/2-1.1.4:1.0/ttyUSB1' 보기: 커널 == "ttyUSB1" subsystem=="USB-직렬" 드라이버=="ch341-uart" ATTRS{포트번호}==“0” 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.4/2-1.1.4:1.0' 보기: 커널=="2-1.1.4:1.0" 하위 시스템 == "usb" 드라이버=="ch341" ATTRS{bAlternateSetting}==“0” ATTRS{bNumEndpoints}==“03” ATTRS{bInterfaceProtocol}==“02” ATTRS{bInterfaceClass}=="ff" ATTRS{bInterfaceSubClass}==“01” ATTRS{bInterfaceNumber}==“00” ATTRS{지원_자동-일시 중지}=="1" ATTRS{승인됨}=="1" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.4' 보기: 커널=="2-1.1.4" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{속도}=="12" ATTRS{승인됨}=="1" ATTRS{idProduct}=="7523" ATTRS{버전}=="1.10" ATTRS{bMaxPower}==“98mA” ATTRS{ltm_capable}=="아니요" ATTRS{bDeviceProtocol}==“00” ATTRS{tx_lanes}==“1” ATTRS{bNumConfigurations}==“1” ATTRS{bNumInterfaces}==“1” ATTRS{bmAttributes}=="80" ATTRS{devpath}=="1.1.4" ATTRS{urbnum}=="16" ATTRS{제거 가능}=="알 수 없음" ATTRS{bcdDevice}==“0263” ATTRS{버스 번호}=="2" ATTRS{avoid_reset_quirk}==“0” ATTRS{구성}=="" ATTRS{bConfigurationValue}==“1” ATTRS{bDeviceSubClass}==“00” ATTRS{devnum}=="28" ATTRS{product}=="USB2.0-직렬" ATTRS{Quirk}=="0x0" ATTRS{maxchild}==“0” ATTRS{bMaxPacketSize0}==“8” ATTRS{rx_lanes}=="1" ATTRS{bDeviceClass}=="ff" ATTRS{idVendor}=="1a86" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1' 보기: 커널=="2-1.1" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{Quirk}=="0x0" ATTRS{ltm_capable}=="아니요" ATTRS{idProduct}==“0209” ATTRS{avoid_reset_quirk}==“0” ATTRS{구성}=="" ATTRS{bcdDevice}==“0100” ATTRS{버전}=="2.00" ATTRS{bDeviceProtocol}==“01” ATTRS{제거 가능}=="알 수 없음" ATTRS{urbnum}=="26" ATTRS{tx_lanes}==“1” ATTRS{devnum}=="26" ATTRS{rx_lanes}=="1" ATTRS{bConfigurationValue}==“1” ATTRS{속도}=="480" ATTRS{bDeviceSubClass}==“00” ATTRS{버스 번호}=="2" ATTRS{bmAttributes}=="e0" ATTRS{bDeviceClass}==“09” ATTRS{bNumConfigurations}==“1” ATTRS{maxchild}=="4" ATTRS{bMaxPower}==“0mA” ATTRS{idVendor}=="045b" ATTRS{bNumInterfaces}==“1” ATTRS{bMaxPacketSize0}==“64” ATTRS{승인됨}=="1" ATTRS{devpath}=="1.1" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2/2-1' 보기: 커널 == "2-1" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{idVendor}=="045b" ATTRS{avoid_reset_quirk}==“0” ATTRS{버스 번호}=="2" ATTRS{bConfigurationValue}==“1” ATTRS{제거 가능}=="알 수 없음" ATTRS{bNumConfigurations}==“1” ATTRS{구성}=="" ATTRS{urbnum}==“35” ATTRS{bDeviceSubClass}==“00” ATTRS{rx_lanes}=="1" ATTRS{devpath}=="1" ATTRS{bDeviceClass}==“09” ATTRS{bMaxPacketSize0}==“64” ATTRS{tx_lanes}==“1” ATTRS{bcdDevice}==“0100” ATTRS{속도}=="480" ATTRS{devnum}=="25" ATTRS{승인됨}=="1" ATTRS{bMaxPower}==“0mA” ATTRS{Quirk}=="0x0" ATTRS{버전}=="2.00" ATTRS{bDeviceProtocol}==“01” ATTRS{bmAttributes}=="e0" ATTRS{bNumInterfaces}==“1” ATTRS{idProduct}==“0209” ATTRS{maxchild}=="4" ATTRS{ltm_capable}=="아니요" 상위 장치 '/devices/pci0000:00/0000:00:1d.7/usb2' 보기: 커널=="usb2" 하위 시스템 == "usb" 드라이버=="USB" ATTRS{bDeviceProtocol}==“00” ATTRS{bDeviceClass}==“09” ATTRS{구성}=="" ATTRS{urbnum}=="226" ATTRS{bmAttributes}=="e0" ATTRS{bDeviceSubClass}==“00” ATTRS{bConfigurationValue}==“1” ATTRS{idVendor}=="1d6b" ATTRS{maxchild}=="6" ATTRS{제거 가능}=="알 수 없음" ATTRS{ltm_capable}=="아니요" ATTRS{Quirk}=="0x0" ATTRS{버스 번호}=="2" ATTRS{bMaxPower}==“0mA” ATTRS{bMaxPacketSize0}==“64” ATTRS{devnum}=="1" ATTRS{버전}=="2.00" ATTRS{속도}=="480" ATTRS{승인됨}=="1" ATTRS{bNumInterfaces}==“1” ATTRS{devpath}=="0" ATTRS{제품}=="EHCI 호스트 컨트롤러" ATTRS{제조업체}=="리눅스 5.4.0-58-일반 ehci_hcd" ATTRS{bNumConfigurations}==“1” ATTRS{시퀀스}=="0000:00:1d.7" ATTRS{rx_lanes}=="1" ATTRS{avoid_reset_quirk}==“0” ATTRS{idProduct}==“0002” ATTRS{tx_lanes}==“1” ATTRS{bcdDevice}==“0504” ATTRS{interface_authorized_default}==“1” ATTRS{authorized_default}==“1” 상위 장치 '/devices/pci0000:00/0000:00:1d.7' 보기: 커널 == "0000:00:1d.7" 하위 시스템 == "pci" 드라이버=="ehci-pci" ATTRS{uframe_periodic_max}==“100” ATTRS{d3cold_allowed}==“1” ATTRS{confirm_dma_mask_bits}==“32” ATTRS{하위 시스템 제공자}=="0x1025" ATTRS{local_cpulist}=="0-1" ATTRS{driver_override}=="(비어 있음)" ATTRS{활성화}=="1" ATTRS{numa_node}=="-1" ATTRS{local_cpus}=="3" ATTRS{공급업체}=="0x8086" ATTRS{하위 시스템 장치}=="0x013c" ATTRS{ari_enabled}==“0” ATTRS{irq}=="23" ATTRS{broken_parity_status}==“0” ATTRS{동반자}=="" ATTRS{msi_bus}==“1” ATTRS{장치}=="0x293a" ATTRS{class}=="0x0c0320" ATTRS{dma_mask_bits}==“32” ATTRS{개정}=="0x03" 상위 장치 "/devices/pci0000:00" 보기: 커널=="pci0000:00" 하위 시스템=="" 드라이버=="" ram@ram-Extensa-5630:/etc/udev/rules.d$
- "/etc/udev/rules.d" 디렉토리에서 다음 내용으로 "esp.rules"라는 파일을 만들고 편집했습니다.
하위 시스템 == "usb", 작업 == "추가", ATTRS {idProduct} == "7523", ATTRS {idVendor} == "1a86", ATTRS {devpath} == "2.2", SYMLINK+="esp1 " 하위 시스템 == "usb", 작업 == "추가", ATTRS{idProduct}=="7523", ATTRS{idVendor}=="1a86", ATTRS{devpath}=="2.1.4", SYMLINK+= "esp2 "
- "esp.rules" 파일을 업데이트한 후 실행했습니다.
udevadm 제어--다시 로드 규칙 && udevadm 트리거
제가 수행한 단계에 문제가 있는지 아니면 USB 포트에 문제가 있는지 모르겠습니다. 저는 우분투 20.04 LTS를 사용하고 있습니다.
이 문제를 해결하도록 도와주세요. 미리 감사드립니다.
답변1
이 규칙은 내가 보기에 정확하고 작동할 것입니다. 내가 발견한 유일한 문제는 규칙을 테스트/실행하는 데 사용하는 명령에 있습니다. udevadm trigger
기본적으로 change
이벤트가 전송되고 규칙이 반응하므로 add
다음을 사용해야 합니다.
udevadm control --reload-rules && udevadm trigger -c add