How to Flash OS on Colibri iMX6

Hi Community,

We’re new to working with SoM modules and currently using a Colibri iMX6 module on a custom carrier board.

We want to install an OS onto the module, but we’re a bit confused by the different methods available. Here’s what we’ve explored so far:

Toradex Easy Installer (Tezi):It seems to require HDMI for GUI-based installation and Ethernet for downloading images. Unfortunately, our custom board currently doesn’t have HDMI or Ethernet support.
Prebuilt Images:We’ve come across multiple prebuilt images provided by Toradex, but it’s unclear which one is appropriate for our use case, and how to flash them — with or without Tezi.
Custom Yocto Build: We’re working on building our own image using the Yocto Project. However, we’re not completely confident we’re following the correct procedure, and we’re unsure how to flash the output image to the Colibri iMX6 module.

Our Questions:

  1. What are all the available methods to install or flash an OS onto the Colibri iMX6?
  2. What are the hardware and software requirements for each method (USB, serial console, SD card, etc.)?
  3. Is it possible to flash an OS if HDMI and Ethernet are not available?
  4. Can we use serial or USB OTG to flash a Yocto-built image?
  5. If using prebuilt images, how can we flash them both with and without Tezi?

Any guidance or links to documentation (especially for headless flashing methods) would be really helpful. We’d appreciate any tips, suggestions, or examples from your experience.

Thanks in advance!

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello and welcome to the Toradex Community!

Let me provide clarity on available OS flashing methods for your Colibri iMX6 module, especially in a scenario without HDMI or Ethernet.

1. Flashing Methods Supported

A. Toradex Easy Installer (Tezi)

  • Standard way to flash Toradex modules, including Colibri iMX6.
  • Typically uses HDMI for GUI and Ethernet for image download, but can also be operated in “headless” mode via serial console or VNC.
  • Prebuilt images are available in the Toradex image feeds.

B. U-Boot/Recovery Mode with Serial & USB OTG

  • Useful if you cannot use Tezi (e.g., no HDMI/Ethernet).
  • Involves using the serial console and USB-OTG port to flash the module directly with bootloader and images.
  • This is suitable for both prebuilt and custom Yocto images.

C. SD Card Flashing

  • Flashing images from an SD card using the bootloader console.

2. Hardware & Software Requirements

Method Hardware Needed Software/Tools Needed Notes
Toradex Easy Installer (GUI) HDMI display, USB keyboard/mouse, Ethernet recommended Tezi image (preloaded/SD/USB) Not required in headless setups.
Toradex Easy Installer (Headless) Serial console (UARTA), SD card or USB for image Serial terminal Image loaded via SD/USB.
Recovery/Serial + USB OTG Serial connection (UARTA), USB OTG cable imx6recovery.bat, serial terminal Used if Tezi can’t be started normally.
SD Card Serial console, SD card with image Serial terminal Board boots from SD, flashes from card.
  • Serial Console: 115200bps, 8N1, USB-to-UART adapter if PC/laptop lacks serial port.

3. Flashing Without HDMI/Ethernet

Absolutely yes!
You can install an OS without HDMI or Ethernet by using:

  • Serial console and SD card.
  • Serial console and USB OTG in recovery mode.

Toradex has designed these methods for use cases exactly like yours.

4. Flashing Custom Yocto-Built Images

Yes, you can use serial or USB OTG to flash your Yocto-built image. The typical process is:

  1. Enter recovery mode using serial console and USB OTG (type bmode usb in U-Boot).
  2. Use imx6recovery.bat to load a bootloader.
  3. Boot from SD card and enter the bootloader console.
  4. Use commands like:
    preparefs
    flashimage 0 <filename>
    
    (where 0 is the SD slot, and <filename> is your image)
    For details:
    Production Programming for iMX6 Modules | Toradex Developer Center

For custom Yocto builds, after building the image as per Toradex’s Yocto guide:

…you can flash it using the above recovery/U-Boot methods.

5. Flashing Prebuilt Images With & Without Tezi

  • With Tezi:
    • Load Tezi onto the module via USB OTG/recovery as described.
    • Images can be loaded via SD card or USB stick.
    • Operate Tezi in headless mode via serial (menu prompts) when HDMI is unavailable.
  • Without Tezi:
    • Use the serial/USB OTG method detailed above (“recovery mode” with imx6recovery.bat).
    • Alternatively, bootloader commands to load and flash images from SD card.

Key Documentation:


Summary/Next Steps:

  • You do not need HDMI or Ethernet for OS flashing.
  • All you need is a serial console and USB OTG cable (or SD card).
  • Follow the documented recovery flashing steps to get your OS image (prebuilt or Yocto) onto the module.

If you’d like, I can walk you through flashing a Yocto-built image or clarify any particular step. Let me know how you’d like to proceed!

Best regards,
Toradex AI Assistant.

Hi @tharun1!

The recommended way to flash an OS into the module is by using TEZI (Toradex Easy Installer). You can find a technical overview here. You do not need an HDMI or Ethernet, you can do it by using an external media (SD card or memory stick) and a VNC viewer to get the TEZI graphic application.

About the Yocto image, you can flash it with TEZI too. You only need to insert a memory stick into the carrier board with the image built tar file extracted in it, and the TEZI will recognize the image and show it on its feeds.

You can flash it without TEZI (as the Toradex AI said), but we strongly recommend that you use this tool, since it fully supports flashing Toradex modules.

The Toradex AI answer is reasonable, but I wanted to summarize it.

Feel free to ask if you have any doubts.

Best regards.

Hi @lucas_az.tx,

Thanks again for the support.

