How to make a custom library part in Eagle CAD tool

The eagle cad tool is a great thing. It does have something that I see as a draw back. That is that you need to pick a package for your part while you are still working on the schematic phase of a project. I assume Cadsoft, the makers of eagle, have their reasons. Although eagle comes with an extensive part library, some times the part you want is not in the package you want, and other times neither the package or part you want is in their libraries. In these cases you are you are left with two choices. First, pick a similar part that already exists. Second, make your own part. This instructable will focus on the later option.
Remove these adsRemove these ads by Signing Up

Step 1: Start the Eagle control panel

That step should be self explanatory.
In linux type eagle from the command line.
In windows double click on the eagle icon.
Or start->programs->eagle layout editor (version) -> eagle

Your screen should look something like this now.

Step 2: Select or create a library

Decide where you want your new part to be. I suggest creating your own library. If you have your own library it will be easier to share your work with others.
1) To create a new library go to the menu bar and select File->New->Library

2) Add to existing library in the left pane of the control panel right click on the library you want to add the part to and select open.

Step 3: The new library

Your screen should like like this. From here on out I will assume that you created a new library, but this really doesn't matter.

Step 4: The easy way or the hard way.

To design a part in eagle you must define a device, package, and symbol. Each aspect has its own set of layers that you must keep straight. Again you are left with two choices. The easy way, in which you copy a similar part and tweak it to match your specifications. This is of course in contrast to making one from scratch. For this instructable we will design one from scratch.

Step 5: Time to get out the data sheet.

For this instructable we will design a part used in the IMU for the PSAS rocket. The object of our affection is the ADXRS150 gyroscope from Analog Devices. To get all the parameters we need for the design we need not look any further then our trusty data sheet.

Step 6: The Package

As I mentioned there are three aspects to a part in eagle. We will start with the package. We want to make a 32 lead BGA (Ball Grid Array). From the data sheet we can see that the balls are 0.55mm in diameter, and spaced 0.80mm on center appart. The far edges are 4.80mm appart on center.

Step 7: Building the package

click on the package icon in your library window. The edit box will pop up and in the "new"
field type BGA-32 (remember we are making a 32 lead Ball Grid Array). and hit ok.
You will get a warning asking "Create new package'BGA-32', click "yes".

Step 8: Setting the Grid

The default eagle setup will create a black screen with a grid on it.
In the center will be a dominant white cross. This cross is the center of our
package. It will be the point by which people will select/move the package around.
Placing our pads and other parameters wisely around this cross is important.
From the previous set we know we need some fine resolution make the grid
half of what our smallest component is.

Step 9: Setting the grid (cont)

Recall the data sheet has balls that are .55mm in diameter and are spaced .8mm apart on center.
The centers of the balls on parallel outer edges are 4.8 mm apart on center. So we want a
grid size that will make it easy for us to place these balls.
From the "view" menu select grid, or simply type grid into the command window.
The grid tool will open up make the size 0.2 units mm Alt: 0.2 and multiple of 5. Without
the multiple the grids are too small to be displayed. Note the lines will now be
1 mm apart. leave the display on
and the style lines. Your screen will have a dizzying amount of grid lines on it.

Step 10: Adding Pads

At this point if you want to copy another package from an alternate library you can
use the copy command with the following syntax in the command window.
copy packagename@libraryname
and the package will magically appear, but being man a first principles I'll show you
the long way.

As mentioned earlier one must be careful to make sure one adds elements to the
appropriate layer. Our pads (i.e. balls) for example will belong to the top layer.
In the command window type smd, this command will be used to create the pads. By default
the top layer will be selected. In the Smd drop down box will not have a circle by default
in that box type "0.55 x 0.55", and make the roundness 100%. I also placed a second cross
hair as a reference guide 7mm up and 7mm over know that is the over all size of the chip.
One measurement that is missing is how far from the edge are the pins. Being a slave to
symmetry I made the assumption that the center of the ball would be .8 mm away from the
edge. With properly spaced grids, using the mouse to place pads can be very quick accurate. Alternativly, in the command window if you can type
(x-cord y-cord) and the pad will be placed where you want it. Place the pads as well
as you can, and it should look like this when you are done.

Hints: It may be easier to make the origin the center of the device and
just give the coordinates to place the pads (3.2 0) (-3.2 0) ... etc

Step 11: Details for a cleaner look

On the tPlace layer put an outline of the chip's foot print and make the Ball A1 indicator
visible with the wire tool.

Type wire in the command window. Select 21 tPlace for the layer. Now draw a 7mm box around
all the pads you placed in step 10. Either trace it out or type the coordinates in the
command window.

Step 12: Name Pads

To make our life easy in the furture its a good idea to name the pads. Type name in the comand window, and double click on each pad. A dialog box will appear and simply type in the new name. Its good to go off of what the data sheet uses for names as you will have to repeat this process for the symbol. Following this advice will make the final step (matching package with symbol) much easier, however, it does not make for a generic package (i.e. when you want to use this package for a different device).

Step 13: Add name and value

