Bluetooth Firmware failed - Intel NUC7i5 - Intel Wireless-AC 8265 + BT 4.2

Hi,

I have the following error with the Bluetooth controller of the Intel NUC7i5BNK:

dmesg | grep "luetooth"
[    0.415012] Bluetooth: Core ver 2.21
[    0.415024] Bluetooth: HCI device and connection manager initialized
[    0.415029] Bluetooth: HCI socket layer initialized
[    0.415033] Bluetooth: L2CAP socket layer initialized
[    0.415039] Bluetooth: SCO socket layer initialized
[    4.567203] Bluetooth: HCI UART driver ver 2.3
[    4.567204] Bluetooth: HCI UART protocol H4 registered
[    4.567223] Bluetooth: HCI UART protocol Intel registered
[    4.600608] Bluetooth: hci0: Bootloader revision 0.0 build 26 week 38 2015
[    4.602618] Bluetooth: hci0: Device revision is 16
[    4.602619] Bluetooth: hci0: Secure boot is enabled
[    4.602619] Bluetooth: hci0: OTP lock is enabled
[    4.602620] Bluetooth: hci0: API lock is enabled
[    4.602620] Bluetooth: hci0: Debug lock is disabled
[    4.602621] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[    4.603583] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2
[    4.603584] Bluetooth: hci0: Failed to load Intel firmware file (-2)
[    5.508321] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.508327] Bluetooth: BNEP filters: protocol multicast
[    5.508333] Bluetooth: BNEP socket layer initialized
[  244.762763] Bluetooth: hci0: Bootloader revision 0.0 build 26 week 38 2015
[  244.763781] Bluetooth: hci0: Device revision is 16
[  244.763784] Bluetooth: hci0: Secure boot is enabled
[  244.763785] Bluetooth: hci0: OTP lock is enabled
[  244.763786] Bluetooth: hci0: API lock is enabled
[  244.763787] Bluetooth: hci0: Debug lock is disabled
[  244.763788] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[  244.763799] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2
[  244.763801] Bluetooth: hci0: Failed to load Intel firmware file (-2)
[ 1426.729257] Bluetooth: hci0: Bootloader revision 0.0 build 26 week 38 2015
[ 1426.730262] Bluetooth: hci0: Device revision is 16
[ 1426.730265] Bluetooth: hci0: Secure boot is enabled
[ 1426.730266] Bluetooth: hci0: OTP lock is enabled
[ 1426.730268] Bluetooth: hci0: API lock is enabled
[ 1426.730269] Bluetooth: hci0: Debug lock is disabled
[ 1426.730270] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[ 1426.730287] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2
[ 1426.730289] Bluetooth: hci0: Failed to load Intel firmware file (-2)

Looks like the Bluetooth firmware and HCI controller isn’t started.
I’m running the resin/%%RESIN_MACHINE_NAME%%-debian:jessie base image, tested also with the Stretch release: same result.

The firmware looks to be present into the /lib/firmware folder : iwlwifi-8265-22.ucode.

I see this is not the only error I have with firmware loading:

dmesg | grep "error"
[    0.534864] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_01.bin failed with error -2
[    4.495443] iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-8265-24.ucode failed with error -2
[    4.495449] iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-8265-23.ucode failed with error -2
[    4.603583] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2
[  244.763799] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2
[ 1426.730287] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2

ok , I found out what’s going on.
Looks like you have not the last kernel firmwares into the NUC base images. Quite similar issue as here: Intel Nuc WiFi Issue

After loading manually the official linux firmware from here git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git I was able to load the bluetooth kernel module and the hci0 device up.

I’ll post a request on GitHub to get the last firmwares added into the base image.

Thanks for reporting this @vidupont - I’m pinging the maintainers of the Intel builds of resin OS on this (/lib/firmware is actually bind mounted from the host)

I guess the workaround is what I did (?):

  • into the Debian docker , remount /lib/firmware RW
  • clone the firmwares from the kernel git , copy to /lib/firmware , some into Intel and i915
  • unmount & reboot host

anything better to do if we have multiple NUC, like forking the initial Debian docker or something else?

Will update with the required files. Keep you posted and will paste here the link with the PR

Created the pull request for adding the missing files: https://github.com/resin-os/resin-intel/pull/79