Origami Devices

USB充電本作ったりしてます。

Raspberry Pi と NTP または RTC の話

Raspberry Pi には RTC が載っていない

意外に忘れ去られがちなのだが、実は Raspberry Pi には一貫して RTC モジュールが載っていない。標準提供されている Raspbian を使う分には ntpd が動いているのであまり気にしなくても(internet に常時接続されている環境なら)いいのだが、そうでない場合は ntpd の設定を忘れると結構悲惨なことになりかねない。

RTC モジュールを載せる場合

たまにオフラインでも使用する場合がある、という場合は、RTC モジュールを載せてしまうという手もある。
h's IT Notes: Raspberry Piにリアルタイムクロックをインストールする

GPIOポートのピンアサインは(このモジュールを使う場合においては)同じなので、 Type B、Type B+ どちらでも使用できる。

Raspberry Pi とバイパスコンデンサの話

前提

Raspberry Pi を Internet に接続する前提で Type A を常用している人はあまりいないと思うので、ここでは Type B と Type B+ の話を前提とする。

Type B

Type B にはちょっと困ったことがある。特に散々語られたのが「USBデバイスをつなげると Raspberry Pi が fault する」というやつだ。再起動すればまた動作するのだが。で、原因は「USBデバイスを接続すると、そのデバイスをつないだ途端に端子電圧が低下する」という、これまた困った現象であった。原因は、Type B は USB ポートへの給電能力がしょぼいことにある。

これまでに先人が主な対策として挙げられてきたのは、下記の2点。

  1. セルフパワーで動作する USB ハブを介する
  2. バイパスコンデンサを増強する

難易度を考えると 1. のほうがお手軽なのだが、根本的な対処を考えると 2. をやっておいたほうがいいかもしれない。(またはこの問題が起こりにくい Type B+ を使うというのも手だ。価格差もあまりない。)

Type B 買っちゃったよ! という人は、下記を参考にしてバイパスコンデンサの増設または交換をするといいかもしれない。(はんだごてを扱ったことがない人は素直に諦めて B+ を買うか、または今からはんだごての腕を磨くしかないかもしれないが)

RaspberryPiにコンデンサ追加で電源強化

私もRaspberry Piのコンデンサを交換してみた。 - じとめすきーの覚え書き

ただし、どちらの方法にも留意点がある。まずバイパスコンデンサの増設。既設のコンデンサを剥す必要がないので、はんだ付けに失敗する可能性は低いのだが、問題はケースに収めようとしてコンデンサの足を曲げると、その真下にあるのはLDOレギュレータなのである。LDOレギュレータは安価なのだがとにかく変換効率が悪く、おそらく四分の一程度が熱として放出されてしまっている。

http://blog.minicube.net/2013/01/raspberry-pi33vldo.html

つまり、このLDOレギュレータの熱で電解コンデンサを炙っちゃうことになるのだ。放熱対策をしっかりやる必要があるだろう。

次に既設のコンデンサを剥す場合。これはもうご紹介先のブログの記事の通り、うまくやらないとランドを剥いでしまう可能性があるので、はんだごてをうまく使える人でないとちょっとおすすめできない。ただ、この方法でやればLDOレギュレータで炙られることはないので、長期運用を考えるならこちらのほうがよい。

Type B+

Type B+ は LDOレギュレータではなくスイッチングレギュレータに変更され、そのせいか Type B で目立っていた電源の問題はかなり影をひそめた。ひとつだけ気を付けなければならないのは、USBポートへの給電能力自体はそれほど向上していないにUSBポートだけは4つへ倍増してしまったので、「つなぎ過ぎればアウト」というのはあまり変わらない。4つあってもなあ、と思うのだが…

Raspberry Pi と玄箱HG とのベンチマーク比較

この二つを比較したベンチマークがそういえばなかったな、と思い出したので UnixBench をとってみた。いや、今更玄箱HGでベンチマークとる人もいないか…

玄箱HG

