Quantcast
Channel: balena Blog
Viewing all articles
Browse latest Browse all 31

Custom Device Support or… the Essentials for running balenaOS on your hardware

$
0
0

On July 24th, balena’s Alan Boris and Kenna Smith presented a webinar that explored hardware compatibility options for balenaOS as well as details about hardware selection for successful IoT projects. This post is a companion to that webinar and summarizes all of its content, however you can also watch the recording if you prefer!

General hardware considerations

In general, choosing an IoT device for edge computing starts with a prototyping phase. In this stage, many users start with a device they are familiar with that is readily available and has all of the capabilities needed for the project. 

For example, a Raspberry Pi is easy to obtain and has many options onboard like WiFi, Ethernet, GPU, etc… making it easy to get started with even if ultimately you choose another board for production. 

If your project requires CUDA, then working with an NVIDIA Jetson might make sense. In this case, you may want to prototype using your target Jetson SOM in one of NVIDIA’s developer boards rather than going straight to a custom carrier solution.

Once your project starts to scale past a hundred devices or so, hardware decisions made at the prototype stage can become more consequential. Thinking about and experimenting with options such as these are worth considering:

  • Storage Options:
    • Will you perform many writes on your storage medium (i.e. video capture, blockchain, etc.)? If so, maybe SD cards are the right solution for more efficient replacement.
    • Will you need your storage medium to be more robust over time, with fewer writes (i.e. occasional updating of sensor data)? If so, maybe eMMC or NVMe are better options for your application.
  • Real Time Clock (RTC):
    • Will your hardware ever be offline but need to keep time for authentication purposes?
    • Will any of your application logic require accurate time?
  • Machine learning (ML) capable hardware:
    • What libraries are you using in your applications? They likely require specific hardware or benefit from some hardware capabilities over others.
    • What is the most cost effective option as you scale – onboard NPU/TPU/GPUs? A USB dongle? A HAT or cape?

Hardware options for balenaOS – Part 1: Already compatible devices

Once you have made your high-level hardware decisions as described above, it’s time to choose your device to run on balenaOS. We support over 80 different device types, so hopefully one of them works for you. If that’s the case, you should be all set!

Even with the right device type though, you may still need to add a driver to enable certain on-board peripherals. The following resources are available to help you load driver modules (known as kernel modules) onto your balena device:

Hardware options for balenaOS – Part 2: Adding DTBs for compatibility

If you want to use a device that is not on our compatibility list but is similar to a supported device, you may just need to add a Device Tree or Device Tree Overlay (DTO). A device tree describes the hardware components of your device so the kernel can use and manage those components. 

For instance, the Raspberry Pi CM4 I/O board is a reference carrier board for the Raspberry Pi CM4 compute module. Since we support this board, there is a version of balenaOS for this device type. (A balena “device type” is a supported board on our compatibility list.) If you want to use a different CM4 carrier board, try booting it with the similar CM4 I/O board device type OS. If it boots but not everything works (such as WiFi or audio) then you may be able to obtain full board functionality by adding a device tree or overlay.

Some (but not all) balena device types, such as the NVIDIA Jetson Orin and Raspberry Pi, allow you to add a device tree to activate non-working components of a device. Here are the high level steps to add a DTB:

  • The bootloader will look for your DTB in: /mnt/sysroot/active/current/boot
  • In the dashboard, select that DTB in the Device’s Configuration panel
  • If things work as expected, reach out to balena to have the DTB permanently added to our Device Type repository

Hardware options for balenaOS – Part 3: Custom Device Support

Sometimes, even with the two options detailed above, you may need to look into Custom Device Support (CDS.) Balena can introduce you to our integration partners who have been trained to make devices compatible with balenaOS. Your manufacturer may also be willing to work with us to support their hardware. In that case, you can share with them the minimum compatibility requirements for balenaOS:

  • 1GB RAM or greater
  • 4GB Storage or greater
  • Block-based storage (i.e. NAND/NOR flash not supported)
  • Currently supported Linux kernel, preferably LTS (Long Term Support); ex. v5.15 (LTS end of life in Oct 2026)

Custom device support makes sense when your fleet has guaranteed growth and you have very specific needs, such as:

  • To add protections from harsh environments
  • To add functionality 
  • To enable hardware that has Supply chain guarantees
  • To enable hardware that benefits from economies of scale
  • When unnecessary functionality needs to be removed due to costs at scale
  • When a Manufacturer who is unfamiliar with Balena determines they want to support balenaOS on their hardware

If you fall into this category and want to explore CDS further, fill out our Custom Device Support form and then contact us to let us know you’ve submitted the form. We’ll review your submission and from there we’ll start a discussion with you to understand your needs more fully and pair you with the right integration partner for your needs. Once hardware is received by the partner, they will review your hardware and estimate the cost of the work to be done; this process takes about a week and includes some of the work needed to bring compatibility to the hardware. The partner will then provide a quote for your review, and if agreed upon, they will begin the process of enabling balenaOS compatibility.

The typical costs for CDS are based upon a few factors such as:

  • There will be an initial investigation charge to ensure your hardware can work with balenaOS and is able to be added to our automated testing suite, known as AutoKit.
  • That investigation typically results in 40 hours (8 hours x 5 days) of chargeable engineering work.
  • At this point, engineers will have a better estimate of the total time to complete balenaOS compatibility and that estimate will be shared.
  • Customers should expect the costs to be no less than $10,000.
  • For complex hardware, hardware which doesn’t yet have Yocto support, or which doesn’t yet have peripheral support you can expect to be charged more due to additional time and materials required.

Note that for existing customers, your account manager will be your guide through this process.

Some customers have inquired about performing CDS themselves, which is possible if you have the proper skills, although it is not recommended. Our partners are trained by balena’s OS and Device engineers and have direct lines of communications with us for any complications during the process which are not available to our community at large.

Reaching out

If you have further questions about device compatibility or customization, feel free to contact us through this form, e-mail us, or ask in our forums.

The post Custom Device Support or… the Essentials for running balenaOS on your hardware appeared first on balena Blog.


Viewing all articles
Browse latest Browse all 31

Trending Articles