https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=288144

            Bug ID: 288144
           Summary: ubt_attach seems to succeed, interfaces/endpoints look
                    ok, bluetooth service fails to start for ubt0 (reason
                    unknown)
           Product: Base System
           Version: 14.3-RELEASE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: wireless
          Assignee: wireless@FreeBSD.org
          Reporter: pa...@paige.bio

- boot_verbose=YES doesn't reveal any more information about it 

initialization: 

ugen0.4: <Zephyr Project Zephyr USBD BT HCI> at usbus0
ubt0 on uhub0
ubt0: <Zephyr Project Zephyr USBD BT HCI, class 0/0, rev 2.00/4.01, addr 7> on
usbus0

As per the requirements indicated in ng_ubt.c interface 0 has 3 endpoints: 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0003 
      bInterfaceClass = 0x00e0  <Wireless controller>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

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

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 2
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

and interface 1 has two endpoints: 

    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x00e0  <Wireless controller>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0001  <ISOCHRONOUS>
        wMaxPacketSize = 0x0000 
        bInterval = 0x0003 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0008  <OUT>
        bmAttributes = 0x0001  <ISOCHRONOUS>
        wMaxPacketSize = 0x0000 
        bInterval = 0x0003 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

Additionally interface 1 has the expected alt endpoints 

    Interface 1 Alt 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0001 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x00e0  <Wireless controller>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0001  <ISOCHRONOUS>
        wMaxPacketSize = 0x0009 
        bInterval = 0x0003 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0008  <OUT>
        bmAttributes = 0x0001  <ISOCHRONOUS>
        wMaxPacketSize = 0x0009 
        bInterval = 0x0003 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

So it all checks out, and as near as I can tell it should work but I don't
really know what it's doing after ubt_attach succeeds, I presume it's sending a
CMD to the device and trying to read back a response and I suspect that may be
where it's failing but unfortunately even with boot_verbose I can't ascertain
if that's what is actually happening. 

This is a known working device; I can 100% use this device with bluez on Linux.
The device is an nrf 52840 with the hci_usb sample application programmed
(configured for Zephyr's USB-Next.) Initially I tried to use the hci_uart
application, which also works just fine on Linux with btattach or hciattach,
however the tools for attaching to a UART-based bluetooth HCI seem to also be
missing without a trace--but the handbook does allude to their existence--the
only manpage for what I recall was the correct tool seemed to disappear after
like FreeBSD 10 or something. Unfortunate, I imagine this would be alot easier
for me if I could just do UART (getting USB-Next wasn't exactly straight
forward for Zephyr but I did it and the device DOES work on Linux.)

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

Reply via email to