EmbeddedRelated.com
Forums
Memfault Beyond the Launch

Newbe -Linux - licensiing & hardware

Started by aregan November 10, 2011
Hi,

I'm looking at the possiblity of developing a product which will use linux
embedded but have few newbe questions. I'm a software engineer with about
15 years expierence, but its been a while since I've developed for linux.

First question is about licensing. 
Lets say I'm building a new device that uses linux, for example its a new
router. What versions of linux are free for me to use as my device OS.
Must I only make available the OS source code, or must I also make
available the source code that drives my device?

Second question
Any suggestions on ultra low cost hardware.
Requirements:
      1 Lan interface port
      1 input gpio, 1 output gpio
      Processor, ram (any. Slow / Low is fine)
      1 audio input port, 1 audio output port
      fanless
      No vga port required other than for testing / debug.
      Must support linux. Preferably ship with linux.

All advice for a novice welcomed!


	   
					
---------------------------------------		
Posted through http://www.EmbeddedRelated.com

aregan wrote:

> Hi, > > I'm looking at the possiblity of developing a product which will use linux > embedded but have few newbe questions. I'm a software engineer with about > 15 years expierence, but its been a while since I've developed for linux. > > First question is about licensing. > Second question > Any suggestions on ultra low cost hardware. > All advice for a novice welcomed!
A young guy and young girl came to the rabbi to ask for his advice. A girl: "Tomorrow is my first night with my fiance. What kind of night dress should I put on? Should it be a long dress, or a short dress, or an open dress, or a closed dress, or anything?" A boy: "I got some money. Will you please give me an advice what to do with it: maybe, invest into something, or buy some real estate, or gold, or put it into a bank?" The rabbi: "My dear children, I have one answer for both of you: whatever you do, you will be fucked" VLV
On Nov 10, 12:53=A0pm, "aregan" <alan.regan@n_o_s_p_a_m.redkey.ie>
wrote:
> Hi, > > I'm looking at the possiblity of developing a product which will use linu=
x
> embedded but have few newbe questions. I'm a software engineer with about > 15 years expierence, but its been a while since I've developed for linux. > > First question is about licensing. > Lets say I'm building a new device that uses linux, for example its a new > router. What versions of linux are free for me to use as my device OS. > Must I only make available the OS source code, or must I also make > available the source code that drives my device?
I believe the gnu license will force you to release the driver in source, to prevent you from making cosmetic changes and then making it proprietary. Especially if you adapt it from some existing drivers, to work with the OS. However, there is not many reason to write your own driver, unless you are making a new chip.
> > Second question > Any suggestions on ultra low cost hardware. > Requirements: > =A0 =A0 =A0 1 Lan interface port > =A0 =A0 =A0 1 input gpio, 1 output gpio > =A0 =A0 =A0 Processor, ram (any. Slow / Low is fine) > =A0 =A0 =A0 1 audio input port, 1 audio output port > =A0 =A0 =A0 fanless > =A0 =A0 =A0 No vga port required other than for testing / debug. > =A0 =A0 =A0 Must support linux. Preferably ship with linux. > > All advice for a novice welcomed! >
AVR32, PIC32, PPC32, ARM32, etc.
> --------------------------------------- > Posted throughhttp://www.EmbeddedRelated.com
On Thu, 10 Nov 2011 14:53:05 -0600, aregan wrote:

