[Oshpark] HQ ProgKey - Universal Driver Programming Key

HQ ProgKey

A universal programming key that uses pogo-pins and vias/pads on a driver instead of a clamp to program the MCU, in our cases usually an Attiny 13A/25/45/85 in a SOIC8 package.

This is a follow-up on my post in Lexel’s thread.
I made a key in 2 versions, that kept the via spacing of 1.3mm/1.5mm that Lexel uses. See second post for measurements.

The 2 versions are electrically identical. Only the markings are different: More neutral letters on the first one, Pin numbers in my for now preferred layout on the second key.

The key-pcb is 10mm x 27mm.
At the pogo-pins the pcb is only 5.6mm, that will fit about anywhere.
When you only use 3×3, you can file the key even narrower.


[Oshpark Link]
HQ ProgKey v.1.12



[Oshpark Link]
HQ ProgKey v.1.14




The following picture shows a pre-version almost identical to the now shared projects and works very well. The pcb is 0.8mm thick. Pogo-pins are 0.68mm diameter, 16mm long (P50-B1).
Via drills on the driver are 16mil (0.4064mm). Distances are 1.3mm between left and right vias and 1.5mm between up and down vias (via center to via center respectively).

I bought pogo-pins from Banggood and from Fasttech. Both are extremely similar, although not identical.



So what’s all this about?

The Attiny MCUs are hardly reachable while in the flashlight, as they are usually on the inner side of the driver. So you have to take out the driver, which often means prying out and/or desoldering from a pill or the LED.

This kind of key is supposed to end this. You need 6 contact points to reach the pins needed to program the Attiny (Pins 1,4,5,6,7 and 8). The advantage is that these contact points can be on the spring side of the driver and can be reached while built in. Finally, true ISP (In System Programming).

The idea is to implement contact points in future drivers. After my fist successful programming via a key, I’m now reworking drivers that weren’t even due. It opens so many possibilities, like, adapting ramping tables, updating firmware, correcting moon levels, testing new firmware, all in the light with a real beam… :slight_smile:

Toykeeper is hoping for a universal key, like ‘one-for-all’. My key here is meant to push the idea further and to find at least some common ground.

Here’s why:

Lexel uses a 3+3 key, but he already did not use the pinouts that are found in Wikipedia or other similar keys that are to be found online. So for now we’re not following any standards here. In addition he added pins to prevent wrong orientation, which I prefer, too.

I started testing these contact points in several of my drivers (small and large) and I second Lexel’s spacing (0.4mm vias, 1.3/1.5mm distance) as well. It allows for a relatively small key while giving space for traces which are sometimes imperative.

But I did not find the given pinouts very suitable and at first preferred a 4+2 with the lower 2 in the center. On other drivers I found a different 4+2 (lower 2 on the outside) much better to route. And on a certain 17mm driver only a 3+3 will work, but yet another pinout than any of the before… In the end I can’t (more: won’t) decide for a single pattern even for myself.

My 4+4 key is universal for all this, for now, as you you can use 8 pogo-pins and pin strip connectors to apply any combination you want within the 4+4. Or you can solder only 6 pogo-pins any way you like (4+2 / 3+3). This way it could be adapted for Lexel’s future drivers as well.

Let’s see where this will lead us, but I believe this will be a huge step up for those of us who like to flash our own drivers.


Sizes and Application Examples


To fit this key, the vias need to have a distance of 1.3mm/1.5mm.

The actual Oshpark design rules (oshpark-2layer.dru) allow for a restring of 5mil and need a clearance of 6mil. So routing between the vias can be up to 12mil/20 mil.


I find the 5mil restring too small (knowing that Oshpark has some margin of error for the drills) and prefer the older restring size of 7mil. That still leaves 8mil/16mil for wires.


This is the pin layout from the programming side, which is not the side with the MCU, so it’s mirrored (the Attiny looked at from the bottom).

On small boards there is not enough space for full naming. On the right side of the picture the letters are size 0.6096mm (24mil), ratio 15%, this is about the smallest that Oshpark can handle to stay readable. So my naming scheme will be
O for MOSI
I for MISO
S for SCK
V or + for VCC
G or - for GROUND


Nice work HQ.

This looks nice, and I want one. :slight_smile:

Hopefully it can become the BLF standard.

For that to happen someone will need to make drivers that use it.

I just ordered three of his SRK v3.5 boards, so its likely he adds the key and releases v3.6 soon.

This is a good step forward for moving to a more powerful mcu with more pins, now there is a way to program it.

For anything with more pins, a programming key is going to be required anyway. And people keep wanting to add more power channels, more aux LED channels, fancier designs, more switches, etc… so more pins will be necessary soon. Something like tiny841 or tiny1634 or maybe even tiny1616 whenever the toolchain catches up to the latest chips.

For SOIC8 designs, a programming key is nice to have but not actually required… However, it’ll actually be necessary pretty soon. We’ll probably be switching to QFN-20 chips before long. Maybe even VQFN-20.

On my workbench already. My SRK is one light where I want this key for, really really soon.

