Steven Toth wrote:

> Hi,
>
> (Background) I've been writing a driver for the PrimaScan/Primax 
> iCam320. I'm using the sniffusb windows USB debugger to capture the 
> data between the host and the device. I'm tranlating that into linux 
> kernel speak and can control basic funcationality and get the frames 
> back into user space.

I hope those frames aren't compressed, or you will have a few more 
months of reverse-engineering to do :-)

> Quick question. Can you legally use protocol decoders to reverse 
> engineer closed source commercial products - with an aim of produing 
> open source compatible drivers? I have not approached the company or 
> asked for any technical material/specs. 

Quick answer: yes.

Better answer: I don't know much about UK/Europe copyright law, but U.S. 
copyright law only applies to a narrowly defined subset of "intellectual 
materials". Generally speaking, it only protects "creative expressions 
of ideas". Compiled binaries or source code usually falls under that 
category. Facts, ideas, and many other things are not protected (ideas 
can be patented, though).

When using a sniffer, there are three types of data that you will 
typically encounter:

    - Commands: USB control transactions that set registers, start/stop 
image streaming, etc. Since the values being set are purely functional 
and don't represent any originality or creative expression, they have 
little or no copyright protection. If they did, nearly every Linux 
kernel developer would have spent time in court/jail. :-)

    - Firmware: This is usually compiled binary code, so it is safe to 
asssume that it is copyrightable. Many vendors will let you redistribute 
their firmware if you ask.

    - Tables: Some of them are probably not protected (eg. sets of 
register values), but some may represent creative expression 
(quantization tables, Huffman tables). In general, collections of 
factual data are not copyrightable, but their particular 
representation/structure/layout may be (if it is creative). This is one 
area in which the E.U. probably differs greatly from the U.S. (E.U. 
database directive, for example). I would REALLY appreciate if someone 
could clear this one up for me (especially re. Huffman tables).

One thing in your favor is that reverse-engineering for the purpose of 
compatibility with an existing interface is specifically allowed under 
U.S. law (unless you are dealing with something that is protected under 
the DMCA, which you are probably not). As long as you didn't agree to 
some license with a clause prohibiting reverse-engineering (i.e. when 
you installed the Windows driver), you should be safe. Those agreements 
are probably not legally binding, although I admit to not knowing much 
about licensing or contracts.

If you want to know more, I recently found some good reverse-engineering 
case summaries at http://www.lgu.com/publications/softcopy/index.shtml

Of course, I'm not a lawyer, so don't take anything I say as proper 
legal advice. ;)

-- 
Mark McClelland
[EMAIL PROTECTED]
PGP public key fingerprint: 317C 58AC 1B39 2AB0 AB96  EB38 0B6F 731F 3573 75CC




_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to