Reverse engineering a circuit to repair faulty boards

I was working on a personal project in the UWM Makerspace the other day, when Chris Beimborn, the Outreach Coordinater of the College of Engineering and Applied Science (CEAS), as well as the leader of a program called EnQuest, an Engineering program for high school age girls.

Over the past semester, they have been working on assembling Solar Panel stands and wiring up some cellphone charger boards for a project for a village in Guatemala. This mountainous village has no electricity, since the power lines were cut during a civil war. However, they still have a need for electricity, and cell phones for internet access. The area has cell phone reception, just no electricity. This is their means for communication with the world.

So, EnQuest was assembling these boards for the solar phone chargers, so villagers wouldn’t have to walk to the next village over to charge their phones. These chargers were then to be brought over by the UWM chapter of Engineering without Borders.

So, Chris comes to me asking if I could take a look at some boards. The boards were shipping out the next day, about about 10 of them weren’t working properly, as well as 2 solar panel assemblies. The SMD work was done by a group of volunteers who weren’t able to repair them in time, so I decided to take a look.

First I started with the datasheet of the only IC on the board, the TPS5516. Looking at the recommended schematic, I drew it out on a whiteboard. 

I then compared it to the printed circuit board I had on my desk, and annotated the schematic. I probed around with a multimeter. On some of the boards I was getting some odd readings, the V_Sense and V_Reg pins were reading the 5V but then the V_Out was reading 2.9V. The PG pin wasn’t on, so the power indicator light was off. PG ended up standing for “Power Good”

Probing around more, all of the other components were reading fine. I then decided to look under our microscope to see if I could find anything that was wrong with the soldering job. Immediately I was greeted with two mistakes notorious with SMD work.

Green: Solder bridging SMD pins
Red: Cold solder joint from hand soldering

So, pins were bridged on just about every faulty board. In addition, on half of these boards, the capacitor that controls the oscillation for the buck converter wasn’t even making contact!

After cleaning up the solder jobs and cleaning the flux off the board with isopropyl alcohol,  I was able to restore 9 out of 10 boards back to working order! The 10th board had a trace that was ripped off from thermal stress when the high-schoolers were soldering the large inductors on.

We were then able to package and ship them out, just in time for the Engineering without Borders team to take them to the airport.

Back at it with the SDR

My latest SDR project is a simple idea- a universal handicap door opening fob. The idea came to me one day, watching a lady in a wheel chair struggle to open the handicap door. She had to wheel up to the door, hit the button, wheel back, and then wheel forward through the door. And it took a good 10-20 seconds in the Wisconsin cold to wait for the door to open as well.

After witnessing this, every time I went through a building entrance, I imagined how someone with a physical disability might interact with the doors. And every time I noticed something that would really make entry a whole ordeal. It’s something that I feel engineers, building architects, whatever, just hadn’t thought about.

After about a week of making these observations, I started to notice the button placement, many times this box would be affixed to the side of a brick wall. And that got me thinking, “Do they really drill and run a cord through a block of concrete??” It dawned on me that it is actually a wireless transmitter and receiver!

So I broke out my RTL-SDR module and started recording. I used SDR# software to record the transmissions of 12 transmitters all around the EMS and Physics buildings. I ended up finding that it was an On/Off keyed signal, pretty standard and easy to work with.

The transmitters themselves are centered around 434 MHz, just like a car fob or garage opener. I found the frequency by using the FCC website, which contains a datasheet of every wireless transceiver in the US with FCC compliance. The datasheet of the transmitter contains the output power, the frequency, and other aspects that are useful for reverse engineering.

Picture of the transmission signal
Two of the recorded transmission signals

So, with the SDR#, I was able to record the audio of the transmitted signal, decoded from the carrier wave. Since it is On/Off keyed, the signal resembles binary. I thought it would be very inconvenient to make sense of 12 different signals like this, so I wrote a script in Matlab found here:

//11// 330C30C30C061980CC30C30C30C066 186033000
//02// 330C30C30C066186030CC301986186 186033000

//09// 61980C330C061980CC301866186186 186033000
//03// CC30C30186603301980CC30C061866 186033000
//07// C1980C1983018330198301980CC0660C066033000
//08// 1866030CC3018660330C066030C330 1866033000

//05// 904104101208202410410120820820809000


So here were the different signals decoded into HEX. Using this I was able to re-transmit the data using my Hack-RF SDR transceiver. Transmitting this, I was able to open each individual door remotely. I am also working on finding a general pattern. For example, each different model seems to have a different transmission protocol. There seems to be a preamble determining the model, a unique identifier, then another section that seems to transmit the model again.

My next steps are to build a schematic with a half-duplex transceiver IC, a microcontroller, and then some sort of EEPROM chip to record and store transmissions. This way any models I don’t have access to will still be able to be opened by this fob I create.

I feel like this will greatly benefit those with physical disabilities, allowing such individuals to go through the door without having to wait outside while the door opens. I imagine this would greatly improve the quality of life for these individuals.

How I 3D Printed My Kidneys

So, the other week I was in the hospital for extreme abdominal pain. Turns out, after a CAT scan, I found out I had kidney stones. Worst pain I’ve ever felt.

On the plus side, I was able to ask the CT techs for the DICOM files! DICOM is a protocol that stands for Digital Imaging and Communications in Medicine, and this is what the CAT scan machine spits out.

What a CAT scan machine does is take an X-ray while moving the patient (me) and rotating the x-ray aperture (emitter) and corresponding sensors. The procedure took a couple of minutes, and the result was thousands of individual x-ray image “slices” from all different angles. Using clever maths, it’s possible to use those shots from multiple angles to determine the density of whatever is being imaged. In this case, it was my abdomen and kidneys. The darker areas shows are areas that did not absorb much radiation: skin, muscle, fat, etc. The lighter areas are areas that bounced back much of the radiation, namely my organs and bones.

The CT tech’s computer takes all of these individual slices, stitches them together, and creates a 3D model that they can analyze, and view in both 3D and 2D. The 2D slices generally correspond to the 3 planes of the body, Sagittal, Coronal, and Transverse, planes. Through these planes, they can pan back and forth through the body.

With those sliders, it’s possible to pan back and forth, through the body, looking at all sorts of different layers.

Now, the files the techs gave me were only 2D, so I used a program called 3D slicer. It can be found here: . It is a very powerful program, allowing you to identify, or trace, over the individual slices. The end result is a 3D composite made from the individual slices. Here is what the output from 3d slicer looked like:

Note that there are a lot of lumps, ridges, and points, that are due to artifacts from the slicing process. I then put the raw .obj files and opened them up in Z-Brush. Z-Brush is a powerful and intuitive sculpting and modeling program, usually used for digital artists. With it, I was able to remove the many artifacts and smooth the kidney out to what it should look like:

I then opened up the .obj file in Slic3r (not to be confused with 3d slicer), added support material, and got the file ready to be printed. I exported it as gcode and got it ready to print!


Unfortunately I haven’t had a chance to actually print the kidneys, I’ve been too busy with work and school.

I plan to stop at Milwaukee Makespace this Tuesday, and I will upload the pictures of it as soon as the print is done!