Now testing .kicad_pcb uploads to OSH Park!

Hello everyone! We’re very pleased announce that we’re finally able to direct uploads of .kicad_pcb files over at This means that you can place an order without going through the plot process, worrying about drill formats, or fiddling with CAM settings. It also means new users can simply grab your design files and place a pcb order without worrying about installing Kicad at all.

We still have some work to do before an official announcement, but we wanted to get some community feedback, which is where you come in. We’re big fans of this forum, so you get to be the first to know. A big thanks to everyone here for such amazing community support of such an awesome tool.

What we’re hoping is to get some feedback to make sure we’re doing the Right Thing according to Kicad’s expected community conventions. Mostly we’re honoring whatever was set in the user’s Plot settings, outside of some manufacturing related ones. On the other hand, since the only way to save plot settings is by plotting, we want to set sane standards. Of the various settings, here’s the ones which we suspect will differ most often, or need a change.

  • Plot outline on all layers, which is disabled.
  • Subtract silk from Mask, which is enabled. This will be done anyway during fabrication.
  • Via tenting is left as the user set. That should default to “tented” on new files.
  • Plot Invisible Text, which is disabled. This could be configured to user specified, but is probably a good debate topic.

We also have one deviation from the normal Kicad plot routine: Before plotting gerbers, we update all fill zones. This helps protect against the odd case where minor via or trace tweaks results in stale ground planes causing shorts, or if a ground pour is added but never filled.

All of the more obvious CAM aspects are handled behind the scenes. We’ll detect the layer stackup, and generate all copper layers in the correct order. If your stackup fails to be detected or appears incorrect, please let us know!

There’s still some known UI issues which are being resolved, most notably blank layers generate a removing blank layer filename.kicad_pcb, rather than the correct layer name.

Thanks a ton for helping us work out the final kinks in this project so we can help the community from our end. Lastly, please feel free to email us privately at if your file or opinion isn’t something that can be posted publicly in the forum. We look forward to hearing from you all. :slight_smile:

-Dan, OSH Park Support


Hi Dan, small world :slight_smile:

This sounds great! I look forward to trying it out.

This is awesome. I’ll give it a shot and see how it works out.

Changing “Drill and Place Origin” and “Grid Origin” to a non-zero value causes errors. I usually use Auxiliary Axis as plot and drill origin.

edit : Resetting the origins back to absolute Zero works.

Interesting! I’ll see if I can override these options during the cam process.

Relative : With Drill, Place and Grid Origins set to lower left corner of board area.

Absolute : With Drill, Place and Grid Origins set to 0,0

Don’t use “rounded rectangle” as SMD pad shape. Doesn’t work yet & the error message is not conclusive.

1 Like

Thanks Anool! I got this fixed up, and will be pushing live later today. Looks like the scripting API honors the Aux axis for gerbers, but not drills. I’ve configured things to just use absolute on our end.

1 Like

This is fantastic news. It will reduce the stress of ordering boards (I won’t have to consider if I got all the settings in the plot dialogs just right). Thank you for doing this!

Updating of fill zones is a very good idea. I got bitten by this once.

Hi Dan,

Just tried with a board. It seems that I need to reset my aux_axis_origin to (0,0) even if useauxorigin is set to false, otherwise the drills are always offset.

A couple of messages to tidy you may be aware of already:

Rendered from “”
Warning: Removed empty file “RAMPS-FD.kicad_pcb”.

BTW, I should mention this was a board produced using the old stable KiCad version BZR4022. There are differences in file format between that version and the latest stable releases (v4.x.x).

Hey bob! We just pushed an update to fix the aux_axis thing 2 minutes ago. Can you try now?

Yeah, aware of the “Removing empty file” thingy. We’ll get that taken care of.

Great! The rest is just thinking out loud…

Just to clarify what the functionality is… The customer submits a .kicad_pcb file instead of an archive of Gerbers. You will read the plot dialog settings (last values) from the .kicad_pcb file, override some of them to meet your fab’s requirements, then plot Gerbers for fabrication. Otherwise your ordering process will be the same (continuing to preview the layers), possibly with warnings about settings you have overwritten.

You should make it clear that the customer must plot Gerbers to make sure the settings are correct (is that true? and probably they do that anyway to check the Gerbers visually). Also, you might say that if the customer, subsequent to ordering, plots and changes the settings, their own .kicad_pcb file won’t reflect what they ordered, i.e. to freeze a design requires also not touching the plot settings. Also, you might say that the customer should plot just before ordering, to check that the settings are correct. (Maybe they most recently plotted only the paste mask layer when ordering a stencil.)

Will you override the ‘Merge PTH and NPTH’ drills setting?

You will keep the old ordering process for non-KiCad users? Also in case KiCad changes and the user has an old version that you don’t support?

Yep! Part of the “test phase” here is to figure out what settings we should honor versus override before we finalize our documentation and processing. The main one I’m curious about is “plot invisible values/references”. I suspect the right thing is to always disable that option on our end, as if someone forces it it’s likely for assembly/debugging, not production.

As far as I know, this is the only way to “save” plot settings. From what I can tell though, it’s only via tenting, footprint values, footprint references that are real options. Everything else is either mandatory for the board to work, or already being done on our end anyway.

This part is set by our end. We’ll plot all manufacturing layers, even if the last plot was never performed, or only for certain layers. Between Kicad’s defaults and ours, a board that’s never been plotted will work as expected, give or take a silkscreen or soldermask preference.

Yep. We do this anyway, as it’s simply part of our processing.

Absolutely! We actually just made some improvements to our Kicad gerber handling to better detect the filenames. We now should correctly ID all kicad gerber exports from 2012 to present, regardless of whether they were generated with Protel filenames or merged drills.

I’m not worried about old versions though. I’ve seen Kicad 4 load up ancient pcb files from 2011 without issue. The devs seem very keen on maintaining full backward compatibility, which is admirable. It’s the new development versions that are the most likely to cause trouble, as Madworm found out.

I just ordered two set of boards and the NPTH came back as plated. Not a big deal for this project but wanted to let you know. Order number #rqWRYBwK.

Did you send a " *.kicad_pcb " native file, or did you send Gerber and Excelon files?

If you sent a native KiCAD file and the hole was properly defined as NPTH, it looks like they have a bug in their CAM system.

If you sent the traditional group of fab files, make sure you followed their instructions for submitting drill files. Some vendors want PTH and NPTH in separate files, while others want a consolidated file.


That’s definitely odd. I’ll check things out to see what went awry.

That was definitely a bug! Looks like the scripting engine set a different default than the UI with regard to putting copper pads on non-plated holes. I’ve gotten that corrected, and should go live shortly. Thanks a ton for reporting it.

1 Like

Thanks for fixing it. I understand how hard it is to catch everything.

I just put my first kicad board thru directly as a kicad_pcb file and it just came back and it appears to have come back exactly as it should. Only had the chance to test the connections are all correct, but it looks perfect and given its my very first complete board with kicad i’m impressed with the result.


Nice! Looking pretty good. Glad to hear the NPTH issue didn’t affect your boards. :slight_smile:

Only thing I see that you might want to note is C8 and C7. Looks like the mask expansion was set pretty high, and those two exposed the nearby ground plane. You can see the little gold sliver there. Won’t be a problem if you’re careful with your solder when assembly, and just do a quick probe test after putting it together. Looks like all the other pads worked out fine, but probably worth checking the power planes before plugging things in, just in case.

If it’s helpful, I have an old post about getting this fixed up, and details this a bit better.