iot-gate-imx8plus boot


I have previously asked for new OS version for my device which i have received:
balena os versions iot-gate-imx8plus

I have taken the latest image, preloaded it with a release, and flashed it to my device according to the instructions in the guide when adding a new device to the imx8 fleet.

The 1st issue I am facing right now is that i cannot boot:

From what I can tell, it’s trying to do secure boot, and fails.
I assume it is either because the original image (OS v4.0.28), or the image that was created after I preloaded my fleet release into the v4.0.28 is not signed.
Again i assume v4.0.28 is configured to attempt a secure boot by default, or else i don’t know what the boot fails.
I am not sure if this was the case in the older version.

The 2nd issue now is that i can’t flash a new image, because i can’t enter the uboot shell.
The uboot prompt doesn’t appear, it does not wait for a key press, and any keys i press quickly does not result in u-boot shell appearing. Just continuing the normal boot which hangs.

I assume uboot either in some quiet mode / delay off mode or something else.

As you can see in the pic i attached, there is no waiting for key press or any u-boot prompt.
I have followed the steps here provided by @acostach
Install Balena OS to Compulab IMX8PLUS
As well as steps here:
IOT-GATE-IMX8PLUS U-Boot: Recovery
I have flashed the u-boot file successfully several times using ‘uuu’ program, however the boot flow remains the same with u-boot being quiet and booting straight into kernel which hangs.

so right now i have 2 soft-bricked devices which i cannot seem to restore even when flashing a new u-boot (presumably u-boot env or some other config is not changed so the error continues)

Can you provide assistance for these 2 issues?
Thank you.

Just wanted to update on my own issue:

The 2nd issue that i had problems entering the u-boot shell after flashing the image with uuu.
I understood that the u-boot image is not actually flashed, just somehow copied during run.

I managed to get into the u-boot shell:

  1. connect the terminal + prog usb cables
  2. run the command: uuu imx-boot_4g (uuu will actively wait for the connection to appear)
  3. power on the board (uuu will begin working)
  4. quickly press a key to enter the u-boot shell

The problem is that if i follow the instructions here:
i flash the uboot, and then reboot the machine, it reverts to the old boot, which does not allow me key-press to stop boot.
For some reason it does not keep the u-boot image i flashed.

I will now try flashing the default v4.0.28 image and see if it boots.

1 Like

Thanks for sharing all the process @ben

Keep us posted!

Device: iot-gate-imx8plus
Balena OS version v4.0.28 does not boot correctly, and is stuck as seen in the pic above
Balena OS version v2.113.31+rev1 boots correctly.

The freeze happens after printing the lines:
caam_jr 30901000.jr: failed to flush job ring 0
caam_jr 30903000.jr: failed to flush job ring 2

And in the correct version (v2.113.31) i get a login prompt after those lines

Hi @ben , production images downloaded from balena cloud do not have u-boot shell enabled, nor a uart login prompt. Development images still do not have u-boot shell enabled, but do show the uart login. The only u-boot with built with shell enabled is the one present in the github repository, which you can load with uuu.

We do not support secure boot on the iot-gate-imx8plus, so this shouldn’t be the reason for it not booting. Can you please tell me if you flashed v4.0.28 development variant and if the board appears online in your dashboard account with Ethernet plugged, even if you don’t see the uart console prompt?

Hi @acostach ,

I flashed v4.0.28 development image and connected it to ethernet cable, and it booted successfully and gave me a login prompt.

We may need to be able to communicate with the device without internet connection.
During production inside the factory, we have a service that is running on Balena, that allows us to configure some private settings.
This is before the device is shipped to the client, which may take a few months…

After booting with internet connection over ethernet, i reboot the machine and disconnect the cable, and the board boots successfully again (with no connection)
I assume the first connection is required to communicate the balena-cloud to generate UUID and other configurations?
If i use “balena config inject”, on the image, before flashing it, would that solve the problem of the device booting without internet connection?

Device: iot-gate-imx8plus
Balena OS version v4.0.28 Production boots correctly if it is connected to the internet (over eth at least)

  1. Will it work if i use balena config inject on the image?
  2. Will it work if connected to local LAN without internet connectivity?

Balena OS version v4.0.28 Development boots correctly without internet connection as well.

For production:
We want a Balena Production OS image that can boot and work without internet connection (but with LAN connection), so we can send commands to one of our services.

  1. We would preload the device with our release
  2. We would use “balena device register” to preregister the device in balena cloud
  3. We would use “balena config inject” to set a UUID/Config for the image before flashing

That way that device is preloaded and preregistered, but we do not have to activate it to work with it.

Hi Ben,

Will it work if i use balena config inject on the image?


Will it work if connected to local LAN without internet connectivity?

If you flashed a development image or used balena config inject with a config.json that has “developmentMode”:“true”, or, if you used balena os configure <balena_image> prior to flashing the image, you will have a login prompt on the uart and will be able to ssh to the device locally using port 22222.

Once you don’t need root access anymore, you can modify the config.json on the device, at runtime, to set developmentMode to false. This will disable root login and from that point on the board will be accessible trough balena-cloud only. You can do this with a preloaded and pre-configured image as you mentioned at production steps 1-3.

Please don’t forget to flash the production imx-boot found on the resin-boot partition to the device, as instructed in the image download modal. This is important for production devices, because the production imx-boot does not allow shell access in u-boot.

1 Like