196560cb3SMarkus Armbruster= How to convert to -device & friends = 296560cb3SMarkus Armbruster 396560cb3SMarkus Armbruster=== Specifying Bus and Address on Bus === 496560cb3SMarkus Armbruster 596560cb3SMarkus ArmbrusterIn qdev, each device has a parent bus. Some devices provide one or 696560cb3SMarkus Armbrustermore buses for children. You can specify a device's parent bus with 796560cb3SMarkus Armbruster-device parameter bus. 896560cb3SMarkus Armbruster 996560cb3SMarkus ArmbrusterA device typically has a device address on its parent bus. For buses 1096560cb3SMarkus Armbrusterwhere this address can be configured, devices provide a bus-specific 1123bf93b2SMarkus Armbrusterproperty. Examples: 1296560cb3SMarkus Armbruster 1396560cb3SMarkus Armbruster bus property name value format 1496560cb3SMarkus Armbruster PCI addr %x.%x (dev.fn, .fn optional) 1596560cb3SMarkus Armbruster I2C address %u 1696560cb3SMarkus Armbruster SCSI scsi-id %u 1723bf93b2SMarkus Armbruster IDE unit %u 1823bf93b2SMarkus Armbruster HDA cad %u 1923bf93b2SMarkus Armbruster virtio-serial-bus nr %u 2023bf93b2SMarkus Armbruster ccid-bus slot %u 2123bf93b2SMarkus Armbruster USB port %d(.%d)* (port.port...) 2296560cb3SMarkus Armbruster 2396560cb3SMarkus ArmbrusterExample: device i440FX-pcihost is on the root bus, and provides a PCI 2496560cb3SMarkus Armbrusterbus named pci.0. To put a FOO device into its slot 4, use -device 2596560cb3SMarkus ArmbrusterFOO,bus=/i440FX-pcihost/pci.0,addr=4. The abbreviated form bus=pci.0 2696560cb3SMarkus Armbrusteralso works as long as the bus name is unique. 2796560cb3SMarkus Armbruster 2896560cb3SMarkus Armbruster=== Block Devices === 2996560cb3SMarkus Armbruster 3096560cb3SMarkus ArmbrusterA QEMU block device (drive) has a host and a guest part. 3196560cb3SMarkus Armbruster 3296560cb3SMarkus ArmbrusterIn the general case, the guest device is connected to a controller 3396560cb3SMarkus Armbrusterdevice. For instance, the IDE controller provides two IDE buses, each 341c9f3b88SMarkus Armbrusterof which can have up to two devices, and each device is a guest part, 351c9f3b88SMarkus Armbrusterand is connected to a host part. 3696560cb3SMarkus Armbruster 3796560cb3SMarkus ArmbrusterExcept we sometimes lump controller, bus(es) and drive device(s) all 3896560cb3SMarkus Armbrustertogether into a single device. For instance, the ISA floppy 3996560cb3SMarkus Armbrustercontroller is connected to up to two host drives. 4096560cb3SMarkus Armbruster 4196560cb3SMarkus ArmbrusterThe old ways to define block devices define host and guest part 4296560cb3SMarkus Armbrustertogether. Sometimes, they can even define a controller device in 4396560cb3SMarkus Armbrusteraddition to the block device. 4496560cb3SMarkus Armbruster 4596560cb3SMarkus ArmbrusterThe new way keeps the parts separate: you create the host part with 4696560cb3SMarkus Armbruster-drive, and guest device(s) with -device. 4796560cb3SMarkus Armbruster 4896560cb3SMarkus ArmbrusterThe various old ways to define drives all boil down to the common form 4996560cb3SMarkus Armbruster 5023bf93b2SMarkus Armbruster -drive if=TYPE,bus=BUS,unit=UNIT,OPTS... 5196560cb3SMarkus Armbruster 5296560cb3SMarkus ArmbrusterTYPE, BUS and UNIT identify the controller device, which of its buses 5396560cb3SMarkus Armbrusterto use, and the drive's address on that bus. Details depend on TYPE. 5423bf93b2SMarkus Armbruster 5523bf93b2SMarkus ArmbrusterInstead of bus=BUS,unit=UNIT, you can also say index=IDX. 5696560cb3SMarkus Armbruster 5796560cb3SMarkus ArmbrusterIn the new way, this becomes something like 5896560cb3SMarkus Armbruster 5996560cb3SMarkus Armbruster -drive if=none,id=DRIVE-ID,HOST-OPTS... 6096560cb3SMarkus Armbruster -device DEVNAME,drive=DRIVE-ID,DEV-OPTS... 6196560cb3SMarkus Armbruster 6223bf93b2SMarkus ArmbrusterThe old OPTS get split into HOST-OPTS and DEV-OPTS as follows: 6323bf93b2SMarkus Armbruster 6423bf93b2SMarkus Armbruster* file, format, snapshot, cache, aio, readonly, rerror, werror go into 6523bf93b2SMarkus Armbruster HOST-OPTS. 6623bf93b2SMarkus Armbruster 6723bf93b2SMarkus Armbruster* cyls, head, secs and trans go into HOST-OPTS. Future work: they 6823bf93b2SMarkus Armbruster should go into DEV-OPTS instead. 6923bf93b2SMarkus Armbruster 7023bf93b2SMarkus Armbruster* serial goes into DEV-OPTS, for devices supporting serial numbers. 7123bf93b2SMarkus Armbruster For other devices, it goes nowhere. 7223bf93b2SMarkus Armbruster 7323bf93b2SMarkus Armbruster* media is special. In the old way, it selects disk vs. CD-ROM with 7423bf93b2SMarkus Armbruster if=ide, if=scsi and if=xen. The new way uses DEVNAME for that. 7523bf93b2SMarkus Armbruster Additionally, readonly=on goes into HOST-OPTS. 7623bf93b2SMarkus Armbruster 7723bf93b2SMarkus Armbruster* addr is special, see if=virtio below. 7823bf93b2SMarkus Armbruster 7923bf93b2SMarkus ArmbrusterThe -device argument differs in detail for each type of drive: 8096560cb3SMarkus Armbruster 8196560cb3SMarkus Armbruster* if=ide 8296560cb3SMarkus Armbruster 8323bf93b2SMarkus Armbruster -device DEVNAME,drive=DRIVE-ID,bus=IDE-BUS,unit=UNIT 8496560cb3SMarkus Armbruster 8523bf93b2SMarkus Armbruster where DEVNAME is either ide-hd or ide-cd, IDE-BUS identifies an IDE 8623bf93b2SMarkus Armbruster bus, normally either ide.0 or ide.1, and UNIT is either 0 or 1. 8796560cb3SMarkus Armbruster 8896560cb3SMarkus Armbruster* if=scsi 8996560cb3SMarkus Armbruster 9096560cb3SMarkus Armbruster The old way implicitly creates SCSI controllers as needed. The new 9196560cb3SMarkus Armbruster way makes that explicit: 9296560cb3SMarkus Armbruster 9396560cb3SMarkus Armbruster -device lsi53c895a,id=ID 9496560cb3SMarkus Armbruster 9596560cb3SMarkus Armbruster As for all PCI devices, you can add bus=PCI-BUS,addr=DEVFN to 9696560cb3SMarkus Armbruster control the PCI device address. 9796560cb3SMarkus Armbruster 9823bf93b2SMarkus Armbruster This SCSI controller provides a single SCSI bus, named ID.0. Put a 9923bf93b2SMarkus Armbruster disk on it: 10096560cb3SMarkus Armbruster 10123bf93b2SMarkus Armbruster -device DEVNAME,drive=DRIVE-ID,bus=ID.0,scsi-id=UNIT 102a5c062edSStefan Hajnoczi 10323bf93b2SMarkus Armbruster where DEVNAME is either scsi-hd, scsi-cd or scsi-generic. 10496560cb3SMarkus Armbruster 10596560cb3SMarkus Armbruster* if=floppy 10696560cb3SMarkus Armbruster 1074a27a638SMarkus Armbruster -device floppy,unit=UNIT,drive=DRIVE-ID 10896560cb3SMarkus Armbruster 1094a27a638SMarkus Armbruster Without any -device floppy,... you get an empty unit 0 and no unit 1104a27a638SMarkus Armbruster 1. You can use -nodefaults to suppress the default unit 0, see 11123bf93b2SMarkus Armbruster "Default Devices". 11296560cb3SMarkus Armbruster 11396560cb3SMarkus Armbruster* if=virtio 11496560cb3SMarkus Armbruster 11565d6dcbdSStefan Hajnoczi -device virtio-blk-pci,drive=DRIVE-ID,class=C,vectors=V,ioeventfd=IOEVENTFD 11696560cb3SMarkus Armbruster 11796560cb3SMarkus Armbruster This lets you control PCI device class and MSI-X vectors. 11896560cb3SMarkus Armbruster 11923bf93b2SMarkus Armbruster IOEVENTFD controls whether or not ioeventfd is used for virtqueue 12023bf93b2SMarkus Armbruster notify. It can be set to on (default) or off. 12165d6dcbdSStefan Hajnoczi 12296560cb3SMarkus Armbruster As for all PCI devices, you can add bus=PCI-BUS,addr=DEVFN to 12323bf93b2SMarkus Armbruster control the PCI device address. This replaces option addr available 12423bf93b2SMarkus Armbruster with -drive if=virtio. 12596560cb3SMarkus Armbruster 12696560cb3SMarkus Armbruster* if=pflash, if=mtd, if=sd, if=xen are not yet available with -device 12796560cb3SMarkus Armbruster 128923fbd4cSMarkus ArmbrusterFor USB devices, the old way was actually different: 129923fbd4cSMarkus Armbruster 130923fbd4cSMarkus Armbruster -usbdevice disk:format=FMT:FILENAME 131923fbd4cSMarkus Armbruster 132923fbd4cSMarkus Armbruster"Was" because "disk:" is gone since v2.12.0. 133923fbd4cSMarkus Armbruster 134923fbd4cSMarkus ArmbrusterThe old way provided much less control than -drive's OPTS... The new 135923fbd4cSMarkus Armbrusterway fixes that: 13696560cb3SMarkus Armbruster 137a5c062edSStefan Hajnoczi -device usb-storage,drive=DRIVE-ID,removable=RMB 138a5c062edSStefan Hajnoczi 13923bf93b2SMarkus ArmbrusterThe removable parameter gives control over the SCSI INQUIRY removable 14023bf93b2SMarkus Armbruster(RMB) bit. USB thumbdrives usually set removable=on, while USB hard 14123bf93b2SMarkus Armbrusterdisks set removable=off. 14223bf93b2SMarkus Armbruster 14323bf93b2SMarkus ArmbrusterBug: usb-storage pretends to be a block device, but it's really a SCSI 14423bf93b2SMarkus Armbrustercontroller that can serve only a single device, which it creates 14523bf93b2SMarkus Armbrusterautomatically. The automatic creation guesses what kind of guest part 14623bf93b2SMarkus Armbrusterto create from the host part, like -drive if=scsi. Host and guest 14723bf93b2SMarkus Armbrusterpart are not cleanly separated. 14896560cb3SMarkus Armbruster 14996560cb3SMarkus Armbruster=== Character Devices === 15096560cb3SMarkus Armbruster 15196560cb3SMarkus ArmbrusterA QEMU character device has a host and a guest part. 15296560cb3SMarkus Armbruster 15396560cb3SMarkus ArmbrusterThe old ways to define character devices define host and guest part 15496560cb3SMarkus Armbrustertogether. 15596560cb3SMarkus Armbruster 15696560cb3SMarkus ArmbrusterThe new way keeps the parts separate: you create the host part with 15796560cb3SMarkus Armbruster-chardev, and the guest device with -device. 15896560cb3SMarkus Armbruster 15996560cb3SMarkus ArmbrusterThe various old ways to define a character device are all of the 16096560cb3SMarkus Armbrustergeneral form 16196560cb3SMarkus Armbruster 16296560cb3SMarkus Armbruster -FOO FOO-OPTS...,LEGACY-CHARDEV 16396560cb3SMarkus Armbruster 16496560cb3SMarkus Armbrusterwhere FOO-OPTS... is specific to -FOO, and the host part 16596560cb3SMarkus ArmbrusterLEGACY-CHARDEV is the same everywhere. 16696560cb3SMarkus Armbruster 16796560cb3SMarkus ArmbrusterIn the new way, this becomes 16896560cb3SMarkus Armbruster 16996560cb3SMarkus Armbruster -chardev HOST-OPTS...,id=CHR-ID 17096560cb3SMarkus Armbruster -device DEVNAME,chardev=CHR-ID,DEV-OPTS... 17196560cb3SMarkus Armbruster 17296560cb3SMarkus ArmbrusterThe appropriate DEVNAME depends on the machine type. For type "pc": 17396560cb3SMarkus Armbruster 17496560cb3SMarkus Armbruster* -serial becomes -device isa-serial,iobase=IOADDR,irq=IRQ,index=IDX 17596560cb3SMarkus Armbruster 17696560cb3SMarkus Armbruster This lets you control I/O ports and IRQs. 17796560cb3SMarkus Armbruster 17896560cb3SMarkus Armbruster* -parallel becomes -device isa-parallel,iobase=IOADDR,irq=IRQ,index=IDX 17996560cb3SMarkus Armbruster 18096560cb3SMarkus Armbruster This lets you control I/O ports and IRQs. 18196560cb3SMarkus Armbruster 18296560cb3SMarkus Armbruster* -usbdevice braille doesn't support LEGACY-CHARDEV syntax. It always 18396560cb3SMarkus Armbruster uses "braille". With -device, this useful default is gone, so you 18496560cb3SMarkus Armbruster have to use something like 18596560cb3SMarkus Armbruster 186a92ff8c1SThomas Huth -device usb-braille,chardev=braille -chardev braille,id=braille 18796560cb3SMarkus Armbruster 188923fbd4cSMarkus Armbruster* -usbdevice serial::chardev is gone since v2.12.0. It became 189923fbd4cSMarkus Armbruster -device usb-serial,chardev=dev. 190923fbd4cSMarkus Armbruster 19196560cb3SMarkus ArmbrusterLEGACY-CHARDEV translates to -chardev HOST-OPTS... as follows: 19296560cb3SMarkus Armbruster 19396560cb3SMarkus Armbruster* null becomes -chardev null 19496560cb3SMarkus Armbruster 195378af961SAnatoli Huseu1* pty, msmouse, wctablet, braille, stdio likewise 19696560cb3SMarkus Armbruster 19796560cb3SMarkus Armbruster* vc:WIDTHxHEIGHT becomes -chardev vc,width=WIDTH,height=HEIGHT 19896560cb3SMarkus Armbruster 19996560cb3SMarkus Armbruster* vc:<COLS>Cx<ROWS>C becomes -chardev vc,cols=<COLS>,rows=<ROWS> 20096560cb3SMarkus Armbruster 20196560cb3SMarkus Armbruster* con: becomes -chardev console 20296560cb3SMarkus Armbruster 2036e93a44bSMarkus Armbruster* COM<NUM> becomes -chardev serial,path=COM<NUM> 20496560cb3SMarkus Armbruster 20596560cb3SMarkus Armbruster* file:FNAME becomes -chardev file,path=FNAME 20696560cb3SMarkus Armbruster 20796560cb3SMarkus Armbruster* pipe:FNAME becomes -chardev pipe,path=FNAME 20896560cb3SMarkus Armbruster 20996560cb3SMarkus Armbruster* tcp:HOST:PORT,OPTS... becomes -chardev socket,host=HOST,port=PORT,OPTS... 21096560cb3SMarkus Armbruster 21196560cb3SMarkus Armbruster* telnet:HOST:PORT,OPTS... becomes 21296560cb3SMarkus Armbruster -chardev socket,host=HOST,port=PORT,OPTS...,telnet=on 21396560cb3SMarkus Armbruster 21496560cb3SMarkus Armbruster* udp:HOST:PORT@LOCALADDR:LOCALPORT becomes 21596560cb3SMarkus Armbruster -chardev udp,host=HOST,port=PORT,localaddr=LOCALADDR,localport=LOCALPORT 21696560cb3SMarkus Armbruster 21796560cb3SMarkus Armbruster* unix:FNAME becomes -chardev socket,path=FNAME 21896560cb3SMarkus Armbruster 2196f9f6308SPaolo Bonzini* /dev/parportN becomes -chardev parallel,file=/dev/parportN 22096560cb3SMarkus Armbruster 22196560cb3SMarkus Armbruster* /dev/ppiN likewise 22296560cb3SMarkus Armbruster 2236f9f6308SPaolo Bonzini* Any other /dev/FNAME becomes -chardev serial,path=/dev/FNAME 22496560cb3SMarkus Armbruster 22596560cb3SMarkus Armbruster* mon:LEGACY-CHARDEV is special: it multiplexes the monitor onto the 22696560cb3SMarkus Armbruster character device defined by LEGACY-CHARDEV. -chardev provides more 22796560cb3SMarkus Armbruster general multiplexing instead: you can connect up to four users to a 22896560cb3SMarkus Armbruster single host part. You need to pass mux=on to -chardev to enable 22996560cb3SMarkus Armbruster switching the input focus. 23096560cb3SMarkus Armbruster 23196560cb3SMarkus ArmbrusterQEMU uses LEGACY-CHARDEV syntax not just to set up guest devices, but 23296560cb3SMarkus Armbrusteralso in various other places such as -monitor or -net 23396560cb3SMarkus Armbrusteruser,guestfwd=... You can use chardev:CHR-ID in place of 23496560cb3SMarkus ArmbrusterLEGACY-CHARDEV to refer to a host part defined with -chardev. 23596560cb3SMarkus Armbruster 23696560cb3SMarkus Armbruster=== Network Devices === 23796560cb3SMarkus Armbruster 23823bf93b2SMarkus ArmbrusterHost and guest part of network devices have always been separate. 23996560cb3SMarkus Armbruster 24023bf93b2SMarkus ArmbrusterThe old way to define the guest part looks like this: 24196560cb3SMarkus Armbruster 24223bf93b2SMarkus Armbruster -net nic,netdev=NET-ID,macaddr=MACADDR,model=MODEL,name=ID,addr=STR,vectors=V 24396560cb3SMarkus Armbruster 244923fbd4cSMarkus ArmbrusterExcept for USB it looked like this: 245923fbd4cSMarkus Armbruster 246923fbd4cSMarkus Armbruster -usbdevice net:netdev=NET-ID,macaddr=MACADDR,name=ID 247923fbd4cSMarkus Armbruster 248923fbd4cSMarkus Armbruster"Looked" because "net:" is gone since v2.12.0. 249923fbd4cSMarkus Armbruster 25023bf93b2SMarkus ArmbrusterThe new way is -device: 25196560cb3SMarkus Armbruster 25296560cb3SMarkus Armbruster -device DEVNAME,netdev=NET-ID,mac=MACADDR,DEV-OPTS... 25396560cb3SMarkus Armbruster 25496560cb3SMarkus ArmbrusterDEVNAME equals MODEL, except for virtio you have to name the virtio 25596560cb3SMarkus Armbrusterdevice appropriate for the bus (virtio-net-pci for PCI), and for USB 25623bf93b2SMarkus Armbrusteryou have to use usb-net. 25796560cb3SMarkus Armbruster 25896560cb3SMarkus ArmbrusterThe old name=ID parameter becomes the usual id=ID with -device. 25996560cb3SMarkus Armbruster 26096560cb3SMarkus ArmbrusterFor PCI devices, you can add bus=PCI-BUS,addr=DEVFN to control the PCI 26196560cb3SMarkus Armbrusterdevice address, as usual. The old -net nic provides parameter addr 26223bf93b2SMarkus Armbrusterfor that, which is silently ignored when the NIC is not a PCI device. 26396560cb3SMarkus Armbruster 26465d6dcbdSStefan HajnocziFor virtio-net-pci, you can control whether or not ioeventfd is used for 26565d6dcbdSStefan Hajnoczivirtqueue notify by setting ioeventfd= to on or off (default). 26665d6dcbdSStefan Hajnoczi 26796560cb3SMarkus Armbruster-net nic accepts vectors=V for all models, but it's silently ignored 26896560cb3SMarkus Armbrusterexcept for virtio-net-pci (model=virtio). With -device, only devices 26996560cb3SMarkus Armbrusterthat support it accept it. 27096560cb3SMarkus Armbruster 27196560cb3SMarkus ArmbrusterNot all devices are available with -device at this time. All PCI 27296560cb3SMarkus Armbrusterdevices and ne2k_isa are. 27396560cb3SMarkus Armbruster 27496560cb3SMarkus ArmbrusterSome PCI devices aren't available with -net nic, e.g. i82558a. 27596560cb3SMarkus Armbruster 27696560cb3SMarkus Armbruster=== Graphics Devices === 27796560cb3SMarkus Armbruster 27896560cb3SMarkus ArmbrusterHost and guest part of graphics devices have always been separate. 27996560cb3SMarkus Armbruster 28023bf93b2SMarkus ArmbrusterThe old way to define the guest graphics device is -vga VGA. Not all 28123bf93b2SMarkus Armbrustermachines support all -vga options. 28296560cb3SMarkus Armbruster 28323bf93b2SMarkus ArmbrusterThe new way is -device. The mapping from -vga argument to -device 28423bf93b2SMarkus Armbrusterdepends on the machine type. For machine "pc", it's: 28596560cb3SMarkus Armbruster 28696560cb3SMarkus Armbruster std -device VGA 28796560cb3SMarkus Armbruster cirrus -device cirrus-vga 28896560cb3SMarkus Armbruster vmware -device vmware-svga 28923bf93b2SMarkus Armbruster qxl -device qxl-vga 29023bf93b2SMarkus Armbruster none -nodefaults 29123bf93b2SMarkus Armbruster disables more than just VGA, see "Default Devices" 29296560cb3SMarkus Armbruster 29396560cb3SMarkus ArmbrusterAs for all PCI devices, you can add bus=PCI-BUS,addr=DEVFN to control 29496560cb3SMarkus Armbrusterthe PCI device address. 29596560cb3SMarkus Armbruster 29696560cb3SMarkus Armbruster-device VGA supports properties bios-offset and bios-size, but they 29796560cb3SMarkus Armbrusteraren't used with machine type "pc". 29896560cb3SMarkus Armbruster 29923bf93b2SMarkus ArmbrusterFor machine "isapc", it's 30096560cb3SMarkus Armbruster 30123bf93b2SMarkus Armbruster std -device isa-vga 30223bf93b2SMarkus Armbruster cirrus not yet available with -device 30323bf93b2SMarkus Armbruster none -nodefaults 30423bf93b2SMarkus Armbruster disables more than just VGA, see "Default Devices" 30596560cb3SMarkus Armbruster 30623bf93b2SMarkus ArmbrusterBug: the new way doesn't work for machine types "pc" and "isapc", 30723bf93b2SMarkus Armbrusterbecause it violates obscure device initialization ordering 30823bf93b2SMarkus Armbrusterconstraints. 30996560cb3SMarkus Armbruster 31096560cb3SMarkus Armbruster=== Audio Devices === 31196560cb3SMarkus Armbruster 31296560cb3SMarkus ArmbrusterHost and guest part of audio devices have always been separate. 31396560cb3SMarkus Armbruster 31496560cb3SMarkus ArmbrusterThe old way to define guest audio devices is -soundhw C1,... 31596560cb3SMarkus Armbruster 31696560cb3SMarkus ArmbrusterThe new way is to define each guest audio device separately with 31796560cb3SMarkus Armbruster-device. 31896560cb3SMarkus Armbruster 31996560cb3SMarkus ArmbrusterMap from -soundhw sound card name to -device: 32096560cb3SMarkus Armbruster 32196560cb3SMarkus Armbruster ac97 -device AC97 32296560cb3SMarkus Armbruster cs4231a -device cs4231a,iobase=IOADDR,irq=IRQ,dma=DMA 32396560cb3SMarkus Armbruster es1370 -device ES1370 32496560cb3SMarkus Armbruster gus -device gus,iobase=IOADDR,irq=IRQ,dma=DMA,freq=F 32523bf93b2SMarkus Armbruster hda -device intel-hda,msi=MSI -device hda-duplex 32696560cb3SMarkus Armbruster sb16 -device sb16,iobase=IOADDR,irq=IRQ,dma=DMA,dma16=DMA16,version=V 32796560cb3SMarkus Armbruster adlib not yet available with -device 32896560cb3SMarkus Armbruster pcspk not yet available with -device 32996560cb3SMarkus Armbruster 33096560cb3SMarkus ArmbrusterFor PCI devices, you can add bus=PCI-BUS,addr=DEVFN to control the PCI 33196560cb3SMarkus Armbrusterdevice address, as usual. 33296560cb3SMarkus Armbruster 33396560cb3SMarkus Armbruster=== USB Devices === 33496560cb3SMarkus Armbruster 33596560cb3SMarkus ArmbrusterThe old way to define a virtual USB device is -usbdevice DRIVER:OPTS... 33696560cb3SMarkus Armbruster 33796560cb3SMarkus ArmbrusterThe new way is -device DEVNAME,DEV-OPTS... Details depend on DRIVER: 33896560cb3SMarkus Armbruster 33923bf93b2SMarkus Armbruster* ccid -device usb-ccid 34023bf93b2SMarkus Armbruster* keyboard -device usb-kbd 34196560cb3SMarkus Armbruster* mouse -device usb-mouse 34296560cb3SMarkus Armbruster* tablet -device usb-tablet 34396560cb3SMarkus Armbruster* wacom-tablet -device usb-wacom-tablet 344c81737e5SCésar Belley* u2f -device u2f-{emulated,passthru} 34596560cb3SMarkus Armbruster* braille See "Character Devices" 34696560cb3SMarkus Armbruster 347923fbd4cSMarkus ArmbrusterUntil v2.12.0, we additionally had 348923fbd4cSMarkus Armbruster 349923fbd4cSMarkus Armbruster* host:... See "Host Device Assignment" 350923fbd4cSMarkus Armbruster* disk:... See "Block Devices" 351923fbd4cSMarkus Armbruster* serial:... See "Character Devices" 352923fbd4cSMarkus Armbruster* net:... See "Network Devices" 353923fbd4cSMarkus Armbruster 35496560cb3SMarkus Armbruster=== Watchdog Devices === 35596560cb3SMarkus Armbruster 35696560cb3SMarkus ArmbrusterHost and guest part of watchdog devices have always been separate. 35796560cb3SMarkus Armbruster 35896560cb3SMarkus ArmbrusterThe old way to define a guest watchdog device is -watchdog DEVNAME. 35996560cb3SMarkus ArmbrusterThe new way is -device DEVNAME. For PCI devices, you can add 36096560cb3SMarkus Armbrusterbus=PCI-BUS,addr=DEVFN to control the PCI device address, as usual. 36196560cb3SMarkus Armbruster 36296560cb3SMarkus Armbruster=== Host Device Assignment === 36396560cb3SMarkus Armbruster 36496560cb3SMarkus ArmbrusterQEMU supports assigning host PCI devices (qemu-kvm only at this time) 365ab37bfc7SPaolo Bonziniand host USB devices. PCI devices can only be assigned with -device: 36696560cb3SMarkus Armbruster 367ab37bfc7SPaolo Bonzini -device vfio-pci,host=ADDR,id=ID 36896560cb3SMarkus Armbruster 369923fbd4cSMarkus ArmbrusterThe old way to assign a USB host device 370923fbd4cSMarkus Armbruster 371923fbd4cSMarkus Armbruster -usbdevice host:auto:BUS.ADDR:VID:PRID 372923fbd4cSMarkus Armbruster 373923fbd4cSMarkus Armbrusterwas removed in v2.12.0. Any of BUS, ADDR, VID, PRID could be the 374923fbd4cSMarkus Armbrusterwildcard *. 375923fbd4cSMarkus Armbruster 376923fbd4cSMarkus ArmbrusterThe new way is 37796560cb3SMarkus Armbruster 37896560cb3SMarkus Armbruster -device usb-host,hostbus=BUS,hostaddr=ADDR,vendorid=VID,productid=PRID 37996560cb3SMarkus Armbruster 380480324ecSThomas HuthOmitted options match anything. 38123bf93b2SMarkus Armbruster 38223bf93b2SMarkus Armbruster=== Default Devices === 38323bf93b2SMarkus Armbruster 38423bf93b2SMarkus ArmbrusterQEMU creates a number of devices by default, depending on the machine 38523bf93b2SMarkus Armbrustertype. 38623bf93b2SMarkus Armbruster 38723bf93b2SMarkus Armbruster-device DEVNAME... and global DEVNAME... suppress default devices for 38823bf93b2SMarkus Armbrustersome DEVNAMEs: 38923bf93b2SMarkus Armbruster 39023bf93b2SMarkus Armbruster default device suppressing DEVNAMEs 391b5010183SDaniel P. Berrangé CD-ROM ide-cd, ide-hd, scsi-cd, scsi-hd 3924a27a638SMarkus Armbruster floppy floppy, isa-fdc 39323bf93b2SMarkus Armbruster parallel isa-parallel 39423bf93b2SMarkus Armbruster serial isa-serial 3957a0bbd55SMarkus Armbruster VGA VGA, cirrus-vga, isa-vga, isa-cirrus-vga, 39663d5dfbeSMarkus Armbruster vmware-svga, qxl-vga, virtio-vga, ati-vga, 39763d5dfbeSMarkus Armbruster vhost-user-vga 39823bf93b2SMarkus Armbruster 39923bf93b2SMarkus ArmbrusterThe default NIC is connected to a default part created along with it. 40023bf93b2SMarkus ArmbrusterIt is *not* suppressed by configuring a NIC with -device (you may call 40123bf93b2SMarkus Armbrusterthat a bug). -net and -netdev suppress the default NIC. 40223bf93b2SMarkus Armbruster 40323bf93b2SMarkus Armbruster-nodefaults suppresses all the default devices mentioned above, plus a 40423bf93b2SMarkus Armbrusterfew other things such as default SD-Card drive and default monitor. 405