123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- .. _pcsys_005fusb:
- USB emulation
- -------------
- QEMU can emulate a PCI UHCI, OHCI, EHCI or XHCI USB controller. You can
- plug virtual USB devices or real host USB devices (only works with
- certain host operating systems). QEMU will automatically create and
- connect virtual USB hubs as necessary to connect multiple USB devices.
- .. _usb_005fdevices:
- Connecting USB devices
- ~~~~~~~~~~~~~~~~~~~~~~
- USB devices can be connected with the ``-device usb-...`` command line
- option or the ``device_add`` monitor command. Available devices are:
- ``usb-mouse``
- Virtual Mouse. This will override the PS/2 mouse emulation when
- activated.
- ``usb-tablet``
- Pointer device that uses absolute coordinates (like a touchscreen).
- This means QEMU is able to report the mouse position without having
- to grab the mouse. Also overrides the PS/2 mouse emulation when
- activated.
- ``usb-storage,drive=drive_id``
- Mass storage device backed by drive_id (see
- :ref:`disk_005fimages`)
- ``usb-uas``
- USB attached SCSI device, see
- `usb-storage.txt <https://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb-storage.txt>`__
- for details
- ``usb-bot``
- Bulk-only transport storage device, see
- `usb-storage.txt <https://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb-storage.txt>`__
- for details here, too
- ``usb-mtp,rootdir=dir``
- Media transfer protocol device, using dir as root of the file tree
- that is presented to the guest.
- ``usb-host,hostbus=bus,hostaddr=addr``
- Pass through the host device identified by bus and addr
- ``usb-host,vendorid=vendor,productid=product``
- Pass through the host device identified by vendor and product ID
- ``usb-wacom-tablet``
- Virtual Wacom PenPartner tablet. This device is similar to the
- ``tablet`` above but it can be used with the tslib library because in
- addition to touch coordinates it reports touch pressure.
- ``usb-kbd``
- Standard USB keyboard. Will override the PS/2 keyboard (if present).
- ``usb-serial,chardev=id``
- Serial converter. This emulates an FTDI FT232BM chip connected to
- host character device id.
- ``usb-braille,chardev=id``
- Braille device. This will use BrlAPI to display the braille output on
- a real or fake device referenced by id.
- ``usb-net[,netdev=id]``
- Network adapter that supports CDC ethernet and RNDIS protocols. id
- specifies a netdev defined with ``-netdev …,id=id``. For instance,
- user-mode networking can be used with
- .. parsed-literal::
- |qemu_system| [...] -netdev user,id=net0 -device usb-net,netdev=net0
- ``usb-ccid``
- Smartcard reader device
- ``usb-audio``
- USB audio device
- ``u2f-{emulated,passthru}``
- Universal Second Factor device
- .. _host_005fusb_005fdevices:
- Using host USB devices on a Linux host
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- WARNING: this is an experimental feature. QEMU will slow down when using
- it. USB devices requiring real time streaming (i.e. USB Video Cameras)
- are not supported yet.
- 1. If you use an early Linux 2.4 kernel, verify that no Linux driver is
- actually using the USB device. A simple way to do that is simply to
- disable the corresponding kernel module by renaming it from
- ``mydriver.o`` to ``mydriver.o.disabled``.
- 2. Verify that ``/proc/bus/usb`` is working (most Linux distributions
- should enable it by default). You should see something like that:
- ::
- ls /proc/bus/usb
- 001 devices drivers
- 3. Since only root can access to the USB devices directly, you can
- either launch QEMU as root or change the permissions of the USB
- devices you want to use. For testing, the following suffices:
- ::
- chown -R myuid /proc/bus/usb
- 4. Launch QEMU and do in the monitor:
- ::
- info usbhost
- Device 1.2, speed 480 Mb/s
- Class 00: USB device 1234:5678, USB DISK
- You should see the list of the devices you can use (Never try to use
- hubs, it won't work).
- 5. Add the device in QEMU by using:
- ::
- device_add usb-host,vendorid=0x1234,productid=0x5678
- Normally the guest OS should report that a new USB device is plugged.
- You can use the option ``-device usb-host,...`` to do the same.
- 6. Now you can try to use the host USB device in QEMU.
- When relaunching QEMU, you may have to unplug and plug again the USB
- device to make it work again (this is a bug).
|