Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

rant: bluetooth on Dell XPS13-9343 (Debian-jessie)

263 views
Skip to first unread message

crankypuss

unread,
Jan 26, 2016, 3:28:59 AM1/26/16
to
From "Installing Debian On Dell XPS 13 9343"
https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013%209343

"Bluetooth Works, but requires non-free firmware to be installed from
the Windows driver."

And that's it, no description of what the device is or how to install
the non-free firmware from the windows driver; good luck, sucker!


extracted from dmesg output:

[ 3.721010] usb 1-3: New USB device found, idVendor=0a5c,
idProduct=216f
[ 3.721063] usb 1-3: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[ 3.721066] usb 1-3: Product: BCM20702A0
[ 3.721068] usb 1-3: Manufacturer: Broadcom Corp

[ 4.678165] bluetooth hci0: firmware: failed to load
brcm/BCM20702A0-0a5c-216f.hcd (-2)
[ 4.678166] bluetooth hci0: Direct firmware load failed with error -2
[ 4.678166] bluetooth hci0: Falling back to user helper
[ 4.678458] Bluetooth: hci0: BCM: patch brcm/BCM20702A0-0a5c-216f.hcd
not found

From this it appears that the bluetooth device is BCM20702A0 from
Broadcom Corp. It also appears that some firmware needs to be loaded
from a file containing the string "brcm/BCM20702A0-0a5c-216f.hcd".

A bit of web-grep comes up with "Dell XPS 13 (2015)" in the Arch wiki,
https://wiki.archlinux.org/index.php/Dell_XPS_13_%282015%29

in the table it says,

"Bluetooth Works after installing firmware btbcm"

back on Debian, synaptics search does not find a package "btbcm".
Reading more of the Arch wiki page,

"The Broadcom Bluetooth firmware is not available in the kernel
(source), so you will have to retrieve it from the Windows driver. You
need to extract the .cab file with cabextract and then convert it to a
.hcd file with hex2hcd from bluez-utils:

$ cabextract 20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab
$ hex2hcd BCM20702A1_001.002.014.1443.1572.hex
# mv BCM20702A1_001.002.014.1443.1572.hcd
/lib/firmware/brcm/BCM20702A1-0a5c-216f.hcd
# ln -rs /lib/firmware/brcm/BCM20702A1-0a5c-216f.hcd
/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd

After reboot, the firmware should be available for your Bluetooth
interface."

So the next thing is to obtain the cabextract file if not already
installed on jessie. "which cabextract" turns up nothing, "ls
/sbin/cabextract" turns up nothing. Synaptics however shows a
"cabextract" package, so install it.

Okay, now we need the hex2bcd command from "bluez-utils" to run their
recipe, but bluez-utils appears to be an Arch-specific package since
synaptic search doesn't find it. Following the "bluez-utils" link in
the Arch wiki we find a package description "Development and debugging
utilities for the bluetooth protocol stack" so we web-grep on that to
see what the Debian equivalent might be. Finding that the (Debian-
based) Ubuntu package is "bluez" then going back to synaptic we find
that backage "bluez" is already installed. Since the hex2bcd command is
not available, looking in more detail shows Debian package "bluez-tools"
which is "Bluez-tools provides command line tools to functions of
Bluetooth." Command-line good, we try this, thump club on ground to get
attention of gods, tell synapic to install. Ug, still no hex2bcd, thump
club harder, scream at gods!

What a *FUCKING* pain in the ass this is! Can someone tell me where I
have gone wrong here along the trail of things no user should ever have
to do? This kind of *SHIT* is what we write programs for, to do the
fugly stuff for us, so we don't have to follow some trail of
breadcrumbs!

The UPS guy delivered an Android tablet today, you think I'll have to go
through this kind of horseshit to get bluetooth working? Not likely.

I would like to get bluetooth working on this thing, if any of you gods
wish to take pity on a mere mortal who is unwilling to bow down in
supplication. Shitty tech, that's what I've been looking at for the
past 3 years, collected lore about ancient kludges that have never been
brought up to currency with the rest of the world.

