This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

OTA DFU from OSX/Windows/Linux

Hi,

With the latest SDK v 14.2 is it possible to do OTA updates to nRF52 from OSX/Windows/Linux without the use of additional DK? I understand that for iOS and Android we can use nRFConnect or nRFToolbox to update firmware over the air. I am particularly interested in this as we are in the process of evaluating nRF52 for a custom hardware which will require to have OTA update support from mobile and PCs.

Does this library on your github do OTA for OSX and iOS - github.com/.../IOS-Pods-DFU-Library ? Is something similar available for other platforms?

Parents
  • For anyone finding this thread from a search: this is doable today, and it
    doesn't need a second DK.

    We built a small CLI in Go for exactly that use case:
    github.com/.../ed-nrfdfu

    It runs Nordic Secure DFU over BLE from the terminal using the host's own
    Bluetooth adapter — no connectivity dongle. The BLE layer goes through
    tinygo.org/x/bluetooth, which maps onto BlueZ on Linux, CoreBluetooth on
    macOS and WinRT on Windows, so the DFU protocol code above it is the same
    on all three.

    Being upfront about the state of it: it's a proof of concept that we run
    daily on Linux/BlueZ. The macOS and Windows backends are implemented and
    build, but we haven't validated them against real hardware yet — so treat
    those two as untested rather than as working.

    One platform difference worth knowing if you go this route: CoreBluetooth
    does not expose peripheral MAC addresses, it hands you a system-generated
    UUID instead. So on macOS you would target the device by advertised name
    rather than by MAC. WinRT does expose the address, so MAC targeting should
    work on Windows — untested, same caveat.

        go install github.com/E-DEVICE/ed-nrfdfu@latest

        ed-nrfdfu --mac "AA:BB:CC:DD:EE:FF" --dfuPath firmware.zip
        ed-nrfdfu --bleName "MyDevice_DFU" --dfuPath firmware.zip

    It expects the device to already be advertising in DFU/bootloader mode; it
    does not trigger the buttonless transition from application firmware.

    Apache 2.0. Feedback — and macOS/Windows test reports — very welcome.

Reply
  • For anyone finding this thread from a search: this is doable today, and it
    doesn't need a second DK.

    We built a small CLI in Go for exactly that use case:
    github.com/.../ed-nrfdfu

    It runs Nordic Secure DFU over BLE from the terminal using the host's own
    Bluetooth adapter — no connectivity dongle. The BLE layer goes through
    tinygo.org/x/bluetooth, which maps onto BlueZ on Linux, CoreBluetooth on
    macOS and WinRT on Windows, so the DFU protocol code above it is the same
    on all three.

    Being upfront about the state of it: it's a proof of concept that we run
    daily on Linux/BlueZ. The macOS and Windows backends are implemented and
    build, but we haven't validated them against real hardware yet — so treat
    those two as untested rather than as working.

    One platform difference worth knowing if you go this route: CoreBluetooth
    does not expose peripheral MAC addresses, it hands you a system-generated
    UUID instead. So on macOS you would target the device by advertised name
    rather than by MAC. WinRT does expose the address, so MAC targeting should
    work on Windows — untested, same caveat.

        go install github.com/E-DEVICE/ed-nrfdfu@latest

        ed-nrfdfu --mac "AA:BB:CC:DD:EE:FF" --dfuPath firmware.zip
        ed-nrfdfu --bleName "MyDevice_DFU" --dfuPath firmware.zip

    It expects the device to already be advertising in DFU/bootloader mode; it
    does not trigger the buttonless transition from application firmware.

    Apache 2.0. Feedback — and macOS/Windows test reports — very welcome.

Children
No Data
Related