2020-09-22

Breadbee: Build your own single board computer

Background

Back in April, the hardware news site cnx-software featured a very nice new small Linux board called Breadbee, that was designed and still being developed by one of the site's readers, Daniel Palmer (aka 'dgp'). The board has many unique particularities that appealed me:

  • it is small, very small, about 3x3cm, barely larger than the Ethernet jack, because yes, at this size, it comes with Ethernet!
  • it is quite cheap, roughly $10 for a complete board in small quantities
  • it is entirely made out of discrete components that are human-friendly and it can be assembled at home!
  • despite its small size, it comes with a 1 GHz Cortex A7 CPU, 64 MB RAM, 16 MB SPI NOR flash, and has plenty of I/Os available.
  • Daniel wants it to be not only blob-free, but also supported by a mainline Linux kernel

Daniel had started assembling and giving away a few of these to various testers. I could have been interested but had no immediate use case for it and didn't want to abuse. But Daniel insisted on sending me the required parts so that I could try to assemble two boards. I guess he was interested in testing how feasible it was for the board to be assembled by an amateur, and in sharing experience to improve the design. With that in mind, I finally accepted, and after a few months (due to lock down here) I received his package with all the components to make two boards plus quite some extras allowing me to fail multiple times.



Presentation of the board

The board exists in two versions, the original one, made by JLCPCB and the new one, made by OSH Park with a much higher quality. I was originally impressed by the precision of the first board until I met a number of difficulties related to the insufficient solder mask (see below), but was totally impressed by the second version! The blue one is the JLCPCB one, the purple one is made by OSH Park.


The board is made around an MStar/SigmaStar MSC313E system-on-chip. This device is normally found in IP cameras. It is a very interesting chip to make a small hand-solderable Linux-based computer, because the RAM chip is integrated, so there are very few pins (80) and it comes in a QFN package which isn't as painful to deal with as BGA. Note that the 0.35mm pin pitch is still very small: pins are 0.18mm wide and spaced 0.17mm. The chip has quite some connectivity, such as USB 2.0 (host/device), Ethernet with integrated PHY, meaning that an Ethernet jack with integrated magnetics is all you need to connect to a network, SPI to access a NOR flash for the operating system, I2S for sound, and plenty of GPIO. The chip itself can be found for ~$2.10/pc by 5, making it an appealing competitor to ESP32 and other WiFi-based chips whenever TCP/IP is involved, because it will allow to run a real operating system with a solid software stack.

It's visible that 1/4 of the board is used by decoupling capacitors and 1/4 by the DC-DC voltage regulation, so depending where the chip is expected to be used, it might be possible to achieve much smaller footprints if needed (e.g. install it inside a USB connector for example).

The board contains a USB-to-serial adapter, namely a CH340E, in TSOP10 form factor, allowing to access the SoC's console from a PC. The same micro-USB port that is used for the console is also used to power the board. I would personally have wired it differently, by powering the CH340E's VCC from the USB connector, so that the PC optionally powers the board. This would ease development by keeping the serial port continually connected even when the board is powered down (from an external power adapter or an onboard switch or jumper allowing to connect it to the micro-USB port). But this is a minor detail.

The boot loader and operating system are stored in an SPI NOR flash. This flash is 16 MB. For those fearing this is a bit tight, a few vendors now provide 32 MB models but rare are those able to provide it in SOP-8 form factor. At least Macronix does with the MX25L25645G, though it's untested yet. Beyond this there are SPI-NAND solutions storing up to 512 MB but requiring a different driver as they may or may not emulate SPI-NOR. Otherwise there are enough I/Os on the chip to attach an SD-card. But honestly when you see this as a potential alternative to replace an ESP32, 16MB ought to be way sufficient for many users!

Assembling the board

 

Prepare everything

