Unbricking a Nitrogen6X or Sabre Lite i.MX6 board

Boot mode switches on Nitrogen6X If you’ve ever looked closely at the Sabre Lite or Nitrogen6X boards, you’ll see that there are two DIP switches and some notation on the silk screen indicating their use.
  • 00 – Fuses
  • 01 – USB
  • 10 – Internal
These switches can be used to override the normal boot flow and force a boot to the USB OTG port.

Under Linux

If you set the switches to the USB setting and reset the board or cycle power, you should see a “Freescale” device show up in lsusb:
        ~/$ lsusb
	Bus 008 Device 002: ID 044e:3017 Alps Electric Co., Ltd BCM2046 Bluetooth Device
	Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
	Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
-->	Bus 006 Device 012: ID 15a2:0054 Freescale Semiconductor, Inc.
	Bus 006 Device 006: ID 06cd:0119 Keyspan USA-19QW PDA
	Bus 006 Device 004: ID 04f2:0841 Chicony Electronics Co., Ltd
Combined with the right tools, this can be used to un-brick a board whose serial EEPROM has been trashed, or to program the serial EEPROM on a board which has never been programmed. Freescale has a tool (the Manufacturing tool) that will do this. It will allow you to program not only the serial EEPROM on a board, but also SD cards, NAND, and NOR flash you might have attached to your device. That’s pretty heavy-weight though. It also requires Windows, which isn’t present on many development machines, and it won’t run on an i.MX board. To address these issues, we built our own, and made the sources available on GitHub:

This tool is much more lightweight. In normal use, it simply loads a named file into RAM and executes it. If you run it like so, you can launch a U-Boot binary directly.

~/imx_usb_loader$ ./imx_usb u-boot.imx
If you’re running the older U-Boot (2009.08 code base), you’ll need to specify u-boot.bin.
~/imx_usb_loader$ ./imx_usb u-boot.bin
If everything goes as planned, you should see U-Boot launch (output on the serial console) If you’ve gone through all of this, you might ask how this un-bricks the board. It doesn’t. But once you have U-Boot running, you can use U-Boot to upgrade the serial EEPROM using the upgradeu command as discussed in this blog post:
  • u-boot-conventions-for-i-mx6-nitrogen6x-and-sabrelite

Build Details

To run imx_usb, you’ll need to have libusb installed on your machine. If you’re using an Ubuntu or Debian machine, you should be able to do this:
    ~$ sudo apt-get install libusb-1.0-0
To compile it, you’ll need the libusb headers, which can be installed by grabbing the -dev package:
~$ sudo apt-get install libusb-1.0-0-dev
And compiling it should just be a matter of grabbing the sources and invoking make:
~$ git clone git://github.com/boundarydevices/imx_usb_loader
Cloning into 'imx_usb_loader'...
remote: Counting objects: 131, done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 131 (delta 71), reused 127 (delta 68)
Receiving objects: 100% (131/131), 44.69 KiB, done.
Resolving deltas: 100% (71/71), done.
~$ cd imx_usb_loader/
~/imx_usb_loader$ make
cc -c imx_usb.c -o imx_usb.o -Wstrict-prototypes -Wno-trigraphs -pipe -ggdb `pkg-config --cflags libusb-1.0`
cc -o imx_usb imx_usb.o -lusb-1.0

Under Windows

See this post for details on how to use sb_loader.exe under Windows.

The function is essentially the same: sb_loader.exe can be used to download and run a U-Boot image and U-Boot can handle the rest.


