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: http://pastie.org/9283768
this is with Debian distribution built with Kernel 3.11 when MOD-RTL8188CU is plug in USB: http://pastie.org/9283772 everything is normal
these are the error messages with same Debian distribution when USB flash drive is plug in: http://pastie.org/9283780
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.