Let's be honest on this: assembling the board is not for everybody, you need to have quite some experience soldering SMD components, to have the patience to fix your mistakes and not to get discouraged when you fear you've fried something, because you will make mistakes. In addition you need a few tools:

  • hot air gun with controllable temperature and air flow. You don't need the temperature to be accurate (most are not), you just need to know how to set it to solder or desolder; a little bit of training on an old dead board might help. Even a $30 one like mine is OK. Do not even imagine doing anything right without this because you won't be able to desolder.

  • good quality tweezers. Mine are large and soft and not really convenient. Good ones must be very fine at the edge and rigid enough to perfectly hold the components. For example these ones look correct though I have not tested them.
  • a good soldering iron with a fine tip. Mine was 0.2mm when new, it's probably more 0.4mm now. You need it to be less than 0.5mm wide so that you can selectively solder each 0402 component (0.5mm wide). A wide one is appreciable to remove excess solder around the SoC. A knife-shaped one could be perfect.
  • thin and recent solder paste. Mine is type 4 (25-38µm balls) and was a few months old, making it look thicker and less sticky. A better one is type 5 (15-20µm balls) in a syringe-like dispenser. This is hard to find however, but I'll show some tricks below.
  • some liquid flux in a syringe. The more fluid the better. You will need it to help heat small components to place them correctly, to clean up the pads after you've badly messed up with a solder joint, to remove bridges between pins of the QFN chips, to remove excess solder from some joints, etc. Do not even start if you don't have some.
  • a multimeter, with thin probes.
  • a magnifying glass, and if possible, a microscope. I do have a tiny crappy microscope like this one. It's basically useless as you can't see further than a few mm deep so you can't inspect solder joints. My camera however has a macro mode at ~5000 DPI (about 5µm per pixel) and is extremely convenient to closely inspect the board.
  • some isopropylic alcoohol (IPA) to clean up the flux. If you can't find it, acetone also works but is not as good, and smells a lot. IPA is odorless, and probably less toxic.
  • a toothpick or any thin stick with a 0.5mm tip that can be used to precisely deposit the solder paste. Don't use a needle, that's too thin and the paste will not stick to it. A nail might work though (not tested).

If you're missing some tools, don't get too impatient, better order them and wait for them to arrive than ruin your board.


Use a large nozzle with the hot air gun

Contrary to what could seem intuitive when soldering 0.5mm wide components, you'll need a large nozzle on the hot air gun. The one approximately as large as the SoC is OK. The reasons for this are multiple:

  • the solder paste will not melt until the pads are hot enough, which means the PCB itself must be hot enough. With a thin nozzle, it will take ages to heat the PCB, and you can't easily stay perfectly aligned with the pads you're targetting without moving;
  • the lower air flow on the small one tends to encourage increasing the temperature to get solder joints to actually melt, but the higher temperature also results in burning plastics when you have connectors on your board;
  • you'd think that you can act individually on each component with a small nozzle, but it's almost the opposite. Usually there are just a few seconds of delay between adjacent solder joints start melting, since it mostly depends on the PCB's temperature. However with a small nozzle, you'll have a much faster air flow on output, which will quickly blow displace lightest components and pack them together. On the opposite, with a larger nozzle you'll use a slower and softer air flow that you send vertically. Many components will then see their joints melt but they have no reason for moving under this slow air flow, and using the tweezers you pick only the one you're interested in.
  • you'll need a large one anyway for the SoC and you certainly don't want to try to change it while it's hot.

 

Familiarize yourself with the board layout and print it

You don't want to discover the components while soldering them. Take some time to familiarize yourself with the board's schematic and its layout, to roughly understand what component does what and to locate them on the board. From memory I can say that at the middle top there's the DC-DC converter, on the right there's the NOR, below it are some decoupling capacitors and ethernet resistors, below is the crystal oscillator, middle bottom are other capacitors and the reset circuit, on the middle left, just 2 capacitors and test points, and above is the USB-serial adapter and 3 other capacitors. Simply knowing this helps locating the components you're about to place, and also helps avoid mistakes. Daniel provided a nice dynamic imprint that allows to spot components and their locations.

I personally like to print the whole layout with all components names and values on a full size sheet of paper that's placed on the table under the device I'm working on. And seeing the copper tracks on this layout definitely helps understand if a bridge between two solder joints is expected or not. I also like to note the various voltage measurement points, that provides a quick help during debugging.
 

 

Prepare all the small components

For most components that come in rolls, there's nothing more annoying than permanently switching tools between the tweezers needed to place the components and whatever you use to peel off the rolls and pick one component at a time. A solution to avoid this consists in checking the BOM (Bill of materials) first  and prepare as many of each type as needed. I like to place them on a sheet of paper  under their reference, though the risk of moving them away or mixing them is a bit high. They can also be placed in small plastic boxes or even in an ice tray. Note that values are not marked on 0402 components, so you must absolutely not mix them, or you'll need your multimeter to sort them out. You've been warned!
 
Note that the official list of components is here using a nice lookup interface. I tested an alternate list of resistors that reduces the number of references from 11 to 7. This is only useful if you want to order a small number of component rolls, otherwise it will not bring you any benefit.

 

