□JRC NNN-310TAとgpsdで遊んでみる(Vine5)
http://gazoo.com/G-BLOG/BlogTaikenshitemimas/111324/Article.aspx
http://gazoo.com/G-blog/BlogTaikenshitemimas/112857/Article.aspx
何年か前のハムフェアから数年にわたって、どこかのクラブブース(忘れた)
でJRCのCFスロットに挿すタイプのGPS(GPSTAR NNN-310TA)を売っていて、
これを何個も買って塩漬けにしておいた。
そのうち何かに使えるだろうと思ったらVine5で「gpsd」というそれっぽい
ソフトを見つけたので、いろいろ遊んでみることにする。
まずはgpsd関連のインストール。
> geoclue-gpsd – geoclue 用 gpsd プロバイダ
> gpsd – GPS にアクセスするためのサービスデーモン
> gpsd-clients – gpsd 用クライアント
> gpsd-devel – Client libraries in C and Python for talking to a running gpsd or GPS
> gypsy – A GPS multiplexing daemon
こんなにあるので、とりあえず以下のものをインストール。
apt-get -y install gpsd
apt-get -y install gpsd-clients
で、gpsdを動かすにはデバイスを指定しないといけないのだが、このJRCの
GPSカード(一応COM通信カードみたいな扱いらしい)を挿すとmessagesに
> Jan 26 21:58:36 localhost kernel: pccard: PCMCIA card inserted into slot 1
> Jan 26 21:58:36 localhost kernel: cs: memory probe 0xe8000000-0xefffffff: excluding 0xe8000000-0xefffffff
> Jan 26 21:58:36 localhost kernel: cs: memory probe 0xc0200000-0xcfffffff: excluding 0xc0200000-0xc11fffff 0xc1a00000-0xc21fffff 0xc2a00000-0xc31fffff 0xc3a00000-0xcc1fffff 0xcca00000-0xcd1fffff 0xcda00000-0xce1fffff 0xcea00000-0xcf1fffff 0xcfa00000-0xd01fffff
> Jan 26 21:58:36 localhost kernel: pcmcia: registering new device pcmcia1.0
と、こんな感じでメッセージが出たら、さくっとこのGPSカードの素性を見る。
> # pccardctl info
> PRODID_1=””
> PRODID_2=””
> PRODID_3=””
> PRODID_4=””
> MANFID=0000,0000
> FUNCID=255
> PRODID_1=”JRC”
> PRODID_2=”GPSCard”
> PRODID_3=”1.000″
> PRODID_4=””
> MANFID=0000,0000
> FUNCID=255
と、こんな感じでJRCのGPSCardだってことがわかる。
さて、こいつをVine5で…というよりもKernel2.6系で使うにはかなーり厄介。
とにもかくにもシリアルカードとして認識してもらわないといけないので、
モジュールを作り直さないといけない。
http://bird-memo.seesaa.net/category/805599-1.html
を参照して、とにかくシリアルカードとして認識してもらうために
emacs /usr/src/linux-2.6.27/drivers/serial/serial_cs.c
に、
> PCMCIA_DEVICE_PROD_ID123(“?????”, “?????”, “?????”, 0x?????, 0x?????, 0x?????),
というような行を追加する。
えー、?????に何を書いたらええねん?ということになるんですが、
GPSカードを挿した状態で
grep pcmcia `find / -name modalias`
とすると
> /sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.1/1.0/modalias:pcmcia:m0000c0000f00fn00pfn00pa1A5527EApb65F31EEApc0158AAF4pd00000000
というようにでてきます。
ここまで来ればしめたもの。pa、pb、pcの後のhashデータを拾ってきて、
> PCMCIA_DEVICE_PROD_ID123(“JRC”, “GPSCard”, “1.000”, 0x1A5527EA, 0x65F31EEA, 0x0158AAF4),
という風になるわけですな。
書き直したら
cd /usr/src/linux-2.6.27/
make modules modules_install
として、モジュールだけインストールしなおて、GPSカードを挿しなおしてみる。
うまく認識してくれれば、/var/log/messagesに
> Jan 27 22:53:40 localhost kernel: pccard: card ejected from slot 1
> Jan 27 22:53:43 localhost kernel: pccard: PCMCIA card inserted into slot 1
> Jan 27 22:53:43 localhost kernel: pcmcia: registering new device pcmcia1.0
> Jan 27 22:53:43 localhost kernel: 1.0: ttyS2 at I/O 0x3e8 (irq = 3) is a 16550A
みたいにして出る。(やったー)
で、このカードは垂れ流しのGPSカードなので、取り合えずそのデータを見てみることにする。
minicomとかでこのttyS2を「4800,8,N,1」でみてみると、
> $GPGSA,A,1,00,00,00,00,00,00,00,00,00,00,00,00,00.0,00.0,00.0*00
> $GPGSV,2,1,08,01,00,000,00,24,00,000,00,09,00,000,00,30,00,000,00*7F
> $GPGSV,2,2,08,10,00,000,00,08,00,000,00,22,00,000,00,15,00,000,00*7C
> $GPRMC,004938,V,3600.00000,N,13600.00000,E,000.0,000.,020100,,*3E
> $GPGGA,004939,3600.00000,N,13600.00000,E,0,0,00,+0050,M,+034,M,00,0000*59
> $GPGSA,A,1,00,00,00,00,00,00,00,00,00,00,00,00,00.0,00.0,00.0*00
> $GPGSV,2,1,08,01,00,000,00,24,00,000,00,09,00,000,00,30,00,000,00*7F
> $GPGSV,2,2,08,17,00,000,00,19,00,000,00,22,00,000,00,15,00,000,00*7B
> $GPRMC,004939,V,3600.00000,N,13600.00000,E,000.0,000.,020100,,*3F
> $GPGGA,004940,3600.00000,N,13600.00000,E,0,0,00,+0050,M,+034,M,00,0000*57
> $GPGSA,A,1,00,00,00,00,00,00,00,00,00,00,00,00,00.0,00.0,00.0*00
:
:
と、こんな感じでGPSデータが流れてきている。
さて、これをgpsdに取り込んでみよう。
gpsd /dev/ttyS2
としてgpsdを起動して、しばらく待ってからX-Windowを立ち上げて
telnet localhost gpsd
として、GPSカードがちゃんとGPS信号を拾えているかどうか確認。
DとかPとか打つと、信号が拾えていれば日時とか緯度経度が出てくる。
…うちでは受信できない。。・゜・(ノД`)・゜・。
…だったので、こんなの買ってきました。
ちゃらららっちゃらー、外付けGPSアンテナー♪ ちなみに製品精度がいまいちでコネクタが刺さりにくいが、刺さったらちゃんと使えます。
あとは
xgps
とか
gpsdrive
とかやってみるといいかも?
xgpsだとGPSを捕らえたらこんな風に見えます。
補足:gpsdriveのインストール
とりあえずstable版を取ってきてインストールしましょ。
mkdir /usr/src/package/
cd /usr/src/package/
wget http://www.gpsdrive.de/packages/gpsdrive-2.09.tar.gz
cd /usr/src/
tar xvzf ./package/gpsdrive-2.09.tar.gz
cd gpsdrive-2.09/
として、このままだとVine5ではgccが新しすぎて先に進めないので、強引に
emacs ./configure
として
> if $CC -dumpversion|egrep -q “^3\.*”; then
> echo “GCC ok”
> else
> echo “*****************************************”
> echo “You need a gcc >= 3.x!? to compile GpsDrive”
> echo “*****************************************”
> #exit
> fi
というように、gcc4でもexitせずに進むように修正して、
apt-get -y install pcre-devel
としてから、
./configure –disable-garmin
make
make install
今回ガーミンは使いませんので、オプションとしてはずします。
で、地図をダウンロードしてみると
なかなかすごいですなー。
補足:あれー、gpsdが落ちるようになっちゃった…
先日ぽちってIO-DATAのCFGPS2を落札したので差し替えて動作確認をしたあとに、またNNN-310TAに戻したら、なぜかgpsdが落ちるようになってしまった。さんざん悩んだけど結局判らなくて、gpsd-2.90をtarからインスコしました。そしたら問題なし。
なんだったんだろう!?!?(゜Д゜≡゜Д゜)?