This is the biggest usability improvement on the list. Computers are good at menial sorting, humans hate it.
For those not in the know: your nice, organised schematic gets turned into a randomly assorted pile of parts when you first open the PCB editor. Now imagine your board has over a hundred parts, including lots of duplicated copy+pasted bits.
My workarounds have been to:
1. Number the parts with special codes/prefixes to make manual untangling and grouping faster.
2. Import parts into the PCB editor as a draw the schematic. It's annoying extra work (the schematic undergoes lots of changes) and requires you to assign valid footprints from the start (so your work is constantly interrupted by having to draw missing ones OR your assign invalid ones and forget to fix them later).
They listed it at the very end of the Release Notes but its a killer feature - I have been struggling with the random packing of components onto the PCB when the first export to PCB is done.
It almost made me delete most of the schematic and then incrementally add to schematic and then make it add to PCB but its such a pain.
This new Pack and Move feature seems like a life-saver, since we can use it anytime to add components to a selection with Shift-select and then that will pull it into the other desired grouping area on the PCB.
It appears to now, yes. It didn't before. One of the bigger headaches (for me, as a beginner) was when you had bypass capacitors that need to be physically as close to an IC as possible. However, the two pins go to a voltage source and ground. According to Kicad, those could be placed anywhere on the board, and have no direct relation to the IC itself. This meant you had to carefully find each capacitor by its reference and move it to where it needed to be - often it was packed somewhere completely irrelevant. Now it appears to be much simpler since you can select the components from the schematic and pack them together in the PCB editor, saving a lot of time.
Trick is to print the schematic out, draw red circle around each "decoupling environment" and then group them on the board like that. Then place the connectors where the mechanical design demands them and move the groups where they need to go. Then do the signal paths, then the power routing, then the ground fill.
Kicad doesn't make that particularly easy but one of the big errors people make is at schematic capture stage where people chuck all the decoupling capacitors in their own sheet or separate net all across the power bus. They belong next to the devices you are decoupling on the schematic.
I am a total amateur here. But I found it natural to keep a relative spacial coherence in the schematic, and have it somewhat similar on the PCB side.
Though kicad would just dump everything randomly when moving to thr PCB view. As I understand, "packing" should help keeping this spacial grouping.
There is a plugin though[1] that does place the components on the PCB similar as they are placed on the schematic (and this does work with sub-sheet too). This is tremendously helpful starting point.
In 6 you can select the bypass cap in the schematic editor and that will highlight it in the PCB editor but only one at a time. Still better than searching for C18 though.
> This meant you had to carefully find each capacitor by its reference and move it to where it needed to be - often it was packed somewhere completely irrelevant.
1. Draw bypass caps for every IC as its separate space on schematic (also declutters the schematics that way)
2. Group them together on PCB then just... drag one (or two if you have say 100n + 1n) each to each IC.
Alternative is 0 ohm resistor (net tie footprint) before every power line so the cap and IC are on separate netlit
Long time since I last used it for complex board (life is weird), but the way I do it is to crossselect the part from the schematic. I remember earlier versions used a local socket between the layout and schematic tools to allow for that.
Really indispensable. Not sure how the current feature works, but for things like power supply capacitors that are electrically connected to tons of ICs and pins but logically belong to one specific pin, I can't think of a better approach.
I'm still on version 5 due to apt/snap issues, but what I miss the most is a way to place footprints of a group of components (as opposed to placing them all at once).
I'm still on 5.1.x as snapping is broken. Not apt/snap, but proximity snap. In 5.1.x the best way to place a group is to use https://github.com/MitjaNemec/Kicad_action_plugins 'replicate layout' (components and traces). See also, right click and Select ... Same schematic sheet (components only).
Yes, hence the clarification ("Aww, snap.") Incidentally, Ubuntu forced people to move to buggy 6.x at some point circa mid last year - another reason to avoid such distributions.
My point precisely, for them a 'normal' update includes precluding the ongoing use of a working package and replacing it with a novel and buggy one. No idea on the current state, I've largely stopped using Ubuntu.
Version 7 doesn't seem to have made it to either of those yet, but have you considered installing a newer version through an additional package manager like Guix or Nix?
From a skim of the website, I'm surprised they don't have a Linux binary to download, but there is a PPA avail. Or, you could compile from source if the dependencies aren't too messy.
I wish they made migration easier. I'll probably use KiCad 7.0 for new projects, but for old I think I need to stick with 5.1.
When I import most projects to 6.0, I get so many errors, violations and whatnot that make no sense when taking a closer look so I just don't trust it.
Did you report those? Even try to make a minimal reproducible file that triggers the error? Might be a simple thing they can fix if pointed in the right direction.
We said goodbye to Altium Designer when KiCad 6.0 was released. Altium’s focus and resources shifted towards trying to turn AD into a cloud-based tool. As a result the software people actually wanted to use suffered. Every release introduced a plethora of new bugs. Nobody really cared for cloud EDA. Altium thought they would be able to sell the company to Autodesk. This almost happened. In the end that did not happen.
KiCad 6.0 easily covered 95% of PCB design needs, if not 98%. With 7.0 things are better yet. At this point, I can’t see people paying thousands of dollars per year for maintenance on tools like AD. It makes no sense at all.
Don't underestimate the inertia of processes at established companies. If a company maintains a part library, if the company has more than a few EEs- it can be a multi-man-month effort with potential for costly mistakes.
I like KiCad very much, I use it professionally but I also was the one that mandated AD to be the tool everyone at $WORK must use for production designs a few years ago- solely because it was the common denominator CAD that all EEs at the company/time knew to some degree. The cost of having production designs in a mixture of CAD tools was definitely larger than a few Altium licenses.
Now, if that was a new/my own company, I would mandate KiCad or GTFO.
Absolutely, a couple years ago KiCad wasn't ready for production use, even just a day a month of hitting some obscure issue would have paid for the AD licences, never mind the better part libraries etc. Now of course you'll need the AD licences to work on old designs anyways so it's tricky to transition.
Over the weekend I put together a toy project with a few ICs and maybe a dozen passives in KiCad and I was amazed to see how easy everything was. And now with a new release they're probably fixing things I hadn't even been annoyed by yet.
Hopefully having an open codebase means we start seeing some nice autoplacement and autorouting trickle in from hobbyists and academia, like we've seen in the 3D printer slicers world.
It wasn't even feature parity or stability- I was very happy with KiCad and had been using it personally for a couple of years.
But when faced with a situation, where some parts of the product were in Altium, some were made by a contractor in Eagle- introducing the third CAD tool made less sense than just settling on the one which majority of team was familiar with.
> Don't underestimate the inertia of processes at established companies.
I understand. The approach we took was to start new designs on KiCad and leave prior work on AD, unless a port is absolutely necessary.
All of our libraries are created using custom tools we wrote nearly 20 years ago. The good news is that these tools can be updated to regenerate the libraries for KiCad. That’ the power of a part description data structure that is independent from the EDA tool.
Starting with KiCad version 6.0 I saw no compelling reason to throw money at AD for the shit job they have been doing maintaining their software. At the end of the day people vote with their wallets. For me this isn’t about free at all. It’s about tool quality and other parameters. We are donating money to KiCad because it is going in the right direction. Altium is not. We were with them for over 20 years. They took us for granted. Goodbye.
>I can’t see people paying thousands of dollars per year for maintenance on tools like AD. It makes no sense at all.
I started to use Kicad at v5. Some interesting projects in v4 did not load clean.
v6 was released, it had some problems to load v5 projects. And now v7 seems to not load some v6 projects.
If the AD story for support loading old version projects is good then I think they will do fine.
I want to learn PCB design, mostly with ARM and ESP based designs. How would I learn basics? I know theory part but I really couldn't figure out why they determine which component and which value they have to use. I mean there are resistors, capacitors all over the place but I really want to learn reason behind it. Also I guess there are some basics related power, battery, UART, USB etc. Is there any source that covers all of these concepts?
There are certain usage patterns that you will find all over the place, e.g.:
- Current-limiting resistors
- The resistor divider (two resistors between e.g. 3.3V and GND. The point between the two resistors will be between 3.3V and 0V, depending on the resistor values. Sometimes you need a certain voltage. For example to bias transistors.
- Delays, using a resistor and a capacitor. The values will determine the delay.
- Capacitors next to oscillators
- Filters, using a resistor and a capacitor. The order and the values will determine the cutoff frequency.
- Most capacitors on a PCB probably sit right next to a chip. Often, at least one per chip. They get rid of noise already on the line, and act as short-term energy storage for the chip next to it.
- Decoupling capacitors to get rid of the DC component of a signal (i.e. if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap. Often, you need to add a DC component and later remove it, so that's two capacitors already.
Obvious but it never occurred to me that experienced person sees far fewer parts than layman when looking at the board, for expert its like yeah "file read there", "serialization here" (if I were to use programming analogy) but layman sees gazillion little parts magically working together.
They were quoting "The Matrix". But you're probably correct, even in the movies the existence of "The One" was a pretty serious security bug, and the entire need for "agents" was a workaround for other bugs.
"if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap" if there's a resistance to ground after the capacitor. I've accidentally planned an audio amp with input decoupling capacitors, didn't add ground resistors before the capacitors, so if you plug it into an audio output with DC-blocking capacitors but not resistors to ground, the voltage in the middle could be anything.
Also worth mentioning are pull-up or pull-down resistors. They give a pin a default state when nothing is driving the pin. You will often see them on reset pins and on inputs from buttons.
> I mean there are resistors, capacitors all over the place but I really want to learn reason behind it.
There are some good YouTube channels that go into this. EEVBlog[1] has made a lot of really nice videos about the fundamentals, as has w2aew[2]. And I found MicroType Engineering[3] to be a good source of practical information on designing circuits.
Capacitors next to ICs are almost always for decoupling[4]. Similar to how the cistern in your toilet provides a large amounts of water in a short amount of time without affecting the water pressure in the rest of the house, hence decoupling the local water flow from the main supply,
decoupling capacitors can supply a lot of current for a short amount of time.
However what values to use can seemingly be a bit of a black art[5], not helped by the fact there's so much outdated information and rules of thumb out there from the days of through-hole components which just doesn't apply to modern surface mounted components (like needing multiple different values).
On the other hand, resistors on a data line can be there to protect against ESD events[6], for example.
Some of it might be a bit more advanced than what you need right now, but there's definitely some good stuff for people starting out. If for nothing else highlighting areas you should be aware of.
Also Phil's Lab, especially for PCB design specifically (though he covers schematics too, I'd say it's typically not as beginner-friendly/a faster-paced run-through so you understand what he's laying out).
Make: Electronics by Charles Platt will take you through all the whys and wheres, starting at the very basics. I highly recommend it.
Also, I'll recommend the "Follow the example" approach of just looking at the data sheets for various components and modules. Especially stuff like the Arduino Uno - It's got a microcontroller, and then everything around it is just support. You start to see patterns where there (for example) a 10uF and 0.1uF Capacitor around power inputs. And they're everywhere so even if you don't know why (yet) you do know that you need capacitors around power inputs.
I started by building a programmable mechanical keyboard based on this macropad tutorial (see link). If you want to simplify it somewhat, replace all the microcontroller circuitry (oscillator, capacitors, USB interface, etc.) with an Arduino, and use through-hole diodes. It's a really cool feeling to finish your design, order custom PCBs from jlcpcb, do a bit of soldering, and end up with a useful, working keyboard.
Yes, this is the way. Datasheets and application notes will tell you nearly everything you need to know. If you don’t understand why something is done or how something works, look it up at that point. Starting from fundamentals is going to be a much slower path than just following manufacturer examples.
For designing with basic components I recommend starting with microcontrollers on a breadboard. There's plenty of great youtube channels that talk about this stuff as well, like GreatScott and Ben Eater
Phil's Lab on YouTube has great PCB design tutorials that cover how to think about layout and design, how to use Kicad, and even how to turn your design into a real product.
So you want to learn electronics? I suggest that you take the time to actually learn the theory behind it and learn how resistance, capacitance, inductance affects the system. It is hard but helps a lot. If you want to understand digital systems, then learn how digital basic components work and how you combine them to create more complex systems. Had electronics as my major in my bachelor's degree, and the mental model is really important when it comes to electronics, and the only way to really understand it and get the correct mental model is by repeatedly analyzing the networks and the change over time (resistance,capacitance,inductance) and all of sudden it makes perfectly sense!
Underlying theory is important, but seeing practical examples that _explicitly applies theory_ has been critical in my particular electronics adventure. There are more ways to apply Ohm's Law (or Kirchhoff's Laws) than you can shake a stick at and seeing someone explicitly do the math and apply it while explaining a circuit that I am interested in has helped me get better at applying it.
I think the hardest things for me so far been (a) getting my head around the idea that everything in a circuit is happening all at once (rather than iteratively like an algorithm) and (b) "input" and "output" are convenience terms, e.g. an opamp can sink current through its "output". Both of these insights have come from seeing real circuits analyzed on YouTube.
In addition to the other replies which list a number of good resources, I've found reddit.com/r/PrintedCircuitBoard interesting to watch. It's mostly people asking for reviews of their projects, and there's a lot of tips and tricks to pick up in the review comments.
You can also see a nice progression there from beginner PCBs to more advanced things.
This feels like a major step forward, not for the software itself (although it probably is) but for the release schedule. KiCad 5 came out in 2018. KiCad 6 was long delayed and waterfalled and did not come out until late 2021/early 2022. And now only a year later we see KiCad 7. Seems like release engineering is coming more on lockdown which is super great news!
Pretty sure Kicad Services Corp is a big factor in the tighter release cadence. Seth Hillibrand and co have done the best job of “Red Hatting” Kicad and becoming a professional services org that supports Kicad users for a fee.
Also helps them guide and drive development of wanted features. I’m convinced there’s no way ODBC support would have happened without it. That’s a feature no hobbyist or maker would care about- it’s specifically geared towards people who collaborate with other engineers and component sourcing departments.
The forced workflow is a feature IMO. In a production engineering scenario, it's very helpful to have tools that enforce some level of best practice. Especially since the time and money to rework incorrectly designed circuit boards can prohibitive.
A built in command line interface for exporting BOMs/netlists/gerbers is incredible. It's probably not going to be as powerful as Ki-Bot at first, but I'm going to try and integrate it into my GitHub actions asap.
And, the new dragging behavior is obviously what we should have had from the start. Going to make doing quick drawings much easier.
Yes! Pretty psyched about the `kicad-cli`. Software CI/CD feels miles ahead of of hardware CI/CD - stuff like this is awesome for pushing forward on that front
Is there a good guide how to use git with kicad? Right now I just copy folders with version numbers. Using it in github sounds like a neat way. Which files should be in my gitignore?
KiBot [0] is super handy for this, the documentation has an explicit section on CI/CD usage.
It does have to basically script drive the GUI to achieve some functionality which has now been added to the kicad cli, so hopefully going forward CI/CD with KiCad will be even easier!
Kicad is excellent - I found 6.0 to be much improved and more useable than the version I had previously.
I just downloaded 7.0 and it already is a LOT snappier and happier with loading the symbol libraries.
I need to check if there have been any improvements in the auto-router integrations - it was pretty rough the last time I tried it out.
How are parts libraries? I see that there are a bunch on github maintained by companies like Digikey. It's been a while since I did a pcb design but my last was using jlpcb's online editor and I was pleasantly surprised how easy it was to do since they had a massive public parts library.
I used to use eagle back in the day but stopped being a fan once it was bought/ruined by autodesk. I hate managing parts libraries.
Managing the files and folders and paths in KiCad should be considered a war-crime. Symbols here, footprints there, 3d models somewhere else entirely by default, would you like to centralize your parts or have them portable per project? Can't have the best of both worlds, sorry!
(Edit to add: Oh yeah, any time you click to change a file, any environment variables you had in the path get replaced with the absolute path, so things which had been perfectly resilient against path breakage get brittle again automatically!)
Actually making footprints, though, is super easy. If I have a datasheet, I don't even bother searching for a footprint from someone else (which was probably badly translated from some awful interlingua format), I just make my own.
Bonus if I can find a 3d model of the part. (I work with more connectors than chips, so these are frequently available.) Makes it super easy to doublecheck my footprint, and then I can see housing clearance and stuff in 3D as I lay out the board. Kicad is really, really good at this now.
>(Edit to add: Oh yeah, any time you click to change a file, any environment variables you had in the path get replaced with the absolute path, so things which had been perfectly resilient against path breakage get brittle again automatically!)
Where? Many of the editing fields are supposed to resolve paths back to variables when possible.
Footprint editor. Footprint properties. 3D models.
There's currently a model specified, with a path of:
${OneDrive}/KicadAssets/vendor/model-1.stp
Suppose it's the wrong model and I need to update it. Click on the pathname and at the right edge of the text box, a little folder icon appears. Click the icon and a file browser pops up. Click the correct model.
I use built-ins for KiCad when avail, or make manually using DSes otherwise. (Schematic and footprint). You can also download from certain websites, but I've found those are hit+miss; overall had an easier experience doing by hand, even though that sounds bad. I'll usually start by C+Ping a similar one. I have a separate KiCad library with its own Git repo for footprints, and one for schematic parts.
I use app.ultralibrarian.com and snapeda.com. There is also https://github.com/DasBasti/lcsc2kicad that automates downloading and converting footprints from LCSC for Kicad to use. It is handy as well.
I'm absolutely delighted that KiCad is as usable and continues to be developed on. I remember a time not too long ago where the Mac version was tragically unmaintained. I now do all my EDA in KiCad. I'm not a professional EE. All my stuff is hobbiest, and relatively amateur, but it's so nice to have tools that are so flexible.
Holy cow, this is a quality of life update for the record books. The new symbol dragging, footprint pack & move functionality and the custom fonts are absolutely killer.
I dabble in electronics and have made a few PCBs over the years with success. That said, each and every time I get back into it I find I've forgotten everything I know and start over at the same place each time:
Jeremy Blum's Eagle tutorial on youtube. It hits all of the key points I need to know from starting for the very first time to actually sending my part off to OSHPark or whatever.
Is there a similar resource for KiCad anybody might recommend? It's been about two years since I've done anything with electronics (I really do forget almost everything) so the gentler and broader the better.
I would highly recommend checking out Horizon EDA if you find Kicad to be as awful as I do usability wise. It obviously doesn't have the gazillion features Kicad does (though it does use the core layout editor from Kicad) so if you need those then maybe use Kicad. But if you're just doing "normal" PCBs (4 layer, no RF) then it's much much easier to use.
Seriously, as a kicad dev this is a neverending nightmare of subjective complaining. There was even an old-timer going on a rampage recently on the kicad forums about how PADS was the most superior EDA tool in the world, why aren't we a clone of PADS??
Basically the CAD world is exactly like people arguing over vim vs emacs
I mean it is possible to define "bad", but it would be something like "the common actions take too many keypresses". And that's about it, which isn't really a problem KiCad has anyway.
Even default keybindings are very personal. Some prefer to focus most of the common ones in one place (say around the qwer/asdf/zxcv cluster) so you don't need to move hand much, while others would rather go by easier to remember names and have [M]ove and [D]rag. I guess you can still define the "bad" here by neither intuitive nor convenient, which is to say "LTSpice", but most programs are not that.
I took the time to learn KiCad and I am glad I did. Not being familiar with comparable tools like Eagle, it was very non-intuitive to me. I resisted what I think of as a kind of forced workflow with tools like these. My sense though is that it is kind of the way the industry just is with perhaps CAD packages in general and with electronic/PCB CAD tools specifically.
I always used EAGLE for my PCB work in the past but just recently I started a new project, after many years not touching any PCB design, for which I need to make a PCB and gave KiCad a go.
Most of the things work fine but the managing of part libraries I found extremely confusing and not really intuitive: e.g. different library file formats for schematics and footprints or the standard libraries being located and hidden behind some PATH variables..
Regardless, I think it is a great piece of software and I am looking forward to make more use of it in the future!
I'm in the same situation. Did a bunch of stuff with (legal, not cheap) EAGLE in the past. But for my next projects (whenever they come around) I'm planning on KiCad because it's so much more mature now.
I long for the day that there is modern, easy to use Open Source CAD application for designing / modelling for 3D printing. FreeCAD exists and while I'm sure it's powerful - it's very clunky to use as the learning curve is quite high for someone that occasionally wants to adjust a model. It it certainly seems like KiCAD is filling that spot for the 2D / electronics side of things. Blender is probably fantastic for modelling - but it's not well setup for engineering / printing.
As a programmer there's something that really clicks in OpenSCAD for me. I've made a few designs that are super easy to adjust/repurpose based on variables. When Thingiverse's customizer worked well (well enough), it was a great tool.
I've used blender for engineering/printing. It works fairly well, you just have to set the precision to a small enough number that things pull within tolerance. There are a couple decent tool path / CAM plugins too, so it can be used for the full stack and not just making the model, so long as the gcode it spits out is compatible.
Interesting timing. Just yesterday I downloaded KiCad and CircuitMaker. I want to start documenting a circuit design, mainly piecing together schematics from application notes. Does anyone have any suggestions on any other options or what was selected among the options?
As someone who has used CircuitMaker a lot id say don't even bother with it and use KiCad instead.
Since KiCad v6 I can't think of anything CM does better, on top of that the CM forums are full of spam and it seems obvious that Altium have effectively abandoned it.
I switched when KiCad 6 came out and haven't looked back - I can have as many custom parts I want and I don't need to upload my design to the cloud to generate gerbers, I also don't miss the characteristic exception errors that CM would throw all the time
One huge thing in this release is being able to build gerber files on the CLI.
We're working to setup continuous integration here at work for the boards we make. Reduces a ton of human error being able to type "make" and get a zip file you can send to the fab house.
The "Finish it for me" tool is the one I'm most excited to try. I literally spent last night doing tedious routing of a connector breakout, and then I wake up this morning to see a tool that might've done 90% of it for me.
If you're in Europe, then order your PCBs from Aisler (no affliation). They are a sponsor of KiCad, and you can add a small donation on each order. Direct upload of KiCad files, good turnaround time, and decent prices.
It looks really impressive, seems like it's largely oriented towards PCBs though?
Anyone have experience using it for woodworking modeling? Is there a better tool out there for that? I've been using SketchUp, which is "only ok": The modeling for parts is good, but setting it up for spitting out a cut list kind of sucks. Plus, it's like $300/year to buy the version that does cutlists, the web version will not. I use tinkercad for modeling 3d prints and mostly like it, it's kind of klunky, but easy for simpleish models.
I'll probably donate something to KiCAD, it'd be a no brainer to donate $300 instead of buying a year of SketchUp, but "buying" SketchUp for $300 for a year for something I'm going to use 3-5 times in the year is kind of a hard sell.
Could be worse, you should have seen some of the silly complaints we got on the KiCad tracker in the past few years...particularly people trying to load 100MB svgs converted to PCB silkscreen because they want to abuse the cheap PCB fabs for artwork.
I saw some people mentioning that since mail-away PCB houses are so cheap and competent, they'll draft stuff like mounting brackets in KiCAD and have them cut out of FR-4 or aluminized PCB stock.
I'll admit to having done it with keyboard mounting plates-- they ended up significantly cheaper the price of traditional laser/water jet sheet aluminium, but you had to buy five units.
This is the biggest usability improvement on the list. Computers are good at menial sorting, humans hate it.
For those not in the know: your nice, organised schematic gets turned into a randomly assorted pile of parts when you first open the PCB editor. Now imagine your board has over a hundred parts, including lots of duplicated copy+pasted bits.
My workarounds have been to:
1. Number the parts with special codes/prefixes to make manual untangling and grouping faster. 2. Import parts into the PCB editor as a draw the schematic. It's annoying extra work (the schematic undergoes lots of changes) and requires you to assign valid footprints from the start (so your work is constantly interrupted by having to draw missing ones OR your assign invalid ones and forget to fix them later).