Difference between revisions of "Collection:Device drivers and firmware"

From Free Software Directory
Jump to: navigation, search
(Userspace drivers: remove 2D in 2D printers: doesn't fit well, re-add and move when 3D printers will be added)
(Userspace drivers: Add Flash chip and flash chip programmers)
Line 40: Line 40:
 
In GNU/Linux and Android, some of the drivers are in userspace. The drivers in userspace often implement specific protocols, like some protocols to talk to modem, lab equipement, etc.
 
In GNU/Linux and Android, some of the drivers are in userspace. The drivers in userspace often implement specific protocols, like some protocols to talk to modem, lab equipement, etc.
  
 +
* Flash chip and flash chip programmers
 +
** [[Flashrom]]: Contains drivers for various flash chips and flash chip programmers.
 
* GPU drivers
 
* GPU drivers
 
** [[Mesa]]: has some drivers/compilers for various GPUs. The drivers also need corresponding kernel drivers to work.
 
** [[Mesa]]: has some drivers/compilers for various GPUs. The drivers also need corresponding kernel drivers to work.

Revision as of 09:16, 22 April 2023

Firmware is a class of software, which runs directly on the hardware while device drivers help make different devices work with a given operating system.

This collection lists notable device drivers and firmware that isn't already shipped as part of Linux-libre. In other words, things that users might have to specifically go and download separately from what they already have.

What to do with free software that interacts with nonfree software ?

Sometimes free drivers (like a printer driver) or hardware specific software (like free software that can talk to specific printers to remove ink cartridge limitations) interact with hardware that run nonfree firmwares or operating systems (like printers). It is OK to list such software as long as the nonfree software it interact with is out of the bonds of the operating system and that the free software that interact with it doesn't ship nonfree software.

For instance if we take Libreboot or any of the free GNU/Linux distributions or other free distribution(s), they all interact in some way with hardware that run nonfree firmwares as most mass storage devices (hard disks, SSDs, microSD cards, SD cards, USB mass storage keys, etc) run a nonfree firmware. And while most storage devices have standard interfaces, Linux-libre and Libreboot also interact with software that do not implement standards like the firmware that runs on the embedded controller and that handles the keyboard, suspend-to-ram, voltage ramps, etc.

In all theses case the distributions, Libreboot or Linux-libre are not involved at all in the distribution of that nonfree software and that software doesn't run in Libreboot, Linux-libre or the distributions as it typically runs in separate chips. In some cases (like with keyboards) it's really hard to know if the hardware is running some nonfree software or if it doesn't run software at all. And in most cases given enough efforts the nonfree software could also be replaced with free software (for instance by having people reverse engineer the nonfree software and write documentation, and other people implement a free software equivalent based on the hardware documentation).

Kernel drivers

While Linux contains nonfree software, there are various projects that remove that nonfree software like:

We also have free software kernels for other operating systems

  • Replicant kernels are based on Linux, and they also remove nonfree software
  • Hurd is supported experimentally in Guix, so it should be fine too.

With GNU/Linux or Android, most of the drivers are part of the kernel, but sometimes there are out of tree modules distributed separately.

Parabola have packages for some of them for instance:

  • libre/acpi_call: The Parabola description states: "A linux kernel module that enables calls to ACPI methods through /proc/acpi/call"
  • libre/bbswitch: The Parabola description states: "Kernel module allowing to switch dedicated graphics card on Optimus laptops"
  • libre/deepin-anything-module: The Parabola description states: "Deepin Anything file search tool, kernel module for Linux kernel"
  • libre/tp_smapi: Implement the Lenovo SMM API commonly found in Thinkpad. It might require the nonfree BIOS to work.
  • libre/vhba-module: The Parabola description states: "Kernel module that emulates SCSI devices"

Parabola also ships the following Arch Linux packages:

  • community/netfilter-fullconenat: The Arch Linux description states: "A kernel module that turns MASQUERADE into full cone SNAT"
  • community/sysdig-dkms: The Arch Linux description states: "DKMS kernel module for sysdig"

It could be interesting to review some of them if they fit interesting use cases.

Userspace drivers

In GNU/Linux and Android, some of the drivers are in userspace. The drivers in userspace often implement specific protocols, like some protocols to talk to modem, lab equipement, etc.

  • Flash chip and flash chip programmers
    • Flashrom: Contains drivers for various flash chips and flash chip programmers.
  • GPU drivers
    • Mesa: has some drivers/compilers for various GPUs. The drivers also need corresponding kernel drivers to work.
  • Lab equipements
    • Libsigrok: provides drivers to control various lab equipements (logic analyzers, oscilloscopes, power supplies, etc)
  • Modem drivers
    • ModemManager has some drivers for various modems / modem protocols.
    • Libmbim implements the MBIM protocol. It's probably used by various software like ModemManager, oFono, etc.
    • Libqmi implements the QMI protocol. It's probably used by various software like ModemManager, oFono, etc.
  • Printers
    • CUPS: Contains drivers for some printers protocols like IPP.

Firmwares that interact with Linux drivers (and possibly applications as well)

  • Computers
  • Misc
    • Firmware-linux-free
      • AV7110 DVB card firmware (av7110/bootcode.bin)
      • Atheros AR9170 free firmware for use with carl9170 (carl9170fw)
      • 3Com Megahertz 3CCFEM556 CIS fix (cis/3CCFEM556.cis)
      • 3Com Megahertz 3CXEM556 CIS fix (cis/3CXEM556.cis)
      • Advantech COMpad-32/85 CIS fix (cis/COMpad2.cis)
      • Advantech COMpad-32/85B-4 CIS fix (cis/COMpad4.cis)
      • NSC DP83903 PCMCIA Ethernet card CIS fix (cis/DP83903.cis)
      • Allied Telesis LA-PCM CIS fix (cis/LA-PCM.cis)
      • MultiTech PCMCIA 56K DataFax CIS fix (cis/MT5634ZLX.cis)
      • NDC PCMCIA Ethernet card CIS fix (cis/NE2K.cis)
      • EN2218-LAN/MODEM CIS fix (cis/PCMLM28.cis)
      • PreMax PE-200 CIS fix (cis/PE-200.cis)
      • LanPro EP-4000A CIS fix (cis/PE520.cis)
      • RS-COM 2P CIS fix (cis/RS-COM-2P.cis)
      • Sierra Aircard 555 CIS fix (cis/SW_555_SER.cis)
      • Sierra Wireless AC710/AC750 CIS fix (cis/SW_7xx_SER.cis)
      • Sierra Wireless AC850/AC860 CIS fix (cis/SW_8xx_SER.cis)
      • Tamarack PCMCIA Ethernet card CIS fix (cis/tamarack.cis)
      • Atari Falcon DSP56001 firmware (dsp56k/bootstrap.bin)
      • Intel C600 SAS/SATA controller default parameters, version 1.3 (isci/isci_firmware.bin)
      • Keyspan USA-19 firmware (keyspan_pda/keyspan_pda.fw)
      • Xircom PGSDB9/Entrega PortGear firmware (keyspan_pda/xircom_pgs.fw)
      • USB-DUX firmware (usbdux_firmware.bin)
      • USB-DUXfast firmware (usbduxfast_firmware.bin)
      • USB-DUXsigma firmware (usbduxsigma_firmware.bin)
    • Linux-libre-firmware
      • a56
      • aica
      • as31
      • ath9k_htc
      • atusb
      • av7110
      • b43-tools
      • carl9170fw
      • cis-tools
      • cis
      • dsp56k
      • ihex2fw
      • isci
      • keyspan_pda
      • openfwwf
      • usbdux
  • Network equipment
  • Phones and smartphones
    • Modem firmwares
      • Pinephone Modem SDK: The Pinephone modem is similar to a smartphone on a chip: It uses a Qualcomm system on a chip that has modem cores and also a core that runs a GNU/Linux distribution that is responsible for interfacing with a host computer (here the Allwinner A64 that runs GNU/Linux). The first issue is that this project uses distributions that are not FSDG compliant (yocto). The second issue is that it requires nonfree modem firmwares to work (probably the "ADSP Firmware"). So if it somehow reuses that (and that the distribution was FSDG compliant) it might work, but if it ships the nonfree firmwares it is problematic.

Boot software

  • GRUB: It can run on some Lemote computers and replace completely the stock bootloader. It can also run in various contexts like with a BIOS, UEFI, with Coreboot, Libreboot, in emulators, etc.
  • Libreboot
  • u-boot (/!\ contains some nonfree software, wait for u-boot-libre to be released by libreboot.at).

Firmwares that interact with GNU/Linux applications

  • Flash programmers:
  • GPG Tokens
    • Gnuk: Firmware that talks to gpg (indirectly through the ccid and the smartcard GNU/Linux stack). It can also be compiled to run on GNU/Linux.
  • Logic analyzers:
  • Modem firmwares
    • OsmocomBB: A free firmware that can run on some feature phones and the modem of the Openmoko GTA01 and GTA02. It requires part of the stack (the mobile application) to run as a GNU/Linux application.
  • SIM card tracers
    • Simtrace 1 firmware: runs on a microcontroller and talks to the simtrace 1 software that runs on GNU/Linux.
    • Simtrace 2 firmware: runs on a microcontroller and talks to the simtrace 2 software that runs on GNU/Linux.

Standalone firmwares that run on hardware and on GNU/Linux too

These firmwares can (potentially) run on GNU/Linux. This could be done with an emulator or the firmware could be ported to run directly on GNU/Linux too. In both cases this is usually done for testing but it also potentially opens new use cases like for calculators firmwares.

This makes them easier to review as we can just review them like a normal GNU/Linux application.

If they run on GNU/Linux through an emulator, the emulator can be treated like a dependency.

It is then easy to review the emulator first, and if it's free and that it works with the standalone firmware, also review the firmware later on.

  • Calculators
    • KnightOS: Free operating systems for some calcultors. It may also run in emulators in GNU/Linux, so it could be added in this way. It needs to be reviewed.

Standalone firmwares

It might be better to check on the mailing list or on IRC if they are OK to add before adding them as they don't have anything to do with GNU/Linux anymore.

  • Soldering iron
    • IsonOS: Soldering iron operating system. Should be under the GPLv3. There is probably no emulator for that. It needs to be reviewed.

See also



Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.

The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.