If you’re an Android fan, there’s a good chance you’ve heard of the Nexus 5X. The last entry in Google’s line of low-cost Nexus development phones should have closed the program on a high note, or at the very least maintained the same standards of quality and reliability as its predecessor. But unfortunately, a well known design flaw in the Nexus 5X means that the hardware is essentially a time-bomb. There are far too many reports of these phones entering into an endless bootloop right around the one year mark to say it’s just a coincidence.
The general consensus seems to be that faulty BGA chip soldering on the CPU works lose after about a year or so of thermal stress. Whatever the reason, [hillbillysam] recently found himself the proud owner of a dead Nexus 5X. Resigned to the fact that he would need to get a new phone, he at least wanted to get some of his data off the device before it went to that big landfill in the sky.
As it turns out these bootlooped phones can temporarily be revived by cooling them down, say by putting them in the freezer for a few hours. There’s plenty of debate as to why this works, but even our own [Lewin Day] can testify that it does seem to get the phone booting again; though only until it comes back up to operating temperature. With this in mind, [hillbillysam] reasoned that if he kept the phone as cold as possible while it was running, it may stay operational long enough for him to pull his files off of it over USB.
He couldn’t exactly freeze the phone in a block of ice, but remembering his high school chemistry, he came up with something pretty close. By adding salt to water, you can significantly lower temperature at which it freezes. Putting the phone into a watertight bag and submerging it in this supercooled solution is an easy and non-destructive way of keeping it very cold while still being accessible over USB.
His Nexus 5X was able to keep kicking the whole time it was luxuriating in its below-freezing saltwater bath, giving him plenty of time to copy everything he needed. It doesn’t sound like the kind of spa day we’d like to have personally, but to each their own.
It’s amazing how hackers are nowadays building increasingly complex hardware with SMD parts as small as grains of sand. Getting multilayer PCB’s and soldering stencils in small quantities for prototyping is easier than ever before. But Pick-and-Place — the process of taking parts and stuffing them on the PCB in preparation for soldering — is elusive, for several reasons. For one, it makes sense only if you plan to do volume production as the cost and time for just setting up the PnP machine for a small run is prohibitive. And a desktop PnP machine isn’t yet as ubiquitous as a 3D printer. Placing parts on the board is one process that still needs to be done manually. Just make sure you don’t sneeze when you’re doing it.
Of course the human is the slow part of this process. [Colin O’Flynn] wrote a python script that he calls MeatBagPnP to ease this bottleneck. It’s designed to look at a row in a parts position file generated from your EDA program and highlight on a render of the board where that part needs to be placed. The human then does what a robotic PnP would have done.
A bar code scanner is not necessary, but using one does make the process a bit quicker. When you scan a code on the part bag, the script highlights the row on the spreadsheet and puts a marker on the first instance of it on the board. After you’ve placed the part, pressing the space bar puts a marker on the next instance of the same value. The script shows it’s done after all parts of the same value are populated and you can then move on to the next part. If you don’t have a bar code scanner handy, you can highlight a row manually and it’ll tell you where to put that part. Check it out in the video below.
Of course, before you use this tool you need some prior preparation. You need a good PNG image of the board (both sides if it is double-sided) scaled so that it is the same dimensions as the target board. The parts position file generated from your EDA tool must use the lower left corner of the board as the origin. You then tell the tool the board dimensions and it scales up everything so that it can put the red markers at the designated XY positions. The script works for single and double-sided boards. For a board with just a few parts, it may not be worth the trouble of doing this, but if you are trying to manually populate a complex board with a lot of parts, using a script like this could make the process a lot less painful.
The project is still fresh and rough around the edges, so if you have comments or feedback to offer, [Colin] is listening.
[Colin]’s name ought to ring a bell — he’s the hacker who built ChipWhisperer which took 2nd Prize at The Hackaday Prize in 2014. The MeatBagPnP project is a result of having worked at building increasingly complex boards manually and trying to make the process easier. In addition to the walk-through of how the script works after the break we’ve embedded his other video from three years back when he was stuffing parts — including BGA’s — the hard way and then reflowing them in a Chinese oven with hacked firmware.
Upgrading RAM in the average computer is a relatively trivial task. Pop the case open, and you slide the new sticks into the extra slots. It’s not the same case for smartphones and tablets — in the endless quest for the slimmest form factor, all parts are permanently soldered. In addition, every device is essentially bespoke hardware; there’s no single overarching hardware standard for RAM in portable devices. You could find yourself searching high and low for the right chips, and if you do track them down, the minimum order quantity may very well be in the thousands.
Unless, of course, you had access to the Shenzhen markets where it’s possible to buy sample quantities of almost anything. Given access to the right parts, and the ability to solder BGA packages, it’s a simple enough job to swap a bigger RAM chip on top of the CPU during the repair.
It was but two weeks ago when I told my story of woe — the tale of an LG Nexus 5X that fell ill, seemingly due to a manufacturing fault at birth. I managed to disassemble it and made my way through a semi-successful attempt at repair, relying on a freezer and hairdryer to coax it back to life long enough to backup my data. Try as I might, however, I simply couldn’t get the phone running for more than ten minutes at a time.
All was not in vain, however! I was rewarded for documenting my struggles with the vast experience and knowledge of the wider Internet: “Hairdryers don’t get as hot as heatguns!”
It turned out I had just assumed that two similar devices, both relying on a hot bit of metal and a fan as their primary components, must be virtually identical if rated at a similar power draw. I was wrong! Apparently the average hairdryer stays well cooler than 150 degrees Celsius to avoid melting one’s silky locks or burning the skin. I even learned that apparently, wet hair melts at a lower temperature than dry hair. Who knew?
Armed with this knowledge, I rushed out and bought the cheapest heat gun I could find — around $50. Rated up to 600 degrees C, this was definitely going to be hotter than the hairdryer. With the prevailing opinion being that I had not applied enough heat in general, I decided to also increase the heating period to 90 seconds, up from a quick 30 second pass originally.
Warranty shmarranty — toss the phone in the oven! There’s apparently a problem with the assembly of the Nexus 5X smartphones, and it looks like it is due to faulty BGA chip soldering. LG USA has had enough problems with the phone that they may not even have enough parts or new units to fix it, so they’re offering a refund. But we all know how it is to get attached to a device, right?
So [Alex] disassembled his beloved phone, pulled out the board in question, and gave it the XBox Red Ring Of Death treatment. He placed the board on some insulating aluminum foil, and baked it for six and a half minutes. Season with lemon and pepper, and serve! We’re honestly surprised that sticking the affected board into the oven at 195° C / 390° F for a few minutes would work at all. Isn’t that a low temperature for soldering, especially with a lead-free mix? Could it have been a problem with humidity after all? Continue reading “Nexus 5X Phone Resurrected By The Oven”→
It’s well-known that buying Flash storage devices from cheap online retailers is fraught with danger. Stories abound of multi-gigabyte drives that turn out to be multi-megabyte ones engineered to falsely report their capacity. So when [Jason Gin] found a source of 64GB Toshiba eMMC chips for only $6 per device he bought a few, but was prepared for disappointment.
To test them, he decided to use an SD card interface. There are minor differences between eMMC and SD, but the interfaces are electrically the same and in most cases an SD controller will happily do business with an eMMC. It was not however an easy task to connect the two — these eMMCs were in BGA packages, hardly the easiest ones to work with. He resorted to dead-bug soldering the relevant interface wires to SD lines, and connecting up his computer.
His first attempt was something of a failure, wiring the chip to the PCB of a cheap USB-to-SD adaptor. This did not put him off though, he followed it up by cracking open a very old 2GB SD card that contained a PCB instead of being potted, and soldering his eMMC in place of its Flash and controller. This even fit in the original SD housing, and met with success when plugged into more reliable SD card readers. He was thus able to confirm the capacity of his chips.
His blog post is worth a read for more than just the very fine soldering involved. He takes us through some of the intricacies of SD interfacing, as well as talking at length about the decoupling and termination required to make a reliable connection. We particularly like his use of an area of unconnected BGA balls as prototyping space for decouplers.
One day [Andy] was cruising around eBay and spotted something interesting. Forty Virtex-E FPGAs for two quid each. These are the big boys of the FPGA world, with 512 user IO pins, almost 200,000 logic gates, packed into a 676-ball BGA package. These are not chips designed for the hobbyist. These chips are not designed for boards with less than six layers. These chips aren’t even designed for boards with 6/6mil tolerances from the usual suspects in China. By any account, a 676-ball package is not like a big keep out sign for hobbyists. You don’t turn down a £2 class in advanced PCB design, though, leading to one of the most impressive ‘I just bought some crap on eBay’ projects we’ve seen.
The project [Andy] had in mind for these chips was a generic dev board, which meant breaking out the IO pins and connecting some SRAM, SDRAM, and Flash memory. The first issue with this project is escape routing all the balls. Xilinx published a handy application note that recommends specific design parameters for the traces of copper under the chip. Unfortunately, this was a six-layer board, and the design rules in the application note were for 5/5mil traces. [Andy]’s board house can’t do six-layer boards, and their design rules are for 6/6mil traces. To solve this problem, [Andy] just didn’t route the inner balls, and hoped the 5mil traces would work out.
With 676 tiny little pads on a PCB, the clocks routed, power supply implemented, too many decoupling caps on the back, differential pairs, static RAM, a few LEDs placed just for fun, [Andy] had to solder this thing up. Since the FPGA was oddly one of the less expensive items on the BOM, he soldered that first, just to see if it would work. It did, which meant it was time to place the RAM, Flash, and dozens of decoupling caps. Everything went relatively smoothly – the only problem was the tiny 0402 decoupling caps on the back of the board. This was, by far, the hardest part of the board to solder. [Andy] only managed to get most of the decoupling caps on with a hot air gun. That was good enough to bring the board up, but he’ll have to figure some other way of soldering those caps for the other 30 or so boards.