We’re new to SoM-based development and would appreciate a clear, step-by-step guide for installing an OS onto our Colibri iMX6 module, based on the hardware we have available.

Hardware Setup (Custom Carrier Board):

HDMI output available
USB port available where pin 135 USB_C_ID connected to GND
Debug serial port (UARTA) working
SD card slot available
Ethernet port available (but not using it currently)

Our Goal:
We want to install our custom-built OS onto the Colibri iMX6 module through our custom board.

We’re open to any method — whether Toradex Easy Installer (TEZI), SD card flashing, recovery mode, or USB OTG — as long as it’s reliable and beginner-friendly, and makes use of the hardware listed above.

Request:
Could you please:
Recommend one best-suited flashing method for our scenario,
Provide a complete step-by-step guide, assuming we are starting from scratch?

We’ve gone through various Toradex guides (on TEZI, U-Boot, USB OTG, etc.), but as beginners, it’s been confusing to identify the correct and simplest path forward.

We’re ready to follow your instructions exactly — just need a solid starting point.

Looking forward to your detailed guidance!

Best regards,
Tharun

Hi @tharun1!

In my opinion, the fastest and simplest way to flash an image is by using TEZI and, in your case, an SD card. These are the steps:

  1. Connect to the debug serial port using a serial terminal emulator.
  2. Start/Restart the module.
  3. Access the U-Boot terminal by pressing any key when the boot message Hit any key to stop autoboot: appears.
  4. Run the command bmode usb. On iMX6 modules, this command puts the module in recovery mode.
  5. After that, you can follow this guide to load the TEZI.
  6. Whenever the TEZI loads, you don’t need a display/monitor. Actually, the TEZI starts a VNC viewer server, so you can use any VNC viewer app to access its graphic application. I’m using Linux on my host PC, and I use and recommend Remmina, but you can use any app that suits better to you. Here are some examples.
  7. Then, copy your image to the SD card, and insert it into the module.
  8. The TEZI should automatically recognize the SD card and the image. It will show as an option to select and install.
  9. After the installation is done, you can restart the module, and you’ll have your custom image loaded.

Feel free to ask if you face any doubts or issues.

Best regards.

Sorry it’s been a while before returning to this subject.

I am really aiming to produce a solid automated direct programming process for our units fitted with the Colibri imx6 modules rather than using TEZI. This method should provide a much simpler route for reliable automation. The intent is that there is absolutely no user interaction for this process, and since we have several Operating System options for these devices it gives the automation the option to select the correct OS for the product.

Do you have any documentation showing how this can be achieved?

Many thanks,

James

Hi @jamesgjatkin!

Just to confirm if I understood it, what you want is a way to automatically install the OS in the module, without any UI or user interaction, right? In this scenario, will you install only one version of the OS, or will there be different versions?

I’m asking that because we have the autoinstall flag, which automatically flashes the desired image into the module, but it must be used with just one image per module, i.e., you can’t have two different images for the same module with the autoinstall = true, otherwise it can conflict, and I’m not sure how these images would behave upon installation.

For more information regarding this option, please refer to this article.

Best regards.

Hi,

We have several different options for the operating systems.

We have done this in the past with older technology where the programming from driven from the bootloader to download from a TFTP server into memory and then flash into storage.

Since this was controlled via application software hooking into the serial ports of the hardware it provides full flexibility with complete automation.

Personally I have used the autoinstall option utilising the SD card for engineering, but this is not viable for our production environment.

Any advice you can offer would be appreciated

Thanks,

James

Could you please elaborate? What exactly is the issue with this approach for production programming? If using an SD card is not suitable, you can alternatively use a USB stick or set up a network-based programming method.

Thank you for your reply.

The Colibri modules & blank SD cards are fitted into the end hardware during their manufacture and programmed in-situ. We have access to serial ports 1 and 3, along with USB OTG and ethernet.

Currently we do the following

  • Trigger a boot from USB via the bootloader and launch the TEZI Application
  • The API is then used to ensure the feed configured for the required operating system from the correct network location which then installs.
  • Once installed, we detect the completion from the serial port and conclude the process

Although this works for now, it has some issues.

  • The reliability of the process does not work 100% of the time
  • We have observed several occasions where the TEZI application launches and appears to freeze. There is no obvious reason for this and using VNC we can observe that the UI is completely non-responsive. Only a power cycles recovers it.
  • The API is not an officially published and therefore we cannot assume it will always be there, or that the format will not change over time

I am looking for a reliable and long term solution for the programming process.

Hi

Is there any advice or suggestions anyone could offer regarding this matter?

Many thanks,

James

Is anyone able to offer me any advice on this topic?

All new modules shipped from Toradex come pre-flashed with the Toradex Easy Installer (TEZI), which boots automatically on power-up. Therefore, you don’t need to boot from USB.
Then use a method described here - Production Programming for Linux | Toradex Developer Center

Hi

If a module has been programmed previously TEZI will not be present.

I need to provide a seamless solution that will be able to provide the flashing of an operating system (one of several possibilities, selectable by the software) onto a module that may or may not have previously been programmed.

Automating this this via interfacing with the bootloader seemed the most logical solution here so I was seeking guidance from Toradex on this method.

Is this something Toradex are not able to offer any assistance with?

Thanks

If you are using Torizon, you can take advantage of its integrated over-the-air (OTA) update system. If not, you may consider incorporating a third-party update solution into your Linux image. The method you are currently using is not supported by Toradex, and unfortunately, we are unable to provide guidance on improving it. However, you are free to explore that approach independently if the aforementioned solutions do not meet your requirements.