Roundup of miscellaneous notes, captured and organized

Blockchain Culture

The Seven(Hundred) Dwarves

  • Blockstack(.org)- The New Decentralized Internet
    • blockstack, at GitHub
    • Union Square Ventures (USV)
    • Promotion
      • Staff (USV); The Blockchain App Stack; In Their Blog; 2016-08-08.
      • Blockstack Unveils A Browser For The Decentralized Web; Laura Shin; In Forbes; 2017-05-15.
        tl;dr → <quote>Tuesday, at the main blockchain industry conference, Consensus, one of the companies working on this new decentralized web, Blockstack, which has $5.5 million in funding from Union Square Ventures and AngelList cofounder Naval Ravikant, released a browser add-on that enables that and more.<snip/>The add-on enables a browser to store the user’s identity information by a local key on the consumer’s device.</quote>; Ryan Shea, cofounder.
  • Everyone has something here.

Bluetooth Culture

Bluetooth LE (BLE)

  • and?

Bluetooth 5

  • Something about mesh networking
  • Something about the standard being released “summer 2017.”

C++ Culture

C++20

  • The roadmap onto the twenties.

Application

  • MapReduce, from ETL or EU somewhere.
  • Kyoto Cabinet, Typhoon, Tycoon
  • Virtual Reality packages
  • Ctemplate, Olafud Spek (?)
  • Robot Operating System (ROS)
  • libgraphqlparser – A GraphQL query parser in C++ with C and C++ APIs

Computing Culture

Ubicomp, <ahem>Pervicomp</ahem>

  • Rich Gold
  • Mark Weiser

Dev(Ops) Culture

Futures Cult(ure)

Advocacy

  • Cory Doctorow, the coming war against general purpose computing, an article; WHERE?
  • Cory Doctorow, dystopia contra utopia, an article; WHERE?

Fiction

  • Cory Doctorow, various works

Imagine a World In Which…

  • Stocks vs Flows
  • Chaos vs Stability
  • Permission vs Permissionless
  • Civil Society ↔ Crony Society
    • Transparency
    • Deals
    • Priorities
  • Predictive Technology “just works”
    • is trusted
    • is eventual
    • is law
    • “is” equates with “ought”

Fedora Culture

  • Flatpak

Fedora 26 Notes

  • nmcli reload con down $i
  • nm cli reload con up $i
  • eui64 must be manually configured

Internet of (unpatchable) Thingies (IoT)

  • MQTT
  • mosquito

Language Lifestyles

Go Lang

  • Go for it.
  • A package manager

LangSec

  • theory
  • implementation?

Rust Lang

  • Was there a NoStarch book?

SCOLD Lang

  • C++20?
    hey, surely someone has modules working by now, eh?

Projects

Generally

  • Repig, in C++, with threads, in an NVMe

mod_profile

  • sure, what?

mod_proliphix

  • Interface to the (discontinued) Proliphix thermostats

mod_resting

  • CDN Store
  • Picture Store
  • Document Cache (store & forward)

mod_files

  • Firefox Tiles

SCOLD Experiences

SCOLD near-syntax, common errors

  • #import <hpp>
  • missing #divert
  • #using, a declaration
  • #origin
  • #namespace
  • $@

Suggestions

Build System
  • –with-std-scold or maybe –with-scold
module-c-string
  • vecdup, like strdup
  • vectree, like strfree→free
module-json
  • json::check::Failure or json::Cast.
  • namespace json::is
    • is_array
    • is_null
    • is_object
  • json::as<…>(…)
module-path
  • pathify(…)
module-sqlite
  • column result
  • concept guarding the template parameter, from C++17
module-string
  • typed strings
    • location
    • path
    • etc.
  • and

Surveillance Culture

Concepts

  • Eigenpeople
  • Eigenpersonas
  • Personality modeling

Literature

Yves-Alexandre de Montjoye, Jordi Quoidbach, Florent Robic, Alex (Sandy) Pentland; Predicting Personality Using Novel Mobile Phone-Based Metrics; In: A.M. Greenberg, W.G. Kennedy, N.D. Bos (editors) Social Computing, Behavioral-Cultural Modeling and Prediction as Proceedings of Social Computing, Behavioral (SBP 2013), Lecture Notes in Computer Science, vol 7812; 2013; paywalls: Springer, ACM. Previously filled.

Theory

  • POSS (Post Open Source Software)
    defined as: if everything is on GitHub, then who needs licenses?
    Was this ever amplified?
    Certainly it is facially incorrect and facile.

