Stretch 版 4GPi のイメージから Buster へのアップグレード

# はじめに
## 概要
本記事で以下2つを検証しました。

**①4GPiと格安SIMでラズパイをインターネット接続
②Stretch版4GPiのイメージからBuster版へアップグレード**

##4GPiとは？

今回使用したのは
メカトラックス様の[ラズベリーパイ用4G(LTE)通信モジュール「4GPi」](https://mechatrax.com/products/4gpi/)。

4GPiの機器は提供して頂きました。本当にありがとうございます。。。

##4GPiを使うメリット
ラズパイのインターネット環境は有線やWifiを使用している方が多いと思います。
しかし、その方法ですと線をつなぐ必要があったり、Wifiの電波が届く範囲でしか
活用できません。

そこで、**4GPiの出番**です。

なんと、4GPiをラズパイに取り付けるとスマホと同じように
**SIMを入れてどこでもインターネットを活用できる**のです。

用途は、リアルタイム性を求めたり、観測地が変わるデータ収集などが特に適していると考えられます。

使い方の一例ですが、
リアルタイムのドライブレコーダーも作成できます。

最近よく、お年寄りの危険運転がメディアで取り上げられています。
私の両親はもう60,70代と運転が心配です。

しかし、両親共に遠方に住んでいてどのように運転しているか分からず、
両親に聞いたとしても主観的な意見しか手に入りません。

そこで4GPi+ラズパイを使用すれば運転を
**リアルタイムでストリーミング再生できるドライブレコーダーにもなります**。

もちろん、録画もできるのでいつでも運転の動画を確認できます。

他にも用途は様々ありますが、長くなるので今回は省略いたします。

それでは早速4GPiを使っていきましょう！

##必要な物

◎ **[ラズベリーパイ用4G(LTE)通信モジュール「4GPi」](https://mechatrax.com/mtx-onlineshop/)**

　[スイッチサイエンス](https://www.switch-science.com/catalog/4072/)からも購入できます。
　今回メカトラックス様から提供して頂きました。

　内容物は以下です。(参考：https://mechatrax.com/products/4gpi/)

　●4GPi × 1個
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/a9cd8a9b-eab3-5299-eb4a-39aba2c8684d.png)

　●4G アンテナ × 2本
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/89cdb347-8659-6e14-8711-55a77d1a7eb0.png)

　●DCジャック - XHP-2コネクタ変換ハーネス × 1本
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/89e01abe-3005-73d8-a597-030eb640a994.png)

　●USB-A オス - USBmini-b オスケーブル × 1本
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/fdbd7a55-218b-c65c-799c-c345aaa7bcf9.png)

　●基板固定用六角スペーサ（M2.6）セット × 4セット
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/aa03fd22-f343-19da-008a-b39dddaecbbd.png)


