Subject: Re: bug#57269: [rtl8812au-aircrack-ng-linux-module] Missing Source for hal/rtl8812a/hal8812a_fw.c (and probably other files ending in fw.c)

From: Tobias Geerinckx-Rice <[email-masked]>
Date: Thu, 18 Aug 2022 16:23:30 +0200

Hi Jacob,

Jacob K via Bug reports for GNU Guix 写道：
> Files such as hal8812a_fw.c [1] have large arrays that seem to 
> be binary
> firmware encoded in text. My understanding is that source code 
> is not
> available, so I believe the files are nonfree software,

Even if free source code exists, we should still remove the blobs 
and build our own.  (Yes, we actually do this for other firmware 
:-)

> the short-term at least, be removed from Guix. Long term it 
> would be
> good to get the source code (via reverse engineering or asking 
> Realtek),
> but I imagine that would take a significant amount of time and 
> effort (I
> do have a Realtek USB Wi-Fi card, maybe not with this exact 
> firmware
> though.).

Unfortunately all correct.  Another blow to wireless networking 
with Guix.  Attached is a patch removing the 
rtl8821ce-linux-module and rtl8812au-aircrack-ng-linux-module 
packages.

I didn't apply it yet.  Since this case, unlike some others, 
appears to be straightforward, I don't intend to wait long.

Kind regards,

T G-R

From a4650f7dbad4458d3bc907a96a45a334d1d2a086 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice <[email-masked]>
Date: Sun, 14 Aug 2022 02:00:00 +0200
Subject: [PATCH 01/12] gnu: Remove Realtek WiFi drivers with firmware blobs.

rtl8821ce-linux-module contains, e.g., halhwimg8821c_fw.c and
hal8821c_fw.c.  rtl8812au-aircrack-ng-linux-module has, e.g.,
hal8814a_fw.c, hal8812a_fw.c, and hal8821a_fw.c.  Each of these
examples contains non-free firmware blobs disguised as C arrays.

* gnu/packages/linux.scm (rtl8821ce-linux-module)
(rtl8812au-aircrack-ng-linux-module): Remove variables.

Reported by Jacob K <[email-masked]>
---
 gnu/packages/linux.scm              | 75 -----------------------------
 gnu/system/examples/bare-bones.tmpl |  1 +
 2 files changed, 1 insertion(+), 75 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index fb8b4fa5a8..2c1a38b5c4 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1373,81 +1373,6 @@ (define-public lkrg
 detection of security vulnerability exploits against the kernel.")
     (license license:gpl2)))
 
-(define-public rtl8821ce-linux-module
-  (let ((commit "be733dc86781c68571650b395dd0fa6b53c0a039")
-        (revision "6"))
-    (package
-      (name "rtl8821ce-linux-module")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/tomaspinho/rtl8821ce")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "00sd7s0582b9jcpfgy0fw6418dwg700mfyizkfr22jf2x140iy70"))))
-      (build-system linux-module-build-system)
-      (arguments
-       (list #:make-flags
-             #~(list (string-append "CC=" #$(cc-for-target))
-                     (string-append "KSRC="
-                                    (assoc-ref %build-inputs
-                                               "linux-module-builder")
-                                    "/lib/modules/build"))
-             #:phases
-             #~(modify-phases %standard-phases
-                 (replace 'build
-                   (lambda* (#:key (make-flags '()) (parallel-build? #t)
-                                   #:allow-other-keys)
-                     (apply invoke "make"
-                            `(,@(if parallel-build?
-                                    `("-j" ,(number->string (parallel-job-count)))
-                                    '())
-                              ,@make-flags)))))
-             #:tests? #f))                  ; no test suite
-      (home-page "https://github.com/tomaspinho/rtl8821ce")
-      (synopsis "Linux driver for Realtek RTL8821CE wireless network adapters")
-      (description "This is Realtek's RTL8821CE Linux driver for wireless
-network adapters.")
-      (license license:gpl2))))
-
-(define-public rtl8812au-aircrack-ng-linux-module
-  (let ((commit "6d0d9fb56d4d918012a5c7a030b9233cad039cdd")
-        (revision "8"))
-    (package
-      (inherit rtl8821ce-linux-module)
-      (name "rtl8812au-aircrack-ng-linux-module")
-      (version (git-version "5.6.4.2" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/aircrack-ng/rtl8812au")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "012asiy43ik13kl9p97sscdsqq5jihq73s4ws3g5wqqczqcgrsvc"))
-         (modules '((guix build utils)))
-         (snippet
-          #~(begin
-              ;; Remove bundled tarballs, APKs, word lists, speadsheets,
-              ;; and other unnecessary unlicenced things.
-              (for-each delete-file-recursively (list "android"
-                                                      "docs"
-                                                      "tools"))))))
-      (supported-systems '("x86_64-linux" "i686-linux"))
-      (home-page "https://github.com/aircrack-ng/rtl8812au")
-      (synopsis "Linux driver for Realtek USB wireless network adapters")
-      (description
-       "This is Realtek's rtl8812au Linux driver for USB 802.11n wireless
-network adapters, modified by the aircrack-ng project to support monitor mode
-and frame injection.  It provides a @code{88XXau} kernel module that supports
-RTL8812AU, RTL8821AU, and RTL8814AU chips.")
-      (license license:gpl2+))))
-
 (define-public vhba-module
   (package
     (name "vhba-module")
diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl
index 387e4b12ba..ecac4bb3d1 100644
--- a/gnu/system/examples/bare-bones.tmpl
+++ b/gnu/system/examples/bare-bones.tmpl
@@ -19,6 +19,7 @@
   (file-systems (cons (file-system
                         (device (file-system-label "my-root"))
                         (mount-point "/")
+			(options "atime,lol,ro,shared,shared")
                         (type "ext4"))
                       %base-file-systems))
 
-- 
2.37.1