Blueprint

Yubikey

My own take on a Yubikey using a RP4020 microcontroller!

Created by acash acash

Tier 4

21 views

0 followers

Timeline

alexren alexren ⚡🚀 approved Yubikey ago

Tickets awarded: 120 tickets

Tier: 4

Nice job polishing your github repo! Post in #blueprint once its working!

CAN CAN ⚡🚀 submitted Yubikey for review ago

acash acash submitted Yubikey for review ago

1Mon 1Mon requested changes for Yubikey ago

please include a BOM.csv in your main github repo. it should include part name, price, quantity, etc

acash acash submitted Yubikey for review ago

alexren alexren ⚡🚀 requested changes for Yubikey ago

Hey there! You're missing a priced/itemized BOM in your github repo! we currently have no idea what your project will cost!

acash acash submitted Yubikey for review ago

Shaurya Bisht Shaurya Bisht requested changes for Yubikey ago

README needs screenshots of designs schematics pcbs everything, needs more documentation and everything else.

acash acash added to the journal ago

Firmware

Adding firmware was a completely new concept to me. I had never coded a microcontroller before, especially in C. But that was why I added the RP4020 in the first place.

This was the one portion of the project where I did have to use tutorials to learn how to program the microcontroller, but learning how to do so was well worth it.

Coding in C was a completely new experience for me, and it is entirely possible that my code is highly buggy, but for a first time, it was quite a fun experience!

CMAKE!! (also first time using CMake)
image

acash acash submitted Yubikey for review ago

acash acash added to the journal ago

Design Rule and Design in General

I'm really not good when it comes to either of these things, but when you make a PCB, it's necessary.

My routing skills arent the best either. Because I placed some of the capacitors/resistors farther away from the microcontroller, USB-C receptacle, etc, the routing was quite messy and I also used some unnessary vias.

To be honest, I neglected the thickness of the tracks, which might have caused some issues, but I forgot to fix it, so we are going to have to roll with it. Other than that, there weren't many issues other than the occasional unconnected track or protruding vias.

I tried to design my PCB after that, but as you can expect, my design skills are just not there. Thankfully, I did learn how to convert an image into a footprint so I could add it to my PCB!

(I did forget to add a footprint on the back, my bad!)

Screenshot 2025-11-29 160801
Screenshot 2025-11-29 160807

acash acash added to the journal ago

Creating the PCB

Fortunately for me, this is not my first time making a PCB or using KiCad. I came up with this procedure: make the PCB's shape on the Edge.cuts layer, set the copper layer amount, group each of the parts together based on their connections, then go crazy with the routing.

But I would like to take a moment to mention how much I despise footprints. I didn't have to use them in EasyEDA, so why now? Thankfully, most of the parts I used in this PCB were the same as my old LoRa Puck project, so I was able to take most of the footprints from there. But I still had to find the footprints for the newer components, which sucked.

The routing was mostly fun, except for when I realized that I had flipped the RP4020 Microcontroller the wrong way, making the routing much more complicated than it needed to be, but it's functional (I think).

Moral of the story: Triple-check your layout to make sure it's as simple as it can possibly be.

I also added 4 copper layers to make the power and ground routing easier (realistically, I only needed 2, but 4 ehhh, why not).

Screenshot 2025-11-29 160411Screenshot 2025-11-29 160400

acash acash added to the journal ago

Creating the Schematic

It's the beginning of virtually every PCB Project, other than coming up with the ideas, of course. The Schematic itself is not very complicated, but this is the first PCB Project I made myself, without using any tutorials.

To make the Schematic, I had to first come up with the list of parts I would need (BOM). I wanted the YubiKey to be programmable, so I used a microcontroller that I was comfortable with using - the RP4020, a USB-C Receptacle that I used in a past project, switches, and other new components that I was not familiar with.

Tracing the wires did not take much time, but it took a significant amount of time to look at each part's datasheet to understand what each pin does and how I would wire them.

Choosing the parts for the yubikey was a very important part of making the schematic. I kept the usb-c receptacle as I am familiar with it and it would be needed to connect to the microcontroller. Speaking of which, the microcontroller was added so that I could program the yubikey using some firmware (to store the passwords). The other components help with user compatibility and power regulation.

Screenshot 2025-11-29 155637

acash acash started Yubikey ago