
There has been a
flurry of activity on the Debian mailing lists ever since Steve
McIntyre raised the issue of including non-free firmware as part of
official Debian installation images.
Firstly I should point out that I am in complete agreement with Steve s proposal to include non-free firmware as part of an installation image. Likewise I think that we should have a separate archive section for firmware. Because without doing so it will soon become almost impossible to install onto any new hardware. However, as always the issue is more nuanced than a first glance would suggest.
Lets start by
defining what is firmware?
Firmware is any
software that runs outside the orchestration of the operating system.
Typically firmware will be executed on a processor(s) separate from
the processor(s) running the OS, but this does not need to be the
case.
As Debian we
are content that our systems can operate using fully free and open
source software and firmware. We can install our OS without needing
any non-free firmware.
This is an illusion!
Each and every PC
platform contains non-free firmware
It may be possible to run free firmware on some Graphics controllers, Wi-Fi chip-sets, or Ethernet cards and we can (and perhaps should) choose to spend our money on systems where this is the case. When installing a new system we might still be forced to hold our nose and install with non-free firmware on the peripheral before we are able to upgrade it to FLOSS firmware later if this is exists or is even possible to do so. However after the installation we are running a full FLOSS system in terms of software and firmware.
We all (almost
without exception) are running propitiatory firmware whether we like
it or not.
Even after carefully selecting graphics and network hardware with FLOSS firmware options we still haven t escaped from non-free-firmware. Other peripherals contain firmware too each keyboard, disk (SSDs and Spinning rust). Even your USB memory stick that you use to contain the Debian installation image contains a microcontroller and hence also contains firmware that runs on it.
- Much of this
firmware can not even be updated.
- Some can be
updated, but is stored in FLASH ROM and the hardware vendor has
defeated all programming methods (possibly circumnavigated with a
hardware mod).
- Some of it can
be updated but requires external device programmers (and often the
programming connections are a series of test points dotted around
the board and not on a header in order to make programming as
difficult as possible).
- Sometimes the
firmware can be updated from within the host operating system (i.e.
Debian)
- Sometimes, as
Steve pointed out in his post, the hardware vendor has enough
firmware on a peripheral to perform basic functions perhaps
enough to install the OS, but requires additional firmware to enable
specific feature (i.e. higher screen resolutions, hardware
accelerated functions etc.)
- Finally some
vendors don t even bother with any non-volatile storage beyond a
basic boot loader and firmware must be loaded before the device can
be used in any mode.
What about the motherboard? If we are lucky we might be able to run a FLOSS implementation of the UEFI subsystem (edk2/tianocore for example), indeed the non AMD64/i386 platforms based around ARM, MIPS architectures are often the most free when it comes to firmware.
What about the microcode on the processor? Personally I wasn t aware that that this was updatable firmware until the Spectre and Meltdown classes of vulnerabilities arose a few years back.
So back to Debian
images including non-free firmware.
This is specifically to address the last two use cases mentioned above, i.e. where firmware needs to be loaded to achieve a minimum functioning of a device. Although it could also include motherboard support, and microcode as well.
As far as I can tell
the proposal exists for several reasons:
#1 Because some freely distributable firmware is required for
more and more devices, in order to install Debian, or because whilst
Debian can be installed a desktop environment can not be started or
fully function
#2 Because frankly it is less work to produce, test and maintain fewer installation images As someone who performs tests on our images, this clearly gets my vote :-)
and perhaps most important of all..
#3 Because our least experienced users, and new users will download an official image and give up if things don t just work
TM
Steve s proposal
option 5 would address theses issues and I fully support it.
I would love to see
separate repositories for firmware and firmware-none free.
Additionally to accompany firmware non-free I would like to have
information on what the firmware actually does. Can I run my
hardware without it, what function(s) are limited without the
firmware, better yet is there a FLOSS equivalent that I can load
instead? Is this something that we can present in Debian installer?
I would love not to require non-free firmware, but if I can t,
I would love if DI would enable a user to make an informed choice as
to what, if any, firmware is installed.
Should we be
requesting (requiring?) this information for any non-free firmware
image that we carry in the archive?
Finally lets
consider firmware in the wider general case, not just the case where
we need to load firmware from within Debian each and every boot.
Personally I am
annoyed whenever a hardware manufacturer has gone out of their way to
prevent firmware updates. Lets face it software contains bugs, and
we can assume that the software making up a firmware image will as
well.
Critical (security)
vulnerabilities found in firmware, especially if this runs on the
same processor(s) as the OS can impact on the wider system, not just
the device itself. This will mean that, without updatable firmware,
the hardware itself should be withdrawn from use whilst it would
otherwise still function. By preventing firmware updates vendors are
forcing early obsolescence in the hardware they sell, perhaps good
for their bottom line, but certainly no good for users or the
environment.
Here I can practice
what I preach. As an Electronic Engineer / Systems architect I have
been beating the drum for In System Updatable firmware for ALL
programmable devices in a system, be it a simple peripheral or a
deeply embedded system. I can honestly say that over the last 20
years (yes I have been banging this particular drum for that long) I
have had 100% success in arguing this case commercially. Having
device programmers in R&D departments is one thing, but that is
additional cost for production, and field service. Needing custom
programming headers or even a bed of nails fixture to connect your
target device to a programmer is more trouble than it is worth.
Finally, the ability to update firmware in the field means that you
can launch your product on schedule, make a sale and ship to a
customer even if the first thing that you need to do is download an
update. Offering that to any project manager will make you very
popular indeed.
So what if this
firmware is non-free? As long as the firmware resides in
non-volatile media without needing the OS to interact with it, we as
a project don t need to carry it in our archives. And we as
principled individuals can vote with our feet and wallets by choosing
to purchase devices that have free firmware.
But where that isn t
an option, I ll take updatable but non-free firmware over non-free
firmware that can not be updated any day of the week.
Sure, the
manufacture can choose to no longer support the firmware, and it is
shocking how soon this happens often in the consumer market, the
manufacture has withdrawn support for a product before it even
reaches the end user (In which case we should boycott that
manufacture in future until they either change their ways of go
bust). But again if firmware can be updated in system that
would at least allow the possibility of open firmware to arise.
Indeed the only commercial case I have seen to argue against
updatable firmware has been either for DRM, in which case good
lets get rid of both, or for RF licence compliance, and even then it
is tenuous because in this case the manufacture wants ISP for its own
use right up until a device is shipped out the door, typically
achived by blowing one time programmable fuse links .