Mictrack Personal GPS Trackcar MT825 を購入してみた

表題の通り、Mictrack Personal GPS Trackcar MT825 を購入してみた。

※この端末を購入しただけでは位置情報の確認はできません。位置情報送信用および確認用のサーバを別途契約するか、自前でサーバを立てる必要があります。

「え?どういう意味?」と思った方は、そっとこの記事を閉じてください。

———————–
子供が生まれて、著しい成長で歩けるようになり、コロナ禍の中でも運動させないわけにもいかず、外に散歩に連れて行くことも増えてきた。

もちろん親の目は光らせていて、1人で行動させることも目を離すこともないけど、将来に備え、万一、迷子になった時や、万々一の連れ去りなどが起きた場合にリアルタイムで追跡できるチャンスができるようにGPS Trackerの仕組みや特性の習熟を兼ねて、GPS Trackerを購入してテストしてみることにした。

同様の商用サービスは既に10年以上前から存在しており、最近は月額料金が500円程度で、位置情報の問い合わせ回数に制限がない安価なサービスも登場したので、個人で同様の環境を構築するメリットはそれほどない。

商用サービスは「みまもりGPS」などとして販売されているので、買って即座に使いたい方は以下のリンクをクリックしてググってください(ただのグーグル検索です)。

みまもりGPSのグーグル検索結果
https://www.google.com/search?q=%E3%81%BF%E3%81%BE%E3%82%82%E3%82%8AGPS&oq=%E3%81%BF%E3%81%BE%E3%82%82%E3%82%8AGPS&aqs=chrome..69i57j69i65.1759j0j7&sourceid=chrome&ie=UTF-8

——————–

さて、ここから。
実際に購入したのはMictrack MT825という機種。
Mictrack(深圳市麦尔锡电子有限公司)という中国企業が開発製造している模様。

子供が持つに適した小型サイズで、日本の携帯電話のバンドにも対応しており、通信モジュールも日本で技適を取得しているQUECTEL BG96を使用していたため選択。

MT825の中に使われている通信モジュールQUECTEL BG96は以下のバンドを使用するLTE Cat.M1およびNB-IoTでの接続に対応している。

QUECTEL BG96(英語)
https://www.quectel.com/product/bg96.htm
http://archive.md/wip/xRLGC (消えた場合の予備)
LTE FDD: B1/ B2/ B3/ B4/ B5/ B8/ B12/ B13/ B18/
B19/ B20/ B25①/ B26*/ B28

LTE TDD: B39 (for Cat M1 only)
EGPRS: 850/900/1800/1900 MHz

一応、LTE FDDでの接続は日本の主要4キャリアに対応しているように見えるが、後述の通り、実際に接続するとなるとつながらないことがある。

これは契約の内容によるのか、基地局側やキャリア側の設定の問題なのか、MVNOだからなのかは未調査のため不明(これだけのために全回線を契約する理由もなく)。

各大手キャリアのIoT機器動作確認情報のサイトではBG96自体は動作確認リストに入ってることが多いので、契約内容によりCat.M1やNB-IoTでの接続を規制してるのかもしれない。

今のところ、結果的につながったのは日本通信のb-mobile 190PadSIMのソフトバンク回線のみ。so-netのnuro 0SIM(SMS契約なし)とIIJmioの音声SMS付き回線(いずれもドコモ)では接続できず。
楽天もau(楽天のローミングでテスト)も接続できず。

※ちなみに、NTTドコモ自体はNB-IoT方式による接続は2020年3月31日にサービスを終了している(Cat.M1は継続)。元々はドコモ回線でもテストするつもりでいたのだが、商品が発送されて2日くらいでこの発表を見たので悲しくなったが、まあ仕方ない

当方の環境ではBG96からは楽天モバイル(44011?)以外の各キャリアに割り当てられたMCC、MNCが見えたので、いずれの電波も見えているように見えたが、SIMの契約や基地局側またはキャリア側が許可しているかどうかでつながるかどうかが決まるっぽい。
(各キャリアのMVNOでない回線は契約を持っていないので未テスト)

