GNU Linux-libre Changelog

What's new in GNU Linux-libre 5.4

Nov 25, 2019
  • The bulk of the changes in deblob-check this cycle have to do with an attempted broadening of the potential firmware name patterns, that led to the addition of matchers for many false positives. I couldn't complete it in this cycle, but I left the new false positives in place, and a WIP comment next to the potential firmware name pattern indicating what I was getting at. Contributions are welcome.
  • There was only one new driver that required deblobbing, or rather disabling of blob loading: an ethernet driver for Intel Ethernet Connection E800 Series. Various other drivers needed adjustments to account mostly for updated blob names, but also occasional code movement: safexcel, amdgpu, i915, i2400m, i1480u, nitrox, r8169,
  • touchscreen_dmi, and skylake sound. The last remnants of the netx driver were removed, and so the corresponding deblobbing could be dropped as well.
  • I noticed that cleaned-up scripts were losing the executable bit, and arranged for it to be retained.
  • The one decision I wasn't so sure about in this cycle was in a new driver in drivers/net/wireless/ath/ath9k, namely ath9k_pci_owl_loader.c, activated by ATH9K_PCI_NO_EEPROM. IIUC, it's initialization data, such as the MAC address, for ath9k cards that have had the EEPROM chip holding it removed. If there's any actual code there, since it's ath9k, I assumed it would be Free Software, though I couldn't quite find any evidence that there's any code whatsoever in there. Even if there is,
  • the firmware image, with MAC address and all, is specific to an individual card, presumably extracted from it or custom-designed for it, so I conclude there's no harm done in enabling it to be loaded.

New in GNU Linux-libre 4.19 (Oct 29, 2018)

  • In this release, a number of compiler warnings in the reject_firmware family of functions were silenced. The condition they reported would never arise in practice, so their presence is harmless, but even I, who'd written the code, was fooled the moment I saw them, so I figured I'd better fix them. Other harmless warnings there still remain.
  • Besides the usual assortment of false positives, cleaning up this new version of Linux required disabling blob requests in several drivers: MT76x0U and MT76x2U WiFi, MTk Bluetooth UART, Keystone and Qualcomm Hexagon Remoteproc, and Aspeed ColdFire FSI Master. New blob names or other updates were required for AMD GPU, Adreno, brcmfmac, mlxsw, Intel Skylake sound and Silead touchscreen.

New in GNU Linux-libre 4.18 (Aug 15, 2018)

  • Two new drivers had blob requests and were cleaned up (psp-dev crypto and icn8505 touchscreen), one was removed (atom isp), plenty needed adjustments.
  • There are some new firmware loading interfaces starting with firmware_request (rather than request_firmware). The deblob-check script was adjusted to look for uses thereof. firwmare_request_nowarn is one of the new interfaces, and it almost looks like we could use it, since it doesn't log any errors if the firmware is not there, but it still looks for and asks for non-Free Software, so I decided to disable it just like request_firmware.

New in GNU Linux-libre 4.17 (Jun 5, 2018)

  • The greatest news is that the driver for Dreamcast Yamaha AICA sound hardware is no longer cleaned up: the firmware for it is Free Software, and Jason Self's upcoming linux-libre-firmware release will have it.
  • No other significant changes were made, just the usual assortment of adjustments.

New in GNU Linux-libre 4.15 (Jan 29, 2018)

  • This release introduces changes in scripts/package, so that .deb and .rpm scripts built with the scripts in there will refer to GNU Linux-libre rather than upstream. This is in line with our goal of not leading users to non-Free Software.
  • There are two new drivers that needed cleaning up: HiDeep touchscreen, and Broadcom BCM7XXX based boards memory (!!!).
  • A number of drivers needed updating in their cleaning up: i915, adreno, amdgpu, tegra, silead dmi, and atomisp.
  • Upstream has removed oss (sound) drivers, and the ap1302 driver from staging, so the logic to clean them up is gone from deblob-4.15.

New in GNU Linux-libre 4.14 (Nov 13, 2017)

  • Dropped deblobbing of the firmware subtree. Adjusted for the new request_firmware_into_buf interface. Deblobbed rtl8822be. Updated deblobbing of microcode, xrx200, amdgpu, irda-usb, skylake sound, netronome nfp, brcmfmac, iwlwifi, and rt5514.

New in GNU Linux-libre 4.13 (Sep 5, 2017)

  • This release had a larger than usual assortment of new drivers dependent on blobs: Cavium Nitrox CNN55XX, Inside Secure's SafeXcel cryptographic engine, Qualcomm Venus V4L2 encoder/decoder, Mellanox Technologies Spectrum, Quantenna QSR10g, and Qualcomm ADSP and WCNSS. Minor changes to the per-release deblobbing logic was required for AMDGPU, IWLWIFI, and Redpine Signals WLAN drivers, due to source code rearrangement. New blobs are required by them, and also by Adreno A5xx, Intel i915 CSR, ath10k, brcmfmac, wil6210 and Silead DMI.

New in GNU Linux-libre 4.11 (May 1, 2017)

  • Deblobbed Cavium Crypto accelerator, Rockchip gpu, Netronome NFP 4000/6000 ethernet and Silead touchscreen drivers. Added .out and .nffw to the list of extensions regarded as suspected blobs. Updated deblobbing of AMD and Intel gpu drivers, of the Qualcomm peripheral blob loader, of Chips&Media Coda media codecs, Atheros ath10k and wil6210 WiFi, Intel iwlwifi, and Intel Skylake audio drivers.

New in GNU Linux-libre 4.7 (Jul 25, 2016)

  • One newly-added driver, xhci-tegra, would have loaded blobs if we hadn't disabled its blob loading machinery. Various other drivers required deblobbing changes to clean up newer versions in the filenames of blobs they would induce users to install: radeon, i915 csr, mwifiex, brcmfmac, iwlwifi, ath10k testmode, rtl8xxxu wifi, hfi1 Infiniband, and skylake audio.

New in GNU Linux-libre 4.5 (Mar 15, 2016)

  • Deblobbed qat_c3xxx, qat_c62x, adf7242, goodix touchscreen, Qualcomm WCNSS SOC. Updated deblobbing of radeon, nouveau, skylake sound, XHCI rcar. Adjusted for lots of code movement, especially within drivers/net/wireless.

New in GNU Linux-libre 4.4 (Jan 12, 2016)

  • Deblobbed qed, fdp, nfcmrvl, rtl8xxxu, and rohm_bu21023. Adjusted deblobbing for revamp of early microcode loader. Dropped ft1000.

New in GNU Linux-libre 4.2 (Aug 31, 2015)

  • Many new drivers required cleaning of their blob-requesting-and-loading machinery. Various others needed deblobbing updates due to blob name changes and false positives.
  • The greatest new offender is amdgpu that, like radeon, refuses to work at all without blobs, even though in theory it could offer degraded functionality.
  • The other unfortunate surprise is the traditionally Freedom-friendly i915 driver, that, in 4.2 upstream, attempts to load blobs on some recent variants.

New in GNU Linux-libre 2.6.35-1 (Aug 9, 2010)

  • Cleaned up 4 new blob-dependent drivers in 2.6.35, fixed a deblobbing error that caused compile errors in r8192S_firmware.c in 2.6.34-libre.

New in GNU Linux-libre 2.6.33 (Mar 4, 2010)

  • We don't maintain the Linux-libre source files directly. Instead we maintain "deblobbing" scripts that clean Linux "sources", thus producing Linux-libre sources. The main improvement in this generation of Linux-libre, the fourth since we got involved, consisted of making the deblobbing scripts more efficient.
  • As we accumulated thousands of patterns to recognize blobs, sequences that look like blobs but that aren't, requests for non-Free firmware external to Linux, and documentation that induces users to install it, running the GNU sed script generated to locate and remove blobs became too expensive for many users: in recent releases of Linux-libre, GNU sed took some 15 seconds and more than 2GB of RAM to compile all the patterns in the script.
  • The solution was to rewrite the main script in higher-level scripting languages. GNU awk reduced the start-up time to about 3 seconds, and memory requirements dropped by an order of magnitude, but 3 seconds multiplied by the 260 files that get cleaned up with this script to form Linux-2.6.33-libre is a lot of time to waste. Python and PERL compile our huge collection of patterns in tenths of a second, while reducing memory use by almost another order of magnitude. However, internal limits in PERL's pattern matching algorithm produce incorrect results in deblob-check, so using it with PERL is not recommended for now.
  • For deblob-main's cleaning-up of small files in Linux, Python was determined to be fastest, which is why it is the new default. For verifying that a large tarball is clean, Python and PERL's run-time jump to more than 90 minutes, up from 5 minutes with GNU awk and as little as 3 minutes with GNU sed. GNU awk comes ahead when listing all the blobs in a Linux tarball, now with a long-wished feature: printing before each blob the name of the file within the tarball that contains it.
  • Future releases may be smarter in choosing suitable backend depending on task and inputs. For now, users of deblob-check should be aware of the new flags: --use-python, --use-awk, --use-perl, and --use-sed, and the corresponding environment variables PYTHON, AWK, PERL, and SED.
  • The lower memory footprint and CPU requirements for checking and cleaning up individual files means it is again possible to clean up Linux trees on the fly, which a number of users used to find valuable.
  • Over the next few days, we'll also roll out Linux-libre, generation 4, for earlier Linux releases, fixing a few deblobbing errors in staging drivers and catching a few more occurrences of non-Free blob names in documentation and error messages.