【中級者向け】M5Stack UnitV2をハックするためのTips
M5Stack UnitV2はハックしなくても十分AIカメラとして使える機能は揃っているのですが、ついつい中身を見てみたくなり色々してみました。Twitterで見聞きしたTipsもあります。パスワードを変えたり、再起動してもscpをすぐ使えるようにするTipsを紹介します。Linuxの知識が必要なので【中級者向け】としています。
もくじ(Index)M5Stack関連の目次へ戻る
工場出荷時に戻す(20210907時点のファームウェアに戻します。)
※ この操作を行うとUnitV2上で作業したファイルや設定は全部消えます。(sudoも使えない状態に戻ります。)
下記のファームウェアアップデートの手順で元に戻すことができます。
- M5UnitV2RootfsRecoveryPackage-09072021.zipをダウンロードし、解凍
- 解凍したフォルダにあるM5UnitV2UpdPackage.imgをmicroSDのルートにコピー
- microSDをUnitV2にセットし、上部にあるボタンを押しながら電源に接続する。
- LEDが赤色に点灯したらボタンを離す。
- 更新中は赤色LEDが点灯します。(4,5分かかる。)LEDが消えたら再度電源を接続しなおして元に戻っているか確認してください。
ファームウェアのダウンロード
ファームウェアのアップデートファイルは下記のリンクから入手可能です。
https://docs.m5stack.com/en/quick_start/unitv2/update
ssh接続でsudo を使えるようにする。(最新のファームウェアは不要)
こちらは下記のリンクの記事が分かりやすいです。※ 最新のファームウェア(M5UnitV2RootfsRecoveryPackage-09072021.zip)ではこの作業は不要です。
M5Stack UnitV2を弄るための備忘録 (zenn.dev)
ユーザー m5stackのパスワードを変更する。
m5stackというユーザーのデフォルトパスワードは「12345678」なのですが、危険なので変更したくなった場合は下記のコマンドを実行すると変更できます。私はパスワードを変更して使用していますが、特に動かなくなる機能は無いようです。
sudo passwd m5stack
再起動してもすぐにscpを使えるようにする。
PCからscpでファイル転送しようとすると/dev/nullに対する権限がない(Permission Denied)エラーが出ます。sshで接続して「sudo chmod 666 /dev/null」で大丈夫なのですが再起動するたびに毎回するのも面倒な人向けです。
Twitterで yasunori_oi さんに教えてもらいました。
● scpを実行したときに出るエラー
Couldn't open /dev/null: Permission denied
lost connection
①/etc/init.d/S97chmod.sh を作成
UnitV2はサービス起動にinit.dの仕組みを利用しているようで、最後の方でchmodするスクリプトを追加します。(init.dはファイル名順に実行する。)
sudo vim /etc/init.d/S97chmod.sh
●S97chmod.shファイルの内容
#!/bin/sh
MSG_PATH="/dev/ttyS0"
echo "[chmod] execute" > $MSG_PATH
chmod 666 /dev/null
exit 0
②S97chmod.shに実行権限を与える
sudo chmod +x /etc/init.d/S97chmod.sh
これで、再起動後にすぐscpでファイル転送できるようになります。
WiFiを使う
こちらもTwtterでミクミンP さんがつぶやいていました。/etc/wpa_supplicant.confを設定するとWiFiに接続できます。
※ 2.4GHz帯のみなので注意しましょう。ルーターの設定によっては接続できないかもしれません。(WPA-PSK2[AES2]だけだとダメ?)
●/etc/wpa_supplicant.confを編集
sudo vim /etc/wpa_supplicant.conf
●下記の内容を追加します。(ご自身のSSID/パスワードを指定)
network={
ssid="YOUR_SSID_NAME"
psk="YOUR_PASSWORD"
}
WiFi接続に失敗する時
「/tmp/wpa.info」に接続のログが表示されるのでこれを参照するとヒントがあるかもしれません。
IPアドレスの確認
「ip address」で確認できます。wlan0が無線LANのIDです。
unitv2.localで接続
Twitterでtako2 さんがつぶやいていました。
/etc/avahi/avahi-daemon.confのallow-interfacesにwlan0を追加します。
●/etc/avahi/avahi-daemon.confを編集
sudo vim /etc/avahi/avahi-daemon.conf
●下記のように変更
allow-interfaces=eth0, wlan1, wlan0
固定IPの設定
/etc/dhcpcd.confのinterface wlan0の下に下記の行を加えます。(IPアドレスは自分で変更してください。)
static ip_address=192.168.0.51/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
おわりに
2021/6にUnitV2を購入してから4カ月、、、機能は十分なんですが、ついつい改造して使いたくなってしまい色々調べました。今後も便利な情報があったら追加していこうと思います。
こんなTipsもあるよ!という方はコメントやメール、Twitter等で教えてくださいm(_ _)m
更新履歴
- 2021/10/26 新規作成