name and value parameters are added on separate layers tname and tvalue respectively.
These will be named later on by who ever is using the package so just put in generic
headings like "name" and "value"

Select the text tool or type text in the command window. Select the tName layer, and
an appropriate size and place on the top of the drawing.

Repeat this process for the value but use the value layer.

Test to make sure you have the right elements on the right layers by selecting the layer tool
and turning off all the layers except the one you want to check.

Step 14: Building the Symbol

Click on the symbol button and add a new symbol. This step is identical to step 7 except its for a symbol not a packge. The symbol is what will appear when you are drawing your schematic. The schematic is a fundamentally different representation of your circut then the layout (or package view). The package needs to match the datasheet as it represents the physical entity and has a huge impact on the baord layout. The schematic should be designed so that it is easy to read and neeed not be a prefect representation of the devcie (in terms of size). For examplep pins without connections dont need to be placed on the schematic.

Step 15: Back to the data sheet

On some devices not all pins are used. However for this device all the pins are doubled up. We can also see that all the pins have names. To make life easier it is a good idea to name the pins that are placed on the symbol.

Step 16: Draw the symbol

Use the wire tool to draw a box that will represent the symbol on the schematic. By default you will be drawing on the symbol layer. Double check to make sure by looking in the upper left corner after the wire tool is selected. The layer drop down menu should have "94 Symbols" selected.

Once the box is drawn, type "pin" in the command window, and start placing the 32 pins evenly around the box.

Step 17: Naming Pins

As great a names as P$1-p$32 are it will make our lives easier when we connect pins on the symbol with pads on the package if we use a more intelegent naming shceme. We will assign the names of the pins based on, you guessed it, the data sheet.

Type name in the command window and double click on the pin to remain. A small dialog box will appear with the current name. Change the name and click "Ok". Repeat 32 times.

By default the name on the pin and the symbol will show up in the device. This makes for a very cluttered look. Click on the "change" button and select "visable" from the drop down menu, and then select "Pin". Then click on every pin. It will not be obvious what you are doing but trust me the final design will be easier to use.

Step 18: Make the device

In this step the association between the symbol and the package is made. Click on the devcie icon, add the name of your device, and your screen should like like this.

Step 19: Add package to devcie

In the lower right hand corner click on the new button and select the package. Your package will show up in the upper right pane.

On the left vertical tool bar click on the symbol icon, and place your symbol in the left pane.

Step 20: Make connections

If you have followed my advice and named the pins on the symbol and the pads on the package the same this step should be easy.

Click on the connect button and the connect dialog box will appear. Keep clicking the connect button untill all the connections are made.

Step 21: Save Device

CONGRADULATIONS!! YOU ARE DONE. Click on the save button. It always a good idea to check all is well, so navigate to your library, and expand it by clicking on the plus sign. You should see your device listed. Hightlight it and it will appear in the right hand pane.

Now get to work using your new device.
1-40 of 92Next »

The instructions make no sense here. Nor does this grid seem to actually help with the placement of the pads.

tbarot1 month ago

This helped a lot.Thnx.

You should also mention that to move pads,parts,symbols,etc. by a small distance pressing and holding alt helps,some may know this but i had to google it.

jobo992 months ago

thank you soooooooo much i'm doing a project for school and i needed schematics but i couldn't find ANY good libraries

thank again



skyhisi made it!4 months ago

Very clear instructions, thanks :)

asid611 year ago
Great instructable! I made my parts in minutes with this!
And I am a completely new user.
nice guide, really easy to follow. Thanks a lot btw
ohmware1 year ago
Great walk-through, very thorough! Thanks!
max.kostka1 year ago
Nice Job. Thanks, man!
rhicksdev1 year ago
Thanks for such an easy to follow guide - especially since you took the hard route of starting form scratch - this is exactly what I needed to make a pressure sensor and a proportional valve, neither of which are in anything like standard packages that could be copied from another library.
If you're ever going to update this you could perhaps add a name/value step for the device as you did for the package (though this was easily worked out by a novice like me).

Thanks again!
rhicksdev1 year ago
@ AngusPearson - Looks like you missed a part of step 17:

"By default the name on the pin and the symbol will show up in the device. This makes for a very cluttered look. Click on the "change" button and select "visable" from the drop down menu, and then select "Pin". Then click on every pin. It will not be obvious what you are doing but trust me the final design will be easier to use."

