go-bluetooth

module
v0.0.0-...-f9b8134 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2019 License: MIT

README

go-bluetooth

Golang bluetooth client based on bluez DBus interfaces

See here for reference https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc

Features

The features implemented are

  • Discovery
  • Adapter support
  • Device support (SensorTag example)
  • GATT Service and characteristics interface
  • Adapter on/off via rfkill
  • Handle systemd bluetooth.service unit
  • Expose hciconfig basic API
  • Expose bluetooth services via bluez GATT API
  • Basic pairing support

Examples

The examples/ folder offer an overview of library

  • agent a simple agent to support pairing
  • btmgmt interface to CLI btmgmt
  • discovery find devices around
  • hci_updown HCI based communication example
  • obex_push send file to a device
  • sensortag_info Obtain data from a TI SensorTag
  • sensortag_temperature Obtain temperature from a TI SensorTag
  • service expose a bluetooth device with corresponding services
  • show_miband_info show informations for MiBand2
  • watch_changes register for notifications from a TI SensorTag

Note Ensure to install proper dbus rules on the system. For a dev setup use

sudo ln -s `pwd`/scripts/dbus-go-bluetooth-service.conf /etc/dbus-1/system.d/
sudo ln -s `pwd`/scripts/dbus-go-bluetooth-dev.conf /etc/dbus-1/system.d/

Setup

The library has been tested with

  • golang 1.11.4 (starting from v1.6)
  • bluez bluetooth v5.50 (starting from v5.43)
bluez upgrade

Bluez, the linux bluetooth implementation, has introduced GATT support from v5.43

Ensure you are using an up to date version with bluetoothd -v

See in scripts/ how to upgrade bluez

Development notes
  • Give access to hciconfig to any user (may have security implications)

    sudo setcap 'cap_net_raw,cap_net_admin+eip' `which hciconfig`
    
  • Create a dbus profile

    ln -s `pwd`/scripts/dbus-dev.conf /etc/dbus-1/system.d/go-bluetooth.config
    
  • Monitor activity

    sudo dbus-monitor --system "type=error"

  • View bluetoothd debug messages

    sudo service bluetooth stop && sudo bluetoothd -Edn P hostname

  • Enable LE advertisement (to use a single pc, you will need 2 bluetooth adapter)

    
      sudo btmgmt -i 0 power off
      sudo btmgmt -i 0 name "my go app"
      sudo btmgmt -i 0 le on    
      sudo btmgmt -i 0 connectable on
      sudo btmgmt -i 0 advertising on
      sudo btmgmt -i 0 power on
    
    

References

License

MIT License

Directories

Path Synopsis
examples
btmgmt
Example use of the btmgmt wrapper
Example use of the btmgmt wrapper
discovery
shows how to watch for new devices and list them
shows how to watch for new devices and list them

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL