Bluetooth seen working on the Dell M3800 with Fedora 21 and Broadcom’s Bluetooth brcm/BCM20702A0-0a5c-216f.hcd binary blob

tl;dr

$ cd /usr/lib/firmware/brcm
$ sudo ln -sr /usr/lib/firmware/brcm/BCM20702{A0,A1}-0a5c-216f.hcd

$ ls -l
total 9700
-r--r--r--. 1 root root  35080 Jul 25 11:25 BCM20702A0-0a5c-216f.hcd
-r--r--r--. 1 root root  34700 Jul 25 09:56 BCM20702A0-0a5c-21e8.hcd
lrwxrwxrwx. 1 root root     24 Sep 23 13:41 BCM20702A1-0a5c-216f.hcd -> BCM20702A0-0a5c-216f.hcd
<snip/>

You need the symlink.

Summary

  • When loaded, the blob seems to work (bluetooth works).
  • Yet it can fail in place; perhaps after a suspend-resume cycle.

Revision

  • Something else is going on.
  • Sometimes the firmware loads.
  • Sometimes the firmware fails to load.
  • It may have something to do with the crashes, hangs & heating observed in multiple suspend-resume cycles.

Frustration

Trending towards: Does Not Work With Linux
This is still a hobbyist’s & enthusiast’s machine; it can’t be used for production work except in the factory-install configuration.
Dell delivered a working machine.  Aftermarket conversion to Fedora is nearly unuseable.
If it weren’t for the 4K display, this machine would be AVOID.

Following up from: Experiences with the Dell M3800 with Fedora 21 and Broadcom’s Bluetooth brcm/BCM20702A0-0a5c-216f.hcd binary blob

Indeed, the gear does work with the factory-prepared Ubuntu 14.04 LTE that Dell installed.  But it has so much blobbery and idiosyncratic non-open hardware that you won’t be able to upgrade beyond what the Dell team was able to assemble.  It is unknown how they were able to assemble a working configuration.

It’s 2015 and GPUs still don’t “just work.”

I did mention it has a 4K2K display, right?  That’s why we’re here.  That’s a can’t-live-without thing nowadays.

Goal

  • “just works”
  • bluetooth “just works”
  • graphics “just works”
  • suspend “just works”

Mentions

  • There is a blob
  • You have to get the correct blob
  • You need to make a symlink nearby to the blob.
  • Debugging whether the blob loaded or was caused to load-but-failed  is murky.
  • Something about the udev subsystem.

Folklore

  • How to fix Dell XPS 13 (2015) for Ubuntu 15.04; Tiago Cogumbreiro; In His Notes; 2015-08-15.
    • Covers
      • High DPI; in Arch Linux Wiki
      • Suspend Error; kermel patch for Ubuntu bcmwl-kernel-source
      • Bluetooth Problems (relevant here)
      • TLP
    • Actualities for BIOS revision A05
      Hardware name: Dell Inc. XPS 13 9343/0310JH, BIOS A05 07/14/2015
    • Dell XPS 13 (2015) – Bluetooth; in Arch Linux Wiki
    • Especially reminding about the need to create the symlink
      ln -rs /lib/firmware/brcm/BCM20702A1-0a5c-216f.hcd /lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd
      which will be /usr/lib/firmware/brcm on Fedora 21

References

  • Section 14.8Dealing with Firmware; In Some Linux Kernel Documentation.
    • Describes the upcall to userland request_firmware(…)
    • Does not describe how userland receives the upcall or acts upon it.
  • Firmware; In Ubuntu Wiki
  • Dell XPS 13 (2015) – Bluetooth; in Arch Linux Wiki

Evidences

The symlink is required to make the firmware load.

Actions

$ cd /usr/lib/firmware/brcm
$ sudo ln -sr /usr/lib/firmware/brcm/BCM20702{A0,A1}-0a5c-216f.hcd