最初にIIJmioとso-net 0SIMのいずれもドコモ回線のMVNOで試したところ全くつながらず・・・。先達の情報をもとに、確実につながりそうな190PadSIMを契約してみたところ、多少の試行錯誤はあったがつながった。
同190PadSIMのソフトバンク回線はSMS契約はつけられないので、SMS契約なしだが問題なくつながっている。

位置情報送信先のサーバはテスト運用的に自前で立てているTraccarサーバをOrange Pi Oneというシングルボードコンピュータにarmbianを入れてSSD上で運用している。

Traccarサーバ環境の構築については以下の情報を参照。
2018年02月23日
Mictrack MT500-GとTraccarでGPSトラッキングシステムを構築(2018年2月版)
https://minkara.carview.co.jp/userid/2763663/blog/41137326/
http://archive.md/wip/iLLIJ

Mictrackの製品はすでに以前から使っており、Mictrack MT500-Gというのを車に車載して使用しているため、位置情報管理用サーバ環境をそのまま使えるだろうという思惑もあった。
(ちなみに、MT500-Gは通信モジュールとしてQUECTEL UC20-Gを使用しており、同様に技適ありである)

話を戻すと、MT825について。
上にSMS契約について書いたが、SMS契約があると分解せずにSMSで接続先サーバの設定変更が行えるので、送信先のサーバが落ちた時にすぐに(別のサーバを契約する等用意していれば)別のサーバに切り替えられて便利であるが、MT825の使用そのものはSMS契約がなくても使用できている。

ただ、少なくともソフトバンクでの運用に関しては最初の設定の時にどちらにしても分解して、MT825付属のUSB-シリアル通信ケーブルでBG96に直接ATコマンドを送って初期設定しないと使えないかもしれない(というか、当方の環境ではそうだった。直前までいろいろと設定をいじっていたせいもあるかも・・・)。

BG96用のATコマンドセットについては、QUECTELのサイトや同社のモジュールを販売しているベンダーのサイト等で公開されているものを使用した。

Quectel_BG96_AT_Commands_Manual
Quectel_BG96_GNSS_AGPS_AT_Commands_Manual
Quectel_BG96_LPWA_Specification
Quectel_BG96_TCP(IP)_AT_Commands_Manual

などでグーグル検索すると出てくると思う。

また、MT825のマニュアルに記載されているコマンドだけでは、日本ではうまく使えない可能性がある。

詳しい設定は写真の後に書くとして以下、軽く写真で紹介する。

MT825の同梱品。白いのは充電ケーブルで充電は磁石式の円形の独自ケーブルで行う。
黒いのはUSB-シリアル変換ケーブルで、MT825の細かい設定をした場合やSMS契約がない場合に使用する。

bsizeのGPS BoTとの大きさ比較。
右がMT825、左がbsizeのGPS BoT(ジャンク品を買ったもの)。
写真だけ見るとGPS BoTは大きく見えるが、MT825が小さいだけで両方ともとても小さい。
GPS BoTでも1辺が単三乾電池よりちょい短いサイズである。
GPS BoTの蓋が浮いてるのは既に分解してるため。

MT825のSIM部分を保護するシリコンゴムの枠を外すと、SIMカードスロットにアクセスできる。SIMサイズはnano SIMで、押し込むとカチッっというタイプ。

SIMスロットの反対側にはストラップ穴がある。
底面の窪みがネジ穴で特に隠されてはいない。
奥にうっすらと充電端子が見える。

MT825のガワを開けた状態。
ネジ4本でとまってるだけなので簡単に開けられる。
一応、ケースの黒いのはゴムの枠で水滴くらいは防げそう。
一応、公式サイトのスペックではIP65になっているが微妙な感じだが、雨くらいは防げそう(豪雨でびちゃびちゃは無理そう)。
左の大きめの銀色がQUECTEL BG96のチップ部分。
右側の赤黒の線でつながっているのはリチウムポリマー電池で、680mAhでGPS BoTの800mAhより小さいが、LTE Cat.M1で通信すると、消費電力が小さいのですぐになくなる感じではない。
現在、まだテスト中であとで追記するかも。

