Re: Example context needing use of hw.usb.usbhid.enable=0 : serial console keyboard input under Parallels (aarch64) [reproduces again]

From: Mark Millard <marklmi_at_yahoo.com>
Date: Mon, 11 Aug 2025 00:30:24 UTC
On Aug 10, 2025, at 10:32, Mark Millard <marklmi@yahoo.com> wrote:

> On Aug 10, 2025, at 07:51, Jordan Gordeev <jgopensource@proton.me> wrote:
> 
>> On Sunday, 10 August 2025 at 12:16, Mark Millard <marklmi@yahoo.com> wrote:
>> 
>>> . . .
>> 
>> When usbhid is enabled USB keyboards should appear as hkbd(4) devices. Do you see any lines mentioning hkbd in dmesg? If not, try adding "hw.hid.hkbd.debug=100" to /boot/loader.conf in the hope that hkbd will produce some debug messages. Try also loading the hkbd module and any modules on which it depends via loader.conf because that might affect the outcome.
>> 
>> When reporting problems such as this, you should provide the version number of FreeBSD (exact commit ID), version number of Parallels, whether you have any VM tools installed for better integration between FreeBSD and Parallels, and because this is a USB problem, the output of "usbconfig -v" (at least the part describing the keyboard).
> 
> I'm now unable to reproduce the issue.
> 
> . . .
> 
> I'll report more if I get the problem again.

After the updates I'm back to the "serial console"
is not getting/taking keyboard input (without
hw.usb.usbhid.enable=0 involved).

I'll note that input at the earlier EFI loader
stage worked. This is later at the login prompt,
so when the FreeBSD kernel would be involved.

# dmesg -a | grep -e eybo -e kbd
kbd0 at kbdmux0
ugen1.3: <Parallels Virtual Keyboard> at usbus1
usbhid2: <Parallels Virtual Keyboard, class 0/0, rev 3.00/1.10, addr 2> on usbus1
hkbd0: <Parallels Virtual Keyboard> on hidbus2
kbd1 at hkbd0
usbhid3: <Parallels Virtual Keyboard, class 0/0, rev 3.00/1.10, addr 2> on usbus1
hkbd1: <Parallels Virtual Keyboard> on hidbus3
kbd2 at hkbd1
hcons0: <Parallels Virtual Keyboard Consumer Control> on hidbus3

# kldstat
Id Refs Address                Size Name
 1   27 0xffff000000000000  1428858 kernel
 2    1 0xffff000195200000    22000 hcons.ko
 3    3 0xffff000195222000    24000 hidmap.ko
 4    1 0xffff000195246000    22000 hms.ko
 5    1 0xffff000195268000    22000 hsctrl.ko
 6    1 0xffff00019528a000    23000 virtio_balloon.ko
 7    1 0xffff0001952ad000    22000 mac_ntpd.ko

# kldload hkbd.ko
kldload: can't load hkbd.ko: module already loaded or in kernel

# uname -apKU
FreeBSD aarch64-main-pbase 15.0-PRERELEASE FreeBSD 15.0-PRERELEASE main-n279519-7a9834041c91 GENERIC-NODEBUG arm64 aarch64 1500059 1500059

That is a pkgbase FreeBSD installation.

Parallels Desktop 20 for Mac Pro Edition Versin 20.4.1 (55996)
No VM tools installed. (Only used via the basic console and
ssh.)

# usbconfig -l
ugen1.1: <XHCI root HUB (0x1033)> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen1.2: <Virtual Mouse PARALLELS> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (0mA)
ugen1.3: <Virtual Keyboard PARALLELS> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (0mA)

# usbconfig -v
. . .

ugen1.3: <Virtual Keyboard PARALLELS> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (0mA)
ugen1.3.0: usbhid2: <Parallels Virtual Keyboard, class 0/0, rev 3.00/1.10, addr 2>
ugen1.3.1: usbhid3: <Parallels Virtual Keyboard, class 0/0, rev 3.00/1.10, addr 2>

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0300 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0009 
  idVendor = 0x203a 
  idProduct = 0xfffb 
  bcdDevice = 0x0110 
  iManufacturer = 0x0001  <Parallels>
  iProduct = 0x0002  <Virtual Keyboard>
  iSerialNumber = 0x0003  <KBD1.1>
  bNumConfigurations = 0x0001 


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0047 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0001  <Parallels>
    bmAttributes = 0x00e0 
    bMaxPower = 0x0000 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0004  <Virtual Keyboard Interface>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x09, 0x21, 0x01, 0x10, 0x00, 0x01, 0x22, 0x3a, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0004 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x30
      bDescriptorSubType = 0x00
       RAW dump: 
       0x00 | 0x06, 0x30, 0x00, 0x00, 0x40, 0x00



    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0004  <Virtual Keyboard Interface>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x09, 0x21, 0x01, 0x10, 0x00, 0x01, 0x22, 0xa0, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0004 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x30
      bDescriptorSubType = 0x00
       RAW dump: 
       0x00 | 0x06, 0x30, 0x00, 0x00, 0x40, 0x00



===
Mark Millard
marklmi at yahoo.com