Skip to content

scivision/pybluez-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyBlueZ Examples

Example Bluetooth tasks using the Python PyBluez module. Tested using BlueZ 5 on:

  • Raspberry Pi 2 with CSR bluetooth 4.0 USB adapter
  • Raspberry Pi 3 / 4 (on-board Bluetooth)
  • laptop with Ubuntu
  • Windows (Bluetooth classic, non-BLE only)

Linux

For Ubuntu <= 18.04 we use system Python 2.7 for ease of library install. If you have Anaconda/Miniconda, you can alternatively use conda-forge libraries.

  1. from Terminal:

    apt install python-pip python-bluez libbluetooth-dev libboost-python-dev libboost-thread-dev libglib2.0-dev bluez bluez-hcidump
    
    adduser lp $(whoami)
  2. setup Python code:

    python -m pip install -e .
  3. check that your Bluetooth devices are not blocked (should say "no"):

    rfkill list

Scan for bluetooth devices from Python

python bluetooth_scan.py

If no Bluetooth devices found in the PyBluez device scan, try each of the following:

hcitool scan

and:

bluetoothctl

scan on

If the second way finds devcies but not the first, you may have a chipset issue. I have noted this with Marvell hardware on Ubuntu 18.04. I did not look into a resolve for this, as I usually use other hardware.


If you get error

OSError: No such device

check that there is a Bluetooth adapter available:

hciconfig dev

The bluetooth adapter may need to be enabled:

hciconfig hci0 up

Non-Python Bluetooth examples

These example use Bluez directly from Terminal (without Python)

Bluetooth pairing

using Bluez5 bluetoothctl agent:

hciconfig hci0 up  # enables bt on computer
hcitool scan       # gets UUID of devices in pairing mode
hcitool dev        # get BT adapter uuid

bluetoothctl       # starts interactive prompt
scan on            # scans for UUID of device (BT and BLE) in pairing mode
pair uuid          # where "uuid" is what you found with scan
trust uuid
connect uuid       # after pairing, this is how you connect in the future

Notes

If you get the error

Creating device failed: org.bluez.Error.AuthenticationRejected: Authentication Rejected

then edit /etc/bin/bluez-simple-agent, changing "KeyboardDisplay" to "DisplayYesNo"

Also try:

bluez-test-device trusted <speaker uuid> yes

If connected but lacking sound, try editing ~/.asoundrc, pasting in:

pcm.btspkr {
   type plug
   slave {
       pcm {
           type bluetooth
           device "AA:BB:CC:DD:EE:FF"
           profile "auto"
       }
   }
   hint {
       show on
       description "BT Speaker"
   }
}
ctl.btspkr {
  type bluetooth
}

pcm.btspkr_softvol
{
   type softvol
   slave.pcm "btspkr"
   control.name "Bluetooth"
   control.card 0
}

# Using bluetooth as default :
pcm.!default {
    type plug
    slave.pcm "btspkr_softvol"
}

Bluetooth connect

hcitool cc <uuid>

I sometimes saw in Ubuntu that it disconnects after a second, maybe because system bluetooth menu is overriding with "off"?

Errors

Cannot open shared library /usr/lib/arm-linux-gnueabihf/alsa-lib/libasound_module_pcm_bluetooth.so

apt install bluez-alsa

bt_audio_service_open: connect() failed: Connection refused (111)

  1. edit /etc/bluetooth/audio.conf, pasting in:

    [general]
    Enable=Sink,Source,Socket
    Disable=Media
    
    AutoConnect=true
    SCORouting=PCM
  2. then:

    service bluetooth restart

Set Bluetooth speaker as default audio device

First test it works with:

mpg321 -a bluetooth  myfile.mp3

or:

mplayer -ao alsa:device=bluetooth myfile.mp3

Then, list your audio ALSA devices with:

aplay -L

and you can use:

alsamixer

References

https://bitbucket.org/OscarAcena/pygattlib

https://wiki.archlinux.org/index.php/bluetooth_keyboard

https://github.com/oz123/dude/blob/master/bin/speakersswitcher.sh

http://blog.scphillips.com/2013/01/sound-configuration-on-raspberry-pi-with-alsa/

https://wiki.debian.org/Bluetooth/Alsa

http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=92900

http://samtuke.com/2014/10/manually-pair-bluetooth-devices-on-linux-via-cli-nfc-workaround/

http://www.correderajorge.es/bluetooth-on-raspberry-audio-streaming/

http://www.ioncannon.net/linux/1570/bluetooth-4-0-le-on-raspberry-pi-with-bluez-5-x/

https://gist.github.com/dustywilson/8267078

http://www.correlatedcontent.com/blog/bluetooth-keyboard-on-the-raspberry-pi/

About

Example Bluetooth tasks using the Python PyBluez module

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Languages