Bluetoothでm-241を使う
「qgmapと仲間たち」で紹介したqgmapやZegaでGPSを使いたいと思い、以下の機器を購入した。
- Socket CF Bluetooth Card (Rev G+, Serial Type)
- PLANEX BT-MicroEDR2X (Bluetooth USB Adapter)
- HOLUX m-241 (Wireless GPS Logger)
Bluetoothスタックのインストール
さっそく、Zaurus(SL-C3000)のBluetoothスタックを検索したところ、Linux Kernel 2.4.20に合うものは以下のBlueZパッケージのようだ。
このBlueZを使用して色々と試して見たところ、次の問題点があることが分かった。
- スペシャルカーネル v18j(v17f以降)に既に含まれているBluetooth関連のカーネルモジュールが、パッケージのインストール時に上書きされてしまう。
- パッケージのインストール/アンインストール時に無条件でPCMCIAサービスの再起動(「/etc/rc.d/init.d/pcmcia restart」コマンドの実行)を行うため、CFスロットに何等かのカードが装着されていると、OSが不正に再起動されてしまう。
- 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-241でBluetooth接続を許可するように設定した上で、以下のコマンドを実行してGPSデータが表示されれば、m-241の設定は完了である。
# /etc/rc.d/init.d/bluetooth restart $ cat /dev/rfcomm0 $GPGGA, ... $GPGSA, ... $GPGSV, ... :
qgmapの設定と利用
Zegaの設定と利用
Zegaのインストールと地図データの設定は完了していることを前提とする。
設定ファイル「/home/zaurus/Setting/Zega.conf」を以下のように編集する。
※以下に記載のない項目はデフォルトのままで良い。
[GPS] devFile = /dev/rfcomm0 gpsOutput = WGS84 startGpsCommand = stopGpsCommand =
これ以降の手順は以下の通りである。
素敵なGPSライフを与えてくれた各位に感謝する。