Skip to content

Golang bluetooth client based on bluez DBus interfaces

License

Notifications You must be signed in to change notification settings

gbrayut/go-bluetooth

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-bluetooth

Golang bluetooth client based on bluez DBus interfaces

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

Status

The current API is unstable and may change in the future.

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

Examples

Check main.go or in examples/ for an initial overview of the API

Setup

The library has been tested with

  • golang 1.8 (minimum v1.6)
  • bluez bluetooth v5.46 (Note v5.43 is the minimum supported one)
  • ubuntu 16.10 kernel 4.8.0-27-generic
  • raspbian and hypirot (debian 8) armv7 4.4.x

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/dbus1/system.d/go-bluetooth.config
  • Monitor activity

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

  • View bluetoothd debug messages

    sudo bluetoothd -Edn

  • Enable LE advertisement

      sudo btmgmt -i 0 power off
      sudo btmgmt -i 0 le on
      sudo btmgmt -i 0 connectable on
      sudo btmgmt -i 0 advertising on
      sudo btmgmt -i 0 power on

TODO List / Help wanted

  • Add docs with examples
  • Add Device read / write and custom data converters
  • Unit tests coverage

References

License

MIT License

About

Golang bluetooth client based on bluez DBus interfaces

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.7%
  • Shell 1.3%