Enginursday: The Great Eagle Library Cleanup of 2016

Check out the new and improved, tightened-up SparkFun Eagle libraries - now with uniformity, verified packages and documentation!

Favorited Favorite 1

Here at SparkFun, our Eagle libraries are the epitome of our open source philosophy. Every device we’ve ever prototyped with and every package we’ve ever stuck on a red board lives somewhere in that collection of .lbr files. Unfortunately, so too does did a lot of garbage.

Overview of the new Eagle libraries

Over the past half-year or so, our internal DFM (Design for Manufacturability) team—Toni_K, MTaylor, .Brent., QCPete, and I—have been working to clean up those Eagle libraries. And yesterday we pushed those changes to the master branch of the GitHub repository!

Why the Cleanup?

We’ve been developing on and evolving our Eagle libraries for more than a decade(!). We sorted what was originally just one library—SparkFun.lbr—into multiple files and stuck them on GitHub almost five years ago. We’ve been collaboratively building on them since then. The repo recently surpassed 1,500 commits!

Over that time, though, a lot has changed—packages have been tweaked, and fixes have been made. And sometimes, after committing those fixes, we weren’t always good about cleaning up after ourselves. That’s why you may have seen parts like the ATmega32U4 in the library, with four variants of the same QFN44 package.

Example of multiple ATmega32U4 packages

The libraries have also fallen victim to their age. Ten years leaves a lot of time for electronic components to die off. The old RF library, for example, was filled with parts like the GM862, the Lassen IQ and the nRF2401A—retired parts that no one in their right mind should design a project around, even if they’re able to get a hold of one.

In general, the libraries were in need of an audit. There were too many places where they were confusingly organized, poorly documented or full of dangerous end-of-life (EOL) traps.

What We Did

In preparation for cleaning up the libraries, our crew first met to agree on common rules for our Eagle symbols, footprints and devices. Every component of the library was to have:

  • Standardized naming conventions
  • A templated description, including manufacturer part numbers and links to datasheets and example products
  • Production part numbers (sorry, that’s mostly for our internal use) and SparkFun SKU numbers where applicable
  • Uniform silkscreen markings, like outlines and polarity indicators
  • Uniform name and value labels, in case anyone wants to print them on the PCB
  • Uniform op-amp and logic symbols—amplifiers and logic gates should be gate-swappable
  • An approved international standard reference designator
  • Verified footprints!

Example of an updated device

What you can expect from the library’s device view. Descriptions, links, product IDs and standardized names.

In addition, the cleanup was only performed on parts that were not EOL’ed. Parts that were retired long ago by manufacturers were axed entirely, and parts that were retired from the SparkFun catalog were moved to the SparkFun-Retired library.

We also further filtered parts into more granular libraries—specifically with regard to the IC libraries. Our new list of libraries is:

LilyPad-Wearables

Button holes, sewtabs and petals used on our LilyPad boards.

SparkFun-IC-Comms

Things that exist on wired busses – USB-to-serial, high-speed line drivers, level shifters, CAN transceivers, Ethernet PHY’s, etc.

SparkFun-Aesthetics

Non-functional items such as logos, build/ordering notes, frame blocks, etc.

SparkFun-IC-Conversion

IC’s that perform analog-to-digital or digital-to-analog conversion.

SparkFun-Batteries

Battery clips, connectors, and appropriately sized silk outlines for LiPo batteries.

SparkFun-IC-Logic

Parts which fit into the standard logic IC families. AND’s, OR’s, shift registers, etc.

SparkFun-Boards

Footprints for SparkFun breakout boards, microcontrollers (Arduino, Particle, Teensy, etc.), breadboards, non-RF modules, etc.

SparkFun-IC-Memory

Memory IC’s like Flash and EEPROM.

SparkFun-Capacitors

Capacitors

SparkFun-IC-Microcontrollers

Microcontrollers!

SparkFun-Clocks

Real-time clocks, oscillators, resonators, and crystals we use.

SparkFun-IC-Power

Anything that has to do with power delivery or making power supplies.

SparkFun-Coils

Magnetics - inductors, ferrite beads,

SparkFun-IC-Special-Function

Anything that doesn’t fit into the other "SparkFun-IC-X" libraries. 555’s, LED drivers, motor drivers, etc.

SparkFun-Connectors

Electrically functional connectors.

SparkFun-Jumpers

Solder jumpers, cut jumpers, or any other semi-permanent connection method.

SparkFun-DiscreteSemi

Diodes, optoisolators, TRIACs, MOSFETs, transistors, etc.

SparkFun-LED

Discrete LED’s, including seven-segment displays.

SparkFun-Displays

LCDs, OLEDs, etc.

SparkFun-PowerSymbols

Power and ground symbols – “3.3V”, “V_USB”, “GND”, “AGND”, etc.

SparkFun-Electromechanical

Electromechanical devices, like motors, speakers,servos, and relays.

SparkFun-Resistors

Resistors!

SparkFun-Fuses

Fuses, or fuse-like components such as PTCs. Reference designator F.

SparkFun-Retired

Footprints for any component that is no longer in use.

SparkFun-GPS

GPS modules, GPS antennas, etc.

SparkFun-RF

Devices that send or receive RF – cellular, Bluetooth, WiFi, etc.

SparkFun-Hardware

Board components that are not electrical in nature, such as stand-offs, magnets, and Actobotics.

SparkFun-Sensors

Accelerometers, gyroscopes, compasses, light sensors, temperature sensors, etc.

SparkFun-IC-Amplifiers

