Looking for Raspberry Pi PICO part

Hey all,

I’m in charge of the Raspberry Pi documentation, and the person that built the official part. First part I’ve ever done, so I’m not that unhappy with it. The absence of holes for the gerber is sort of a choice, as the board is castellated we’re expecting people to solder it onto PCBs rather than attach it through hole?

I’m happy to take contributions (or replacement parts) so long as you’r happy to release the part under the right licensing terms.

That said I took a look and it looks like your Pico part has connections between GP10 and GP21 and GP11 and GP20. The pins are linked in the schematic view?


Welcome aboard!

Over all a nice job, the lack of holes in pcb was the major issue, the rest are fairly minor (although the lack of a layerID in breadboard means that if exported from a sketch as an svg, the part won’t appear!) I have a python script that will find various such errors in a part available here:

which will flag errors (that’s what alerted me to no holes) and change some things (remove px from font size which you looked to have done, and inline style commands) that Fritzing doesn’t support. Although I’m not all that familiar with castellatization I don’t think the hole should prevent soldering the module to the board, while leaving the user the option of installing .1in headers to plug the module in if they wish. If you disagree, it is easy enough to remove the pads I added that create the holes and move the connectorIds back to the paths. Fritzing PCB view shows holes for through hole pads even when they are not in the gerbers (and therefore the board.) There have been more than one case with incorrectly configured parts where users have had boards made only to discover they are useless because of no holes, so I would lean towards leaving the holes if they won’t case a problem with soldering the board.

As far as I know parts are released under the Creative Commons share alike license (Fritzing itself is gpl), in any case I’m good with sharing (as the part is mostly yours anyway :slight_smile: ) While I’m here there is a RPI 4B part available here that you are welcome to as well:

They don’t appear to be to me. The grounds are all linked:

but the gpio is not (the other pin should light yellow when left clicked on if they are connected to each other internally or by an external wire.)

I did change the internal pin number order to start the internal pins at pin0 and pin0 as pin1 on the module (aligned as if it was an IC), but that shouldn’t affect this. The above image reminds me of one other error, on your part schematic doesn’t have terminalIds defined and thus if you connect a wire as I did here at a 45 degree angle, the connection is to the middle of the pin rather than to the end as is desirable. In this case the terminalId is a 10thou by 10thou rectangle positioned on the end of the pin.


Although I’m not all that familiar with castellatization I don’t think the hole should prevent soldering the module to the board, while leaving the user the option of installing .1in headers to plug the module in if they wish.

You’re probably right. More on Castellated Modules at https://learn.sparkfun.com/tutorials/how-to-solder-castellated-mounting-holes/all. Which is a good introduction on what they’re for and how to solder them.

As far as I know parts are released under the Creative Commons share alike license

We’re being a bit more aggressive on licensing. We’re releasing KiCAD design files (and the Fritzing part) wit permission to use, copy, modify, and/or distribute for any purpose with or without fee. So, entirely openly in other words.

Would you be happy for your part to be released under a similar license?

While I’m here there is a RPI 4B part available here that you are welcome to as well

Many thanks! Similar license question there I guess?

That said I took a look and it looks like your Pico part has connections between GP10 and GP21 and GP11 and GP20. The pins are linked in the schematic view?

They don’t appear to be to me.

Nor to me any more. Huh. Wonder what was going on. Ignore me, nothing to see there!


Sure I’m good with that too. I want folks to be able to use the parts!


Having looked at the Sparkfun tutorial, I think the pcb layout needs to change. It looks to me like they expect the pad for the Castellation to extend beyond the edge of the pico pcb (like a SMD IC footprint) and I think (not having the actual board) the current layout matches the module exactly, and thus needs the pads to be a bit further out to allow soldering to the half circle as in the tutorial. The board files being Kicad also explains why Eagle couldn’t read them (there is an Eagle2Fritzing program that will create Fritzing parts from Eagle files that I tried.) I’ll change pcb that way. Having the hole available on the next pad in shouldn’t affect the Castellated pad. I was concerned that the hole may not leave enough pad area for a good joint, but it looks like that should be in the pad extending beyond the module edge. I’ll post a modified part in a while.


