Recovery mode on Colibri iMX6 instructions

I’m trying to recover a Colibri 1.0A which does not boot anymore due to an error updating uboot.

mmc_load_image_raw_sector: mmc block read error
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
  • Board : Iris 1.1 SoM : Colibri iMX6DL
  • 512MB V1.0A

I followed the Preparation section.
Downloaded Colibri-iMX6_LXDE-Image_2.8b1.64-20171229.tar.bz2 and prepared a microSD card

Then I followed the instructions here to put Colibri in recovery mode.

I booted Colibri short-circuit the recovery mode pads.
MicroSD was NOT inserted during the process.

On the HOST PC I see

$ lsusb
Bus 003 Device 022: ID 15a2:0061 Freescale Semiconductor, Inc. i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode

Now I run ./ -d on HOST

$ ./ -d
Colibri iMX6 rootfs detected
config file <./imx_usb.conf>
vid=0x066f pid=0x3780 file_name=mx23_usb_work.conf
vid=0x15a2 pid=0x004f file_name=mx28_usb_work.conf
vid=0x15a2 pid=0x0052 file_name=mx50_usb_work.conf
vid=0x15a2 pid=0x0054 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0061 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0063 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0071 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x007d file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0076 file_name=mx7_usb_work.conf
vid=0x15a2 pid=0x0041 file_name=mx51_usb_work.conf
vid=0x15a2 pid=0x004e file_name=mx53_usb_work.conf
vid=0x15a2 pid=0x006a file_name=vybrid_usb_work.conf
vid=0x066f pid=0x37ff file_name=linux_gadget.conf
config file <./mx6_usb_work.conf>
parse ./mx6_usb_work.conf
15a2:0061(mx6_qsb) bConfigurationValue =1
Interface 0 claimed
HAB security state: development mode (0x56787856)
== work item
filename ../colibri-imx6_bin/u-boot.imx-recover
load_size 0 bytes
load_addr 0x00000000
dcd 1
clear_dcd 0
plug 1
jump_mode 2
jump_addr 0x00000000
== end work item
main dcd length 310
sub dcd length 30c

loading binary file(../colibri-imx6_bin/u-boot.imx-recover) to 177ff400, skip=0, fsize=53c00 type=aa

<<<343040, 343040 bytes>>>
succeeded (status 0x88888888)
jumping to 0x177ff400

Then promptly stopped the u-boot process on the Colibri

U-Boot 2016.11-2.8.1+g30a1208 (Dec 29 2017 - 00:38:56 +0000)

CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
Reset cause: POR
I2C:   ready
DRAM:  256 MiB
PMIC:  device id: 0x10, revision id: 0x21, programmed
*** Warning - bad CRC, using default environment

auto-detected panel vga-rgb
Display: vga-rgb (640x480)
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX6 DualLite 256MB
Net:   using PHY at 0
Hit any key to stop autoboot:  1

At this point inserted the microSD card and I followed the instructions

Colibri iMX6 # run setupdate
reading flash_blk.img
710 bytes read in 13 ms (52.7 KiB/s)
## Executing script at 12000000
reading colibri_imx6/flash_blk.img
4261 bytes read in 22 ms (188.5 KiB/s)
## Executing script at 12000000
enter "run update" to update the entire module

Because My first goal is to have a u-boot working on the Colibri I entered the follwing command

Colibri iMX6 # run update_uboot
reading colibri_imx6/u-boot.imx-spl
362896 bytes read in 40 ms (8.7 MiB/s)
switch to partitions #1, OK
mmc0(part 1) is current device

MMC write: dev # 0, block # 138, count 709 ... 709 blocks written: OK
Fuse 0, 5:     5062
Warning: Programming fuses is an irreversible operation!
         Updating to fast boot mode prevents easy
         downgrading to previous BSP versions.

Really perform this fuse programming? <y/N>

Here comes the first question: Why it is asking to program fuses?
Of course, I answered NO.

So at this point nothing changed and I wasn’t able to program the bootloader on the Colibri.

I also tried run update_spl with no success

Colibri iMX6 # run update_spl
reading colibri_imx6/SPL
48128 bytes read in 22 ms (2.1 MiB/s)
switch to partitions #1, OK
mmc0(part 1) is current device

MMC write: dev # 0, block # 2, count 94 ... 94 blocks written: OK

Again, So at this point nothing changed and I wasn’t able to program the bootloader on the Colibri.

So the ultimate question is : How can I recover my board?

Tank you

If you want to use old BSP’s you cannot fuse. The fusing comes with the version 2.6b1 BSP as shown here

However, if you do not fuse, you can’t upgrade to newer BSP’s. (2.6b1+)

I did not have to fuse my boards because they are rather new and the BSP was already recent enough. If you want to migrate definitely you should fuse your board.


Hi Joao,

I don’t care about fuses.

I need to recover my board no matter about fuses.

Is it possible?


If you just want to flash a brand new BSP just replay your steps and instead of denying the fuse programming, press yes. It should work if you follow the procedure.

Nowadays the easiest and most fool prove way to go about recovering any Colibri iMX6 module would involve using the Toradex Easy Installer as explained in the following article on our developer website.

I’ve read this.

Downloaded Linux LXDE Image (2.7 | 2018-01-04 | 129.4 MB)

Extracted it on the microSD

├── Colibri-iMX6_LXDE-Image.bootfs.tar.xz
├── Colibri-iMX6_LXDE-Image.rootfs.tar.xz
├── image.json
├── marketing.tar
├── SPL
├── toradexlinux.png
├── u-boot.imx

Inserted the microSD into my Iris with Colibri iMX6 and power cycle

Unfortunately the board continues to fail booting with this message:

mmc_load_image_raw_sector: mmc block read error
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

What do I have to do to recover my board?

I don’t know what exactly you think that microSD card would do to your module just like that. It will only be useful for the Toradex Easy Installer.

Therefore you will first need to put your module into recovery mode as explained in that this your read (hint shorten pads pointed at by red arrow and power-cycle). Then hook-up your USB device cable to the target and after having extracted the Toradex Easy Installer package you launch resp. recovery script as noted there as well. Then the Toradex Easy Installer should be launching. Should you for whatever reason not have a VGA compatible screen plus mouse and/or keyboard connected you may edit the image.json file on your microSD card and set the autoinstall property to true in order to do an unattended installation thereof.

Hi Marcel,
after almost eight hours I recovered the system.
The documentation is a bit cluttered IMHO and not so straightforward.

Thank you

Thanks for your valuable feedback.