Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Dec 2024 10:41:05 +0100
From:      Mario Marietto <marietto2008@gmail.com>
To:        Steven Friedrich <freebsdlouisville@gmail.com>
Cc:        freebsd-virtualization@freebsd.org
Subject:   Re: usb devices passthrough in bhyve
Message-ID:  <CA%2B1FSiipSxt-Og1t_cOvy%2BXMavECDb_byScoWU2C5tw8SPr=LQ@mail.gmail.com>
In-Reply-To: <5cd601ba-560d-4252-9f17-7c450cf5d66d@gmail.com>
References:  <7dabef84-a572-4ded-a676-c73011b37e3c@gmail.com> <5cd601ba-560d-4252-9f17-7c450cf5d66d@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--00000000000003113d062a516330
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hello.

I have a situation similar to yours. This is my USB controller integrated
with the motherboard (INTEL AORUS PRO) :

00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host
Controller (rev 10)

I have attached a lot of USB disks to that USB controller,but I never
reserved it, placing it on the /boot/loader.

Let's take this disk for example,that's attached there :

=3D>        40  3907029095  da5  GPT  (1.8T)
          40      532480    1  efi  (260M)
      532520        1024    2  freebsd-boot  (512K)
      533544         984       - free -  (492K)
      534528     4194304    3  freebsd-swap  (2.0G)
     4728832  3902300160    4  freebsd-zfs  (1.8T)
  3907028992         143       - free -  (72K)

If I want to use it with bhyve,I do :

bhyve-lin -S -c sockets=3D2,cores=3D1,threads=3D1 -m 4G -w -H -A \
-s 0,hostbridge \
-s 1,ahci-hd,/dev/da5 \

Easy,isn't it ? But this technique works only with the disks. If you have a
different kind of device,you should use an additional USB to PCI
controller....

On Sat, Dec 28, 2024 at 3:13=E2=80=AFAM Steven Friedrich <
freebsdlouisville@gmail.com> wrote:

