Boot Apalis i.MX8 from SD card

Will the Apalis/i.MX8 attempt to boot from from an SD card with the imx_boot file flahed at offset 32k? This is possible with the NXP iMX8 board but doesn’t appear to work with the Toradex setup.

I am able to erase mmc 0:1 and recover with with an EasyInstaller image so I know the HW works.

Hey @dfurtney,

Can you tell us a bit more about what you are trying to achieve?

You can look at the image.json file to see how the partitions are configured and see some configuration options here: (see block devices and partitions)


With an NXP imx8 dev board I was able to create a SD card that the board would boot from. The card has imx_boot programmed at 32k, a fat partiton for the Image.gz and .dtb file and an ext4 partion with the root file system.

The Toradex board doesn’t appear to “boot” from the SD (or I have something wrong). I will take a look at the .json file. Thanks.

Hey @dfurtney,

A few more questions if you don’t mind.

What carrier board you are trying to boot the apalis imx8 with?

The image that you are trying to boot onto the Apalis imx8, How was this image created? Via our reference image and yocto?


Sorry, haven’t been very thorough here. Yes, its an Apalis 1.1 eval carrier and an iMX8QM module.

I have been using the source build workflow and tried taking the pieces from that to create the SD card image like the NXP board uses.

My workflow right now is to build toradex-linux (I’m adding driver modules) and integrate that into an EasyInstaller image that is put on an SD card. I then use u-boot to erase eMMC, reinstall EasyInstaller via the recovery script and finally load my new EasyInstaller linux build. It works, but would be easier for our environment if I could just load the SD and boot.

Thanks for your help.

Hey @dfurtney,

No worries!

One thing to note is that the Toradex Easy installer runs in RAM, so there no need to erase the eMMC when running the recovery script.

Also you should be able to boot from SD, if it’s setup correctly with a Toradex image + access to U-boot.


Erasing eMMC is the only way I can get the USB OTG to activate. For this I erase 0-0x4000 on device 0:1. Not sure if the issue is with my laptop or the target hardware though.

Hey @dfurtney,

That is a bit strange. Assuming you are following the serial debug info here. Have you repurposed any of the pins that are associated with UART1 port? This is the default linux debugging UART.


I’m 100% relying on the serial UART. I haven’t changed any pin that I know of.

From the docs it looks like the expectation is that the usb otg (USB01_CL) should activate if power is applied but I don’t get that. This has been consistent with using both Torizon and the source build of the core linux.

Hey @dfurtney,

Were you able to solve this?

Can you look at the boot sequence priority. Are you booting from external SD or USB? This may be the cause unto why the internal flash memory needs to be erased. Again, i’m not sure on the offset.


The following devices are scanned in order:

  1. External SD card.
  2. Internal flash memory (raw NAND or eMMC). …

I am using an external SD card and the above is exactly why I expected it to take priority. It hasn’t really been an issue as I have moved on to more painful activities like trying to get vxWorks to boot on the Apalis.