 15e557b716
			
		
	
	
		15e557b716
		
	
	
	
	
		
			
			Signed-off-by: César Belley <cesar.belley@lse.epita.fr> Message-id: 20200826114209.28821-9-cesar.belley@lse.epita.fr Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
		
			
				
	
	
		
			141 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. _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).
 |