Error: Multiple footprints found

Thanks for the earlier comments. I’d like to move this conversation forward and stay on the technical topic.

Finding (current project)
While checking the .kicad_pcb, I see duplicate entries for the same reference and sheet path, which triggers “Error: multiple footprints found.” For example:

(line 4652) C4, path “/2d2016b1-dbd6-457d-8a9a-407bfc6e520e”
(line 5050) C4, path “/2d2016b1-dbd6-457d-8a9a-407bfc6e520e”

For clarity: Re-link was off initially. I only enabled it later hoping to clean things up. Earlier I added a new C4 (with the correct footprint) and deleted the old C4. I wouldn’t expect that to create duplicates, so either I missed a step or an orphan footprint remained.

Rather than re-litigating the cause, I’d like to discuss a design that could make this safer and more intuitive.

Proposal: unified two-way sync (SCH <> PCB) dialog

Mockup: https://codepen.io/Rolf-Nooteboom/full/JoYpGgG

Goal: One command: Sync that makes symbols / footpatterns match, direction-agnostic. Quiet when the mapping is deterministic; surface a dialog only for conflicts (think Google Drive/Dropbox sync behavior).

It auto-matches parts by current IDs. If those aren’t available, it uses simple rules (reference/ value / footprint) and shows three clear lists: missing in SCH, missing on PCB, and conflicts, so you can link, choose SCH or PCB, or park conflicts.

Looking for feedback on:

Are the following rules sufficient?

  • ID not linked > Link (default)
  • Not matching symbols > update PCB / update SCH
  • Not present on PCB > add to PCB (default) / remove from SCH
  • Not present on SCH > add to SCH (default) / remove from PCB

Any edge cases?
Would “auto when deterministic, prompt on conflict” be acceptable?

Happy to iterate the mockup based on your input. :partying_face:

My ½¢ opinion is that a simple UI change should discourage people from turning on option 1.

Change the check box:

[_] Re-link footprints to schematic …

to two mutually exclusive radio buttons:

(*) Re-link footprints to schematic … based on UUID (recommended)
(_) Re-link footprints to schematic … based on reference designators (special uses only)

I think that’s at least more clear for inexperienced users. Although I cannot come up with a reason that one would like to re-link ALL tightly ID linked symbols? That is a potential for a mess up.

Maybe it is good for the symbols which lost the ID and have this option for the unlinked symbols only. Breaking the tight link without warning and by just checking a checkbox as it is now is recipe for issues I got in.

1 Like