De-capping ICs for fun and profit, but mostly fun.

Some time back, a friend @codfishcatfish was building a GPS disciplined oscillator for radio measurements. Part of the circuit uses a MAX232 device to interface the low voltage digital signals to a PC serial port. He found his cheap (from eBay) MAX232s got very hot and failed in use.

It was obvious the devices were fake, so I offered to tear one down to see what it really was, a cheap clone or a re-badged something else?


A couple of sacrificial fake ICs
A couple of sacrificial fake ICs

The standard technique to remove all the epoxy and metal to leave the bare silicon die is to use strong nitric acid. So I cut the legs off the chips, no point wasting acid dissolving those, and ground away some of the epoxy resin to speed up the dissolution.

ICs with legs and some of the epoxy package removed
ICs with legs and some of the epoxy package removed

Soaking the ICs for an hour in room temperature nitric acid had no discernible effect, so I heated up the acid. The reaction became very vigorous!

It took about 20 minutes to remove sufficient epoxy to see the silicon die – it also removed the lead-frame and bond-wires so there was no chance to test the ICs after de-capping.


Cruddy mess after the acid finishes its work
Cruddy mess after the acid finishes its work


After the acid had done its work the bare die was visible in both ICs
After the acid had done its work the bare die was visible in both ICs

The ICs were dried and the die removed by scraping away the carbonised epoxy with a scalpel. This done, the die could be examined under high magnification to see if it looked anything like a real MAX232 or I could see any other identifying features.

Bare die of fake MAX232
Bare die of fake MAX232

Comparison with a real MAX232 die proves these ICs are fake. The only identification I could find on the die is the following

Identification marks
Identification marks

So I’m non the wiser as to who actually made these, but the device does seem to show a general resemblance to the layout of a real MAX232 – they didn’t just program a micro-controller to do the job or something similar.

It was just a fun diversion and a chance to try something I’d wanted to do for a while. I might try to find some more interesting ICs to pull apart and take better images of.

Eclipse chasing

Can you really be an eclipse chaser if you’ve only actually chased one eclipse?
My chased eclipse was August 1999 – south west England. Back in the mid 1980s I had a book of fascinating astronomical facts, it listed the dates of upcoming eclipses until the far-off Year 2000. I decided that I’d see that one, and as time passed, I did find myself watching very cloudy skies from a side road near the hurlers stone circle. The sky did darken at the appointed time, the surrounding fields lit up with camera flashes and there was a genteel sense of disappointment when the sky cleared for a glorious sunny afternoon shortly after the end of the eclipse.

I’ve since caught a few other eclipses visible from London, but I’d not gone out of my way to travel to see any. I’ll not count the North American October 2014 partial eclipse as chasing because I was already in the country for other reasons.

Of course it was cloudy for the big event today. My preparation of solar film, pinholes and time-lapse camera was for nothing. With about ten minutes until first contact between sun and moon, I decided I’d at least have a try at logging the change in light levels.

I quickly bodged together an Arduino, an SD card and a light sensor, and put it in the garden. The plan being the thick cloud cover may stop be seeing the ellipse directly, but would act as a perfect diffuser for making whole-sky light level measurements.

Quick and dirty light logger

The graph shows the result – it got dark(er) when it should have.


The y-axis units should be Lux, but are uncalibrated.

Other eclipses during my life.

July 1982 – No memory of this one.
December 1982 – No memory of this one either.
May 1984 – Vague memory of my Grandfather trying to view this though smoked glass.
May 1994 – Watched this though a pinhole in card held up to my eye.
October 1996 – I must have watched this, but I can’t recall it.
August 1999 – The big one, had planned to watch this since the mid 1980s. Got stuck in traffic close to our chosen viewing spot (along with half of Cornwall and the BBC), watched from the side of the road. Cloudy, but magic.
May 2003 – Far too early for me.
October 2005 – Set up with telescope and camera at work, clouds rolled in. Managed to get the occasional glimpse of the sun in projection though the telescope.
March 2006 – May have tried to watch this one, but it was only a tiny fraction partial eclipse and I was deep in PhD writing up, so no memory of this eclipse.
August 2008 – Another tiny fraction partial eclipse, I think I tried to spot it using a stack of CDs as a solar filter.
January 2011 – Early and cloudy, nothing seen.
October 2014Nicely visible from a front porch in Minneapolis
March 2015 – as above, cloudy but at least some data from the eclipse.

RTLSDR + MatLab 2014b

Horribly geeky post, more for my own information than anything. Might help others.

After installing MatLab 2014b on OSX, I thought it might be fun to see if it’ll work with an RTLSDR dongle – if you’ve a license you can download a driver package for the MatLab communication toolbox from Mathworks (No, I’ll not give you or help you get a pirate copy.)

The RTL support package installs ok, but it wouldn’t work with the existing librtlsdr.0.dylib library on my system. It seems the library had been installed with a Compatibility Version number of 0.0.0


Recompiling the library from scratch, or installing it from homebrew didn’t fix the error. A nose around in the  build folder for librtlsdr showed that no compatibility version number was being set when the library was being linked (final step in the compile process.)

The solution was to edit the link.txt file in /build/src/CMakeFiles/rtlsdr_shared.dir
There’s only one long line in the file, I changed it to read:

/usr/bin/cc  -O3 -DNDEBUG -dynamiclib -compatibility_version 1.0 -Wl,-headerpad_max_install_names -current_version 0.5.3 -o librtlsdr.0.5.3.dylib -install_name /Users/dm/scratch/rtlsdr/librtlsdr-0.5.3/build/src/librtlsdr.0.dylib CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o CMakeFiles/rtlsdr_shared.dir/tuner_r82xx.c.o /usr/local/lib/libusb-1.0.dylib 

[all the above should be on one line]

Then the library was rebuilt (issue the make command in build.)