Eu acredito que você pode fazer isso através do módulo do Kernel diretamente. A maioria dos módulos do Kernel pode ter parâmetros que você pode passar quando o driver é carregado ou eles podem ser carregados através de um arquivo de configuração durante a inicialização.
Exemplo (Kernels 2.6)
Eu tenho um sistema Fedora 14 com os seguintes drivers sem fio.
$ lsmod |grep iw
iwlagn 209751 0
iwlcore 195714 1 iwlagn
mac80211 229095 2 iwlagn,iwlcore
cfg80211 134981 3 iwlagn,iwlcore,mac80211
O módulo em que estamos interessados é o mac80211
one. Veja mais informações sobre isso:
$ modinfo mac80211
filename: /lib/modules/2.6.35.14-106.fc14.x86_64/kernel/net/mac80211/mac80211.ko
license: GPL
description: IEEE 802.11 subsystem
srcversion: 8D64C9A86E6BE7B4C1AF862
depends: cfg80211
vermagic: 2.6.35.14-106.fc14.x86_64 SMP mod_unload
parm: ieee80211_default_rc_algo:Default rate control algorithm for mac80211 to use (charp)
parm: ieee80211_disable_40mhz_24ghz:Disable 40MHz support in the 2.4GHz band (bool)
Você também pode usar a opção -p
para obter apenas os parâmetros dos módulos:
$ modinfo -p mac80211
ieee80211_disable_40mhz_24ghz:Disable 40MHz support in the 2.4GHz band
ieee80211_default_rc_algo:Default rate control algorithm for mac80211 to use
Se você observar a seção na parte inferior onde especifica parm:
, esses são os parâmetros que você pode passar para este módulo para alterar a configuração. A opção em que você está interessado é a seguinte: ieee80211_disable_40mhz_24ghz
. Você pode carregá-lo com este comando para desativá-lo:
$ sudo modprobe mac80211 ieee80211_disable_40mhz_24ghz=1
Descarregar & Carregando módulos
Para chegar a um ponto em que você pode fazer isso, você precisa descarregar os outros módulos que dependem deste. Você pode ver a lista de dependências na lsmod
acima, principalmente:
mac80211 229095 2 iwlagn,iwlcore
Portanto, precisamos desinstalar esses dois módulos:
$ sudo rmmod iwlagn
$ sudo rmmod iwlcore
Agora podemos desinstalar o mac80211:
$ sudo rmmod mac80211
Agora podemos recarregá-lo com o parâmetro para desativar o recurso de 2,4 GHz:
$ sudo modprobe mac80211 ieee80211_disable_40mhz_24ghz=1
Agora podemos recarregar os outros dois módulos:
$ sudo modprobe iwlagn
É suficiente para just modprobe
o driver mais alto na pilha, o Kernel terá o cuidado de recarregar quaisquer módulos adicionais dos quais ele depende.
$ lsmod | grep iw
iwlagn 209751 0
iwlcore 195714 1 iwlagn
mac80211 229095 2 iwlagn,iwlcore
cfg80211 134981 3 iwlagn,iwlcore,mac80211
Exemplo (Kernels 3.x)
As coisas mudaram um pouco com os Kernels Linux 3.x. O parâmetro ieee80211_disable_40mhz_24ghz
foi movido do módulo mac80211
para o módulo cfg80211
. Portanto, todas as etapas ainda são relevantes, exceto que você precisará substituir o módulo cfg80211
em que mac80211
foi usado.
Quais parâmetros foram um módulo carregado?
Não há um comando para fazer isso diretamente, mas alguns módulos expõem essas informações no sistema de arquivos /sys/module
. Por exemplo:
$ cat /sys/module/mac80211/parameters/ieee80211_disable_40mhz_24ghz
Y