Simple/cheap PCB creation on Linux

MichaelMeissner

Senior Member+
I tend to spend some amount of time designing Teensy designs for solderable prototype boards, bringing out various pin combinations, for example having 3.3v, ground, pins 0/1 for Serial1 all in a row to connect a serial device. But usually I get distracted in soldering up the large board with all of the connections, verifying that all of the connections are correct (and of course re-soldering connections that aren't), etc.

I've been wondering how hard it would be to design simple PCBs that I could place the Teensy on. I would typically want to solder female headers into the board, so that I can move the Teensy to the next board.
  • I only use Linux (currently Fedora 33). Windows or MAC solutions are not interesting to me.
  • I don't anticipate large designs, figure maybe 3" x 3" (8cm x 8cm) or 4" x 4" (10cm x 10cm).
  • At least initially, I would prefer free to use design tools.
  • Auto-routing.
  • Easy for a beginner to use.
  • Produces designs that fabs like OSHPARK can make PCBs easily (preferably US fabs).
  • At least initially, I would primarily want through hole support, but over time, I might want support for SMT areas (SOIC, etc.).
  • While I don't need fancy graphics, I would prefer the ability to at least label the pin holes, etc.
  • External pinout libraries would be nice.
  • I don't anticipate needing more than 3-5 boards in a run.
  • Typically these days, I am only looking at Teensy 4.0 or 4.1 designs, but I do have some amount of Teensy LC, 3.1/3.2, 3.5, and 3.6s.

For example, this is one of the layouts I did for the 4.1:

The idea is to bring out several areas:
  • Serial1: UART, PWM, possibly CAN in the future
  • Serial3: UART, PWM, S/PDIF, or two analog pins
  • Main I2C bus
  • SPI0 bus, with toggle switches to either use fixed pins, or allow me to use other CS/Reset/etc. pins.
  • SPI1 bus, with toggle switches to either use fixed pins, or allow me to use other CS/Reset/etc. pins.
  • I2S1 bus
  • Each of the UART, I2C, SPI, and I2S pinouts have a pin to bring out VIN as well as 3.3v.
  • Two sets of analog pinouts so I can plug standard POTs in them
  • Two SN74AHC1G125DBVR level shifters for neopixel outputs (connecting 2 serial TX's for use with WS2812Serial)
  • Two leds
  • Two buttons
 
Last edited:
KiCad is commonly recommended - I've not used it having started out with Eagle, but both are portable win/mac/linux AFAIK.

You want auto-routing now, but having used these tools a while you'll probably give up on it - only the really expensive tools do
this well.

Some software limits abilities for the free versions, freeware Eagle gives only 2 layer and 8x10cm, but commercial version is
fully featured (16 layer).
 
Autodesk which own Eagle today recommand to NOT use the autorouter. Instead, it recommand to use it to verify if your component placement is good :

They say that if autorouter can't complete 85% of the job, you have to look at your placement.

Cheer,
Manu
 
I have used KiCAD for quite a number of projects. I have only done one board for plugging in a Teensy 4.0 (it's currently a work-in-progress). The KiCAD parts library is quite good for what I have done, so as long as you can find a suitable library for the Teensy (I think the wiki has several references for such), you should have a relatively good chance of success. The primary complex projects (I've also done a bunch of very simple projects that probably aren't in the league that you're looking to do) that I have completed in KiCAD are as follows: 1) a single LED indicator of the relative strength of the audio coming out of the PC (PC audio in, LED out, & PC audio out, with adjustable audio threshold) - used in a noisy environment to allow our operators to know when an audible alarm is going off, 2) a power conversion board for an embedded processing box (28VDC aircraft power in, +5VDC high current out, +12VDC high current out, -12VDC low current out, LED power indication, & thermally controlled fan drive), & 3) an arduino-based CIV input to large screen LCD output to allow a (legally, not totally) blind radio operator to better see what frequency/mode/power level their Icom radio is set to.

The latest version(s) of KiCAD include an autorouter, but there are also external routers available for use. In addition, you can always run the autorouter, then tweak the results to your liking (e.g. on the power conversion board, I was able to beef up the width of the traces carrying both the input 28VDC & the high-current outputs. Any changes that you make can then be passed back to the autorouter for more refinement of any remaining un-routed connections if/as necessary.

Based upon my personal experience, I would definitely suggest that you at least take a look at KiCAD.

Mark J Culross
KD5RXT
 
KiCad for sure.
If your a linux user most of the ease of use issues that Mac and Winoz users complain about will be upgrades for you ;)

