How to replace a footprint in PCBnew

Hi experts,
I am working with PCBnew. I am in components placement phase of PCB layout but I need to change the footprint of one component.
For this, I have edited and changed the footprint of the component in footprint lib. I have confirmed in the footprint lib that the old footprint is replaced by the new one. Thereafter I have assigned the new footprint in Eeschema to the device. Created a new netlist and updated the PCBnew by loading the new netlist…

No errors are reported but I still see the old footprint in PCBnew. The new footprint is not there.

How can I replace the old footprint by the new one without possibly having to create a new project, please?
The KiCad version info is as follows:

Thanks for your advice in advance.
Best regards

There’s no need to use a netlist (it’s an old way to do it). Use Tools->Update PCB from Schematic.

Simply change the symbol’s attached footprint in eeschema and update the PCB.


1 Like

Delete it in pcbnew manually then place it again.

Make sure your custom footprint has a unique name / a library of its own. This will avoid conflicts in the future.

Caveat regarding the previous poster: this would update ALL footprints, changing modified texts (val / ref) etc. to default values, no?

This may create confusion in the readers. If you edit the footprint in the fp library, it’s enough to use the “Update Footprint from Library” functionality in pcbnew. However, if you change the fp association in the symbol, you have to update footprints while updating the PCB from schematic.

1 Like

The “Update footprints” option in the “Update PCB from Schematic” dialog does not update all footprints in the board. It only replaces footprints which have been changed in the schematic symbols, i.e. where the footprint is completely different one in the library, with different ID.

EDIT: updating a footprint/footprints in the pcb using Update Footprint dialog reloads the footprint from the original library files.

The terminology of the UI is confusing. The word “update” shouldn’t be used with different meanings. In 5.99 the Update from Schematic dialog is better:



Hi eelik and everyone,
Many thanks for your quick response to my request. I have finally succeeded in replacing the old FP with the new one. I would also like to feedback my experience with two suggestions from eelik as follows:

I tried both ways as suggested by eelik, however in both cases the system refused replacement with the follwing warning:

I am not sure what the reason for this warning “Pcbnew is opened in stand-alone mode” is. I presume that while waiting for the response from this forum to my request, I had closed the “Pcbnew” and “Eeschema” and switched the PC off. However, after receiving your proposals, I restarted the KiCad, opened the project, opened Eeschema and from therein the Pcbnew. The Pcbnew was not started “independently” from outside the project. Thus, I don’t know why this warning comes up prohibiting FP update?

Anyway, I succeeded by executing the right click on the old FP in Pcbnew. A drop down menue therein offers the option “Update footprint” which in-turn offers:

By selecting one of the three options (already pre-filled by Pcbnew) there, it replaced the old FP with the new one.

Thanks once again to everyone for your kind support.
Best regards

1 Like

That sounds strange indeed. I suppose you have followed these steps:

  1. Be sure you don’t have any kicad, eeschema or pcbnew process running (should be so if you rebooted and just opened the KiCad project manager with the project).
  2. You have a project in a dedicated folder which has exactly one .pro file, exactly one .kicad_pcb file and one or more .sch files. The .pro and .kicad_pcb files are named according to the project name, and also one of the .sch files.
  3. You open the .pro file (i.e. the project) with KiCad.
  4. You open eeschema and/or pcbnew only from the KiCad project manager (or from eeschema or pcbnew opened from the project manager).

If these all are true, there should definitely be no warning about stand-alone mode. And this is how you should use KiCad unless you know what you are doing and why, especially when you have both a schematic and a layout for your design.

In this workflow you can open Tools->Update PCB from Schematic from either pcbnew or eeschema and update the board layout after making changes to the schematic. There’s no need for a netlist.

I still don’t know what you actually wanted to do because you told that you assigned a new footprint in the schematic but then succceed by using the Update Footprint functionality in pcbnew (without updating from the schematic?).

If you change the footprint association text here:

you have to use Update PCB from Schematic and “Update footprints” option there.

But if you edit the .kicad_mod footprint file and want the change to be reflected in the layout which already has that footprint, you have to use the Update Footprint(s) function in pcbnew on that footprint.

Hi eelik,
I am sorry if my explanation was confusing. Let me try to recapitulate what I did as follows:

  1. After schematic entry and loading the netlist in Pcbnew, I did component placement (no routing yet) and realised that I should change one FP.
  2. I changed the FP in FP lib and confirmed that the new new FP was actually there.
  3. Then, under Eeschama the new FP was assigned to the component and a new netlist was generated (i.e. schematic update). Thereafter, I tried to update (load) new netlist in the Pcbnew. I didn’t get any error message from KiCad but also the old FP was not replaced by the new one. This is what I had reported in the forum.
  4. Then, I tried the two proposals made by you but got the KiCad warning that update can’t be done because Pcbnew is running in stand-alone mode.
    At this point I executed the mouse right-click on the old FP and slected the “Update Footprint” from the drop-down menue. Which in turn offered the three “Update footprints from library” options (shown in the .png file above) and finally led to success.

Actually, I should have done this right in the begining without going over “loading new netlist” path in Pcbnew etc. But this is what they say in German “Lehrgeld zahlen” (learn the hard way). ;-))

I do hope but that this explains how I proceeded. I 'll try to be more precise in future.
Thanks for your understanding and best regards

It’s theoretically possible that there’s a bug when using the netlist workflow because writing and reading through netlist has been replaced with Update PCB function as the default workflow.

Please tell if you run into these problems in the future when using the Update PCB function. I don’t know why they happened and why your mixed workflow even worked eventually - it’s confusing. But all is well which ends well.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.