imx233 weird DCDC capacitor problems


We started our OSHW Linux computers with imx233 processors from Freescale. The reason was that it was cheap and possible to buy in any quantity + they came in TQFP package and are easy for DIY at home, so anyone can build his own Linux computer.

Many thousands of imx233 based OLinuXino devices are sold and work reliable in many applications, but recently we were bumped in weird problem with the imx233 DCDC.

imx233 is highly integrated SoC as it’s purpose when designed was media player, so the all internal voltages are generated with internal DCDC.

If you look at the schematic above you will see L1 with C74 C75 are used in the internal DCDC. Freescale recommends C74 and C75 to be not populated in the users manual, but we found when ran the first lot of OLinuXino that if C75 is missing the board will never start when powered by LiPo battery only. Touching the C75 pads with scope probe started the boards, so initially we decided to put there small 10 pf capacitor, with this value the boards were starting reliable if LiPo is only connected.

We all know that processors and components have tolerances, after we ran more boards we got some statistic and some of boards didn’t want to start with 10 pf, we play more than week and found that if we rise C75 to 100 pf this solve all startup problems and all boards which were failed on the test for this condition were cured with C75=100 pf

So far so good, we put 100 pf in the production manuals and continue to manufacture imx233 boards, while last week we got call from customer, who bought 50 pcs imx233-mini and some of them failed to work with USB. He did some analyze and found that the difference between boards which work and do not work use different date code USB hub chips GL850. We asked these boards back and start investigation.

When we received them we run them on our functional tests and … all they pass the test, this was weird as customer reported these to have problems. After a while we found the difference – in our tests we use ARCH linux image, while the customer was using Debian, we run Debian Linux and same boards which worked with ARCH image start to give errors ONLY in case you attach USB flash drive to the USB port!

NOW this was really weird, as with the old data code USB GL850 hubs the boards were working with both Debian and ARCH but with the new date code hub only ARCH image was working and Debian image was giving errors when USB Flash drive is attached.

We spent about week to chase this problem as it is some mix of both hardware and software issues and after a week of investigation we found the problem is caused by … C75(!) reducing C75 to 15 pf solves the USB port problems. Now this is really weird.

If C75 is lowered problems with startup of the DCDC when powered with only LiPo occur, when C75 is with higher value the DCDC becomes very sensitive to the overall power consumption and when USB flash drive is attached to some USB hubs which obviously have different power consumption due to tolerances the USB port start to give errors.

We obviously have no intern knowledge how this DCDC is implemented in imx233 and why it interference with USB ports to dig to the root of the problem, for the moment replacing the C75 solves the problems, but anyway this still is weird bug.

We can’t also understand why ARCH linux image is more immune to these problems and what is the difference between USB port initialization with ARCH and Debian images.

Any help and comments on above is welcome from people who know more 🙂


EDIT: Here is some more information which I forgot to attach at the beginning:

this is with ARCH Linux distribution build with Kernel 2.6.35 we use when mass storage is plug in USB:

this is with Debian distribution built with Kernel 3.11 when MOD-RTL8188CU is plug in USB: everything is normal

these are the error messages with same Debian distribution when USB flash drive is plug in:


EDIT2: This issue only happens when hub is connected to imx233 USB host – either GL850 either LAN9512, the issue do not happens on Micro and Nano where there is no hub between imx233 host and USB mass storage.

Slackware live image for imx233-OLinuXino


guanx posted on our forum that created Live Slackwarearm-14.1 System image for imx233-OLinuXino.

Here is the readme.txt , the sources and microSD card image

Friday Free Board Quiz – Week #55 prize is iMX233-OLinuXino-NANO


iMX233-OLinuXino-NANO is the smallest Linux Single Board computer from the Open Source Hardware OLinuXino project.

The board dimensions are just 76.2 x 20.8 mm (3 x 0.8″).

You have chance to win this board if you participate our Quiz.

Today at 17.00 o’clock our local Bulgarian time (GMT+3) we will post on Twitter our questions.

You have one hour to reply to our tweet with the correct answer.

At 18.00 o’clock we will count the correct answers and ask to generate random number in range then announce the winner and ship the board by airmail in Monday.

Debugging iMX233-OLinuXino with OpenOCD and SJTAG Tutorial


Christian Jann posted wonderful tutorial how to setup OpenOCD and SJTAG to debug iMX233-OLinuXino.

Reading the post I see Christian had no SJTAG and borrowed one from a company, we are going definitely fix this and next week will send him one of our iMX233-OLinuXino-NANO which now is assembling and iMX233-SJTAG so he could continue with his interesting tutorials 🙂

OpenWRT for iMX233-OLinuXino trunk now with 3220 packages


Few weeks ago I blogged for OpenWRT – the lightweight Linux distribution for routers which now officially supports iMX233-OLinuXino .

At that time the package trunk was not complete, but now there are 3220 packages inside!

There is nice set of useful tools: sip, apache, avrdude, ctorrent, gawk, gdb, lua, perl, php, python, ruby, svn and many others the full list is here:

So now under OpenWRT is possible to make IP phone, small torrent downloader, internet radio or streaming device with iMX233-OLinuXino.

