Mailing List Archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlug] GPL and Linux in Dvico Tivx



There are GPL notification issues. 

Who knows how to look for proprietary code that is 
statically linked into GPL code? (besides strings browsing)

Also, Mauro[d], does the product link the proprietary code 
with the GPL code when it is running? 

Shall we play? 

Josh wrote:

> On 14/12/05, Jim <jep200404@example.com> wrote:
> 
> > With potential GPL issues, it's definitely on topic now and
> > a good subject for the list.
> 
> Why do you suspect GPL issues? 

Suspect is too strong a word. 
I'm just curious and I smell an _opportunity_. 

I know the culture of the industry. Stephen wrote about this. 
I think it is an interesting exercise to check for compliance. 
Are you ready to play? 

A number of manufacturers of embedded things have incorporated 
GPL code without following the license. In firewall/router/NAT 
boxes, netfilter violation seems to be common. Even Linksys got 
caught. Proprietary drivers for proprietary chips (e.g. Broadcom 
wireless) are problematic for linking with the kernel. (Proprietary) 
drivers for video codecs could be rich ground for proprietary v 
GPL issues. How can one legally ship a product that links a 
proprietary driver to a GPL kernel? 

Also, like I wrote, where's the source? A cursory glance of the 
FAQ and downloads did not reveal anything helpful. How much 
source code does it take to generate a few megabytes of binary 
code? Do you think those 3MB files are bundles of binary code 
and source code, or just binary code. I would guess the latter. 

Google helps: 

   http://www.google.com/search?hl=en&q=site%3Awww.tvix.co.kr+gpl

and leads to: 

   http://www.tvix.co.kr/gpl/

which has a link to some uClinux source code: 

   http://www.tvix.co.kr/GPL/uClinux-2.4.tar.gz

but that is rather boring, since source code for 
uClinux is easily available. All that source code is from 2003. 

> The thing has an ARM processor, which
> is well-supported by a standard Linux kernel. 

Yup. What GPL notice was Maurod given? 

> It looks like they wrote their own audio and video players, 
> no doubt optimised for the ARM CPU and the framebuffer the thing has.

Let's _hope_ that they indeed wrote their own drivers, instead of 
just using proprietary drivers from the codec manufacturers. 
Then if they linked said optimized drivers with the GPL kernel, 
they can be _compelled_ to release the source code. 

If however, a chip manufacturer issues proprietary only binary 
drivers without any GPL code, then that codec manufacturer is 
under _no_ obligation to release their source code. If another 
manufacturer makes a product that incorporates the chip, and 
distributes the proprietary driver linked with GPL code, 
then that product manufacturer has put themselves in an 
impossible situation. End customers can rightly demand the 
source code to the proprietary driver, but product manufacturer 
can not give the source code because they do not own the source 
code and can not compell the chip manufacturer to divulge such. 
The product manufacturer can be compelled to stop further 
infringement, likely shutting down a product. They might 
also be sued for money for past copyright infringement. 

> By all means, if there *are* GPL issues, they should be resolved, but
> I see nothing suspicious about this, and the tone of your email might
> have convinced people who did not read it carefully that there exist
> GPL issues.

Are you ready to play? Let's go exploring. 
Be relaxed and follow your hunches. 
OK, here we go. 

http://www.google.com/search?hl=en&q=site%3Ademod.dvico.com+gpl
leads (only) to http://demod.dvico.com/Manual/TViX/TViX_Manual_1.9.pdf, 
which contains a GPL notice on page 49. Maurod, did you receive 
that manual or a similar one with the GPL notice with the product? 
Just before the GPL, it says that the source code can be downloaded from 
www.tvix.co.kr/gpl. We've already been there and downloaded some 
source code. 

It seems that TViX is a product of Dvico Co., Ltd. 

Of course, getting a copy of the uClinux source code is 
rather boring, but if they linked in some proprietary 
drivers and if Dvico wrote those proprietary drivers, 
then they can be compelled to supply the source code for 
the drivers. That would be the opportunity. If Dvico 
linked somebody else's proprietary code with GPL code, 
well then they would be in a bind. 

Let's go get some binary code. The first download link on 

   http://www.tvix.co.kr/KOR/Support/firmware.aspx

