●RaspberryPi4B GPIO IN/OUT 表示が出ない
2020.09.13
Raspberry Pi 4B の UPdate UPgrade を行ったら GPIO Header 画面から
端子配列画面を開くと、IN/OUT のボタンがグレー表示になり消えてしまい
操作もできません。
GPIO 画面
WebIOPi の開発は2015年頃から止まっており最新版は WebIOPi-0.7.1 です。
これは Webiopi 側よりもRaspberry Pi の kernerl 側の UPgrade により
起きたとみるべきでしょう。
InterNet を探してみたら、PATHpilot さんの Blog に、Raspberry Pi 4 で
WebIOPi を動かすという Page を見つけました。
PATHpilot さんの Page → Raspberry Pi 4 で WebIOPiを動かす
Raspi 4B は以前の型番とは CPU 型番が違っているので、cpuinfo の書替を
しなくてはいけない様です。
では現状は cpuinfo.c に何が書かれているか見てみる。
$ cd /home/pi/WebIOPi-0.7.1/python/native
$ cat cpuinfo.c
------------------ cpuinfo.c ----------
while(!feof(fp)) {
fgets(buffer, sizeof(buffer) , fp);
sscanf(buffer, "Hardware : %s", hardware);
if (strcmp(hardware, "BCM2708") == 0) ←Raspberryi 2
rpi_found = 1;
else if (strcmp(hardware, "BCM2709") == 0) ←Raspberrypi 3B
rpi_found = 1;
else if (strcmp(hardware, "BCM2835") == 0) ←Raspberrypi 2
rpi_found = 1;
---------------------------------------
では、実際のRaspberry Pi 4B の CPU を見てみる。
$ cd /proc
$ cat cpuinfo
----------------- cpuinfo ----------------
Hardware : BCM2711
Revision : c03112
------------------------------------------
確かに違っています。しかし、UPgrade 前はこれで動いていた。
対 処
PATHpilot さんの様に、cpuinfo.c の CPU名を書替て setup.sh を実行
しただけではうまくいかなかった。
このため、WebIOPi を Folder を含めて削除して再度 Patch をあててみる。
$ cd /home/pi
$ sudo rm -rf WebIOPi-0.7.1
これできれいに削除できた。
WebIOPi はすでに DownLoad をしてあるので解凍から実行します。
$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-0.7.1
Patch の適用
Web Browser で表示するGPIO の表示を修正する Patch を DownLoad して
適用します。
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
Patch をあてる前に、Raspberry Pi 4B の CPU名に書替ます。
$ sudo nano webiopi-pi2bplus.patch
if (strcmp(hardware, "BCM2708") == 0 ) の部分を下記の様に書替ます。
if (strcmp(hardware, "BCM2711") == 0) にします。
Patch をあてて setup.sh を実行します。
$ patch -p1 -i webiopi-pi2bplus.patch
$ sudo ./setup.sh
Set Up 画面が「Do you want to access WebIOPi over Internet ?[y/n]」で
止まったら Internet 経由で外からWebIOPi を操作する事は無いので「n」を
押します。
WebIOPi.service には変更がありませんので、そのまま使用します。
DownLoad していなければ、下記から取得します。
$ cd /etc/systemd/system/
$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service
GPIO 動作確認
●status確認
$ sudo systemctl status webiopi
●webiopiを起動します。
$ sudo systemctl start webiopi
電源の起動と同時に WebIOPi を起動しておきたい時は、
下記の Command を1回実行しておきます。
$ sudo systemctl enable webiopi
一応 cpuinfo.c の中を確認しておきましょう。
$ cd /home/pi/WebIOPi-0.7.1/python/native
$ cat cpuinfo.c
Hardware に BCM2711 が入っていれば OK です。
Web Browser から、http://192.168.1.11:8000 に Access してみます。
Raspberry Pi のIP Address を Key in して、Port 番号8000を入力します。
認証画面が表示されるので、User 名・Password を入れます。
User 名:webiopi
Password :raspberry
これで、WebIOPi に Login できます。
Login すると、WebIOPi のTop画面が表示されます。
WebIOPi Menu画面
GPIO Header の画面を開くと、今度は GPIO ピン配列の画面が出てきます。
「IN」又は「OUT」のボタンを押せば、入出力を切替する事ができます。
また、GPIO のピン番号を Click すると、直接Raspberry Piの
GPIOピンを「ON」「OFF」制御する事ができます。
GPIO 画面
----------------------------------------------------------------------------------------------------------------------------