I am building an IOT product, an home automation solution, where I am using ESP8266 Arduino Core that is LGPL-2.1 and also few libraries which are GPL 3.0 licensed.

For security reasons I do not want to reveal the complete source code of my firmware. I am only distributing my product with the microcontroller having the binaries embedded.

Does it come under the output of the program and hence can I keep my source code closed?

  • 2
    By distributing a device containing binaries, you are also distributing those binaries themselves. This means you will have to follow the relevant license conditions. Whether or not you can keep your own code closed depends on how it uses the GPL licensed code. May 9, 2018 at 18:17
  • 1
    I am only including these libraries in my code not modifying them.. May 9, 2018 at 18:24
  • 1
    I don't quite understand what you mean by "Does it come under the output of the program...?" Is there a GPL-licensed program the creates your microcontroller code as output? In this sentence, what is "the program" and what is the "output"?
    – apsillers
    May 9, 2018 at 21:04

1 Answer 1


This is simply normal distribution of software that includes GPL components. The fact that the binary is embodied in a physical device only allows a few extra source-distribution options (namely 6(a) and 6(b) in GPLv3) including the written-offer-for-source option even for commercial distribution. (Normally written offers are allowed only for noncommercial distribution.)

Any part of your software that is part of the same work, under copyright law, as a GPL-licensed component has copyleft requirements applied to it, and you must distribute the complete source code for the work any time you distribute the binary. This is the normal operation of the GPL's copyleft provisions; it is no different for your case.

In contrast to the GPL, LGPL components limit their copyleft obligations to modifications to the library itself. Software that makes use of LGPL components as a library do not have copyleft requirements applied to them, even if they create a single work with the library under copyright law.

As a general rule, using a GPL library requires you to disclose the source code of your whole work, while using an LGPL library only requires you to disclose the changes you made within that library.

  • Thanks a lot. Just to be more clear, what u meant is that if i want to keep my source code closed for sure, I can use LGPL Libraries Without modifying them but cannot use GPL v3 Libraries .. ? May 10, 2018 at 8:26
  • @DagaArihant That's correct: GPL libraries will require you to disclose your entire source, while LGPL libraries do not.
    – apsillers
    May 10, 2018 at 11:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.