Using Bluetooth

gokrazy has limited support for Bluetooth. The usual Bluetooth utilities (bluez) have a lot of dependencies that are not available on gokrazy and those are out of scope here. But the basic Bluetooth hardware are supported on low level. This is useful in particular for applications using Bluetooth LE natively in Go.

To enable Bluetooth in gokrazy, first add the github.com/gokrazy/bluetooth package to your gokrazy instance:

gok add github.com/gokrazy/bluetooth

The github.com/gokrazy/bluetooth package loads the appropriate kernel modules and firmware required.

Example program

As demo we’re using the bluewalker Bluetooth LE scanner utility to show that Bluetooth is working:

gok add gitlab.com/jtaimisto/bluewalker

Then, open your instance’s config.json in your editor:

gok edit

And configure Package config: Command-line flags:

{
    "Hostname": "blue",
    "Packages": [
        "github.com/gokrazy/fbstatus",
        "github.com/gokrazy/hello",
        "github.com/gokrazy/serial-busybox",
        "github.com/gokrazy/breakglass",
        "gitlab.com/jtaimisto/bluewalker"
    ],
    "PackageConfig": {
        "gitlab.com/jtaimisto/bluewalker": {
            "CommandLineFlags": [
                "-device=hci0"
            ]
        }
    }
}

Then, deploy as usual:

gok update

Once deployed, you can see Bluetooth events being received in the bluewalker output.

Bluewalker output in gokrazy web interface