Pick N Place file creation

Hi, first time poster here.

I have a PCB that is working as TH, but I want to convert it to SMD for a pick n place machine to do the heavy lifting

Everything goes smooth, Im following the JLCPCB instructions on how to do it, but in the guide, the window is different to mine, as in the screenshot.

My version is lacking the “with insert attribute set” tickbox

Problem is that the .pos file is different of the expected and in the JLCPCB website the system refuses the .pos file.

How do you guys make the .pos files?

Im using kicad 5.1.4 in windows 10 64bits, by the way.


I’ve got KiCad V5.1.6 and run on Linux, and on my system the time.


I can verify it generates a .pos file, but I have no Idea what the difference is with what JLCPCB expects.
The difference is probably easy to spot if you can find an example file at JLCPCB’s website, or if someone with an older KiCad version is kind enough to post an example here.

I did find a few old open source projects on my HDD, but they seem to be the same format KiCad generates now, and were probably made without that “With INSERT attribute set” option.
Nevertheless, here an example of an older file in ASCII format:

### Module positions - created on 11/21/19 09:54:47 ###
### Printed by Pcbnew version kicad 4.0.7
## Unit = mm, Angle = deg.
## Side : top
# Ref     Val                  Package                    PosX       PosY       Rot  Side
C1        C_22n                C_0603                  36.8500   139.1000  270.0000  top
C2        C_22n                C_0603                  11.8500   139.1000  270.0000  top
C3        C_15p                C_0603                  52.9210   127.5825  180.0000  top
C4        C_360p               C_0603                  50.1270   139.9095  180.0000  top
C5        C_15p                C_0603                  27.2670   127.5825  180.0000  top
C6        C_360p               C_0603                  24.1000   139.9000  180.0000  top

** End

“With insert attribute set” was a legacy phrasing.
Generally “insert attribute” = SMD pick&place compoenent.
You could create SMD footprint where you haven’t enabled “Insert attribute” and this part was not included in default Pick&Place file, even if it was an SMD part.
For the new window, the “Include footprints with SMD pads even if the part is not marked Surface mount” is exactly the same.
Previously you had two radiobuttons (“With insert” and “Force insert”). For new window, not checking the “Include footprints” is equivalent of old “With insert…” , while if you select the “Include footprints” you have the same function as selecting old “Force insert”.
I prefer the new wording as it makes it clear on what the option is doing.

Now it’s not the answer to question, why the fab rejects your file since seems you have the right options selected for exporting.
But futher down the support article there’s a note that they require additional edits to the file, namely changing the headers texts for output columns:

In order to be compliant with JLCSMT you have to edit the CPL/POS file with Excel or libreoffice Calc.
The folling changes are required: “Ref” to “Designator” “PosX” to “Mid X” “PosY” to “Mid Y” “Rot” to “Rotation” “Side” to “Layer”

Just scroll down the support website.

Please email them and ask to update their instructions. Most of the users are using v5.1 nowadays. If many users nag them, they may even actually change it.

Yeah, I tried changing “ref” to “designator” etc but to no avail.

I also tried contect them explaining the issue. There´s a contact form in the same page, but once I took the time to fullfill it, I got a “500 server error” so it´s form is purely estetic. It doesnt work. (Anger intensifies)

To me they are screaming: "hey dude, we are using dated screenshots and no working contact, go to the competence.

PCBWAY or seedstudio, which I think will be the next steps. It´s a pity cause Im used to the rest of his PCB fabrication process and it´s great.

I also tried to export>kicad>into easy eda and in easy eda>export the BOM, .POS files and PCB which almost work, except for the pos files been 10 or 20 mm offsetted. That was near…

Thank you all by your comments and help, by the way

I have contacted JLCPCB about the issue. Also I have pointed them to this thread. Let´s see if we get this thing working. Thank again for all your help

Use these scripts. https://github.com/wokwi/kicad-jlcpcb-bom-plugin

also you don’t say if you’ve actually followed their instructions to the end. don’t expect a ton of support from a barebones cheap as possible service for a niche EDA in a constant state of flux - I’m amazed that tutorial exists at all.

Even as little as, say, 10 rejected orders will probably cause more work for them than updating the instructions so that they can be followed with acceptable results.

I have always ( = a couple of years which I have been designing PCBs) wondered that if someone wants to take orders and fulfill them as cheaply as possible, how can they afford sending emails back and forth every time they haven’t given enough information. After all, the human labor costs something even in China, and the same mathematics is valid there than in Western world, i.e. half an hour of work once is less costly than 10 minutes of work 4 times.

Hi, Im testing the scripts.

I have put the kicad_pos_to_cpl.py in the bin/scripting/plugins directory as for the instructions, but it exports the same .pos file that previously. Maybe the .py goes in other place?

I have folowed all the instructions of the tutorial, like 400 times, and all kind of slightly different combinations to no avail.

Im amazed that the pos file is working for you as it should be incompatible too. Can you confirm that you have in fact used it for a smd mounting service in JLCPCB? Just reality checking this for not to get mad…


Yepp, absolutly. In fact they must be losing all the SMD mounting clients by that wrong tutorial

I don’t think they care that much… they will probably just bounce the order automatically. This isn’t a normal PCBA service, it’s $4!

Yes, I have. Although it was a few months back.

Ok, for the record, it seems that problem is that Im using openoffice instead of microsoft excel. OO destroys the format that JLC understands… Even the JLC examples get unrecognized once I edit and save in OpenOffice.

Finally it starts to make sense.

Fingers crossed


It dont work with open office. Does not work with microsoft excel online either but WORKS with google spredsheets online.


Lol do you not know what CSV is? This is why JLC support has a thankless job

I guess JLC makes some assumptions about csv format (line endings, decimal separator, column separator, …)
And just with luck the defaults of google agree with what they expect.

I think it’s more likely Batista has been uploading xlsx and ods files.

Also an option but i would assume there would be a clearer error message or possibly even an upload filter (even this forum has upload filters depending on file ending).

hmm I just checked and they do accept xls and xlsx files as well so that’s not it… guess we’ll never know unless he decides to post the files.

Here are the instructions for reference: https://support.jlcpcb.com/article/84-how-to-generate-the-bom-and-centroid-file-from-kicad

BTW, I’m happy to see they have updated their gerber instructions to KiCad version 5.1. (I emailed them a year ago and received a positive anwswer “I will tell to our software department”, but it wasn’t updated when I last checked.)

1 Like