> Hi, > > I'm looking at the possiblity of developing a product which will use > linux embedded but have few newbe questions. I'm a software engineer > with about 15 years expierence, but its been a while since I've > developed for linux. > > First question is about licensing. > Lets say I'm building a new device that uses linux, for example its a > new router. What versions of linux are free for me to use as my device > OS. Must I only make available the OS source code, or must I also make > available the source code that drives my device? > > Second question > Any suggestions on ultra low cost hardware. Requirements: > 1 Lan interface port > 1 input gpio, 1 output gpio > Processor, ram (any. Slow / Low is fine) 1 audio input port, 1 > audio output port fanless > No vga port required other than for testing / debug. Must support > linux. Preferably ship with linux. > > All advice for a novice welcomed!
I've never shipped a product with Linux, but I've done some research. So, take this with an appropriate-sized grain of salt: The GPL is written to cover the code you got, the code you added to it, and the code for anything that links in. Don't link it in, and you're safe. There are some issues with kernel code if you write drivers, but answers will be out there (I think the GPL doesn't cover dynamic linkage, just static -- so you can write kernel modules that link at run time. But _please_ check for yourself!!!). The LGPL is specifically written to _not_ cover the code you link in, so you can, for example, use an LGPL library in your code without 'poisoning' what you've written. This is all out there on web pages and in books. I happen to have Doug Abbot's "Linux for Embedded and Real-Time Applications", but that's because I wanted to buy a book, he was signing books right after (or right before) I was at the Elsevier booth at the Embedded Systems Conference, and I wanted to be polite (and get a Signed Book, too!). So I can say that it seems to be well written and to the point (and it has a section on licensing), but that's about all. As for the hardware, I'm not sure what's "Ultra low cost" to you. Get a copy of (or subscribe to) Circuit Cellar magazine -- the ads are chock full of boards that you may want, many of which tout that they ship with Linux. -- www.wescottdesign.com
linnix wrote:
> On Nov 10, 12:53 pm, "aregan"<alan.regan@n_o_s_p_a_m.redkey.ie> > wrote: >> Hi, >> >> I'm looking at the possiblity of developing a product which will use linux >> embedded but have few newbe questions. I'm a software engineer with about >> 15 years expierence, but its been a while since I've developed for linux. >> >> First question is about licensing. >> Lets say I'm building a new device that uses linux, for example its a new >> router. What versions of linux are free for me to use as my device OS. >> Must I only make available the OS source code, or must I also make >> available the source code that drives my device? > > I believe the gnu license will force you to release the driver in > source, to prevent you from making cosmetic changes and then making it > proprietary.
No. You can use existing drivers unmodified or patch ( with patch files in your build process - like "patch driver.c < /place/patches /driver.c.patch" ) existing drivers. If you write a new driver from scratch ( or by copying an existing driver - same deal ) it's yours to license or not. These drivers can be, and are, trade secret.
> Especially if you adapt it from some existing drivers, > to work with the OS. However, there is not many reason to write your > own driver, unless you are making a new chip. >
If one exists, sure.
>> >> Second question >> Any suggestions on ultra low cost hardware. >> Requirements: >> 1 Lan interface port >> 1 input gpio, 1 output gpio >> Processor, ram (any. Slow / Low is fine) >> 1 audio input port, 1 audio output port >> fanless >> No vga port required other than for testing / debug. >> Must support linux. Preferably ship with linux. >> >> All advice for a novice welcomed! >> > > AVR32, PIC32, PPC32, ARM32, etc. > >> --------------------------------------- >> Posted throughhttp://www.EmbeddedRelated.com >
-- Les Cargill
On Thu, 10 Nov 2011 14:53:05 -0600, "aregan"
<alan.regan@n_o_s_p_a_m.redkey.ie> wrote:

>Hi, > >I'm looking at the possiblity of developing a product which will use linux >embedded but have few newbe questions. I'm a software engineer with about >15 years expierence, but its been a while since I've developed for linux. > >First question is about licensing. >Lets say I'm building a new device that uses linux, for example its a new >router. What versions of linux are free for me to use as my device OS. >Must I only make available the OS source code, or must I also make >available the source code that drives my device?
IANAL and I would encourage you to check with a qualified IP attorney if you have any doubts. That said, I attended a certificate program on embedded Linux development last year and this is what was told to us. - You can use any version of the kernel. Check out www.kernel.org to see what's available. Stay away from the latest and greatest unless you desperately need some feature only the latest version provides. - You do not have to provide kernel source unless you modify it because the kernel sources are readily available. You can just tell your customers where to download it. - Similarly, you do not have to provide sources to publicly available GPL'd or LGPL'd libraries unless you modify them. - Libraries and other code licensed under LGPL are not infectious and do not require you to release your sources. - Drivers and other kernel mode code that are compiled as separate modules and loaded via insmod can remain proprietary unless they themselves include GPL'd code. - Drivers and other kernel mode code that are statically linked into the kernel are a gray legal area. The core kernel is under GPL 2 which theoretically allows for proprietary drivers, but some parts of the 2.x and 3.x distributions now are under GPL 3 which is extremely infectious. AFAIK, there has been no definitive legal ruling on how (or whether) the presence of statically linked GPL 3 code affects statically linking to the GPL 2 kernel. Bottom line: write your code as a module, don't statically link it to the kernel. - A user mode application can remain proprietary unless it itself includes GPL'd code. IANAL
>Second question >Any suggestions on ultra low cost hardware. >Requirements: > 1 Lan interface port > 1 input gpio, 1 output gpio > Processor, ram (any. Slow / Low is fine) > 1 audio input port, 1 audio output port > fanless > No vga port required other than for testing / debug. > Must support linux. Preferably ship with linux. >
Sorry, can't help you there. George
In article <dn8pb7h2i32qv958s26288h3k1j4p5071b@4ax.com>, gneuner2
@comcast.net says...
> > On Thu, 10 Nov 2011 14:53:05 -0600, "aregan" > <alan.regan@n_o_s_p_a_m.redkey.ie> wrote: > > >Hi, > > > >I'm looking at the possiblity of developing a product which will use linux > >embedded but have few newbe questions. I'm a software engineer with about > >15 years expierence, but its been a while since I've developed for linux. > > > >First question is about licensing. > >Lets say I'm building a new device that uses linux, for example its a new > >router. What versions of linux are free for me to use as my device OS. > >Must I only make available the OS source code, or must I also make > >available the source code that drives my device? > > IANAL and I would encourage you to check with a qualified IP attorney > if you have any doubts. That said, I attended a certificate program > on embedded Linux development last year and this is what was told to > us. > > - You can use any version of the kernel. Check out www.kernel.org > to see what's available. Stay away from the latest and greatest > unless you desperately need some feature only the latest version > provides. > > > - You do not have to provide kernel source unless you modify it > because the kernel sources are readily available. You can just > tell your customers where to download it. > > - Similarly, you do not have to provide sources to publicly > available GPL'd or LGPL'd libraries unless you modify them. > > > - Libraries and other code licensed under LGPL are not infectious > and do not require you to release your sources. > > > - Drivers and other kernel mode code that are compiled as separate > modules and loaded via insmod can remain proprietary unless > they themselves include GPL'd code. > > > - Drivers and other kernel mode code that are statically linked into > the kernel are a gray legal area. The core kernel is under GPL 2 > which theoretically allows for proprietary drivers, but some > parts of the 2.x and 3.x distributions now are under GPL 3 which is > extremely infectious. AFAIK, there has been no definitive legal > ruling on how (or whether) the presence of statically linked GPL 3 > code affects statically linking to the GPL 2 kernel. > > Bottom line: write your code as a module, don't statically link it > to the kernel. > > > - A user mode application can remain proprietary unless it itself > includes GPL'd code. >
This bit confuses me. Does using the standard C libraries mean that my user mode application includes GPL's code? Or does that apply only if I used the library sources, not the compiled libraries? <SNIP hardware stuff> Mark Borgerson
On 11/11/2011 07:34 PM, Mark Borgerson wrote:
> In article<dn8pb7h2i32qv958s26288h3k1j4p5071b@4ax.com>, gneuner2 > @comcast.net says... >> >> On Thu, 10 Nov 2011 14:53:05 -0600, "aregan" >> <alan.regan@n_o_s_p_a_m.redkey.ie> wrote: >> >>> Hi, >>> >>> I'm looking at the possiblity of developing a product which will use linux >>> embedded but have few newbe questions. I'm a software engineer with about >>> 15 years expierence, but its been a while since I've developed for linux. >>> >>> First question is about licensing. >>> Lets say I'm building a new device that uses linux, for example its a new >>> router. What versions of linux are free for me to use as my device OS. >>> Must I only make available the OS source code, or must I also make >>> available the source code that drives my device? >> >> IANAL and I would encourage you to check with a qualified IP attorney >> if you have any doubts. That said, I attended a certificate program >> on embedded Linux development last year and this is what was told to >> us. >> >> - You can use any version of the kernel. Check out www.kernel.org >> to see what's available. Stay away from the latest and greatest >> unless you desperately need some feature only the latest version >> provides. >> >> >> - You do not have to provide kernel source unless you modify it >> because the kernel sources are readily available. You can just >> tell your customers where to download it. >> >> - Similarly, you do not have to provide sources to publicly >> available GPL'd or LGPL'd libraries unless you modify them. >> >> >> - Libraries and other code licensed under LGPL are not infectious >> and do not require you to release your sources. >> >> >> - Drivers and other kernel mode code that are compiled as separate >> modules and loaded via insmod can remain proprietary unless >> they themselves include GPL'd code. >> >> >> - Drivers and other kernel mode code that are statically linked into >> the kernel are a gray legal area. The core kernel is under GPL 2 >> which theoretically allows for proprietary drivers, but some >> parts of the 2.x and 3.x distributions now are under GPL 3 which is >> extremely infectious. AFAIK, there has been no definitive legal >> ruling on how (or whether) the presence of statically linked GPL 3 >> code affects statically linking to the GPL 2 kernel. >> >> Bottom line: write your code as a module, don't statically link it >> to the kernel. >> >> >> - A user mode application can remain proprietary unless it itself >> includes GPL'd code. >> > This bit confuses me. Does using the standard C libraries mean that > my user mode application includes GPL's code? Or does that apply > only if I used the library sources, not the compiled libraries?
RTFM http://www.gnu.org/s/hello/manual/libc/Copying.html#Copying If you use LGPL libraries and dynamic linking, then you are under section 6b and should be OK. If you modify the libraries then you must supply the changes, either as full source or as a patch file to a readily available source (usually a standard distribution).
> > <SNIP hardware stuff> > > > Mark Borgerson > >
In article <zudvq.23753$Us1.18749@newsfe16.iad>, dennis@nowhere.net 
says...
> > On 11/11/2011 07:34 PM, Mark Borgerson wrote: > > In article<dn8pb7h2i32qv958s26288h3k1j4p5071b@4ax.com>, gneuner2 > > @comcast.net says... > >> > >> On Thu, 10 Nov 2011 14:53:05 -0600, "aregan" > >> <alan.regan@n_o_s_p_a_m.redkey.ie> wrote: > >> > >>> Hi, > >>> > >>> I'm looking at the possiblity of developing a product which will use linux > >>> embedded but have few newbe questions. I'm a software engineer with about > >>> 15 years expierence, but its been a while since I've developed for linux. > >>> > >>> First question is about licensing. > >>> Lets say I'm building a new device that uses linux, for example its a new > >>> router. What versions of linux are free for me to use as my device OS. > >>> Must I only make available the OS source code, or must I also make > >>> available the source code that drives my device? > >> > >> IANAL and I would encourage you to check with a qualified IP attorney > >> if you have any doubts. That said, I attended a certificate program > >> on embedded Linux development last year and this is what was told to > >> us. > >> > >> - You can use any version of the kernel. Check out www.kernel.org > >> to see what's available. Stay away from the latest and greatest > >> unless you desperately need some feature only the latest version > >> provides. > >> > >> > >> - You do not have to provide kernel source unless you modify it > >> because the kernel sources are readily available. You can just > >> tell your customers where to download it. > >> > >> - Similarly, you do not have to provide sources to publicly > >> available GPL'd or LGPL'd libraries unless you modify them. > >> > >> > >> - Libraries and other code licensed under LGPL are not infectious > >> and do not require you to release your sources. > >> > >> > >> - Drivers and other kernel mode code that are compiled as separate > >> modules and loaded via insmod can remain proprietary unless > >> they themselves include GPL'd code. > >> > >> > >> - Drivers and other kernel mode code that are statically linked into > >> the kernel are a gray legal area. The core kernel is under GPL 2 > >> which theoretically allows for proprietary drivers, but some > >> parts of the 2.x and 3.x distributions now are under GPL 3 which is > >> extremely infectious. AFAIK, there has been no definitive legal > >> ruling on how (or whether) the presence of statically linked GPL 3 > >> code affects statically linking to the GPL 2 kernel. > >> > >> Bottom line: write your code as a module, don't statically link it > >> to the kernel. > >> > >> > >> - A user mode application can remain proprietary unless it itself > >> includes GPL'd code. > >> > > This bit confuses me. Does using the standard C libraries mean that > > my user mode application includes GPL's code? Or does that apply > > only if I used the library sources, not the compiled libraries? > > RTFM http://www.gnu.org/s/hello/manual/libc/Copying.html#Copying > > If you use LGPL libraries and dynamic linking, then you are under > section 6b and should be OK. If you modify the libraries then you must > supply the changes, either as full source or as a patch file to a > readily available source (usually a standard distribution). >
That's all very good if there is only one manual and there are clear pointers to that manual. That hasn't been obvious until now. Perhaps the real answer is "Start at gnu.org and read EVERYTHING!". By the time I get from section 1a through NX to 6b, perhaps I will truly comprehend the complexities of the GPL license---but don't hold your breath! ;-) Mark Borgerson
On Fri, 11 Nov 2011 17:34:02 -0800, Mark Borgerson
<mborgerson@comcast.net> wrote:

>In article <dn8pb7h2i32qv958s26288h3k1j4p5071b@4ax.com>, gneuner2 >@comcast.net says... > >> - A user mode application can remain proprietary unless it itself >> includes GPL'd code. >> >This bit confuses me. Does using the standard C libraries mean that >my user mode application includes GPL's code? Or does that apply >only if I used the library sources, not the compiled libraries?
The GCC C and C++ standard libraries are under LGPL, so regardless of how you link to them the sources for your application can remain proprietary. If you link dynamically there is no library code in your application. You need to supply the library binaries in your installation for systems that don't have them already. (Even if the system has them, it may not have the specific versions you used.) However, if you link *statically* then library code *is* in your application. The linker extracts from the library the code for the functions used by the application and copies it into the application executable. Note that the whole library isn't in your application, but only the functions you actually used and any lower level functions on which they depend. LGPL demands that you make the library available, but so long as you use the library "as is" and do not modify it, you can just point people to where they can get their own copy of its source. George

Memfault Beyond the Launch