Psychology

  • Rob Horning; Sock of Myself, an essay; In Real Life Magazine; 2017-05-17
    tl;dr → riffing on happiness, Facebook. Is. Bad. Q.E.D. R.D. Laing , The Divided Self,; John Cheney-Lippold’s We Are Data; Donald Mackenzie.
  • Michael Nelson; University of California, Riverside.

Purposive directionality

  • increase
    • predictability
  • reduce
    • uncertainty
    • variability

Various

Uncomprehensible, Unknown, Unpossible

  • Sunlight, a package? FOSS?

License to panhandle is validated with iBeacon, iOS and The Cloud

A bold economic theory on why panhandlers should act more like registered charities; Leslie Albrecht; In MarketWatch; 2017-07-24.
Teaser: Giving money to others boosts our happiness, but only when we know we’re making an impact

tl;dr → a license to panhandle validated with a bluetooth beacon+iOS+Cloud; appware entitled GiveSafeSamaritan, is in market now (Apple only). roles: supplicant, samaritan, supplier; It’s a scrip scheme, yet whither AML & KYC?

Occasion

Contrast With

Dispossessed in the Land of Dreams; Monica Potts; In The New Republic; 2015-12-13; previously noted.
Teaser: Those left behind by Silicon Valley’s technology boom struggle to stay in the place they call home.
Monica Potts is a fellow with the New America Asset Building program.

GiveSafe → Samaritan

  • GiveSafe (now called Samaritan)
  • FoodCircles LC
  • iOS only; see iTunes
  • Developed in Seattle, WA
  • Stable:

Mentions

  • New York City Mayor
  • Bill de Blasio, mayor, New York City
  • Manhattan
  • Elizabeth Dunn hasn’t studied panhandling specifically, but said <paraphrase>it was probably similar enough for the purposes of the interview</paraphrase>

Concept

Credentialing the homeless

<quote>[GiveSafe] notifies users when they walk past a homeless person who’s wearing an electronic “beacon.” The app provides the user with the story of how the homeless person ended up on the street. The <edit>mark</edit> can make a donation that the recipient can only use for essentials such as “bus fare, groceries, a haircut or storage locker.”</quote>

Quotes

<quote>I could see a world where just as there are different personal trainer certifying groups, there could be different panhandler certifying groups. </quote>, attributed to Brendan O’Flaherty.
<quote>Mosques could certify panhandlers who are observant Muslims, other groups could credential panhandlers who are sober.</quote>, attributed to Brendan O’Flaherty.

Quoted

  • Brendan O’Flaherty, staff, economist, Columbia University
  • Megan Hustings, interim director, National Coalition for the Homeless
  • Elizabeth Dunn, professor, psychology, University of British Columbia

Referenced

Previously

In MarketWatch

Previously filled.

Continued characterization, but no solution, for the Dell M3800 with Fedora 21 and Broadcom’s Bluetooth brcm/BCM20702A0-0a5c-216f.hcd binary blob

Continuing: Bluetooth seen working on the Dell M3800 with Fedora 21 and Broadcom’s Bluetooth brcm/BCM20702A0-0a5c-216f.hcd binary blob, still not solved, or ameliorated.

An example of syslog messages from a boot trace where the firmware was loaded correctly, three suspend-resume sycles occurred with the firmware failing to (re)load on the third cycle.

Specimen

