Enabling Bluetooth-to-Cloud on the Renesas DA14695

This week we enabled internet uplink over Bluetooth for the Renesas DA14695. This approach uses Golioth’s Bluetooth-to-Cloud service which leverages a standard gateway device to read data from any Bluetooth hardware capable of using the Generic Attribute Profile (GATT), which is basically all Bluetooth devices.

With this setup, the gateway periodically scans for devices with a predetermined characteristic. When these devices connect to the gateway, they use Golioth’s Pouch protocol to package sensor (or any other data) and send it to the cloud. In addition to today’s Renesas device, we’ve already demonstrated this functionality with Nordic, STM, and NXP devices.

Using the DA14695 with Zephyr

Renesas da14695 propped against a wireless earbud case.While the Bluetooth-to-Cloud service doesn’t require that leaf nodes run Zephyr, we have built the first example applications on Zephyr. The first thing we need to do is get ready to build for the Renesas DA14695.

Renesas da14695 jumper settings for 3.3V operationMy device shipped with a jumper installed on J2 between pins 2-3. This runs the board in 5V mode, but I found that Zephyr applications like basic/blinky didn’t want to run (as if the clock was not running). This was resolved by moving the jumper to J3 between pins 1-2 which connects the chip to the 3.3V rail.

While the board includes Bluetooth support in Zephyr, it requires that you fetch the binary blob and turn on the Bluetooth peripheral in the devicetree. I also found that Bluetooth functionality required Zephyr 4.1.0 or later. First, let’s use west to grab the binary blob.

west blobs fetch hal_renesas

With the binary blobs in place, add an overlay file for this board to your project. Note that we are both turning on the Bluetooth peripheral, and add it as a “chosen” in the overlay file.

/ {
    chosen {
    zephyr,bt-hci = &bt_hci_da1469x;
  };
};

&bt_hci_da1469x {
  status = "okay";
};

Finally, to flash the device we need to install the eZFlashCLI which can be installed using pip.

pip install ezFlashCLI

If you want to test your Bluetooth functionality at this point, I recommending trying out Zephyr’s observer example. It simply scans for Bluetooth devices and reports their mac address in the serial console.

Building Golioth’s Bluetooth-to-Cloud Example

As shown in the video, there are a couple of tweaks we need to make to get the example code to build for this board:

  1. Use Zephyr 4.1.0
  2. Add the Renesas HAL libraries

Make sure you have already completed steps 1 and 2 for setting up a gateway in the Getting Started section of the BLE Private Access application. When you get to Step 3, follow the instructions to initialize and update the project. But pause at this point to edit the pouch/west.yml file as follows:

# Copyright (c) 2025 Golioth, Inc.
# SPDX-License-Identifier: Apache-2.0

manifest:
  version: 0.8

  projects:
    - name: zephyr
      revision: v4.1.0
      url: https://github.com/zephyrproject-rtos/zephyr
      west-commands: scripts/west-commands.yml
      import:
        path-prefix: deps
        name-allowlist:
          - zephyr
          - cmsis
          - hal_nordic
          - hal_renesas
          - mbedtls
          - mcuboot
          - segger
          - tfm-mcuboot
          - tinycrypt
          - trusted-firmware-m
          - zcbor

The lines highlighted above show the changes to this file. The Zephyr version was updated to 4.1.0 and the hal_renesas library was added to the name-allowlist.

Let’s update for these changes to take effect and also ensure we fetch the binary blob and install the flashing tool as discussed in the previous section.

west update
west blobs fetch hal_renesas
pip install ezFlashCLI

Next, copy the overlay file shown in the previous section to pouch/examples/ble_gatt/boards/da14695_dk_usb.overlay. We’re now ready to build and flash the application.

west build -p -b da14695_dk_usb pouch/examples/ble_gatt -- -DCONFIG_EXAMPLE_DEVICE_ID="REPLACEME"
west flash

The device will reboot and begin running. It’s worth mentioning that the build command above includes a REPLACEME placeholder that needs to be replaced with the Golioth DeviceID for this hardware. Without this, the cloud will not recognize this as a valid device when receiving data via the gateway.

Golioth Network Topology Map shows da14695_dk_usb connecting to the gateway

Sending Actual Sensor Code

In the video we demonstrate going a step further by connecting a BME280 temperature, pressure, and humidity sensor up to the Renesas DA14695 so that we can send actual sensor data. It is actually quite simple to add data to the upload.

Let’s look at the pouch_event_handler() callback. You can see in this function we are packaging up some JSON code to send a (simulated) temperature value. This payload may be replaced with any valid JSON, just be sure to change both the JSON string and the length in the write API call.

static void pouch_event_handler(enum pouch_event event, void *ctx)
{
    if (POUCH_EVENT_SESSION_START == event)
    {
        pouch_uplink_entry_write(".s/sensor",
                                 POUCH_CONTENT_TYPE_JSON,
                                 "{"temp":22}",
                                 sizeof("{"temp":22}") - 1,
                                 K_FOREVER);
        pouch_uplink_close(K_FOREVER);
    }

    if (POUCH_EVENT_SESSION_END == event)
    {
        service_data[ARRAY_SIZE(service_data) - 1] = 0x00;
        k_work_schedule(&sync_request_work, K_SECONDS(SYNC_PERIOD_S));
    }
}

Sensor data received from da14695 over bluetooth gateway

Your Bluetooth Devices On the Cloud, Right Now.

Golioth has already solved the complexity of transferring data from your Bluetooth fleet to the cloud. By installing a gateway device, you can automatically scan and upload that data at a cadence of your choosing. Take it for a spin today and let us know how it goes!

Mike Szczys
Mike Szczys
Mike is a Firmware Engineer at Golioth. His deep love of microcontrollers began in the early 2000s, growing from the desire to make more of the BEAM robotics he was building. During his 12 years at Hackaday (eight of them as Editor in Chief), he had a front-row seat for the growth of the industry, and was active in developing a number of custom electronic conference badges. When he's not reading data sheets he's busy as an orchestra musician in Madison, Wisconsin.

Post Comments

No comments yet! Start the discussion at forum.golioth.io

More from this author

Related posts

spot_img

Latest posts

Upcoming Webinar – Surprise! It’s an IoT Medical Device

Golioth will join Marcus Engineering in a webinar on July 16th to discuss how newer regulations (CRA, Cyber Mark, PSTI) impact medical devices, and how almost all software-based devices need to be thinking about these regulations in the coming years.

Enabling the MCXW71 (NXP) with Golioth’s Bluetooth-to-Cloud

The NXP FRDM-MCXW71 works with Golioth's Bluetooth-to-Cloud capabilities; that means it can communicate back through a standard gateway to the cloud and send data like any other device on Golioth.

tinymcp: Unlocking the Physical World for LLMs with MCP and Microcontrollers

Today we are launching tinymcp, a Model Context Protocol (MCP) server and framework that enables any connected device to expose remote functionality to Large Language Models (LLMs).

Want to stay up to date with the latest news?

Subscribe to our newsletter and get updates every 2 weeks. Follow the latest blogs and industry trends.