Gerd Hoffmann | 0f58f68 | 2012-06-08 16:03:37 +0200 | [diff] [blame] | 1 | |
| 2 | qemu usb storage emulation |
| 3 | -------------------------- |
| 4 | |
Gerd Hoffmann | 3470733 | 2013-01-14 15:29:44 +0100 | [diff] [blame] | 5 | QEMU has three devices for usb storage emulation. |
Gerd Hoffmann | 0f58f68 | 2012-06-08 16:03:37 +0200 | [diff] [blame] | 6 | |
| 7 | Number one emulates the classic bulk-only transport protocol which is |
Peter Maydell | 085d813 | 2013-03-18 17:20:07 +0000 | [diff] [blame] | 8 | used by 99% of the usb sticks on the market today and is called |
Gerd Hoffmann | 0f58f68 | 2012-06-08 16:03:37 +0200 | [diff] [blame] | 9 | "usb-storage". Usage (hooking up to xhci, other host controllers work |
| 10 | too): |
| 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 | |
| 18 | Number two is the newer usb attached scsi transport. This one doesn't |
| 19 | automagically create a scsi disk, so you have to explicitly attach one |
| 20 | manually. Multiple logical units are supported. Here is an example |
| 21 | with 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 | |
Gerd Hoffmann | 3470733 | 2013-01-14 15:29:44 +0100 | [diff] [blame] | 34 | Number three emulates the classic bulk-only transport protocol too. |
| 35 | It's called "usb-bot". It shares most code with "usb-storage", and |
| 36 | the guest will not be able to see the difference. The qemu command |
| 37 | line interface is simliar to usb-uas though, i.e. no automatic scsi |
| 38 | disk creation. It also features support for up to 16 LUNs. The LUN |
Peter Maydell | 085d813 | 2013-03-18 17:20:07 +0000 | [diff] [blame] | 39 | numbers must be continuous, i.e. for three devices you must use 0+1+2. |
Gerd Hoffmann | 3470733 | 2013-01-14 15:29:44 +0100 | [diff] [blame] | 40 | The 0+1+5 numbering from the "usb-uas" example isn't going to work |
| 41 | with "usb-bot". |
| 42 | |
Gerd Hoffmann | 0f58f68 | 2012-06-08 16:03:37 +0200 | [diff] [blame] | 43 | enjoy, |
| 44 | Gerd |
| 45 | |
| 46 | -- |
| 47 | Gerd Hoffmann <kraxel@redhat.com> |