Raspberry Pi B+ Hat Template


The YouTube video title says “Streamed live on Feb 11, 2014”


Hi devbisme,

thanks for sharing your work with the community.

I am trying to use your template this way:
Downloading the zip file from github.
Extracting it to a new created subfolder like …\KiCad\share\kicad\template\RPi_Hat_Template.
Opening KiCad , clicking “new project from templace” , selecting subfolder \RPi_Hat_Template\meta and selecting RPI B + HAT.
When opening Eeschema I receive some warning:
"The following libraries where not found:

  • special
  • xess
    Clicking on “close” and then clicking on the file in the sheet opens the schematic.
    Starting there I delete the not wanted smt connector.
    Everything seems to be OK.
    Opening pcbnew, I just followed your advise on the pcb board and delete socket J1 (smt) and the corresponding board edges.
    Ignoring the error message while opening the 3dview I get a nice view of the bare board (without the socket part).

Now: How can I add the library for the footprint of the socket?

Thank your for your answer in advance.

Best regards,



You can find the xess.lib file in this Github repo. Don’t worry about the special library.

But I think you shouldn’t need the xess.lib file, either. You should be able to get the schematic parts from the RPi_Hat-cache.lib file.

As for RPi_Hat.kicad_pcb, the GPIO connector footprint should already be stored in that file, so the footprint shouldn’t be missing in pcbnew.

Maybe I’m misunderstanding. Are you missing the PCB footprint? The schematic symbol? Or the 3D model of the connector?

If all you’re missing is the 3D model, then it should be in the Pin_Headers.3dshapes/Pin_Header_Straight_2x20.wrl file. If you don’t have that file, then that’s why the connector isn’t showing up in the 3D view. But that should be a standard 3D model provided with KiCad, so you must have it somewhere.


Hi Dave,

thanks for your quick response.
Yes, I am missing the 3D model, although I found it in the standard library.
It seems that I am still struggling with KiCad. Somehow the path to this library does not result in showing the desired 3D model.
Instead I get a strange io error message saying, that KiCad cannot find the next boundary segment and spectra.cpp throws an error at line 144…

I will give it another try tomorrow.




sounds like the outline/cutouts aren’t properly done (=no closed loops) or stuff is intersecting/on top of each other…

@devbisme, if I was you I would define the different upper outlines on another layer and let the user change the layer per segment/arc to edge.cuts or don’t offer that kind of option at all.
Maybe even define it not as a board template but as a footprint (with the cutouts on some other layer, so people would have to redraw them)?! - would make moving the board outline less prone to errors.

I made something like that for a 100x100 base where I put my sub-boards onto - z_Nutzen_100x100.kicad_mod (2.6 KB)



I managed to see the board including the pin header part in 3D view.
I edited some outline/cutouts.

Still there is one IO_ERROR message left: "Unable to find the next boundary segment with an endpoint of (111,76 mm, 77,1906 mm). Edit Edge. Cuts perimeter graphics, making them contigous polygons each. "…
Somehow KiCad does not accept my corrections at that coordinates, although all other editings worked fine.
Any guess?

At present I get a square shape, no round edges an no cut outs. If this ist not due to the io_error, is there a way to see the shape of RasPi HAT with its real outline in 3D view?




The top cut out contour has got 2 cut-out edges defined for different pin headers… decide for one and delelte the other option… you have to delete some of the upper edge.cut segments/arcs and make sure that the outline is closed after still…
As long as you get this error it means your edge.cuts layer does contain unclosed loops or segs/arcs on top of each other… KiCAD is not able to draw you a pcb outline from it.


Yes, I noticed the double cut-out edges and deleted one. I could close the outline on the right side of the board but not on the left. Sigh…


I don’t know, but that seems like it would be even more prone to error than the operation of just deleting a few segments.

Again, that seems to make things harder for the average user for the slight advantage of moving the board outline. Plus, it makes the board outline uneditable within pcbnew.

Probably the best thing to do is what was recommended by kammutierspule: make two separate templates.


As you can see up there with Aquila it’s confusing and not straight forward for noobs :wink:

Hm… have you had a chance to look at the footprint I attached up there for a 100x100 board?
I find it very easy to follow the outline on the drawings layer with segments/arcs on the edge cut layer.
This then also can be pulled in an existing project where much of the layout has been done already (for conversions for example)… and messing up the mounting holes/cutouts is pretty hard that way also, as they’re fixed on the footprint and dimensional fit of the board edges can always be checked visually by just looking at the lines ( no need for measuring anything)
On the other hand, if somebody likes different outlines better (chamfered edges, some other cutout, etc…) he can easily incorporate them without loosing the reference outline for the ‘standard’ hat, nor does he need to do calcs or measurements while modifying.

I whipped up the RPi-hat footprint just for demonstrating the concept for the PTH version…z_RPi_Hat_PTH.kicad_mod (7.3 KB)
Would probably need to be centered on the connector though for the 3d model placement without offset, but that is details…

