ideapad_laptop disables WiFi/BT radios on Lenovo Y530
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Confirmed
|
Medium
|
Unassigned |
Bug Description
I've been working with a user that has a Lenovo Legion Y530-15ICH where booting Ubuntu 18.10 (kernel 4.18.0-8) results in the radios being disabled by the platform driver "ideapad-laptop".
Unloading or blacklisting the module solves the issue but disables other platform ACPI interfaces:
$ sudo tee /etc/modprobe.
The system has the most recent firmware:
[ 0.000000] DMI: LENOVO 81FV/LNVNB161216, BIOS 8JCN44WW 08/13/2018
The wifi device is:
00:14.3 Network controller [0280]: Intel Corporation Wireless-AC 9560 [Jefferson Peak] [8086:a370] (rev 10)
Subsystem: Intel Corporation Wireless-AC 9560 [Jefferson Peak] [8086:0034]
Kernel driver in use: iwlwifi
We investigated the issue extensively and built the module with additional logic without solving the issue. It is well-known that some Lenovo models do not have a separate hardware radio kill switch (this model uses hot-keys Fn + F7 for 'Airplane mode') and need to use a DMI match to disable the rfkill logic.
We used dmidecode to get the correct Version string:
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: LENOVO
Product Name: 81FV
Version: Lenovo Legion Y530-15ICH
Serial Number: PF18CD10
UUID: A44F71C1-
Wake-up Type: Power Switch
SKU Number: LENOVO_
Family: Legion Y530-15ICH
and added it to no_hw_rfkill_
{
.ident = "Lenovo Legion Y530-15ICH",
.matches = {
},
},
However, rfkill was still listing the platform devices "ideapad_wlan" and "ideapad_
0: ideapad_wlan: Wireless LAN
Soft blocked: no
Hard blocked: yes
1: ideapad_bluetooth: Bluetooth
Soft blocked: yes
Hard blocked: yes
3: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
4: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
/sys/class/
We then added printk(KERN_NOTICE ... in the module's platform_
diff -u /home/all/
--- /home/all/
+++ ./ideapad-laptop.c 2018-10-14 06:19:48.843813865 +0100
@@ -1147,6 +1147,13 @@
},
},
{
+ .ident = "Lenovo Legion Y530-15ICH",
+ .matches = {
+ DMI_MATCH(
+ DMI_MATCH(
+ },
+ },
+ {
@@ -1239,6 +1246,7 @@
int cfg;
struct ideapad_private *priv;
struct acpi_device *adev;
+ const char *dmi_vendor, *dmi_version;
ret = acpi_bus_
if (ret)
@@ -1257,6 +1265,10 @@
+ dmi_vendor = dmi_get_
+ dmi_version = dmi_get_
+ printk(KERN_NOTICE "DMI: %s, %s. has_hw_
+
ret = ideapad_
if (ret)
And this revealed that the function is not being called - the KERN_NOTICE messages do not appear in 'dmesg' output.
This suggests:
static const struct acpi_device_id ideapad_
{ "VPC2004", 0},
is not being matched via platform_
We then decompiled the ACPI DSDT and confirmed that _HID is being set to VPC2004:
grep -C4 VPC2004 dsdt.dsl
Scope (\_SB.PCI0.
{
{
At this point we're not sure what the next step should be. Wifi works correctly with the module blacklisted but it would be good to fix this properly.
description: | updated |
description: | updated |
description: | updated |
Changed in linux (Ubuntu): | |
assignee: | nobody → Nisankh Acharjya (nisankhubuntu) |
Changed in linux (Ubuntu): | |
assignee: | Nisankh Acharjya (nisankhubuntu) → nobody |
Changed in linux (Ubuntu): | |
status: | Incomplete → Confirmed |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 1797772
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.