[Bug 290984] usbhid: 8BitDo Adapter 2 doesn't work

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 12 Nov 2025 21:33:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290984

            Bug ID: 290984
           Summary: usbhid: 8BitDo Adapter 2 doesn't work
           Product: Base System
           Version: 15.0-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: usb
          Assignee: usb@FreeBSD.org
          Reporter: ziaee@FreeBSD.org

The 8BitDo Adapter 2 is a $20 wireless dongle that works with current gen Xbox,
Nintendo and Playstation controllers. Youtubers used the previous version on
OpenBSD, but I'm trying to use the Adapter 2 with a Nintendo Switch Pro
controller with FreeBSD 15.0-BETA4. If I boot with it, I find these in my
dmesg:
`
[12.214969] ps4dshock0: <8BitDo 8BitDo Receiver> on hidbus0
[12.215683] ps4dshock0: detached
[12.224887] ps4dshock0: <8BitDo 8BitDo Receiver> on hidbus0
[12.225018] ps4dsacc0: <8BitDo 8BitDo Receiver Sensors> on hidbus0
[12.225706] ps4dsacc_attach: get feature report failed, error=5 (ignored)
[12.225796] ps4dshead0: <8BitDo 8BitDo Receiver Headset> on hidbus0
[12.225869] ps4dsmtp0: <8BitDo 8BitDo Receiver Touchpad> on hidbus0
`
If I remove the dongle, I get:
`
[1055.899817] ugen1.3: <8BitDo 8BitDo Receiver> at usbus1 (disconnected)
[1055.899842] usbhid0: at uhub0, port 6, addr 2 (disconnected)
[1055.900734] ps4dsmtp0: detached
[1055.900759] ps4dshead0: detached
[1055.900777] ps4dsacc0: detached
[1055.900879] ps4dshock0: detached
[1055.909705] hidbus0: detached
[1055.909748] usbhid0: detached
[1056.424999] ugen1.3: <8BitDo IDLE> at usbus1
[1056.425542] usbhid0 on uhub0
[1056.425559] usbhid0: <8BitDo IDLE, class 0/0, rev 1.10/2.00, addr 6> on
usbus1
[1056.425723] hidbus0: <HID bus> on usbhid0
[1080.687558] ugen1.3: <8BitDo IDLE> at usbus1 (disconnected)
[1080.687598] usbhid0: at uhub0, port 6, addr 6 (disconnected)
[1080.696709] hidbus0: detached
[1080.696778] usbhid0: detached
`
If I reattach the dongle:
`
[1335.883684] ugen1.3: <8BitDo 8BitDo Receiver> at usbus1
[1335.883994] usbhid0 on uhub0
[1335.884013] usbhid0: <8BitDo 8BitDo Receiver, rev 2.00/1.00, addr 16> on
usbus1
[1335.884338] hidbus0: <HID bus> on usbhid0
[1336.281325] ugen1.3: <8BitDo 8BitDo Receiver> at usbus1 (disconnected)
[1336.281356] usbhid0: at uhub0, port 8, addr 16 (disconnected)
[1336.289665] hidbus0: detached
[1336.289709] usbhid0: detached
[1336.769980] ugen1.3: <8BitDo Controller> at usbus1
[1336.770226] usbhid0 on uhub0
[1336.770239] usbhid0: <8BitDo Controller, rev 2.00/1.14, addr 17> on usbus1
[1336.770409] hidbus0: <HID bus> on usbhid0
[1337.167697] ugen1.3: <8BitDo Controller> at usbus1 (disconnected)
[1337.167737] usbhid0: at uhub0, port 8, addr 17 (disconnected)
[1337.176672] hidbus0: detached
[1337.176724] usbhid0: detached
[1337.710246] ugen1.3: <8BitDo IDLE> at usbus1
[1337.710777] usbhid0 on uhub0
[1337.710794] usbhid0: <8BitDo IDLE, class 0/0, rev 1.10/2.00, addr 18> on
usbus1
[1337.710969] hidbus0: <HID bus> on usbhid0
`
It's attaching to ugen1.3:
`
# usbconfig -v -d ugen1.3
ugen1.3: <IDLE 8BitDo> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
(500mA)
ugen1.3.0: usbhid0: <8BitDo IDLE, class 0/0, rev 1.10/2.00, addr 18>

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0110
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x2dc8
  idProduct = 0x3107
  bcdDevice = 0x0200
  iManufacturer = 0x0001  <8BitDo>
  iProduct = 0x0002  <IDLE>
  iSerialNumber = 0x0003  <E417D8A3F5C7>
  bNumConfigurations = 0x0001


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x0029
    bNumInterfaces = 0x0001
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080
    bMaxPower = 0x00fa

    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0000
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

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

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

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040
        bInterval = 0x0008
        bRefresh = 0x0000
        bSynchAddress = 0x0000
`
If I give `/dev/input/event*` 0660 in devfs.rules, it shows up in SDL
applications, but the buttons don't work.

-- 
You are receiving this mail because:
You are the assignee for the bug.