Ubuntuやその他Linux系OSで無線LANの調子が悪いときに試すこと
新しいPCであれば問題がない場合でも古いマシンであったり、PCは新しくても無線LANアダプタが古かったり、マイナーなものであったりするとうまくつながらないことがあるようです。
UbuntuやLinuxで標準で使われるドライバではうまく動かない時には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アダプタの電源管理をUbuntuやLinuxに任せないということのようです。
電源管理のせいでルータとのつながりが悪くなる場合があるようです。
場合によると、これでは反映されないことがあるそうで/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
これで治るということは、GNOMEかXfce(Xubuntu)の問題なのかも知れません。
サスペンドやロックが無効にできればよいのではないかと思うのですが。
Lubuntuではモニタ点灯は離席したり、ノートを閉じたりするとOFFになるので、これで良しとしています。
デスクトップ環境を変えるのはあまり良い解決法とは言えませんが、上記の方法でどうしても駄目な方はこちらも検討してみてください。
無線LANアダプタも安く小型のものが買えるようになっているのでどうしても駄目なら買っても良いのかも知れません。