Prepare the solder paste

Many people using solder paste for the first time believe it's a chemical that turns to tin once heated. That's wrong. It's made of microscopic tin balls glued toghether in fat liquid very similar to flux. This is visible in the following close-up of solder paste dispensed on a metal plate. The second image zooms on the first one at approx 2.5 µm per pixel:


When heated, the liquid evaporates, releases only the tin balls, which melt (if the temperature is high enough). Over time this liquid dries and become thicker, a bit like wax, and loses of it sticking abilities. It doesn't prevent the tin balls from melting, it's just that it doesn't want to stick to pads, forcing you to put a lot of it, and results in huge solder joints that bridge many pins at once.

If you got it with a syringe, as long as it gets out of the syringe it's probably OK. When it's in a small pot like mine, you never know. And you don't even know how long it was stored at the vendor's. A good test is to put a toothpick in it, and slowly pull. If it doesn't make a thin wire, it's probably not sticky enough. And if the toothpick stays vertical once planted just in a few millimeters, it's definitely too thick.

But do not worry, there are workarounds. A first one is that if the paste is slightly heated, it can become fluid and sticky again. For example if your soldering iron comes with a transformer block that's getting hot, you may leave the pot over it during all the operations.
 
Another solution consists in re-injecting a bit of fresh flux into it. That's what I've got used to do now. It's not great because it doesn't last long (i.e. 8 hours later it's thick again) but it allows me to reach the level of fluidity I want.

In order to prepare the solution, I just pick a few cubic millimeters of paste and place them in a metal cup. Then I add 1/4 to 1/3 in volume of flux and stir the mixture until it becomes fluid and sticky. It takes time to get them properly mixed, you need to be patient. If it still doesn't stick, you can add a bit more flux, but be careful that it doesn't become liquid. A good test is to use the toothpick, pick some and deposit it on a pad without pressing. If it sticks that's OK. If it spreads like ink, you'll need to add a bit more paste to thicken it again.
 

It could seem tempting to "fix" the whole pot of paste, but it's not a good idea considering that the fix doesn't last long: after a few days you'd get a thick block again and all you'd have achieved would be to waste a lot of flux.

 

Decide what method you'll use

There are at least 3 methods accessible at home to solder the components, and they don't require the same organization.

 

Soldering iron

This is the first method I tried. With a very fine tip, it is perfectly possible to solder all the small components. But let's face it, it is extremely difficult. If the tip isn't hot enough the solder doesn't stick to the pads and if it's too hot it oxidizes and the solder only melts as large balls creating bridges and you end up with something like below:

Yeah,there's way too much solder there. The only way I found to make this less of a hassle was by using solder paste on the first of the two pads, melt it with the soldering iron tip, then place the component on top of it using the tweezers, melt it again, then use the soldering wire to make the second joint. 
 
Never ever tin the two pads at once or you won't be able to place your component flat! If some tin leaks on one pad from a previous solder joint, restart with this one without tinning the other one. If the first of two joints leaks on a nearby pad, place the second component there before making the second joint so that in the eventuality where the second joint will leak as well, you won't end up with two tinned pads for the next component.

Given how close all components are to each other, it is necessary to process them in the same order, from the furthest to the closest of your hand so that the tip never touches an already installed component. Regardless you'll very likely cause shorts that need to be inspected under a microscope and/or with a multimeter.

Another important point to take into consideration is to always start from the thinnest components and finish with the tallest. A capacitor will hinder your access to a nearby resistor and an inductor will make it even worse. You'll note that this sometimes contractics the previous rule, especially for the alternating resistors and capacitors that are placed above the DC-DC converter, which probably took me one hour to install and fix.

From time to time you can use the hot gun to rectify your components alignment or smoothen the solder joints that show some spikes. You'll need to recheck afterwards because tall solder joints may spill over adjacent ones.

 

Hot air gun

This is the second method I tried, mainly in order to finish what I couldn't realistically finish with the soldering iron whose tip was oxidizing too fast. But the hot air gun comes with its own lot of challenges. You cannot solder individual components with it, you only operate within an area without much precision, so you spend your time heating what was already in place. If you blow too strongly, it will displace some components and create packs that are hard to separate. For this reason it's better to use a large nozzle with low speed air than a small nozzle with high speed air.

If you don't place a protective metal plate under your board, you'll ruin your desk. I used an aluminum plate that came from an old CD player for this. However if you place the board directly on the aluminum, it will not heat, which is the reason why I inserted a small piece of plywood between them, and attached everything using Kapton tape.
 

 

Another issue with the air gun is that you need to be very precise in the way you place the solder paste, because if you leave some on a nearby pad, it will melt and make it difficult to later place a component. So you have to proceed in groups of components, or aggregates. It's not always easy to proceed like this, because each component is close to another one so it's not always simple to delimit aggregates. This is what I tried on the first board captured in the photos below with solder paste that was too thick and thus too abundant, causing some components to move and some bridges to appear:


On this board it is possible to proceed like this, but whatever is around the DC-DC regulator is diffcult to split into small areas. Due to this, the temptation can be high to place all components at once and try to solder all of them in one go. And this is not a bad solution at all!

If you go this way, I'd suggest that you first place all capacitors, all resistors, and the LEDs, and proceed with all of these. Then you can add the inductors and the crystal oscillator, then the DC-DC, regulator. At this point you can mark a break, verify all your solder joints, check for shorts between nearby components (particularly resistors that are very close to capacitors and which tend to move), and you can connect a current-limited 5V PSU to the J1 connector and verify that you have the expected voltages on various test points, 3.3V, 1.8 and 1.0. Otherwise you need to debug. Once that's OK you can add the CH340E USB-serial chip, the micro-USB connector and test again. Once OK you just have to solder the SoC, the flash chip, and flip the board to solder the 3 0R resistors and 2 capacitors. Do not install the ethernet jack before the board is shown to work, as it will be a real pain to later solder/desolder.

 

Oven

No, I'm not talking about buying a reflow oven, just about using your kitchen's oven. I've done this many times already, including to fix issues under BGA chips, and it has become my preferred method, being easier, faster, and more accurate. You just need a thermometer to figure what temperature approximately to use, because as you can guess, the displayed temperature doesn't match at all the one in the oven, and while 10% difference are probably not important for cooking, they can make a big difference for soldering. I found that mine heats to about 260°C when it displays 230, and that temperature is perfect for melting solder paste. If you have multiple settings, prefer those with circulating hot air instead of those with a top infrared resistor: the latter one tends to heat black areas much more. Also it's very convenient to have a rotating plate.

The operating mode that works best for me is the following: I first place all the components like for the hot air gun, except the QFN chips since I know I'll have to fix them afterwards anyway, and except the USB connector in order to protect it against the risk of melting. I then place a small ceramic dish in the oven to hold the PCB, and pre-heat the oven until my thermometer shows it reaches about 260°C. Then I open it, I carefully place the PCB onto the dish, and let it cook for 4-5 minutes in circulating air mode.
 
 
Be very careful not to accidently enable microwaves! If your oven reaches a higher temperature, reduce the duration. Once the time is over, I open it again and have a look at the solder joints. It's possible they haven't melted yet, in which case only the flux will be gone and you'll see plenty of small shiny tin balls. In this case, cook it again for an extra 2 minutes and inspect again, solder joints should be smooth and shiny:
 
 
Once that's done, I stop the oven and it automatically enters a cool down phase which lasts a few minutes. After that the circuit is still very hot but can be picked using tweezers or by placing a knife underneath, and you can inspect it.

Some components will have moved, don't worry about that. Usually those with unequal amounts of solder paste on their pads will move. But overall it's less than 10% of them which get displaced.
 

Inspect very carefully because some components may turn 90 degrees and look normal:
 

 

Install the DC-DC regulator

The EA3036 probably is the most difficult piece to install. There's no clearance to operate around it, and being very small, its very light as well and floats on top of melted tin. As such, if you put too much solder, its pins will not make contact, as can be seen below. The worst part was when removing it and discovered a large amount of tin!


I found that you need to put almost no tin on the ground plane under it, much less than a cubic millimeter! Just put the minimum you can. One approach consits in just touching the ground plane with the tip of your soldering iron, and removing excess solder using solder wick, trying not to pull off the tracks. An alternative is to do that on the chip itself. Also, when you solder paste is very fluid, you can just leave a small drop.

The second difficulty is to figure how much solder paste is enough, and how much is too much.  I found that "painting" the pads with a toothpick impregnated with solder paste, making four thin, 1mm-wide, threads of paste passing through the center of the pads, gave best results. If you fear your paste is too liquid, dispense some on the chip's pins before placing it. As long as the solder quantity is well balanced between the 4 sides, the chip will not move and you can heat it vertically using the hot gun. Once done, inspect it using a microscope. There will likely be shorts, especially with the version 1 board, don't worry for that, you'll easily remove them using flux and the tip of your soldering iron:


What matters is to make sure the chip touches the PCB and is flat on it. If not, you'll need to heat it again and possibly to press over it using your tweezers. If it resists, it means you've put too much paste under it and you'll have to remove it, clean it and place it again.

Also double-check that the chip is well aligned. For example below, after it went through the oven, the regulator turned a little bit and displaced by one pin on two sides. But it's also possible that it's simply shifted by one pin, which is not always easy to spot. Thus be very careful, and fix it if needed:


Oh and by the way, after fixing the alignment of the chip above, I realized it was incorrectly turned so I had to desolder and solder it again after rotating it. By the way, while it used to be very difficult not to have shorts under the chip on the version 1 board, I never had any failure when desoldering and resoldering it on the new board!

Once the chip touches flat on each side, you can remove the bridges that possibly exist between some pins. Just dispense some flux on each side, and using your soldering iron tip, gently sweep each side by pressing against the chip a little bit. This will re-melt excess solder which will deposit on your tip. Clean the tip and repeat for another side. At the end the chip will be perfectly soldered with no bridge between pins.

 

Preliminary tests without the SoC

I found that it's better not to solder the SoC first. It reduces the risk of frying it and frying the voltage regulator. Same with the CH340E that's powered from the 3V3 output. This is why I prefer to solder all passives and the DC-DC regulator first, then test.

First, locate the 1.0V, 1.8V, 3.3V and 5V points, and verify using an ohm-meter that they're neither shorted to the ground nor shorted together.  A short to the ground may indicate a short under a capacitor or bleeding resistor. A short between each other indicates a short in the rare places where they come close to each other, very likely in the capacitor row at the bottom of the board, below the SoC. Once that looks OK, it's time to test.

For testing, I like to power the board through a current limiter circuit like this one I made out of an MCP2544
Mine is limited to about 250 mA max, which is enough to protect the DC-DC regulator for a short time. If you haven't yet soldered the micro-USB connector, just cut a USB cable and connect the red and black wires to the +5V and GND pins below. If you've already soldered the micro-USB connector, simply connect it using a regular cable to the current limiter. I preferred not to solder the connector too early because it's easier to solder the CH340E when the connector is not there.
 

When you find the voltages are OK, it's the moment to install the CH340E and the micro-USB connector. The CH304E is the second easiest device to install (the easiest one being the crystal oscillator). With the right amount of solder paste, it will align perfectly with no effort, even using your soldering iron if you want.

The micro-USB connector is less easy to solder because it can also float on the paste you'll place on the ground plane. Thus be careful and prefer to add some extra later than putting too much initially. If there's too much paste, it may short with the +5V pad under the connector (pin1 at the top). It's wise to verify there is no such short with an ohm-meter before connecting again. Once connected again, the device will drain about 2.4 mA if the chip works. Connecting it to a PC will show a USB-serial port if everything works. If you get USB errors you might have a short between one of the DM or DP pins and the ground (or between each other).

 

Installation of the SoC

The SoC is totally scary. It has a 0.35mm pitch, its pins are 0.18mm wide and there's only 0.17mm spacing between them. How is it possible to solder this by hand, you will wonder? Just trust your skills and do it! It's easier than it looks! Just like for the EA3036 DC-DC regulator, I found that painting 4 thin threads of solder paste over the pins on each side and doing the same on the chip before placing it works pretty well:
 

I find it convenient to also put a bit of paste on the chip itself and some flux on the ground plane. This is particularly handy after replacing the chip because the board is not perfectly smooth anymore and this allows each pin to start to grip the pads. It was mostly necessary for the v1 board, the v2 is of much better quality and I've made one without needing this:
 

 
However I do have a few warnings to mention:
  • the chip is large. Well, by "large" I mean that it has many pins per side (20) and that it is absolutely crucial that the paste is evenly spread between them on each side. If that's not the case, some pins will not be connected and you'll need to desolder it and try again. Be very careful about this.
  • only hold the chip using the tweezers. It has nothing to do with static electricity, it's just that if you hold it using your fingers, and put some paste on the chip itself, you can be certain that you'll put them in the paste at some point and make some areas uneven.
  • put very little paste on the ground plane, less than one cubic millimeter, or the chip will not touch on the sides. Worse, the ground plane acts like a heat spreader and once soldered it will be very hard to melt it again or remove any excess solder:

  • perfectly align the chip before heating. When the solder paste is placed, you won't see the alignment points anymore. Don't confuse the lines used to show capacitor locations with alignment points, they're not the same. In case of doubt, make sure there's an even pad width on each side and you'll be fine.
  • if you put too much solder paste on the pads, for example if there is some paste making bridges with the ground plane, better wipe it and try again.
  • do not wait too long after you've placed the paste, especially if you diluted it with flux, because it will progressively spill and expand.
Once properly placed, heat the SoC vertically using the hot air gun, and be patient. Make sure the PCB is not directly in contact with cold metal, as the heat from the ground plane could spread into it and prevent the solder from melting. Once the solder paste melts, you may see the alignment marks again. If you don't see them, it means they're perfectly under the chip. If the chip is properly aligned, the pads will look even all around. If you have the slightest doubt, don't worry, it means it's OK, because when it's wrong it's totally obvious, with 0.7mm difference in clear area between two sides.

Now's time for visual inspection using a microscope. If any pin looks disconnected (the pad looks like there's very little solder on it), you can try your luck by filling the hole using solder paste and melting it again, but it's likely that you'll need to desolder and resolder.

