summary refs log tree commit diff stats
path: root/results/scraper/launchpad/1920752
blob: d38eb592055b4437b22ad4f426859f5f3df0266c (plain) (blame)
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