MT825付属のUSB-シリアル通信ケーブルをつないだ様子。
PL2303を使ったものがついてくるが、Windows10では素直に認識せず古いドライバーが必要でちょっと癖があるかも。

シリアル通信用のピンは間隔がせまいだけでケーブルを自作すれば普通に他のでも行けると思う。
左の電池の右に2つの金色の端子が見えるが、ケースを開けた時にもし充電ケーブルをつないだままにしてても充電池に電気が供給されないようにするためと、磁力でついたネジなどで本体側端子がショートしないようにする構造と思われる。

一度、本体を開けた時に半分外したネジが机に落ちた瞬間に充電端子の磁力に吸い寄せられてカチッとくっついてしまい「やばっ!」と思ったが、この構造のおかげで大丈夫だった。磁力でくっつく端子は充電時の利便性は高いが微妙。
Mictrackの公式サイトではIP65をうたってるけど、この構造だと、濡れた時にショートしないんだろうか・・・。
まあ、その辺は中国企業なので妥協。
個人的にも中国ではガス、電気、水などは漏れるものであり、そういうものを漏れないように作れるとかは期待してない(漏電、ガス漏れ、水漏れなどで何度も痛い目、危ないめにあってるため)。

BG96が載ってるメインボードのちょうど裏側の写真。
STM32Lなどが載っている。
他はよくわからず。もし壊れてジャンク化したらはがしてみるかも。
まだ使うので・・・。

—————————-
以下、MT825にb-mobile 190PadSIMを挿して接続するまでの設定。
行っている内容は当方が必ずしも全て意味をわかってやってるわけではないので、微笑ましい記述があってもスルー願います。

※すでにPC等とMT825をUSB-シリアル変換ケーブルで接続してる前提で。

TeraTermの設定。
接続ソフトはTeraTermを以下の設定で使用。
・設定→端末で、
 改行コード:送信/受信とも CR+LF。
 ローカルエコー:チェック(あり)。
・設定→シリアルポート
ポート:デバイスマネージャ等で確認して、USB-シリアル変換ケーブルに割り当てられたポート番号。
(当方の場合は、COM3、COM4、COM5のいずれかだった)
フロー制御:なし。
接続速度は115200bpsで。

※フロー制御あり(Xon/Xoff、ソフトウェア制御等)でもつながる感じだけど、一応、Mictrackの推奨が”なし”のようなので。

MT825に接続できたら、以下を順に行っていく。
ちなみに、MT825はcmdで始まる命令を送ってやりとりするインタフェースの方での設定で記憶する値とBG96に対してATコマンドを送って直に設定した値が違うことがあるので注意(この辺の内部がどうなってるか、よくわからず。時間があればメーカに聞くけど)。

「※」の部分はその前後のコマンドの説明やメモ。

※MT825の現在の設定の確認。
cmd:rconf,1#
※現在、受信できるキャリアからの電波をサーチ。表示まで数十秒程度の時間がかかる。
※APN等を設定していなくても、たぶんSIMがささっていれば電波は見える模様。
AT+COPS=?
※APNなどの情報を書き込み。認証はCHAP(CHAPの場合、最後の数字は2、使用するSIMで必要な設定に合わせる。例:PAP(1)、PAP or CHAP(3)、NONE(0)など)。
AT+QICSGP=1,1,”sb.mvno”,”bmobile@4g”,”bmobile”,2
※ネットワークを44020(ソフトバンク網)、接続方法をLTE Cat.M1に固定(最後の8)、NB-IoT(LTE Cat NB1)なら最後の数字が9になる。
AT+COPS=1,2,”44020″,8
↑※上記、設定の注意点1。AUTO設定もあるがうまくつながらない。
↑※上記、設定の注意点2。当方の環境(都内)だとBG96からはソフトバンク網だけCat.M1とNB-IoTの両方が見えるので、Cat.M1に固定(NB-IoTでも接続できそうだが、NB-IoTはハンドオーバーができない仕様とのことで、完全に徒歩ならまだしも、車での移動も考慮した場合はCat.M1の方がよりうまく機能しそうなので、Cat.M1を固定的に選択している)。
BG96 日本のソフトバンク回線での設定
※Set Phone Functionality:Full functionality (Default)
※0:無線OFF、1:無線ON。設定前に無線オフ。