leads to http://demod.dvico.com/down/tvixfw1.9-kr.zip. 
When one downloads the stuff from their site, if it includes GPL 
code, then they are obliged to follow GPL, even if one did not buy 
anything from them. I.e., I have standing to demand source code 
from them if I download GPL binary code from them, even though I've 
not bought anything from them. 

Well, let's follow http://demod.dvico.com/down/tvixfw1.9-kr.zip. 

   $ wget http://demod.dvico.com/down/tvixfw1.9-kr.zip
   $ unzip *.zip
   Archive:  tvixfw1.9-kr.zip
     inflating: flash.bin
     inflating: tvixfw.bin

Let's see what kind of files those *.bin files are: 

   $ file *.bin
   flash.bin:  GNU tar archive
   tvixfw.bin: romfs filesystem, version 1 3272288 bytes, named TViX_PLAYER 1.9.0 Mon Jul  4 17.

Let's look inside the first one: 

   $ tar xf flash.bin
   $ find tvixfw -name '*.o' -exec strings -f {} \; | grep '[.]o: [a-zA-z]*='
   $ find tvixfw -name '*.o' -exec strings -f {} \; | grep -i license
   tvixfw/fipm.o: license=Proprietary. Copyright (c) 2002 Sigma Designs Inc. All rights reserved.
   tvixfw/khwl.o: license=Proprietary. Copyright (c) 2002 Sigma Designs Inc. All rights reserved.
   tvixfw/mtd/mtdcore.o: license=GPL
   tvixfw/mtd/mtdchar.o: license=GPL
   tvixfw/mtd/chips/chipreg.o: license=GPL
   tvixfw/mtd/chips/cfi_probe.o: license=GPL
   tvixfw/mtd/chips/cfi_cmdset_0002.o: license=GPL
   tvixfw/mtd/chips/gen_probe.o: license=GPL
   tvixfw/mtd/chips/jedec_probe.o: license=GPL
   tvixfw/mtd/maps/jaspermap.o: license=GPL

Nuts! fipm.o and khwl.o are by a third party, Sigma Designs Inc., 
so if fipm.o and khwl.o are linked with GPL code 
by someone other than Sigma Designs Inc., 
then disclosure of source code can not be compelled. 

