Freebsd – Bluetooth failing silently on FreeBSD 11.0

bluetoothfreebsd

I'm trying to set up my Bluetooth keyboard on FreeBSD 11.0, but it's failing silently for reasons I don't understand.

The Bluetooth kernel modules are all loaded:

$ sudo kldstat
Id Refs Address            Size     Name
 5    1 0xffffffff824cf000 a150     ng_ubt.ko
 6    2 0xffffffff824da000 13b18    ng_hci.ko
 7    4 0xffffffff824ee000 3340     ng_bluetooth.ko
13    1 0xffffffff8264d000 1b187    ng_btsocket.ko

My device is queryable:

$ sudo hccontrol -n ubt0hci remote_name_request 00:18:00:3b:92:34
BD_ADDR: 00:18:00:3b:92:34
Name: FILCO Bluetooth Keyboard

I have dumped the HID descriptor into bthidd.conf:

$ sudo cat /etc/bluetooth/bthidd.conf:
device {
    bdaddr          00:18:00:3b:92:34;
    control_psm     0x11;
    interrupt_psm       0x13;
    reconnect_initiate  true;
    battery_power       true;
    normally_connectable    false;
    hid_descriptor      {
        0x05 0x01 0x09 0x06 0xa1 0x01 0x85 0x01
        ... snip ...
        0x02 0x75 0x06 0x81 0x01 0xc0
    };
}

/etc/bluetooth/ubt0.conf exists, and is just a straight copy of /etc/defaults/bluetooth.device.conf.

I have specified the device has no PIN in hcsecd.conf:

$ sudo cat /etc/bluetooth/hcsecd.conf
device {
  bdaddr    00:18:00:3b:92:34;
  name  "FILCO Bluetooth Keyboard";
  key   nokey;
  pin nopin;
}

# Default entry is applied if no better match found
# It MUST have 00:00:00:00:00:00 as bdaddr
device {
  bdaddr    00:00:00:00:00:00;
  name  "Default entry";
  key   nokey;
  pin   nopin;
}

I get no errors when I try to start the Bluetooth service:

$ sudo sh -x /etc/rc.d/bluetooth start ubt0
+ . /etc/rc.subr
+ : 2749
+ export RC_PID
... snip ...
+ /usr/sbin/hccontrol -n ubt0hci write_node_role_switch 1
+ /usr/sbin/hccontrol -n ubt0hci change_local_name 'x220 (ubt0)'
+ /usr/sbin/hccontrol -n ubt0hci initialize
... snip ...
+ return 0

… but and the keyboard just sits there with the pairing LED blinking. It doesn't pair, and there are no errors in /var/log/messages.

I suspect I'm missing something obvious here; any assistance would be greatly appreciated.

Update #1: There's nothing helpful in dmesg either; the last lines seem entirely unrelated:

VT: Replacing driver "vga" with new "fb".
info: [drm] Initialized i915 1.6.0 20080730 for drmn0 on minor 0
info: [drm] Enabling RC6 states: RC6 on, RC6p off, RC6pp off

Update #2: I've successfully paired the keyboard with other devices, so I'm confident that it's not faulty.

Best Answer

Well, it's not much of an answer, but I 'fixed' the problem by:

  1. Installing FreeBSD 11.1.
  2. Following the exact same steps as above.

End result was a happily paired keyboard :-| Same laptop, same keyboard.

I documented the steps in case anyone else, or my future self, might find them helpful.

Related Question