※0で無線OFFとあるが、実行するとSIMカードへの接続が切れる模様。
※設定が終わったら、1にしてSIMカードとの接続を有効にする。
at+cfun=0
※Configure RAT(s) to be Searched: Search LTE only
※BG96が対応しているネットワークのうちLTE網だけを固定的にサーチする設定。
at+qcfg=”nwscanmode”,3,1
※Configure RAT Searching Sequence:LTE網のうち、Cat.M1で接続できる電波のみサーチ。

at+qcfg=”nwscanseq”,02,1
(補足:もし、NB-IoTの電波をサーチするなら、at+qcfg=”nwscanseq”,020302,1とかになる。BG96のATコマンドのまにゅあるを参照。020302とかは、サーチする信号のサーチ順の記述らしい。020302だと、Cat.M1をサーチし、NB-IoTをサーチ、またCat.M1をサーチ・・)
※Configure Network Category to be Searched under LTE RAT: Cat.M1のみサーチ 
at+qcfg=”iotopmode”,0,1
※Service Domain Configuration:パケット交換のみなので「1」
at+qcfg=”servicedomain”,1,1
※Roam Service Configuration:ローミングを使うか.オート(255)、Enable(2)、Diable(1)。
※この設定はオート(255)設定でうまくいっている。
at+qcfg=”roamservice”,255,1
※Band Configuration:gsmbandval(GSM網のバンド設定)特に使わないので、0(使用しない)。
※catm1bandval(CatM1、かつ、サーチするバンド範囲)を設定。
※以下、すべてのバンドをサーチする設定。
at+qcfg=”band”,0,400A0E189F,0,1
(補足。上記は、BG96用のATコマンドのマニュアルを見た方がいいと思う。各バンドを表す16進数を足した数字を設定するっぽい。BG96でサーチできる全バンドを足し合わせると「400A0E189F」(0x400A0E189F。0xは省く)。
※設定が終わったらSIMカードを有効にして無線接続できるようにする。
at+cfun=1
※Operator Selection
※ソフトバンク(44020)を選択。
at+cops=1,2,”44020″,8
※現在接続できているキャリアのネットワークを表示。
AT+QNWINFO
※現在、本当に接続できているか確認(上の方とATコマンドが似てるが、?の前に=イコールが入ってるか入ってないかでコマンドの内容が違う)
AT+COPS?
(補足。つながっていると、+COPS: 1,0,”SoftBank SoftBankと表示されるが、つながってないと「+COPS: 1」だけ返ってくる。)
※接続できている場合の電波強度を確認する。単に電波が弱いのか、本当に接続できているのかを検証する時にも使える。
AT+CSQ
(補足。つながってると、+CSQ: 25,99とかになり、受信できてないと返り値が+CSQ: 99,99になる)

以上で当方の環境は、b-mobile 190PadSIMのソフトバンク回線で接続できている。
その他の便利なコマンド。
※Traccarサーバとの間で通信がうまくいっているか検証する時に、30秒おきに起動して電池を節約するモードになってたりすると無駄に待つことになるので、パワーセーブモードオフの設定。オンにしたい場合は、BG96のATコマンドを見るか、MT825からcmdで始る設定が、MT825のマニュアルに記載がある。ただし、パワーセーブをオフにすると比較的早く電池がなくなるかも。
AT+CPSMS=0
その他の注意点。
MT825のインタフェース側からcmdなんたらでAPNなどのコマンドを送る場合、Mictrackの過去の端末と同じく”@”など記号の処理に問題があり、うまくいかない場合がある。
これはおそらく海外のキャリアのAPNでは”@”を使用している例が少ないため、検証できていないのではないかと思われる。

例えば、USB-シリアル変換ケーブルでMT825と直接接続をしている場合に、MT825側のインタフェース側のコマンド形式を使うと以下のような時に問題が出る。
「cmd:apn,sb.mvno,bmobile@4g,bmobile#」だとダメで接続できない感じ。おそらく「@」(半角)マークが問題になってる。

cmd:apn,sb.mvno,bmobile0x404g,bmobile#

という風に、「@」をアスキーコード 0x40に置き換えるとつながる。
まだテストできていないが、過去のMictrackの端末の事例から、SMSから設定を送る場合も同様に@を変換して送らないとうまく設定できない可能性がある。
BG96に対してATコマンドで直に設定した場合は、この限りではなく、””で囲むことで「@」は入力したままで設定できている。

↑この部分を訂正します(2020/08/05)。
念のため、Mictrackにメールを送って確認したところ「@」の処理問題は最近の機器はもちろん、古い機器でも新しいファームウェアバージョンでは修正したとのこと。
そのメールをもらってから、再度検証したところ普通に@を使っているAPNも問題なく動きましたorz
どうも複数の回線でもつながらず、ATコマンドでいろいろやっているうちに混乱して適当なことを書いてしまったようです。訂正します。
ここから下も修正しました。
※BG96に設定されているAPN設定を見る(1~4の4つくらいまで設定できるっぽい?)。
※1番目に記録されている設定を見る。
AT+QICSGP=1
以上を実行すると、
AT+QICSGP=1,1,”sb.mvno”,”bmobile@4g”,”bmobile”,2
などと表示される。

ただ、当方の環境だと、cmdから始まるMT825のマニュアルにあるコマンドを使用してAPN等を設定した場合、BG96側に記録された設定をATコマンドで確認してみると、
上記の最後の数字が「0」NONE:認証なしになっていることがあった。
「0」のNONE:認証なしだとつながらないので、ソフトバンク網を使用する場合は「2」(CHAP認証)にする。
この辺、ちょっと癖がある。

ただ、これより前に他のSIMでつながらない時に試行錯誤していて、一旦、AT&FでBG96の設定を初期値に戻しているため購入時のままだと、うまく設定できるかもしれない。
(AT&Fをした時の初期設定はQUECTEL BG96用ATコマンドのPDFのどれかに書いてあった)
しかし、確実に設定したい場合は、cmdでも設定した後に、ATコマンドで設定を確認するかした方がよさそう。
MT825の再起動時にcmdで送った設定(cmd:rconf,1#で見れる設定)と、ATコマンドのどっちの設定が優先されるのかわからなかったため、当方の場合、両方で同じ設定になるように念のため設定している。
ここまで設定して、ソフトバンク網のCat.M1で接続できている場合、pingなどで位置情報サーバまでのpingなどが可能になる。
※BG96から任意のサーバにping
AT+QPING=1,”8.8.8.8″,1,10
以上で任意のサーバにはつながるはず。上の例はグーグルが公開しているパブリックDNSサーバのアドレス8.8.8.8にpingしている。

この他にも実際のサーバにつなぐには、位置情報送信先のサーバ等の設定に合わせて、UDPやTCPで送るかなどは設定が必要。
当方の場合、TraccarサーバにはUDP(ACKなし)でうまくつながっている。
※当然、自前のサーバの場合、サーバおよびルータ側もUDPならUDPのパケットを位置情報管理サーバまで通すように設定が必要。
———————————–
以下、試行錯誤中で怪しげな雑多なメモ。
上述のとおり、MT825で携帯電話のネットワークに接続できた後に、pingを送るATコマンドを実行して、pingが到達するかなどを確認できるのだが、
AT+QPING=1,”google.com”,1,10
などとすると名前解決できてないっぽく、うまくpingできない。
別途手動でDNSを設定する必要があるのか?と思って、
AT+QIDNSCFG=1
でBG96に登録されているDNSの設定を見ると、

15:41:30 UI : UI Recv:AT+QIDNSCFG=1
,Len:14
15:41:30 UI :
+QIDNSCFG: 1,”223.25.162.10″,”223.25.162.9″
などと返ってきて設定できているように見える。
さらに、手動でDNSを設定しようと試みて、
AT+QIDNSCFGで8.8.8.8、8.8.4.4
などとしてもエラーが返ってきて反映されてないっぽい。この辺の動作は怪しげ。
つぎに、以下のサイトを参考に、MS-Based GPSのテストをして、A-GPSを使いたかったが、Cat.M1だと失敗した。
https://www.wdic.org/w/WDIC/MS-Based%20GPS
http://www.noomio.com.au/wiki/bg96/bg96-gnss-example-using-a-gps-google-supl-server/
→結果:失敗。SUPLサーバなどを書き込むコマンドで504エラー。
 NB-IoTじゃないとダメ?時間不足で未テスト。

A-GPSを使うと、最初に携帯電話のネットワークにつないだ時に、基地局の情報から位置情報を取得してそれを自分の位置情報として反映させるため、ヌル島(緯度、経度ゼロのポイント)に飛ばされることがなくなるはず・・・と思ったのだが、どうも自分の環境では使えないっぽい。

—————————————
以下は付録・・・的な何か。
MT825で使えるコマンド一覧。
#STEP 1 – Setup APN(b-mobile 190PadSIMの場合の設定。各SIMに合わせて設定)
cmd:apn,sb.mvno,bmobile@4g,bmobile#
#STEP 2 – Setup IP/Port(位置情報を送るサーバのURLやIPアドレスおよびポート番号設定)。
cmd:data,IPアドレスまたはURL:ポート番号#
#STEP 3 – Setup Network(MT825..つまりBG96から接続する場合の設定。Cat.M1かその他か)
#CAT M1 Only
cmd:netlock,2,3,0#
#NB-IoT Only
cmd:netlock,3,3,1#
#GSM Only
cmd:netlock,1,1,2#
#AUTO
cmd:netlock,0,0,2#
#STEP 4 – Setup Work Mode(パワーセーブなど動作モード。マニュアルを参照。)
#Mode 0
cmd:mode,0,10#
#Mode 1
cmd:mode,1,10#
#Mode 5
cmd:mode,5,10#
#Mode 6
cmd:mode,6,30#
#Mode 7
cmd:mode,7,10#
#System Commands:(BG96のログ表示のON/OFF)
#Logprint ON
cmd:logprint,1#
#Logprint OFF
cmd:logprint,0#
#Read Config(MT825に設定されている内容を確認)
cmd:rconf,1#
#Restart(MT825を再起動)
cmd:reboot,0#
#FactoryReset(MT825を初期値に戻す。サーバなどの設定がMictrackのサーバに接続する戻る。AT&Fで戻る値とは別の模様。ややこしい。)
cmd:factoryreset,1#
#Protocol Setting(サーバに位置情報を送る時のプロトコルUDPかTCPかACKありなしなど。サーバ側に合わせる必要があるが、Mictrackの人がTraccarサーバの掲示板に書いていた情報では、Cat.M1での接続の場合、UDPを使う必要がある模様。理由は不明。)
#UDP(NO ACK)
cmd:protocol,0,0#
#UDP(With ACK)
cmd:protocol,0,1#
#TCP(NO ACK)
cmd:protocol,1,0#
#TCP(With ACK)
cmd:protocol,1,1#
#Check network(現在、接続できているネットワークの確認)
AT+QNWINFO