$ cat /var/log/messages | grep -i bluetooth
<snip/>
Oct  5 13:39:56 sonsie bluetoothd[1063]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  5 13:39:56 sonsie bluetoothd[1063]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSink
Oct  5 13:40:58 sonsie kernel: [   40.537859] Bluetooth: Core ver 2.20
Oct  5 13:40:58 sonsie kernel: [   40.537878] Bluetooth: HCI device and connection manager initialized
Oct  5 13:40:58 sonsie kernel: [   40.537882] Bluetooth: HCI socket layer initialized
Oct  5 13:40:58 sonsie kernel: [   40.537885] Bluetooth: L2CAP socket layer initialized
Oct  5 13:40:58 sonsie kernel: [   40.537891] Bluetooth: SCO socket layer initialized
Oct 5 13:40:58 sonsie kernel: [ 40.594551] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000 lmp_ver=06 lmp_subver=220e Oct 5 13:40:58 sonsie kernel: [ 41.201337] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=1624 lmp_ver=06 lmp_subver=220e 
Oct  5 13:39:56 sonsie bluetoothd[1063]: Terminating
Oct  5 13:39:56 sonsie bluetoothd[1063]: Stopping SDP server
Oct  5 13:39:56 sonsie bluetoothd[1063]: Exit
Oct  5 13:40:58 sonsie kernel: [   41.809621] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Oct  5 13:40:58 sonsie kernel: [   41.809625] Bluetooth: BNEP filters: protocol multicast
Oct  5 13:40:58 sonsie kernel: [   41.809629] Bluetooth: BNEP socket layer initialized
Oct  5 13:40:57 sonsie kernel: Bluetooth: Core ver 2.20
Oct  5 13:40:57 sonsie kernel: Bluetooth: HCI device and connection manager initialized
Oct  5 13:40:57 sonsie kernel: Bluetooth: HCI socket layer initialized
Oct  5 13:40:57 sonsie kernel: Bluetooth: L2CAP socket layer initialized
Oct  5 13:40:57 sonsie kernel: Bluetooth: SCO socket layer initialized
Oct  5 13:40:57 sonsie kernel: Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000 lmp_ver=06 lmp_subver=220e
Oct  5 13:40:57 sonsie kernel: Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=1624 lmp_ver=06 lmp_subver=220e
Oct  5 13:40:58 sonsie bluetoothd[1341]: Bluetooth daemon 5.29
Oct  5 13:40:58 sonsie bluetoothd[1341]: Starting SDP server
Oct  5 13:40:58 sonsie kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Oct  5 13:40:58 sonsie kernel: Bluetooth: BNEP filters: protocol multicast
Oct  5 13:40:58 sonsie kernel: Bluetooth: BNEP socket layer initialized
Oct  5 13:40:58 sonsie bluetoothd[1341]: Bluetooth management interface 1.8 initialized
Oct  5 13:40:58 sonsie bluetoothd[1341]: Failed to obtain handles for "Service Changed" characteristic
Oct  5 13:40:58 sonsie NetworkManager[1483]:   Loaded device plugin: /usr/lib64/NetworkManager/libnm-device-plugin-bluetooth.so
Oct  5 13:41:01 sonsie NetworkManager[1483]:   (F8:F1:B6:90:2E:D5): new Bluetooth device (driver: 'bluez' ifindex: 0)
Oct  5 13:41:13 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  5 13:41:13 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink
Oct  5 13:41:13 sonsie kernel: [   56.715761] Bluetooth: RFCOMM TTY layer initialized
Oct  5 13:41:13 sonsie kernel: [   56.715769] Bluetooth: RFCOMM socket layer initialized
Oct  5 13:41:13 sonsie kernel: [   56.715812] Bluetooth: RFCOMM ver 1.11
Oct  5 13:41:13 sonsie kernel: Bluetooth: RFCOMM TTY layer initialized
Oct  5 13:41:13 sonsie kernel: Bluetooth: RFCOMM socket layer initialized
Oct  5 13:41:13 sonsie kernel: Bluetooth: RFCOMM ver 1.11
<suspending/>
Oct  5 13:45:54 sonsie bluetoothd[1341]: Unable to get io data for Object Push: getpeername: Transport endpoint is not connected (107)
<suspend/>
<resume/>
Oct 5 13:58:17 sonsie kernel: Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000 lmp_ver=06 lmp_subver=220e Oct 5 13:58:17 sonsie kernel: [ 695.669721] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000 lmp_ver=06 lmp_subver=220e Oct 5 13:58:18 sonsie kernel: [ 696.273496] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=1624 lmp_ver=06 lmp_subver=220e Oct 5 13:58:18 sonsie kernel: Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=1624 lmp_ver=06 lmp_subver=220e
Oct  5 13:58:18 sonsie bluetoothd[1341]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  5 13:58:18 sonsie bluetoothd[1341]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSink
Oct  5 13:58:18 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 13:58:18 sonsie bluetoothd[1341]: Failed to obtain handles for "Service Changed" characteristic
Oct  5 13:58:18 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 13:58:18 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 13:58:18 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 13:58:18 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  5 13:58:18 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink
Oct  5 13:58:18 sonsie NetworkManager[1483]:   (F8:F1:B6:90:2E:D5): new Bluetooth device (driver: 'bluez' ifindex: 0)
<suspend/>
<resume/>
Oct  5 21:26:31 sonsie bluetoothd[1341]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  5 21:26:31 sonsie bluetoothd[1341]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSink
Oct  5 21:26:31 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 21:26:31 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 21:26:31 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 21:26:31 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  5 21:26:31 sonsie bluetoothd[1341]: Failed to obtain handles for "Service Changed" characteristic
Oct  5 21:26:31 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  5 21:26:31 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink
<suspend/>
<resume/>
Oct 6 08:41:12 sonsie kernel: [26523.176432] bluetooth hci0: firmware: brcm/BCM20702A0-0a5c-216f.hcd will not be loaded Oct 6 08:41:13 sonsie kernel: bluetooth hci0: firmware: brcm/BCM20702A0-0a5c-216f.hcd will not be loaded
Oct  6 08:41:13 sonsie bluetoothd[1341]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  6 08:41:13 sonsie bluetoothd[1341]: Endpoint unregistered: sender=:1.56 path=/MediaEndpoint/A2DPSink
Oct  6 08:41:13 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  6 08:41:13 sonsie bluetoothd[1341]: Failed to obtain handles for "Service Changed" characteristic
Oct  6 08:41:13 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  6 08:41:13 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  6 08:41:13 sonsie dbus[1367]: [system] Rejected send message, 11 matched rules; type="error", sender=":1.56" (uid=25500 pid=3361 comm="/usr/bin/pulseaudio --start ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.2" (uid=0 pid=1341 comm="/usr/libexec/bluetooth/bluetoothd ")
Oct  6 08:41:13 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource
Oct  6 08:41:13 sonsie bluetoothd[1341]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink

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

Wardriving with Bluetooth Low Energy (BLE) | Context Information Security

The Emergence of Bluetooth Low Energy; Scott Lester (Context Information Security); In Their Blog; 2015-05-21.
tl;dr → guy goes wardriving with his BLE unit, around Canary Warf, London, UK.

nothing to see here.

Via: backfill, backfill.

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

tl;dr

You need a blob for the driver BCM20702A0-0a5c-216f.hcd

Update 2015-09-28: some success is reported

Whereas

Bluetooth is not working on the Dell M3800 under Fedora 21.

Question

But does it work with the Ubuntu shipped from the factory by Dell?   TBD.

Previously

Experiences with the Dell M3800, The Good, The Bad (no Ugly, it’s a beautiful machine)

Evidences

  • Fedora 21
  • Kernel 4.0.7
    Linux devbox.example.com 4.0.7-200.fc21.x86_64 #1 SMP Mon Jun 29 22:11:52 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • linux-firmware-20150521-48.git3161bfa4.fc21.noarch

Recipe

Recipe #1

Via: Dell XPS 13 (2015); staff; In Arch Linux Forums; 2015-07-25

<quote>

Note: Intel WiFi users: If your WiFi card supports Bluetooth, then the BT interface should be available out-of-the-box, as the required firmware is included in linux-firmware.

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.

</quote>

Recipe #2

Via: Bluetooth not connecting to devices even though it recognizes them; Aaron Weinberg, some dude using the self-asserted identity token Jeremy31, Ian Mackinnon; In Ask  Ubuntu; 2015-05-01 → 2015-07-01.

Recipe #2(a)

<quote>

wget https://www.dropbox.com/s/r2pb41rhx65t9zi/BCM20702A0-0a5c-216f.hcd sudo cp BCM20702A0-0a5c-216f.hcd /lib/firmware/brcm/ sudo modprobe -r btusb sudo modprobe btusb

</quote>

And as recovered by me from the dropbox site.  Proven to work on my Dell M3800 <paranoid>but who knows what I recovered?</paranoid>

$ for i in md5sum sha1sum sha256sum ; do $i BCM20702A0-0a5c-216f.hcd; done
356ecc4d52b344109b55b3c96d6ec4d0  BCM20702A0-0a5c-216f.hcd
6ab9dde1e010bacfd57d371f832477d819fd671a  BCM20702A0-0a5c-216f.hcd
42677905be180547d4c6f3e670884f6b5bcaf003c1a7c156e2dfc6fdc0397364  BCM20702A0-0a5c-216f.hcd
Recipe #2(b)

<quote>
Get 20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab from Microsoft at Broadcom Corporation Bluetooth Controller.
Acquire cabextract via yum (dnf).
Run cabextract 20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab to recover BCM20702A1_001.002.014.1443.1572.hex.

git clone https://github.com/jessesung/hex2hcd.git
make -C hex2hcd
./hex2hcd/hex2hcd BCM20702A1_001.002.014.1443.1572.hex BCM20702A0-0a5c-216f.hcd
sudo cp BCM20702A0-0a5c-216f.hcd /lib/firmware/brcm/
sudo modprobe -r btusb
sudo modprobe btusb

Folklore

In archaeological order, newer on top, older below.
And recall that the Dell M3800 is “alot like” the Dell XPS 13.

  • Dell XPS 13 (2015); staff; In Arch Linux Forums; 2015-07-25
    tl;dr → see recipe above.  You must to extract the blog out of the Windows driver package yourself, convert the encoding and place the file appropriiately.  Yourself.  No packaging is available at this time.  Construction recipe for:

    • /usr/lib/firmware/brcm/BCM20702A0-0a5c-216f.hcd
    • /usr/lib/firmware/brcm/BCM20702A1-0a5c-216f.hcd
  • Bluetooth not connecting to devices even though it recognizes them; Aaron Weinberg, some dude using the self-asserted identity token Jeremy31, Ian Mackinnon; In Ask  Ubuntu; 2015-05-01 → 2015-07-01.
    tl;dr → good compendium of the recipes; those being recited above.

    • Concept
      <quote>hex2hcd utility by Jesse Sung that converts Broadcom hex files to hcd for use in newer kernels but you have to use Windows drivers and search the inf files to find the correct hex file to convert.</quote>
    • Resources
      • BCM20702A0-0a5c-216f.hcd; at DropBox; prepared by whom? (perhaps en Jeremy31?); no checksum or signature is published nearby.
      • jessesung/hex2hcd at GitHub
      • Broadcom Corporation Bluetooth Controller, software update, At Microsoft; released 2014-06.
        20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab → some Windows blob you have to use cabstract upon; no checksum or signature is available to you (maybe Microsoft has access to such in their API, who knows).
    • References
      • XPS 13 (9343) Ubuntu Linux; Some Dude; In Sybian Linux; 2015-03-15.
        tl;dr → <quote>whole lot of complaints about the compatibility of this laptop with Linux.</quote> but enumerates the remediations.

        • BIOS update from A0 to A1
        • Ubuntu LTS 14.04.2 with UEFI enabled
        • Broadcom 4352 WiFi (use USB dongle networking to bootstrap it)
        • Broadcom 216F Bluetooth (acquiring BCM20702A0-0a5c-216f.hcd
        • Touchpad requires kernel parameters
        • (Analog) Audio requires kernel parameters
      • How can I get the Bluetooth working on my Lenovo  Yoga 3; Some dude using the self-asserted identity token drs; In Stack Exchange; 2015-03-12.
        tl;dr → complete procedure for Broadcom BCM20702A0 including fishing around in the Broadcom Windows Driver Installer to discover BCM20702A1_001.002.014.1443.1496.hex
  • Dell XPS 13 (9343) Developer Edition – Bluetooth Firmware; Some Dude, using the self-asserted identity token Beowulf; In His Blog; 2015-06-23.
    this advice is unrelated ot the Plugable advice (last item)
    tl;dr → asserts a recipe for manually acquiring & installing the module

    • The module is bfusb
    • That the appropriate firmware is available in bt-dw1560-firmware_1.0_all.deb
    • Gives a recipe for copying it into place, manually.
  • Dell XPS 13 (9343) – No Bluetooth; Some dude using the self-asserted identity token red-lichtie; In Arch Linux Forums; 2015-06-20.
    tl;dr → cites the difference in hardware version number in the firmware blob that must be loaded
    brcm/BCM20702A1-0a5c-216f.hcd is what? (possible?)
    brcm/BCM20702A0-0a5c-216f.hcd is expected but not found.
  • THIS IS A DIFFERENT DEVICE ENTIRELY Plugable USB Bluetooth Adapter: Solving HFP/HSP and A2DP Profiles Issues on Linux; (Plugable); In their Blog; 2014-06-23.
    tl;dr → recommends downloading & installing some unspecified binary blob sourced out of Amazon S3; not even a checksum was uttered to know what was to be expected.
    wget https://s3.amazonaws.com/plugable/bin/fw-0a5c_21e8.hcd
    sudo mv fw-0a5c_21e8.hcd /lib/firmware/brcm/BCM20702A0-0a5c-21e8.hcd

Actualities

Jul 24 19:52:10 devbox.example.com kernel: bluetooth hci0: firmware: brcm/BCM20702A0-0a5c-216f.hcd will not be loaded
Jul 24 19:52:10 devbox.example.com kernel: Bluetooth: hci0: BCM: patch brcm/BCM20702A0-0a5c-216f.hcd not found
$ find /usr/lib/firmware/brcm -print | while read file ; do echo "$file $(rpm -q -f $file)" ; done
$ find /usr/lib/firmware/brcm -print | while read file ; do rpm=$(rpm -q -f $file); echo "$rpm $file" ; done
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43570-pcie.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43362-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/bcm4329-fullmac-4.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4354-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43143.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43340-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43236b.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43602-pcie.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4334-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/bcm43xx-0.fw
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43241b5-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/bcm43xx_hdr-0.fw
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4330-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43569.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43143-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43455-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4335-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43602-pcie.ap.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4356-pcie.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4329-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43241b4-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43241b0-sdio.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac43242a.bin
linux-firmware-20150521-48.git3161bfa4.fc21.noarch /usr/lib/firmware/brcm/brcmfmac4339-sdio.bin
$ 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 002: ID 0bda:8153 Realtek Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0a5c:216f Broadcom Corp.
Bus 001 Device 002: ID 04f3:21f9 Elan Microelectronics Corp.
Bus 001 Device 004: ID 0bda:573c Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Couldn't open device, some information will be missing
Couldn't open device, some information will be missing
Couldn't open device, some information will be missing
$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    |__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 6: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 9: Dev 3, If 0, Class=Vendor Specific Class, Driver=btusb, 12M
    |__ Port 9: Dev 3, If 1, Class=Vendor Specific Class, Driver=btusb, 12M
    |__ Port 9: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 9: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M
    |__ Port 11: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 11: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
$ lsusb --verbose
<snip/>
Bus 001 Device 003: ID 0a5c:216f Broadcom Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         1
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x0a5c Broadcom Corp.
  idProduct          0x216f
  bcdDevice            1.12
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          218
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Couldn't open device, some information will be missing
Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      1
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      1
      iInterface              0
      Device Firmware Upgrade Interface Descriptor:
        bLength                             9
        bDescriptorType                    33
        bmAttributes                        5
          Will Not Detach
          Manifestation Tolerant
          Upload Unsupported
          Download Supported
        wDetachTimeout                   5000 milliseconds
        wTransferSize                      64 bytes
        bcdDFUVersion                   1.10
<snip/>

Web Bluetooth API in Google Chrome M45

Interact with BLE devices on the Web; François Beaufort; In Chrome News of Google; 2015-07-22.
Teaser: A Web API has been added to Chrome OS M45 that makes it possible for websites to discover and communicate with devices over the Bluetooth 4 wireless standard using GATT.

Mentions

Development

Chrome M45

  • chrome:flags:#enable-web-bluetooth
  • This is alpha code
  • Feedback
  • Implementation
    • <quote>As a security feature, discovering nearby Bluetooth devices with navigator.bluetooth.requestDevice must be called via a user gesture like a touch or mouse click.</quote>
    • <quote>The device chooser hasn’t been implemented yet. Only the first device that matches filters will be returned.</quote>

General

Examples

navigator.bluetooth.requestDevice({
  filters: [{
    services: ['battery_service']
  }]
})
.then(device => {...})
.catch(error => { console.log(error); });
navigator.bluetooth.requestDevice({
  filters: [{
    services: [0x1234, 0x12345678, '99999999-0000-1000-8000-00805f9b34fb'],
  }]
})
then(device => {...})
.catch(error => { console.log(error); });
navigator.bluetooth.requestDevice({
  filters: [{
    services: ['battery_service']
  }]
})
then(device => {
  // Human-readable name of the device. console.log(device.name);
  // Indicates whether or not the device is paired with the system.
  console.log(device.paired);
  // Filtered UUIDs of GATT services the website origin has access to.
  console.log(device.uuids);
  // Attempts to connect to remote GATT Server.
  return device.connectGATT();
})
.then(server => {...})
.catch(error => { console.log(error); });

Via: backfill

Experimenting Monitoring and Proximity techniques using Android potential and iBeacon devices | Matteo Gazzurelli

Matteo Gazzurelli; Experimenting Monitoring and Proximity Techniques Using Android Potential and iBeacon Devices; At DroidCon; 2015-04-10; 26 slides; landing.

Mentions

Actualities


Via: backfill

Swirl Networks (Swirl)


Swirl

Concept

  • Indoor mobile marketing

Lines of Business

  • Swirl for Retailers
  • Swirl for Publishers
  • Swirl for Advertisers
    • Swirl Audience Network
    • Swirl Ad Exchange (SWx)

Mentions

  • Boston, MA
  • 30 employees
  • Funding
    • Series C is $18M
    • Total: $32M
  • Investors
    • Twitter Ventures
    • Hearst Ventures
    • Softbank Capitals
    • Longworth Venture Partners
    • General Catalyst Partners
  • Business Model
    <quote cite=”ref“>Swirl makes money in three ways.

    1. It sells software subscriptions to retailers who want to use its technology to build an ad network in their stores.
    2. The startup also gets a percentage of any advertising buys that are made by outside marketers, and
    3. a percentage of the money that retailers might spend to get their store’s offers featured in third-party shopping apps that partner with Swirl.</quote>
  • SecureCast™ beacon protocol (a proprietary protocol)
  • Swirl App
    • Android, Manager & Configurator
    • iOS, SWIRL In-Store Explorer
  • Support
    • Beacon (Bluetooth Low Energy)
    • does not support NFC
    • Something vague about Apple Pay (or not) <quote>provides a seamless way for retailers and brands to measure the effectiveness of their in-store mobile marketing efforts by closing the loop between beacon-triggered messages/offers and actual consumer purchases in the store.”</quote> attributed to Rob Murphy.
  • Customers
    • Alex and Ani
    • Hudson’s Bay
    • Lord & Taylor
    • Marriott
    • Timberland.
    • Urban Outfitters
  • Relationships
    • Condé Nast, an app publisher
    • SnipSnap, a coupon app
    • Hearst, an app publisher, also an investor
    • Motorola Solutions (Zebra Technologies), indoor location system, MPact.
      a partnership to sell Swirl’s beacon+app+marketing cloud; standalone and bundled with Motorola’s MPact indoor location service+rigging.
  • Positioning
    • The tech is “done”
    • The money is for sales & marketing outreach.
    • Something about how the new investors (i.e. Twitter) will help.
  • Something about wearables.
  • Something about building an RTB interface.
  • Swirl Ad Exchange (SWx)
    <quote cite=”ref“>Swirl’s programmatic ad exchange for proximity-based in-store mobile marketing</quote>

Who

  • Hilmi Ozguc, CEO, Founder
  • Rob Murphy, Vice President Marketing

Scheme

  • Beacons monitor the consumers sojourn times in known locations
  • Intent & interest is imputed to location & sojourn time.
  • Push notifications are used to incite action out of the consumer on a target or retarget basis.
  • Perhaps Twitter DMs from a robot will notify you.

Use Cases

  • <quote>Estée Lauder and Michael Kors ran in-aisle campaigns in Lord & Taylor stores across the country during the past holiday shopping season. In both cases, the brands would send users who showed intent – signaled by their spending more than a minimum set amount of time in either the beauty department or the handbag department – push notifications to learn more about certain products on display.</quote>
  • <quote>Marriott uses Swirl to target people while they’re in specific places around the hotel. Guests lounging by the pool for more than 15 minutes, for example, might find themselves pinged with a message that says, “How about a free appetizer with your next drink order?”</quote>

Products

  • SecureCastd™ beacons (a proprietary protocol)
  • Swirl Audience Network
  • Swirl Ad Exchange (SWx)
  • Ad Units
    creatives, permissioning, regulatory compliance; multi-page, interactivity, position-triggered.
  • Hardware
    • iBeacon mode
    • SecureCast™ mode
    • BYOB (supply your own gear)
  • Swirl Mobile Client SDK
    • Android
    • iOS
  • Advertising Console (a web site)
    • Programmatic access to (participating publisher) private marketplaces
    • Package Discovery (supply package, media bundles)
    • Campaign management
    • Swirl Creator™
      requires custom creatives to run on their rendering engine & delivery platform
    • Swirl Analytics
  • Publisher SDK
    • For App publishers
    • An SDK
      • Android
      • iOS
    • Compatibilities
      • iBeacon
      • SecureCast™
    • Beacon Signalling
      • detection
      • ranging
      • event logging
      • etc.
    • Consumer Messaging
      • Frequency Capping
      • Regulatory Compliance
  • Publisher Console
    • Inventory Management
    • Ad Operations (notifications, alerts, etc.)
    • Analytics
    • Participation in Swirl Audience Network
    • Partner Permissioning
  • Retail
    • Swirl Targeting Wizard™
      • a rules engine specifier
      • location
      • day part
      • profile management
    • Campaign Management
      • Something about bucket testing

Promotions

Archaeological order, derivative works on top, older material below

Actualities

Swift Beacon PlatformSwift Retailer PlatformSwift Publisher PlatformSwift Advertiser Platform

Via: backfill

Gimbal

Gimbal, Inc.
11010 Roselle St, Ste 150
San Diego CA 92121-1226
United States

Gimbal Store

Gimbal Proximity BeaconsGimbal Proximity Beacon Specification Sheet

Gimbal Proximity SDK Deployment ConceptMonetization

  • This is a “for rent” scheme
    You don’t own these devices or control the service, not really. PAYGO-in-the-Cloud.
  • Use of Gimbal beacons requires a Gimbal Developer Account
  • Fees follow the count of user count
    the number of users whose devices use the Gimbal SDK and contact the Gimbal backend servers.

References: Daniel Eagle

Risks

  • Accuracy: maybe.
  • Cost: seems cheap enough
  • Proprietary Lockin: mild but definitely present; c.f. that library jarfile SDK.
  • Platform Lockin: iOS is definitly the primary
    Android seems a very very distant second thought.
  • Organizational Reliabliity: it’s a PAYGO-in-the-Cloud service model
    This seems to be the centerpiece risk issue.
    <quote>Also, in order for the SDK to work it has to call home to the Gimbal backend service once every 24 hours.</quote>

The devices, SDK & service are closed and single-supplier.  Your use is dependent upon the kindness & SLAs of Gimbal’s financial health.  Fear this and plan for this as you design. Envision that you’ll wake up some morning to read that they are shutting down the service (they can’t run it even at cost, they’ve sold it, they’ve found a better business model with someone else, they need to move offshore to get access to cheaper labor, etc.).

Products

  • Supports
    • Apple-native
    • Android
      • Client deployment is new & rough; beta.
      • Manager app is not available.
  • Line
    • Series 10
    • Series 20
    • Series 21
  • Gimbal Beacon Manager App (Apple only)
  • Beacon Proximity Beacon Series, specification; 1 page (all 3 products)
    • Bluetooth® Smart (aka Bluetooth 4.0 Low Energy)
    • Channels at 2.4GHz for non-connectable advertisements.
      • Channel 37 (2402MHz)
      • Channel 38 (2426 MHz)
      • Channel 39 (2480 MHz)
    • Compatible with iBeacon.
    • Configurable via Gimbal Manager/Gimbal Beacon Manager App
    • Modes
      • foreground
      • foreground/background
    • Levels
      • Low => -23dBm
      • Full => 0dBm, expect 164 ft (50m)
  • Gimbal Manager Servers

Specifications

Mentions

Promotions

Via: backfill.

Mentions

  • Eventbase
    • The app lets you meet people who are “nearby”
    • Concepts
      • indoor location
      • indoor geo-location
      • “hyper-local networking.”
    • Promotional Partners
      • USA Networks
      • something about experiential marketing at the conference
  • Jeff Sinclair, co-founder, Eventbase
  • Ben West,, co-founder, Eventbase.
  • Gimbal
    • spun out of Qualcomm
    • Transmitter units are $3-$50.

Actualities

(the Conference App)

Eventbase South by Southwest mobile app

Beyond Retail, Savvy Marketers Can Use Beacons in 2015 | Signal

Beyond Retail, Savvy Marketers Can Use Beacons;; (Signal); In Their Blog; 2015-03-19.
Nick Knise was an intern at Signal; he is an undergraduate at Northwestern University.

Products

Signal Products

A recitation
  • Signal Fuse Platform
  • Signal Open Data Platform
  • Signal Unfied Customer View

Previously

  • Stroking Data Gold: Apple iBeacons; Tomas Rodriguez (Signal); In Their Blog; 2014-10-22.
    Tomas Rodriguez is Product Marketing Manager at Signal.
    Mentions

    • Apple iOS 8
    • iWatch
    • iBeacon
    • Bluetooth
    • Something vague about privacy
    • Something about how a shopping cart appears on the lock screen when the marketers are pounding your box; attributed to Apple Insider.

Mentions

Brands

A recitation
  • Macy’s
  • Dockers
  • UGG

Demonstrations

a recitation
  • Airport of Copenhagen
  • Airport of Shanghai
  • Airport of Miami
  • National Slate Museum, Wales, UK
  • National Roman Legion Museum, Wales, UK

Referenced

Via: backfill

Bluetooth File Sharing no longer works in Fedora 20 with GNOME 3.10, but returns with gnome-user-share-3.10.1

Pafff!!  Gone.  But they don’t just come out and say that.  It used to work in Fedora 19 (GNOME 3.8) and Fedora 18 (GNOME 3.6) … it worked … it “just worked”  Now it’s just gone. You can send files outbound, but you can’t receive files on Fedora 20 (GNOME 3.10).

Yet…

; Bluetooth file sharing (ObexPush) in GNOME 3.10; In His Blog; 2013-11-12.
tl;dr → support was dropped

  • ObexPush server support is fixed in gnome-user-share 3.10.1,
  • ObexFTP server support is gone.

Yet … on Fedora 20, with updates applied

$ rpm -q -a | grep gnome-user
gnome-user-share-3.10.1-1.fc20.x86_64

Prior to gnome-user-share-3.10.1, this dialog in Preferences->File Sharing simply doesn’t work.  It does nothing and files sent from bluetooth devices (e.g. phones) are always refused.

The current GNOME documentation is irrelevant, out-of-date and wrong

Code