Re: Ideapad S10-3 rfkill issues with fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2011/6/29 Rafał Miłecki <zajec5@xxxxxxxxx>:
> 2011/6/29 Ike Panhc <ike.pan@xxxxxxxxxxxxx>:
>> On 06/26/2011 06:53 AM, Andrew Lutomirski wrote:
>>> [linux-acpi cc'd because I don't know how to write to an ACPI field,
>>> and the fix to this bug probably needs that ability.]
>>>
>>> Hi platform people-
>>>
>>> My nephew's Ideapad S10-3 decided that it didn't want to support
>>> wireless anymore.  I think it happened when he fiddled with his rfkill
>>> switch, but I haven't been able to reproduce the problem yet.  This
>>> seems to be a common bug, and the only known fixes (so far) are to
>>> boot into Windows and fiddle with the settings or to remove the CMOS
>>> battery.
>>>
>>> This seems to be related to:
>>> http://ubuntuforums.org/showthread.php?t=1744402
>>> https://bugs.meego.com/show_bug.cgi?id=4086
>>> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/730972
>>>
>>> Of course, he doesn't have Windows installed, and I didn't want to
>>> take apart his laptop.  So I figured out the problem.
>>>
>>> The relevant ACPI fields and functions are (as far as I can tell):
>>>
>>> \FL07: The non-volatile copy of the RF enabled flag
>>> \_SB.PCI0.LPCB.EC0.WRFS: RF enabled flag
>>> \GO26: The GPIO line that controls the PHY (not really tested at all)
>>> \GO28: The RF light, inverted.  This doesn't work without manual
>>> override on my S10-3 because I don't have bluetooth or 3G, AFAICT.
>>>
>>> \_SB.PCI0.LPCB.EC0.DSLD: Load WRFS from FL07 (on startup)
>>> \_SB.PCI0.LPCB.EC0.DSSV: Save WRFS to FL07, called from some hotkey
>>> handler or other
>>> \_SB.PCI0.LPCB.EC0.DSGO: Commit WRFS to hardware (i.e. \GO26).
>>>
>>> Oddly enough, nothing in the DSDT seems to write WRFS or FL07 except
>>> to copy FL07 to WRFS.  So triggering the problem might involve
>>> toggling the switch from inside BIOS or something similar.
>>>
>>> The fix would be (I think) to change ideapad_sync_rfk_state to do this
>>> (in pseudocode):
>>> if (!hw_blocked != WRFS) {
>>>   WRFS = !hw_blocked;
>>>   DSSV()
>>>   DSGO()
>>> }
>>>
>>> I don't plan to send a patch for two reasons:
>>>
>>> 1. I don't know how to write to an ACPI field.  acpi_ns_evaluate can
>>> read fields, but it can't write them AFAICT.  The ability to write to
>>> a field would be really nice.  I did it by frobbing the ports by hand.
>>>
>>> 2. My nephew's taking his laptop home tomorrow, so I won't be able to
>>> test a patch.
>>>
>>> In the mean time, if you are affected by this problem and you really
>>> don't care how badly you damage your laptop, you could run the
>>> attached program, passing 1 as a parameter.  Then you should probably
>>> reboot.  Before you even consider trying that, you should check
>>> whether the magic hardcoded numbers match your DSDT.  If you don't
>>> know how to do that, then you probably shouldn't run the program.
>>>
>>> --Andy
>>>
>>> P.S.  Some people with this bug find that their system freezes hard
>>> when they try and fail to fix it.  I think this is a bug in brcm80211
>>> in 2.6.38 that's been fixed in brcmsmac in 2.6.39.  But I don't really
>>> feel like testing that carefully, given that I've already fixed the
>>> root cause.
>>
>> Thanks for your report. I have a S10-3 but barely touch the wifi switch.
>>
>> I know there are two drivers for Broadcom wifi chips. One is b43 which
>> is fully open and in linux kernel tree. The other is wl comes from
>> Broadcom with other license agreement and its source code is not fully
>> open.

I don't have access to the laptop anymore, but from memory:

I tried wl, brcm80211 (from 2.6.38) and brcmsmac (from 2.6.39).  I
don't think b43 supported that hardware.

wl and brcmsmac both showed ideapad-laptop soft and hard unblocked and
the wireless driver's rfkill soft unblocked but hard blocked.

brcm80211 froze the system hard.  I think it can't deal with rfkill.

>> In your mail you did not mention the output of 'rfkill list'. In my
>> view point this is necessary info that tells us who block the wifi.
>> I guess the your wifi problem is because one of the wlan rfkill shows
>> blocked.

Yes.

>> What I know is that the fix you suggest is hardly to be accepted
>> because those ACPI objects is not under VPC2004 and not always available
>> on ideapads. I have 8 ideapad DSDT but only two with those objects.
>>
>> I will test the wifi switch on my ideapads again after I back to home
>> which will be next week and see if I can reproduce the same issue.
>
> I've got one similar report on IRC #bcm-users from Ideapad user. When
> he booted with rfkill on, Broadcom was not visible in lspci at all.
> Switching rfkill during working system didn't change anything. He had
> to power down, switch rfkill off and boot.

I tried that and it didn't help.  I even tried turning the switch on
and leaving the battery out for awhile.

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux