Bluewalker - Simple BLE scanner for Linux with support for reading Ruuvi tag data


I implemented a simple BLE scanner for Linux using go and the raw HCI sockets. It can be used to scan any BLE Advertising data, and it can also decode ruuvi tag data. Bluewalker allows you to dump the data as JSON allowing further processing.

Source code available in gitlab:

Pi Zero Ruuvi Gateway implementations

This is a really promising project and maybe something we could use on our “official” BLE-WiFi gateway.

Have you tried to run this on Raspberry Pi Zero W?

@Scrin what do you think about advantages compared to hcitool and hcidump?


When I heard about this on the Ruuvi Slack for the first time and read a bit more about it, I immediately bookmarked it for further study as the methods used by Bluewalker sound like they could be a viable replacement. There are already feasible replacements for hcitool, but so far I haven’t seen any feasible replacements for hcidump until now, the raw HCI sockets may be the answer.


I’ve used bluewalker with both Raspberry Pi 3 and Raspberry Pi Zero W without any problems.


It seems like the only way you can get all advertising data to user space in Linux is raw HCI sockets as the bluez stack D-Bus API does not seem (haven’t really checked for a while, though) to have any API for that. The problem, of course, is that with raw HCI sockets you are bypassing the Bluetooth host implementation on Linux and have to write the relevant stuff yourself.

The bluez project does have a replacement for hcidump called btmon, it is great for debugging, but I felt that screen scraping AD data from one of those was a bit … iffy.