Once OK, you'll just have to clean the bridges. Do not worry if what you start with looks awful like this (these chips were replaced several times due to misconnected pins and the excess of solder starts to be quite visible):
 

Dispense some flux all around the chip, and slowly wipe it with the tip of your soldering iron in one direction from one corner to the next one. It will melt the solder under the tip and remove the excess that will stick to the tip. Just clean the tip after each pass. A knife-shaped tip is better for this operation but is not mandatory.
 

You'll need to visually inspect it again using a microscope, and you may have to clean up the excess flux using isopropylic alcoohol or acetone. I used to place the board in a glass and pour a bit of alcoohol on top then jiggle it for a few minutes:

A quick inspection after this shows that it's much better:

Note that there are two places where adjacent pins are connected together and these are not short circuits.

 

Install the flash

As anyone who engages in an electronic circuit, you've read the whole doc before starting, didn't you ? :-)  So you know it can take one hour to program the flash and that it had better been done prior to finishing.

I programmed mine using a Buspirate board, and it's indeed extremely slow (1 hour). It can be even twice as slow if you enable verify. The annoying part is that it doesn't work to program the flash in-circuit, so you really need to flash a working image before soldering it, and if it doesn't work you'll need to desolder it and fix it.

The flash is pretty easy to install. Just tin one pad on the board, then using tweezers, you place the chip while keeping the pad hot, until all pins are perfectly aligned with the other pads. Then you just need to solder the other pads and that's done.

