BHYVE USB-Passthru

'n Abend

ich weiß, dass USB-Passthru ein heikles Thema bei bhyve ist, trotzdem muss ich (meiner Meinung nach) nutzen.
Zu meinem System:
Bisher Truenas 13.0 (freebsd 13.0 als Basis) auf einem dual Xeon 5606 Board (Intel S5500)
VM eingerichtet (ubuntu 20.04 lts + iobroker) loader.conf mit vmm_load und pptdevs versorgt und den Zigbee-Stick in ubuntu gefunden und in iobroker eingebunden.
Jetzt möchte ich eine 2. VM einrichten und habe deshalb Truenas geupdatet auf 13.0-U2 (FreeBSD 13.1) da auf dem 13.0 probleme mit dem VNC (nur port 5900) bekannt waren.
Nach dem Update die loader.conf wieder mit vmm_load und pptdevs versorgt und siehe da - kein Zigbee-Stick. :-O
Ich habe jetzt alle USB-Controller in die VM durchgeschliffen um zu sehen, was ich finde.
Unter BSD mit pciconf werden die Contoller auch mit ppt0 bis ppt7 gekennzeichnet.
Die Controller tauchen mit lsusb als root hub unter Ubuntu auf, allerdings werden daran angeschlossenen Geräte nicht erkannt. :-?
Habt ihr Hinweise, an welchen Stellen ich noch suchen kann?

LG
Pressluftjunkie
 

mr44er

moderater Moderator
Teammitglied
Für passthrough geht nur ein USB3-Controller (USB2 geht nicht) und dann auch nur an eine vm, nicht beide gleichzeitig.

Umschiffbar ist das mit controller1 an vm1 reichen und controller2 an vm2. Du kannst dann beide vms parallel laufen lassen, musst aber jeweils den stick umstecken oder gehst bequem mit einem USB3-Switch ran.
 
Moin mr44er,

vielen Dank für die Rückmeldung.
Der USB-Port soll auch nur (wieder) an die bestehende VM. Insofern besteht da keine Problem.
Bist du dir mit USB 2 sicher? Es hat ja mit der 13.0 funktioniert. Das Update auf 13.1-Release-p1 hat die loader.conf überschrieben. Danach habe ich halt vmm_load und pptdevs wieder eingetragen (wie vorher auch) und jetzt wird der Zigbee-Stick nicht mehr erkannt?! Wurde von 13.0 auf 13.1 da was geändert?
pciconf zeigt mir:

ppt0@pci0:0:26:0: class0x0c300 rev=0x00 hdr=0x00 vendor=0x8086 device=0x3a37 subvendor=0x8086 subdevice=0x34da
vendor = 'Intel Corporation'
device = '82801JI (ICH10 Family) USB UHCI Controller'
class = serial bus
subclass = USB


für den Port an dem der Zigbee-Stick hängt.

in der VM unter Ubuntu:

Bus 008 Device 002: ID fb5d:0001 BHYVE HID Tablet
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 046b:ff10 American Megatrends, Inc. Virtual Keyboard and Mouse
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


sind die Ports da, aber die Geräte daran werden nicht erkannt, bzw. angezeigt. (Habe alle USB-Ports jetzt mal weiter geleitet.)
Mit dem BHYVE HID kann ich nicht direkt etwas anfangen, das virtuelle Keyboard wird vom Intelbord generiert. Das physische Dell-Keyboard wird auch nicht durchgeschliffen. :-(

Ich hoffe auf weitere Hilfe.

LG
Pressluftjunkie
 

cabriofahrer

Well-Known Member
Sorry, dass ich mich hier einklinke, aber ich bin durch das Wort "passthrough" aufmerksam geworden. Dies ist auch das Schlagwort für Grafikkarten in virtuellen Maschinen. Wie sieht es damit hier aus?
 

mr44er

moderater Moderator
Teammitglied
Bist du dir mit USB 2 sicher?
Ja. Man muss da unterscheiden, was was ist. Durchreichen kann man nur den Controller und zwar nur einen 3.0. Welche USB-Ports an diesem dann hinten oder vorne dranhängen muss man ausprobieren. Hat man beispielsweise nur ein internes 2.0-bracket funktioniert das ebenso wie wenn man dann nur ein USB1-Keyboard oder sonstiges USB2-Gerät einsteckt. Was die vm dann für sich selber als USB-Geschwindigkeiten meldet, ist dann irrelevant.
Etwas Einsicht wie was auf dem Host verdrahtet ist, bekommt man mit pciconf -lv und usbconfig

Unterscheiden muss man auch UHCI, EHCI, OHCI, xHCI: https://de.wikipedia.org/wiki/Universal_Serial_Bus#Die_verschiedenen_Host-Controller

device = '82801JI (ICH10 Family) USB UHCI Controller' kann nicht funktionieren, das ist kein 3.0
Möglich wäre es, dass der Controller sich runterschaltet je nach eingestecktem Gerät und das vor passthrough vonstatten geht. Kannst du gegenprüfen, indem du mal ohne den Stick bootest und erst nach hochgefahrener vm einsteckst.

Dies ist auch das Schlagwort für Grafikkarten in virtuellen Maschinen. Wie sieht es damit hier aus?
Geht, aber nicht für Windows als vm.
 
device = '82801JI (ICH10 Family) USB UHCI Controller' kann nicht funktionieren, das ist kein 3.0
Richtig, ist USB2.0 weist INTEL auch in seinen Specs so aus: S5500BC
Deswegen ja die Frage, ob du sicher bist, da es vor dem Update gelaufen ist und ich auch im FreeBSD-Wiki keinen Hinweis auf USB3 gefunden hatte.

Die Sache mit den Controllern war klar, und wie geschrieben, erscheinen die 6 UHCI-Controller auch im Gastsystem, nur die angeschlossenen Geräte nicht. die beiden EHCI hingegen machen schon beim Passthru Ärger.

Ohne die Durchleitung bringt mir die VM nur nix mehr, da ich meine Daten lieber im Haus habe und nicht in der Cloud steuern möchte. Bisher ist es gelaufen. :-/ Never touch a running system! =:-(
Sie müssten also von 13.0 auf 13.1 was daran geändert haben. gibt es ein Changelog? Oder eine andere Quelle, die man anzapfen kann?

Noch gebe ich die Hoffnung nicht auf. :-)

LG
Pressluftjunkie
 
So, weiter experimentiert:
Gastsystem ohne PCI-Passthru:
lspci
00:00.0 Host bridge: Network Appliance Corporation Device 1275
00:02.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:03.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:04.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
00:1d.0 VGA compatible controller: Device fb5d:40fb
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
00:1f.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]