> I have an HP Envy running FreeBSD 14.2.
>
> I am a bhyve noob, but I am able to create a bhyve guest, and installed
> freebsd 14.2 on it.
>
> Here's my host pci devices:
>
> xhci1@pci0:0:20:0:      class=3D0x0c0330 rev=3D0x00 hdr=3D0x00 vendor=3D0=
x8086
> device=3D0x06ed subvendor=3D0x103c subdevice=3D0x8767
>     vendor     =3D 'Intel Corporation'
>     device     =3D 'Comet Lake USB 3.1 xHCI Host Controller'
>     class      =3D serial bus
>     subclass   =3D USB
>
> xhci0@pci0:1:0:0:       class=3D0x0c0330 rev=3D0x00 hdr=3D0x00 vendor=3D0=
x1b21
> device=3D0x3242 subvendor=3D0x1b21 subdevice=3D0x3242
>     vendor     =3D 'ASMedia Technology Inc.'
>     device     =3D 'ASM3242 USB 3.2 Host Controller'
>     class      =3D serial bus
>     subclass   =3D USB
>
> Here's my usbconfig:
>
> usbconfig
> ugen1.1: <Intel XHCI root HUB> at usbus1, cfg=3D0 md=3DHOST spd=3DSUPER
> (5.0Gbps) pwr=3DSAVE (0mA)
> ugen0.1: <(0x1b21) XHCI root HUB> at usbus0, cfg=3D0 md=3DHOST spd=3DSUPE=
R
> (5.0Gbps) pwr=3DSAVE (0mA)
> ugen0.2: <Hub Genesys Logic, Inc.> at usbus0, cfg=3D0 md=3DHOST spd=3DSUP=
ER
> (5.0Gbps) pwr=3DSAVE (0mA)
> ugen1.2: <PixArt HP USB Optical Mouse> at usbus1, cfg=3D0 md=3DHOST spd=
=3DLOW
> (1.5Mbps) pwr=3DON (100mA)
> ugen1.3: <Chicony HP USB Keyboard> at usbus1, cfg=3D0 md=3DHOST spd=3DLOW
> (1.5Mbps) pwr=3DON (100mA)
> ugen1.4: <Realtek Bluetooth Radio> at usbus1, cfg=3D0 md=3DHOST spd=3DFUL=
L
> (12Mbps) pwr=3DON (500mA)
> ugen0.3: <PNY USB 3.2.1 FD> at usbus0, cfg=3D0 md=3DHOST spd=3DSUPER (5.0=
Gbps)
> pwr=3DON (126mA)
> ugen0.4: <Hub Genesys Logic, Inc.> at usbus0, cfg=3D0 md=3DHOST spd=3DHIG=
H
> (480Mbps) pwr=3DSAVE (100mA)
>
> Originally, my PNY flash drive was on usbus1, but when I added pptdevs=3D=
"0/20/0"
> to  /boot/loader.conf, I lost my mouse and keyboard.
>
> Fortunately, I recently added a pcie card supporting usb 20 gbps rates.
>
> So I changed /boot/loader.conf to  pptdevs=3D"1/0/0"
>
> But I don't know how to see the PNY flash drive in the guest.  I was
> hoping I could use gpart show -l and see a /dev/da0 or /dev/da1 drive, bu=
t
> I don't.
>
> In the guest, usbconfig:
>
> usbconfig
> No device match or lack of permissions.
>
> and pciconf -v -l:
>
> pciconf -v -l
> hostb0@pci0:0:0:0:      class=3D0x060000 rev=3D0x00 hdr=3D0x00 vendor=3D0=
x1275
> device=3D0x1275 subvendor=3D0x0000 subdevice=3D0x0000
>     vendor     =3D 'Network Appliance Corporation'
>     class      =3D bridge
>     subclass   =3D HOST-PCI
> isab0@pci0:0:1:0:       class=3D0x060100 rev=3D0x00 hdr=3D0x00 vendor=3D0=
x8086
> device=3D0x7000 subvendor=3D0x0000 subdevice=3D0x0000
>     vendor     =3D 'Intel Corporation'
>     device     =3D '82371SB PIIX3 ISA [Natoma/Triton II]'
>     class      =3D bridge
>     subclass   =3D PCI-ISA
> virtio_pci0@pci0:0:2:0: class=3D0x020000 rev=3D0x00 hdr=3D0x00 vendor=3D0=
x1af4
> device=3D0x1000 subvendor=3D0x1af4 subdevice=3D0x0001
>     vendor     =3D 'Red Hat, Inc.'
>     device     =3D 'Virtio network device'
>     class      =3D network
>     subclass   =3D ethernet
> virtio_pci1@pci0:0:3:0: class=3D0x010000 rev=3D0x00 hdr=3D0x00 vendor=3D0=
x1af4
> device=3D0x1001 subvendor=3D0x1af4 subdevice=3D0x0002
>     vendor     =3D 'Red Hat, Inc.'
>     device     =3D 'Virtio block device'
>     class      =3D mass storage
>     subclass   =3D SCSI
>
> How do I fix this?
>


--=20
Mario.

--00000000000003113d062a516330
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div>Hello.</div><div><b=
r></div><div>I have a situation similar to yours. This is my USB controller=
 integrated with the motherboard (INTEL AORUS PRO) :<br></div><div><br></di=
v><div>00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xH=
CI Host Controller (rev 10)</div></div><div><br></div><div>I have attached =
a lot of USB disks to that USB controller,but I never reserved it, placing =
it on the /boot/loader.</div><div><br></div><div>Let&#39;s take this disk f=
or example,that&#39;s attached there :</div><div><br></div><div>=3D&gt; =C2=
=A0 =C2=A0 =C2=A0 =C2=A040 =C2=A03907029095 =C2=A0da5 =C2=A0GPT =C2=A0(1.8T=
)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 40 =C2=A0 =C2=A0 =C2=A0532480 =C2=
=A0 =C2=A01 =C2=A0efi =C2=A0(260M)<br>=C2=A0 =C2=A0 =C2=A0 532520 =C2=A0 =
=C2=A0 =C2=A0 =C2=A01024 =C2=A0 =C2=A02 =C2=A0freebsd-boot =C2=A0(512K)<br>=
=C2=A0 =C2=A0 =C2=A0 533544 =C2=A0 =C2=A0 =C2=A0 =C2=A0 984 =C2=A0 =C2=A0 =
=C2=A0 - free - =C2=A0(492K)<br>=C2=A0 =C2=A0 =C2=A0 534528 =C2=A0 =C2=A0 4=
194304 =C2=A0 =C2=A03 =C2=A0freebsd-swap =C2=A0(2.0G)<br>=C2=A0 =C2=A0 =C2=
=A04728832 =C2=A03902300160 =C2=A0 =C2=A04 =C2=A0freebsd-zfs =C2=A0(1.8T)<b=
r>=C2=A0 3907028992 =C2=A0 =C2=A0 =C2=A0 =C2=A0 143 =C2=A0 =C2=A0 =C2=A0 - =
free - =C2=A0(72K) <br></div><div><br></div><div>If I want to use it with b=
hyve,I do :</div><div><br></div><div>bhyve-lin -S -c sockets=3D2,cores=3D1,=
threads=3D1 -m 4G -w -H -A \<br>-s 0,hostbridge \<br>-s 1,ahci-hd,/dev/da5 =
\<br></div><div><br></div><div>Easy,isn&#39;t it ? But this technique works=
 only with the disks. If you have a different kind of device,you should use=
 an additional USB to PCI controller....<br></div><div><br></div><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Dec 28, 2024=
 at 3:13=E2=80=AFAM Steven Friedrich &lt;<a href=3D"mailto:freebsdlouisvill=