So in flash.bin, it looks like we have an aggregation of 
proprietary and GPL binary code. There should have been 
GPL notice withing flash.bin or tvixfw1.9-kr.zip or 
at least on http://www.tvix.co.kr/KOR/Support/firmware.aspx. 
Oops. We are missing notification that flash.bin has GPL code. 
(Possible GPL violation #1)

When I look at the source code from uClinux-2.4.tar.gz for 
files with names that one would expect for the above *.o GPL files, 
I find substantial matches, so the above GPL code could have 
come from the uClinux-2.4.tar.gz source code. 

What's in tvixfw/flash? 

   $ strings tvixfw/flash
...
    libpng version 1.0.12 - June 8, 2001
      Copyright (c) 1998-2001 Glenn Randers-Pehrson
      Copyright (c) 1996, 1997 Andreas Dilger
      Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
   1.0.12
    libpng version 1.0.12 - June 8, 2001 (header)
...

I could use some help here. Is that GPL code? 
If so, how do we make the flash file? 

Let's procede to look at tvixfw.bin: 

   $ mkdir mnt
   $ mount -t romfs -o loop tvixfw.bin mnt
   $ cd mnt
   $ find . -type f -not -name '*.png' -not -name '*.jpg' -ls
   852111  244 -rwxr-x---   1 root     root       243876 Dec 31  1969 ./bin/aviplay
   852112  112 -rwxr-x---   1 root     root       110372 Dec 31  1969 ./bin/mpgplay
   852113  260 -rwxr-x---   1 root     root       261384 Dec 31  1969 ./bin/mp3play
   852114  308 -rwxr-x---   1 root     root       310292 Dec 31  1969 ./bin/audioplay
   852115  708 -rwxr-x---   1 root     root       719516 Dec 31  1969 ./bin/init
   852120   20 -rwxr-x---   1 root     root        19107 Dec 31  1969 ./fonts/hangul24.gz
   852121   32 -rwxr-x---   1 root     root        31207 Dec 31  1969 ./fonts/hangul34.gz
   852122  164 -rwxr-x---   1 root     root       160842 Dec 31  1969 ./fonts/hanja24.gz
   852123  308 -rwxr-x---   1 root     root       307345 Dec 31  1969 ./fonts/hanja34.gz
   852124   20 -rwxr-x---   1 root     root        18437 Dec 31  1969 ./fonts/symbol24.gz
   852125   32 -rwxr-x---   1 root     root        28859 Dec 31  1969 ./fonts/symbol34.gz
   852243  340 -rw-r-----   1 root     root       342237 Dec 31  1969 ./khwl.o
   852244   12 -rw-r-----   1 root     root        10660 Dec 31  1969 ./irdrv.o
   852245   60 -rwxr-x---   1 root     root        55644 Dec 31  1969 ./minimod
   852246  452 -rw-r-----   1 root     root       458279 Dec 31  1969 ./linux.bin.gz

Interesting candidates to explore are mnt/bin/*, mnt/*.o, mnt/minimod 
and of course mnt/linux.bin.gz. 

   $ strings -f bin/* | grep -i copyright
   bin/audioplay: Copyright %s
   bin/init:    Copyright (c) 1998-2001 Glenn Randers-Pehrson
   bin/init:    Copyright (c) 1996, 1997 Andreas Dilger
   bin/init:    Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
   bin/init:  deflate 1.1.4 Copyright 1995-2002 Jean-loup Gailly
   bin/init:  inflate 1.1.4 Copyright 1995-2002 Mark Adler
   bin/init: Copyright (C) 1998, Thomas G. Lane
   bin/mp3play: Copyright (C) 1998, Thomas G. Lane

Where did init come from? Is it GPM or proprietary? 
Was it compiled from uClinux-2.4/init/*.c from uClinux-2.4.tar.gz? 
How about bin/*play? Are they GPM, public domain or proprietary? 

   $ find mnt -name '*.o' -exec strings -f {} \; | grep -i license
   mnt/khwl.o: license=Proprietary. Copyright (c) 2002 Sigma Designs Inc. All rights reserved.

mnt/khwl.o is clearly proprietary code. 

   $ strings irdrv.o
   /m3000/uClinux-2.4/include/linux/dcache.h
   /m3000/uClinux-2.4/include/linux/sched.h
   /m3000/uClinux-2.4/include/linux/highmem.h
   IR: ir_check_media_change
   IR: ir_revalidate
   IR: failed to register kernel module
   IR: cleanup_module
   IR: cleanup_module ok
   /m3000/uClinux-2.4/include/linux/dcache.h
   /m3000/uClinux-2.4/include/linux/dcache.h
   /m3000/uClinux-2.4/include/linux/dcache.h
   kernel_version=2.4.17-uc0
   kernel_version=2.4.17-uc0
   kernel_version=2.4.17-uc0
   kernel_version=2.4.17-uc0

Where is the source code for irdrv.o? 
Is it proprietary or OSS code? 
Is it a kernel module? 
I don't seen any similarly name source files for it 
from uClinux-2.4.tar.gz

   $ gunzip <linux.bin.gz >linux.bin
   $ strings linux.bin | grep -i linux

>From http://www.uclinux.org/description/, 
one learns that uClinux is a derivative of Linux kernels. 
I would guess that that means that uClinux is covered by GPL. 
Where's the GPL notice? 

--------------------------------------------------------------

Summary. 

It seems the GPL notices have been thin. Although that 
could mean infringement, it is easily resolved, so 
there is little opportunity there. 

We probably have most of the source code, 
but it is common for such a complex product to need 
custom modifications. Were modifications made to the GPL 
code? Do we have the source code for such modifications? 
If not, then Dvico can be compelled to cough up the 
modified source code? 

Are the proprietary modules linked with the GPL code? 
If so, who does it? 

What code was in the M3000U when Mauro[d] bought it 
(before he downloaded code)? Did that code link proprietary 
code to GPL code? Did Mauro[d] receive GPL notice? 

Is shipping customers a product without code and 
having customers download infringing code some trick 
for shifting infringement to customers? 

Since the obvious proprietary code is by a third party, 
Sigma Designs Inc., unless Sigma incorporated GPL code 
in their proprietary code, it is unlikely that the 
source code for the proprietary code can be forced 
to be divulged. If Dvico linked Sigma's proprietary 
code with GPL code, only Dvico would be in an awkward 
position. 



Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links