あれこれ備忘録@はてなブログ

勉強したことやニュースや出来事を備忘録として書いていきます

このブログには広告が含まれます

Ubuntuやその他Linux系OSで無線LANの調子が悪いときに試すこと

新しいPCであれば問題がない場合でも古いマシンであったり、PCは新しくても無線LANアダプタが古かったり、マイナーなものであったりするとうまくつながらないことがあるようです。

UbuntuLinuxで標準で使われるドライバではうまく動かない時にはNDIS Wrapperを使います。

Ubuntu 64bitでNdiswrapperを使って無線LANアダプタを動かす場合の注意

Linux系OSも新しいバージョンは64bitであることが多く、一方でWin7以降のドライバが使えるわけではないので注意が必要です。

うまく接続できている場合でも、Winなどで使用している時よりも通信速度が遅い場合があるようで、その場合は

sudo gedit /etc/pm/power.d/wireless

で、wirelessという名前のファイルを新規作成で作成するとともにエディタで開き、

#!/bin/sh /sbin/iwconfig wlan0 power off

と書いて保存すると良いようです。

新規作成した場合はアクセス権限を設定しなくてはならなくて、この場合は755(所有者は読取書き込み実行、グループ、その他の人は読取と実行が可能)と記述するのが適切なようなので

sudo chmod 755 /etc/pm/power.d/wireless

とします。

これは無線LANアダプタの電源管理をUbuntuLinuxに任せないということのようです。

電源管理のせいでルータとのつながりが悪くなる場合があるようです。

場合によると、これでは反映されないことがあるそうで/etc/rc.localに同じような記述をしてブートした時から設定を反映させたほうがいいという記述もありました。

sudo gedit /etc/rc.local

で開き、

sleep 10 iwconfig wlan0 power off

exit 0

の手前に挿入します。 また、ホスト名を検索するのに時間がかかる場合があってレスポンスが遅れる場合があるそうで、その場合は

sudo gedit /etc/nsswitch.conf

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

を以下のように変更すると良いようです。

hosts: files dns mdns4

hostsの後のスペースの多さは関係ないと思います。

また、

hosts: files mdns4_minimal [NOTFOUND=continue] dns mdns4

のように、NOTFOUND=ruturnをNOTFOUND=continueに変えるだけでもいいという意見もありました。

参考記事

Ubuntu 11.10の無線LAN速度低下を防ぐ方法 mdns4_minimal switch off home-network

うちの環境で起こっている問題としては、サスペンドから復帰した時に無線LANが使えなくなるという現象があります。

13.10では無かったので14.04で新しく起こっている問題なのかも知れませんが、今のところ新しい情報が無いので古い情報に頼ってます。

解決法の候補としては

nm-tool

lsusb -v

とか

dmesg

でドライバ名を調べて

sudo gedit /etc/pm/config.d/unload_modules

して、以下を記述

SUSPEND_MODULES="$SUSPEND_MODULES 調べたドライバ名"

これで無線LANも復帰されるはず、と書いてありました。

なお、これもアクセス権の設定をします。

sudo chmod 755 /etc/pm/config.d/unload_modules

これだけでは足りないこともあって、その場合はさらに

sudo gedit /etc/pm/sleep.d/wakenet.sh

#!/bin/bash case "$1" in thaw|resume) nmcli nm sleep false ;; *) ;; esac exit $?
sudo chmod 755 /etc/pm/sleep.d/wakenet.sh

とすることが必要なようです。

ハイバネートやスリープに入るときの処理に問題があるので以下のスクリプトを作りなさいという記述もありました。

gnome-screensaver-command -l dbus-send --system --print-reply \ --dest="org.freedesktop.UPower" \ /org/freedesktop/UPower \ org.freedesktop.UPower.Suspend

適当な名前のスクリプトファイルを作って、例えばhibernate.shとして

chmod +x hibernate.sh

として実行可能にする。元記事には書いてありませんでしたが、

#!/bin/bash

がファイルの頭にあったほうがいいでしょう。

これをスリープさせたいときに実行しましょう、ということのようです。

普通のスリープ、つまりGUIメニューからサスペンドさせたり、ノートパソコンなら画面を閉じたりしてスリープさせるのではダメなようです。

細かいところで相性の問題がありますね。

参考記事

[Ubuntu 13.04] サスペンド復帰時、ネットに接続できなくなる問題を解決する

Linuxで使っているNICのドライバやバージョンを調べる方法いろいろ

Ubuntu 13.10 - Wifi not re-connecting after suspend [duplicate]

Suspend problems in 13.10 [closed]

追記

うちの環境では結局どれもうまくいきませんでした。

最終的に簡単な方法にたどり着きました。

Lubuntuにすることです。

LXDEでも良いのでしょうが、設定なども含めてインストールされるのでこちらにしました。

sudo apt-get install lubuntu-desktop

これで治るということは、GNOMEXfce(Xubuntu)の問題なのかも知れません。

サスペンドやロックが無効にできればよいのではないかと思うのですが。

Lubuntuではモニタ点灯は離席したり、ノートを閉じたりするとOFFになるので、これで良しとしています。

デスクトップ環境を変えるのはあまり良い解決法とは言えませんが、上記の方法でどうしても駄目な方はこちらも検討してみてください。

無線LANアダプタも安く小型のものが買えるようになっているのでどうしても駄目なら買っても良いのかも知れません。