HDD は Seagate ST340015A。実はこのディスク、玄箱HGと同様10年きっちり動き続けた。よく動いてるなと感心する。

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.2)

   System: kurohg: GNU/Linux
   OS: GNU/Linux -- 2.4.17_mvl21 -- #24 2004年 10月 19日 火曜日 17:17:03 JST
   Machine: ppc (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0:  (173.7 bogomips)

   03:27:36 up 6 days,  4:06,  1 user,  load average: 0.59, 0.26, 0.10; runlevel

------------------------------------------------------------------------
Benchmark Run: Thu Sep 11 2014 03:27:36 - 03:56:03
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables         511136.7 lps   (10.1 s, 7 samples)
Double-Precision Whetstone                      135.4 MWIPS (10.0 s, 7 samples)
Execl Throughput                                154.8 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         32450.8 KBps  (30.1 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           11691.5 KBps  (30.1 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks         51555.6 KBps  (30.1 s, 2 samples)
Pipe Throughput                              109310.8 lps   (10.1 s, 7 samples)
Pipe-based Context Switching                  52269.0 lps   (10.1 s, 7 samples)
Process Creation                                668.5 lps   (30.1 s, 2 samples)
Shell Scripts (1 concurrent)                    308.1 lpm   (60.4 s, 2 samples)
Shell Scripts (8 concurrent)                     42.5 lpm   (60.8 s, 2 samples)
System Call Overhead                         166635.8 lps   (10.1 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0     511136.7     43.8
Double-Precision Whetstone                       55.0        135.4     24.6
Execl Throughput                                 43.0        154.8     36.0
File Copy 1024 bufsize 2000 maxblocks          3960.0      32450.8     81.9
File Copy 256 bufsize 500 maxblocks            1655.0      11691.5     70.6
File Copy 4096 bufsize 8000 maxblocks          5800.0      51555.6     88.9
Pipe Throughput                               12440.0     109310.8     87.9
Pipe-based Context Switching                   4000.0      52269.0    130.7
Process Creation                                126.0        668.5     53.1
Shell Scripts (1 concurrent)                     42.4        308.1     72.7
Shell Scripts (8 concurrent)                      6.0         42.5     70.8
System Call Overhead                          15000.0     166635.8    111.1
                                                                   ========
System Benchmarks Index Score                                          66.1

Raspberry Pi Type B

使っているのは KINGMAX の 8GB SDHC (一応 Class10のやつ)。おい、長期運用するんじゃないのか。これ。

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.2)

   System: raspberrypi: GNU/Linux
   OS: GNU/Linux -- 3.12.22+ -- #691 PREEMPT Wed Jun 18 18:29:58 BST 2014
   Machine: armv6l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv6-compatible processor rev 7 (v6l) (0.0 bogomips)

   03:22:47 up 8 min,  1 user,  load average: 0.88, 0.79, 0.41; runlevel 2

------------------------------------------------------------------------
Benchmark Run: Thu Sep 11 2014 03:22:47 - 03:51:02
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        1680433.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      268.6 MWIPS (10.0 s, 7 samples)
Execl Throughput                                234.5 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         40456.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           12784.3 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks         96520.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                              171084.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  23291.0 lps   (10.0 s, 7 samples)
Process Creation                                748.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                    419.5 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                     53.2 lpm   (60.9 s, 2 samples)
System Call Overhead                         390523.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    1680433.3    144.0
Double-Precision Whetstone                       55.0        268.6     48.8
Execl Throughput                                 43.0        234.5     54.5
File Copy 1024 bufsize 2000 maxblocks          3960.0      40456.9    102.2
File Copy 256 bufsize 500 maxblocks            1655.0      12784.3     77.2
File Copy 4096 bufsize 8000 maxblocks          5800.0      96520.2    166.4
Pipe Throughput                               12440.0     171084.9    137.5
Pipe-based Context Switching                   4000.0      23291.0     58.2
Process Creation                                126.0        748.3     59.4
Shell Scripts (1 concurrent)                     42.4        419.5     98.9
Shell Scripts (8 concurrent)                      6.0         53.2     88.7
System Call Overhead                          15000.0     390523.5    260.3
                                                                   ========
System Benchmarks Index Score                                          95.1

Index Score で見れば玄箱HGの4割増し程度の性能である。性能だけを考えれば、普通にどこかの安いVPSでも借りた方がよろしい。特に Web がらみは。ただ、自分専用のメールサーバをやらせるとか簡単なスクリプトを試すとか、そういう目的であれば十分に使える。

はじめに

Raspberry Pi が発売されてからそれなりの年月が経ちましたが、もともとが教育用コンピュータであるという位置づけ、そしていろいろなことで遊ぶという用途が喧伝されたことから、Raspberry Pi を長期運用するということがあまり語られていないように思います。そもそもの用途とちゃうやろ、と言われるとそれまでなのですが。

ただ、自分は Raspberry Pi をこれまで使ってきた玄箱HG(結局10年ほど使ってきたことになります。実際にはまだ動いています)の代わりとして使いたいという気持ちがあるので、Raspberry Pi もまた長期にわたって使い続けたいと思っております。

このblogが、同じく Raspberry Pi を長く使い続ける方のご参考になれば幸いです。