117 Responses to “Unbricking a Nitrogen6X or Sabre Lite i.MX6 board”

  1. ericn July 18, 2012 2:22 pm #

    It appears that we inadvertently checked in a file named ‘mx6_usb_work.conf’ that contained support for auto-programming devices.

    If you downloaded before now and run across error messages about missing binary files, please grab the latest copy of the configuration file.

  2. Lili.Wang December 1, 2012 8:52 pm #

    hello , I have a question about auto load uboot from spi nor of i.mx6 sabre-lite board, would you give me same tip that I can auto boot from spi, i have MFG Tools and can download uboot to Ram and run it , but when i write uboot to addr 0 on SPI Nor, but Can’t run it on boot. please give me same help!! Thanks!!

  3. ericn December 1, 2012 10:37 pm #

    Our boards should have the boot fuses blown to select SPI NOR boot at reset time.

    Are you running a u-boot.imx file though USB or u-boot.bin. Since the u-boot.imx file doesn’t contain the 0x400 bytes of padding at the start, it wants to be programmed to offset 0x400.

    • Lili.Wang December 2, 2012 7:33 pm #

      Hello Ericn: Thanks for you reply, I have download the u-boot.imx by usb tools, and run it all right , but how can i write it to SPI NOR , i have use sf command to write it to 0 address, is’t right ? or it should write it to 400 addr ? Thank you !!

      • ericn December 3, 2012 6:34 am #

        u-boot.imx should be programmed at 0x400
        u-boot.bin should be programmed at 0

    • Lili.Wang December 2, 2012 7:40 pm #

      Another Question , I don’t find the boot fuses on the sabre lite board ,Can you tell me how can i Set the Boot fuses,Thank you .

      • ericn December 3, 2012 6:35 am #

        We’ve already programmed the fuses. You shouldn’t need to touch them.

        • Lili.Wang December 4, 2012 12:14 am #

          ok, I think i know about it, but how to programmed the fuses ??? by which tools ? or a software? Would you give me a tip. Thank you!!

          Best Regards .


  4. ericn December 4, 2012 11:43 am #

    imxotp is the U-Boot command.

    You can get some details by searching for imxotp here:

  5. Ed January 11, 2013 7:07 am #

    Has anyone used this imx_usb tool on a Windows machine? I have the source for both imx_usb.c and libusb and I’m able to build successfully on both windows and linux; however, on windows (W7) the call to libusb_open() fails with LIBUSB_ERROR_NOT_SUPPORTED (-12). It works fine on Linux.

    • ericn January 11, 2013 7:11 am #

      Hi Ed,

      No. Nobody has tested this under Windows (until now). Troy confirmed compilation under Cygwin, but hasn’t had a chance to test.

      Do you know if you have libusb installed under Cygwin?

      • Ed Sutter January 18, 2013 6:41 am #

        Sorry for the late reply (I didn’t get an email notice that you responded)…
        The libusb that I am linking to is one that I got from libusb.org and built from scratch (on cygwin).
        I assume that, if anything, that version would be newer than anything I would get from cygwin.

        • ericn January 18, 2013 7:42 am #

          Hi Ed,

          We’ll look into this when we can, but it’s pretty low on our priority list at the moment.

          Can you run a VM or borrow a Linux machine until then?

          If not, do you have multiple i.MX boards? Since imx_usb is Linux-based, we can put together
          a userspace that includes it.

          • Ed January 18, 2013 7:51 am

            Its really no problem. I’ve been working on a linux box, and using imx_usb there. Which, by the way, I built the exact same way on linux as I did under cygwin). Its just a convenience because when we start building up raw boards, it would be nice to be able to use a typical lab pc which in most cases for us is some old Windows box. I know the MfgTool from freescale can be used there if really necessary.

            If you (or I) figure out how to get imx_usb running on windows lets post that info here.
            Thanks much for the help,

          • ericn January 18, 2013 9:50 am

            That was also our motivation for Cygwin (old Lab PCs).

      • ericn June 30, 2013 12:58 pm #

        Hi Ed.

        It looks like Cygwin isn’t necessary, because Freescale has an equivalent tool.

        See this post on sb_loader for details.

        • Ed July 1, 2013 5:29 am #

          Eric, Just be aware of my post from Jun 28. I tried sb_loader, and as of now can’t explain why I see some invalid data on-target that I did not see when using imx_usb. I’ll post an update if I figure out what the issue is; but for now, just note the warning (could very well be a false alarm; however, as I said in my earlier post, I took the exact same image and loaded it with imx_usb and sb_loader, and the result was different (with sb_loader being the one that I currently claim at fault).

          • ericn July 1, 2013 7:04 am

            Thanks Ed,

            We have limited experience at this point, but nominally, this works. We have been able to take a current version of U-Boot and load and run it using sb_loader.

          • Ed July 1, 2013 8:42 am

            When/if I figure out whether this is an issue or its just my stupidity, I’ll let you know. Assume for now that its probably something I’m doing wrong.. :-(

          • ericn July 1, 2013 8:46 am

            Hey! I have to take offense at the wording here.

            Stupidity is a pretty harsh word, and the worst case is that Ed made a mistake…

            The best case is that we owe Ed a beer for finding a corner case where things don’t work.

  6. greg herman January 25, 2013 10:18 am #

    Trying to unbrick the board,
    ran ./imx_usb u-boot-otp.bin and got:
    main:Could not open device vid=0x15a2 pid0x54 err-3

    • ericn January 25, 2013 12:14 pm #

      You’ll need to run this using sudo or change the permissions for the /dev entry.

      • Ed January 25, 2013 12:35 pm #

        I use sudo all the time, would be nice to just change permissions to eliminate this.
        This is probably a dumb question but, how do you know which /dev entry to change?
        The logical thing I did was compare ls -l of /dev with and without the board plugged in
        and it shows usbdev1.13_3p00 and usbdev1.13_ep81

        • ericn January 25, 2013 12:48 pm #

          There’s a way to do this using udev, and I’ve seen some related notes for Android fastboot devices (which also use libusb), but I don’t have anything off-hand.

          I cheat and have imx_usb owned by root and set the suexec flag.

  7. Jason January 29, 2013 6:47 am #

    If I put the switches in what looks like (according to the board artwork) the USB position it doesn’t seem to work. However if I put the switches in the “Internal” position I can use the imx_usb program and boot the board fine. Is the artwork backwards or am I backwards? :)

    • ericn January 29, 2013 7:12 am #

      Krowtra is backwards.

  8. kumar March 6, 2013 2:44 pm #

    From the posts above I see that this utility is not tested in cygwin environment, it would be nice, if available there, as our lab pcs are all windows.

    I got it to compile after installing libusb in cygwin–>dev, and if I comment out sys/io.h it compiles.
    running it takes segmentation fault. I am not familiar with cygwin environment and not user if libusb is doing its job. is sys/io.h required in cygwin environment ?

    Any timeframe that you are planning to release cygwin version

    • ericn March 6, 2013 2:53 pm #

      Hi Kumar,

      Cycles with a working Windows install in our office are a rare commodity, so we don’t have anything planned immediately.

      As for the compilation error, this may be a Cygwin version thing. It’s been a while since we’ve even compiled for Cygwin.

      • erickr May 25, 2013 10:37 pm #

        Yes, experiencing the same SIGSEGV fault in cygwin right at line 504. It appears we are all using the same libusb version since you must include . The fault is valid as the value of devs after the call libusb_get_device_list looks too low to be a real address.

        Can you confirm the call you guys make to libusb_get_device_list on line 1604 returns valid buffer? Just seems the weird that the libusb library would work differently on Windows.

        • erickr May 25, 2013 11:32 pm #

          Actually, this appears to get rid of the SIGSEGV fault. http://cygwin.com/ml/cygwin/2013-03/msg00332.html

          Now, I’m getting the error message “main:Could not open device vid=0x15a2 pid=0x54 err=-12″

          • erickr June 3, 2013 2:33 pm

            Yeah, it looks like I cannot get rid of this error. I try to run as administrator and it is a no go. Looks like I need some help on this one. I’m sure sure how to get access to this device in Windows :(

          • ericn June 3, 2013 2:58 pm

            Can you run an Ubuntu virtual machine?

            VirtualBox can access libusb, though I’m not sure about other virtual machine managers.

            If not, can you get access to a full Linux machine in your office?

            If none of those work, we have imx_usb running on our boards. Do you have another board you can use?

          • erickr June 10, 2013 11:45 am

            Actually, if I use the sb_loader in the mfgtool utilities folder then it works. Just follow their example. The sb_loader is just a command line they provide along with cfimager when you download the whole big mfgtool from their downloads site. Here is the link: https://www.freescale.com/webapp/Download?colCode=IMX_6DQ_MFG_TOOL&appType=license&location=null&fsrch=1&sr=1&Parent_nodeId=from%20search&Parent_pageType=from%20search&Parent_nodeId=1337699481071706174845&Parent_pageType=product

          • Ed June 28, 2013 8:42 am

            You mentioned that you use “sb_loader” (under windows) from the MFGTOOL Utilities download.
            I need a windows-based tool (without a GUI), so I tried that too. It has been working. I’ve been able to write code, download it and test it; however, this AM I just noticed that some portions of data area (that did not affect runtime) were not loaded as they should be. So, I went back to my linux box and used imx_usb to download the exact same set of files and then the data was clean. Not sure what the problem is, but I figured I’d let you know (it could be pilot error on my part).

            So, this is just a warning that there may be something strange going on with the sb_loader tool (or I may not be using it correctly). You mentioned an “example”, but I didn’t find any information on this tool, I just run “sb_loader -f binfilename” and the board is magically loaded.

          • ericn June 28, 2013 11:31 am

            Thanks Ed.

            Oddly, I wasn’t aware of sb_loader. If it came from my fingertips, it shoulda’ had a u at the beginning ;)

          • Ed June 28, 2013 11:45 am

            Hi Eric,
            Actually, my previous comment was directed to “Erickr”. The “sb_loader” is a real tool (no typo) ’cause it does come with the MFGTOOLS stuff that Freescale gives out. I tried it based on Erickr’s mention of it, and until this morning I *thought* it was working fine (I’m still looking for a windows-based tool, since imx_usb doesn’t seem to work on windows).
            I sure would like to get that version working on windows! I really like to have source code for the tools I use.
            Anyway, my previous comment (to Erickr) was just a “heads up warning” because I’m seeing corruption. Note that I’m already switched back to my linux-hosted build because of this.

          • ericn June 28, 2013 12:24 pm

            Either way, thanks for the update…

  9. Bhimsen March 8, 2013 3:53 am #

    I have flashed a wrong u-boot.bin version on the SPI-NOR flash of imx6q-sabrelite board, in-which sf command support has been removed.

    I have another issue that, when I set the boot switches for OTG mode, i.e., SW1 – 1 & SW1 – 0. Connected the USB cable to OTG port of the board, but I am not able to see it getting detected as HID device in the device manager on Windows-7 machine. I also connected the same to Ubuntu machine, and checked lsusb. There also it is not getting detected.

    Is there any solution? I think that probably the HID complient detection part of the code has been removed from the SPI-NOR flash, because of my last u-boot update. Is my understanding correct.

    Help me please.

    • ericn March 8, 2013 6:54 am #

      Hello Bhimsen,

      I suspect that you’re seeing the backwards artwork that Jason reported. Please try the alternate switch setting.

      No changes to SPI-NOR can affect the ability to get into serial boot mode because that decision happens in the internal ROM before deciding to look at SPI-NOR.

  10. Muhammad Faisal March 18, 2013 4:54 am #

    Hi All,

    I want to download my .bin file on the Nitrogen board, I produced this .bin file with imx_sdk from freescale. I dont want to use mfg tool as I am using ubuntu so I tried to dowloand my .bin file on the Nitrogen board using imx_usb_loader, I did the following.

    I downloaded the imx_usb_loader_master.zip from the repository and then I extract all the files,
    Then I run the make command , after that I could see imx_usb (application or exe file).
    then I copied my uart_check_test.bin file and execute the following command

    sudo su ./imx_usb uart_check_test.bin

    and I got the following result:


    parse mx6_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    uart_check_test.bin 0 0 1 0 1 2
    main dcd length 2b8
    sub dcd length 2b4

    loading binary file(uart_check_test.bin) to 10000000, skip=0, fsize=1a108 type=aa

    jumping to 0x10000400


    but nothing appears on my serial port that was supposed to be sent through uart.

    I also tried other .bin files (that i compiled for different test) but every time , I was getting the same result with exactly same information…

    can anybody guide me in this regard,

    Muhammad Faisal.

  11. smike April 24, 2013 5:53 am #

    Hi All,

    I tried to download my u-boot.bin file on the Sabre Lite board using imx_usb_loader:

    sudo ./imx_usb u-boot.bin

    and I got the following result:

    parse mx6_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    u-boot.bin 0 0 1 0 1 2
    main dcd length 2d8
    sub dcd length 2d4
    loading binary file(u-boot.bin) to 27800000, skip=0, fsize=2bb40 type=aa
    out err=-7, last_trans=0 cnt=0x4000 max=0x400 transferSize=0x0 retry=0
    out err=-7, last_trans=0 cnt=0x4000 max=0x200 transferSize=0x0 retry=1
    Giving up
    report 1, wrote 0 bytes, err=-7
    report 3, read 0 bytes, err=-7
    read=00 00 00 00
    4 in err=-7, last_trans=0  00 00 00 00

    can anybody help me?

    BR, Michael

    • ericn April 24, 2013 6:42 am #

      Hi Michael,

      It appears that you weren’t connected over USB properly.
      Did you run lsusb before-hand and verify that a “Freescale” device showed up?

      • smike April 24, 2013 9:30 am #

        Hi Ericn!
        Yes, I run lsusb and verify that the “Freescale” device is defined correctly.
        ID 15a2:0054 Freescale Semiconductor, Inc.

        • ericn April 24, 2013 9:42 am #

          Hi Mike,

          Can you try with one of our U-Boot binaries? There’s a complete set (for various processor/memory configurations) on-line here:

          If you’re running a standard SABRE Lite or Nitrogen6X with Quad-core, you’ll want to use ‘u-boot.nitrogen6q':

          ~/imx_usb_loader$ sudo ./imx_usb u-boot.nitrogen6q
          • smike April 24, 2013 11:00 am

            Thanks, ericn.
            I will try u-boot-nitrogen-20130422.zip tomorrow

          • smike April 25, 2013 1:13 am

            Hi Ericn!
            Yesterday I didn’t tell you that I try to load u-boot on a board of our own development, almost identical saber lite (sorry for bad English).

            Today I once again run lsusb as “lsusb -v -d 15a2:0054″ with our board:

            Bus 001 Device 021: ID 15a2:0054 Freescale Semiconductor, Inc.
            Device Descriptor:
            bLength 18
            bDescriptorType 1
            bcdUSB 2.00
            bDeviceClass 0 (Defined at Interface level)
            bDeviceSubClass 0
            bDeviceProtocol 0
            bMaxPacketSize0 64
            idVendor 0x15a2 Freescale Semiconductor, Inc.
            idProduct 0x0054
            bcdDevice 0.01
            iManufacturer 1 Freescale SemiConductor Inc
            iProduct 2 SE Blank ARIK
            iSerial 0
            bNumConfigurations 1
            Configuration Descriptor:
            bLength 9
            bDescriptorType 2
            wTotalLength 34
            bNumInterfaces 1
            bConfigurationValue 1
            iConfiguration 4 Freescale Flash
            bmAttributes 0xc0
            Self Powered
            MaxPower 10mA


            and so on …

            I try to load ./imx_usb u-boot.nitrogen6q to Sabre Lite – everything is ok.

            when I try to load ./imx_usb u-boot.nitrogen6q to our devboard, I receive an error: “out err=-7″
            out err=-7 is libusb_control_transfer error code LIBUSB_ERROR_TIMEOUT – transfer timed out.

            in what there can be a problem (in processor, in RAM memory, in USB)?

            BR, Michael

          • ericn April 25, 2013 6:34 am

            Hi Michael,

            Any number of problems could be present, but RAM issues are the most likely.

            You might want to create a binary that runs from IRAM as a test.

          • smike April 29, 2013 3:01 am

            Hi, Ericn!
            I loaded u-boot.nitrogen6q on my board, but now other problem:
            imx_usb_loader-master$ sudo ./imx_usb u-boot.nitrogen6q
            parse mx6_usb_work.conf
            15a2:0054(mx6_qsb) bConfigurationValue =1
            Interface 0 claimed
            report 1, wrote 16 bytes, err=0
            report 3, read 4 bytes, err=0
            read=56 78 78 56
            u-boot.nitrogen6q 0 0 1 0 1 2
            main dcd length 308
            sub dcd length 304

            loading binary file(u-boot.nitrogen6q) to 177ffc00, skip=0, fsize=50620 type=aa

            jumping to 0x177ffc00


            but nothing appears on my serial console port after the message “jumping to 0x177ffc00″ :(
            can you help me?

            BR, Michael

  12. smike April 24, 2013 9:58 am #

    Thanks, ericn.
    I will try u-boot-nitrogen-20130422.zip tomorrow

  13. Rob May 2, 2013 7:37 am #

    Hi Michael and Eric

    Was there ever a resolution to this? I am also receiving the same “jumping to 0x177ffc00″ error

    • ericn May 2, 2013 7:52 am #

      Hi Rob,

      I’m presuming a hardware error on Mike’s custom board, since this isn’t an issue we’ve seen.

      Are you also running against a custom board?

  14. Rob May 2, 2013 8:25 am #

    This is just a stock sabre lite board rev D 5-9-12 mac: 00:19:B8:00:F1:01

  15. Rob May 2, 2013 8:51 am #

    This is just a stock sabre lite board rev D 5-9-12

    • ericn May 2, 2013 10:24 am #

      The ‘jumping to x’ message indicates success, and should be followed immediately by data on the serial console.

      Are you seeing anything on the serial port?

      • smike May 6, 2013 6:06 am #

        Hi, Eric!
        Now I run u-boot.imx on my custom board, the problem was that the console port UART2 moved from standard pins EIM_D26, EIM_D27 to pins SD4_DAT7, SD4_DAT4 :(
        Next question: I want that u-boot booted from eeprom spi memory. I wrote u-boot in eeprom memory to the address 0x400.
        And now, how can I set eFUSEs to indicate (to say) boot ROM that the boot device is eeprom spi memory? (sorry for my bad English).
        Or what I need to do that my board booted from eeprom spi memory? (now boot ROM at once jumps directly to the Serial Downloader)

        BR, Michael

        • ericn May 6, 2013 1:43 pm #

          Hi Michael,

          At the risk of bricking your board, I can only say that
          we use the imxotp command.

          U-Boot > imxotp blow --force 5 0x18000030
          U-Boot > imxotp blow --force 6 0x00000010 

          Please double-check the validity for your board (no warranty implied).

  16. Rob May 2, 2013 10:48 am #

    Thanks for following up eric.

    I resolved the issue by using the manufactures tool in windows with a putty serial console open. The mfgtool in windows required: a restart of the pc, plugging in the device, then open the manufacturing tool in order for it to work.

  17. ravitejave May 29, 2013 7:12 am #

    Hello eric

    I followed above procedure

    and i ended up with

    parse mx7_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    ../u-boot.nitrogen6q 0 0 1 0 1 2
    main dcd length 308
    sub dcd length 304
    loading binary file(../u-boot.nitrogen6q) to 177ffc00, skip=0, fsize=50620 type=aa
    jumping to 0x177ffc00


    nothing happens afterwards

    should the board be connected to minicom through uart while doing the above procedure ??

    if yes , which port ?? (/dev/ttys0 or /dev/ttys2)

    i am asking about the port because nothing comes in dmesg

    please do reply

    i am stuck with this board

    thanks and regards


    • ericn May 29, 2013 7:23 am #

      Hi Raviteja,

      This all looks good, and you should see U-Boot come up on the serial console (/dev/ttymxc1, labelled “Console” on the DB-9).

      • raviteja613 May 30, 2013 10:10 pm #

        i tried ttymxc1 but it says

        minicom: cannot open /dev/ttymxc0: No such file or directory

        same case with ttymxc0

        • raviteja613 May 31, 2013 12:32 am #

          Hello eric

          i was able to flash u-boot on SPI-NOR

          i used ttyS2

          it worked


          • ericn May 31, 2013 6:27 am

            Glad to hear it.

  18. Assya June 19, 2013 6:05 am #

    I think I have trashed my My Sabre Lite board – SPI NOR Flash after I have tried to reflash it by these Linaro instructions, using SD card.

    I failed to recover the board (didn’t even have a serial output after reflashing) using Freescale tool. I tried several versions with no luck.

    After reading this post – I have managed to get U-Boot launch in a serial console (after it has loaded uboot.bin, I had from Freescale tool, into RAM and executet it) from USB. U-Boot Menu opened.

    Now, I would like to flash this (or other) Uboot to a serial ROM (in order to boot from the serial flash, as I did before and not from USB). Can you please explain how do I do flash Uboot on a serial flash in Sabre Lite board?

    Thanks, Assya.

    U-Boot 2009.08 (Dec 18 2012 - 19:50:28)
    CPU: Freescale i.MX6 family TO1.2 at 792 MHz
    Temperature:   41 C, calibration data 0x5a84e17d
    mx6q pll1: 792MHz
    mx6q pll2: 528MHz
    mx6q pll3: 480MHz
    mx6q pll8: 50MHz
    ipg clock     : 66000000Hz
    ipg per clock : 66000000Hz
    uart clock    : 80000000Hz
    cspi clock    : 60000000Hz
    ahb clock     : 132000000Hz
    axi clock   : 264000000Hz
    emi_slow clock: 132000000Hz
    ddr clock     : 528000000Hz
    usdhc1 clock  : 198000000Hz
    usdhc2 clock  : 198000000Hz
    usdhc3 clock  : 198000000Hz
    usdhc4 clock  : 198000000Hz
    nfc clock     : 24000000Hz
    Board: MX6Q-SABRELITE:[ POR]
    Boot Device: I2C
    I2C:   ready
    DRAM:   1 GB
    Using default environment
    In:    serial
    Out:   serial
    Err:   serial
    Net:   got MAC address from IIM: 00:19:b8:01:09:5a
    FEC0 [PRIME]
    Hit any key to stop autoboot:  0
    Wrong Image Format for bootm command
    ERROR: can't get kernel image!
    • ericn June 19, 2013 8:31 am #

      Hi Assya,

      As long as you’re re-programming the flash, let’s get you started off right.

      We’ve just uploaded a tarball of the latest production U-Boot code that we’re shipping:


      If you extract it to a single-partition SD card (FAT or ext2/3/4), and re-name u-boot.nitrogen6q to u-boot.imx, you can run upgradeu to re-program your flash with the latest.

      You’ll need to be running our U-Boot though. Freescale’s MFG U-Boot binary has some incompatibilities with the 6x_upgrade script.

      On your dev machine: run imx_usb like this:

      ~/imx_usb_loader$ sudo ./imx_usb u-boot.nitrogen6q

      You should see U-Boot launch on the serial port, and you should see today’s date (Jun 19, 2013) in the banner.

      Then you can use upgradeu on the serial console as shown in this post.

      • Assya June 19, 2013 9:22 am #

        thank you for the quick reply.

        After wasting a half day on this I was finally able to boot the board (without the USB).

        I followed the instructions on http://www.eewiki.net/display/linuxonarm/i.MX6x+SABRE+Lite+SPI+Flash+Recovery
        My board now boots with U-Boot 2009.08-…..

        The strange thing was that after playing with the boot switch on board so many times, I forgot to put it into 01 mode and I performed the procedure (booting and reflashing) when the boot switch is set into 00. I wonder what does it mean?

        My next purpose is to be able to boot Yocto built on it (from SD card).
        This is the reason I have tried to update the boot with Linaro iMX6DQ_SPI_to_uSDHC3.bin from the first place.
        This puzzles me. Do I need to upgrade to the updated boot (you have supplied) in order to be able to boot from SD card (or microSD card) as stated in Linaro page:


        “By default, the SabreLite boards come with u-boot which is loaded from the SPI NOR flash. These boards need to be reflashed with a small SD card loader to support boot from SD card. This small SD card loader will be flashed into the SPI NOR, the board will still boot from SPI NOR, but the loader will in turn request the BootROM to load the u-boot from SD card. ”

        Or this Linaro page isn’t valid for my case.

        Thank you very much, Assya.

        • ericn June 19, 2013 11:55 am #

          Hi Assya,

          The notes on the Linaro page are bad advice for just about everyone, and I’ve asked Shawn to take them down, or at least say that these are only useful for testing the Linaro build process.

          I’ll do the same with the eewiki page.

          Please upgrade to our latest using the instructions I posted earlier and let me know if you have any trouble.

  19. Assya June 19, 2013 11:43 am #

    ericn, thank you.

    I have written a reply, but not sure it was sent.
    I have finally reprogram with the flash using the uboot and instructions from http://www.eewiki.net/display/linuxonarm/i.MX6x+SABRE+Lite+SPI+Flash+Recovery

    However, after playing with the boot switch half a day to fix my board, I have accidentally did it when set to 00. Is it possible?

    The reason I have started to reprogram the SPI NOR Flash due to the statement in Linaro

    “By default, the SabreLite boards come with u-boot which is loaded from the SPI NOR flash. These boards need to be reflashed with a small SD card loader to support boot from SD card. This small SD card loader will be flashed into the SPI NOR, the board will still boot from SPI NOR, but the loader will in turn request the BootROM to load the u-boot from SD card.”

    Following this procedure led me to recovering my board. Recovery with Freescale tool didn’t work for me. Thus, if I want to load permanently the uboot on my SDcard (slot3), for example Yocto builds – what do I need to do?

    Do I need to update the uboot to the updated one (currently I am with 2009.08)?
    Do I need to try the Linaro flow again?

    Thank you,

    • ericn June 19, 2013 11:56 am #

      Again, this is bad advice.

      The reason you didn’t see your post is that we have to approve each comment before it becomes visible (spam prevention).

  20. younes July 1, 2013 8:20 am #

    Hi all,

    I’m trying to unbrick my i.MX6q Sabre Lite board.

    Connecting the board to the host PC with by USB, and turning the switches to USB OTG on the board, then powering up or reseting the board.

    But when entring the command : lsub
    I have no entry named Freescale semiconductor Inc !!!

    How can I force the board to run up on USB OTG recovery mode ?

    Thanks in advance for your answers

    Best regards

    • ericn July 1, 2013 8:22 am #

      Hello Younes,

      Please try the alternate switch settings (i.e. 10 instead of 01). The silk screen is a bit confusing on some boards.

      • younes July 1, 2013 8:33 am #

        Thank’s ericn for your quick answer. I’ve tried all the possibilities of the switches but it doesn’t work at all.
        No way to have the Freescale entry by lsusb !!! Does exist another way ?
        Because at the moment when I turn on the board I have no output on the output of the serial line.

        • ericn July 1, 2013 8:40 am #

          Hi Younes,

          Nope. There is no other way.

          I’ve never seen this fail, and this is effectively what’s done at the time of manufacturing of each board, so the USB OTG ports are tested 100% of the time.

          Are you getting any messages from the kernel on your development machine when you connect/disconnect the cable?

          ~/$ dmesg | tail

          I have seen the USB port on my host (laptop) get screwed up before, and a re-boot fixed it.

          Also, please double-check your cabling to see that everything is well-connected.

          • younes July 2, 2013 12:51 am

            Hi Eric,

            I checked the cabling, and everything is well connected. Here is the log from : dmesg | tail command :

            younes@younes-Latitude-E6530:~/Younes/Sabre$ dmesg | tail
            [ 1882.625777] usb 3-1: device not accepting address 59, error -71
            [ 1882.737791] usb 3-1: new full-speed USB device number 60 using xhci_hcd
            [ 1882.737952] usb 3-1: Device not responding to set address.
            [ 1882.941895] usb 3-1: Device not responding to set address.
            [ 1883.145722] usb 3-1: device not accepting address 60, error -71
            [ 1883.257724] usb 3-1: new full-speed USB device number 61 using xhci_hcd
            [ 1883.257887] usb 3-1: Device not responding to set address.
            [ 1883.461881] usb 3-1: Device not responding to set address.
            [ 1883.665652] usb 3-1: device not accepting address 61, error -71
            [ 1883.665689] hub 3-0:1.0: unable to enumerate USB device on port 1

            Do you have an idea of where it may come ?


          • younes July 2, 2013 5:28 am

            Hi Eric,

            Here is the log with the dmesg command :

            younes@younes-Latitude-E6530:~/Younes/Sabre$ dmesg | tail
            [16725.052578] usb 3-1: device not accepting address 44, error -71
            [16725.164583] usb 3-1: new full-speed USB device number 45 using xhci_hcd
            [16725.164711] usb 3-1: Device not responding to set address.
            [16725.368706] usb 3-1: Device not responding to set address.
            [16725.572494] usb 3-1: device not accepting address 45, error -71
            [16725.684499] usb 3-1: new full-speed USB device number 46 using xhci_hcd
            [16725.684657] usb 3-1: Device not responding to set address.
            [16725.888632] usb 3-1: Device not responding to set address.
            [16726.092439] usb 3-1: device not accepting address 46, error -71
            [16726.092478] hub 3-0:1.0: unable to enumerate USB device on port 1

            Do you have an idea of where it may come ?


          • younes July 3, 2013 4:32 am

            Any suggestion ?

  21. raviteja613 July 10, 2013 1:24 am #

    Hello Ericn

    I am facing a strange issue this time

    My board is not getting detected when i connect in usb mode through usb-otg

    nothing in dmesg

    can you figure out what might be the problem

    • raviteja613 July 10, 2013 1:26 am #

      lsusb is also not showing any new device

    • ericn July 10, 2013 6:49 am #

      Is this after boot, or when running U-Boot (using bmode)?

      Not all of our images are configured for USB OTG by default.

      • raviteja613 July 11, 2013 3:01 am #

        My board is not showing u-boot prompt

        I am trying to flash u-boot on SPI-NOR by following instructions in “unbricking sabrelite board”

        but my board is not getting detected when i give lsusb command

        I followed all steps – kept board in USB mode i.e 01
        installed libusb tools

        is there any possibility to boot from mmc ??
        i think my SPI_NOR got corrupted

        • ericn July 11, 2013 6:50 am #

          Can you try switch position 10? Some silk-screens are mis-leading.

          There is no way of getting around the issue except through USB OTG,

        • younes July 24, 2013 6:55 am #

          I had the same probem. I resolved it with the MFGTool. You need to be under Windows. And your target will be flashed by putting U-Boot on the SPI-NOR. Then you can boot from mmc

          • ssohail September 13, 2014 6:59 am

            Hi younes,
            Can you explain the exact steps you followed to recover imx6 sabrelite from this problem using MFGtools. I ran into same problem and still looking for a proper solution

  22. Saransh Jain July 23, 2013 10:01 pm #

    I might have bricked my board.When I try reflashing using the command sudo ./imx_usb u-boot.imx
    it gives an error:

    parse mx6_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    u-boot.imx 0 0 1 0 1 2

    error, can not open input file: u-boot.imx
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56

    Any suggestions??

    • ericn July 24, 2013 6:47 am #

      I think you missed the important error message in the spew:

      error, can not open input file: u-boot.imx

      You need to specify the location of the U-Boot file that you want to execute.

  23. AndrewJ July 25, 2013 1:34 am #

    Can somebody explain to me the difference between ‘load’ and ‘plug’ when using imx_usb?
    The explanation is not very clear to me:

    “#plug – without jump uses header but clears plug flag to stop after plug execution”

  24. ericn July 25, 2013 3:25 pm #

    At a couple of points in time, we’ve had a couple of separate issues related to the erase size in the 6x_upgrade script.

    If you run into a message that says:

    Read verification error

    Please replace 6x_upgrade with the one in this zip-file. The sources are here.

  25. Bill Yang July 26, 2013 9:24 am #

    Hi Eric,

    I am strugling the u-boot issue on my customed board. I’ve used usb tool ./imx_usb u-boot.imx and booted on my board as the boot info pops up from serial console as listing below. But it is not detecting the 6x_bootscript on the SD card. Do you have any comment?

    Second question: Can you please provide me a detail instruction how to flash the u-boot.imx or u-boot.bin in to SPI-NOR, which is how to use sf command?

    -Boot 2013.04-04341-g1903727-dirty (Jul 25 2013 – 16:00:28)

    CPU: Freescale i.MX6Q rev1.2 at 792 MHz
    Reset cause: POR
    Board: SABRE Lite
    DRAM: 1 GiB
    SF: Unsupported manufacturer 00
    *** Warning – spi_flash_probe() failed, using default environment

    No panel detected: default to HDMI
    enable_hdmi: setup HDMI monitor
    Display: HDMI (1024×768)
    In: serial
    Out: serial
    Err: serial
    Net: Phy not found
    using phy at 4
    PHY reset timed out
    Warning: failed to set MAC address

    Hit any key to stop autoboot: 0
    AHCI 0000.0000 1 slots 1 ports ? Gbps 0x0 impl SATA mode
    No port device detected!
    ** Bad device size – sata 0 **
    ** Bad device size – sata 0 **

    SATA device 1: unknown device
    ** Bad device sata 1 **
    ** Bad device sata 1 **
    MMC: no card present
    mmc0(part 0) is current device
    MMC: no card present
    ** Bad device mmc 0 **
    MMC: no card present
    ** Bad device mmc 0 **
    MMC: no card present
    mmc1(part 0) is current device
    MMC: no card present
    ** Bad device mmc 1 **
    MMC: no card present
    ** Bad device mmc 1 **

    6x_bootscript not found

    serial console at 115200, 8N1

    details at http://boundarydevices.com/6q_bootscript
    (Re)start USB…
    USB0: USB EHCI 1.00
    scanning bus 0 for devices… 1 USB Device(s) found
    scanning usb for storage devices… 0 Storage Device(s) found
    scanning usb for ethernet devices… 0 Ethernet Device(s) found

  26. Bill Yang July 29, 2013 9:07 am #

    As we knew the Boundary Nitrogen6x board has u-boot image programmed in serial EEPROM to boot the device. After booted it looks for 6x_bootscript on SD card, then boot the kernel.

    I wonder if it is possible directly boot u-boot from SD card with no EEPROM or the USB OTG help. For example, the u-boot in serial EEPROM has been detroyed and I copy u-boot.imx to first partition on a SD card and insert it to board and boot directly. Is it possible? If it is yes, what should the switch dip on the board settings be 00, 01, 10 or 11?

  27. Pinki Saharan August 30, 2013 11:45 pm #


    I am using mx6 sololite board having SPI-NOR(16 MB, micron chip) as a booting device but i am not able to initialize the SPI-NOR. i got to know this by using sf probe command. It is showing my device id correct but also showing that “failed to initialize SPI FLASH 0:0″.

    Do we need to make any changes in config file to initiliaze the SPI. Can anyone please reply.

  28. Christian Ege September 5, 2013 11:48 pm #

    In the past I used this tool a lot to recover our nitrogen boards and in the last few days to bring-up our custom boards. I works flawlessly for me.

    But then I thought about how easy would it be to upload just a little bit more than just the u-boot. And I discovered this little bastard tool has everything in place to do but it laks documentation about how to do things.

    So I opened a issue on github where I tried to describe the things I figured out so far.


    So my goal is to upload all the peaces like u-boot,kernel,dtb and a recovery image through USB and then run a u-boot script which burns this all this stuff to the Flash.

    • ericn September 6, 2013 7:32 am #

      Hi Christian,

      We’re headed in this direction, but in a slightly different way. Our intent is to use imx_usb to allow download of U-Boot, but then use U-Boot to allow download of the rest.

      Troy has committed patches to add USB OTG support to U-Boot, and we hope this will make the 2013.10 release. After that, there are a number of ways to do what you’re after:

      • USB Ethernet gadget – all of our USB OTG testing has used this so far, or
      • DFU (Device Firmware Upgrade) is already present in main-line U-Boot, or
      • Android Fastboot – patches for this are present, but some cleanup is required
  29. Peter October 8, 2013 2:46 am #


    I have unbricked my board using your imx_usb. Unbricking worked, at least I think so, see attached log. Uploading functioned with all settings of SW1 beside 11, BTW.

    peter@peter-az:~/imx_usb_loader$ sudo ./imx_usb u-boot.imx
    parse mx6_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    u-boot.imx 0 0 1 0 1 2
    main dcd length 310
    sub dcd length 30c
    loading binary file(u-boot.imx) to 177ff000, skip=0, fsize=528f4 type=aa
    jumping to 0x177ff000

    Booting the board I do not get any reaction, however. Neither on the attached monitor nor via the serial terminal. The serial terminal works, I have also tried different u-boot files.

    What might be wrong? What can I do to get the board operational again?


  30. ericn October 8, 2013 4:17 pm #

    Hi Peter,

    What led up to the bricking? Perhaps that will shed some light on what’s going on.

    As you noted, the log above shows that the u-boot.imx file was successfully downloaded into RAM and executed, so the only things that could be at fault are:
    — improper u-boot binary (I’d try the latest production version as a start, or
    — bad serial connection (though the display should light up), or
    — bad board

    • Peter October 9, 2013 3:59 am #

      Hi Eric

      Thanks for your reply.

      Some time ago I tried to install a Linaro Linux without success. So, I dediced to unbrick the board and to install one of BM’s Linux systems. Unbricking functioned and u-boot sent some messages to the display. As there was no SD on board booting stopped. After having added an SD and rebooting the board seemed to be dead. Unbricking still works, however

      I tried several u-boot binaries from the production package you suggested. The serial connection is operational in principle (checked with another ARM board).



      • ericn October 9, 2013 6:49 am #

        Hi Peter,

        Only one of the binaries in the production package will work for you. The most likely is u-boot.nitrogen6q, which is for both SABRE Lite (BD-SL-i.MX6) and standard Nitrogen6X boards.

        • Peter October 12, 2013 3:57 am #

          Hi Eric

          thanks for your reply.

          I have tried u-boot.nitrogen6q (and nearly all the other ones referring to nitrogen boards, too) with no success. So, there is a problem with my board.

          Best regards


  31. Linzy October 21, 2013 12:48 am #

    Problem after i try to excute the flash command:

    linzy@debian:~/temp/imx_usb_loader/imx_usb_loader$ sudo ./imx_usb u-boot.nitrogen6dl
    No “_” environment variable
    argc == 2, argv == 0xbf949464
    base == 0x804fd00:./imx_usb
    trailing slash == 0x804fd01:/imx_usb
    conf_path == ./
    config file
    No “_” environment variable
    argc == 2, argv == 0xbf949464
    base == 0x804fd00:./imx_usb
    trailing slash == 0x804fd01:/imx_usb
    conf_path == ./
    config file
    parse mx6_usb_work.conf
    15a2:0061(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    u-boot.nitrogen6dl 0 0 1 0 1 2
    main dcd length 308
    sub dcd length 304
    w3 in err=-7, last_trans=0 00 00 00 00
    addr=0x021b001c, val=0x04008032
    w4 in err=-7, last_trans=0 00 00 00 00
    !!perform_dcd returned -7
    report 1, wrote 0 bytes, err=-7
    report 3, read 0 bytes, err=-7
    read=00 00 00 00
    report 1, wrote 0 bytes, err=-7
    report 3, read 0 bytes, err=-7
    read=00 00 00 00
    report 1, wrote 0 bytes, err=-7
    report 3, read 65 bytes, err=-7
    read=00 00 00 00
    report 1, wrote 0 bytes, err=-7
    report 3, read 0 bytes, err=-7
    read=00 00 00 00
    report 1, wrote 0 bytes, err=-7
    report 3, read 0 bytes, err=-7
    read=00 00 00 00
    report 1, wrote 0 bytes, err=-7
    report 3, read 0 bytes, err=-7
    read=00 00 00 00
    4 in err=-7, last_trans=65 00 00 00 00

    Err 7 always happed, and my board label:”NITROGEN6-REV2 11-28-2012″
    i.mx6 dual version, and try other versions u-boot in “u-boot-production.tar.gz”, but the same results. please help on this.
    Thanks in advance!
    BR Linzy

  32. Robert Aldridge December 4, 2013 12:25 pm #

    So I’m having an issue using both the Linux and PC unbricking tools on a Nitrogen 6x Lite board. USB-OTG mode comes up as “Freescale SE Blank RIGEL” instead of “Freescale SE Blank ARIK” if that helps.

    • ericn December 4, 2013 12:39 pm #

      Does lsusb show the device with id 15a2:0054? That should be all that matters.

      • Robert Aldridge December 4, 2013 12:53 pm #

        Bus 001 Device 002: ID 15a2:0061 Freescale Semiconductor, Inc.

  33. Robert Aldridge December 4, 2013 1:28 pm #

    It looks like the id for USB-OTG recovery mode has changed from 15a2:0054 to 15a2:0061 for all the Nitrogen 6X Lite boards that I have tested. I don’t know if that has anything to do with the name change from ARIK to RIGEL.

    • ericn December 4, 2013 2:23 pm #

      Hi Robert,

      The change from 15a2:0054 to 15a2:0061 likely has to do with the processor variant (Quad versus Solo).

      Are you by chance configuring permissions through udev? If so, the rule will need an update.

      I generally just set imx_usb to setuid root to get around this.

  34. Robert Aldridge December 4, 2013 3:31 pm #

    So running the linux imx_usb tool with raised permissions or from terminal with sudo works just fine. It is a pain to remember that because when I run imx_usb without raised permissions I get an error ‘-3′ which would otherwise be an indication of an entirely different issue. Though the Windows sb_loader.exe does not work with the Nitrogen Lite board, I even tried running using the 3 different versions of the sb_loader program that come with the 3 different freescale manufacturing tool packages for regular, lite, and solo, in addition to the version linked to directly on the Boundary Devices site.

    • ericn December 4, 2013 3:50 pm #

      Sorry for the hassle Robert.

      We’ll look into this.

  35. Krishnan December 9, 2013 12:48 am #

    Hello Eric,

    Looks like some thing wrong happened to my sabre-lite board.

    When I connect the power supply to the board, the LED near 5V connector blinks. I have connected the USB cable to Linux pc and run lsusb command. But the there is no device is getting detected with freescale dev id. What the blinking LED indication means? How can I bring the board up?

  36. Braghadees April 17, 2014 11:03 pm #

    Hi everyone ,
    >I’m currently working on an IMX6 Sabrelite and managed to brick it
    I)No activity on terminal,
    II)USB not recognized under USB mode(01) (Windows PC “USB device not recognized” and on Linux unable to enumerate the USB device).
    after i’d been flashing SPI-NOR several times to switch between platforms. Now i’m trying to get the board up i.e. see U-boot run on board and send message to terminal.
    >From what i learned, imx6 boots based on FUSE SWITCH[0:1] configuration to particular media. In my case with any config[00,01,10] i couldn’t get the board run(Even i tried 11 freescale reserved config ).
    >In all cases the green light indicating power glows and with SDslot and Ethernet port i could see lights glowing on connected condition, but serial port remains clean with no messages and USB connected on Host(Windows PC) not recognized(USB VID/UNKNOWN). which used to be detected as HIF device under 01 configuration previously.
    >So with USB flashing not possible via MFG tool or sbloader(as its detected as UNKNOWN device and not as HIF device) ,
    what could be done to get the board run i.e.
    1)Is it possible to Program U-boot to SPI-NOR flash under this condition
    2)Use SD-CARD or any other media on-board to run U-boot fro once after which i’ll be able to update SPI-NOR flash easily.
    Please reply on this as its a fairly new board and would be highly helpful on my project.

  37. Cedric May 29, 2014 5:51 am #

    Having the same issue here with 2 nitrogen6x rev2. I can load u-boot OK with the USB loader:

    sudo ./imx_usb ./u-boot.nitrogen6q
    parse mx6_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    report 1, wrote 16 bytes, err=0
    report 3, read 4 bytes, err=0
    read=56 78 78 56
    ./u-boot.nitrogen6q 0 0 1 0 1 2
    main dcd length 310
    sub dcd length 30c

    loading binary file(./u-boot.nitrogen6q) to 177ff000, skip=0, fsize=528f4 type=aa

    jumping to 0x177ff000

    but no serial output.

    Both boards stopped working after (several) power cycles from Android (ICS)

    I also have a SabreLite and was using that board for the same purposes (Android) and never observed such behavior. REV2 HW bug?

  38. Corvin July 5, 2014 10:14 am #

    Hi everybody,

    I will repeat Krishnan question: What the blinking power LED indication means?
    I bought the board off ebay as untested and it appears to be faulty?. it is not seen under USB subsystem with any of the switch configuration neither I get any output to the serial (I have another same board which is working properly, so the cable config is OK). After connecting power it just blinks green LED in about 1 second intervals. I need some help here or somebody to tell me that the board is busted and I should throw it away.
    Sorry for my english as it is not my native language – I hope it is understandable anyway.


  39. Corvin July 5, 2014 11:50 am #


    It looks like I found the solution to the blinking power LED problem. According to http://www.element14.com/community/docs/DOC-51148/l/freescale-schematics-for-development-platform-on-imx-6quad-sabre-lite there is a voltage supressor diode in power input circuit which in my case failed. I just removed it by now and the board is working again!


  40. Seraf August 27, 2014 8:15 am #


    I’ve got working Nitrogen6X board rev3 with installed Yocto on it.
    I need to update u-boot when the board is switched to normal boot flow and Yocto is loaded.
    Is is possible, for example, to connect USB flashdrive with u-boot.imx or u-boot.bin to the board, mount the flashdrive and run imx_usb_loader tool installed on boards filesystem to flash the bootloader?

    • ericn August 27, 2014 10:21 am #

      Hi Seraf,

      I’m not sure I understand. Are you looking for a way to update U-Boot while running Linux on the same machine? That’s possible, but won’t require a flash drive or imx_usb_loader.

      You can update U-Boot from the U-Boot prompt by placing the 6x_upgrade and u-boot.imx files into the root of the first partition of one of the SD card slots or a USB stick.

      The Yocto (meta-fsl-arm-extra) build will place 6x_upgrade in the “Boot Nitrogen” partition, but only includes the U-Boot binary for one machine variant (Nitrogen6x or SABRE Lite with 1GiB).

      • Seraf August 27, 2014 11:27 am #

        Hi Eric,
        Yes you understood me right, thanks for your help and fast response.

      • Seraf August 28, 2014 6:00 am #

        Hello again,

        So i’m looking for a way to update U-Boot while running Linux on the same machine, and you recommend to to place the 6x_upgrade and u-boot.imx files into the USB stick and connect it to the board, right? And how I can get the U-Boot prompt from the Linux then? By restarting the device?
        Is it possible to upgrade u-boot from linux during the lifecycle? As I understand u-boot is using some SPI lib to write the data to EEPROM, maybe it’s possible to use that library in some application on the Linux to upgrade u-boot manually? I’m going to create this app, so I need an advice how to write to EEPROM from Linux or just how u-boot is doing that job.

  41. bdbdbd October 23, 2014 3:45 am #

    I have a Nitrogen6 Lite board which I’ve flashed a bad U-Boot image to SPI flash. I need to recover this bricked device and I tried connecting my PC to the dev board with a USB A/USB A cable however I cannot see my dev board when I plug it into my PC.

    I have another board with the same CPU (i.MX6 Solo) that DOES appear on my PC (when I type lsusb) when I plug it into USB however my Nitrogen6 Lite dev board does not appear.

    How can I flash a new U-Boot image on if USB doesn’t work? I’ve tried using different combinations of the boot switches but no luck. It looks like the USB bootloader is broken on my board….

    • ericn October 23, 2014 6:47 am #

      Did you change SW1 to position 10 (or 01)? This should force the board into serial download mode.

      • bdbdbd October 23, 2014 6:55 am #

        Yes, I tried that. I’ve just got it working by using a different USB port on the board (the micro USB).

        • ericn October 23, 2014 7:02 am #

          Glad to hear it.

Leave a Reply