Skip to content
MCU Atlas
NRF52NRF52832Draft

Ruuvi Firmware: open sensor beacon firmware for RuuviTag (nRF52)

Official open firmware for the RuuviTag environmental sensor beacon (nRF52832) broadcasting BLE sensor data.

Difficulty:BeginnerCost:Source available

Key Facts

  • Chip: nRF52832
  • Sensors: temp, humidity, pressure, accel
  • Radio: BLE advertisements
  • Platform: Nordic SDK 15

About This Project

RuuviTag is a rugged Nordic nRF52832 sensor beacon measuring temperature, humidity, pressure and acceleration, used widely for home and industrial monitoring. This repository is the official C firmware (v3) built on Nordic SDK 15. Tags broadcast sensor data over BLE advertisements that phones, Raspberry Pis or ESP32 Bluetooth proxies can collect into Home Assistant or Grafana. A strong example of production-quality open nRF52 firmware.

Source & Attribution

Source: GitHub
License: BSD-3-Clause
Last verified: 10/16/2026
How to Build It
This is the official open-source firmware for the RuuviTag, an nRF52832 Bluetooth sensor beacon that broadcasts temperature, humidity, air pressure and motion. It's built on Nordic SDK 15. Use it to customise things like the advertising interval, history logging or motion sensitivity.

Parts Needed

  • RuuviTag sensor beacon
  • Ruuvi DevKit (or another SWD programmer with a TC2030 cable) for wired flashing
  • Phone with nRF Connect for over-the-air (DFU) updates
  • Computer with ARM GCC 7-2018-q2, Python 3.7+ and Nordic SDK 15.3

Steps

  1. 1

    Just updating?

    If you only want the stock firmware, download a release DFU zip and flash it over Bluetooth from your phone. No build tools are needed.

  2. 2

    Set up the toolchain

    Clone the repo with its submodules (git clone --recursive). Install the gcc-arm-none-eabi version the README specifies, and unpack Nordic SDK 15.3 into the project root.

  3. 3

    Customise

    Look in application_config/app_config.h for configurable settings, such as advertising interval, logging interval and motion sensitivity. Put your changes in the application-mode header listed there.

  4. 4

    Build

    Use Segger Embedded Studio (installed via nRF Connect for Desktop) and choose the Debug, Long Life or Release configuration. For repeatable builds, run make with a variant name, e.g. make ruuvitag_b.

  5. 5

    Flash

    Wired: connect the DevKit with the TC2030 cable and flash or debug from SES. Wireless: put the tag into bootloader mode and upload the generated DFU zip with nRF Connect.

  6. 6

    Tips

    Run make astyle before sending changes upstream. A mis-built image can drain the coin cell quickly, so check current draw if you changed sleep or advertising settings.

Parts List (BOM)
Complete parts list from the creator
complete
PartQtyRoleEst. PriceBuy
1tag$35–$45View
Estimated Total$35–$45 USD

Not included: 3D-printed case, wire, solder, USB cable

Download CSV

Related Projects

📷
ESP32Draft
Open firmware that makes cheap LoRa boards into an off-grid encrypted text mesh, paired with your phone.
Beginner·Cost varies·Code
4 parts listed
InfiniTime: open firmware for the PineTime smartwatch
Illustration
NRF52NRF52832Draft
The community FreeRTOS firmware that turns the $30 PineTime (nRF52832) into a fully open smartwatch.
Beginner·Cost varies·Code
1 part listed
nrfmicro: nRF52840 Pro Micro drop-in for wireless keyboards
Illustration
NRF52NRF52840Draft
An open Pro Micro-shaped nRF52840 board that lets you build wireless ZMK/QMK keyboards.
Intermediate·Cost varies·Code
2 parts listed