2022年7月31日日曜日

Android 6.0 (Marshmallow) で MACアドレスを永続的に変更

GooglePlayにあるMACアドレス変更アプリ(Wifi Mac Changer など)では、変更できても一時的なものが多い。デバイスの再起動などでMACアドレスは再びデフォルト値に戻ります。

この状態でWiFiに繋げると、「認証に問題」というステータスになって接続できなかった。これはどうやら変更前のMacアドレスを参照したままWiFiの認証している様子。

WiFiの認証過程におけるHandshakeでは、MACアドレスから認証鍵を生成しているので、このままではWiFiに接続できる見込みがない。


Android Debug Bridge(adb) コマンドでやる場合は、
$ adb shell
$ su
# ifconfig wlan0 down
# ifconfig wlan0 hw ether 00:11:22:33:44:55
# ifconfig wlan0 up


結果の確認
$ ip link | tail
22: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 100
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

ただしこの変更も一時的なものです。


永続的に更新する場合は、以下
# echo -n "001122334455" > /persist/wifi/.macaddr

ただしこの後、この人みたいな状態になってしまった。
https://androidforums.com/threads/corrupted-wifi-mac-address.919147/
・再設定できない
・後半の3セットは再起動のたびに変動(00:11:22:XX:XX:XX)


これを解消するために試したのがこれ。
https://www.androidiani.com/forum/modding-google-nexus-4/344310-mac-address-cambiato-ad-ogni-riavvio-persistent-partition.html
# chown root:root /persist/wifi
# chmod 755 /persist/wifi
# chown wifi:wifi /persist/wifi/.macaddr
# chmod 660 /persist/wifi/.macaddr
# /system/bin/conn_init

これでMacアドレスを更新できるようになった。

2022年7月17日日曜日

ESP32 Video-Recorder-junior で malloc failed

ログを見ても原因が分かりにくいが、これは PSRAM の Disable を Enabled に変えると解消した。以下エラーログ

cam_hal: cam_dma_config: frame buffer malloc failed
cam_hal: cam_config: cam_dma_config failed
camera: Camera config failed with error 0xffffffff
Camera init failed with error 0xffffffffE gpio: gpio_install_isr_service: GPIO isr service already installed

・設定方法

Arduino IDE>ツール と辿る
PSRAMを選んで、設定をEnabled に変更

ESP32 Video-Recorder-junior を使ってみる

ESP32-CAM で Motion JPEG 方式のビデオを microSD に保存するプログラムです。

ESP32-CAM Video-Recorder-junior

以下、今回のインストール方法

1.GitHub からファイル一式をダウンロード

リポジトリ全体のzipファイルをダウンロードしました。

2.Arduino IDE でスケッチで開く

 今回はv58を使いました。ダウンロードした中のv58フォルダを の ESP32-CAM-Video-Recorder-junior-58x.ino ファイルを Arduino IDE で開きます。
(※事前にフォルダ名を ino ファイルと同じ名前に変更する必要あり。そのまま Arduino IDE で開いたときの案内に従わず、事前にフォルダ名を変更します。)

3.設定

(※設定はデフォルトのままで良いなら、設定は不要です。WiFiにも接続しません。)
v58フォルダにある config.txt ファイルに、ssid、ssid password を設定する。
その config ファイルを microSD に保存する。
microSD を ESP32-CAM に挿す。

4.準備

 もし ESP32 の開発が初回なら、ESP32 のボードマネージャをインストール
使用するボードの情報が取得できなかったので、今回は「ESP32 dev Module」というボードを選択した。(ESP32 のボードマネージャ インストールは、既に資料が多くあるので省略)

 ライブラリマネージャから、「WiFiManager by tablatronix」をインストール
これは WiFi.h 等のコンパイルエラーで気が付く。
ライブラリマネージャだと、「WiFiManager tzapu」で検索すると見つかります。

 シリアルモニタ ボーレートの値を 115200 bps に変更する。
これはシリアルモニタが文字化けするから気が付く。

 PSRAMの設定を Disabled から Enabled に変更する。
これはエラーログからは分かりにくい。ログの詳細

5.マイコンボードに書き込む。

最後に Hard resetting via RTS pin... と出力されるので、ここでリセットボタンを押すのかと思いきや、実は押さなくてもそのまま録画が始まってます。なのでログを見逃さない為にはシリアルモニタを事前に開いておく。

6.ESP32-CAM のリセットボタンを押す

Arduino IDE のシリアルモニタに Filemanager のURL(http://192.168.*.*:8080/)が出力される。ここから録画したファイルをダウンロード可能。
そのまま録画が開始されるので、録画終了まで30分待ちます。

Hyper-V 環境で Arduino IDE の開発

Hyper-V の仮想環境で Arduino IDE を開発してみる。 

しかし、Hyper-V だと、USB接続でマイコンボードに書き込めない。これは Hyper-V の COMポートは仮想シリアル(COM)ポートであって、物理COMポートと繋がっていないため。 

Hyper-V の仮想COMポートは、物理マシンから仮想マシンへの接続用です。Hyper-V マネージャで COM設定いじっても無理でした。ここは別にドライバなど導入して仮想COMポートと物理COMポートを接続する必要があるが、かなり面倒です。 

ただし、VMware の仮想環境だと普通にマイコンボードと接続できます!