Как подключить USB-аудиоустройство к EHCI в QEMU?

Я пытаюсь подключить устройство <code>usb-audio</code> к QEMU, но получаю следующую ошибку: <br/> <pre><code>qemu-system-x86_64: -device usb-audio,audiodev=audio: Warning: speed mismatch trying to attach usb device "QEMU USB Audio Interface" (full speed) to bus "usb-bus.0", port "3" (high speed)</code></pre> <br/> Судя по сообщению об ошибке, устройство <code>usb-audio</code> необходимо подключить к порту XHCI, поскольку это USB 3.0 устройство. Однако, гостевая система не поддерживает USB 3.0, поэтому этот вариант не подходит. Я также заметил, что на <code>qemu-system-ppc -machine mac99</code> я мог успешно подключить <code>usb-audio</code> без добавления <code>-device qemu-xhci</code>, что указывает на то, что контроллер XHCI не является обязательным. <br/> <br/> В связи с этим, как правильно подключить <code>usb-audio</code> к EHCI контроллеру? <br/> <br/> Я пробовал следующее: <pre><code>-device usb-ehci,id=ehci-bus
-device usb-audio,bus=ehci-bus.0,audiodev=audio</code></pre> <br/>, но это также не сработало.
  • 17 апреля 2025 г. 8:15
Ответы на вопрос 2
Для подключения USB-аудиоустройства в QEMU с использованием EHCI контроллера, вы столкнулись с известной проблемой совместимости между разными версиями USB и устройствами. Давайте рассмотрим шаги, которые вы можете предпринять для успешного подключения вашего USB-аудиоустройства к EHCI контроллеру.

1. **Используйте правильный контроллер**: Как вы правильно заметили, USB-аудиоустройства обычно требуют подключения к USB 2.0. Вы можете использовать EHCI контроллер, как показано в вашем примере.

2. **Определите правильный идентификатор**: Вам нужно убедиться, что корректно указываете идентификатор шины и устройства. Пример команды, который должен работать:

   ```bash
   qemu-system-x86_64 -machine type=pc,accel=kvm \
   -device usb-ehci,id=ehci-bus \
   -device usb-audio,audiodev=audio,bus=ehci-bus.0 \
   -audiodev driver=pa,id=audio,out.frequency=44100
   ```

   В этом примере:
   - `-machine type=pc,accel=kvm` — это стандартный параметр для запуска с поддержкой KVM.
   - `-device usb-ehci,id=ehci-bus` — добавляет USB 2.0 EHCI контроллер.
   - `-device usb-audio,audiodev=audio,bus=ehci-bus.0` — добавляет ваше USB-аудиоустройство на шину EHCI.
   - `-audiodev` — это пример, как можно задать аудиовывод через PulseAudio.

3. **Проверьте настройки и драйверы гостевой ОС**: Убедитесь, что в вашей гостевой системе установлены необходимые драйверы. Например, в Linux могут понадобиться пакеты `alsa` или `pulseaudio`.

4. **Проверьте настройку USB-устройств**: Убедитесь, что в вашей системе все USB-устройства корректно работают и их можно использовать. Иногда проблемы могут быть вызваны конфликтами с другими устройствами.

Если вы все сделали правильно и все еще получаете ошибку, возможно, ваш контроллер или конфигурация виртуальной машины требуют дополнительной настройки. К примеру, можно попробовать подключить устройство через `-device usb-ehci,id=ehci-bus` и не добавлять его на шину, чтобы QEMU автоматически обрабатывал это.

Если у вас есть более специфическая информация о том, какая операционная система используется в гостевой системе или какие другие устройства подключены к QEMU, это может помочь в дальнейшей диагностике проблемы.
Судя по ошибке он говорит что я должен подключить usb-audio к XHCI (а ни EHCI) порту, т. к. это USB 3.0 устройство.
Не совсем.
speed mismatch trying to attach usb device "QEMU USB Audio Interface" (full speed) to bus "usb-bus.0", port "3" (high speed)
full speed = USB 1.1
high speed = USB 2.0

Попробуйте вместо
-device usb-audio,bus=ehci-bus.0,audiodev=audio
так:
-usbdevice host:$(lsusb | grep -i "audio" | awk '{print $6}')
Похожие вопросы