$ ls -l
total 9700
-r--r--r--. 1 root root  35080 Jul 25 11:25 BCM20702A0-0a5c-216f.hcd
-r--r--r--. 1 root root  34700 Jul 25 09:56 BCM20702A0-0a5c-21e8.hcd
lrwxrwxrwx. 1 root root     24 Sep 23 13:41 BCM20702A1-0a5c-216f.hcd -> BCM20702A0-0a5c-216f.hcd
<snip/>

Evidences

Sep 23 10:41:37 devbox kernel: bluetooth hci0: firmware: brcm/BCM20702A0-0a5c-216f.hcd will not be loaded
Sep 23 10:41:37 devbox kernel: Bluetooth: hci0: BCM: patch brcm/BCM20702A0-0a5c-216f.hcd not found
$ find /usr/lib/firmware -name '*216f.hcd'
/usr/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd
$ ls -ldZ /usr/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd
-r--r--r--. root root system_u:object_r:lib_t:s0       /usr/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd
$ find /usr/lib -path '*brcm/BCM20702A0-0a5c-216f.hcd' -ls
660333   36 -r--r--r--   1 root     root        35080 Jul 25 11:25 /usr/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd
$ lsusb -t
/:  Bus 04.Port 1: Dev 1,, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0,, Driver=hub/8p, 480M
/:  Bus 03.Port 1: Dev 1,, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0,, Driver=hub/6p, 480M
/:  Bus 02.Port 1: Dev 1,, Driver=xhci_hcd/6p, 5000M
|__ Port 2: Dev 13, If 0,, Driver=hub/1p, 5000M
|__ Port 1: Dev 14, If 0, Specific Class, Driver=, 5000M
|__ Port 1: Dev 14, If 1, Specific Interface, Driver=, 5000M
|__ Port 1: Dev 14, If 2,, Driver=snd-usb-audio, 5000M
|__ Port 1: Dev 14, If 3,, Driver=snd-usb-audio, 5000M
|__ Port 1: Dev 14, If 4,, Driver=snd-usb-audio, 5000M
|__ Port 1: Dev 14, If 5,, Driver=cdc_ncm, 5000M
|__ Port 1: Dev 14, If 6, Data, Driver=cdc_ncm, 5000M
/:  Bus 01.Port 1: Dev 1,, Driver=xhci_hcd/14p, 480M
|__ Port 2: Dev 20, If 0,, Driver=hub/4p, 480M
|__ Port 3: Dev 21, If 0, Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 22, If 0, Interface Device, Driver=usbhid, 1.5M
|__ Port 6: Dev 5, If 0, Interface Device, Driver=usbhid, 12M
|__ Port 9: Dev 6, If 0, Specific Class, Driver=btusb, 12M
|__ Port 9: Dev 6, If 1, Specific Class, Driver=btusb, 12M
|__ Port 9: Dev 6, If 2, Specific Class, Driver=, 12M
|__ Port 9: Dev 6, If 3, Specific Interface, Driver=, 12M
|__ Port 11: Dev 7, If 0,, Driver=uvcvideo, 480M
|__ Port 11: Dev 7, If 1,, Driver=uvcvideo, 480M
$ lsusb
Bus 004 Device 002: ID 8087:8000 Intel Corp.
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 8087:8008 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 014: ID 17e9:436f DisplayLink
Bus 002 Device 013: ID 2109:0210 VIA Labs, Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 0a5c:216f Broadcom Corp.
Bus 001 Device 005: ID 04f3:21f9 Elan Microelectronics Corp.
Bus 001 Device 022: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard
Bus 001 Device 021: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 001 Device 020: ID 2109:2210 VIA Labs, Inc.
Bus 001 Device 007: ID 0bda:573c Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

From /var/log/messages

Hardware name: Dell Inc. Dell Precision M3800/Dell Precision M3800, BIOS A09 01/08/2015

Comments are closed.