Comutador sem fio no Dell XT2 - comportamento estranho de rfkill

0

Eu tenho um Dell Latitude XT2 usando uma placa de WLAN da Intel ( lspci o relaciona como "Intel Corporation Ultimate N WiFi Link 5300") executando o Lubuntu 12.04 com atualizações recentes. O laptop tem um switch de WLAN de hardware.

Eu tenho problemas para ativar a WLAN ao inicializar com o switch de hardware definido como "off". A situação é um pouco confusa, infelizmente.

rfkill lista dois dispositivos WLAN (embora lspci mostre apenas o Intel). Esta é a situação quando a inicialização com o switch de hardware definido como "Off":

0: dell-wifi: Wireless LAN
    Soft blocked: yes
    Hard blocked: yes
1: dell-bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: yes
2: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: yes

De alguns testes, concluo que a WLAN só é ativada quando ambos, o dell-wifi e phy0 , são desbloqueados pelo software e pelo hardware. Mas só consigo desbloquear dell-wifi depois que o switch de hardware estiver definido como "on".

Procedimento direto da inicialização com o switch de hardware definido como "Off":

  • Desbloqueio suave phy0 funciona como esperado. Poderia ser feito pelo script de inicialização.
  • sudo rfkill unblock 0 : nada acontece. Bloqueio suave de dell-wifi não removido.
  • Defina o interruptor de hardware para "on": phy0 obtém seu bloco de disco rígido removido. Ainda não há WLAN.
  • sudo rfkill unblock 0 : both o bloqueio suave e rígido de dell-wifi é removido. A WLAN agora está ativa e funciona.
  • sudo rfkill block 0 : adiciona apenas o bloco flexível conforme esperado. A WLAN é desligada novamente.

Assim, para ativar a WLAN, eu tenho que usar o switch de hardware e (manualmente) executar um script - isso é um pouco inconveniente.

Alguém conhece uma solução melhor? Talvez um daemon possa ajudar a ouvir rfkill events para desbloquear dell-wifi depois de configurar o hardware como "on"? (soa como outra solução alternativa)

Ao inicializar com o interruptor de hardware definido como "On", nada é bloqueado nem duro nem macio.

    
por dyp 28.09.2012 / 14:06

1 resposta

0

Já existe um daemon que você pode usar para essa finalidade: udevd

Você pode criar um arquivo de regras para ouvir eventos de rfkill, veja esta resposta do unix.stackexchange.com . Apenas adapte o script ao seu propósito, veja abaixo. Esteja ciente de que meu bash não é o melhor - funciona, mas provavelmente não pode ser considerado um bom exemplo.

#!/bin/bash
#/usr/local/bin/unblock-dell-wifi

DEV_CHANGED_BY_HW_SWITCH=phy0
DEV_TO_UNBLOCK=dell-wifi


if [ ${RFKILL_NAME} != ${DEV_CHANGED_BY_HW_SWITCH} ]
then
        exit
fi


# get $DEV_TO_UNBLOCK rfkill id
DEV_TO_UNBLOCK_ID='rfkill list wlan | grep $DEV_TO_UNBLOCK | grep -o -e "^[0-9]*"'

# maybe add error handling if $DEV_TO_UNBLOCK couldn't be found
if [ -z $DEV_TO_UNBLOCK_ID ]
then
        echo "$DEV_TO_UNBLOCK not found in rfkill list" 1>2&
        exit
fi  


if [ ${RFKILL_STATE} = 0 ]
then
        sudo rfkill block $DEV_TO_UNBLOCK_ID
else
        sudo rfkill unblock $DEV_TO_UNBLOCK_ID
fi
    
por dyp 30.09.2012 / 16:12