Gastsystem mit PCI-Passthru:
lspci
00:00.0 Host bridge: Network Appliance Corporation Device 1275
00:02.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:03.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:04.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:05.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
00:1d.0 VGA compatible controller: Device fb5d:40fb
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
00:1f.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]

Gastsytstem mit PCI-Passthru nur des 2. USB-Controllers:
lspci
00:00.0 Host bridge: Network Appliance Corporation Device 1275
00:02.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:03.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:04.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) ???
00:1d.0 VGA compatible controller: Device fb5d:40fb
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
00:1f.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]

Gastsystem mit PCI-Passthru des 1. und 2. USB-Controllers:
lspci
00:00.0 Host bridge: Network Appliance Corporation Device 1275
00:02.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:03.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:04.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:04.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5

00:05.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
00:1d.0 VGA compatible controller: Device fb5d:40fb
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
00:1f.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]

Die Controller werden durchgereicht!
Allerdings zeigt lsusb keine Geräte!

LG
Pressluftjunkie
 

mr44er

moderater Moderator
Teammitglied
Zur Vergewisserung und weil mir das bis eben auch nicht klar war: Hast du Truenas Core (FreeBSD) oder Truenas Scale (Debian) und was hattest du vor dem update? Kann man ausschließen, dass beim Update von core auf scale gewechselt wurde? Kenne Truenas nicht, daher ist die Frage eventuell doof. :)

Was mir komisch vorkommt:
So, weiter experimentiert:
Gastsystem ohne PCI-Passthru:
lspci
...
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
...
Da sollte das Gerät dran. Wieso wird der aber ohne passthru angezeigt?

Entferne mal auf dem Host alle pptdevs, entferne alle USB-Geräte bis auf die Tastatur und reboote. Poste dann mal die Ausgaben von pciconf -lv und usbconfig
Ich vermute, dass da einfach was verbogen ist, wenn man nicht gezielt durchreicht.
 
Moin,

vorab schon mal vielen Dank für deine Geduld mit mir mr44er!

Die VM läuft auf meinem NAS.
Hardware: Board Intel S5500BC mit Dual Xeon 5606 und 32 GB ECC-Ram
System vor Update: TrueNAS Core 13.0 (Basis FreeBSD 13.0)
System nach Update TrueNAS Core 13.0-U2 (Basis FreeBSD 13-1-Release-p1)
Ein autromatischer Wechsel von Core zu Scale erfolgt eigentlich nicht und ich habe da auch nichts gemacht. Kontrolliert habe ich es trotzdem. :-)

Ich habe alle Anweisungen aus der loader.conf entfernt (vmm_load und pptdevs)

Ausgabe von pciconf -lv:
Code:
uhci0@pci0:0:26:0:      class=0x0c0300 rev=0x00 hdr=0x00 vendor=0x8086 device=0x3a37 subvendor=0x8086 subdevice=0x34da
    vendor     = 'Intel Corporation'
    device     = '82801JI (ICH10) USB UHCI Controller'
    class       = serial bus
    subclass   = USB

usbconfig:
Code:
ugen0.2: <ITead Sonoff Zigbee 3.0 USB Dongle Plus> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

Dann loader.conf wieder die pptdevs aktiviert:

Code:
#PCI-Passthru for USB
vmm_load="YES"
pptdevs="0/26/0"

