Raspberry Pi 2 Model Bへのアップグレードと不具合

Raspberry Pi 2 Model B(通称2B)が届きました。今までWebサーバー&ファイルサーバー&Webカメラ配信をしていたRaspberry Pi Model B(通称B)を2Bへアップグレードします。

今回のRaspberry Piの箱のデザイン。

とりあえずBを最新の状態にアップデートします。

sudo rpi-update
sudo reboot

sudo apt-get update
sudo apt-get upgrade
sudo reboot

sudo apt-get dist-upgrade
sudo reboot

sudo apt-get install raspberrypi-ui-mods
sudo shutdown -h now

参考:UPDATING RASPBIAN ON YOUR MICROSD FOR THE RASPBERRY PI 2

BはSDカードを使っていますが、バックアップ用のUSBアダブタにさしたマイクロSDカードがあるのでそれを使って2Bを動かしてみます。

Raspberry Piの完全バックアップ、外部マイクロSDカードへの自動バックアップ

マイクロSDカードを同期させて最新版にします。

sudo rsync -aEv --delete-during --exclude-from=/rsync-exclude.txt / /media/usb1/

//同期が終わったらBを止める
sudo shutdonw -h now

バックアップ用のマイクロSDカードを2Bに入れて起動してみます。

なぜか無反応。。いろいろ試してみましたがうまくいきませんでした。B+だとバックアップ用のマイクロSDカードでも起動するんだけど2Bだと起動のはじめのところでつまずいている感じがします。

あきらめて普段使っているBのSDカードのimgファイルををパソコンで読み込んで、それをマイクロSDカードに書き込みます(Model BのSDカードをバックアップ)。Bのimgファイルを書き込んだマイクロSDカードを2Bに挿入して起動しています。

2Bの起動に成功しました。

freeをしてみます。

free
             total       used       free     shared    buffers     cached
Mem:        998096     504188     493908          0      30580     343200
-/+ buffers/cache:     130408     867688
Swap:            0          0          0

ちゃんとメモリは1GBを認識しています。16MBはビデオメモリで使われています。

なお、最初に確認した時は740MBしか認識されていませんでした。いつの間にか1GB認識されていました。Memory Splitのまわりで問題があるらしく気になる人はPi 2 Memory Splitを見てください。私の場合は、いつの間にか直っていました。

Raspberry Pi 2 Model BのGPIOの不具合

Raspberry Pi 2 Model Bは前のモデルと完全互換といっていますがGPIOで不具合があります。

Raspberry Pi 2 Model Bでwebiopiが動かない。
NameError: global name ‘GPIO’ is not defined

WebIOPiだけの問題ではなく、2BでCPUが変更された関係でGPIOのアドレスが変更されました。しかし2Bの登場がいきなり過ぎてGPIOを使っているモジュールが対応できずに軒並み不具合を起こしています。

RPi.GPIOだけ使っている場合は既に修正方法がWebで見つかりました。

python
Python 2.7.3 (default, Mar 18 2014, 05:13:23) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: This module can only be run on a Raspberry Pi!
>>> 

2BはまだRaspberry Piの仲間に入れていないようです。近いうちにapt-get upgrade;apt-get updateで不具合が修正されると思いますが、RPi.GPIOだけなら下記の方法で治せます。

sudo apt-get install python-pip
sudo pip install -U RPi.GPIO
sudo apt-get install python3
sudo apt-get install python-setuptools
sudo apt-get install python3-pip

sudo apt-get install build-essential python-dev python-pip mercurial
hg clone http://hg.code.sf.net/p/raspberry-gpio-python/code raspberry-gpio-python-code
cd raspberry-gpio-python-code
sudo python setup.py install
sudo python3.2 setup.py install

How To Fix Error Loading RPi.GPIO Python Library On Your Brand New Raspberry Pi 2

これでRPi.GPIOは動くようになりました。
だけどWebIOPiはまだダメです。

sudo webiopi -d -c /etc/webiopi/config

WebIOPi - ERROR - global name 'GPIO' is not defined
Traceback (most recent call last):
  File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/__main__.py", line 75, in <module>
    main(sys.argv)
  File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/__main__.py", line 69, in main
    server = Server(port=port, configfile=configfile, scriptfile=scriptfile)
  File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/server/__init__.py", line 52, in __init__
    self.gpio.addSetups(config.items("GPIO"))
  File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/devices/digital/gpio.py", line 62, in addSetups
    self.addGPIOSetup(gpio, params)
  File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/devices/digital/gpio.py", line 55, in addGPIOSetup
    self.addGPIO(self.gpio_setup, gpio, params)
  File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/devices/digital/gpio.py", line 45, in addGPIO
    func = GPIO.OUT
NameError: global name 'GPIO' is not defined

