# Add library from Github

**URL:** <https://librepcb.discourse.group/t/add-library-from-github/833>\
**Category:** Help\
**Created:** [November 11, 2024, 5:32am UTC](https://librepcb.discourse.group/t/add-library-from-github/833 "2024-11-11T05:32:22Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 11, 2024, 5:32am UTC](https://librepcb.discourse.group/t/add-library-from-github/833/1 "2024-11-11T05:32:22Z")

</div>

New user, but with Eagle going away I want to get ahead of the rush.  
I found a component I want to use in my schematic on [GitHub](https://github.com/LibrePCB-Libraries/Arduino.lplib), but when I put the URL to the lplib repository into the “URL to ZIP file” and click on Download, I get this error:  
“Error while extracting the ZIP file…”

 ![url to zip](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/168a8de6d9bfb667c9f0aca1419523218f27604f.jpeg)

When I look in the directory: `D:\River Documents\LibrePCB\Workspace\data\libraries\local`  
there is no Arduino.lplib file there.

So, what am I doing wrong?

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 11, 2024, 9:22am UTC](https://librepcb.discourse.group/t/add-library-from-github/833/2 "2024-11-11T09:22:20Z")

</div>

Hi @SteveRMann,

> [@SteveRMann](#):
>
> New user, but with Eagle going away I want to get ahead of the rush.

Good choice! 😃

> [@SteveRMann](#):
>
> I found a component I want to use in my schematic on [GitHub](https://github.com/LibrePCB-Libraries/Arduino.lplib), but when I put the URL to the lplib repository into the “URL to ZIP file” and click on Download, I get this error:

The URL must point to a ZIP file, but your entered GitHub URL points to a website. On GitHub you can click on “Download ZIP” to get the download URL. In your case it would be:

```
https://github.com/LibrePCB-Libraries/Arduino.lplib/archive/refs/heads/master.zip

```

However, you don’t need to install this library manually because you already have installed it. All libraries from [github.com/LibrePCB-Libraries](https://github.com/LibrePCB-Libraries) are offered in the library manager (called “remote libraries” so you never need to install those manually.

---

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 11, 2024, 12:43pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/3 "2024-11-11T12:43:55Z")

</div>

> [@ubruhin](#):
>
> However, you don’t need to install this library manually because you already have installed it.

Thank you for the reply.  
This brings up another question.  
The part I want to use is the Wemos D1 Mini module, and a Google search tells me that it is in the Arduino Library. But I can’t find it as a component.

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 11, 2024, 2:15pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/4 "2024-11-11T14:15:56Z")

</div>

> [@SteveRMann](#):
>
> The part I want to use is the Wemos D1 Mini module, and a Google search tells me that it is in the Arduino Library.

Then your Google is wrong 😉 We don’t have any Wemos modules yet.

Never heard of this module yet but it looks like it it quite popular. Maybe I could add it to our libraries, would you be interested (might take 1-2 days)?

---

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 11, 2024, 4:13pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/5 "2024-11-11T16:13:57Z")

</div>

> [@ubruhin](#):
>
> Then your Google is wrong

I can see wht Google would be confused since half of the projects people are making in the Arduino forums are on ESP devices, many on the Wemos D1 Mini, probably as many as on the NodeMCU, and increasingly more on the ESP32 modules.

I must live in a bubble. My projects are around IOT and in the Home Assistant universe where the ESP line of modules is endemic. Almost all of my projects are using the Wemos D1 Mini, so you can appreciate that I am a bit surprised that someone is unfamiliar with it.

There are other modules that I use that are less popular like the RFC-522 RFID module or the DfPlayer Mini MP3 player module. I looked at making my own component but still confused. I’ll try again. I couldn’t figure out how to make a package with exact dimensions, or less important, a notch in the outline.

I read the thread of the Public Library concept with interest. I would be very surprised if I were the only one using the Wemos modules. There really needs to be a way for users to share their components.

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 11, 2024, 5:17pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/6 "2024-11-11T17:17:32Z")

</div>

> [@SteveRMann](#):
>
> I must live in a bubble. My projects are around IOT and in the Home Assistant universe where the ESP line of modules is endemic. Almost all of my projects are using the Wemos D1 Mini, so you can appreciate that I am a bit surprised that someone is unfamiliar with it.

We do have several ESP32 modules in our libraries. But yes, IoT/HA projects are just a “bubble” in the huge world of electronics. A large part of the electronics universe is never used by hobbyists, just by professionals (e.g. STM32 is a huge, veeeeery widely used microcontroller family but for most hobbyists it’s too complicated).

Anyway, we are happy to get inputs about popular parts in the hobbyist scene. As said, I’d offer you to create the Wemos D1 Mini if you like.

> [@SteveRMann](#):
>
> I couldn’t figure out how to make a package with exact dimensions, or less important, a notch in the outline.

Most things can be done by drawing the footprint roughly, and then double-click the objects to modify their properties. There you can always enter exact coordinates.

---

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 11, 2024, 9:01pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/7 "2024-11-11T21:01:41Z")

</div>

Thanks. I am learning, but it is “painful”. Could you review what I did for a [DfRobot DfPlayer Mini](https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299)?  
In particular, why am I not seeing the pin names on the schematic that are visible on the symbol? (I.E., what did I do wrong?)

(And yes, I would appreciate it if you could do a library for the [Lolin Wemos D1 Mini.](https://www.wemos.cc/en/latest/d1/d1_mini.html), at your convenience).

My Library:

 ![my_library](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/623e33f8194fa0ba4aee6380e7e0b84f9ea5b6e9.jpeg)

Symbol:

 ![symbol](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/be01ff32756e7248104d901b6b35450b9c8be322.jpeg)

Devices:

 ![devices](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/e9a61ccdad480127bd8bdfcc1a68f66812254fed.jpeg)

And, on a schematic:

 ![schematic](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/f702f2eb2cb87fbfa9b4d6bff61389b6f0366f10.jpeg)

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 11, 2024, 9:26pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/8 "2024-11-11T21:26:23Z")

</div>

> [@SteveRMann](#):
>
> I.E., what did I do wrong?

Open the component in the library editor. Then double-click the symbol variant (typically called “default”). In the dialog you should see that the pins are not connected yet.

And btw, all your symbol pins are rotated wrong by 180 degrees. The green circle is where the wires get attached.

---

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 11, 2024, 9:54pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/9 "2024-11-11T21:54:10Z")

</div>

Thanks- that fixed the component.  
(The next trial will be remembering how I got here.)

Is there a list of components anywhere? Something I can scan without knowing the search terms?

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 12, 2024, 11:19am UTC](https://librepcb.discourse.group/t/add-library-from-github/833/10 "2024-11-12T11:19:16Z")

</div>

> [@SteveRMann](#):
>
> Is there a list of components anywhere? Something I can scan without knowing the search terms?

You could just open a schematic and open the “Add Component” editor (shortcut “A”). There you can browse the library by categories.

I just created the Wemos D1 Mini:

> <https://github.com/LibrePCB-Libraries/Lolin.lplib/pull/1>
>
> \##### SUMMARY
> 
> Add sym/cmp/pkg/dev for Add Wemos D1 Mini (HW revision 4.0.0).
> …
> 
> Requested in https://librepcb.discourse.group/t/add-library-from-github/833.
> 
> !\[image\](https://github.com/user-attachments/assets/5f740cf3-fe14-43db-89be-2ee698ba1085) !\[image\](https://github.com/user-attachments/assets/788081f0-bdab-417c-92df-56610a9841b8)
> 
> 
> \##### DATASHEETS / REFERENCES
> \<!-- When submitting a new device or package, please provide links to the
> necessary datasheets, package drawings or standards documents.--\>
> https://www.wemos.cc/en/latest/d1/d1\_mini.html
> 
> \##### OPEN QUESTIONS / UNRESOLVED ISSUES
> 
> None
> 
> \##### CHECKLIST
> \<!-- Please review the following checklist and check the items you agree with
> by adding an "x" between the brackets (i.e. "\[x\]"). If you are unsure, leave
> the corresponding items unchecked so the library maintainers know where help
> is needed. --\>
> 
> \- \[x\] I have read and followed the library conventions¹.
> \- \[x\] For packages, I followed IPC7351C (see details in library conventions).
> \- \[\] For modified elements, I bumped their version number².
> \- \[\] I already used the new library elements in a design and verified their correctness (optional).
> \- \[x\] I'm the copyright owner of the added content (i.e. the changes are made by myself, not copied/imported from somewhere else).
> \- \[x\] I agree to publish all my changes under the CC0 Public Domain License³, allowing everyone to use and modify the content without any restrictions.
> 
> ¹ \*Library Conventions: https://docs.librepcb.org/#libraryconventions\*
> ² \*Minor version bump if only metadata was modified (e.g. "0.1" -\> "0.1.1"), major version bump if functional changes were made (e.g. "0.1" -\> "0.2")\*
> ³ \*CC0 Public Domain License: https://en.wikipedia.org/wiki/CC0\*

It’s not merged yet. Could you maybe try it out by installing the library via URL?

```
https://github.com/LibrePCB-Libraries/Lolin.lplib/archive/refs/heads/wemos-d1-mini.zip

```

Soon I’ll then merge and publish the library via library manager.

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 15, 2024, 9:10am UTC](https://librepcb.discourse.group/t/add-library-from-github/833/11 "2024-11-15T09:10:44Z")

</div>

@SteveRMann did you try the Wemos D1 Mini? Everything ok?

---

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 15, 2024, 10:55pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/12 "2024-11-15T22:55:52Z")

</div>

Thank you for the Wemos D1 part. Your feedback is much appreciated.  
I know that finding the pin names of the Wemos modules can be aggravating. I have renamed the pins and schematic arrangement to the most common usage.

 ![Wemos D1 Pin Library](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/38ca096ea71466ef8aab2137d6ec6099bac691c6.jpeg)

1. How do I renumber components? Is there an auto-renumber tool or do I have to do it one component at a time?
2. How do I notch the PCB? I need to cut a notch in the PCB under the USB connector on the Wemos D1 Mini module.

 ![hot do i move](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/51f040f359fe83534d66b64a56af12f4c29afbc8.jpeg)

1. How do I move a part on the PCB when the grab handle is under a solder pad? For example, the move handle is under the center solder pad of J1. Can I move the grab handles?

 ![grab handles](https://global.discourse-cdn.com/free1/uploads/librepcb1/original/1X/07d90d1cb5a819d9a9319c76ba02a1f28b55fc2d.jpeg)

Thanks…

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 16, 2024, 8:56am UTC](https://librepcb.discourse.group/t/add-library-from-github/833/13 "2024-11-16T08:56:54Z")

</div>

> [@SteveRMann](#):
>
> I know that finding the pin names of the Wemos modules can be aggravating.

Oh I just saw in their schematics they call it “IO0”, “IO5” etc. so I renamed the symbol/component accordingly. Just numbers are not expressive at all (sound like pin numbers, which they are not).

And btw, I made an improvement in LibrePCB that from the next release on you’ll see these pin names on the pads in the board editor, which makes packages like this better understandable:

> <https://github.com/LibrePCB/LibrePCB/pull/1465>
>
> So far, the board editor displayed the pad name and (if connected) the net name …in the footprint pads. However, often both values are not very expressive (e.g. pad name is just a number, and net name is auto-generated "N#"). So, often the function of a pad is not clear. 
> 
> Since the component signal is always something expressive, it will now be displayed in pads too. In addition, the tooltip now contains the component signal name and the net name too.
> 
> !\[image\](https://github.com/user-attachments/assets/dbde1833-ff00-4d69-8432-bfdc78980a07)

> [@SteveRMann](#):
>
> I have renamed the pins and schematic arrangement to the most common usage.

Hmm generally you’re free to do that, but to be honest I’d not recommend it. A symbol is the logical representation of a device and should be drawn in a way to make schematics as logical, clean and easy to read as possible. It has nothing to do with the physical layout of the part (the package).

If you didn’t check out our [library conventions](https://librepcb.org/docs/library-conventions/) yet, I’d recommend to do so. Following these guidelines lead to cleaner schematics which are easier to read. Also your “MP3 Player” symbol & package violate several important guidelines.

> [@SteveRMann](#):
>
> How do I renumber components? Is there an auto-renumber tool or do I have to do it one component at a time?

> <https://github.com/LibrePCB/LibrePCB/issues/1393>
>
> \##### SUMMARY
> \<!-- Describe what feature should be added or improved, or what u…sability flaw
> you encountered. Provide screenshots if reasonable. --\>
> 
> Many iterations of modifications in a schematic can make component names (R1, R2, R3, ...) to become unordered and thus unintuitive and feeling "messy". Thus it would be handy to allow re-numbering all components automatically.
> 
> Initial feature request: https://librepcb.discourse.group/t/things-i-found-difficult-or-unintuitive-as-a-newcomer/747
> 
> \##### SOLUTION
> \<!-- Optionally, propose how the feature or improvement could be implemented, or
> how other EDA tools have implemented it and if you like it or not. --\>
> 
> In the schematic editor, probably just a new menu item is needed in the main menu, with a confirmation dialog which quickly explains what will happen. Then assigning all components of the project depending on their location - starting from the first page to the last page, from top to bottom, left to right. Maybe a more sophisticated solution could be chosen, e.g. respecting groups of components but that's probably too much magic :thinking:

> [@SteveRMann](#):
>
> How do I notch the PCB? I need to cut a notch in the PCB under the USB connector on the Wemos D1 Mini module.

[https://librepcb.org/docs/quickstart/create-project/board/#draw-outlines](https://librepcb.org/docs/quickstart/create-project/board/#draw-outlines)

> To draw polygons with arcs, open **Properties** from the polygon’s context menu (right-click) and specify the vertex coordinates and angles manually.

> [@SteveRMann](#):
>
> How do I move a part on the PCB when the grab handle is under a solder pad? For example, the move handle is under the center solder pad of J1. Can I move the grab handles?

Press Shift.

---

<div class="post-metadata">

**Author:** ![SteveRMann](https://yyz2.discourse-cdn.com/free1/user_avatar/librepcb.discourse.group/stevermann/32/669_2.png) [@SteveRMann](https://librepcb.discourse.group/u/SteveRMann)\
**Post date:** [November 16, 2024, 4:10pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/14 "2024-11-16T16:10:32Z")

</div>

> [@ubruhin](#):
>
> If you didn’t check out our [library conventions](https://librepcb.org/docs/library-conventions/) yet, I’d recommend to do so.

I have. I come from a circuit design background with limited CAD experience, I sometimes learn something, but mostly remain confused. What did I do wrong with the MP3 player module? It seems to work. I am able to wire the part on the schematic and place it on the PCB.

I did go back to the guidelines and found a couple of things that I did wrong.

Your other tips are much appreciated.  
Do I understand that the renumber is on the list of things to do?

Update- I was “this close” to sending an order for a prototype board but the footprint of the audio jack didn’t look right. I did finally find an Eagle library for this jack and imported it into my library.

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [November 19, 2024, 9:39pm UTC](https://librepcb.discourse.group/t/add-library-from-github/833/15 "2024-11-19T21:39:03Z")

</div>

> [@SteveRMann](#):
>
> Do I understand that the renumber is on the list of things to do?

Correct.

> [@SteveRMann](#):
>
> What did I do wrong with the MP3 player module?

Just from the screenshots:

- Naming of both symbol & package is very strange, basically totally meaningless (I have no idea what device you mean)
- Symbol pins are offset (normally they end at the symbol edge, not inside the symbol)
- Arrangement of symbol pins is identical to physical arrangement, but it should be a _logical_ representation of the circuit (e.g. GND and VCC close together)
- If GND\_1 and GND\_2 are connected on the module, there should be only one GND pin
- Different font sizes for pin names (not a big deal, but looks strange / inconsistent)
- Origin of symbol not centered
- Name & value labels in symbol not left-aligned
- Footprint origin not centered
- Package outline & courtyard polygons too small (must be _around_ the whole package body)
- No package drawing polygon on “top\_documentation” layer
- Name & value label in footprint far away from footprint and not x-centered
- Normally we don’t place pin names on silkscreen. It may make sense in very specific cases but even there I’d not add the text labels to the footprint, but only to the board. Usually it’s not desired to have too much information on silkscreen as often it gets too crowded (often not a problem for pure hobby projects where PCB size is irrelevant)

Of course for personal use you are free to violate rules like these as none of them are really critical. However, once you learned the guidelines usually following them doesn’t cost much time but lead to much cleaner & more consistent libraries. And to share libraries with other people, it’s important to have a consistent look&feel.