- You should have trusted him ;)
Hi there
I know it's probably some setting somewhere that I'm missing, but I can't seem to get rid of duplicate labels on my pins like in the picture. Any help would be very welcome!
Screen Shot 2013-01-19 at 22.47.55.png
dakoder1 year ago
Very easy to follow instructions Thanks.
Excellent work !!!
Very neat instructions, thanks :)
rclayled1 year ago
Slightly different question - can you take a part from a schematic and copy / add it to a library? The particular part(s) are not in any library that I can find - looked at Adafruit, eSawdust, Eagle, etc. Thanks!
I answered my own question - if you have a schematic with components that you cannot find in a library, you can 'export' them into a new library. It is pretty straight forward. From the schematic (not the board!) click File, Run. Select exp-project-lbr.ulp. Take the defaults. First, select 'collect data', then 'create library'. The library name is shown after the collect data step and will be created in the same folder that the board and schematic reside. Move the .lbr file to your custom library folder or just stick it with the standard Eagle libraries. From the control panel, you have to add it.
nogueira2 years ago
Saved my day, thank you.
sandborn2 years ago
You really ought to start with the easy way. I came to figure out how to do this efficiently, and your instructions don't tell me how to copy an existing part and tweak it.
nilloc sandborn2 years ago
I found a 6 minute guide to editing existing components here for those that are interested:
crchisholm2 years ago
OK stupid user trick here.... I have followed this tutorial and it is great. My problem is that the labels on the symbol are huge and overlap each other. Can't seem to figure out how to shrink them or move them. I am sure I'ave done something wrong but not sure what. Any ideas?
595 part.jpg
phabib2 years ago
Very detailed and easy to follow. Great job. Thank you.
How Would I go by doing it the easy way?
Thanks for this great tutorial. Is there a way to copy a symbol from another library? The command copy SYMBOLNAME@LIBRARYNAME doesn't work.
I have even a simpler way.
Open the library where you want the part to be copied into (Library->Open)
Go to the Eagle Control Panel and find the \lbr folder where the library is that you want to copy from (under Libraries).
Expand and find the device/package you want to copy and right click it.
Select "Copy to Library"
That's it. Done.
You can open the library, edit the part, select the cut tool, then select the group tool and highlight the entire symbol. Then right-click on the selected part and select "Cut: group". Return to your library, edit your part, select paste, and you should now have the part.
Thanks, I never would have figured that out. The copy command doesn't copy, and the cut command doesn't cut in that it doesn't remove the original. Non-intuitive.
rangaec012 years ago
this is just amazing tutorial for eagle thank s ..
look to see many more
mykiscool2 years ago
I have an error message in the second part where I insert the symbol please help.

Adding symbol L78L05 to L78L05 would exceed the minimum number
of pads (0) available in package variant ''

What are pads even?
Thanks it worked perfectly for me :D
Hi there, great tutorial, thanks. One thing though, I can't for the life of me get the >VALUE and >NAME tags to work, whenever I try to change the value tag, a popup comes up saying that there is no user definable data. I've made sure the layer is set right and everything, and can't think of anything else wrong. Do you have any ideas what I'm doing wrong?

Mega Thanks!

Tutorial for an old version, but still good. Nice combination of pictures and text, easy to skim to the info.

Short version: first/main window in eagle-> File-> New Library... or Open Library
See Step 7 to create a new package (notice the icons devices, packages, symbol
See Step 14 to create a new symbol
See Step 18+ on how to match the package to symbol, and match the pins

See comments below for how to cut and paste, and other tips.
Dude, awesome instructable! This keeps me from having to such the depths of the interwebz for nixie tube libraries.
AgeingHippy3 years ago
Magic!! :)

I needed to add a component (Eagle is very new to me) and this worked 100%

Spokehedz3 years ago
How would someone who is smarter than I am make the part PTB78560CAH


I can't seem to get my head around the lack of a grid pattern on this part. And it's getting annoying with just having pads floating around on my schematic as I want to keep putting components where the board is going to sit on my PCB.
If you can get a list of the pin names and numbers, you can make this easier with a script, as follows:
...and so on; one pin per line.

A programmer's editor like UltraEdit or SciTE makes it easier to add the "P$" to the numbers. When you're done, save it as an ASCII text file with an .SCR extension and load it from Eagle's File menu. Easy peasy!
It's probably a better idea to just make a tall, skinny box with pins in columns on the left and right sides. It's more compact and easier to use with Eagle's weird wire drawing tool which always assumes the horizontal component of the wire comes first (changing this behavior by right-clicking through every possible style or using the tool-bar becomes tedious quickly).

Also, the perfectionist in me cringes at your box being just off the visible grid, but that's neither here nor there ;-)
robduarte4 years ago
 any idea how to make the part "smashable"?  i want to be able to rearrange the pin names in a schematic that uses this new part.  thanks for the instructable.
aisvo robduarte3 years ago
It's probably late that I replied this question, but it might help those who have the same question.
Two special keywords need to be placed in the package drawing;
- ">NAME"
- ">VALUE"

There are a few other Special Case words, but these two should suffice for making it "smashable".
@josheeg, i think this tutorial might assume that you've already consulted cadsoft's provided tutorial for the basics of how to navigate and get things done in eagle. their provided tutorial is great for getting started, but distinctly lacks instructions on how to make a new library part, which is where this instructable comes in.

@kd7vnn, this is super helpful, but one thing that i think could also be covered to users' benefit is pin direction and why it matters to make sure you supplies are set to direction Pwr instead of I/O. (i'd offer these explanations myself, but i'm unsure of whether they're used for anything beyond DRC...)
Super, thanks!
1-40 of 92Next »