Ubuntu – Is it possible to bypass a hardware wifi switch, if `rfkill unblock all` does not work



I have recently revived an old Sony Vaio VGN-N230E laptop of mine, and installed Linux Mint on it:

gctrindade@gctrindade-VGN-N230E ~ $ lsb_release -irc
Distributor ID: LinuxMint
Release:        13
Codename:       maya
gctrindade@gctrindade-VGN-N230E ~ $ uname -or
3.2.0-23-generic GNU/Linux

The laptop works just fine, except for one problem: it has a hardware wifi switch that is slightly "loose". As a consequence, the laptop will randomly/constantly switch its wifi off, even when physically idle (something to do with some spring, perhaps?).

When that happens, rfkill displays the wifi as "hard blocked":

gctrindade@gctrindade-VGN-N230E ~ $ rfkill list
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: yes

This is particularly frustrating, seeing how I'm connecting to it remotely (SSH).

A few things I have tried:

Checking the BIOS for some sort of wlan/wifi setting. I failed to find anything related to it. (Note: I have not tried to "reset to factory defaults", as some other posts have suggested.)

Doing rfkill unblock all does not work, as the wifi remains "hard blocked".

Doing ifconfig wlan0 up fails with the following error message:

gctrindade@gctrindade-VGN-N230E ~ $ ifconfig wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill

Doing ip link set wlan0 up also fails:

gctrindade@gctrindade-VGN-N230E ~ $ ifconfig wlan0 up
RTNETLINK answers: Operation not possible due to RF-kill

Doing lsmod | grep sony revealed that a module called sony_laptop was loaded, and so I proceeded to do echo "blacklist sony_laptop" >> /etc/modprobe.d/blacklist.conf and rebooted my computer. Unfortunately, the problem persists.

Doing rm /etc/rfkill and rebooting does not work, as the wifi remains "hard blocked".

Doing rfkill event, followed by rfkill unblock xxxxxxxxxx.xxxxxx (with the number shown by the previous command) does not work, either.

Is it possible to bypass the hardware switch altogether?

Hopefully you guys have an idea how to solve this. It is really frustrating to have to come back to the laptop, just to squeeze the wifi switch (harder) onto the ON position every couple of hours.

Perhaps this has some valuable information:

gctrindade@gctrindade-VGN-N230E ~ $ lshw -c network
[sudo] password for gctrindade:
       description: Ethernet interface
       product: 88E8036 PCI-E Fast Ethernet Controller
       vendor: Marvell Technology Group Ltd.
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: eth0
       version: 16
       serial: 00:13:a9:4f:a9:73
       capacity: 100Mbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm vpd msi pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=sky2 driverversion=1.30 firmware=N/A latency=0 link=no multicast=yes port=twisted pair
       resources: irq:43 memory:d6000000-d6003fff ioport:2000(size=256)
       description: Wireless interface
       product: PRO/Wireless 3945ABG [Golan] Network Connection
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:06:00.0
       logical name: wlan0
       version: 02
       serial: 00:19:d2:23:7f:eb
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwl3945 driverversion=3.2.0-23-generic firmware= ip= latency=0 link=yes multicast=yes wireless=IEEE 802.11abg
       resources: irq:44 memory:da000000-da000fff

Thanks in advance!

Related Question