でぃするだいありー?

そんな気はないんだれど、でぃすっちゃってる。 でぃすでれ?

Raspberry Pi Kernel 4.9

本年初頭、sudo rpi-update を行ったところ、実装したプログラムが動かなくなった。調べてみると Kernel のバージョンが4.9になったことが原因だという。当時の調査では対応策が見いだせず、Kernel のバージョンを4.4.x に戻すことで復旧した。
幾度か調査ないし再度の sudo rpi-update を試したが、4.4.x と 4.9 にはある種の断絶があること、OS的にはこれが補完されることはなさそうだということが分かっただけだった。

以後放置してしばし、こんな記事を見つけた。

記事中の「WiringPi2-Pythonのインストールコマンド」を実行し、プログラムで利用していた wiringpi を wiringpi2 に置き換えることで、とりあえず動くようになった。シフトレジスタを利用している個所で、"This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings." が表示されるものの、動いてはいる。とはいえこれにより、サーボではないモーター駆動がうまくいっていない雰囲気で、調査中。
近頃使っていないが、WebIOPiも動かなくなってしまい、調査中。

Kernel 4.9 への移行はセキュリティの問題から断行したということらしい。個人的に思うことは、もし自身がこのタイミングでラズパイでIoTに取り組みはじめていたならば、あるいは挫折していたかもしれないということだ。困ったもんである。

2017/07/21追記:
自作プログラムにおける根本的な問題が、wiringpi が提供する gpio コマンドにあることがわかった。上に示した記事中には wiringpi/gpio のアップグレードは含まれていない。

su - して cd /usr/local/src して、以下の手順を実行した。なお、sudo権限を持つ一般ユーザではうまくいなかなった。

・wiringpi 2.44

# git clone git://git.drogon.net/wiringPi
# cd wiringPi
# ./build
# sudo reboot


・wiring-python 2.44

# git clone --recursive https://github.com/neuralpi/WiringPi-Python.git
# cd WiringPi-Python/WiringPi
# wget https://raw.githubusercontent.com/neuralassembly/raspi/master/wp-pwm-warning.patch
# patch -p2 -i wp-pwm-warning.patch
# sudo ./build
# cd ..
# swig2.0 -python wiringpi.i
# sudo python setup.py install
# sudo python3 setup.py install

以下、参考にしたサイト。

e電子工房

はじめまして。 PICerFTを作成し色々なPICでテストをしていますが、古いデバイスでの使用ができません。 具体的には12F675と16F877Aが使えず、 ・12F683を使った後に12F675に刺し変える→Eraseが「接続失敗!」になる ・16F917を使った後に16F877Aに刺し変える→Erase直後のCheckが「ブランクではありません」になる という症状が出ています。 ...


/proc/cpuinfo reports BCM2835 on 4.9 kernel, causing unworking wiringpi · Issue #47 · WiringPi/WiringPi-Python

First, thanks for your work. I get one big issue on a fresh raspberry pi2 archlinux arm, coming with 4.9.13 kernel. The /proc/cpuinfo reports now hardware as BCM2835 : processor : 0 model name : AR...

以上のことを行い、WebIOPiによるサーボモータ制御プログラムは当初の実装のまま手を付けず、動作することを確かめた。

サーボでないモータ制御がうまくいっていなかったのは、GPIO.cleanup()が実行されていなかったからで、これはデーモン化した自作プログラムの終了処理がまずかったことになる。kernel 4.4 のときはうまくいってたプログラムなのだが・・・
根本的解決は果たせていないが解消方法はみいだせた、というところ。

ひとまずkernel 4.9.37 対応完了。やれやれ。