Analog amplifiers – operational amplifiers, headphone and audio amps, etc.

SparkFun-Switches

Switches, buttons, joysticks – anything that moves to create or disrupt an electrical connection.

There are a lot of libraries to choose from, but hopefully it’ll be a little easier to narrow down your search. Don’t forget: in the add dialog, you can use the asterisk (*) as a wildcard, in case you don’t know the precise name of the part you’re looking for.

Using wildcard to search the add dialog

Use the wildcard (*) around your search term—and search descriptions(!)—for a better chance at finding your part.

Now clone our repo and start creating boards of your own! You should feel comfortable knowing the parts you design around are accessible and documented, and the footprints are verified. If you encounter any bugs, feel free to submit a pull request or file an issue. And if you want to submit parts of your own, feel free to add them to our UserSubmitted library.

For even more Eagle resources, check out SparkFun.com/Eagle. We have tutorials there to help you get everywhere from setting up the software to generating Gerber files. Happy Eagle’ing!


Comments 15 comments

  • Absolutely wonderful. I have been using sparkfun libraries for the better part of 10 years. Remeber the early days, early libraries? I still have those files. Before eagle went to xml. Anyways, enough nostalgia and smiling. I know these libraries will be beneficial to many. Again, thanks sparkfun. I know many people will find this VERY useful.

  • For people who want to submit parts to the UserSubmitted library, do you have your “common rules for our Eagle symbols” published anywhere publically accessible?

    Also, do any of the engineers who dabble with KiCAD in their spare time maintain a KiCAD translation of your Eagle parts? (Obviously, unofficial back-channel…)

    • Great question! I added our Eagle rules to the GitHub repo’s wiki: https://github.com/sparkfun/SparkFun-Eagle-Libraries/wiki.

      I think I’ve heard tell of some Eagle-to-KiCAD library scripts, but haven’t used one personally. (Maybe this might work?)

      • This is awesome! By the way, we’d be happy to convert Eagle to all formats we support (Kicad, OrCad, Altium, etc.) on SnapEDA. SnapEDA is a free parts library that translates to many formats. Just let me know and I’d be happy to get it up and running (natasha@snapeda.com). You can see an example here.

      • Thanx for the rules. (Call me old-guard, but I think THT footprints look odd if if pin1 isn’t square… Note, I’m not advocating changing it after you have already put all the effort in to normalize all your parts. Just a comment.)

        Well, the latest stable version (not to mention the innumerable bleeding-edge dailys) are supposed to be able to load Eagle 6.x libraries for footprints. I just confirmed that KiCAD thinks that it can import the footprints, but without the original reference I can’t confirm that all of them imported properly. (I can confirm that some of the special silkscreen geometries didn’t. Noticeable on some (not all) of the OSHW logos.)

        • Thanks for the confirmation! I ran some experiments the last time I used KiCAD and had some similar experiences. It’s good to see that it still (somewhat) works.

          My plan all along was to run the scripts after this library update was posted, and then to manually adjust whatever didn’t work. I’m really fond of the way KiCAD manages objects in the library, especially how the footprints are controlled in a different place then the parts, so it should be interesting to see how it all comes up.

          Stay tuned! I’ll see what I can do.

          • Great. I look forward to your efforts. And, as mentioned in my OP, I’ll treat the KiCAD variants as someone’s extracurricular hobby, not as official SparkFun sanctioned and supported. :-D

  • Jimbo,

    I don’t know if you’re still monitoring this thread, but what are SparkFun’s plans regarding Eagle in consideration of Autodesk’s recent announcement that they are moving to a subscription only pricing model (except for the free version…)?

    • We saw the announcement yesterday and are looking into it. We’ll update everyone once we have our ducks in a row!

  • I applaud the efforts, though it does nothing to address the underlying problems with Eagle’s abusee, er, user interface – it’s not enough to get me to switch back from KiCad.

    I assume (with due regard to the “derivation” of the word “assume”) that you’re using a reasonably current version of Buzzard, er, Eagle, which stores this stuff as “ASCII text” files. That being the case, there are projects around to translate Eagle libraries to KiCad. IMHO, you’ve just given those a big boost!

    My latest missive from OSH Park is due to appear in my mailbox in a couple of hours. Hopefully this time I’ll have gotten the ProMini footprint correct. (The last iteration of this design I’d used one I found on the Web and missed that the holes were too small for a header to go through. Spacing was good, including those “off grid” pins for A4-A7, which this project needs for the I2C interface.)

    • Off topic, but are you using OSH Park’s KiCAD import? I used it once and the boards came back exactly matching my design. But one data point does not a statistic make…

      • Yes, I’m using it. My problem, though, was that the original footprint I used specified a hole size too small for a standard header, and I’d missed it until I got the first round of boards. I got the second round today (I had hoped it would get here yesterday), and although I haven’t had much time with it, header pins will at least fit in. (I’d also caught a few other minor problems, and corrected them.)

        I may see if KiCad will import the Eagle files, as Sembazaru mentioned above at some point in the future, as the board isn’t all that complicated (a hand full of connectors, a ProMini, an RFM-12B, a couple of LEDs and a reverse-polarity protection diode), so even if I had to do the whole thing from scratch, it wouldn’t be a big deal.

        • LOL. Yeah, that’s why I said that the boards came back matching my design, but never mentioned if my design was correct. ;-)

    • For the benefit of those that are using KiCad, it would be nice if Sparkfun would also make their libraries available in that format.

Related Posts

Recent Posts

Tags


All Tags