The end of the story is, you can treat the shields/capes/hats as you treat any other connector footprint (like a uSD card slot for example) and you won’t be able to mess up mounting holes if they’ve been done right first time.
Looked at it from this angle your customized symbols for the SMT and PTH 2x20 pinhead connector would make more sense too, as those would be really symbolizing footprints of those hats (SMT and PTH).

That’s a pro and you won’t get edge cuts out of the footprint in the first place anyway - have you actually tried to get edge cuts into a footprint file? Text-editor only… and even then, don’t load that footprint with the footprint editor as he will complain and move them to some other layer.
Already hard enough that the footprint editor doesn’t allow direct drawing on Dwgs.User and Cmts.User layers…

Admitted you can put edge cuts into a footprint (did a Nokia 5110 display backward and had the cutout in the footprint) but after a while I decided against it and just kept the cutout info on the dwgs layer and redid the cutout on the board the display got onto:

So the edge cuts wont be in the footprint, everybody would have to ‘redraw’ them according to the footprint outline/cutout lines. And as I said, that’s a plus.

  1. it’s fully customizable (sharp corners, chamfered corners, different cuts, etc pp)
  2. people learn to do edge cuts/cut outs properly (show a man how to fish :wink:
  3. people don’t lose the reference dimensions/forms by manipulating the edge cut drawings as they will always be there with the footprint (no need for those dimension sizers also)
  4. if really needed the footprint on that board can be manipulated (pads changed, etc…) either in-situ just for that board or for all in the FPeditor
  5. can be loaded into existing projects/boards to save on layout time
  6. less clutter/easier to manage (just 1 symbol and 1 footprint per version), no need for a project template that you have to use from the beginning and with all that is contained
  7. no chance of accidentally altering any of the sub-components positions without noticing (mount holes, pin header, edge cuts, etc…)

Use module as board outline
Can not move imported DXF to work area without losing placement

One more question - why are all pins for the RPi_GPIO symbols (be it PTH or SMT) defined as ‘inverted’? Even GND and 3.3V are ‘inverted’…


Hi there,

I found a work around by importing an existing RasPi Hat pcb-format from Eagle into KiCad.

Next I used this as a template for other projects.
E.g. I replaced the board of the following pcb:

Therefore I simply added it as a pcb with pcbnew:

Thanks for your help.




The new PI Zero dimensions.



Contains two symbols for the RPiZero hat, 1 is in pin order and the other in logical order where I did see fit.
rpi_a _b _2b_hat.lib (3.7 KB)

That’s the footprint that goes with it…
z_RPiZero_Hat_NPTH.kicad_mod (6.2 KB)

And, yeah, one has to manually ‘redraw’ the outline of the footprint on the edge.cuts layer to get a board, but that is good as:

  1. you can’t screw up alignment of connector vs mounting holes
  2. you always have the outline of the RPiZero referenced from the footprint
  3. you can adjust the outline of your hat design to your liking without screwing up 1) or 2) :wink:

Anyone have a FP for Amphenol latched right-angle IDC connector?

Im jumping in a little late here.

Found this one as well. Seems to be kind of documented with Hat spec power supply as well.

Raspberry Pi Hat Template

Seems pretty sweet. I might try and build on this one if it measures up.

After a quick search turns out its already on Hackaday.


I’m new to KiCAD, kinda surprised to see no current, ready to go Raspberry Pi 2/3 template!

The template by @devbisme won’t open in the latest KiCAD (4.0.x). I managed to fix the errors mentioned by @Aquila (added the xess lib, removed the “special” lib since it is not supported or needed). KiCAD then ran a “rescue” process that showed the part with pins in a preview window. 3D no worky, as mentioned by others.

Searched the web, the only other pi template uncovered has disappeared off the web. I also don’t know how to import from Eagle (but read up about it, that it is error prone, etc).

Is nobody using KiCAD for raspberry pi? I can’t be the only one. My apologies if this warranted a new thread.


Google worked for me https://hackaday.io/project/8985-raspberry-pi-hat-template


Try the files I put into the thread above which treat the RPi as a module (that you load into your project) rather than a new project itself.
Way more freedom.
If you got problems with the workflow I’m happy to help.

RPi A+/2B/3B

RPi Zero

If you ever work with the compute module you’ll find that the workflow doesn’t change, as for that one you really got to use a 200 pin SO-DIM connector which is a footprint and only asks for a special symbol with RPi-CM specific pin labeling.


KiCAD noob here, not seeing how to add/open a “_mod” file.

I created my own board using the 2x20 pin header, more work than I wanted, but a good lesson for me in working with KiCAD anyway. That said, I don’t trust my own work yet, so if I can open a board as mentioned here, that would be best. @bobc, that hackaday template is cool, but way overkill depending on the need.



In the case of footprints - a library is a folder with .kicad_mod files in it.
So, just save the .kicad_mod file convenient in a folder that ends in .pretty and then link it via the library manager to your actual project (or the global template by opening that, makeing the adjustments and saving it - next project started will have those libs from the start).

For symbols it’s a bit more complicated still, as the system there is older and documentation lacking (or I’m to dumb to find the correct passage)


You must add any new library you wish to use in a schematic to the list
of project libraries in Eeschema using the component configuration dialog.

PS: screenshot shows symbol lib setup without github.