2009年09月19日

NetWalker + S21HT + BT-DUN でインターネット

とりあえず Bluetooth でのインターネット接続に成功したのでメモ。 記憶に頼っているので、細かいところはあやしいです。

NetWalker 目次

無線 LAN などでネットワークに接続し、パッケージのインストールをできる環境を作成しておきます。

次にパッケージのインストール。 「アプリケーション」→「追加と削除」で"Bluetooth Analyzer" をチェックして「変更の適用」を実行。 またはコマンドラインから以下を実行。

$ sudo aptitude install bluetooth bluez-gnome

USB な bluetooth デバイスを NetWalker に接続。 システム → 設定 → Bluetooth で Bluetooth デバイスを選択して pin コードを入力します。

(2009-09-22 文末に pin コードを設定する別な方法を記述しました。)

2009-11-15 追記

もし挿しただけでは Bluetooth が認識されない場合、以下のコマンドで認識できかもしれません。

$ sudo hciconfig hci0 up

追記終わり。

モデムとなる S21HT(WM6_BT_DUN.cab をインストール済み) 側では、 スタート→設定→接続→Bluetooth→新しいデバイスの追加、で待ち受け状態にしておきます。

再び NetWalker で、

$ hcitool scan

ここで表示される BT アドレスは後で使います。続いて、

$ sdptool search dun

Channel の値を調べます。

$ sudo gedit /etc/bluetooth/rfcomm.conf

これらの結果を元に設定ファイルを編集。

rfcomm0 { bind yes; (yes にしておく) device xx:xx:xx:xx:xx:xx; (最後のセミコロンを忘れないように) channel 5; (自分の場合 5 でした) comment "S21HT"; }

bluetooth サービスを再起動します。

$ sudo /etc/init.d/bluetooth restart

/dev/rfcomm0 が存在するはずです。

続いて ppp の設定。 コンソールから操作をするのですが、システム付属の端末では表示が乱れてしまいます。 対策として代替となるアプリケーションをあらかじめインストール。

$ sudo aptitude install mlterm

メニューから「アプリケーション」→「アクセサリ」→「Multilingual Terminal」で端末を起動します。 続いて ppp の設定。

$ sudo pppconfig

以下のように設定しました。

プロバイダ名 provider (デフォルトのままにしておくと後で楽です。)
ネームサーバ Dynamic (スペースで * がつきます。)
認証 PAP
ユーザ名 em
パスワード em
スピード 921600
パルス / トーン Tone
電話番号 *99#
モデム 「いいえ」を選択して /dev/rfcomm0

これで設定ファイルができているはずです。 以下のコマンドで確認します。(sudo しないと見えません)

$ sudo ls /etc/chatscripts

ファイル provider があるはずなので、これを編集します。

$ sudo gedit /etc/chatscripts/provider
(略) OK AT+CGDCONT=1,"IP","emb.ne.jp" (追加) OK-AT-OK "ATDT*99#" (略)

あとは ppp の起動です。 (設定名を provider から変えた場合は引数に追加)

$ sudo pon (接続時) $ sudo poff (切断時)

接続した状態 (sudo pon した状態) で ifconfig すれば ppp 接続ができているはず。 (すこし時間がかかります。) 接続できていれば ping などで外部との接続を確認。 (もちろん、無線 LAN などは切った状態で)

サスペンドする度に bluetooth の再起動と pon をする必要があります。 今は他に設定したいこともあるので後回しですが、GUI ツールを探したいところです。

2009-09-22 追記

BT デバイスの pin コードの設定は以下の方法でも可能です。 Gnome に依存しない分、こちらの方が確実かもしれません。 Gnome に依存しない方法です。

ファイル /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/pincodes を作成し以下の内容を設定。 (XX:XX:XX:XX:XX:XX は NetWalker に接続した BT デバイスの BT アドレス。)

YY:YY:YY:YY:YY:YY 1234(改行で終わること)

ここで YY:YY:YY:YY:YY:YY は S21HT の BT アドレス。 1234 は pin コードの例です。

2009-11-15 追記

Nock Forager さんからコメントをいただいた sudo を使わずに pon について。 CUI が簡単。以下のコマンドを実行してログインしなおす。

$ sudo adduser username dip
GUI で設定したい場合は以下を実行してログインしなおします。
  1. システム → システム管理 → ユーザとグループ でユーザ管理を起動
  2. 下側にある「クリックして変更可能に」をクリック (パスワードを入力)
  3. 自分のユーザ名を選択して「プロパティ」
  4. ユーザの権限タブの「モデムを使ってインターネットに接続できる」をチェック

lactoria さんからコメントをいただいた pm-utils について。 いろいろ調べたりいじったりした結果

  • サスペンドの際には 00 → 99 と小さい方から実行される。
  • レジュームの際には 99 → 00 と大きい方から実行される。
  • /usr/lib/pm はパッケージが、/etc/pm はユーザが使う。
  • 所有権が root ではないファイルは実行されない。
  • 存在しないコマンドを使うスクリプトを置いておくと実行されない(止まる)。
といった動作をするようです。

現在は以下の二つのファイルを置いてサスペンド、レジュームを行っています。 ls -l filename でファイルの属性を確認し、 必要なら $ sudo chown root:root filename$ sudo chmod 755 filename で所有者の変更、実行権の付与を行います。