You can clean the board, if you're lucky you're done with this side :-)  Doesn't it look awesome for something home-made ?

 

Quick test

When all this is installed, you can hope to start to communicate with the SoC. Locate the C38 capacitor at the bottom right below the SoC, it's the one used to reset the board. The reset pin is the one at the bottom, connected to the R23 resistor. Using your tweezers you can make a contact across the capacitor to reset the SoC again. Be extremely careful, the top pin is connected to +3.3V and the capacitor next to it is connected to 1.0V, if you short the two, you'll fry the chip. Just train yourself with the board disconnected first.

Then connect the board to your PC through the current limiter and possibly a current meter. Open a serial terminal at 115200 bps and observe. You likely won't see anything. Just reset the board using the tweezers as indicated above. You may see a greeting message speaking about IPL and HW RESET. This is starting to get pleasant, isn't it ? :-)
 
The board should be consuming about 80-100 mA at this point:
 

If it consumes much less (around 10mA) probably it's stuck in reset. Re-check all voltages and verify that the reset pin isn't pulled up, e.g. due to a short with one of the console pins. You can also check with an oscilloscope that you see a 24 MHz signal on the crystal oscillator pins. If it still doesn't do anything despite all voltages being good, it may indicate that there are still some bad solder joints below the SoC and that you'll need to fix them.

 