Ausgaben von pciconf:
Code:
ppt0@pci0:0:26:0:      class=0x0c0300 rev=0x00 hdr=0x00 vendor=0x8086 device=0x3a37 subvendor=0x8086 subdevice=0x34da
    vendor     = 'Intel Corporation'
    device     = '82801JI (ICH10) USB UHCI Controller'
    class       = serial bus
    subclass   = USB

Ausgabe von usbconfig:
ugen0.2 erscheint nicht mehr

In der VM:
ohne Gerätezuweisung:
lspci:
Code:
00:00.0 Host bridge: Network Appliance Corporation Device 1275
00:02.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:03.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:04.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
00:1d.0 VGA compatible controller: Device fb5d:40fb
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
00:1f.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]

lsusb:
Code:
Bus 002 Device 002: ID fb5d:0001 BHYVE HID Tablet
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

mit Gerätezuweisung:
Code:
00:00.0 Host bridge: Network Appliance Corporation Device 1275
00:02.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:03.0 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
00:04.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:05.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
00:1d.0 VGA compatible controller: Device fb5d:40fb
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
00:1f.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
der Controller ist vorhanden!

lsusb:
Code:
Bus 003 Device 002: ID fb5d:0001 BHYVE HID Tablet
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
und heute auch der Zigbee-Stick!? :-?

und erscheint auch bei den seriellen Anschlüssen!
Code:
ls -la /dev/serial/by-id
total 0
drwxr-xr-x 2 root root 60 Okt  7  2022 .
drwxr-xr-x 4 root root 80 Okt  7  2022 ..
lrwxrwxrwx 1 root root 13 Okt  7  2022 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_10a1101a9c12ec11a78221c7bd930c07-if00-port0 -> ../../ttyUSB0

Ich habe ihn auch wieder im iobroker eingebunden und die Zigbeegeräte lassen sich wieder schalten!!! :-))
Vielen Dank für deine Hardnäckigkeit und Geduld!
Wie markiere ich den Thread als [Solved] ?

LG
Pressluftjunkie
 
Was mir komisch vorkommt:

Da sollte das Gerät dran. Wieso wird der aber ohne passthru angezeigt?
Noch als Ergänzung:

Nein,
Code:
00:1e.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
ist nicht der Controller.

Der Controller ist:
Code:
00:04.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4

LG
Pressluftjunkie
 

mr44er

moderater Moderator
Teammitglied
vielen Dank für deine Geduld mit mir mr44er!
:D
Ausgabe von pciconf -lv:
Da wäre die gesamte Ausgabe mal interessant, du hast ja nicht nur 0/26/0, nehme ich an.
Ist zwar schön, dass es jetzt für den Moment geht (trotz UHCI?)...aber seltsam ist das dennoch und wie lange wird das gehen? Wieder bis zum nächsten update?

Wie markiere ich den Thread als [Solved] ?
Gar nicht, wir lassen Threads immer offen. Ab und an postet man doch noch neue Erkenntnisse zu einem alten Thread, also kein liebloses necrobumping. ;)
 
:D

Da wäre die gesamte Ausgabe mal interessant, du hast ja nicht nur 0/26/0, nehme ich an.
Richtig, 0/26/0 - 0/26/3 Identsiche Ausgaben ; 0/26/7 als EHCI sowie das selbe mit 0/29/0- /3 und /7. Leider stellt sich TrueNAS etwas zickig mit der Shell an, SSH Zugriffe sind im Grundzustand nicht möglich (ob überhaupt muus ich noch prüfen) und über das Webinterface hat man zwar die Möglichkeit eine Shell zu bekommen und darin zu arbeiten, aber das Copy funktioniert hier nicht bzw. nicht richtig. Daher habe ich hier nur das betreffende abgetippt.
Ich habe jetzt auch nur noch 0/26/0 durchgeschliffen, die anderen waren auch nur nachträglich mit durchgereicht, weil ich befürchtet hatte, dass ich den falschen USB-Controller erwischt hatte.

Ist zwar schön, dass es jetzt für den Moment geht (trotz UHCI?)...aber seltsam ist das dennoch und wie lange wird das gehen? Wieder bis zum nächsten update?
Es scheint aber evt ein generelles Problem bei BHYVE zu sein, auch wenn es nicht überall oder sehr häufig auftaucht. Hier hat Columbo0815 auch schon darüber berichtet, dass Geräte nicht erkannt werden und ein Reboot da hilft. Bei mir war es wohl etwas hartnäckiger. Alle Einträge entfernen - Reboot - neu eintragen - Reboot - läuft. :-/

Gar nicht, wir lassen Threads immer offen. Ab und an postet man doch noch neue Erkenntnisse zu einem alten Thread, also kein liebloses necrobumping. ;)
Vielleicht meldet sich ja jemand, wenn FreeBSD USB-Passthru native unterstützt wird. :-)

LG
Pressluftjunkie
 
OK, lesen bildet!
Der SSH-Zugriff auf TrueNAS-Rechner läßt sich schnell und ohne Probleme unter Dienste im Webinterface aktivieren und einstellen.

Nur, falls jemand mit ähnlichen Problem auf den Thread stößt.

LG
Pressluftjunkie
 
Oben