New project: Ruuvi Gateway (previously Dongle)

My biggest issue when I tried to compile Otso’s code was wrong esp-idf version. The code compiles with v3.1, but not with v4.x version, which gets installed if you clone the code from github. In addition, if you use --recursive switch when cloning, all those submodules will be in wrong version and checking out esp-idf v3.1 after initialising them won’t downgrade them.

I’m not an expert in this topic, but here is how I finally got esp-idf environment working:

git clone
cd esp-idf
git checkout release/v3.1
git submodule init
git submodule update
pip install -U -r docs/requirements.txt
git describe --tags --dirty
-> v3.1.4-55-ge83bdf62c

There was also issues when esp32-ble2mqtt was compiling, but I’ll get back in them later.

1 Like

A Dongle update!

After prototyping with the ESP32, we’ve now started to build custom electronics. I’m working with its schematics as we speak.

Main features are:

  • nRF52 to listen BLE messages (!)
  • ESP32
  • WiFi
  • USB
  • Sensors (TBD)
  • Ruuvi Connector expansion port
  • Easy operation
  • All open-source

Main reasons for adding an nRF52 to listen Bluetooth messages are to have a

  • better antenna and
  • 100% duty cycle.

ESP32 has a shared antenna between WiFi/BLE and ESP32 modules have teeny-tiny PCB antennas.

Ruuvi Dongle will have a far more better BLE antenna and it’ll listen continuously in order to catch all the signals coming from nearby BLE beacons. ESP32 will provide a WiFi connectivity.

If you’re interested in contributing the firmware projects, give @otso a shout.


Hey @lauri!

Are you guys thinking about using Bluetooth class 1 or 2 for the dongle?

By default, the Dongle listens nearby broadcasting Ruuvi products and therefore it won’t transmit anything. AFAIK, the article you’re referring to is about legacy Bluetooth devices (not BLE).

ETSI EN 300 328 defines EIRP at 1 MHz bandwidth to be max 10 dBm. This means that in Europe, 10 dBm is the max tx power for a BLE transmitter.

I thought you were developing 2-way communication between the Dongle and the tags.
I know that the link is not about BLE but it applies the same logic (class 1 and 2).
The BLE limit by definition is +10dBm, but the NRF52 can already transmit at +8dBm.

@JON_BOY, have you used this Fanstel BWG832F gateway with RuuviTags successfully?

Dont you have to develop your own firmware for the Fanstel? If and when you do so, there will be no problem to use it to pick up Ruuvi packages.

A quick Dongle update:

Two new firmware projects (ESP32 + nRF52) have been started in cooperation with Offcode Oy.

Electronics are progressing well. Prototypes are aimed to be ready by the end of this year.

First mechanics design drafts are ready and will be published later.

Stay tuned for more info :slight_smile:


Thanks for the update Lauri. waiting for something to test :slight_smile:

I’ve lots of Ruuvitags in production in different places, I can be a tester volunteer! :slight_smile:

Great. I want tested it!. Congratulations

This looks awesome. Will you be able to flash the dongle with different Firmwares like you can the Ruuvitag? If so, what are you thinking about including as firmware?

I’d also love to see the dongle have the ability to broadcast BLE packets itself (I may be biased on this). What are your thoughts on that?

We plan to include bootloader in both ESP32 and nRF52, so you can upload your own code to both without any special equipment. There’s no plan for other firmwares at least yet, but usually porting FW from one nRF52 board to another is really quick unless new drivers for external sensors have to be coded.

1 Like

I found this really late, but this sounds great! While reading all the posts some things came to my mind.

  1. Related to this: “Advertisement data is sent via MQTT with topic “Ruuvi/{MAC_ADDRESS}/”.
    Is it fixed this way? I could think that it would be beneficial to determine the MQTT topics freely and utilizing parsing of the BLE messages. For example I might want to have different topics for different device types or physical locations or message content.

  2. Regarding what messages to forward. I would like to see filtering where any part of the BLE message could be used for whitelisting or blacklisting messages.

For both 1 & 2 maybe regular expressions would be powerful and simple enough? Is it user friendly enough is another question.

  1. Bigger topic… I would love to see this device function also as Bluetooth Mesh node with at least Proxy and Relay features, but ideally also Friend feature. I don’t know how easily it would be possible, but It would be great to create a network using e.g. Bluetooth Mesh light bulbs or any other devices and then have this or some of these gateways to get connection to Internet and have custom use cases utilizing the network.

  2. Form factor… I think the USB dongle is great. It’s easy to find USB chargers and even that is often not needed as USB sockets are “everywhere”. I think I would also benefit from PoE, but price is higher priority!

  3. For reference check:
    Here is also screenshot of the service config page:

Then some questions…

What kind of rough price point are you thinking of?
Do you have idea when the device could get out at least for testing?

Minew device has a lot beefier CPU and runs a really lightweight Linux if I recall correctly. We’re limited by the ESP32 which makes such comprehensive configuration impractical.

That’s good idea for sure, we’ll keep it in mind for future development

We initially considered PoE and Ethernet, but it would add quite a lot to the cost as the isolation transformer and PoE negatiation component tend to be expensive.

The dongle will be priced competitively, we’re aiming to have first prototypes in 2019 and will notify in this thread once they’re available for larger audience,

I see. Do you see any configuration possible even a static one where I could have each gateway post to predefined topic?

Looking forward to that!

A topic prefix configurable over the hotspot configuration interface was at least discussed at some point. Even if it’s not on first version we can consider adding the feature.

It does make subscribing to tags by their MAC address a bit more difficult, as the user needs to wildcard-subscribe to gateway topics to get the tag data unless they know which GW has the specific tag.

I’d say it is then up to the user. They may keep it same for each GW, but if they have 100 installations (e.g. sites or tenants) where each have 20 GWs, it would be nice to have topic per installation. A bit of hierarchy.


I noticed that some source code was added to the Ruuvi github.

In regards to, what SDK will this be using?



1 Like