diff mbox series

[bug#36141] installer: Unblock relevant rfkill switches.

Message ID 20190608175505.11162-1-me@tobias.gr
State Accepted
Headers show
Series [bug#36141] installer: Unblock relevant rfkill switches. | expand

Checks

Context Check Description
cbaines/applying patch success Successfully applied

Commit Message

Tobias Geerinckx-Rice June 8, 2019, 5:55 p.m. UTC
* gnu/installer/connman.scm (connman-enable-technology): Call ‘rfkill’
to (soft-)unblock a wireless technology before enabling it.
---
Guix,

Scanning for Wi-Fi networks on a Dell Latitude E6400 shows nothing
before running ‘rfkill unblock all’ on another VT.

Do this automatically, and more specifically.

K-regs,

T G-R

 gnu/installer/connman.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Tobias Geerinckx-Rice June 8, 2019, 6:14 p.m. UTC | #1
Oh…

Tobias Geerinckx-Rice wrote:
> +         (connman-rfkill-types `(("bluetooth" . "bluetooth")
> +                                 ("wifi" . "wlan")))
> +         (rfkill-type (assoc-ref connman-rfkill-types type)))

Turns out that util-linux allows ‘wifi’ as a special alias for 
‘wlan’:

  // only result for ‘grep -riw wifi’:
  static const struct rfkill_type_str rfkill_type_strings[] = {
    { .type = RFKILL_TYPE_ALL,       .name = "all"  },
    { .type = RFKILL_TYPE_WLAN,      .name = "wlan",
      .desc = "Wireless LAN" },
    { .type = RFKILL_TYPE_WLAN,      .name = "wifi" }, /* alias */

…so we could drop connman-rfkill-types completely and rely on that 
(undocumented!) quirk.

Of course I don't believe we should, but now you know as much as I 
do :-)

Kind regards,

T G-R
Tobias Geerinckx-Rice June 9, 2019, 12:20 a.m. UTC | #2
Tobias Geerinckx-Rice wrote:
> [hokum]

Never mind, there's something else going on here.  connmanctl 
handles (blindly clobbers, even) rfkill for you.  Perhaps I lost a 
race.  Possibly due to this machine's 3 Wi-Fi cards.

Still, something's not right.  To be continued…

Sorry for my noise,

T G-R
Maxim Cournoyer Aug. 3, 2021, 7:34 p.m. UTC | #3
Hi Tobias,

Tobias Geerinckx-Rice <me@tobias.gr> writes:

> Tobias Geerinckx-Rice wrote:
>> [hokum]
>
> Never mind, there's something else going on here.  connmanctl handles
> (blindly clobbers, even) rfkill for you.  Perhaps I lost a race.
> Possibly due to this machine's 3 Wi-Fi cards.
>
> Still, something's not right.  To be continued…
>
> Sorry for my noise,
>
> T G-R

I'll close this one, but feel free to open a bug if you stumble upon a
problem in this area again.

Thanks,

Maxim
diff mbox series

Patch

diff --git a/gnu/installer/connman.scm b/gnu/installer/connman.scm
index 7f47b9af77..0c72aaf2a1 100644
--- a/gnu/installer/connman.scm
+++ b/gnu/installer/connman.scm
@@ -1,5 +1,6 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -236,7 +237,12 @@  list so that each keys of a given technology are gathered in a separate list."
 
 (define (connman-enable-technology technology)
   "Enable the given TECHNOLOGY."
-  (let ((type (technology-type technology)))
+  (let* ((type (technology-type technology))
+         (connman-rfkill-types `(("bluetooth" . "bluetooth")
+                                 ("wifi" . "wlan")))
+         (rfkill-type (assoc-ref connman-rfkill-types type)))
+    (when rfkill-type
+      (system* "rfkill" "unblock" rfkill-type))
     (connman "enable" type)))
 
 (define (connman-disable-technology technology)