Ошибка прохождения USB-эмулятора Android: «»usb-хост» не является допустимым именем модели устройства»

#android #windows #android-studio

Вопрос:

Когда я пытаюсь использовать USB-переход, как описано в https://androidstudio.googleblog.com/2020/08/emulator-30024-canary.html,

emulator -avd Pixel_3a_API_30_x86 -qemu -usb -device usb-host,vendorid=076B,productid=3821

Я получаю сообщение об ошибке 'usb-host' is not a valid device model name . Согласно ссылке Google, передача по USB должна поддерживаться с версии эмулятора 30.0.24, а мой эмулятор сообщает о версии 30.5.3.0 (build_id 7196367).

Кому-нибудь удалось заставить это работать?

Ответ №1:

Нет! То же самое с эмулятором Android версии 30.5.4.0 (build_id 7243153).

Если я посмотрю двоичную версию файла эмулятора qemu для Linux,
я все равно смогу найти опцию usb-хоста. Но это полностью исключено в версии для Windows.
Поэтому я предполагаю, что Google, должно быть, отключил поддержку usb-хоста в Windows.
К сожалению, последние примечания к выпуску эмулятора датированы 30.4.5 (23 февраля 2021 года).

Также я не могу найти никаких намеков на это в Android-обзоре AOSP Не знаю, где еще искать!?

[Обновление:]
Я думаю, что нашел его на зеркале AOSP на GitHub и в Android-обзоре AOSP. От Эрвина Янсена, совершенного 3 марта:

Отменить «Включить перенаправление USB-хоста для Windows»

 # Libusb support on windows is not what we would like it to be
LIBUSB_FLAGS="--disable-libusb --disable-usb-redir"
 

Похоже, что функция USB-пропуска в Windows была просто слишком глючной.
Таким образом, если вернуться к версии 30.5.2 (build_id 7175973) (27 февраля 2021 года)
, usb-хост по-прежнему будет действительным именем модели устройства.
ДЛ брал с Канарского канала.

Но, похоже, Google все еще работает над этим…

[Обновление 10.12.21]
Начиная с версии 31.1.4 эмулятора Google внедрил некоторые новые функции и инструменты для передачи USB. Я не смог найти параметр-list-usb с помощью эмулятора-помощь, но он работает, если вы запустите:

 emulator -list-usb
VID:PID 058f:6387 (Bus 1, Port 5.1.1)
        Manufacturer:
        Product:
        SerialNumber:   40A0FE0A
 

С помощью этой информации вы можете использовать параметр-usb-passsthrough
(-usb-передача через vendorid=VID,productid=PID[,ШИНА хоста=ШИНА,ПОРТ хоста=ПОРТ])

 emulator -netdelay none -netspeed full -avd Pixel_4_API_31 -usb-passthrough vendorid=058f,productid=6387,hostbus=1,hostport=5.1.1
 

но это показывает ошибку:

 ERROR   | Cannot load Android USB Assistant Driver for USB device "vendorid=058f". USB pass-through might not work.
 

Снова добавлен новый инструмент Google, со встроенными драйверами Windows для USB-передачи, который можно попробовать еще раз. Загружается непосредственно с AOSP (tgz)

запуск от имени администратора:

 Install_Drivers.bat
 
 Installing Android USB Assistant...
call Android_USB_Assistant_Install.bat
Microsoft PnP Utility

Processing inf :            Android_USB_Assistant.inf
Successfully installed the driver.
Driver package added successfully.
Published name :            oem89.inf


Total attempted:              1
Number successfully imported: 1

Installing Android Emulator USB Passthrough Assistance Driver

SERVICE_NAME: UsbAssist
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
[SC] DeleteService SUCCESS

SERVICE_NAME: UsbAssist
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              :
 

Но повторная попытка все равно показывает ту же ошибку.

[Обновление 13.12.21]
Теперь он работает. Правильный синтаксис-с 0x и без ключевых слов usbhost и usbport:

 -usb-passthrough vendorid=0x058f,productid=0x6387
 

Он по-прежнему показывает сообщение об ошибке:

 qemu-system-x86_64.exe: libusb_kernel_driver_active: -12 [NOT_SUPPORTED]
 

И устройство не распознается в AVD,
но как только вы укорените AVD (канарейку Magisk) с помощью моего скрипта rootAVD с Github
с параметрами PATCHFSTAB GetUSBHPmodZ

 rootAVD.bat %LOCALAPPDATA%AndroidSdksystem-imagesandroid-32google_apis_playstorex86_64ramdisk.img PATCHFSTAB GetUSBHPmodZ
 

и установите мой usbhostpermissions.zip Модуль Magisk, USB-накопитель будет
отображаться как общесистемный накопитель, а доступ к последовательному устройству USB можно получить
через USB-последовательный терминал Apk. Информация об устройстве USB APK
теперь также будет отображать подключенные USB-устройства. Я обновлю свое руководство по XDA как можно скорее
соответствующим образом.

Чтобы пропустить больше USB-устройств, просто добавьте еще одно за первым i.e:

 emulator -netdelay none -netspeed full -avd Pixel_4_API_32 -usb-passthrough vendorid=0x058f,productid=0x6387 -usb-passthrough vendorid=0x067b,productid=0x2303
 

Комментарии:

1. Какие-либо обновления по этой проблеме, похоже, изменения были объединены в ветку emu-master-dev?

2. Пожалуйста, обновите информацию по этому вопросу. работает ли он в среде Windows. Похоже, изменения были внесены в эмулятор версии 31.1.4.

3. Да, похоже, опция usb вернулась в двоичный файл, но я не могу подключить ни одно USB-устройство. У вас есть источник для этого слияния?

4. Я не получаю ошибку usb-хоста, но я также не могу подключить какое-либо USB-устройство. Вы можете сослаться на это android.googlesource.com/platform/external/qemu/ /ссылки/главы/…

5. о, отлично, спасибо. Это привело к появлению некоторых новых инструментов.