Go Down

Topic: Using Arduino bootloader in commercial product (Read 7228 times) previous topic - next topic


What are the requirements for using an AVR with Arduino bootloader, that's programmed using the Arduino IDE, in a commercial product? If the company wished to keep the project closed source, is it still mandatory to release the source code?


May 03, 2012, 07:12 am Last Edit: May 03, 2012, 07:16 am by Osgeld Reason: 1

Can I build a commercial product based on Arduino?

Yes, with the following conditions:

   Physically embedding an Arduino board inside a commercial product does not require you to disclose or open-source any information about its design.
   Deriving the design of a commercial product from the Eagle files for an Arduino board requires you to release the modified files under the same Creative Commons Attribution Share-Alike license. You may manufacture and sell the resulting product.
   Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.
   The source code for the Arduino environment is covered by the GPL, which requires any modifications to be open-sourced under the same license. It does not prevent the sale of derivative software or its inclusion in commercial products.

In all cases, the exact requirements are determined by the applicable license. Additionally, see the previous question for information about the use of the name "Arduino".

Unless you modify the bootloader source, or arduino core files (or make a clone with physical changes) your cool, change one or the other your required to disclose the changes



Sorry for upping this, but what is considered a clone with physical changes?

I am planning on using Arduino Bootloader as medium of programming an ATmega328P on a commercial product. Can I do this with no restriction? The board where this will be implemented is very different from an Arduino, as it is an integrated solution for a specific objective.


I am planning on using Arduino Bootloader as medium of programming an ATmega328P on a commercial product. Can I do this with no restriction?

The optiboot bootloader (https://code.google.com/p/optiboot/ ) was not written and is not maintained by the Arduino team/company, and there is no restriction in using it on non-arduino products.

It IS licensed (by the original author) using GPL2, which in my opinion (as the current maintainer of optiboot) is:
1) A poor choice of license for any SW associated with an embedded system
2) not well defined WRT bootloader-type applications (but it's probably better than libraries.)  (It does seem to meet the spirit of GPL-type licenses; a user can replace the bootloader with an updated or different OSSW version that does the same thing (even their own modified version of optiboot), and it won't interact in an overt way with the part of the SW that is proprietary.)

On the other hand, I can pretty much assure you that there are no "license trolls" sitting around waiting to take advantage of some inadvertent differences of interpretation of the fine print of the license.  The idea is to provide an OS bootloader, accept improvements, and prevent commercial exploitation of the bootloader itself (ie, some company selling optiboot itself, as a SW product.  (although that's probably technically legal.))  (licensing is complicated.)

To be really safe, you'd probably need to find a SW vendor who WAS selling bootloader SW, under carefully specified commercial use licenses.  (I don't actually know of anyone selling a commercial serial bootloader.  But PRC has their "half-k" USB bootloader, which is proprietary and can probably be licensed...)


Where can I find such "shop"? How much would it cost?

Thanks for all the info! You were really kind to help!


with respect to GPL compliance:

IANAL and just my opinion...

In general you should just simply put the source file for the bootloader someplace online, along with any other 'gpl compliance' source for the firmware, then provide a (non-trivial is ok) method to flash it, which might simply be an unpopulated ISP header and 2 pins that connect to the Rx and Tx lines (with resistors if they might conflict with how you wired them up already).  If the end-user must dismantle everything to get to those pins, so what.  Linksys put out a zillion wifi routers like this, put their code online with a build environment, open sourced all the GPL stuff, 'binary blob'bed their secret-sauce, and put it all online where it's easy to find.  But you had to solder a connector for the serial port in order to program it with non-standard firmware, and ctrl+C the bootloader at the right point if you wanted to use a non-linksys image, but it was _POSSIBLE_ to flash just about anything onto those boards with a little hacking.  [standard firmware could be 'uploaded' with the original firmware's 'upgrade' feature, on a related note].

I like to use THAT as an example of how to do it.  I'm sure their 'lyers' (read:  attorneys) did a LOT of research on GPL compliance, and it's been that way for a decade or so for them.  That being said, IANAL and it's just my opinion.

worst case, you might need an 'upgrade' feature to allow people to re-flash the firmware, but most people implement that anyway.  Putting an ISP header (unpopulated) on the board is probably more than enough to allow bootloader flash.  If you have to, write special flash firmware that updates the bootloader and also allows you to flash a normal image afterwards, then open source it with a bootloader image and source to create it.


I like to use [LinkSys]as an example of how to do it.  I'm sure their 'lyers' (read:  attorneys) did a LOT of research on GPL compliance, and it's been that way for a decade or so for them.

IIRC, Linksys got caught using linux and some GPL stuff as their core operating system WITHOUT meeting the GPL requirements, and then did a lot of re-action to make things right.  When cisco acquired linksys, they had the software re-spun to run under VxWorks (allowed a smaller memory footprint, IIRC), which upset a lot of people who had been counting on putting other firmware on the linux-compatible (older) HW.  As part of a reaction to that, cisco continued to offer the older hardware essentially long after that router model was otherwise obsolete.

Not exactly a "model example" of how the prorpietary/OSSW mix ought to be done, IMO.

Go Up