Oh, I like this key even for SOIC8 designs very much. But I’d be glad if it helps developing new designs, better drivers and fancier firmware. That’d be even more than I could wish for.

About the pogo pins:

I used the P50-B1 version with 0.5mm pin diameter and 0.68mm sheath diameter. They fit perfectly for the 1.5mm spacing between the top and bottom vias/pads (0.8mm pcb + 2x 0.34mm :smiley: ).

I bought 2 P75 versions as well, just in case I’d deem the P50 too flimsy. The P75 are wider and would obviously need more space. And although they are a bit stronger, I for now believe the P50 will work just fine. I’d prefer not to make the footprint on the driver even wider.

I tried the P50-B1 pin in 0.5mm vias and they tend to go through. Not all at once, but one or two of four. I’m not convinced the contact is as well as when the pins sit tight on top of a via, I’d prefer the latter. So I’ll stick with 0.4mm or 16mil vias in the driver board design.

This looks great HarleyQuin.

For detailed technical information about the pins, and suitability, you could contact https://www.peaktest.co.uk who I’m sure would suggest something suitable.

This is actually very mature technology, nice to see it being applied to torch drivers. I think that I suggested it first, but I also think plenty of others also had the same idea simultaneously. Been going on elsewhere for years.

As TK says, it has to happen, once we move on from the 8 pin MCUs.

I see Microchip Technology stock is on a wild ride at the moment. Lets hope it resolves, because since the PIC and Atmel lines were merged, where else can we go ? It’s either a good monopoly, or a failing one.

Serious question. These things, almost literally, make the world go around. Except for the ARM RISC that utterly dominates (and we allowed to be sold off for silly money).

Sophie Wilson (born Roger) is/was a genius.

Nice. I’m also in favor of compatible programming pads/vias being added to new BLF driver designs going forward. But I don’t want hardware development here to become a monoculture. We have some guys working on diverse designs, and I’d like to keep it that way. So, I’m of two minds on ‘standardization’ efforts. Hopefully a nice balance is kept between the ‘usual’ and the ‘unusual’ here.

Excellent. I’ll probably order the new ones and the key at a later date.

I was only planning on using one of the v3.5 boards in the near future anyway.

Any updates? I like the 4+2 design. I would like to add it to my Q8 driver.
This ProgKey looks much better than the one from Lexel.
But I would also like to be sure which standard is most promising.

I wouldn’t say it’s better, it’s just different.

If it’s coming to standards, I’m the wrong guy to ask. I’m one of the open source guys here, I don’t and won’t sell anything. I just share what I have if deemed interesting and I got the time. And the open source fraction usually doesn’t set the standards. :wink:

I just liked the idea that Lexel brought to the forum, instantly knew I will adopt it for my boards, and wanted to advance it by showing where a more universal approach might be preferable. I’d love it if others would come up with more thoughts and ideas.

If not, the commercial product will get released as deemed fit, the open source guys will make their own stuff and those who can only buy will have to buy what’s on the table. That’s of course a way to set a standard. Sounds familiar? Probably is. :slight_smile:


Can you please state at the beginning of your post if your programming key is kompatibel with Lexcels?
I can replug the leads, but is spacing the same?

I read the other thread a while ago and forgot the details.

Same spacing as Lexel’s: 1.3mm sideways and 1.5mm up and down.

The second post is reserved for drawings of spacing and examples for usage in board design, I just couldn’t find the time to upload it, yet.

Thank you!

Do you see a chance that these things fit?

Same pogo pin pitch, but different in the two rows.
I guess a manufacturer would use these as adapter.

You mean this double row version:

They stick to a 1.27mm spacing in all directions
Would save the time of making they key, although these “spring loaded connectors” look really really small. Some kind of ‘handle’ would be needed anyway.
Any link to the real life product? Can they be bought in low quantities?
Just googled spring loaded connectors, looks promising, but can’t dig deeper atm.

For now our 1.5mm upper/lower spacing on the key comes from the 0.8mm pcb and half the diameter of the pogo pin. Bringing it down to the same 1.27/1.3mm would not be bad.

On the other hand a 1.27mm version might just fit our 1.5mm spacing. But the risk of malflashing increases.
I’m not that fond of pads after having tested on a board here, with 6 vias on the board the connection is way better.

Nice to see this. I’m using 0.85mm vias for my acupuncture style flashing. Switching to smaller vias and using pogo pins would save me some space. I don’t like holding pins in place though, you said 0.5mm vias sometimes lets the pins through? Is just that because the pins are fixed on your key or does the actual size vary sometimes?

Yes, the double row ones.
No I haven’t seen them as single item, only this kind with magnets in consumer products.

Because they are rated 100 000 connections a manufacturer can do a rig to flash all drivers.
I don’t know how durable the normal pogo pins are.

I was wondering if the vias have a bit more of a pad around they will work too.
Could be asymmetrical or symmetric
Kinda this way:
( 0)(0) ( 0)(0 )
( 0)(0) ( 0)(0 )
( 0)(0) ( 0)(0 )
( 0)(0) ( 0)(0 )