* [PATCH 0/2] platform/x86: asus-laptop: Fix Wi-Fi hard RF-kill on Pegatron Lucid
@ 2026-10-10 19:38 Pavel Kossenko (kotekompotek)
2026-10-10 19:38 ` [PATCH 1/2] platform/x86: asus-laptop: Unregister the wimax rfkill on exit Pavel Kossenko (kotekompotek)
2026-10-10 19:38 ` [PATCH 2/2] platform/x86: asus-laptop: Add WiMAX rfkill switch for Pegatron Lucid Pavel Kossenko (kotekompotek)
0 siblings, 2 replies; 3+ messages in thread
From: Pavel Kossenko (kotekompotek) @ 2026-10-10 19:38 UTC (permalink / raw)
To: Corentin Chary, Luke D . Jones, Denis Benato, Hans de Goede,
Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Pavel Kossenko (kotekompotek)
On the Pegatron Lucid tablet the built-in Intel Centrino Advanced-N +
WiMAX 6250 (8086:0087, subsystem 8086:1301) is permanently hard-blocked
under Linux, while the same unit works under Windows. The driver and
firmware load, wlp2s0 is created, and all pega-* rfkill switches are
unblocked, but iwlwifi reports:
iwlwifi 0000:02:00.0: reporting RF_KILL (radio disabled)
and "rfkill unblock all" does not help. There is no physical switch
and no BIOS option.
The Lucid DSDT implements \_SB.ATKD.ENPR/DAPR for radio ids 0, 1, 2
and 6. Reading the GPIO level register (GPBS + 0x0C, GPBS = 0x480) at
boot shows the lines that asus-laptop drives (GP18 WLAN, GP17 BT,
GP20 WWAN) low/enabled, but GP27 (id 6, EC bit WMHD) high/disabled.
asus-laptop never touches id 6. Calling ENPR(6) via acpi_call
immediately toggles the card's RF-kill bit and Wi-Fi works.
Patch 1 fixes a pre-existing leak: asus_rfkill_exit() never
unregisters asus->wimax. Patch 2 needs it, since it reuses that
struct for the new pega-wimax switch.
Patch 2 registers id 6 as a "pega-wimax" rfkill switch, following the
existing pega-wlan/pega-bt/pega-wwan pattern.
Testing (Pegatron Lucid, Debian 13, kernel 6.12.111+deb13-amd64, the
patched asus-laptop.c built out of tree; the two hunks apply to 6.12
with 2-line offsets):
- Clean boot without any userspace workaround: pega-wimax is
registered unblocked, phy0 is no longer hard-blocked.
- wlp2s0 associates with a WPA2 AP (-43 dBm, HT40), gets a DHCP
lease, and downloads 38 MB at 4.7 MB/s.
- "rfkill block" on pega-wimax hard-blocks phy0 ("RF_KILL bit
toggled to disable radio"), and unblock re-enables it.
- rmmod asus_laptop removes all four pega-* rfkill devices
(previously pega-wimax was not freed); modprobe re-registers them
with no warnings.
Not tested: patch 1 on a non-Lucid Asus laptop that implements
WM_RSTS (asus-wimax). I don't have such hardware; the change there is
the same asus_rfkill_terminate() call exercised above.
Only the 6250 combo card was available to me, so I can't say whether
id 6 also gates other cards fitted to Lucid units. Registering the
switch unblocked matches what the Windows tools apparently do.
Tool use, per Documentation/process/generated-content.rst: the
investigation (DSDT analysis, GPIO register reads), both patches and
these changelogs were produced with an AI coding assistant (Claude
Opus 5.5) working on the tablet over SSH at my direction. I reviewed
the changes, ran the tests above on my device, and can answer
questions about them.
Based on pdx86/for-next (98f039265e58).
Pavel Kossenko (kotekompotek) (2):
platform/x86: asus-laptop: Unregister the wimax rfkill on exit
platform/x86: asus-laptop: Add WiMAX rfkill switch for Pegatron Lucid
drivers/platform/x86/asus-laptop.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
--
2.47.0.windows.2
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 1/2] platform/x86: asus-laptop: Unregister the wimax rfkill on exit
2026-10-10 19:38 [PATCH 0/2] platform/x86: asus-laptop: Fix Wi-Fi hard RF-kill on Pegatron Lucid Pavel Kossenko (kotekompotek)
@ 2026-10-10 19:38 ` Pavel Kossenko (kotekompotek)
2026-10-10 19:38 ` [PATCH 2/2] platform/x86: asus-laptop: Add WiMAX rfkill switch for Pegatron Lucid Pavel Kossenko (kotekompotek)
1 sibling, 0 replies; 3+ messages in thread
From: Pavel Kossenko (kotekompotek) @ 2026-10-10 19:38 UTC (permalink / raw)
To: Corentin Chary, Luke D . Jones, Denis Benato, Hans de Goede,
Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Pavel Kossenko (kotekompotek)
asus_rfkill_init() registers an "asus-wimax" rfkill switch on machines
that implement WM_RSTS, but asus_rfkill_exit() never unregisters it.
The rfkill device is leaked when the driver is removed, and also when
probe fails after asus_rfkill_init() has succeeded.
Add the missing asus_rfkill_terminate() call. It is a no-op when the
switch was never registered.
Fixes: 3c8671ffd334 ("asus-laptop: add rfkill interfaces for wlan and wwan")
Assisted-by: Claude Opus 5.5
Signed-off-by: Pavel Kossenko (kotekompotek) <kotekompotek@gmail.com>
---
drivers/platform/x86/asus-laptop.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index de607ed..8e69f02 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -1332,6 +1332,7 @@ static void asus_rfkill_terminate(struct asus_rfkill *rfk)
static void asus_rfkill_exit(struct asus_laptop *asus)
{
+ asus_rfkill_terminate(&asus->wimax);
asus_rfkill_terminate(&asus->wwan);
asus_rfkill_terminate(&asus->bluetooth);
asus_rfkill_terminate(&asus->wlan);
--
2.47.0.windows.2
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 2/2] platform/x86: asus-laptop: Add WiMAX rfkill switch for Pegatron Lucid
2026-10-10 19:38 [PATCH 0/2] platform/x86: asus-laptop: Fix Wi-Fi hard RF-kill on Pegatron Lucid Pavel Kossenko (kotekompotek)
2026-10-10 19:38 ` [PATCH 1/2] platform/x86: asus-laptop: Unregister the wimax rfkill on exit Pavel Kossenko (kotekompotek)
@ 2026-10-10 19:38 ` Pavel Kossenko (kotekompotek)
1 sibling, 0 replies; 3+ messages in thread
From: Pavel Kossenko (kotekompotek) @ 2026-10-10 19:38 UTC (permalink / raw)
To: Corentin Chary, Luke D . Jones, Denis Benato, Hans de Goede,
Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Pavel Kossenko (kotekompotek)
On the Pegatron Lucid the ATK methods ENPR and DAPR enable and disable
a radio selected by an id. The driver exposes ids 0-2 (WLAN, Bluetooth,
WWAN) as the pega-wlan, pega-bt and pega-wwan rfkill switches, but the
DSDT also implements id 6, which drives GPIO27 and the EC bit WMHD:
If ((Arg0 == 0x06)) { GP27 = Zero; WMHD = Zero; ALED (One) }
The firmware leaves GPIO27 high at boot. On units fitted with an Intel
Centrino Advanced-N + WiMAX 6250 combo card (8086:0087, subsystem
8086:1301) this keeps the whole card in hardware RF-kill, so Wi-Fi is
unusable even though pega-wlan is unblocked:
iwlwifi 0000:02:00.0: reporting RF_KILL (radio disabled)
The same card works under Windows, presumably because the vendor
utility calls ENPR(6).
Register a "pega-wimax" rfkill switch for id 6. The rfkill core applies
the default unblocked state on registration, which calls ENPR(6) and
releases the card:
iwlwifi 0000:02:00.0: RF_KILL bit toggled to enable radio.
Assisted-by: Claude Opus 5.5
Signed-off-by: Pavel Kossenko (kotekompotek) <kotekompotek@gmail.com>
---
drivers/platform/x86/asus-laptop.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index 8e69f02..ef4c2cc 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -192,6 +192,7 @@ MODULE_PARM_DESC(als_status, "Set the ALS status on boot "
#define PEGA_WWAN 0x02
#define PEGA_ALS 0x04
#define PEGA_ALS_POWER 0x05
+#define PEGA_WIMAX 0x06
#define METHOD_PEGA_READ "RDLN"
#define PEGA_READ_ALS_H 0x02
@@ -1454,6 +1455,17 @@ static int pega_rfkill_init(struct asus_laptop *asus)
ret = pega_rfkill_setup(asus, &asus->wwan, "pega-wwan",
PEGA_WWAN, RFKILL_TYPE_WWAN);
+ if (ret)
+ goto exit;
+
+ /*
+ * The firmware leaves this line asserted at boot. On units fitted
+ * with an Intel Centrino Advanced-N + WiMAX 6250 combo card it keeps
+ * the whole card in hardware RF-kill, Wi-Fi included. Registering
+ * the switch unblocks it by default, which calls ENPR(6).
+ */
+ ret = pega_rfkill_setup(asus, &asus->wimax, "pega-wimax",
+ PEGA_WIMAX, RFKILL_TYPE_WIMAX);
exit:
if (ret)
--
2.47.0.windows.2
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-10 19:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-10 19:38 [PATCH 0/2] platform/x86: asus-laptop: Fix Wi-Fi hard RF-kill on Pegatron Lucid Pavel Kossenko (kotekompotek)
2026-10-10 19:38 ` [PATCH 1/2] platform/x86: asus-laptop: Unregister the wimax rfkill on exit Pavel Kossenko (kotekompotek)
2026-10-10 19:38 ` [PATCH 2/2] platform/x86: asus-laptop: Add WiMAX rfkill switch for Pegatron Lucid Pavel Kossenko (kotekompotek)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®