I recently bought a cheap bluetooth dongle (because it was cheap, and I was buying other things): Dezen Bluetooth 5.0 USB, Mini adapter. Part number on the back of the packaging is DZ-BTUAV5. Plugged into a workstation that runs FreeBSD 13.4-release-p2
from /var/log/messages, I see
usbconfig device descriptor
usbconfig - configuration
pictures of the packaging
Code:
root@kg-core2:~ # freebsd-version -ku
13.4-RELEASE-p1
13.4-RELEASE-p2
root@kg-core2:~ # uname -a
FreeBSD kg-core2.kg4.no 13.4-RELEASE-p1 FreeBSD 13.4-RELEASE-p1 GENERIC amd64
Code:
Jan 9 21:48:43 kg-core2 kernel: ugen1.5: <vendor 0x0a12 USB2.0-BT> at usbus1
Jan 9 21:48:43 kg-core2 kernel: ubt0 on uhub3
Jan 9 21:48:43 kg-core2 kernel: ubt0: <vendor 0x0a12 USB2.0-BT, class 224/1, rev 1.10/88.91, addr 4> on usbus1
Jan 9 21:48:43 kg-core2 kernel: WARNING: attempt to domain_add(bluetooth) after domainfinalize()
Jan 9 21:48:43 kg-core2 kernel: WARNING: attempt to domain_add(netgraph) after domainfinalize()
Jan 9 21:48:43 kg-core2 root[77352]: /etc/rc.d/bluetooth: ERROR: Unable to setup Bluetooth stack for device ubt0
Code:
root@kg-core2:~ # usbconfig -d ugen1.5 dump_device_desc
ugen1.5: <vendor 0x0a12 USB2.0-BT> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0110
bDeviceClass = 0x00e0 <Wireless controller>
bDeviceSubClass = 0x0001
bDeviceProtocol = 0x0001
bMaxPacketSize0 = 0x0040
idVendor = 0x0a12
idProduct = 0x0001
bcdDevice = 0x8891
iManufacturer = 0x0000 <no string>
iProduct = 0x0002 <USB2.0-BT>
iSerialNumber = 0x0000 <no string>
bNumConfigurations = 0x0001
Code:
root@kg-core2:~ # usbconfig -d ugen1.5 dump_curr_config_desc
ugen1.5: <vendor 0x0a12 USB2.0-BT> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x00c8
bNumInterfaces = 0x0002
bConfigurationValue = 0x0001
iConfiguration = 0x0000 <no string>
bmAttributes = 0x00c0
bMaxPower = 0x0032
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 = 0x0004 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 2
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
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 = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0000
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0000
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
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 = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0009
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0009
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1 Alt 2
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0002
bNumEndpoints = 0x0002
bInterfaceClass = 0x00e0 <Wireless controller>
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0011
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0011
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1 Alt 3
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0003
bNumEndpoints = 0x0002
bInterfaceClass = 0x00e0 <Wireless controller>
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0019
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0019
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1 Alt 4
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0004
bNumEndpoints = 0x0002
bInterfaceClass = 0x00e0 <Wireless controller>
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0021
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0021
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1 Alt 5
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0005
bNumEndpoints = 0x0002
bInterfaceClass = 0x00e0 <Wireless controller>
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0031
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x0031
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1 Alt 6
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0005
bNumEndpoints = 0x0002
bInterfaceClass = 0x00e0 <Wireless controller>
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0005 <OUT>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x003f
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0001 <ISOCHRONOUS>
wMaxPacketSize = 0x003f
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000