Now's time to finish

Disconnect everything, flip the board, solder the three 0R resistors (R11, R17 & R12), and the two capacitors C33 & C34:
 

 Solder the Ethernet jack, and you're done.
 

Your new computer should boot and greet you with a console. Note that by default U-Boot waits up to 10 seconds so the board may remain silent for 10 seconds after displaying some garbage. That's expected.

If things go wrong

I should have titled this "when things go wrong" because things will go wrong. A few of the possible issues are listed here.


Short circuits

The first issues I met with the initial JLCPCB board was that the solder mask was insufficient and there were no protection between adjacent pads. There were lots of shorts everywhere. I had to desolder and resolder the USB-serial chip 5 times, the micro-USB connector 3 times, the SoC 6 times and the DC-DC 8 times, all of this because of shorts under them. In such a situation there's no other solution but visual inspection using a microscope, and putting the smallest possible amount of solder paste under the chips, and most of it in visible areas so that excess solder goes where you can pick it. Fortunately with the latest versions of the PCB, the solder mask is excellent, the most accurate I've ever seen, and this problem hasn't happened any single time at all. However there can still be shorts between pins on the CH340E chip and between nearby components.
 
For the CH340E chip, the best way to remove thin shorts is to put some flux and use a clean soldering iron tip. The tin will melt and fix by itself. If there's too much tin, or if you accidently add some with your tip, you'll need to remove it using solder wick. The tiny short below between pins 2 and 3 is quite scary given how thin it is, it was only visible in macro mode, but not under the magnifying glass. And it prevented the chip from working. Fortunately this cannot happen anymore with the new boards:
 