The usual cause is a connection (or previous connection) on one of the other views. There seems to be (have not been able to reproduce on demand) a bug where creating and deleting connection wires in multiple views can end up leaving ghost wires. The problem has not been seen if connections are only created in a single view, then the rats nest wires used (turned real) in other views, instead of creating new connections.

OK, I just deleted my part above to replace it with two new ones, one SMD and one through hole:

edit: Replaced these two with new versions at the bottom of the thread!

The original part (and my first one) are through hole, for the castellated mounting holes we want a SMD part. The original parts will have pads on both sides of the board (and Fritzing will happily connect to the pads on the bottom of the board which don’t connect to anything!), believing they are through hole and will connect to the pad on the top. With the smd version it knows the pads are only on the top layer (or the bottom if pcb layer is set to bottom.) It is also possible to have one pico on the top of the board and by setting pcb layer in Inspector from top to bottom, have another independent pico on the bottom of the board in the same place. Here is a test sketch with the tht (on the right) board selected. To change to the smd board, set type (circled in red in the Inspector window in the lower right window) to smd and it will switch to the smd version. Doing this with wires connected, as in this sketch screws up though, so you need to disconnect the traces before doing it. If you only want to support one part, and use the castellated mounting holes then you want the smd part as it is the only one that will work correctly in that case.

To see the difference between the two, we need to switch to the gerber output (using gerbv in this case), first with the layers copper bottom, copper top, drill and silkscreen top selected:

other than all the traces on the top on the smd version, hard to see much difference, but when I disable the copper top layer the difference becomes obvious:

other than the .1in headers (which are through hole), there is no copper from the pico on the bottom layer and thus I could put a second instance of a pico under the one on the top (and Fritizing won’t try and connect traces on the bottom with the expectation the pad is through hole as it will in the original 2 parts!) It would be a good bet to make a board from the smd version of the part and solder a pico on to the board to make sure I have gotten the pads correct (I think they probably are, but verifying with an actual board is the only sure test!)


Hey! These parts look great. Serious improvement on my original.

I passed your comments on to the designer of the Pico and have a couple of follow ups.

If you look at the hardware design book you’ll see discussion of the VGA carrier board. There’s also good discussion about the overall Pico design there that might be helpful.

  • Why is it necessary to use multiple footprints, why not a single footprint as per the VGA board KiCAD? This has both through hole and extended pads on the board so the Pico can either be soldered down onto the board using the castellations, or attached via headers throughhole. We’d suggest that this is how most PCBs should be configured if you’re going to solder a Pico to it as a module.

  • There’s also some additional holes and copper keepouts that were specified on the VGA board, for things like where the USB pins protrude through the underside of the board, and are slightly raised, and where there are test points on the underside which we want to completely eliminate the chance of them shorting.

KiCad files are available for the VGA board if that’s helpful on the footprint side of things for either of these points.


Oh, one other point. Something I saw on SparkFun and Adafruit parts, but couldn’t replicate myself on ours, was consolidating the GND pins down to a single pin on the schematic (well apart from the AGND and the SWD ground).

How do you do this anyway?


As long as the holes are present (which they are not on the original part), that will work fine. As I set out to demonstrate this I found another problem as well (which is a Fritzing quirk) the traces don’t connect to the pad in the gerber output. Here is your original part with a 2 pin header with one trace on the top of the board and another on the bottom. To Fritzing this is fine as it thinks there is a plated through hole in the pad (but there isn’t!)

Here is the gerber output generated by the above pcb view which shows the problems:

