USB 장치의 가짜 일련 번호


9

USB를 통해 휴대폰을 PC에 연결했습니다.

를 사용하여 장치 정보를 볼 때

sudo udevadm info --attribute-walk

제품 및 공급 업체 ID가 잘 표시되지만 ATTR {serial} 은 없습니다 . 내가 사용하는 응용 프로그램 (Android adb)에는 장치가 제대로 작동하기 위해 일련 번호를보고해야합니다.

예를 들어 udev 규칙을 사용하여 장치의 일련 번호를 위조 할 수있는 방법이 있습니까?

설명 : USB 장치의 일련 번호 를 얻는 방법이 아니라 일련 번호를 설정 하는 방법 에 대한 질문입니다 .

USB를 통해 일련 번호를보고하지 않는 Android 전화가 있었고 adb 도구는 이것을 너무 좋아하지 않았습니다. 지금까지 이것에 대한 간단한 해결책은없는 것 같습니다. 그러나 개발을 위해 적절한 안드로이드 폰을 구입하는 것은 매우 쉬운 일입니다.


안드로이드 폰인가요? 그렇지 않으면 adb는 작동하지 않습니다.
Keith

추측 실제로 udev에에서이 정보를 얻을하지 않는 ADB합니다. 아마도 sysfs에서 또는 장치에서 직접 아마도 가장 쉬운 방법 인 adb 패치를 고려하십시오.
derobert

답변:


1

먼저 일련 번호를보고하지 않는 장치가 실제로 문제인지 확인하십시오. adb devices에서 해당 장치에 액세스 할 수있는 권한이없는 경우 일련 번호를 모든 물음표로 표시합니다 /dev/bus/usb/. 또한 adb는 서버를 시작한다는 것을 기억하십시오. 서버를 다시 검사하려면 서버를 종료해야 할 수도 있습니다.

장치에 실제로 문제가 있다고 가정하면 adb 소스 코드를 빠르게 확인했습니다. 이 표시 register_devicecore/adb/usb_linux.c장치에서 일련 번호를 똑바로 읽습니다. core/adb/usb_libusb.c호출 libusb_get_device_descriptor이 장치에서 sysfs를 또는 직접 잡고있는합니다 (libusb를 소스 코드를 확인), 그것을 할 수 있습니다. 불행히도 udev 속임수가 도움이되지 않습니다.

당신의 선택은 다음과 같습니다.

  • 일련 번호없이 adb를 작동시키는 방법을 알아 봅니다. 아마도 패치 adb(오픈 소스입니다). 이것은 스택 오버플로에 대한 추가 질문입니다.
  • 커널 usbfs 드라이버에 패치하여 adb의 요청에 대한 응답을 가짜로 만듭니다. 이것은 나에게 adb를 패치하는 것보다 훨씬 어렵게 들립니다.
  • adb가 libusb를 사용한다고 가정하고 syfs에서 일련 번호를 가짜로 표시하도록 커널을 패치하십시오.
  • 깨진 하드웨어를 수정하십시오.

고마워-이 설명합니다. 필자의 경우 깨진 하드웨어를 수정하는 것이 더 쉬웠습니다 (더 나은 하드웨어 구입).
Ralf

1

특정 장치의 장치 노드 (예 : / dev / sdb)를 알고 있다면 다음 명령을 사용하여 찾을 수 있습니다. udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

일반적으로 Android 장치의 /etc/udev/rules.d/51-android.rules에서 사용자 지정 규칙을 만들려고하면 lsusb터미널에 쓰면 다음과 같은 내용이 표시됩니다 Bus 002 Device 004: ID 062a:3270 Creative Labs . "ID"다음에 나오는 네 문자 (이 경우 문자)는 해당 파일 내의 062a특정 문자를 나타내는 데 사용 idVendor됩니다.


그것은 udev 규칙을 작성하는 데 도움이되지만 일련 번호를 변경하는 규칙을 작성하는 방법이 있습니까?
Ralf

특정 전화 번호를 모르지만 내 경험상 udev 규칙이 설정되면 (그리고 adb start-server루트로 실행 하거나 sudo를 사용하여) adb는 자체적으로 일련 번호를 읽을 수 있습니다.
Drake Clarris

0

아마도 직렬이 아니라 FTDI 일 것이므로 다음과 같이 시도하십시오.

1) 시리얼 가져 오기

sudo udevadm info --attribute-walk -n /dev/ttyUSB0  | sed -n '/FTDI/,/serial/p'

2) 규칙을 만들고 찾은 일련 번호 또는 FAKE 일련 번호로 XXXXXXXX를 대체하십시오.

sudo echo 'SUBSYSTEM=="tty", ATTRS{serial}=="XXXXXXXX", GROUP="users", MODE="0660", SYMLINK+="myusbphone"' | sudo tee /etc/udev/rules.d/99-myusbphone.rules

3) 규칙을 다시로드

sudo udevadm control --reload-rules

.

이 경우이 기사 의 작성자에게 문의 하십시오 .


OP가 직렬 프로토콜에 관한 것이 아니라 USB 장치의 일련 번호에 대해 이야기하고 있다고 생각합니다. 벤더 및 제품 ID와 함께 장치 설명자에서 약간 사용되는 필드입니다. 각 장치마다 고유해야하지만 USB 사양에서는 필수는 아닙니다. 가짜 방법에 대한 답변이 없습니다. 죄송합니다. 아마 커널을 패치했을 것입니다.
ali1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.