(/etc/pm/sleep.d/00-my-ppp) #!/bin/sh case "$1" in hibernate|suspend) if [ -f /var/run/ppp0.pid ]; then pid=`cat /var/run/ppp0.pid` provider=`ps $pid | grep pppd | awk '{print $7}'` poff $provider fi ;; thaw|resume) ;; esac

(/etc/pm/sleep.d/50-my-bluetooth) #!/bin/sh if [ ! -x /etc/init.d/bluetooth ]; then exit fi case "${1}" in suspend|hibernate) service bluetooth stop ;; resume|thaw) service bluetooth start ;; esac
/etc/init.d/bluetooth は標準では入っていないので念のため存在確認してます。

自動 poff (00-my-ppp) は poff せずにサスペンドしてしまった時のためのものです。 poff が終了しきる前にサスペンドしてしまうようであれば、 直後に sleep を入れるなどタイミングを考慮する必要があるかもしれません。

以下は過去の記録。

2009-09-24 追記

bluetooth デバイスを挿した状態でのサスペンド対策として

/usr/sbin/hciconfig hci0 down

を(自動で)実行する、という情報があります。これに加えて

/usr/sbin/hciconfig hci0 reset

も行なった方がいいかもしれません。 ある BT ドングルを挿して、次には別な BT ドングルをという時、これをやっておくとすんなり認識してくれる気がします。 サスペンドに限らず、BT を抜く時も実行した方がいいかも。

ただし、どのタイミングで、どの順番で、ということは検証していません。 そもそも気のせいかもしれません。

2009-09-30 追記

今は下の内容のファイルを /etc/acpi/suspend.d/ 以下に置いて運用してます。 reset の行は複数の BT ドングルを使うためのおまじないです。 (今のところ有効な気がする)

/usr/sbin/hciconfig hci0 reset /usr/sbin/hciconfig hci0 down
2009-10-01 追記

検索で辿りつく方がいるようなので細々と加筆修正。

2009-10-10 追記

今日はずっと外出していたのですが lactoria さんにいただいたコメントを元に暇をみてチェック。 教えていただいたように /usr/lib/pm-utils/sleep.d/ にスクリプトを置くのが正しいようです。 (サスペンドの際,touch でファイルを作らせたりして確認) 今からまた外出しなければならないので検証の続きは後で。

2009-10-11 追記

昨日 /usr/lib/pm-utils/sleep.d/ にスクリプトを置いていじってみた結果

  • サスペンドの際には 00 → 99 と小さい方から実行される。
  • レジュームの際には 99 → 00 と多きい方から実行される。
それと今回いじっていて気付いたのは
  • pon したままで bluetooth サービスをリスタートすると、次の pon でがうまくいかない。
いつも poff してたから気付かなかった。

とりあえず /usr/lib/pm-utils/sleep.d/ に 00my-ppp と 99my-bluetooth というファイルを作って実行権を付与($ sudo chmod 755 filename)。 それぞれ内容は以下の通りです。

#!/bin/sh case "$1" in hibernate|suspend) if [ -f /var/run/ppp0.pid ]; then pid=`cat /var/run/ppp0.pid` provider=`ps $pid | grep pppd | awk '{print $7}'` poff $provider fi ;; thaw|resume) ;; esac
#!/bin/sh case "$1" in hibernate|suspend) service bluetooth stop ;; thaw|resume) service bluetooth start ;; esac
これでしばらく使ってみます。 何で今まで動いていたんだろう…。

2009-10-17 追記

上記の設定 (プラス /etc/ppp/options で persist を有効化した状況) で一週間ほど使用して問題なし。 あと一ヶ月くらい試して問題なければ設定を本文に移動して、 膨れ上がった追記を整理するつもり。

タグ:Linux NetWalker
posted by 大津 at 14:41 | 記事 | Comment(4)
この記事へのコメント
うちのNetwalkerでも
ほぼ同じ手順でS12HTとDUNできてます!

ponがsudo必須になってしまっていたのが気持ち悪かったので
グループだけ修正して使っています。

やはりDUNで接続できるとベンリですよね〜。
Posted by Nock Forager at 2009年09月21日 06:53
ブログみせていただきました。
サスペンド対策、さっそく使わせていただきます。

> やはりDUNで接続できるとベンリですよね〜。

携帯電話側での操作が不要ですからね。
この一手間省略がやめられません。
Posted by 大津 at 2009年09月21日 08:55
はじめましてlactoriaと申します。
bluetoothのsuspend/resumeですが、同じ問題で悩んでいました。
どうも/etc/acpi/suspend.d以下はNetwalkerでは使われていない様な気がします。acpiじゃないですし....。
/usr/lib/pm-utils/sleep.d/以下に
40Netwalker-resume
60Netwalker-suspend
を作ってhciconfigのresetやdownを入れて試しています。/var/log/pm-suspend.logに結果がでるので確かにsuspend/resume時に実行されていますが....
確実に復帰できているかどうかはまだ検証不足なのですが、ご参考まで。
Posted by lactoria at 2009年10月10日 00:53
> acpiじゃないですし....。
そうなんですか。知りませんでした。

> /usr/lib/pm-utils/sleep.d/以下に
こんなところにも設定ファイル置場があるんですね。

さっそく試してみます。
情報ありがとうございました。
Posted by 大津 at 2009年10月10日 09:14
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。