We may need to add small Serial Flash instead of SD-card for future version as most of the routers which run OpenWRT need only few MB of Flash.

On top of this OpenWRT is using latest Kernel 3.10, well done OpenWRT team!

Meet the iMX233-OLinuXino new member: Nano


Fresh out of the reflow oven: iMX233-OLinuXino-NANO is the smallest iMX233 board we have.

We try to shrink it to the max and the size now is just 76 x 20 mm (3 x 0.8″).

The board features are:

  • imx233 at 454Mhz
  • 64MB RAM
  • micro SD-card
  • USB host
  • LiPo charger
  • UEXT connector

When we designed this board we had two goals:

  • to make it breadboard friendly and we did this with 0.7″ between the header pins on the two edges, so you can easily plug it to BREADBOARD-1
  • to enable creation of handheld devices with it, the board have LiPo charger and step-up converter which allow USB devices to work even when the board is LiPo battery powered, so you can make Handheld WIFI deveices with this board running Linux and with all GPIOs available in two row headers

It’s pity as we try hard but couldn’t shrink NANO to DIP 0.6″ width but we got close to it 🙂


Now we have to do some serious testings and if everything goes well will run production by end of July. The price will be similar to iMX233-OLinuXino-MICRO.

iMX233-OLinuXino-NANO was designed in 6 layer with proper care taken for noise immunity.



iMX233-OLinuXino-MICRO is the lowest cost OLinuXino OSHW Linux computer which price starts from EUR19.20 for50+ pcs order

You have chance to win this board if you answer today’s Quiz question.

Today at 17.00 o’clock our local Bulgarian time (GMT+3) we will post on Twitter our questions.

You have one hour to reply to our tweet with the correct answer.

At 18.00 o’clock we will count the correct answers and ask to generate random number in range then announce the winner and ship the board by airmail in Monday.

Do not forget at 18.00 o’clock we will post our Weekly Programming Challenge #6, yet another way to challenge your programming skills

iMX233-OLinuXino GPIO Python Libraries


Soon after we released A13-GPIO for Python we got requests to do same for iMX233.

iMX233_GPIO is released on PyPi now
it works identical to pyA13 you can use same commands:

import iMX233_GPIO as GPIO
#init module
#configure module
#set GPIO high
GPIO.output(GPIO.PIN#, 1)
#set GPIO low
GPIO.output(GPIO.PIN#, 0)
#read input
state = GPIO.input(GPIO.PIN#)

due to the GPIO multiplexing we add only these GPIOs in the base package:

PIN9, PIN10, PIN11, PIN12, PIN13, PIN14, PIN15, PIN16, PIN17, PIN18, PIN23, PIN24, PIN25, PIN26, PIN27, PIN28, PIN29, PIN31

you can use this as template, and if you for instance disable LCD in your linux image you can have access to all LCD pins too.

After you download the package from PyPi do as follows to install it:

#tar -zxvf iMX233_GPIO-0.1.0.tar.gz
#cd iMX233_GPIO-0.1.0.tar.gz
#sudo python install

after the installation you can use it this way:

#sudo python
>>> import iMX233_GPIO as GPIO
>>> GPIO.init() #init GPIOs
>>> GPIO.getcfg(GPIO.PIN31) #config PIN31 as GPIO
>>> GPIO.setcfg(GPIO.PIN31, GPIO.OUTPUT) #config PIN31 as output
>>> GPIO.output(GPIO.PIN31, GPIO.HIGH) #set PIN31 high
>>> GPIO.output(GPIO.PIN31, GPIO.LOW) #set PIN31 low
>>> GPIO.setcfg(GPIO.PIN31, GPIO.INPUT) #config PIN31 as input
>>> GPIO.input(GPIO.PIN31) #read PIN31

PINxx assignments is exactly as per imx233-OLinuXino-MAXI schematic

Maximum iMX233 GPIO toggle speed via Python is 15,6 kHz, which is kind of dissapointing, as /dev/mem C approach achieve about 5.7 6 Mhz, but Python is running slow on imx233 so this probably cause the slow GPIOs access.

On A13 is opposite /dev/mem is running slower at 1Mhz but pyA13 GPIO achieve up to 100 kHz as Python is running faster on A13.



A13-LCD43TS is EUR 35 LCD 480×272 which connects directly to A13-OLinuXino. On top of this it’s also possible to connect it to iMX233-OLinuXino as Claude Schwartz did and you can see here video how he play SNES Mario Bros on imx233-OLinuXino using same LCD

You have chance to win A13-LCD43TS today if you answer correctly our quiz question!

Today at 17.00 o’clock our local Bulgarian time (GMT+2) we will post on Twitter our questions.

You have one hour to reply to our tweet with the correct answer.

At 18.00 o’clock we will count the correct answers and ask to generate random number in range then announce the winner and ship the board by airmail in Monday.

Good Luck!

iMX233-OLinuXino-MICRO + 3G modem


Jann Christian made amazing project which could be base for Internet-Of-Things with iMX233-OLinuXino-MICRO and 3G modem

with the 3G modem you can implement IoT on places where WIFI and Wired Ethernet is missing, i.e. adding remote control to your far away in the mountains summer house and switching on/off things remotely.

Previous Older Entries