MAiX II でデモを立ち上げるまで

#0.はじめに
2019年にリリースされたM5StickVやMAiXシリーズは、Edge AIの入門用として多くの人が初めてのAI開発ツールとして手にされたと思います。今回は、格安AI開発ボードの第2世代の嚆矢となるMAiX IIについて、デモの立ち上げまでの手順を記憶に残っている限り記録に残します。うまく動くとこのようなデモプログラムが動作するはずです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">MAiX IIのデモはクラス分類。精度はMAiX Iと同程度かな。クラス数は不明。 <a href="https://t.co/skm9VmUSz1">pic.twitter.com/skm9VmUSz1</a></p>&mdash; AIRPOCKET＠rastaman vibration (@AirpocketRobot) <a href="https://twitter.com/AirpocketRobot/status/1358344909946691585?ref_src=twsrc%5Etfw">February 7, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

記事を書いている2021年2月7日現在、MAiX IIは販売されていますが、ファームウェア等のソフトウェアは開発中のため、随時変更される可能性がありますのでご注意ください。
また、今回ご紹介する方法は[hacker.IO](https://www.hackster.io/dmitrywat/sipeed-maix-ii-som-and-devboard-for-ai-iot-machine-learning-d2557b)で紹介されている内容がベースになっています。[Youtube動画](https://www.youtube.com/watch?v=o2dXIO8-pvg&feature=emb_logo)もありますので英語が堪能な方はこちらを見ることをお勧めします。

本家のSipeedさんも、春節明けにはチュートリアルを書く（「upする」ではないのがちと不安）とおっしゃって下さっていますので、そちらの方が確実ではあります。
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">we will write the tutorial after chinese new year~</p>&mdash; Sipeed (@SipeedIO) <a href="https://twitter.com/SipeedIO/status/1358231740947464193?ref_src=twsrc%5Etfw">February 7, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


#1.開発環境
使用したPCはUbuntu 20.04です。おそらく現時点ではMacやWINには対応していないと思われます。たぶん。
※2021.02.08追記　Ubuntu 18.04でも実行できたそうです。

#2.書き込みツールのインストール
K210の時に使用していたKflashやKflash GUIはまだ対応していません。
使用するのはlivesuitというツールです。場合によりlive suiteになったりlive suitになったり表記が揺れていますが、コマンド上はlivesuitですの気を付けましょう。
ダウンロードやインストール作業は適当な作業用フォルダを作成して進めてください。

```sh
sudo apt install dkms libtool m4 automake zlib1g-dev
wget http://archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng_1.2.54.orig.tar.xz
tar xvf  libpng_1.2.54.orig.tar.xz
cd libpng-1.2.54
./autogen.sh
./configure
make -j8
sudo make install
```
まずは依存先のlibpngインストールします。自力でインストールしようとしたらずいぶん手こずったのですが、このサイトの通りに実行したらスムーズに進みました。サーバが混雑していたのか、タイミングによりwgetが進まないことがありましたが2行目を

```sh
wget http://mirrors.edge.kernel.org/ubuntu/pool/main/libp/libpng/
```
に変更して無事DLできました。
インストールの際にセーフブート機能が邪魔をすることがあります。これは使用しているPCの機種や設定によります。
セーフブートが有効化されている際には画面にセーフブートを切る旨表示が出ますので素直に従ってください。途中でパスワードをの入力を2回求められますが、セーフブートを切るために新たなパスワード設定です。任意のパスワードを設定して、同じワードを入力します。

無事インストール出来たらコマンドでリンクの更新とキャッシュを行い、livesuitをインストールします。

```sh
sudo ldconfig
git clone --recursive https://github.com/QinYUN575/allwinner-livesuit.git
cd allwinner-livesuit
chmod +x livesuit_installer.run
sudo ./livesuit_installer.run
```
これで書き込みツールのインストールができました。

#3.ファームウェアのダウンロード
ファームウェアはこちらにあります。livesuitのインストールとファームを手に入れるために三日間もがきましたが、こちらも[hackster.io](https://www.hackster.io/dmitrywat/sipeed-maix-ii-som-and-devboard-for-ai-iot-machine-learning-d2557b)で尋ねたらDmitry Maslovさんが速攻で教えてくれました。ほんとにありがとう！！
ファームのイメージファイルは[こちら](https://dl.sipeed.com/shareURL/MAIX/SDK_MaixII/release)にあります。確かにSipeedのこのサイトは見たことがあるしけども。。。使ったこともあるけども。。。。ドキュメントとかツールとか、ばらばらに散らばっててわかりにくいんだよーーー！！
CLIからならこの通り。

```sh
wget https://dl.sipeed.com/shareURL/MaixII/SDK/release/v831_sipeed_20210203_image.zip
```
※2021/4/19追記：ファームウェアの保存先が変更されていたので修正しました。


DLしたら解凍しておきましょう。
まだ見れて無いですが、ハードウェアのドキュメントも[ここ](https://dl.sipeed.com/shareURL/MAIX/HDK_MaixII)にあります。思ったよりもそろってるぽいです。

#4.ファームウェアの書き込み
ファームの書き込みはlivesuitで行います。
MAiX IIにmicroSDを入れずにUSBをつないで、

```sh
sudo livesuit
```

で立ち上がるので先ほどDLしたイメージファイルを指定して書き込みます。
![Screenshot from 2021-02-07 23-04-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/ae47b594-b2ef-5779-a4ed-ddbccc841b9a.png)

2021.2.9追記
FBで情報いただきました。ありがとうございます。[こちら](https://thoughts.teambition.com/share/5ff5aa2068c1c000466f61f3#title=V831_%E9%95%9C%E5%83%8F%E7%83%A7%E5%BD%95)のドキュメントにも、Windows用の場合は「PhoenixSuit」を使えlinuxでは「LiveSuit」を使えとあります。LiveSuiteの操作方法は次の通りです。

0. sudo livesuitでLiveSuitを起動してから microSDをささずに、USB OTGインターフェースとUbuntu PCを接続。
1. UbuntuPCにDev Plugin The Device Path is: /dev/aw_efex1と出て、Format the partition when upgrade? のダイアログが出る。
2. 出ない場合はMAiX-IIのリセットボタンを押す。
3. Format the partition when upgrade?のダイアログがでていたら、microSDをMAiX IIに挿す
4. Format the partition when upgrade?のダイアログでYesをクリック。
5. うまくいけば書き込みがはじまる。プログレスバーが100%になるまで待つ。
6. プログレスバーが100%になったらMAiX-IIのOTGにつないだType-CをUARTインターフェースに指し直す。
7.  Ubuntu PCで、screen /dev/ttyUSB0 115200など、ターミナルを開いてブートシーケンスログが出るかどうか確認する。


~~「image」を押してファームのimgファイルを指定したあと、powerキーを10秒押せとか10回くらい押せとかいろいろ書いてますがそもそもMAiXにはpowerキーがついていません。
リセットボタンを押したりusbをUARTとOTGを入れ替えたりしてるといつの間に
か書き込みが始まっていました。
なんとなくやっていたのは、こんな感じです。
①最初にmicroSDを抜いてUSBケーブルUART側に挿す。
②USBケーブルを抜いてmicroSDを挿す。
③USBを挿してしばらくまつ。
④だめならresetボタンも適当に押してみる。resetボタン10秒押し、10回押しもやってみる。
⑤それでもだめなら②、③、④を繰り返す。
書き込み中に電源を抜いたりresetを押すとやばそうなので、terminalはよく見ながら進めましょう。~~

無事インストールできるとMAiXの画面にsipeedのロゴが表示されます。ちなみに私の環境では電源投入からロゴ表示まで約20秒でした。
初期画面では右userボタンでデモの物体検出が走ります。

#4.5.terminalでアクセスする

MAiX IIでlinuxコマンドを堪能するにはUSBケーブルをOTGからUARTに差し換えて次のツールでアクセスします。

```sh
sudo apt-get install picocom
sudo picocom -b 115200 /dev/ttyUSB0
```

コマンドラインに
```sh
root@sipeed:/# 
```
と表示されたら成功です。

#5.おわりに
以上がMAiX IIのデモ立ち上げまでの流れです。
せめてファームは入れて出荷してほしかったというのが正直な気持ちですが、なんとかここまでこれてよかった。。。
heckster.ioではterminal接続用のpicocomのインストールや接続方法も説明してくれていますので参考にしてください。WiFiの設定と使用を進めていますが、技適通ってないので
やめておくのが賢明でしょう。WiFiについては試用申請しようと考えていますが、海外規格のマークも何も記載されていないので通るか不安なところです。WiFiモジュールはRTL8189FTVを使用しているとのことで、珍しくないモジュールの様ではあります。

とりあえずIO使ってみたり、他の学習モデルを入れて動かしてみたりしたいところですが少々くたびれたので少しペースを落とします。
この記事もとてもニッチな方向けですが、もしいろいろな動作を確かめた方がいらっしゃったらコメントもしくはtweet等で発信していただけると心強いです。