First (the Fritzing quirk) that trace is not connecting to the pad correctly presumably because Fritzing thinks the end of the pad is square which it isn’t. Because the gerber output is done after pcb view is rendered, it is possible, as in this case, to have unexpected errors that don’t show up unless you check the gerber output from Fritzing with a gerber viewer (which many new comers don’t know to do!) The other problem is that if you solder the Pico on the top of the board in this case the connection on the bottom of the board (because there is no hole in the pad) will not connect to the pico (even if the pad was properly connected!) As well the pads all appear on the bottom of the board as well when they only need to appear on the top of the board to solder the Pico in using the castellations, that means there is much more room for routing traces on the bottom of the board (and as noted, it is also possible to mount another independed Pico on the bottom of the board if you had a reason to do so.) With the Fritzing SMD part, Fritzing is aware there are only pads on one side of the board and thus won’t allow you to make a connection on the bottom of the board. You can certainly make a single footprint board by just making sure there are plated through holes and I can modify the tht footprint to do both if you like by simply adding the pads from the smd part to the tht part so you can do either, but the smd part is more flexible and thus worth keeping I think.

I can add the 4 USB holes (non plated through) and the keepout areas in silkscreen on pcb easily enough, I didn’t know they were there previously.

This one is fairly easy (and I should do it), you just overlay the pins on top of one another. The pins all need to be present, but as long as they are in a bus they will connect together correctly (if they aren’t in a bus, problems occur though!) That is actually usually a good idea as Fritzing only allows a single connection in schematic between two buses, and if you have two Picos for instance and connect a wire between the grounds, you can’t make a connection to a second ground pin between the 2 parts and that confuses new users. I’ll make these changes in the parts (add the SMD pads to the tht part and add the keepouts and holes and fix up schematic.) and repost them.


That’d be great. I think we’d rather offer a single part.

I’ll make these changes in the parts (add the SMD pads to the tht part and add the keepouts and holes and fix up schematic.) and repost them.

Many thanks!


OK, here are two new parts with the changes made. You folks will want the tht version, as it has both holes for .1in headers and pads to allow soldering the module to the top of the board. As well the holes for the USB connector are automatically drilled and the pcb silkscreen has the keepout areas specified. Schematic has the ground pins consolidated on a single ground pin at the bottom.

Raspberry-Pi-Pico-tht.fzpz (23.1 KB)

I`ll leave the SMD part here in case anyone wants a real SMD part later (same changes as the tht part!)

Raspberry-Pi-Pico-smd.fzpz (22.5 KB)



Many thanks. I’ll get the new part substituted for the existing part on the Raspberry Pi sites.


Thank you so much @vanepp! super helpful :nerd_face: using this one for a circuit design to make a photography turn table how to video on YouTube :slight_smile: much appreciated!

This is terrific @vanepp thanks so much – I’m using the SMD part in a mech keyboard design right this very moment!

While I think the footprint is correct (it was copied from the footprint the RPI folks used in their VGA card) it is safest to print the pcb out at 1:1 scale and check it against a real part as I don’ t have one before ordering boards.


Thanks, I did print it for scale and it all lines up great.

Hi @vanepp a quick follow up, the part worked perfectly for the PCBs I had made. I wrote up a guide on using Fritzing to make a Pico mechanical keyboard here. https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview
Also, huge thanks to you for your series on Fritzing part creation, it helped me a lot in figuring out how to revise the Cherry MX keyswitch part.

The guide looks very good! One minor nit, you don’t need to preload the custom parts

“You can download the full Fritzing file here, just make sure you’ve already imported the Cherry MX part and the Pico part”

The .fzz file includes the two custom parts and will load them automatically in the temp parts bin:

As long as the mine parts bin is in the same part as the temp parts bin there shouldn’t be a problem, but different parts can cause a problem if Fritzing uses the wrong one (Fritzing may prefer the mine parts bin over temp I think!) I ran in to this once when someone had different versions of the part in the mine and temp parts bins.


Oh, great tip, thank you! I’ll update the guide.