GPIOが見つかりません。

RPi.GPIOを参考にWebIOPiのソースコードを見よう見まねで直して再インストールしてみましたが、うまくいきませんでした。

頑張ったけど、あきらめました。

私は頭のいい人が登場して直してくれるのを待つことにしました。GPIOの問題は有名な不具合なので、早くて2,3日、遅くても2週間くらいで修正方法がネットで見つかるようになると思います。

Raspberry Pi 2 ModelBの実際のパフォーマンス

一言で言うと、とにかく速くなりました。

Raspberry Pi 2 ModelBを使っているサイト

金魚の金太郎
(WebカメラのコントロールにWebIOPiを使っているため現在Webカメラを動かせません)

BだとWordpressの管理画面がすごく重かったのですが、2Bで2分の1以下の重さになった感じがします。Wordpressのサイト自体もおそらく速くなっていると思います。Webmasterでサイトの速度が線グラフで出てくるので2,3週間したら速度の違いを追記します。BやB+だとなんとかギリギリ使っていた感じですが、2BでWebサイトとして実用的に使える状態になりました。

Webカメラの負荷が減りました。Webカメラを使って配信しているのですが、BだとCPUを50%〜60%を使っていました。2BにするとCPUの使用率が30%ちょっとに低減しました。かなり素晴らしいです。

ファイルサーバーが速くなった。WebサーバーとWebカメラ配信とファイルサーバーが同居していたため、ファイルサーバーのアクセスが遅かったです。それが2Bにして1.5倍から2倍くらい速くなりました。

Raspberry Pi ModelA/B/B+は細々と使える感じでしたが、今回のRaspberry Pi 2 ModelBは本格的にいろいろ使えるものになりました。

追記1:不具合2 カーネルパニック?

Pi2で動かしているWebサイトでエラーが出るようになった。
500 – Internal Server Errorが出る。

Message from syslogd@raspberrypi at Feb 13 01:10:33 ...
 kernel:[314654.237211] Internal error: Oops: 5 [#53] PREEMPT SMP ARM
Message from syslogd@raspberrypi at Feb 13 01:10:33 ...
 kernel:[314654.591254] Process php5-cgi (pid: 17913, stack limit = 0xb1880238)

リブートしようとしたけど、リブートしなかったので直接電源切った。

RPi 2 Model B Locking Upにも似た様なこと?が書いてあった。

とりあえず最新版に更新する。

sudo rpi-update
sudo reboot

sudo apt-get update
sudo apt-get upgrade
sudo reboot

はて?再起動したらデータベースが動いていない。
また再起動してみる。

mysqldが止まったまま。

syslogを眺めたらこんなエラーが出ていた。
error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

/var/run/mysqld/mysqld.sockが見つからなくなった….

syslogを眺めてみると、なんかデータベースのデータがぶっ壊れたような気がスル…
あとPi2のLANアダプタの接続がおかしい気がするー。

うーん、ということでバックアップからデータを戻すことにしました。
めんどくさかった。

データを戻してアップデートした。
mysqldもちゃんと動いてる。

とりあえずOKということで様子見です。

一度Pi2を味わうとPi1にはもう戻れないー!

追記2:Raspberry Pi 2のWebサーバーとしての性能

Raspberry Pi 2 ModelBで動いているWordpressサイト、金魚の金太郎

ウェブマスターツールのクロールの統計情報のページのダウンロード時間(ミリ秒)

2015年2月6日以前はRaspberry Pi ModelBを使っていました。そのときのダウンロード時間の平均は3.6秒くらい。キャッシュを使ってもこんだけ時間がかかっていました。

2015年2月6日以降、Raspberry Pi2 ModelBにアップグレードした結果、ダウンロード時間は平均1.0秒くらいになりました。2月15日前後にカーネルパニックみたいなのに遭遇してダウンロード時間は上昇してしまいましたが、ソフトウェアをアップデートすることで、再び1.0秒くらいになりました。

この結果、Pi2でWordpressが実用的に使えるようになったといえます。

Raspberry Pi 2 Model Bへのアップグレードと不具合” への1件のコメント
  1. 藤井 より:

    こちらの情報を参考にさせていただいて、次の試作ができました。ありがとうございます。
    「退役寸前のブラウン管TVのリサイクル回収料金*2で、捨てずに先進ネットTV化し、
     URL入力・ネットサーフィンは無線KB/Mouseで快適という環境を実現しました。
     もちろん、Youtube、インターネットラジオも視聴できます。」
    ウェブサイトに製作記事を載せています。
    手持ちのUSBチューナー(HDUS)も、たくさん修正して、何とか、TSファイル出力に成功しました。
    ホーム画面を付ければ、SmartTVの完成です。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください