ND-DC1,2をWindows10のWSLを使ってAPNを書き換えようと思ったけどできなかったのでVisual Boxを使ったっていうお話

##事の始まり
愛車に付けている「carrozzeria」のサイバーナビに付けている通信モジュール(ND-DC2)の有効期限が近づいてきたのでND-DC2のAPNを書き換えて格安SIMを差してそのまま使おうっていうお話です。

##キッカケ
新しく買い変えれば一番楽なのですが
1. 手元にiijのSIMが余っている
2. iijIoTSIMのサービスが始まったので買うよりめちゃくちゃ安く運用できる
3. Ubuntu or MAC環境があればAPNを書き換えてMVNOのSIMが使える
4. WSLのUbuntuでできるなら楽だよね感

##結論
ぶっちゃけてしまうとWSL上でできませんでした(ﾃﾍﾍﾟﾛ
でも大丈夫ですよ！ちゃんと書き換えられましたから！
じゃあどうやって書き込んだのかというとタイトルでバラしてますが「Virtual BOX」上にUbuntuを展開しその上でminicomを実行というちょっとややこしい内容です。

##お断り
・メーカーの保証外の事をやっているためあくまで**自己責任**でやってください。
・バージョン、環境によってはできない場合もあります。
・ナビの挙動として最初の1～2分ほどは通信できません。(原因不明、SIMの書き込み方によるもの？)
・↑そのままにしていると

##本文
*今回は成功例だけ載せていこうかと思います*

**1. 環境準備**
こちらの記事にまとめていますので、こちらを参考に準備してください。
[VirtualBoxにUbuntuをインストールしてみた](https://qiita.com/kasugoe_5151/items/9b28028a89084abbb0d0)

**2.Ubuntuの起動**
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/1ed98ebc-b9d2-6567-86c6-bac6f0050e2c.png)
インストールしたUbuntuをダブルクリックして起動させてください。

**2.minicomのインストール**
[Ctrl]＋[Alt]＋[T]の同時押しでコンソール(黒い画面)を開き`sudo apt-get install minicom`と入力し[Enter]を押して画面の文字の流れが完全に止まるまで待ちます。
※スクショ取り忘れました(汗

**3.通信モジュールの接続(認識)**
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/ab1cb56e-d3f3-3b07-97cd-7c4b0abf55b7.png)
「ND-DC1」又は「ND-DC2」を接続し[デバイス]→[USB]→[FOMA]の記載のあるデバイスをクリック(これはND-DC1接続時の名前です)

**4.minicomの起動**
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/56709bb0-c8bb-b740-fbe6-5b25d809e37b.png)
`sudo minicom -D /dev/ttyACM0`と入力し[Enter]を押します。

![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/de185e68-4548-51b3-d966-116d40b6caa0.png)
入力が合っているとパスワードを要求されますので、Ubuntuインストール時に入力したパスワードを入れて[Enter]を押します。
※入力しても画面に変化は無いので落ち着いて入力してください。

![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/40d28761-b543-d346-1526-ee4e8fa8ad1d.png)
パスワードも合っていると一瞬この画面になります。

**5.APNの書き込み**
![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/e99f9975-0570-66ba-7232-7626d6996706.png)
・minicomが起動するとこの画面になります。
※正しく接続できていると最後の行に"OK"の文字が表示されます。

![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/150b5226-ff5c-b644-d393-8522d0eedaeb.png)
・今回は手持ちの「iijmio」のSIMカードで通信するのでその設定を書き込みます。
・特に何も無ければ`AT+CGDCONT=5,"IP","iijmio.jp"`この文字をそのまま打ち最後に[Enter]を押してください。

※必ず連続で入力してください
※間違ったからといって[BackSpace]や方向キーを使っても消せません。最初から打ち直しです
※この通信モジュールは5つ？のAPNを設定でるみたいです。(試してないです)
※1番目は初期値が入っているので実質書き込めるのは4つ
※"="の後ろの数字を変えると書き込めるエリアを変更できます(2～5)
※他のMVNO SIMを使う場合は`iijmio.jp`この文字をそのMVNOのAPNに変えてください。
※この記事見てやりたくなってiijmioに契約する人はプロフィールにお友達紹介コード貼ってるので遠慮なく使ってください！(営業スマイル)

**6.APNの書き込み確認**
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/290310/68f45643-555f-4fa1-55c5-01ebca3d2580.png)
・成功すると"OK"の文字が出てきます。
・"ERRER"の文字が出たときは入力を間違っているので、打ち直しましょう。

※入力確認は`AT+CGDCONT?`入力後[Enter]を押すと確認できます。

**7.minicomの終了**
・入力が終わったら[Ctrl]＋[Z]→[Q]→[←]or[→]でYesを白く染める→[Enter]でminicomを終了します。
ターミナル起動時の画面になったのを確認したら通信モジュールを抜きます。
※またスクショ忘れた(汗汗

※正しく終了してから抜いてください！終了する前に抜くと通信モジュールが壊れる可能性があります！

**ナビに刺してモジュールの設定**
ナビの電源を入れて[メニュー]→[システム設定]→[通信モジュール設定]→[マニュアル設定]と進み以下の項目を入力してください。
「接続先名称」:好きな名前で構いません
「接続先電話番号」:`*99***5#`
「ID」：`mio@iij`
「パスワード」：無し！

※AVIC-ZH0099の場合です
※APNの入力を5番目以外にした方は"#"の前の"5"をその番号に書き換えてください
※あまり知られていませんが、実はiijmioはAPN設定でパスワード無くても通信できます(知ってる人どれくらいいるのかな？)

**通信確認**
入力が終わったら何でもいいのでインターネット接続が必要な操作をしてみてください。(おススメは天気予報)
正しく取得できたら達成感と感動を味わいます。(かなり感動する！)

※　お断りでも書きましたが、電源を入れて1～2分は通信できません。つまり最初のスマートループの情報取得は失敗します。
※↑[渋滞]ボタン長押しで強制取得するか、次の取得タイミングで取得してきます。

##まとめ
別に読まなくていいですが、ここまでで分かった事をまとめています。
・WSLはデバッグの効率化のために用意された環境なのでこういう事はまだ調整できてないのかな?(間違ってたらごめんなさい)
・ND-DC1,2はそもそもAPNを書き換えて使う事を前提に設計されていないので相性的にできなかったのかな？(VirtualBoxでできたのが気になるけど・・・)
・モジュール自体はWCDMA規格なので7Mbps(だっけか？)で通信できるけど、純正は遅くて格安SIM刺すと早くなるって事は純正は通信速度制限をかけているのが明確って事ですね！
・最初の1～2分は通信できないのは通信設備側かSIMの書き込みで何かが違うっていう事かな？(純正のゲートウェイ調べないとパイオニアさんがどういう契約しているのか分からないから調べようがない。)(MNOとMVNOでSIMへの書き込み内容が微妙に違かった気がするし、docomoとMVNOの共通区間の設備の挙動も違うらしいのでこの辺？)←設備の挙動についてはiijさんが調べてます！すごいためになるし面白い！
・一応DNS設定変えてもみたけど挙動に変化なし
・ナビに内蔵しろとは言わないけど純正でMVNOSIM使えるようにして！パイオニアさん！