Linux 장치 관리를 달성하기 위해 다른 장치 ID를 위조하는 방법은 무엇입니까?

Linux 장치 관리를 달성하기 위해 다른 장치 ID를 위조하는 방법은 무엇입니까?

공급업체 및 제품 ID(VID 및 PID)를 무시하기 위해 AT 명령을 사용하여 어리석게 차단한 WWAN 장치가 있습니다. 나는 카드가 삽입될 때 노트북이 부팅되는 것을 방지하는 노트북의 화이트리스트 기능을 우회하기 위해 이 작업을 수행했습니다.

이 시점에서 장치는 부팅되고 다른 USB 장치인 것처럼 올바르게 작동하지만 Linux는 더 이상 해당 장치에 대한 올바른 드라이버를 로드하지 않으며 모든 용도로 액세스할 수 없게 됩니다. VID/PID 값을 복원하기 위해 더 이상 직렬 포트를 얻을 수 없습니다.

질문: Linux가 장치 2cb7:0007을 발견하면 내부적으로 해당 ID를 1199:9079로 바꾸도록 지시하거나 적어도 복구할 수 있도록 직렬 인터페이스를 얻을 수 있도록 일부 드라이버를 강제로 로드하도록 지시할 수 있는 방법이 있습니까? 신원? 다른 운영 체제를 사용하여 이 작업을 수행할 수 있을까요?

답변1

다음 명령을 사용하면 공급업체 제품 ID 1199:9079의 USB 장치에 대해 로드될 모듈을 볼 수 있습니다.

sudo modprobe -c | grep usb:v1199p9079

결과는 다음과 유사합니다.

alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in* qcserial
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in08* qmi_wwan
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in0A* qmi_wwan

인터페이스 번호 8과 10(0xA 16진수)의 경우 모듈이 장치의 다른 모든 인터페이스를 제어할 것임을 qmi_wwan나타 냅니다.qcserial

대부분의 Linux USB 직렬 드라이버에는 드라이버가 알지 못하는 장치를 허용하도록 지시하는 방법이 있습니다.

이 경우 rmmod일반적으로 장치 2cb7:0007에 로드된 드라이버(해당 드라이버가 있는 경우)를 블랙리스트에 추가해야 합니다. 그런 다음 모듈의 수동 로딩을 사용 하고 다음과 같이 sudo modprobe qcserial장치의 현재 ID를 작성합니다 ./sys/bus/usb-serial/drivers/qcserial/new_id

echo "2cb7 0007" | sudo tee /sys/bus/usb-serial/drivers/qcserial/new_id >/dev/null

장치의 실제 동작을 변경하지 않고 ID 값만 변경했기 때문에 드라이버는 평소처럼 장치를 제어할 수 있어야 합니다.

이는 사용자 정의 공급업체/제품 ID가 있는 내장형 OEM USB-직렬 변환기 칩이 있는 장치를 처리하는 방법이기도 합니다. 사용된 실제 칩을 처리할 수 있는 드라이버를 식별하면 이 메커니즘을 사용하여 Linux 직렬 변환기 칩. 행 드라이버 개발자는 아직 특정 사용자 정의 공급업체/제품 ID 쌍을 알지 못하며 드라이버가 해당 공급업체/제품 ID 쌍을 사용하여 장치를 청구하도록 허용합니다. 물론 이 경우 새 ID를 설명하는 이메일을 해당 직렬 드라이버의 관리자에게 보내 향후 커널 버전이 이러한 맞춤형 OEM USB-직렬 칩을 자동으로 인식할 수 있도록 하는 것이 도움이 될 것입니다.

관련 정보