1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
graphic: 0.632
device: 0.620
instruction: 0.541
socket: 0.524
other: 0.478
network: 0.399
vnc: 0.390
mistranslation: 0.367
KVM: 0.339
boot: 0.301
semantic: 0.266
assembly: 0.161
Guest WinXP crashes when trying to use a USB spectrometer
I'm using Amadeus spectrometer (OceanOptics USB250) via Windows-based software "Quantum". I've tried six ways of attaching it to QEMU:
1. command line parameter "-device usb-host,hostbus=3,hostaddr=25"
2. command line parameter "-device usb-host,vendorid=0x2457,productid=0x1030"
3. command line parameter "-usbdevice host:2457:1030
4. command line parameter "-usbdevice host:3.25"
5. qemu console command "usb_add host:2457:1030"
5. qemu console command "usb_add host:3.25"
From these, only "-device ..." options work, i.e. numbers 1 and 2 in the list above, and all others lead to IRQL_NOT_LESS_OR_EQUAL BSOD in usbuhci.sys when I launch Quantum, which tries to start acquiring spectra.
I've also tried to reproduce the crash with a flash drive, but couldn't — it seems to work reliably in this case.
Which version is used? Try the latest QEMU or at least QEMU 2.0.
The behavior sounds like a pretty old QEMU version.
Additionally, enable the EHCI controller (see example in the docs subdirectory).
It it working on a native Windows XP?
I was using QEMU from git, v2.3.0-rc2, when reporting this bug. And this is the same since much earlier (about a year older) version. And of course I do enable EHCI controller via `-device usb-ehci`. And checked it with native Windows XP, where the device works with no problem. Actually, as I said in OP, `-device hsb-host,...` options work in QEMU too, but the others like `-usbdevice host...` and `usb_add host...` don't.
Please check that the devices get added to the EHCI bus and not to the UHCI.
As far as I know the -usb* commands are deprecated. The functions behind the -device usb* and -usb* should behave the same.
Indeed, the device appears added to the UHCI in both crashing cases and to EHCI in the working case. Also, sometimes instead of BSOD of guest OS I get abort of QEMU:
qemu-system-i386: hw/usb/core.c:735: usb_ep_get: Assertion `pid == 0x69 || pid == 0xe1' failed.
/usr/bin/qemuxp: line 4: 13514 Aborted (core dumped) qemu-system-i386 /home/ruslan/iso/Windoze/qemuxp.img -m 512 -display sdl -vga vmware -enable-kvm -usb -device usb-ehci $*
here $* stands for
-snapshot -hdb ~/iso/ntfs-data.img
and the crash was triggered by using usb_add command in QEMU terminal and then attempting to access the device from WinXP.
"-usbdevice host" and "usb_add host" have been removed with QEMU 2.12, so marking this bug as Wont-Fix.
|