◎ **[ACアダプタ(12V 2A)](https://www.monotaro.com/p/5839/3264/?utm_medium=cpc&utm_source=Adwords&gclid=Cj0KCQjws7TqBRDgARIsAAHLHP5A6AusLIzS67dMMZEzhMMoy1qITEPd2eQJI98y3KvLouh66deip-AaAltgEALw_wcB)**

　ACアダプタは4GPiに接続します。
　ピンソケット経由してラズパイへ電源供給する仕組みです。



**◎ 標準SIM**

　私は標準SIMを持っていなかったので、スマホで利用している"NanoSIM"と
　"NanoSIMから標準SIMに変換するアダプタ"で対応しました。
　
　1. NanoSIM：[格安SIM Y!Moblie](https://www.ymobile.jp/)
　2. 変換アダプタ：[mobee Nano SIM MicroSIM 変換アダプタ](https://amzn.to/2XP5aGV)

　対応可能なSIMについては公式サイトに記載がありました。
> ドコモ、au、softbankのキャリアIOT（inter-operability testing：相互接続性試験）については現在実施中で、各キャリアから直接入手されたSIMは接続出来ない場合がありますので、ご注意ください（各キャリアネットワークを使用したMVNOであれば基本的に接続可能です）。

　参考：https://mechatrax.com/faq/#faq-4gpi3
　補足：[標準SIM・NanoSIMのサイズ規格はこちら](https://mobareco.jp/wp/wp-content/uploads/2018/07/p14209902.jpg)

◎ **[ラズパイ](https://amzn.to/3gizWyg)**

　Raspberry Pi3 ModelB+を使用しました。

◎ **パソコン**

　OSをラズパイにインストールするのに必要です。

◎ **MicroSDカード**

　ラズパイのOSを格納する用に必要です。
　私は32Gの容量のSDカードを使用しました。

◎ **ディスプレイ(+HDMIケーブル)**

　ラズパイを表示するのに必要です。

◎ **キーボード**

　ラズパイを操作するのに必要です。

# ①4GPiと格安SIMでラズパイをインターネット接続
## 4GPiインストール済のStretch版イメージをダウンロード

以下のzipファイルをパソコンにダウンロードしましょう。

イメージ：https://mechatrax.com/data/4gpi/4gpi-stretch-lite-20190419.zip


## OSイメージをMicroSDカードへ書き込み

zipファイルのままMicoSDカードにコピーしただけではラズパイはOSを読み込むことができません。
ラズパイが読み取れるように書き込みソフトを利用しましょう。

今回は有名な書き込みソフト「Etcher」を使用しました。
書き込み手順は[こちら](https://azriton.github.io/2017/11/12/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%81%AEOS%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E7%84%BC%E3%81%8F%E3%81%A8%E3%81%8D%E3%81%AFEtcher%E3%81%8C%E4%BE%BF%E5%88%A9%EF%BC%86UI%E3%82%AB%E3%83%83%E3%82%B3%E3%81%84%E3%81%84/)

## 4GPiのセットアップ & ラズパイの起動

① 基板固定用六角スペーサと4G アンテナを4GPi側に取り付けます。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/a67811f9-a290-221d-608b-39f13919a872.jpeg)


② ラズパイの上部に4GPiを取り付けます。
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/fec2aa16-e4d0-2d36-8f4d-781b5fdc3046.jpeg)


③ ラズパイ側のねじを閉めます。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/8df0a05f-0ff7-d5fa-47fa-f3602f6c1010.jpeg)


④ MircoSDカードをラズパイに挿入します。
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/01d6e64a-dfc3-b6cd-1048-7ce42f289b2a.jpeg)

⑤ 4GPiに標準SIMをセットします。
![5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/be890469-03b8-137f-cf2d-c74d5a3d0916.jpeg)

⑥ 4GPi用とラズパイにUSB-A オス - USBmini-b オスケーブルをつけます。
![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/36c40d15-7bfa-86c5-012a-b46f38a4d730.jpeg)

⑦ DCジャック - XHP-2コネクタ変換ハーネスに電源供給アダプタをつけ、4GPiにつけます。
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/e00644ec-b390-41fc-1eca-e8cf3004e983.jpeg)

4GPiに電源投入（=ラズパイに電源投入）して数秒待つとIDとパスワードを要求されるので
[こちらの初期データ](https://github.com/mechatrax/4gpi/blob/master/os/login.pdf)を入力します。
※私の場合、ラズパイとディスプレイをHDMLケーブルで接続して画面を表示しております。

するとターミナルで入力できる状態になります。

```Bash
pi@raspberrypi:~ $
```

## SIMカードの接続
SIMカードの情報を登録します。

```Bash
sudo nmcli con add type gsm ifname "*" con-name 「接続名」 apn 「ＡＰＮ」 user 「ユーザー」 password 「パスワード」
```

「接続名」は任意の名称を付けてください。
「APN」,「ユーザー」,「パスワード」は各SIM会社のサイトに記載しております。([Y!Moblieはこちら](https://www.ymobile.jp/yservice/howto/simfree_android/))

| 項目|Y!Moblieの場合 |
|:-----------------|------------------:|
| APN|plus.acs.jp|
| ユーザー| ym|  
| パスワード|ym|       

私(Y!Moblie)の場合は

```Bash
sudo nmcli con add type gsm ifname "*" con-name ymobile apn plus.acs.jp user ym password ym
```

と入力しました。
次にSIMが認識できているか確認します。

4GPi上の青色LEDが点滅していればOKですが、
念のため、コマンドで確認しましょう。

```Bash
ifconfig wwan0
```

を実行し、inetにアドレスが表示されていればOKです。

↓4GPi左部 青色LED
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/59a44994-ed35-54e0-9dc2-b4fb0e141adf.jpeg)


試しにサイトにpingして確かめてみましょう。

```Bash
ping yahoo.co.jp
```

応答がありましたら無事に接続できています！

うまく接続できない方は[こちら](https://mechatrax.com/faq/#faq-4gpi4)を参照
# ②Stretch版4GPiのイメージからBuster版へアップグレード

## まずは情報確認
ラズパイにディスプレイを接続して4GPiのソフトウェアが入っているか確認しましょう。

```Bash
dpkg -l | grep 4gpi
```

と打って、以下のように表示されていれば無事インストールされています。

```Bash
ii  4gpi-net-mods         1.0.0  all  Network configuration for 4GPi
ii  4gpi-networkmanager   1.0.1  all  NetworkManager settings for 4GPi
ii  4gpi-utils            1.0.1  all  Utilities for 4GPi family
```

次にバージョンがStretchであることを確認しましょう。

```Bash
lsb_release -a
```

「Codename:　stretch」となっていればOKです。


## バージョンアップの際に通信量が気になる

SIMカードによる通信でも問題ありませんが、バージョンアップするにあたって
かなり通信量がかかります。(500MB以上かかると思います)
私の場合は一度Wifiに切り替えて実施しました。

4GPiは便利なツールがいくつか用意されています。([ツールのリストはこちら](https://github.com/mechatrax/4gpi-utils/))
ツールを使って一度4GPiの電源を落とします。

```bash
/usr/sbin/4gpictl poweroff
```

そして、Wifiを接続します。([接続方法はこちら](http://igarashi-systems.com/sample/translation/raspberry-pi/configuration/wireless-cli.html))

## バージョンアップ(下準備編)

下準備ではaptを使用してパッケージを更新します。
Busterへアップグレード後、4GPiのパッケージもaptで更新できるようリポジトリを追加します。
まずはmechatracks.listを開きます。

```bash
sudo vi /etc/apt/sources.list.d/mechatracks.list
```

次にファイル内にapt-lineを追加します。

```bash
deb http://mechatrax.github.io/raspbian/ buster main contrib non-free
```

**apt-line内の"buster"が"stretch"の場合、Busterにアップグレード後に4GPiのツールが正しく動作しません。
必ず実施しましょう！**

リポジトリの追加後はパッケージを更新する必要があります。

```bash
sudo apt update
```

次に「dist-upgrade」を利用して、更新が必要かどうかに関係なく、
すべてのパッケージの最新の利用可能なバージョンに強制的にアップグレードします。

[こちらのサイト](https://pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster/)を参考に更新しました。

```bash
sudo apt dist-upgrade -y
```

Raspberry Piのファームウェアを更新します。

```bash
sudo rpi-update
```

次にアップグレードするために"stretch"のテキストを"buster"へ変更します。

まずは「sources.list」の編集です。

```bash
sudo vi /etc/apt/sources.list
```

ファイル内の"stretch"から"buster"へ置換します。

```bash
deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
```

から

```bash
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
```
へ変更します。

次は「raspi.list」の編集です。

```bash
sudo vi /etc/apt/sources.list.d/raspi.list
```

同様にファイル内の"stretch"から"buster"へ置換します。

```bash
deb http://archive.raspberrypi.org/debian/ stretch main
```

から

```bash
deb http://archive.raspberrypi.org/debian/ buster main
```

へ変更します。

## バージョンアップ(本編)
ようやくバージョンアップです。
Raspberry Piに保存されているパッケージリストを更新します。

```bash
sudo apt update
```

すべてのパッケージをRaspbian Busterバージョンに更新します。

```bash
sudo apt dist-upgrade
```

途中でyes no の質問がありますが、基本はyesで問題ないです。
(ufwの設定はStretchの状態を引き継いだほうが良いかもしれません。ssh設定がDENYになります。)

Busterのアップグレードプロセスが完了したら、自動的にインストールされるいくつかの新しいアプリケーションを削除する必要があります。

```bash
sudo apt purge timidity lxmusic gnome-disk-utility deluge-gtk evince wicd wicd-gtk clipit usermode gucharmap gnome-system-tools pavucontrol
```

## 最後の確認

バージョンがBusterであることを確認しましょう。

```bush
lsb_release -a
```

「Codename:　buster」となっていればOKです。


Wifiでインストールした方は設定をSIMカードに戻しましょう。

```bush
sudo ifconfig wlan0 down
```


4GPiの電源をONします。

```bush
/usr/sbin/4gpictl poweron
```

最後にネットに接続されているか確認します。

```Bash
ifconfig wwan0
```

を実行し、inetにアドレスが表示されていればOKです。

これでOSのアップグレードと4GPiの適応が完了しました！