Raspberry Pi 4 Model でWebIOPiを動かす
WebIOPiをインストールしてみた。
Googleとダウンロード先は見つかるけれども、結構古い。ここが曲者。
Blue Backsのラズパイの教科書ではpatchを当てるよとある。
で、以下を実行。
pi@raspberrypi:~/raspi/WebIOPi-0.7.1 $ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
--2020-09-06 16:24:16-- https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 151.101.108.133
raw.githubusercontent.com (raw.githubusercontent.com)|151.101.108.133|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 9308 (9.1K) [text/plain]
`webiopi-pi2bplus.patch' に保存中
webiopi-pi2bplus.patch 100%[=========================================>] 9.09K --.-KB/s 時間 0.004s
2020-09-06 16:24:16 (2.06 MB/s) - `webiopi-pi2bplus.patch' へ保存完了 [9308/9308]
pi@raspberrypi:~/raspi/WebIOPi-0.7.1 $ patch -p1 -i webiopi-pi2bplus.patch
patching file htdocs/webiopi.js
patching file python/native/cpuinfo.c
patching file python/native/gpio.c
patching file python/webiopi/utils/version.py
patching file python/webiopi/protocols/http.py
patching file python/webiopi/utils/thread.py
幾つかのファイルにパッチが当たったようだ。この状態でsetup.shを実行した。
その後、教科書に書いているように以下を実行。
wget https://raw.githubusercontent.com/neuralassembly/raspi/master/webiopi.service
sudo mv webiopi.service /etc/systemd/system
実際上記を実行していないと、webiopiは起動エラーになった。中身がよくわからないけれども、必須であることは理解した。で、webiopiの起動をおこなう。
$ sudo service webiopi start
$ sudo systemctl status webiopi を見る限り、正常に起動はしているようだ。しかし、表示がおかしい。各GPIOのIN/OUTが四角い箱の中に表示されない。端子番号をクリックしても反応がない。
Googleって先人の知恵に学ぼうとしたけれども、パッチを当てる前のファイルに対する処理方法しか見つけることができず、知恵に学ぶことができない。そもそも先人の知恵ではWebIOPiの0.7.1は24ピン対応で40ピン対応になっていないから、そこの部分からの対応処理になっているけれども、パッチは40ピン対応のもので、その部分は対応不要となっているようだ。で、CPUの判別の所に絞ってコードを見てみた。
どうやらハードコーディングされているCPUモデル以外はRevision=NULLになるようだ。以下を叩いてCPUモデルを取り出すと、、、
cat /proc/cpuinfo
BCM2711であることが分かる。Revisionはc03112だ。get_rpi_revision()的には結構すっとんでるRevisionのようだけれども、これってRaspberry Pi 4の4のことかもしれない。ということで、以下にコードを書き換えて setup.shを実行した。
ソースファイル WebIOPi-0.7.1/python/native/cpuinfo.c
char *get_cpuinfo_revision(char *revision)
{
FILE *fp;
char buffer[1024];
char hardware[1024];
int rpi_found = 0;
if ((fp = fopen("/proc/cpuinfo", "r")) == NULL)
return 0;
while(!feof(fp)) {
fgets(buffer, sizeof(buffer) , fp);
sscanf(buffer, "Hardware : %s", hardware);
if (strcmp(hardware, "BCM2708") == 0)
rpi_found = 1;
else if (strcmp(hardware, "BCM2709") == 0)
rpi_found = 1;
else if (strcmp(hardware, "BCM2835") == 0)
rpi_found = 1;
else if (strcmp(hardware, "BCM2711") == 0) /* 追加部分 */
rpi_found = 1; /* 追加部分 */
sscanf(buffer, "Revision : %s", revision);
}
fclose(fp);
if (!rpi_found)
revision = NULL;
return revision;
}
int get_rpi_revision(void)
{
char revision[1024] = {'\0'};
if (get_cpuinfo_revision(revision) == NULL)
return -1;
if ((strcmp(revision, "0002") == 0) ||
(strcmp(revision, "1000002") == 0 ) ||
(strcmp(revision, "0003") == 0) ||
(strcmp(revision, "1000003") == 0 ))
return 1;
else if ((strcmp(revision, "0004") == 0) ||
(strcmp(revision, "1000004") == 0 ) ||
(strcmp(revision, "0005") == 0) ||
(strcmp(revision, "1000005") == 0 ) ||
(strcmp(revision, "0006") == 0) ||
(strcmp(revision, "1000006") == 0 ))
return 2;
else if ((strcmp(revision, "a01041") == 0) ||
(strcmp(revision, "a21041") == 0 ))
return 3;
else // assume rev 4
return 4;
}
変更は正解だったようで、WebIOPiは以下を表示してくれた。Pin 22であるGPIO 25に繋がっているLEDもピン番号をクリックすることでON/OFF出来ることを確認。
まぁ、ハードウエアの状態を操作・表示するアプリな訳だから、ハードウエア・モデルの確認は必須だわな。ということで、分かってしまえば「当たり前だろ」って言われそうな結末とも言える。
なんだかんだで4時間くらいかかったかなぁ。。。。
« Raspberry Pi チャタリング問題 | トップページ | WindowsでのボリュームのUUID取得方法 »
「ラズパイ日記」カテゴリの記事
- NEO-7M GPSモジュールが中国から届いた(2023.01.15)
- TNCアプリにおけるDemoduatorの動作確認(2023.01.09)
- AFSKでの復調について(2023.01.04)
- APRSでのNRZIについて備忘録(2023.01.02)
- pico_tnc 2200Hz(Space)でPhaseをずらす件の備忘録(2022.12.31)
コメント
« Raspberry Pi チャタリング問題 | トップページ | WindowsでのボリュームのUUID取得方法 »
自分もラズパイ4にwebiopiをインストールしようとしてますが、、 CPU判別をしている書き換えたコード、というのはどのファイルのことなのでしょうか?探しているのですが、見つからなくて、、。
投稿: しん | 2020年10月22日 (木) 10時30分
すみません、自己解決しました。
WebIOPi-0.7.1/python/native/cpuinfo.c
ですね。
投稿: しん | 2020年10月22日 (木) 19時30分
貴重なコメント、ありがとうございました。
大変遅ればせながら、ソースファイル名を追記いたしました。
投稿: pathpilot | 2020年11月27日 (金) 08時41分
まさにこの件で悩んでいたところでした.
すごく参考になりました.
投稿: | 2020年12月 3日 (木) 19時54分
本件で大変悩んでおりましたところ貴重な知見をいただき無事解決することができました。ありがとうございました。
投稿: サトル | 2021年1月16日 (土) 13時29分
サトルさん
お役に立てとのご連絡をを頂き、うれしい気持ちでいっぱいです。
ブログ更新の励みとなりました。
ありがとうございました。
投稿: pathpilot | 2021年1月16日 (土) 20時47分
こんにちは。
私も同じ症状が出て、この記事を見つけ解決できることができました。
ありがとうございます。
投稿: たく | 2021年2月16日 (火) 13時42分
たくさん。コメントありがとうございました。お役に立てたようで、マジうれしいです。
投稿: pathpilot | 2021年2月16日 (火) 19時51分