私は、以前GPSとしてμpodを購入しました。そして最近(といっても多分二ヶ月ぐらい前)、EMOBILEのD01NXIIを購入しました。
上記二つに関して、気づいた点と相性について記述したいと思います。ただ、記憶を元に記述しているため、間違い等があるかもしれませんがご了承ください。
まずμpodについて気づいたことを記述したいと思います。
μpodをqgmapやZegaで使用したとき、Zegaのページを参考にさせていただきましたが、タイミングによって認識できたりできなかったりしました。
動作報告のあった機器 - Zega (A GPS navigation software for Zaurus)
http://www.h7.dion.ne.jp/~rasiel/zega.html#Reports
デバイスドライバについて詳しくないのですが、自分なりに調べたところ、usbcore, acm, usb_ohci_pxa27xあたりのモジュールをロードし直せば良さそうだったので、上記を行うシェルを作成して対応していました。
(このシェルは残っていません。結果的に下に記述するシェルに修正されました)
とりあえず、認識しないときは繋ぎ直したり、上記シェルを起動したりで対応していました。
次に、D01NXIIを購入したわけですが、これを使用しているとGPSが使用できないことに気づきました。
調べたところ、acmのモジュールをこちらも使用しており、また、D01NXIIのドライバをインストールすると、このファイルが更新されているようでした。そして、CFスロットにD01NXIIが刺さっていると、μpodを繋げてもうまく動作しないようになっていました。CFスロットにD01NXIIが刺さっていなければ問題有りません。
そのため、最終的に、GPSを使用するときは以下のシェルを実行することで対応することにしました。
#!/bin/bash
count=1
maxcount=$1
if [ "$maxcount" = "" ] ; then
maxcount=10
fi
read -t 1 LINE < /dev/ttyACM0
while [ "$LINE" = "" -a $count -le $maxcount ] ; do
echo "try $count"
sleep 1 ; sudo cardctl eject 0
sleep 1 ; sudo rmmod acm
sudo rmmod usb_ohci_pxa27x
sudo rmmod vmb_usb
sudo rmmod usbcore
sleep 5 ; sudo insmod usbcore
sleep 3 ; sudo insmod acm
sleep 2 ; sudo insmod usb_ohci_pxa27x
sleep 5 ; read -t 1 LINE < /dev/ttyACM0
count=$[$count+1]
done
if [ "$LINE" = "" ] ; then
echo fail
fi
しばらく経ってしまったため、どう調べたのか、どのサイトを参考にしたのか、よく覚えていません。
余談
これらを調査しているときに、「ls -l /dev/ttyACM0」で表示される「166 0」の数字の意味も調べたと思うのですが、よく覚えていません。
気づいたことは、常に記述していった方がいいなと思いました。
また、この記事を記述するにあたり、少しネットで検索していたのですが、もしかするともっとよい方法がありそうな気がしてきました。
(違うかもしれませんが、「depmod」コマンドとか、怪しい気が…と勝手に思っていたりします)
ただ、現状動作していますので、ちゃんと調べたりする機会は、あまりないような気もします。