User: Password:
|
|
Subscribe / Log in / New account

Resolved: firmware is not software

Resolved: firmware is not software

Posted Aug 24, 2006 3:59 UTC (Thu) by jwb (guest, #15467)
Parent article: Resolved: firmware is not software

I happen to agree with the position that firmware is data, for two reasons. The first reason is that many instances of firmware really are written from scratch in machine code and there isn't any kind of source code to distribute. The second reason is that it draws an arbitrary line between "short" and "long" data.

Suppose I have a device which needs to be initialized, so I write this to its port:

0x80 0x62

Now suppose I have another device, which needs to be initialized this way:

0x41 0x18 0xa5 0xff 0x00 0x19 0x54 0x37

And I have a third device, where the initialization string is like the above, but about fifty kilobytes long. What's the difference? Can I distribute the driver for the first and second device, but not distribute the third because it is somehow "not free"? At what exact length (in bytes) does it become not free? What if the author write the 50,000-byte initialization, in machine language, in hexadecimal, through sheer application of brain power? What, then, is the "preferred form of modification"?


(Log in to post comments)

Resolved: firmware is not software

Posted Aug 24, 2006 6:02 UTC (Thu) by khim (subscriber, #9252) [Link]

At what exact length (in bytes) does it become not free?

Interesting, but not new question. That's for courts to decide. If it's copyrightable - it's non-free, if it's not long/complex enough to be copyrightable - it's "just data".

What if the author write the 50,000-byte initialization, in machine language, in hexadecimal, through sheer application of brain power? What, then, is the "preferred form of modification"?

Do you really believe someone does it today ? I wrote some code in hexadecimal. It was many years ago and even 1kb of code written in such a way was (and will be today) VERY expensive piece of code. Today at least assembler is used. As usual: that's for courts to decide. I'm pretty sure unique person who's writing 50Kb code in hexadeciman and not in assembler will need A LOT OF test to prove that he's not crazy and that he's not liar, but yes, in such a case it'll be "preffered form" because no other form exist...

Resolved: firmware is not software

Posted Aug 24, 2006 6:53 UTC (Thu) by Los__D (guest, #15263) [Link]

Why would anyone write more than a few bytes of firmware directly in machine code, instead of using assembler? Even very custom hardware should have an assembler, just to keep the developers from going crazy...

There's no advantages to skipping the assembler step, no code size or reduction speed improvements.

That said, I DO agree that it's data, seen from the host CPU. It's not going to be executed by the CPU, but passed on to another unit. In a lot of cases, it wouldn't even be executable by the CPU.

Another thing is if we would understand the custom assembler anyway:

MAKEIT STFU
BLEHLA RIAA, 5000
WOOHOO STFU, RIAA
WEDONK RIAA
;)

Resolved: firmware is not software

Posted Aug 24, 2006 7:08 UTC (Thu) by drag (subscriber, #31333) [Link]

I agree.

Firmware is very hardware specific. It doesn't matter what platform your running it on, what sort of operating system your using, what sort of CPU your using. None of that matters.

You can run firmware ripped from a PowerPC OS X driver in Windows XP driver on x86 or a Linux machine on Sparc or ARM. It doesn't matter. It's tied to a paticular peice of hardware and it's completely worthless for any other reason of application.

There realy isn't any reason to know what it does or how it works, beyond what is nessicary to write device drivers. No reason to have to go modify it or whatnot.

Although if I have a choice I'll avoid hardware that requires seperate firmware. If the manufacturer is just to cheap to invest in a little peice of ROM for their devices then what else did they go cheap on?

Resolved: firmware is not software

Posted Aug 24, 2006 8:07 UTC (Thu) by Robin.Hill (subscriber, #4385) [Link]

There realy isn't any reason to know what it does or how it works, beyond what is nessicary to write device drivers. No reason to have to go modify it or whatnot.
Not necessarily true - for example, the firmware for a USB camera could control how it adjusts colours, how long it'll allow the shutter to be open for, how the auto-focus works, enabling/disabling digital zoom, etc. I can easily see situations where the default settings are non-optimal, or where you're trying to use the hardware for a purpose not originally envisaged by the designers, so not provided for by the original firmware.

Resolved: firmware is not software

Posted Aug 24, 2006 8:23 UTC (Thu) by evgeny (guest, #774) [Link]

> It doesn't matter what platform your running it on, what sort of operating system your using, what sort of CPU your using.

It's not the point. The point is about _distributing_ it, not about using. E.g., shipping with Debian a PXE boot image of a non-free OS (even if it's supposed to be run on a hardware Debian hasn't been ported to) would be a similar violation of the policy.

I do agree, though, that an excemption should be made for distributing firmware.

> If the manufacturer is just to cheap to invest in a little peice of ROM for their devices then what else did they go cheap on?

Well, why? I see no technical drawbacks from loading the firmware by the driver. I think it makes the things more flexible.

Resolved: firmware is not software

Posted Aug 24, 2006 16:08 UTC (Thu) by bronson (subscriber, #4806) [Link]

If the manufacturer is just to cheap to invest in a little peice of ROM for their devices then what else did they go cheap on?

Are you kidding me? You want pre-ship bugs locked into the device's ROM for all time? You don't want to be able to add features years later, re-target the device at runtime, or be able to experiment with it yourself (assuming you have appropriate decompilers/toolchain)?

Personally, I'm ecstatic that "firm" no longer describes a lot of device-specific code being written today.

Resolved: firmware is not software

Posted Aug 24, 2006 17:51 UTC (Thu) by Los__D (guest, #15263) [Link]

Just because it doesn't get autoloaded doesn't mean that it's not upgradeable, you never did a BIOS or videocard firmware update?

Resolved: firmware is not software

Posted Aug 24, 2006 19:21 UTC (Thu) by pflugstad (subscriber, #224) [Link]

And the flash to support that is probably more expensive than the ROM would be.

Resolved: firmware is not software

Posted Aug 26, 2006 11:10 UTC (Sat) by broonie (subscriber, #7078) [Link]

Not always - due to the need to program the device at some point during production it can be much more cost effective to put a flash device on and program it after the hardware has been assembled. It allows the use of an off the shelf component, which is normally a win, and can be useful to allow production test access to the system.

Resolved: firmware is not software

Posted Aug 29, 2006 0:38 UTC (Tue) by dlang (subscriber, #313) [Link]

if you look at volume pricing of parts flash is still frequently more expensive then ROM (One-Time-Programmable) versions, let alone ones that don't have the flash at all.

also programming the flash frequently requires additional wires and other components in the device, which also cose.

Resolved: firmware is not software

Posted Aug 29, 2006 18:05 UTC (Tue) by broonie (subscriber, #7078) [Link]

Yes, it does depend on what you're doing - volumes, feature sets and whatnot. Point is that you can't tell which of flash or ROM will work out better until you look at the particular application.

Resolved: firmware is not software

Posted Aug 24, 2006 8:04 UTC (Thu) by ekj (guest, #1524) [Link]

Well, yeah, from the point of view of the main CPU it's not code -- it's not something *it* can execute, all it can do with it is hand it over to someone who can.

Problem is, if you use that distinction to separate "data" from "code" then a lot of stuff suddenly is just "data" rather than code.

A python-program is just data. Same for a shell-script. Also a java-program, or indeed any program run trough an interpreter rather than directly on the main CPU is "just data".

Thus, I personally think the only sensible choice is for Debian to require the source-code for everything they ship. (as already defined in the GPL: source-code means the prefered form for making changes)

This means, for a jpeg-icon they migth require the SVG-file from which it is rendered. For a pdf-document they migth require the docbook xml-file from which it was created. For a ogg-soundtrack they migth require the original wav-recording.

That's actually pretty close to what they *are* doing.

Saying "it's just data, so therefore we don't require the source" is silly.

Much more honest to make an explicit permission: "Allthough we do not have the source for this BLOB, we allow its inclusion in Debian as that is still preferable to a device with its driver-BLOB embedded in ROM"

Resolved: firmware is not software

Posted Aug 24, 2006 21:00 UTC (Thu) by mightyduck (guest, #23760) [Link]

> This means, for a jpeg-icon they migth require the SVG-file from which
> it is rendered. For a pdf-document they migth require the docbook
> xml-file from which it was created. For a ogg-soundtrack they migth
> require the original wav-recording.
> That's actually pretty close to what they *are* doing.
> Saying "it's just data, so therefore we don't require the source" is silly.

What you are proposing is just silly. What is the real original source of a sound recording for instance? Do you want to ship the master tapes from a record company just because you ship some free song? Or the sketches from an artist just because you ship his/her icon or wallpaper? For instance, if I draw an icon on paper and then scan it, do I have to ship the piece of paper? Get real and come down from you ideological high point. kk

Resolved: firmware is not software

Posted Aug 26, 2006 0:51 UTC (Sat) by giraffedata (subscriber, #1954) [Link]

When you put it that way, it's silly, but I'm sure he meant to restrict the requirement to software source. That's not silly. A master tape and artist's sketch is not software, but every example in the original post (SVG, wav, docbook) is software.

The reason to make a special case of software source is that it can be distributed just as easily as the software object code.

Remember that the free software movement is primarily interested in separating out that software whose publisher withholds source for the sole purpose of preventing people from modifying the software. Someone who holds back SVG source is in the same category as someone who holds back operating system source.

Resolved: firmware is not software

Posted Aug 26, 2006 16:50 UTC (Sat) by oak (guest, #2786) [Link]

> Do you want to ship the master tapes from a record company just because
> you ship some free song? Or the sketches from an artist just because you
> ship his/her icon or wallpaper? For instance, if I draw an icon on paper
> and then scan it, do I have to ship the piece of paper?

I release all my graphics as GPL and they come with the (POV-Ray) source
code. When you want e.g. to change the appearance of some of the objects
generated automatically with a tiny Python script producing POV-Ray
snippets, it's mightily easier done by changing the source code of the
3D scripts instead of by using e.g. Gimp. Especially if one at the same
time would like to change the camera placement and lightning too (which
are trivial to do from the POV-Ray source)...

Doing the modifications with a graphics editor is about as easy as using
hex editor to do modification on a binary produced from C-source code.

Re-usability of 3D-objects in other pictures is also much higher than
of the image clips because it's so much easier to change their relative
size etc. without losing details.

Resolved: firmware is not software

Posted Aug 29, 2006 13:32 UTC (Tue) by branden (guest, #7029) [Link]

What you are proposing is just silly. What is the real original source of a sound recording for instance? Do you want to ship the master tapes from a record company just because you ship some free song? Or the sketches from an artist just because you ship his/her icon or wallpaper? For instance, if I draw an icon on paper and then scan it, do I have to ship the piece of paper? Get real and come down from you ideological high point. kk

By this logic, Debian must also be demanding that the brains of programmers be shipped along with the compiled object files they distribute.

Except that's not the case, and never has been, which suggests that your analogy is blowhard hyperbole.

Debian, like other OS distributors, is in the business of moving bits. The point at which a work is captured into digital form is the earliest possible point at which it could be considered "source form". A later form may qualify instead, if the author does not intend to use the originally captured digital form as the form for modification/editing.

Resolved: firmware is not software

Posted Sep 3, 2006 9:53 UTC (Sun) by renox (subscriber, #23785) [Link]

I think that you'd better consider the use of these data:
- firmware is data for external devices: it has zero influence on the host CPU, devices without firmware (firmware in ROM) or devices with closed-source firmware are 'identical': in both cases you cannot modify the device. So IMHO both should be treated the same and accepted.

- data for you host CPU must be also Free: otherwise your program is not truly "Free": Quake is not Free: Quake's engine is Free.

- if you only provide a bitmap for a vector-based image, there is a huge loss of information: so saying that the bitmap is "Free" is quite misleading IMHO: this is not the 'preferred form' if you wanted to modify the image.

Resolved: firmware is not software

Posted Aug 30, 2006 22:39 UTC (Wed) by Ross (guest, #4065) [Link]

If it was written in binary then that _is_ the source format. I find that highly unlikely for firmware of more than trivial size though.


Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds