aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-10-07 17:41:22 +0200
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-10-11 18:29:34 +0200
commit057fdf14231c803fa61ade5889722d08a15709a3 (patch)
treec5409795bd899a40fa456539b7ac2c6ddaeaa3cf
parent446f396449485f8f114d37def7e0e1b20a3637d7 (diff)
downloadkernel_replicant_linux-057fdf14231c803fa61ade5889722d08a15709a3.tar.gz
kernel_replicant_linux-057fdf14231c803fa61ade5889722d08a15709a3.tar.bz2
kernel_replicant_linux-057fdf14231c803fa61ade5889722d08a15709a3.zip
Don't reject nonfree firmwares
Replicant does not want to ship nonfree firmwares because the firmwares are nonfree and Replicant is a fully free software Android distribution. In addition, Replicant follows the GNU Free System Distributions Guidelines (FSDG)[1]. And it is also directly supported by the FSF in various ways[2] (they help with fundraising, we have a virtual machine in the FSF infrastructure, etc). So willingly shipping nonfree software (including firmwares) is completely out of the question. Instead we try to find nonfree software (including firmwares) in the Replicant source code or images and when we find some, we remove them. Since the Replicant 11 kernel is now based on Linux, we can leverage linux-libre to remove the various nonfree firmwares found in Linux. However even if we do our best not to ship any nonfree firmwares, the Replicant steering commitee and the other people present in the Replicant Contributors Meeting 2019 in Paris (me included) decided againt blocking the usage of nonfree firmwares. Blocking nonfree firmwares is not required by the GNU Free System Distribution Guidelines (FSDG). The internal WiFi interface (and also some less important hardware components) don't work without nonfree firmwares. On some devices supported by Replicant, like the Galaxy SIII (GT-I9300) and the Galaxy SIII 4G (GT-I9305), external WiFi dongles compatible with the ath9k_htc driver do work fine with a free firmware in Replicant 6. And Replicant strongly advises its users to use such WiFi dongles to get WiFi working. But despite that, many users, by themselves, without any guidance or instructions from Replicant, still do install nonfree firmwares to get the internal WiFi working (and potentially other hardware components too), probably because external WiFi dongles are not very convenient to use and consume a lot of battery. So until we manage to replace the nonfree firmwares with free firmwares we still need to not block users who still install nonfree firmwares on their own, knowing that the firmwares are nonfree and that they don't come from Replicant at all. In addition, if a decision to block nonfree firmwares is taken, we would need to consult people about it and also to have the Replicant steering have the final word on the decision as it could potentially have a major impact on users. References: ----------- [1]https://www.gnu.org/distros/free-system-distribution-guidelines.html [2]https://redmine.replicant.us/projects/replicant/wiki/SteeringCommittee Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rwxr-xr-xdeblob/deblob-5.1029
1 files changed, 4 insertions, 25 deletions
diff --git a/deblob/deblob-5.10 b/deblob/deblob-5.10
index 48dc99acf62b..91b77345e44b 100755
--- a/deblob/deblob-5.10
+++ b/deblob/deblob-5.10
@@ -181,27 +181,15 @@ clean_sed () {
}
reject_firmware () {
- #$1 = file $2 = pre sed pattern
- filetest $1 || return 0
- clean_sed "$2"'
-s,\(^\|[^>.0-9a-zA-Z_$]\)\(request\(_ihex\|_partial\)\?_firmware\|firmware_request_platform\)\(_nowait\|_direct\|_into_buf\)\?\($\|[^-.0-9a-zA-Z_$),; ]\),\1reject_firmware\4\5,g
-' "$1" 'disabled non-Free firmware-loading machinery'
+ return 0
}
reject_firmware_nowarn () {
- #$1 = file $2 = pre sed pattern
- filetest $1 || return 0
- clean_sed "$2"'
-s,\(^\|[^>.0-9a-zA-Z_$]\)firmware_request_nowarn\($\|[^-.0-9a-zA-Z_$),; ]\),\1firmware_reject_nowarn\2,g
-' "$1" 'disabled silent non-Free firmware-loading machinery'
+ return 0
}
maybe_reject_firmware () {
- #$1 = file $2 = pre sed pattern
- filetest $1 || return 0
- clean_sed "$2"'
-s,\(^\|[^>.0-9a-zA-Z_$]\)request_\(ihex_\|partial_\)\?firmware\(_nowait\|_direct\|_into_buf\)\?\($\|[^-.0-9a-zA-Z_$),; ]\),\1maybe_reject_\2firmware\3\4,g
-' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
+ return 0
}
undefine_macro () {
@@ -219,11 +207,7 @@ s,$macro,$repl,g;
}
undefault_firmware () {
- #$1 - pattern such that $1_DEFAULT_FIRMWARE is #defined to non-Free firmware
- #$@ other than $1 - file names
- macro="$1"_DEFAULT_FIRMWARE; shift
- undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
- "disabled non-Free firmware" "$@"
+ return 0
}
# First, check that files that contain firmwares and their
@@ -605,11 +589,6 @@ maybe_reject_ihex_firmware(const struct firmware **fw,\
#endif /* _LINUX_LIBRE_IHEX_H */\
' include/linux/ihex.h 'added non-Free ihex firmware notification support'
-clean_sed '
-s,\(timeout = \)\(firmware_loading_timeout()\),\1is_nonfree_firmware(name) ? 1 : \2,
-' drivers/base/firmware_loader/fallback.c 'shorten non-Free firmware fail-to-load timeout'
-
-
########
# Arch #
########