Recently, I’ve been messing around a lot with Linux’s Bluetooth libraries BlueZ. It’s pretty much a breeze to use on Ubuntu, but on Fedora, I noticed some strange issues. I was able to pair devices with my computer just fine, but whenever I tried to do anything involving the service discovery protocol (SDP), I would experience problems.
As an example, the command
sdptool browse local will find all Bluetooth services registered on your machine. If I ran it, I got the error:
Failed to connect to SDP server on FF:FF:FF:00:00:00: No such file or directory
Huh? How come this works on Ubuntu but not Fedora?
As it turns out, the culprit is
bluetoothd, the Bluetooth daemon. Using SDP with
bluetoothd requires deprecated features for some silly reason, so to fix this, the daemon must be started with
bluetoothd -C (or
To have Fedora automatically do this on startup, first make sure Bluetooth is off by running
service bluetooth stop. Then edit
/usr/lib/systemd/system/bluetooth.service and look for
ExecStart=/usr/libexec/bluetooth/bluetoothd. Put ` -C
at the end of this line, save, and then run service bluetooth start`.
If all goes well, you should be able to run
sdptool browse local successfully.
You may need root access depending on what you’re doing with the SDP. Personally, I use
sudoliberally with Bluetooth stuff on Fedora just to be safe.)