Soldered up and… a pin isn’t soldered

So last week I got my v0.6.1 PCBs from DirtyPCBs and I decided to solder one of the boards and see how it improves upon version 0.6.0. This is my second time working with 0603 and QFNs. The first time didn’t work so well that this time I had to get a stencil and solder  paste. It turned out to be a pretty good experience. A quick swipe of paste onto the board, placed a few components, just hot air the boards and it was done in less than an hour! Shiny and everything.

Got it hooked to the computer, BSLed fine, loaded the firmware, keyboard detected, every keys works, except for F1, 2, W, CapsLock, S and X :(. Well that sucked. Turns out a pin wasn’t soldered under the QFN chip, This has become a bit annoying. Maybe the change to QFN to save $2.50 on cost isn’t exactly worth it.

2014-05-24 22.24.47


PCBs from

Back in April, or March, Dangerous Prototypes (DP) opened a PCB service, that is just like Elecrow – free colour, except DP has nothing to do with the manufacturing, they just send your Gerber to some Chinese board house, where your boards would get manufactured, if your design meets their capabilities.

For one of my ThinkPad keyboard PCB revisions, I decided to try these guys out. At 14USD, they offer free colour and free shipping. However, I’m sure shipping is already included in that 14 bucks. Elecrow shipping was $6.5 on top of their $9.90 per 10 boards price, works out to be around $16. So DirtyPCB wins, in terms of pricing.

Both services take about a month and a few more days to account for non-business weekend days. So in term of shipping, they’re both the same. Thus, DirtyPCB still wins because it’s cheaper.

Now, this revision of mine is consisted of 8mil (thou) traces, 0.3mm via drills, 0.5mm fine pitch SMD components, 0603 passive components and a QFN with tiny plated through holes on its pad for better solder transfer.

Let’s have a look at one of the PCBs that arrived today (Look at that superb layout!):


Except for that serial number at top left, everything else looks great! Connections wise, no shorts that I can find so far. All that’s left is to start soldering with a lovely stencil I got from OSHStencils, load the firmware and see how it goes!

ThinkPad keyboard project – A quick update

With the firmware stable and fast, this keyboard project of mine is slowly coming to a close. It supports all the basics functionality of the keyboard: TrackPoint, FN combinations, Num Lock, remote wake-up and supports all the keyboard’s key codes that I can test on a Windows machine.

This USB device currently have 3 interfaces: HID Mouse (TrackPoint), HID keyboard and HID Datapipe, which is a generic TI MSP430’s HID format that allows ‘simple’ data transfer, similar to CDC Datapipe.

For this draft PCB run, I’m resorting back to 0805 resistors and capacitors as they are much easier to solder than 0603. I’m only worried about the BSL button pad spacing, it was hard to find the datasheet to those eBay SMD tactile buttons since the sellers never include datasheets.



There are 3 things left to do:

  • Designing an enclosure, such that it clamps onto any laptop bodies – essentially overlaying existing keyboards (This is where the ThinkClamp name came from)
  • Write a script or find a way to disable laptop’s internal keyboard
  • Write a PC software that allows end-user to easily find their keyboard’s matrix and flash the microcontroller on-board with that matrix using the HID datapipe, as well as using MSP430 Bootstrap Loader (BSL) for flashing the device.

For the enclosure, I’m thinking of using wood/aluminium, maybe coat the final surface with some rubber paint for that awesome ThinkPad laptop surface feel. For the enclosure’s clamp, something like extension springs that run under the keyboard would work nicely.

I have yet to find a way to disable my laptop’s internal keyboard as well as unable to write any PC software as I lack the skills to do so. Even though I have the skills to program in C, C++, Windows API is still very difficult to work with. Even Jan Axelson recommends using Visual C# .NET for writing HID software. So that is something I need to do. If anyone wants to help me in this aspect, feel free to leave a comment.