Be extremely careful with solder wick, it's always with this that copper tracks get pulled off, like here:
 
 
Never pull it if it doesn't want to come, it means some solder managed to cool down, and that you need to properly heat it up until it comes by itself. Overall it was needed with the version 1 of the board due to the numerous shorts and the incomplete solder mask, but with version 2 I never needed it.


For nearby components like a resistor and a capacitor, let's first check on the board layout if they are supposed to touch or not, because most of the adjacent ones have pads in common and actually touch only because of this. If they are not supposed to touch, you'll need to separate them. Most of the time I try with the iron because I believe I can, but it's always a mess. You can't add more solder since there's already too much, and you can't heat both sides of the component without adding some. You end up making the component very dirty or displacing other ones. The cleanest method consists in patiently heating the area using the hot air gun placed vertically over the component at a low air flow rate, and waiting for its joints to melt so that you can pick it using your tweezers. It may happen that it will come with the other one it was attached to. It's not dramatic, just pick them both and separate them (this time the iron might make this easier). Remove the excess solder, clean them up and place them again.

 

Misoriented components

Only for a few components the orientation matters: the 4 integrated circuits and the 2 LEDs. For all passives you don't care, neither do you for the crystal oscillator. The inductors require a bit of care, because they look perfectly square from above but only support 2 positions out of 4, so better double-check when placing them.

If you figure that you misplaced a component, you'll need to desolder it using the hot air gun, clean its pins, clean the pads, and solder it again. Note that it's exactly what happened to me with the EA3036 on the last board, I got a bit too confident when soldering it, and fortunately I rechecked before plugging. If you need to desolder and resolder the EA3036 or the MSC313E, you may need to put some paste on the chip's pins to compensate for the roughness of the board due to solder residue, as shown below:


For LEDs, you'd rather check with your multimeter first. Many have a diode position allowing you to spot the + (anode) and - (cathode). Be careful if your multimeter only has a resistor position, as many of them have their polarity reversed in ohm-meter mode, so better double-check on a known diode first. Otherwise you can use a battery and a 1k resistor to figure the LEDs polarity.


Wrong voltages

If two voltages appear identical and match a correct one (e.g. 1.8V), you likely have a short between their outputs. 1.0V and 1.8V outputs are very close to each other at several places, and 1.0 and 3.3V as well, especially in the capacitors area below the SoC.
 
If two voltages appear identical and don't match any known one (e.g. 1.5V or 2.4V) you likely have a short between their feedback sensing circuits. This most likely concerns the 1.0V and 3.3V that are in the LED area at the top of the circuit.

If an output shows almost 5V it may indicate that a feedback resistor isn't properly connected, that the pin is tied to ground, or that the equivalent feedback ping on the DC-DC regulator doesn't properly touch its pad. You'll need to locate it on the schematic and find it on the layout to verify.

If an output shows 0V, it could indicate that the output pin of the DC-DC regulator doesn't properly touch its pad, that the feedback pin is shorted with a power pin, or that the output pin is shorted with ground (making the inductor heat up very quickly).

If voltages look inverted, or two voltages seem wrong, with one too high and the other two low, it's very likely that you've mixed up feedback resistors, so you'll have to recheck them.


The system doesn't start

