
Ubuntu日本語フォーラム

ログインしていません。
はじめまして投稿させていただきます。
無線LAN機能およびBluethooth内蔵のノートパソコンを利用しておりますが、ノートパソコンについている無線LAN切り替えスイッチをOnしたときに、無線LANが有効にならない問題が発生しています。
具体的には次のような症状です。
無線LANスイッチをOnにした状態で起動すると、デバイスは正常に認識され、無線LAN接続はつかえる。このとき無線LANのインジケータランプは点灯している。Bluetoothのインジケータも点灯。
On状態で起動し、スイッチを切り替えてOffにすると、無線LANは使えなくなり、インジケータも消える。
再度Onにするとインジケータが点灯し、接続にも成功。
ようするに、無線LANスイッチをOnにした状態で起動すれば、予想通りの動作をする。
無線LANスイッチをOffにした状態で起動すると、起動直後はもちろん使えない。そののちスイッチをOn、タスクバーのNetworkManagerを右クリックして「無線を有効にする」が、左クリックで表示される無線ネットワークのリストには「デバイスが準備されていません」と表示され、接続できない。なお、このとき、Bluetoothのインジケータは点灯している。
ようするに、無線LANスイッチをOffで起動した場合、On/Offを繰り返しても、再起動しない限り無線LANはつかえない。
なお、windows XPとのデュアルブート環境ですが、xpではどの状態でもスイッチは予想通りの動作をします。
素人考えですが、無線LANスイッチを切り替えたとき、<XF86WLAN>というキーコード(emacsにおける表示です)が発生していながら処理されていないようなので、このキーコードを認識し、なんらかのコマンドを実行するかファイルを書き換えるかして対処できるのではないかと考えています。
なにとぞよろしくお願いします。
機種:SONY vaio VGN-G2
Ubuntuのバージョン:Ubuntu 10.04
内蔵無線LANの情報:PRO/Wireless 3945ABG [Golan] Network Connection (lshwの表示)
オフライン
無線LAN子機用モジュール(たぶんiwl3945)を/etc/modulesに追加するとどうなるでしょうか。
「無線LANスイッチをOffで起動した場合、On/Offを繰り返しても、再起動しない限り無線LANはつかえない。」この時に
sudo restart network-managerを実行すればどうなるでしょうか。
使える時と使えない時で同じモジュールがロードされていますか。
オフライン
jackalopeさん、お返事ありがとうございます。
jackalope による投稿:
無線LAN子機用モジュール(たぶんiwl3945)を/etc/modulesに追加するとどうなるでしょうか。
変化ありませんでした。
lshwでモジュールを調べ(iwl3945でした)、/etc/modulesに追記してスイッチoffで再起動しましたが、相変わらず認識されず、Onで起動した場合は認識されました。
jackalope による投稿:
「無線LANスイッチをOffで起動した場合、On/Offを繰り返しても、再起動しない限り無線LANはつかえない。」この時に
sudo restart network-managerを実行すればどうなるでしょうか。
コマンドは成功しましたが、状況はかわりませんでした。
スイッチoffで起動し、スイッチをOnにしたあとnetwork-managerの再起動をしたところ、一度無線LANが無効になったあと(右クリックメニューにおいて)、有効にしてもあいかわらずデバイスが見つからない旨が表示されます。
jackalope による投稿:
使える時と使えない時で同じモジュールがロードされていますか。
ロードされているmoduleをどうやって確認するのか自信がないのですが、
$ modprobe -l
の結果をonのときとoffのときでdiffした結果は同一でした。
ということで未だ解決しておりません。引き続きよろしくお願いします。
オフライン
/etc/modulesを元に戻してから、
ONで起動し、lsmod | grep iwlを実行。
OFFで起動後ONにし、lsmod | grep iwlを実行。
同じモジュールがロードされていたら他に思いつく事はありません。
オフライン
jackalopeさんの仰るとおりに作業しました。
結果はすべて、
iwl3945 70708 0 iwlcore 92806 1 iwl3945 mac80211 232631 2 iwl3945,iwlcore cfg80211 146860 3 iwl3945,iwlcore,mac80211 compat_firmware_class 6586 1 iwl3945
で、同一でした。
moduleのことなど少し調べてみて私もこれが原因ではないかと疑っていますが、どうやらちがうようですね。
引き続きよろしくおねがいします。
オフライン
無線LAN有効でシステムを起動したときと、
無線LAN無効でシステムを起動したときで、
それぞれ
iwconfig
を実行したときにTxPowerに差異はありますでしょうか。
オフライン
hmatsueさん回答ありがとうございます。
iwconfigしたときのTx-Powerの値はつぎのようになりました。
Onで起動してスイッチOnのとき: 15 dBm
Onで起動してスイッチOffのとき: off
Offで起動してスイッチOnのとき: off
Offで起動してスイッチOffのとき: 0dBm
起動というのはUbuntuの起動時のスイッチの状態、スイッチというのはコマンド実行時のスイッチの状態です。
お察しのとおりなにか妙な結果になっております。どうすればよいのでしょうか。
引き続きよろしくおねがいします。
オフライン
私が想像していたより複雑な状況になっているようです。。
無線LAN無効でシステムを起動し、
無線LANの切り替えスイッチでON状態にした場合、
hyagni による投稿:
Offで起動してスイッチOnのとき: off
の状態になっているということですよね。
この状態で、端末から、
sudo iwconfig interface_name txpower auto
もしくは、
sudo iwconfig interface_name txpower 15
として接続できる状態になるか確認してみて下さい。
いずれの場合もinterface_nameの部分はそちらでiwconfigで確認したインターフェース名に読み替えてください。
多くの環境ではwlan0などとなるようです。
仮にwlan0であったとすると、
sudo iwconfig wlan0 txpower auto
のようになるかと思います。
オフライン
hmatsueさんのおっしゃる方法、
Onにしたあとで sudo iwconfig wlan0 txpower auto で無事起動することができました。
どうやらこの方法で使えるようにしたあとに、再度スイッチをOff/Onすると自動的に立ち上がらないことから、
openboxのkeyconfigに
<keybind key="XF86WLAN">
<action name="Execute">
<command>sudo iwconfig wlan0 txpower auto</command>
</action>
</keybind>
を追記し、
sudoersにて/sbin/iwconfigをNOPASSWDで許可したところ、スイッチの切り替えを含めて全て想定通りの動作をさせることができ、解決しました。
jackalopeさん、hmatsueさんありがとうございました。勉強になりました。
オフライン
現象としてはTxPowerが期待通りに制御されていないということなのだと理解しましたが、ボタンを押すごとに状態は変化しており、まったく制御されていないというわけではなさそうです。
iwconfigをパスワード無しで実行できるようにしてしまうというのも、ちょっとどうかと思う面もあるので、当面はそれで凌ぐにしてもおいおい根本原因を調査していただいた方がよいかと思います。
と言いつつ、具体的な案は無くて申し訳無いのですが、例えばacpidを一度止めて、デバッグモードで動かして無線LANの有効/無効を切り替えるとなにか表示がでるかも知れません。
オフライン
返信にきがつかず、半年も放置する形となってしまい、まことにもうしわけございません。
WM に awesome を利用するようになって、また無線LANに不具合が発生したため調査していました。
acpid をデバッグモードで動作させる方法はわからなかったのですが、それをヒントにさぐってみた結果、つぎのことがわかりました。
なお、デバッグモードにする方法がわからなかったというのは、
- kill でプロセスを殺しても再起動してしまう。(sudo kill -9 PID でも再起動する)
- /etc/default/acpid の OPTIONS に "-s /var/run/acpid.socket --debug" と指定して再起動しても、デバッグモードにはいらない
ということです。
今回判明した状況は、
- /etc/acpi/events/tosh-wireless がイベントを定義し、 /etc/acpi/tosh-wireless.sh をよみこんでいる。
tosh-wireless で指定されているキーがトグルボタンかどうかはわかりませんでした。
tosh-wireless には
hkey VAL[DZ] 00000001 00000142
とあり、 xev でもとめたキーコードは 246 です。
- tosh-wireless.sh は /usr/share/acpi-support/state-funcs 内の toggleAllWirelessStates をよんでいる。
このとき、私の環境では toshset ははいってません。
- toggleAllWirelessStates で処理する対象となっているファイルは、私の環境では存在しない。
実際にシェルでよみこんで実行してみたが、 iwconfig の結果に変化はなかった。
存在しないファイル/フォルダとは
$DEVICE/device/rfkill
$DEVICE/device/power/state
である。
関数の説明にも、
Attempts to user 'rf_kill' first, and then tries 'power/state', though that
will fails on >=2.6.18 kernels since upstream removed the functionality...
というコメントがある。
このスイッチが動作しない問題は、これらのスクリプトを修正することで対処可能でしょうか?
現在の問題は、 awesome 導入後に無線LANがつかえなくなったということです。
いまわかっている原因は、ひとつは openbox 限定の指定をして問題を回避していたため awesome ではスイッチで切りかえられないこと、もうひとつはトレイに LAN のアイコンがでなくなってしまい、操作ができないことがあげられます。
まだ調査が十分ではないので、調査をし、解決しなかった場合、この問題との関連具合におうじてあたらしいポストをするか、ここに追記するかしたいとおもいます。
あわせてよろしくおねがいします。
機種:SONY vaio VGN-G2
Ubuntuのバージョン:Ubuntu 10.04
uname: Linux <username>-ubuntu 2.6.32-25-generic-pae #45-Ubuntu SMP Sat Oct 16 21:01:33 UTC 2010 i686 GNU/Linux
内蔵無線LANの情報:PRO/Wireless 3945ABG [Golan] Network Connection (lshwの表示)
オフライン
awesome wm 上での動作についての報告です。
次の変更によって無線スイット OFF で起動した状態から、 lxde 時とおなじ操作性でつかえるようになりました。
- awesome を起動するスクリプトに
nm-applet &
を追記する。
- rc.lua のグローバルキーセッティングに
awful.key({}, "XF86WLAN", function () awful.util.spawn("sudo iwconfig wlan0 txpower auto" ) end )
を追記する。
依然 iwconfig をだれでも実行できる問題点は解決できておりませんので、みなさまの知恵を拝借したいです。
オフライン
hyagni による投稿:
acpid をデバッグモードで動作させる方法はわからなかったのですが、それをヒントにさぐってみた結果、つぎのことがわかりました。
なお、デバッグモードにする方法がわからなかったというのは、
- kill でプロセスを殺しても再起動してしまう。(sudo kill -9 PID でも再起動する)
- /etc/default/acpid の OPTIONS に "-s /var/run/acpid.socket --debug" と指定して再起動しても、デバッグモードにはいらない
ということです。
実は試したことは無いのですが、上記のように/etc/default/acpidにオプションを書いておいて、
sudo service acpid stop sudo service acpid start
とすれば、新しいオプションで起動できるのでは無いかと考えていました。
それはさておき、現象はかなり把握されたようですね。
hyagni による投稿:
今回判明した状況は、
- /etc/acpi/events/tosh-wireless がイベントを定義し、 /etc/acpi/tosh-wireless.sh をよみこんでいる。
tosh-wireless で指定されているキーがトグルボタンかどうかはわかりませんでした。
tosh-wireless には
hkey VAL[DZ] 00000001 00000142
とあり、 xev でもとめたキーコードは 246 です。
- tosh-wireless.sh は /usr/share/acpi-support/state-funcs 内の toggleAllWirelessStates をよんでいる。
このとき、私の環境では toshset ははいってません。
- toggleAllWirelessStates で処理する対象となっているファイルは、私の環境では存在しない。
実際にシェルでよみこんで実行してみたが、 iwconfig の結果に変化はなかった。
存在しないファイル/フォルダとは
$DEVICE/device/rfkill
$DEVICE/device/power/state
である。
関数の説明にも、
Attempts to user 'rf_kill' first, and then tries 'power/state', though that
will fails on >=2.6.18 kernels since upstream removed the functionality...
というコメントがある。
このスイッチが動作しない問題は、これらのスクリプトを修正することで対処可能でしょうか?
その方針で良いと思います。
いわゆるprintfデバッグ的な解析(実際にはecho $VAR > /tmp/debug.txtみたいな感じになるでしょうか?)で、現象がつかめれば、対策も見えてくるのでは無いかと思います。
オフライン
hmatsue による投稿:
hyagni による投稿:
acpid をデバッグモードで動作させる方法はわからなかったのですが、それをヒントにさぐってみた結果、つぎのことがわかりました。
なお、デバッグモードにする方法がわからなかったというのは、
- kill でプロセスを殺しても再起動してしまう。(sudo kill -9 PID でも再起動する)
- /etc/default/acpid の OPTIONS に "-s /var/run/acpid.socket --debug" と指定して再起動しても、デバッグモードにはいらない
ということです。実は試したことは無いのですが、上記のように/etc/default/acpidにオプションを書いておいて、
コード:
sudo service acpid stop sudo service acpid startとすれば、新しいオプションで起動できるのでは無いかと考えていました。
勘違いかもしれませんが、どうやら、私の環境ではできてないようです。
アドバイスありがとうございます。
acpi 経由で on/off を設定する方法については、時間のあるときに調査してみたいとおもいます。
オフライン