e@gmail.com" target=3D"_blank">freebsdlouisville@gmail.com</a>&gt; wrote:<b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

 =20

   =20
 =20
  <div>
    <div>
      <p>I have an HP Envy running FreeBSD 14.2.</p>
      <p>I am a bhyve noob, but I am able to create a bhyve guest, and
        installed freebsd 14.2 on it.</p>
      <p>Here&#39;s my host pci devices:</p>
      <p>xhci1@<a>pci0:0:20:0</a>:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 class=3D0x=
0c0330
        rev=3D0x00 hdr=3D0x00 vendor=3D0x8086 device=3D0x06ed subvendor=3D0=
x103c
        subdevice=3D0x8767<br>
        =C2=A0=C2=A0=C2=A0 vendor=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Intel Co=
rporation&#39;<br>
        =C2=A0=C2=A0=C2=A0 device=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Comet La=
ke USB 3.1 xHCI Host Controller&#39;<br>
        =C2=A0=C2=A0=C2=A0 class=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D serial b=
us<br>
        =C2=A0=C2=A0=C2=A0 subclass=C2=A0=C2=A0 =3D USB<br>
      </p>
      <p>xhci0@<a>pci0:1:0:0</a>:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 class=
=3D0x0c0330
        rev=3D0x00 hdr=3D0x00 vendor=3D0x1b21 device=3D0x3242 subvendor=3D0=
x1b21
        subdevice=3D0x3242<br>
        =C2=A0=C2=A0=C2=A0 vendor=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;ASMedia =
Technology Inc.&#39;<br>
        =C2=A0=C2=A0=C2=A0 device=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;ASM3242 =
USB 3.2 Host Controller&#39;<br>
        =C2=A0=C2=A0=C2=A0 class=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D serial b=
us<br>
        =C2=A0=C2=A0=C2=A0 subclass=C2=A0=C2=A0 =3D USB<br>
        <br>
      </p>
      <p>Here&#39;s my usbconfig:</p>
      <p>usbconfig <span style=3D"font-family:monospace"><br>
          ugen1.1: &lt;Intel XHCI root HUB&gt; at usbus1, cfg=3D0 md=3DHOST
          spd=3DSUPER (5.0Gbps) pwr=3DSAVE (0mA) <br>
          ugen0.1: &lt;(0x1b21) XHCI root HUB&gt; at usbus0, cfg=3D0
          md=3DHOST spd=3DSUPER (5.0Gbps) pwr=3DSAVE (0mA) <br>
          ugen0.2: &lt;Hub Genesys Logic, Inc.&gt; at usbus0, cfg=3D0
          md=3DHOST spd=3DSUPER (5.0Gbps) pwr=3DSAVE (0mA) <br>
          ugen1.2: &lt;PixArt HP USB Optical Mouse&gt; at usbus1, cfg=3D0
          md=3DHOST spd=3DLOW (1.5Mbps) pwr=3DON (100mA) <br>
          ugen1.3: &lt;Chicony HP USB Keyboard&gt; at usbus1, cfg=3D0
          md=3DHOST spd=3DLOW (1.5Mbps) pwr=3DON (100mA) <br>
          ugen1.4: &lt;Realtek Bluetooth Radio&gt; at usbus1, cfg=3D0
          md=3DHOST spd=3DFULL (12Mbps) pwr=3DON (500mA) <br>
          ugen0.3: &lt;PNY USB 3.2.1 FD&gt; at usbus0, cfg=3D0 md=3DHOST
          spd=3DSUPER (5.0Gbps) pwr=3DON (126mA) <br>
          ugen0.4: &lt;Hub Genesys Logic, Inc.&gt; at usbus0, cfg=3D0
          md=3DHOST spd=3DHIGH (480Mbps) pwr=3DSAVE (100mA)<br>
          <br>
          Originally, my </span><span style=3D"font-family:monospace">PNY
        </span><span style=3D"font-family:monospace">flash drive was on
          usbus1, but when I added </span>pptdevs=3D&quot;0/20/0&quot; to=