Listen to the intro music for Six Million Dollar Man, we have the tech,
we can fix this, it's a marvelous kernel but pretty much everything on
top of it is a multi-decade collection of one ad-hoc fix after another.

--
http://totally-portable-software.blogspot.com
[Sun Nov 22: "Total Portability is not binary"]

Jasen Betts

unread,
Jan 26, 2016, 5:01:14 AM1/26/16
to
On 2016-01-26, crankypuss <inv...@invalid.invalid> wrote:
> From "Installing Debian On Dell XPS 13 9343"
> https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013%209343
>
> "Bluetooth Works, but requires non-free firmware to be installed from
> the Windows driver."
>
> And that's it, no description of what the device is or how to install
> the non-free firmware from the windows driver; good luck, sucker!

I expect you're supposed to go to the documentation
you made a spelling mistake 17 lines up:
should be .hcd nor .bcd

perhaps hex2hcd is in bluez-tools

--
\_(ツ)_

crankypuss

unread,
Jan 26, 2016, 6:13:29 AM1/26/16
to
to find hex2hcd, see:
http://dhanar10.blogspot.com/2015/04/updated-steps-for-enabling-bcm43142.html

"
$ wget "https://github.com/jessesung/hex2hcd/archive/master.zip"
$ unzip master.zip
$ cd hex2hcd-master
$ make
# cp hex2hcd /usr/local/bin
"

Then once you get done building hex2hcd, you have to fetch on over to
the Microsoft website to get the cabinet file containing the windows
driver,
http://catalog.update.microsoft.com/v7/site/ScopedViewRedirect.aspx?updateid=87a7756f-1451-45da-ba8a-55f8aa29dfee

whereupon you execute the magic ritual:

$ cabextract 20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab
$ hex2hcd BCM20702A1_001.002.014.1443.1572.hex
# mv BCM20702A1_001.002.014.1443.1572.hcd
/lib/firmware/brcm/BCM20702A1-0a5c-216f.hcd
# ln -rs /lib/firmware/brcm/BCM20702A1-0a5c-216f.hcd
/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd

Then you reboot to see if you've won a cupie-doll.

crankypuss

unread,
Jan 26, 2016, 6:24:19 AM1/26/16
to
When I rebooted, I looked at gnome-control-center and it says "no
bluetooth adapters found".

Yet dmesg reports this,

[ 4.116873] Bluetooth: Core ver 2.19
[ 4.116886] NET: Registered protocol family 31
[ 4.116887] Bluetooth: HCI device and connection manager initialized
[ 4.116891] Bluetooth: HCI socket layer initialized
[ 4.116892] Bluetooth: L2CAP socket layer initialized
[ 4.116899] Bluetooth: SCO socket layer initialized
[ 4.119703] usbcore: registered new interface driver btusb
[ 4.120406] bluetooth hci0: firmware: direct-loading firmware
brcm/BCM20702A0-0a5c-216f.hcd
[ 4.124062] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000
lmp_ver=06 lmp_subver=220e

[ 4.737522] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=1624
lmp_ver=06 lmp_subver=220e
[ 4.797840] [drm] Enabling RC6 states: RC6 on, RC6p off, RC6pp off
[ 5.138453] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 5.138456] Bluetooth: BNEP filters: protocol multicast
[ 5.138462] Bluetooth: BNEP socket layer initialized

So maybe it's installed and gnome-control-center doesn't know it.

David W. Hodgins

unread,
Jan 26, 2016, 1:15:13 PM1/26/16
to
On Tue, 26 Jan 2016 06:24:15 -0500, crankypuss <inv...@invalid.invalid> wrote:

> crankypuss wrote:
>> Then once you get done building hex2hcd, you have to fetch on over to
>> the Microsoft website to get the cabinet file containing the windows
>> driver,
> When I rebooted, I looked at gnome-control-center and it says "no
> bluetooth adapters found".

There's more to bluetooth than that. In Mageia, the bluez package,
which has hex2hcd, also has /usr/lib/systemd/system/bluetooth.service
which starts /usr/libexec/bluetooth/bluetoothd

On a non-systemd system, I'd expect there to be an init.d service.

Regards, Dave Hodgins

