Reply
Thread Tools
Posts: 255 | Thanked: 15 times | Joined on Oct 2007 @ United Kingdom
#1
I'm not a developer, so I'm posting this here in the general forum. If you are a developer and choose to reply, please bear this in mind

I'm curious as to how the kernel in the Nokia Internet tablets is organised and in particular the fact that people sayd that much of the hardware in the internet tablets isn't open, so can't use open source drivers.

Am I right in thinking that the proprietary kernel modules are held in initrd? And, because they're binary modules, they only work with one particular kernel version? So you couldn't, for example, grab the latest vanilla kernel source and build from scratch?

If this is the case, has Nokia ever released updated binary modules for later kernels? Or do we have to take what we're given?
 
Posts: 2,102 | Thanked: 1,309 times | Joined on Sep 2006
#2
The proprietary modules are just that, kernel modules. They live in the initfs.

The things that are proprietary in the kernel are wifi and Bluetooth. These are proprietary binary only kernel modules. If Nokia were to release kernel drivers which use a reasonably simple wrapper driver to load a binary blob that would make transitioning to a later kernel a relatively easy matter. I'm pretty sure there's a garage project for just such a wrapper for the wifi hardware. Not sure about the Bluetooth stuff. Someone correct me if I'm wrong there please.

There are other proprietary parts of the system - these include the software that interfaces with the battery control hardware and parts of the DSP kernel (the latter doesn't stop anyone from updating the Linux kernel and the former could probably be reverse engineered if someone were motivated enough)
 
Posts: 255 | Thanked: 15 times | Joined on Oct 2007 @ United Kingdom
#3
Originally Posted by lardman View Post
The proprietary modules are just that, kernel modules. They live in the initfs.

The things that are proprietary in the kernel are wifi and Bluetooth. These are proprietary binary only kernel modules. If Nokia were to release kernel drivers which use a reasonably simple wrapper driver to load a binary blob that would make transitioning to a later kernel a relatively easy matter. I'm pretty sure there's a garage project for just such a wrapper for the wifi hardware. Not sure about the Bluetooth stuff. Someone correct me if I'm wrong there please.

There are other proprietary parts of the system - these include the software that interfaces with the battery control hardware and parts of the DSP kernel (the latter doesn't stop anyone from updating the Linux kernel and the former could probably be reverse engineered if someone were motivated enough)
OK, thanks.

As you probably know, there are pretty strict rules about binary modules. They should be binary blobs that are pre-existing code (this also means they're usually cross-platform). The GPL should mean that Nokia can't simply develop drivers for their tablet kernels and keep them secret. But it is, of course, a grey area. Now you've confirmed my suspicions, I wonder if this is a bit of a timebomb -- if the guys on Slashdot got to hear, or Groklaw, Nokia could face a lot of criticism.

So the DSP kernel is separate? Is this completely closed-source or still based on Linux?

I presume the reason for the proprietary modules and software was for reasons of cost -- Nokia would have liked to use open spec hardware but the closed-spec stuff was just cheaper or simply better specified (like the wifi controller in the OLPC project).
 
Posts: 2,102 | Thanked: 1,309 times | Joined on Sep 2006
#4
The GPL should mean that Nokia can't simply develop drivers for their tablet kernels and keep them secret. But it is, of course, a grey area. Now you've confirmed my suspicions, I wonder if this is a bit of a timebomb -- if the guys on Slashdot got to hear, or Groklaw, Nokia could face a lot of criticism.
Nvidia quite happily release binary only kernel modules. Or are you saying that if you use a GPL wrapper to load a proprietary binary blob, that the blob must be GPL too?

So the DSP kernel is separate? Is this completely closed-source or still based on Linux?
Partly closed source. It's based on (available) Ti source code, with closed source additions by Nokia. It's not Linux based.

I presume the reason for the proprietary modules and software was for reasons of cost -- Nokia would have liked to use open spec hardware but the closed-spec stuff was just cheaper or simply better specified (like the wifi controller in the OLPC project).
Yes, I imagine cost/performance was the deciding factor.
 
Posts: 255 | Thanked: 15 times | Joined on Oct 2007 @ United Kingdom
#5
Originally Posted by lardman View Post
Nvidia quite happily release binary only kernel modules. Or are you saying that if you use a GPL wrapper to load a proprietary binary blob, that the blob must be GPL too?
But Nvidia don't release binary kernel modules As you say, they release open source modules that hook into binary blobs. The blob is already-existing code, and this is an important point -- it isn't derived from the kernel. The actual hook module is, so must be GPL.

I'm as tired of unqualified conjecture about the GPL as you probably are, but here's my understanding: the GPL says that any source code derived from existing GPL code must also be GPL licensed. Simple.

If Nokia is simply creating drivers for closed components of the Internet tablets, but not sharing the code, then they are contravening the GPL because there's no way they could create drivers without 'deriving' them from existing kernel code.

So unless Nokia is taking the same 'binary blob' approach as Nvidia, and other proprietary vendors, then there's something wrong. From what I read, initrd simply contains binary modules. If that is the case then we're entitled to ask for the source code to those modules, which should be GPL licensed, without any kind of restriction (ie NDA).

Or am I missing something here?
 
yerga's Avatar
Posts: 696 | Thanked: 1,012 times | Joined on Mar 2006 @ Asturies, Spain
#6
An interesting read: http://article.gmane.org/gmane.linux.kernel/475723


Follow the thread down. It's very large.
Especially the first message of Linus Torvalds: http://article.gmane.org/gmane.linux.kernel/475824

It was in December 2006.
__________________
Daniel Martín Yerga
maemo.org profile
Twitter
 
Posts: 255 | Thanked: 15 times | Joined on Oct 2007 @ United Kingdom
#7
Originally Posted by yerga View Post
An interesting read: http://article.gmane.org/gmane.linux.kernel/475723


Follow the thread down. It's very large.
Especially the first message of Linus Torvalds: http://article.gmane.org/gmane.linux.kernel/475824

It was in December 2006.
Well, maybe I'm wrong, but those two links are talking about the ethical and legal questions concerning the use of binary kernel modules.

What we're talking about in this thread is simple GPL compliance. The GPL is a distribution agreement, not a usage agreement. It tells people what they must do if they wish to modify and distribute the kernel.

If Nokia modify the kernel and distribute it in binary form then they MUST provide access to the source code, including their modifications.

What Nokia appears to have done with the Internet tablets is

(1) take the Linux kernel code,
(2) add in their own drivers and
(3) redistribute the binary kernel in the devices themselves and via download, but NOT redistribute the source code for the drivers (effectively, their additions, which are derived from the main source code).

This is exactly what the GPL is designed to avoid.

As mentioned, there are ways around this using wrappers and binary blobs but it isn't clear whether Nokia took this route. The signs are that they didn't.

If they didn't, and they simply compiled kernel modules for which they're keeping the source code secret, then they're not complying with the GPL license. If that's the case then they have no right to redistribute existing Linux kernel code on their devices.

The Nokia tablets are so long in the tooth, and Nokia must have so many lawyers, that I suspect I'm barking up the wrong tree with these comments. Still, this remains an enigma.
 
Posts: 2,102 | Thanked: 1,309 times | Joined on Sep 2006
#8
They have not modified an existing part of the kernel. They (or at least someone) has written their own binary kernel module. If they do this they have not modified GPL code, they merely link into it (and there's lots of talk about whether this should be allowed too!).

This is identical to the case where they use a binary blob.

I don't see any legal difficulties with the way Nokia have done this over and above those that other companies such as nVidia/ImgTech (PowerVR) have with their own binary-only and/or binary-blob modules.

Sorry.


Simon
 
Posts: 255 | Thanked: 15 times | Joined on Oct 2007 @ United Kingdom
#9
Originally Posted by lardman View Post
They have not modified an existing part of the kernel. They (or at least someone) has written their own binary kernel module. If they do this they have not modified GPL code, they merely link into it (and there's lots of talk about whether this should be allowed too!).

This is identical to the case where they use a binary blob.

I don't see any legal difficulties with the way Nokia have done this over and above those that other companies such as nVidia/ImgTech (PowerVR) have with their own binary-only and/or binary-blob modules.

Sorry.


Simon
I don't agree that a proprietary module is the same as a binary blob, but I respect your point of view

Here's what Linus said, albeit back in 1998:

Q: What is your position about the availability of Linux modules in binary-only form?’

A: I kind of accept them, but I never support them and I don’t like them. The reason I accept binary-only modules at all is that, in many cases, you have, for example, a device driver that is not written for Linux at all, but, for example, works on … other operating systems, and the manufacturer … wants to port that driver to Linux. But because that driver was obviously not derived from Linux (it had a life of its own regardless of any Linux development), I didn’t feel that I had the moral right to require that it be put under the GPL, so the binary-only module interface allows those kinds of modules to exist and work with Linux.

That doesn’t mean that I would accept just any kind of binary-only module: there are cases where something would be so obviously Linux-specific that it simply wouldn’t make sense without the Linux kernel. In those cases, it would also obviously be a derived work, and as such the above excuses don’t really apply any more, and it falls under the GPL license.


Taken from http://www.venturecake.com/the-vmware-house-of-cards/, which contains an interesting discussion about the matter from the point of view of VMWare's products.

Also see Linus' comments in the following: http://kerneltrap.org/node/1735, and in particular the line: BUT YOU CAN NOT USE THE KERNEL HEADER FILES TO CREATE NON-GPL'D BINARIES.

Last edited by rs-px; 2007-10-27 at 15:13.
 
Reply


 
Forum Jump


All times are GMT. The time now is 01:21.