USB 장치에 사용자 정의 속성(ATTRS{attribute_name})을 쓰는 방법은 무엇입니까?

USB 장치에 사용자 정의 속성(ATTRS{attribute_name})을 쓰는 방법은 무엇입니까?

2개의 동일한 장치가 있고 udev 규칙을 사용하여 장치를 구별하고 싶습니다.

그러나 장치에 대해 다음 작업을 수행한 후 해당 하드웨어에서 1개의 장치에 일련 번호가 누락된 것을 발견했습니다.

이 일련번호는 각 장치마다 고유하고 표시되어야 합니다.

연결만 하면 일련번호가 표시됩니다.

$ udevadm info -a -p  $(udevadm info -q path -n /dev/ttyUSB0) | grep -i Serial
ATTRS{serial}=="XXXXXXXX"

결함이 있는 장치만 연결된 경우 일련 번호가 표시되지 않습니다.

$ udevadm info -a -p  $(udevadm info -q path -n /dev/ttyUSB1) | grep -i Serial

$

연결된 경우에만:

$ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-FTDI_DEVICE-NAME_XXXXXXXX-if00-port0

결함이 있는 쪽만 연결하는 경우:

$ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-FTDI_DEVICE-NAME_-if00-port0

그러면 udev 규칙을 사용하여 장치를 구별할 수 있도록 이러한 장치에 사용자 지정 속성을 추가하는 방법이 있습니까?

실행될 명령이나 프로그램과 같은 것

$ attribute_writing_binary /dev/tty_device_path "ATTRS{custom_attribute}=value" 

참고: 지금까지 살펴본 리소스와 솔루션은 장치가 연결된 포트에 대한 규칙을 기반으로 합니다. 내 의도는 장치에 기록된 키-값 쌍 문자열이 장치 자체에 유지되고 다른 컴퓨터에 연결될 때 값을 유지하므로 여러 하드웨어 인스턴스에 배포할 수 있고 ID를 할당할 수 있다는 것입니다.

답변1

장치가 /dev/serial/by-id/usb-FTDI_DEVICE-NAME_*장치로 표시된다는 사실은 FTDI USB-직렬 변환기 칩(또는 그 가짜 복제품)이 장치에 사용된다는 의미입니다.

내가 이해한 바로는 정품 FTDI USB-직렬 칩은 사용자 정의 속성 할당을 지원하지 않지만 사용자 정의 공급업체/제품 식별자 및/또는 일련 번호의 선택적 할당은 지원합니다. 이 기능은 칩이 통합될 장치를 제조할 때 사용하도록 고안되었으며 이러한 매개변수는한 번, 그 이후로 영원히.

FTDI 칩을 구성하는 도구는 이라고 합니다 FT_PROG.여기에서 사용 가능, Windows에만 해당됩니다. 이것은 사용자 가이드입니다.

위조(가짜) USB-직렬 칩은 최근 몇 년간 FTDI에서 큰 문제였던 것 같습니다.위조 제품을 사전에 감지하여 영구적인 오류를 발생시키는 드라이버 버전 출시.

FT_PROG도구는 이러한 칩이 포함된 장치를 제조할 때 사용하도록 설계되었으므로 칩 제조업체는 발견한 위조 칩을 비활성화하는 것이 더 낫다고 생각합니다. 장치 제조 과정에서 위조 칩을 비활성화하면 제조업체에 해를 끼칠 뿐입니다. 장치의 최종 사용자가 아닌 정품 칩 대신 위조 칩을 사용하십시오.

따라서 FT_PROG를 사용하여 장치의 고유 일련 번호를 구성하려고 시도하고 장치 중 하나에 가짜 칩이 포함되어 있는 경우,이 프로그램은 장치의 칩을 비활성화할 위험이 있습니다.

일부(구) 버전의 FTDI USB-직렬 칩은 프로그래밍 가능한 식별자를 지원하기 위해 작은 외부 EEPROM 칩이 필요한 것으로 보이며, "결함이 있는" 장치에 결함이 있거나 누락된 EEPROM이 있는 경우에는 이에 대해 할 수 있는 일이 별로 없습니다. 소프트웨어 수준.

관련 정보