[Help] Installing BalenaOS on NPE X500 M3


I’m trying to install BalenaOS on a NPE X500 M3.
I think it should be possible to do so as support was added a while ago:

Does this mean that I can take the RPI3 or RPI4 image and use that or should I build an image myself specific to this device?

What I tried so far is flash the image on a USB stick and boot with that inserted. However I don’t have an HDMI cable at my disposal atm? I’ll go get one soon, maybe that gives more information.
Does anybody have any experience with this device? My searches didn’t really result in much hits…

The only other topic I found was this, but it’s more than a year old and still uses the Resin brandname: Resin.image build failed

Thanks in advance!

You should be able to create a NPE X500 m3 appliction on the dashboard and then just follow the instructions for balenaCloud as usual

1 Like

I completely didn’t see that, I’ll give it a try;

Ok I tried creating a NPE X500 m3 appliction and following the process.

If I connect an screen to the device I see a login prompt for “techbase” in tty1.
This is not what I expected to happen. I would have expected this image to just be flashed to the device and then the device would register itself inside balenaCloud.

Can I also take a RPI3 or 4 image to put on the device?

Also I don’t seem to be able to get the device to boot any other image now, it keeps showing the purple RPI logo with techbase login. I really mean purple, not pink like the normal RPI image.

Hi there, if the device has been flashed successfully and it has network connectivity (Internet) it should come up and register itself in the application from which you downloaded the image. Are you seeing the device in your application?

I do not see the device in my application.
I followed this guide: https://www.balena.io/docs/learn/getting-started/npe-x500-m3/go/

The guide mentions a SD card, but my device only has an USB slot.

Here is what I’m seeing when booting:

I can open a support ticket and grant support access if needed.

Looking at your photo, the device isn’t actually running balenaOS. It’s probably not even booting from the flashed device. Are you flashing a USB drive and plugging it into the device? If so, are there any boot parameters you can select in the firmware of this device to make it boot from USB instead of internal disk(s)?

Yeah I had the same hunch. I was unable to access an usb device so far.
I got a list of possible commands like ‘bootusb’ and ‘usb list’ or similar, but none of these worked.

I tried opening an account in their support portal but approval takes time.

update: I’m in the OS via credentials found here: https://cdn.shopify.com/s/files/1/1386/3791/files/npe_x500_quickstart.pdf

Now I need to find a way to reboot and boot from USB.

1 Like

OK, would you mind raising a query with the device manufacturer on the correct process for getting it to boot off a USB (assuming that’s the only option) and feed that information back to us?

Ok I hope I’m in contact with their support soon. I will update here. Thanks a lot for your time already!

Ok I found a way to instruct uboot to boot from the USB:

setenv boot_targets usb0 mmc0 pxe dhcp

This works, it detects my usb device, but it says the image is wrong or something?
I just flashed the application image to the USB pendrive using balenaEtcher.
I made a video and took a screenshot of the output:

it says something about “resin_set_kernel_root”?
I think everything till “SCRIPT FAILED: continuing…” is relevant. All text afterwards just boots into the default raspbian.


Looking at the screenshot you sent, then first one was Rasbian. Was this running off the USB drive of some other interface? I see that you have mmc0 listed in the boot order, is it possible the board has some onboard storage which should be used?

We have reached out internally to try and understand how this device is meant to be booted, as it’s not a common platform that most of us have to hand.

Before balenaOS, what OS did you already boot, and from which storage device did you do it?


This screenshot is of the boot order which is ran from uboot, the bootloader.
The first few lines (untill “… is now current device”) are regarding selecting usb0 als the first boot device.
Then it tries to boot balena (hence the reference to resin).
The boot fails and after “SCRIPT FAILED: continuing…” it indeed switches to mmc memory.
So this code ran in the bootloader which tried to go over each device in the boot order.

I flashed the BalenaOS image of my NPE X500 M3 application onto a USB pendrive.
I thought that the balena image would install itself on the onboard storage, just like it does on intel NUCs, but apparently this is not the case?

Here is some more info from the vendor on the storage and it’s layout:

NPE X500/9500 MMC contains two copies of Raspbian - recovery system and main system - which share no files.
The recovery system can be used to repair or reinstall the main system laced on bigger partition.
There is no difference between the two systems other than the size of their root partitions therefore all software and configurations can be easily copied and reused.
MMC memory is divided into four partitions.
First one contains firmware, u-boot, rescue kernel and device tree.
Second one is the rescue file system which is a very cut-down Raspbian.
Third partition is the official /boot partition visible on normal (non-rescue) system and it contains kernel and device tree for normal system.
Fourth biggest partition contains main file system.

MMC memory:
p1        p2       p3         p4
|     F |         |       |            R  |
| F   i |     R   | F   / |     N      a  |
| A   r | E   e   | A   b | E   o      s  |
| T   m | x   s F | T   o | x   r F    p  |
| 3   w | t   c S | 3   o | t   m S    b  |
| 2   a | 4   u   | 2   t | 4   a      i  |
|     r |     e   |       |     l      a  |
|     e |         |       |            n  |

The only OS I booted on the device was the default installed raspbian which is located on partition 4 of the MMC memory. I however am unable to install balenaOS in place of this raspbian OS.

Thanks for the help with this and I hope this info helps.

So looking into this device more, I think the way it should be done is to hook the CM3 module to the machine and flashing it’s eMMC with Etcher. I don’t think the NPE carrier board has a means to expose the eMMC as mass storage to your PC but maybe the NPE support team can advise how to write a disk image to the onboard eMMC :+1:

We noticed that using a community build of BalenaOS also costs money to certify for production use.
We therefore decided that we’ll be using BalenaFin with an extra relay on top of it.

Can somebody explain this a bit further, please?

If we use a community build we have to pay to use production mode?