Bluetoothでm-241を使う

qgmapと仲間たち」で紹介したqgmapZegaGPSを使いたいと思い、以下の機器を購入した。

Bluetoothスタックのインストール

さっそく、ZaurusSL-C3000)のBluetoothスタックを検索したところ、Linux Kernel 2.4.20に合うものは以下のBlueZパッケージのようだ。

このBlueZを使用して色々と試して見たところ、次の問題点があることが分かった。

  1. スペシャルカーネル v18j(v17f以降)に既に含まれているBluetooth関連のカーネルモジュールが、パッケージのインストール時に上書きされてしまう。
  2. パッケージのインストール/アンインストール時に無条件でPCMCIAサービスの再起動(「/etc/rc.d/init.d/pcmcia restart」コマンドの実行)を行うため、CFスロットに何等かのカードが装着されていると、OSが不正に再起動されてしまう。
  3. CFスロットを2つ持つモデル(SL-C3x00)に対応していないため、Socket CF Bluetooth Cardのための処理が動作しない。

これらの問題(特に1と2)を解決するために、パッケージの再構築を行った。

download:bluez-zaurus-c3x00-v17f_2.12-2.4.20-alpha4_arm.ipk

このパッケージのインストール後にBluetoothアダプタをZaurusに装着し、以下のコマンドを実行して、装着したBluetoothアダプタのBDアドレスが表示されれば問題はない。

$ hcitool dev
Devices:
        hci0    01:23:45:67:89:AB


なお、シリアルタイプのBluetoothカード(「cardctl ident 0」コマンドで「function: 2 (Serial)」と表示されるもの)の場合、そのカードを使用した後にモデムカード(例:WILLCOM AX420N)でダイヤルアップ接続を行い、再度Bluetoothカードを使用すると、ドライバの初期化(具体的にはhciattachコマンドによるhci_uartモジュールの起動)に失敗する。
この問題は電源ボタンをオフ→オンすることで回避できる。

また、CFカードは電源ボタンをオフ→オンするとサスペンドした状態となる(「cardctl status 0」コマンドで「suspend」と表示される)ので、その場合は「cardctl resume 0」コマンドでレジュームすることができる。


余談だが、他の多くのサイトでは以下のパッケージを使用して電源ボタンのオフ→オン(サスペンド→レジューム)に対応させるような記載があるが、今回は特に必要がなかった。

たぶん、同じOESFのサイトから入手できる以下のBlueZパッケージ(具体的には「/etc/pcmcia/bluetooth」)が、サスペンドとレジュームに対応していないためだと思われる。

m-241の設定と確認

以下のコマンドを実行して、m-241のBDアドレスを取得する。

$ hcitool scan
Scanning ...
        00:01:11:12:22:33       HOLUX_M-241


上記のBDアドレスを「/etc/bluetooth/rfcomm.conf」に記載する。

rfcomm0 {
        # Automatically bind the device at startup
        bind yes;

        # Bluetooth address of the device
        device 00:01:11:12:22:33;

        # RFCOMM channel for the connection
        channel 1;

        # Description of the connection
        comment "HOLUX_M-241";
}


もちろん、m-241Bluetooth接続を許可するように設定した上で、以下のコマンドを実行してGPSデータが表示されれば、m-241の設定は完了である。

# /etc/rc.d/init.d/bluetooth restart
$ cat /dev/rfcomm0
$GPGGA, ...
$GPGSA, ...
$GPGSV, ...
     :

qgmapの設定と利用

qgmapのインストールと地図データの設定は完了していることを前提とする。
以下の手順でGPSを設定し利用する。

  1. qgmapを実行する。
  2. メニュー →「GPS」→「Setting」を選択する。
    1. 先頭のドロップダウンで設定の保存先を選択する。
    2. 「Name」に「HOLUX m-241」などの任意のメニュー項目名を入力する。
    3. GPS Device」に「/dev/rfcomm0」を入力する。
    4. 「PreCommand」、「PostCommand」は空白にする。
    5. 「更新間隔」には1(秒)を入力する。
    6. 測地系」では「WGS84」を選択する。
    7. 「時差」では現地が日本ならば「UTC+9」を選択する。
    8. 「OK」ボタンを押下して設定内容を保存する。
  3. メニュー →「GPS」→設定したメニュー項目名を選択する。
  4. 'G'キーを押下してGPSの使用を開始する。
    1. 画面の右下に現在地点が表示され、画面の中央に矢印が出ることを確認する。
    2. GPSライフをエンジョイする (^o^)
    3. 再度'G'キーを押下してGPSの使用を終了する。

Zegaの設定と利用

Zegaのインストールと地図データの設定は完了していることを前提とする。
設定ファイル「/home/zaurus/Setting/Zega.conf」を以下のように編集する。
※以下に記載のない項目はデフォルトのままで良い。

[GPS]
devFile = /dev/rfcomm0
gpsOutput = WGS84
startGpsCommand = 
stopGpsCommand = 


これ以降の手順は以下の通りである。

  1. Zegaを実行する。
  2. メニュー →「GPS」→「Start GPS」を選択して、GPSの使用を開始する。
    1. 画面の右上に「GPS Info」が表示され、画面の中央に矢印が出ることを確認する。
    2. GPSライフをエンジョイする (^o^)
    3. メニュー →「GPS」→「Stop GPS」を選択して、GPSの使用を終了する。


素敵なGPSライフを与えてくれた各位に感謝する。