=C2=A0
        /boot/loader.conf, I lost my mouse and keyboard.</p>
      <p>Fortunately, I recently added a pcie card supporting usb 20
        gbps rates.</p>
      <p>So I changed /boot/loader.conf to=C2=A0 pptdevs=3D&quot;1/0/0&quot=
;<span style=3D"font-family:monospace"><br>
        </span></p>
      <p><span style=3D"font-family:monospace">But I don&#39;t know how to =
see
          the PNY flash drive in the guest.=C2=A0 I was hoping I could use
          gpart show -l and see a /dev/da0 or /dev/da1 drive, but I
          don&#39;t.</span></p>
      <p><span style=3D"font-family:monospace">In the guest, usbconfig:</sp=
an></p>
      <p>usbconfig <br>
        No device match or lack of permissions.<br>
        <br>
        and pciconf -v -l:</p>
      <p>pciconf -v -l<br>
        hostb0@<a>pci0:0:0:0</a>:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 class=3D0x0=
60000
        rev=3D0x00 hdr=3D0x00 vendor=3D0x1275 device=3D0x1275 subvendor=3D0=
x0000
        subdevice=3D0x0000<br>
        =C2=A0=C2=A0=C2=A0 vendor=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Network =
Appliance Corporation&#39;<br>
        =C2=A0=C2=A0=C2=A0 class=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D bridge<b=
r>
        =C2=A0=C2=A0=C2=A0 subclass=C2=A0=C2=A0 =3D HOST-PCI<br>
        isab0@<a>pci0:0:1:0</a>:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 class=
=3D0x060100
        rev=3D0x00 hdr=3D0x00 vendor=3D0x8086 device=3D0x7000 subvendor=3D0=
x0000
        subdevice=3D0x0000<br>
        =C2=A0=C2=A0=C2=A0 vendor=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Intel Co=
rporation&#39;<br>
        =C2=A0=C2=A0=C2=A0 device=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;82371SB =
PIIX3 ISA [Natoma/Triton II]&#39;<br>
        =C2=A0=C2=A0=C2=A0 class=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D bridge<b=
r>
        =C2=A0=C2=A0=C2=A0 subclass=C2=A0=C2=A0 =3D PCI-ISA<br>
        virtio_pci0@<a>pci0:0:2:0</a>: class=3D0x020000 rev=3D0x00
        hdr=3D0x00 vendor=3D0x1af4 device=3D0x1000 subvendor=3D0x1af4
        subdevice=3D0x0001<br>
        =C2=A0=C2=A0=C2=A0 vendor=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Red Hat,=
 Inc.&#39;<br>
        =C2=A0=C2=A0=C2=A0 device=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Virtio n=
etwork device&#39;<br>
        =C2=A0=C2=A0=C2=A0 class=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D network<=
br>
        =C2=A0=C2=A0=C2=A0 subclass=C2=A0=C2=A0 =3D ethernet<br>
        virtio_pci1@<a>pci0:0:3:0</a>: class=3D0x010000 rev=3D0x00
        hdr=3D0x00 vendor=3D0x1af4 device=3D0x1001 subvendor=3D0x1af4
        subdevice=3D0x0002<br>
        =C2=A0=C2=A0=C2=A0 vendor=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Red Hat,=
 Inc.&#39;<br>
        =C2=A0=C2=A0=C2=A0 device=C2=A0=C2=A0=C2=A0=C2=A0 =3D &#39;Virtio b=
lock device&#39;<br>
        =C2=A0=C2=A0=C2=A0 class=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D mass sto=
rage<br>
        =C2=A0=C2=A0=C2=A0 subclass=C2=A0=C2=A0 =3D SCSI<br>
      </p>
      <p>How do I fix this?<br>
      </p>
    </div>
  </div>

</blockquote></div><div><br clear=3D"all"></div><br><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature">Ma=
rio.<br></div></div>
</div>

--00000000000003113d062a516330--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B1FSiipSxt-Og1t_cOvy%2BXMavECDb_byScoWU2C5tw8SPr=LQ>