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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
USB SoundCard Passthrough not working on arm64
Hello,
I am virtualizing a armhf guest on a aarch64 host and was to use my Sound Blaster USB Soundcard as passthrough.
armhf Guest is: Debian Buster
aarch64 host is a jetson nano. KVM is enabled.
Latest qemu is built from sources.
The command I use for running is as follows:
../qemu/build/qemu-system-aarch64 -M virt -m 2048 -smp 2 -cpu host,aarch64=off -enable-kvm \
-kernel vmlinuz-4.19.0-14-armmp-lpae -initrd initrd.img-4.19.0-14-armmp-lpae -append 'root=/dev/vda2' \
-device nec-usb-xhci -device usb-kbd -device usb-mouse -device usb-host,hostbus=1,hostport=2.3 -serial stdio \
-device virtio-gpu-pci,virgl=on,xres=1600,yres=900 -display sdl,gl=on \
-drive if=none,file=hda2.qcow2,format=qcow2,id=hd -device virtio-blk-device,drive=hd \
-netdev user,id=mynet -device virtio-net-device,netdev=mynet \
-bios edk2-arm-code.fd -no-reboot
Where are my lsusb -t shows:
rreddy78@jetson-nano:~/Downloads$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
|__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
|__ Port 2: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 1: Dev 7, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 8, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 8, If 1, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 3: Dev 8, If 2, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 3: Dev 8, If 0, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 4: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
Within the VM I can see the usb as follows
rreddy78@debian:~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 480M
Its looks like some passthrough as but it seems like only for
_ Port 3: Dev 8, If 3, Class=Human Interface Device, Driver=usbhid, 12M
I am not sure if passthrough even works because this post I saw
https://community.arm.com/developer/ip-products/system/f/embedded-forum/48031/usb-pass-through-in-qemu-command-line-for-arm-machines/168764#168764
Hi, do you see errors on stderr when running with "-d guest_errors"?
If so can you attach the log produced by using "-D guest_errors.log -d guest_errors"?
Not much.
Here is the log
gic_cpu_read: Bad offset fc
gic_cpu_read: Bad offset fc
virtio_mmio_write: attempt to write guest features with guest_features_sel > 0 in legacy mode
virtio_mmio_write: attempt to write guest features with guest_features_sel > 0 in legacy mode
This time I used it differently i.e:
rreddy78@jetson-nano:~/debian-buster-qemu$ lsusb -s 1:8
Bus 001 Device 008: ID 041e:324d Creative Technology, Ltd
And
-device usb-host,vendorid=0x041e,productid=0x324d -D guest_errors.log -d guest_errors
Can you record usb traffic (add pcap=<file> to usb-host)?
I ran it as follows:
qemu-system-aarch64 -M virt -m 2048 -smp 2 -cpu host,aarch64=off -enable-kvm -kernel vmlinuz-4.19.0-14-armmp-lpae -initrd initrd.img-4.19.0-14-armmp-lpae -append 'root=/dev/vda2' -device nec-usb-xhci -device usb-kbd -device usb-mouse -device usb-host,pcap=test.pcap,hostbus=1,hostport=2.1 -serial stdio -device virtio-gpu-pci,virgl=on,xres=1600,yres=900 -display sdl,gl=on -drive if=none,file=hda2.qcow2,format=qcow2,id=hd -device virtio-blk-device,drive=hd -netdev user,id=mynet -device virtio-net-device,netdev=mynet -bios edk2-arm-code.fd -no-reboot
But the pcap file is empty:
file test.pcap
test.pcap: empty
Hello,
You can close this bug as as a simple usb-audio switch is working fine for me:
I just added -device usb-audio and set the -device nec-usb-xhci and sound within the qemu is working fine..
qemu-system-aarch64 -M virt -m 2048 -smp 2 -cpu host,aarch64=off -enable-kvm -kernel vmlinuz-4.19.0-14-armmp-lpae -initrd initrd.img-4.19.0-14-armmp-lpae -append 'root=/dev/vda2' -device nec-usb-xhci,id=xhci -device usb-kbd -device usb-mouse -device usb-audio -serial stdio -device virtio-gpu-pci,virgl=on,xres=1600,yres=900 -display sdl,gl=on -drive if=none,file=hda2.qcow2,format=qcow2,id=hd -device virtio-blk-device,drive=hd -netdev user,id=mynet -device virtio-net-device,netdev=mynet -bios edk2-arm-code.fd -no-reboot
One more point. The solution above is not usb passthrough.
I just noticed that qemu needs to be configured for usb passthrough. I am trying that out now
Configure with --enable-libusb
libusb libusb (for usb passthrough)
Closing as requested in comment #6
|