GPSDのインストール

以下に、GPSモジュールの利用に有効なGPSDサービスプログラムおよびGPS関連のユーティリティプログラムのパッケージインストール手順を示す。

0.準備作業として、前提となるGPSモジュールを接続してシリアルポートの信号受信を確認
1)シリアルポートのデバイスファイルの確認

 pi@raspberrypi:/boot $ ls -l /dev/* |grep serial
 lrwxrwxrwx 1 root root 5 Jan 3 00:52 /dev/serial0 -> ttyS0
 lrwxrwxrwx 1 root root 7 Jan 3 00:52 /dev/serial1 -> ttyAMA0
 pi@raspberrypi:/boot $

2)シリアルポートの設定確認

# vi /boot/cmdline.txt
 dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
 # vi /boot/config.txt
 enable_uart=1

3)以上から、下記コマンドを実行して、シリアルポートの信号受信を確認。

 $ sudo cat /dev/serial0
 <出力内容は省略するが、NMEAフォーマットのデータが表示されることを確認>

※NMEAフォーマットデータについては、こちらを参照のこと。

以上、GPSモジュールが接続され正しく動作し、その出力がラズパイに届いていることを確認できたら、ここから本題のGPSDの導入作業に移る。

1.GPSモジュールを接続したラズパイにて下記コマンドを実行して、gpsd及びそのクライアントパッケージをインストールする。

pi@raspberrypi:/boot $ sudo apt-get install gpsd gpsd-clients
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 The following extra packages will be installed:
 libgps21 python-gps
 The following NEW packages will be installed:
 gpsd gpsd-clients libgps21 python-gps
 0 upgraded, 4 newly installed, 0 to remove and 11 not upgraded.
 Need to get 524 kB of archives.
 After this operation, 1,079 kB of additional disk space will be used.
 Do you want to continue? [Y/n] Y
 Get:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libgps21 armhf 3.11-3 [208 kB]
 Get:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main gpsd armhf 3.11-3 [93.4 kB]
・・・・・・・

<一部省略>
・・・・・・・
 Setting up gpsd-clients (3.11-3) ...
 Processing triggers for libc-bin (2.19-18+deb8u10) ...
 Processing triggers for systemd (215-17+deb8u7) ...
 pi@raspberrypi:/boot $

2.インストール直後にプロセスが上がるとのことなので、確認する。

pi@raspberrypi:/boot $ ps aux|grep gps
 gpsd 2572 0.0 0.7 13924 7204 ? S<s 22:09 0:00 /usr/sbin/gpsd -N

3.これを以下の手順で停止させる。
1)サービス名の確認と停止

# systemctl --all | grep gps
 gpsd.service loaded active running GPS (Global Positioning System) Daemon
 gpsd.socket loaded active running GPS (Global Positioning System) Daemon Sockets
# service gpsd stop

2)Defaultサービスのスタートアップ無効化

root@raspberrypi:~# systemctl disable gpsd.socket
Removed symlink /etc/systemd/system/sockets.target.wants/gpsd.socket.
root@raspberrypi:~#

4.スタートアップスクリプト/etc/default/gpsdにて、下記の通り追加修正する。

USBAUTO=”true”   =>"false"に変更

DEVICES=""      =>”/dev/serial0”に変更
 GPSD_OPTIONS=""   =>"-n"に変更
 

下記の一文を追加

GPSD_SOCKET=/var/run/gpsd.sock"

5.GPSDデーモンを起動させる。(上記設定の確認も含めて)

# service gpsd start
# ps -ef|grep gps
gpsd 2671 1 3 19:54 ? 00:00:00 /usr/sbin/gpsd -N -n /dev/serial0

参考)GPSD起動中にpsコマンドでプロセスを確認すると、上記ファイル内のGPSD_OPTIONSの値に記述されていないくても、デフォルトでgpsdのオプションとして”-N”が指定されているが、これは /lib/systemd/system/gpsd.service内にて、記述されているためである。

6.gpsmonを実行して動作確認を図る。

$> sudo gpsmon

[q]<RET>で、CUI画面を終了させることができる。

7.GPSDデーモンのスタートアップ起動の有効化

$ sudo insserv -d gpsd
または
$ sudo systemctl enable gpsd
Synchronizing state for gpsd.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d gpsd defaults
Executing /usr/sbin/update-rc.d gpsd enable
Created symlink from /etc/systemd/system/sockets.target.wants/gpsd.socket to /lib/systemd/system/gpsd.socket.
$
本来なら、上記のいずれかでスタートアップが有効になるはずだが、
下記のコマンドを実施しないと、OS起動時に自動起動してくれない。
$ sudo ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/

以上により、端末起動後、GPSDからGPSモジュールの測位データをいつでも取得できる状態となった。

以上

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です