1 2qemu usb storage emulation 3-------------------------- 4 5QEMU has three devices for usb storage emulation. 6 7Number one emulates the classic bulk-only transport protocol which is 8used by 99% of the usb sticks on the market today and is called 9"usb-storage". Usage (hooking up to xhci, other host controllers work 10too): 11 12 qemu ${other_vm_args} \ 13 -drive if=none,id=stick,file=/path/to/file.img \ 14 -device nec-usb-xhci,id=xhci \ 15 -device usb-storage,bus=xhci.0,drive=stick 16 17 18Number two is the newer usb attached scsi transport. This one doesn't 19automagically create a scsi disk, so you have to explicitly attach one 20manually. Multiple logical units are supported. Here is an example 21with tree logical units: 22 23 qemu ${other_vm_args} \ 24 -drive if=none,id=uas-disk1,file=/path/to/file1.img \ 25 -drive if=none,id=uas-disk2,file=/path/to/file2.img \ 26 -drive if=none,id=uas-cdrom,media=cdrom,file=/path/to/image.iso \ 27 -device nec-usb-xhci,id=xhci \ 28 -device usb-uas,id=uas,bus=xhci.0 \ 29 -device scsi-hd,bus=uas.0,scsi-id=0,lun=0,drive=uas-disk1 \ 30 -device scsi-hd,bus=uas.0,scsi-id=0,lun=1,drive=uas-disk2 \ 31 -device scsi-cd,bus=uas.0,scsi-id=0,lun=5,drive=uas-cdrom 32 33 34Number three emulates the classic bulk-only transport protocol too. 35It's called "usb-bot". It shares most code with "usb-storage", and 36the guest will not be able to see the difference. The qemu command 37line interface is simliar to usb-uas though, i.e. no automatic scsi 38disk creation. It also features support for up to 16 LUNs. The LUN 39numbers must be continuous, i.e. for three devices you must use 0+1+2. 40The 0+1+5 numbering from the "usb-uas" example isn't going to work 41with "usb-bot". 42 43enjoy, 44 Gerd 45 46-- 47Gerd Hoffmann <kraxel@redhat.com> 48