|  |  | 
|  | qemu usb storage emulation | 
|  | -------------------------- | 
|  |  | 
|  | QEMU has three devices for usb storage emulation. | 
|  |  | 
|  | Number one emulates the classic bulk-only transport protocol which is | 
|  | used by 99% of the usb sticks on the market today and is called | 
|  | "usb-storage".  Usage (hooking up to xhci, other host controllers work | 
|  | too): | 
|  |  | 
|  | qemu ${other_vm_args}                                \ | 
|  | -drive if=none,id=stick,file=/path/to/file.img  \ | 
|  | -device nec-usb-xhci,id=xhci                    \ | 
|  | -device usb-storage,bus=xhci.0,drive=stick | 
|  |  | 
|  |  | 
|  | Number two is the newer usb attached scsi transport.  This one doesn't | 
|  | automagically create a scsi disk, so you have to explicitly attach one | 
|  | manually.  Multiple logical units are supported.  Here is an example | 
|  | with tree logical units: | 
|  |  | 
|  | qemu ${other_vm_args}                                                \ | 
|  | -drive if=none,id=uas-disk1,file=/path/to/file1.img             \ | 
|  | -drive if=none,id=uas-disk2,file=/path/to/file2.img             \ | 
|  | -drive if=none,id=uas-cdrom,media=cdrom,file=/path/to/image.iso \ | 
|  | -device nec-usb-xhci,id=xhci                                    \ | 
|  | -device usb-uas,id=uas,bus=xhci.0                               \ | 
|  | -device scsi-hd,bus=uas.0,scsi-id=0,lun=0,drive=uas-disk1       \ | 
|  | -device scsi-hd,bus=uas.0,scsi-id=0,lun=1,drive=uas-disk2       \ | 
|  | -device scsi-cd,bus=uas.0,scsi-id=0,lun=5,drive=uas-cdrom | 
|  |  | 
|  |  | 
|  | Number three emulates the classic bulk-only transport protocol too. | 
|  | It's called "usb-bot".  It shares most code with "usb-storage", and | 
|  | the guest will not be able to see the difference.  The qemu command | 
|  | line interface is simliar to usb-uas though, i.e. no automatic scsi | 
|  | disk creation.  It also features support for up to 16 LUNs.  The LUN | 
|  | numbers must be continuous, i.e. for three devices you must use 0+1+2. | 
|  | The 0+1+5 numbering from the "usb-uas" example isn't going to work | 
|  | with "usb-bot". | 
|  |  | 
|  | enjoy, | 
|  | Gerd | 
|  |  | 
|  | -- | 
|  | Gerd Hoffmann <kraxel@redhat.com> |