У меня есть мобильный телефон, подключенный к ПК через USB.
При просмотре информации об устройстве с помощью
sudo udevadm info --attribute-walk
идентификатор продукта и поставщика отображается нормально, но нет ATTR {serial} . Приложение, которое я использую (Android ADB), нуждается в устройстве, чтобы сообщить серийный номер, чтобы работать должным образом.
Есть ли способ подделать серийный номер устройства, например, с помощью правила udev?
Пояснение: Вопрос не в том, как получить серийный номер устройства USB, а в том, как установить серийный номер.
У меня был телефон Android, который не сообщает серийный номер через USB, и инструмент adb не очень понравился. Пока что не существует простого решения для этого. Однако в наши дни очень просто купить подходящий телефон Android для разработки.
Ответы:
Во-первых, убедитесь, что устройство, не сообщающее серийный номер, действительно является проблемой.
adb devices
перечислит серийный номер как все вопросительные знаки, если у него нет разрешения на доступ к соответствующему устройству под/dev/bus/usb/
. Также запомните, что adb запускает сервер, вам может потребоваться убить его, чтобы заново его проверить.Предполагая, что это действительно проблема с устройством, я быстро проверил исходный код adb. Появляется
register_device
вcore/adb/usb_linux.c
считывает серийный номер прямо с устройства.core/adb/usb_libusb.c
вызываетlibusb_get_device_descriptor
для этого, который (проверка исходного кода libusb) захватывает его из sysfs или непосредственно с устройства. Так что никакая хитрость udev не поможет, к сожалению.Ваш выбор будет выглядеть так:
adb
(это с открытым исходным кодом). Это вопрос больше к переполнению стека, я думаю.источник
Если вы знаете узел устройства конкретного устройства (например, / dev / sdb), вы можете найти его с помощью следующей команды:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
Обычно, если вы пытаетесь создать пользовательское правило в /etc/udev/rules.d/51-android.rules для устройств Android, запись
lsusb
в вашем терминале будет отображать что-то вродеBus 002 Device 004: ID 062a:3270 Creative Labs
. Четыре символа после «ID» - в данном случае это будет062a
использовано - используются для обозначения конкретногоidVendor
файла.источник
adb start-server
от имени root или используете sudo), adb сможет читать серийный номер самостоятельно.Вероятно, это не серийный, а FTDI, так что вы можете попробовать так:
1) Получить сериал
2) Создайте правило и замените XXXXXXXX на найденный вами серийный номер или серийный номер FAKE.
3) Перезагрузить правила
,
В случае, попробуйте связаться с автором этой статьи .
источник