The worst thing about KiCAD is managing the libraries where it hides them. Again your an expert with this as a linux user.

Don't pass up the 3D capability either. In most cases all you have to do is click the 3D view menu and look at what you get with no extra effort. All the Teensy boards are already in there. Here's my latest creation for kicks:
ShiftTeensyRevB3.jpg
 
Kicad, definitely. OSHPark will take Kicad PCB files directly though generating gerbers is not hard.

Do not fear manual routing. It may take a while to get used to it but it isn't that hard and you will have a better board for it. The trick is to place your components so you have as few crossings as possible. Play with it. It's basically a game. The latest Kicad has an interactive routing feature that really helps - wish I had it when I was learning.
 
I used Eagle since about 1985 and it always just worked. However, since it was integrated in AutoDesk (con)Fusion it gets more and more complicated to use. A couple of month ago I switched to KiCad and have to admit that I'm quite happy with it.
 
I used Eagle since about 1985 and it always just worked. However, since it was integrated in AutoDesk (con)Fusion it gets more and more complicated to use. A couple of month ago I switched to KiCad and have to admit that I'm quite happy with it.

I started with Eagle about the same time and am making the same transition. Well, I've made the transition, now I'm just dealing with repercussions. I was so fast with Eagle - with Kicad I feel a bit like I'm doing brain surgery wearing ski gloves. Overall, Kicad is everything people have been saying. Some things are better than Eagle, some are worse. I'd put the whole library thing in the latter category. What a struggle coming from Eagle. I get the point of splitting symbol from footprint but man that adds complexity. And why did they think project specific libraries was a good idea to push up front??? (just say no! at least until you are competent at Kicad) Also, for windows users, never ever create file or folder names with spaces in them. That seems to break lots of things. On the other hand Kicad's interactive routing feature is super nice and their differential pair support is fantastic (or perhaps I should say Eagle's is a complete and utter piece of trash).
 
I started with Eagle about the same time and am making the same transition. Well, I've made the transition, now I'm just dealing with repercussions. I was so fast with Eagle - with Kicad I feel a bit like I'm doing brain surgery wearing ski gloves. Overall, Kicad is everything people have been saying. Some things are better than Eagle, some are worse. I'd put the whole library thing in the latter category. What a struggle coming from Eagle. I get the point of splitting symbol from footprint but man that adds complexity. And why did they think project specific libraries was a good idea to push up front??? (just say no! at least until you are competent at Kicad) Also, for windows users, never ever create file or folder names with spaces in them. That seems to break lots of things. On the other hand Kicad's interactive routing feature is super nice and their differential pair support is fantastic (or perhaps I should say Eagle's is a complete and utter piece of trash).

:) . Yes, the library system sucks but I get slowly used to it. However, adding 3d to the parts is much easier than with Eagle. And the simple *.step export is fantastic if you need to design mechanics around the board. After all, one shouldn't look too closely into the mouth of a given horse as they say here...
 
Ive done exactly as you say on KiCad with no problems! Only hassle is finding the libraries and like installing them in the right place in the computer and loading it in KiCad, I had to fiddle a bit and made a few mistakes but then it has always worked nicely.

Screenshot 2020-11-03 at 11.03.24.jpg
 
I use EasyEDA. It was recommended to me by a colleague with lots of experience, and I've had no problems with it.
 
What I not like on KICAD (or have not understood) is to properly evolve a project.
Say, I develop a board, and wanted to make some changes without destroying the previous version.
What I would expect to have is save-as option where one can change the whole project under a new name.
not sure if the zip/unzip option is what I wanted
 
Thanks everybody, I probably will look at KICAD first and then EasyEDA. On Fedora 33, they have KICAD in the repository, while EasyEDA is a separate package, which means I don't see updates automatically, and possibly new system updates might have compatibility issues.

In terms of projects, I always keep everything under source code control. I started keeping things under CVS control in 1995, and at some point I probably should move to GIT (though I am annoyed with certain features of GIT). And I will clone directories at times too, and put the new directory under CVS control.
 
What I not like on KICAD (or have not understood) is to properly evolve a project.
Say, I develop a board, and wanted to make some changes without destroying the previous version.
What I would expect to have is save-as option where one can change the whole project under a new name.
not sure if the zip/unzip option is what I wanted

Yes, in Eagle a new version is had by saving with a new name. Simple and intuitive. In Kicad, you have to rename a whole bunch of files, some of which are obscure.

What I do is keep all the file names the same and make a full copy of the directory. The directory name denotes the version. And don't make/use project only libraries.
 
Back
Top