--
Change dwho...@nomail.afraid.org to davidw...@teksavvy.com for
email replies.

crankypuss

unread,
Jan 27, 2016, 6:03:51 AM1/27/16
to
David W. Hodgins wrote:

> On Tue, 26 Jan 2016 06:24:15 -0500, crankypuss
> <inv...@invalid.invalid> wrote:
>
>> crankypuss wrote:
>>> Then once you get done building hex2hcd, you have to fetch on over
>>> to the Microsoft website to get the cabinet file containing the
>>> windows driver,
>> When I rebooted, I looked at gnome-control-center and it says "no
>> bluetooth adapters found".
>
> There's more to bluetooth than that. In Mageia, the bluez package,
> which has hex2hcd, also has /usr/lib/systemd/system/bluetooth.service
> which starts /usr/libexec/bluetooth/bluetoothd
>
> On a non-systemd system, I'd expect there to be an init.d service.

Hey, Dave. I'm not 100% sure that I get it, "it" meaning the point you
were making.

I went through a bunch of other stuff in order to get bluetooth to
recognize an alternative keyboard, in order to learn how to set up a
bluetooth mouse, which will effectively double the number of USB ports
available on this xps. I'm fairly sure I kept some kind of notes,
seeing as how I'll need to go back and re-do some/most of it to add a
bluetooth mouse once I lay hands on one. Debian runs systemd so I just
followed the magic recipe for adding a onetime service (as found in the
Arch wiki as I recall), and now all I have to do to switch keyboards is
turn on the bluetooth keyboard and hit its system-select button.

The point that I want to make is that *none* of the manual configuration
that I had to go through should be needed, ever, by anybody, except the
programmer who's making it unnecessary.

None of it's necessary to set up a bluetooth keyboard on Android, and
that's just a specialized linux distro.

Maybe you're saying that MCC deals with it. That would not surprise me.
I rather liked what I saw of Mageia.

Chris Ahlstrom

unread,
Jan 27, 2016, 10:00:18 AM1/27/16
to
crankypuss wrote this copyrighted missive and expects royalties:
No, Android is "just" tweaked and supported by the hardware vendor so that
all the hardware works.

Kinda like what vendors have to do to get their hardware to work with
Windoze.

It's generally not necessary on Linux, either.

I run either bluedevil-monolithic or bluetooth-applet (sp?) and it makes it
straightforward (read "it's a GUI") to add a bluetooth keyboard.

You might have to make sure Bluetooth is enabled in the BIOS (it was
disabled in my ASUS) or install firmware. The instructions on Arch are
pretty straightforward. On Debian its seamless, but then the wifi needs the
non-free firmware. :-D

--
You single-handedly fought your way into this hopeless mess.

crankypuss

unread,
Jan 27, 2016, 10:47:26 AM1/27/16
to
They're still running a linux kernel, even if they have dicked-about the
filesystems and suchlike.

> Kinda like what vendors have to do to get their hardware to work with
> Windoze.

Maybe we need some user-side collusion to break down the effectiveness
of the supplier-side collusion evidenced throughout the industry.

> It's generally not necessary on Linux, either.
>
> I run either bluedevil-monolithic or bluetooth-applet (sp?) and it
> makes it straightforward (read "it's a GUI") to add a bluetooth
> keyboard.

Heh, never heard of either of those. Just learned about the existence
of blueman this morning. I can get a bluetooth mouse hooked up with
just what I know now (I think) but what about using bluetooth for file
transfer? I need a good way of getting files from an Android mobile to
linux and back, do you know of a good one?

> You might have to make sure Bluetooth is enabled in the BIOS (it was
> disabled in my ASUS) or install firmware. The instructions on Arch
> are
> pretty straightforward.

The Arch wiki is one of the places my web searches often ends.
Apparently Arch is fairly popular, I can see the wiki as one reason, but
I've never messed with Arch.

> On Debian its seamless, but then the wifi
> needs the
> non-free firmware. :-D

I will never knowingly purchase another piece of hardware that contains
any Broadcom devices. I have no problem with their keeping the inner
workings of their devices secret, but not even publishing the device
interface specs is unconscionable imo.
0 new messages