The yellow LED (top left) should light firmly when things are OK. If you don't see it turn on or if you observe just a faint glow in the dark, the chip doens't boot. For example it just stops on "IPL" or "HW RESET". This could indicate it doesn't see the flash (poor connections, bad contents), doesn't see its internal DDR (bad connection under the VDD pins at the top left corner of the SoC) or that some of the 0R resistors are missing on the other side.


The system displays output but takes no input

This just looks like a short on the Rx pin of the SoC or a misconnected pad, look under the bottom right corner.

 

Some chip heats a lot

That's not expected. The EA3036 remains barely warm to the touch, the flash and the USB adapter are totally cold, only the SoC heats up. Something heating up may indicate a short circuit or a dead component, do not let the power connected too long when checking, and avoid connecting it to your PC!

 

Did I kill that chip ?

I fried two regulators and one SoC with the first generation of boards that brought me tons of shorts, and I didn't have my current limiting circuit. Other than that, the components resist severe abuse. Let me give a few examples:
  • EA3036 desoldered/resoldered 8 times
  • SoC desoldered/resoldered 6 times. Kept at 650°C for more than 30 seconds at least once when it refused to desolder (the PCB started to turn slightly brown).
  • SoC wrongly powered on 1.8V several times due to shorts between 1.0 and 1.8V. The DDR controller finally died when 1.8V and 3.3V were shorted for an extended period of time, but the SoC continues to respond to reset.
  • flash can be desoldered/resoldered many times without loosing contents
  • crystal oscillator fell on the floor with no damage

So if you're not seeing something working, it's natural to wonder if you did anything wrong that might have resulted in killing the chip. But I'd say it's extremely unlikely, even with repeated mistakes. As long as the voltages are present on output, the DC-DC regulator does its job. As long as the 24 MHz crystal shows a signal, the SoC isn't completely dead. You'd rather desolder, clean the pins and resolder than consider you killed something.

What can be done with that board

The board is still in active development, Daniel got a number of his patches integrated into kernel 5.9, and the remaining ones will hopefully be in 5.10. His development branches work pretty fine for daily use already. As such, in its current state, this board allows to do whatever can be done with a computer having 64 MB RAM and an Ethernet port. It can be a small proxy, SSH bounce point, VPN gateway, sensor for various stuff, etc.

In addition Daniel has already made some breakout boards for micro-SD cards, GPIO and USB connectors. For example with a USB-OTG port, the card could become a smart USB-ethernet port, featuring internet connectivity via a VPN. With I2S and micro-SD it could be used as a music player. It could also be integrated into a digital music instrument to record/play MIDI files stored on a remote computer.

There is also a WiFi breakout board supporting small and inexpensive USB WiFi cards, opening the field of IoT, where this board can become much more interesting than the regular ESP32 devices:
 

There are countless possibilities in fact, and seeing that thanks to Daniel's work you can now build your own Linux computer yourself opens even more possibilities.

Perspectives

Actually while I wasn't initially much interested in playing with that board since I didn't have an immediate use for it, I figured it could make a very good option for our next generation ALOHA Pocket at work. It's more powerful than the previous one made out of a GL.iNet 6416A, will work with a mainline kernel, which will ease our port, and really looks like an awesomely geeky device! At least I was curious enough to try to boot the ALOHA on it and it worked pretty well ;-)

I'm pretty sure there are plenty of usages to be found in home automation. Let's just connect the WiFi breakout board and a touch display over SPI to see what can be done. Currently equivalent devices run on microcontrollers with limited or even insecure HTTP/TCP stacks. Here you could have a full blown HTTP/REST/H2/gRPC/MQTT/QUIC/whatever over TCP/TLS and the standard tools you use every day to program your home applications. Plus you could ssh into your device to upgrade or debug it.

Improvements

Daniel is looking at other chips of the same family. Some have more RAM, more cores, more MHz, etc. I think that in the current state, the only trivial improvement could be to double the NOR flash size and/or to add an SD card adapter. It's interesting to follow Daniel's work on the kernel, as the chip supports a watchdog, some crypto extensions, a hardware RNG, sound and plenty of other stuff. There's still some work to do, and you can help by testing the development code and giving feedback to Daniel.

Final words

Not only I want to thank Daniel for sending me this kit and making me push my soldering skills beyond the previous limits, but I really want to congratulate it for this absolutely awesome project. I'm willing to help him as time permits to review and test code. We really need such projects to clean the current state of the IoT world by deploying clean and secure operating systems. And such boards are fantastic for education. I've already bought more packs of components to give away and let others make their own boards in turn, hoping this can become viral :-)


No comments:

Post a Comment