SSブログ

Raspberry Pi + HP ProLiant G7 ML110 : ファンの配線 [PC]

前回の記事を見直して、追記です。

私は実験しながら配線を作ったのであのような配線になりましたが、作るだけならもっと単純に出来ます。…という自分もごちゃつきがやになったので、配線をリワークしました。

PWM信号をRaspberryPiにつなぐ配線だけ変更が必要です。それ以外は標準のままで良いです。
なので、ファンのコネクタをこうします。
raspi_fanhaisen.pngファンコネクタ改造
コネクタの青い線だけ外すか切るかして浮かし、延長します。これを3本まとめてRaspberryPiのヘッダの12ピン(外側の6ピン目)に接続すればOKです。コネクタは購入時の通りマザボの端子に接続します。BIOS騙しのプラグも必要ありません。

ホントは黒い線も延長してRaspberryPiのヘッダの6ピン(GND)に接続した方が良いでしょう。PWM信号のGNDがRaspberryPi~USB~電源~マザボ~ファンとかなり長い距離を廻ってます。が、PWM信号の周波数が低いこと、ほとんど電流が流れないこと、制御対象がおおざっぱなことから大丈夫な感じです。心配な方はGNDも配線し、PWMの線とツイストにし、さらにPWM信号に制限抵抗を入れると良いかと思います。

前の記事の配線からするとだいぶスッキリしました。
ただし、この配線にした場合は、ファンは止められません。
G7はファンが止まると強制シャットダウンします。まぁ、止めないから良いですが。
タグ:Raspberry Pi

Raspberry Pi + HP ProLiant G7 ML110 : ファン制御 [基板]

Raspberry Piをネットから回転制御可能なファンコンに仕立てました。

標準のDELTAのファンは、確かにうるさいけど物は良さそうです。うるさいのはG7のファン制御が大味だからで、絞れば風量の割りに静かだと思います。厚みがあるからですかね。これを眠らせておくのはもったいないかなと。

RaspberryPiはGPIOピンを何本か持ってます。2.54mmピッチのヘッダに出てるので配線も簡単です。このGPIOをPWM制御してやればDELTAのファンを静かに回せます。ついでにネットワーク経由で回転速度を変えることも可能!

さぁ、作るぞ!・・・って世の中、この程度の事はもう出来上がってました・・・
Gordons Projects
GPIO制御の汎用ライブラリ+コマンドです。ありがたや~後でThanksとReplyを入れとこ。

DELTAのデータシートによるとPWM信号は30Hz~30KHzまで対応可能とのこと。G7のPWM信号は24KHzと意外と高めです。ソフト制御だとちょっと…無理じゃないですがそこまで必要ないですし。1KHz以下にしてタイマーで制御するとルーズで良いかな?
24KHzなんて不必要に高い周波数にしてるのは、ひょっとしてコイル鳴きを避けるためかも?手元の実験では出てませんが、ファンから1KHzの「ピー」なんてのが聞こえたらそりゃ困ります(笑)

ということで、とりあえずG7オリジナルに近い周波数にしてみます。RaspberryPiにはPWM制御回路が2系統入っていて(アナログオーディオ出力用です)、1系統がピンヘッダに出てます。これを使います。3つのファンを同じPWM信号で制御する事になりますが、まぁ気にしない。
アナログオーディオ出力のフィルタを取っちゃえばミニピンジャックから2系統出せますけどね。
…PWM制御回路を使えば、レジスタ設定すれば自動的に延々と信号が出力されるので、制御プログラム作ったり常駐させたりしなくて済むなぁ、そっちの方が楽だなぁ、って手抜きのバックグラウンドもあります(笑)

前置きが長いですが、さて、作業開始。
まずは上のURLからライブラリを貰ってきます。あっても害はないのでインストールもしてしまします。
$ mkdir wiringpi
$ cd wiringpi
$ wget http://project-downloads.drogon.net/files/wiringPi.tgz
$ tar xfz wiringPi.tgz
$ cd wiringPi
$ make
$ sudo make install
$ cd ../gpio
$ make
$ sudo make install

試しにコマンドから
$ sudo gpio mode 1 pwm  ピン1をPWMモードに設定
$ sudo gpio pwm 1 数字  PWMの値を設定

と実行するとGPIO18、ヘッダピンの12ピン(外側の6列目)にPWM波形が現れます。簡単。

ただ、標準設定ではオーディオとかで使われるPWM出力のアルゴリズムが設定されてます。出来るだけbit位置を拡散させるような波形出力です。
ファンの制御ではそんな高精度の制御は必要ありません。単純なデューティー比が変化するだけの出力が欲しいです。RaspberryPiのCPU、BC2835はこのモードも持ってます。詳細はデータシートへ。
bc2835ds_pwm0.pngPWM制御(抜粋)
MSENビットを'1'にして、24KHzぐらいにS(Rangeレジスタ)を設定して、Dataレジスタに比率(0~Range)を書き込めば良さそうです。

これまた手抜きで、初期化ルーチンに値を埋め込んでしまいます。wiringPi.cを変更。
$ diff wiringPi.c.org wiringPi.c

368,369c368,371
<       *(pwm + PWM0_DATA) = 512 ;
<       *(pwm + PWM1_DATA) = 512 ;
---
>       *(pwm + PWM0_RANGE) = 25 ;
>       *(pwm + PWM1_RANGE) = 25 ;
>       *(pwm + PWM0_DATA) = 4 ;
>       *(pwm + PWM1_DATA) = 4 ;
371c373
<       *(pwm + PWM_CONTROL) = PWM0_ENABLE | PWM1_ENABLE ;
---
>       *(pwm + PWM_CONTROL) = PWM0_ENABLE | PWM1_ENABLE | PWM0_MS_MODE | PWM1_MS_MODE;

Range(周期)を設定したのと、MSENビットをセットしただけです。PWM回路の周波数は600KHzにセットされてるので、600/25で24KHzぐらいです。
もう一度、ライブラリとgpio両方のmake clean, make installをします。Linux側の作業は以上。

配線を作ります。まずは電源まわり。12Vを電源から直接黄線へ、同じく電源からGNDをファンの黒線へつなぎます。これには多少電流が流れます。全開だと3台で2Aぐらいです。
制御系。ピンヘッダの6ピン(外側3列目)がGND、12ピン(外側6列目)がPWM出力です。RaspberryPiのPWM信号をファンの青線に、GNDを黒線とつなぎます。ほとんど電流は流れないはずですが、一応保護抵抗付けておきます(数10~100Ω程度で適当に。直結でも問題ないはず)。
raspi_haisenn.png結線図

テスタで配線チェックしたら、電源とコネクタを接続します。
raspi_jikkenfuukei.JPG実験風景
raspi_pwmsetuzoku.JPGヘッダ部分
3ピン目の黒がGND、6ピン目の青がPWM信号です。

電源を入れるとファンが100%フル稼働するはずです。やかましいです(笑)。固定しないとファンが自走します。少し我慢します。SSHでRaspberryPiにログイン、コマンドを打ちます。
$ sudo gpio mode 1 pwm  ピン1をPWMモードに設定
$ sudo gpio pwm 1 3     ぎりぎり最低。12%ぐらい。これ以下だと止まる
$ sudo gpio pwm 1 25    100%フル稼働
$ sudo gpio pwm 1 7     なんとか静音って言える?30%ぐらい
$ sudo gpio pwm 1 0     停止

こんな感じで速度調整します。

ファン3台、ひとまとめの制御ですが、私としてはこれで十分かなと。
2系統までならハードのPWM回路が使えます。3系統個別制御となるとソフトウェアでPWM信号を作成する事になると思います。

ということで、ESXi用nfsサーバー兼ファンコントローラーという妙な物が出来ました。後はネットリモコンと自動Tweet機能とネットラジオ辺りを兼用させて・・・いや、兼用せずに買えば良いんですが。台数制限なくなったし(ただしリードタイムは8/6現在16週間!)。

最初はブラウザから制御~なんて思い描いてましたが、「一度セットしたらほとんど変えないんだし、SSHからコマンドでいいんじゃね?」って一瞬でも思った時点で負けました。
タグ:Raspberry Pi

Raspberry Pi : nfsサーバー [基板]

前回の結果。何とか実用になる事がわかりました。

RaspberryPiのUSBに接続したメモリをNFSでexportして、ESXiのデータストアに設定、OpenIndianaをコピーして、HDDコントローラーをPCIパススルーさせてブート、zfsをマウントさせてNAS他の動作が出来ました。HDDのスピンダウンも効いて約15Wの節約です(手間かかる節約だ~w)。途中から節約以外のことが目的になってきてますが、目的を見失うのはいつものことかと…

ローカルのSSDからだと30秒足らずで立ち上がりますが、RaspberryPiのnfsからだと2分弱かかります。これがデメリット。逆に言うとそのくらいの差です。一度立ち上がってしまえばデータのやりとりにnfsは使わないので、さほどデメリットとは感じません。

OpenIndiana以外の仮想マシンは、仮想マシンのOpenIndianaのファイルシステムをnfsやiscsiで公開して、ESXiのデータストアにしてます。うっかり先にOpenIndianaを落としちゃうとパニックです(笑)

ATX電源の5VSB(バックアップ出力)をRaspberryPiの電源にしてます。
Ethernetはマネージメント用のポートの穴(オプションでiLOのポートを分けるところ)に通しています。Ethernetのオスメス延長ケーブルって見かけないので、そのうち作りますかね~

nfsだけやらせておくのもつまらないので、なにか他のこともやらせてみたいな、ということで、次はG7の標準ファンのPWM制御を任せてみます。いわゆるファンコントローラーです。
タグ:Raspberry Pi

Raspberry Pi : セットアップ nfs [基板]

たぶんiscsiの方が効率良いんでしょうが、使い方がよくわからない。
RPi Guidesの「iSCSI support and boot」あたりが参考になりそうですが、targetの設定がいまいち…カーネル作ってしまえば、後は普通に動くのかな?

ということで、軟弱者の私は何となく楽そうな方に転ぶのでした。

今後も使うであろう、RaspberryPiのカーネル構築環境を作ってしまいます。
クロスコンパイル環境として、VMwareにUbuntuをインストールしました。セルフコンパイルも可能みたいですが、完了まで6時間とか12時間とかいう数字が検索されます(笑)

まずUbuntu上での作業。クロス環境とカーネル構築周りをインストール。所々sudoが必要です。
$ apt-get install gcc-arm-linux-gnueabi
$ apt-get install make
$ apt-get install git-core
$ apt-get install ncurses-dev

Linuxのソースを展開。
$ mkdir raspi
$ cd raspi
$ git clone https://github.com/raspberrypi/linux.git
$ cd linux

カーネルコンフィグ。
$ cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig

File Systems→Network File Systems→NFS server support周りをチェック。
よくわからないので一通り全部w
raspi_kernel_config.png

make開始。
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k

以前にRaspberryPiのLinuxを入れたSDカードをUbuntuにマウントします。bootとrootのパーティションに分かれてるので注意。
$ mv <SD_boot>/kernel.img <SD_boot>/kernel.org  バックアップ
$ cp arch/arm/boot/Image <SD_boot>/kernel.img  カーネルをコピー
$ make ARCH=arm modules_install INSTALL_MOD_PATH=<SD_root>  モジュール


だいぶはしょりましたが、とりあえずこれでOK?
SDカードをRaspberryPiに挿して起動。

NFSサーバーをインストール。
# apt-get install nfs-kernel-server

ついでに固定IPアドレスにします。
# vi /etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet static
  address   192.168.0.9
  network   192.168.0.0
  netmask   255.255.255.0
  broadcast 192.168.0.255
  gateway   192.168.0.1
  dns-nameservers 192.168.0.1


リブート後、サービスを確認。
# service --status-all
 [ - ]  nfs-common
 [ - ]  nfs-kernel-server
 [ - ]  rpcbind

「rpcbind」というのがportmapの代わりらしいです。最初はサービスは立ち上がってない状態です。
exportsの編集。うーむ、いい加減(笑)
# mkdir /srv/esxi
# chmod 777 /srv/esxi
# vi /etc/exports

/srv/esxi  *(rw)

サービス立ち上げ。
# service rpcbind restart
[ ok ] Stopping rpcbind daemon....
[ ok ] Starting rpcbind daemon....
# service nfs-kernel-server start
[....] Exporting directories for NFS kernel daemon...exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/srv/esxi".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x

. ok
[....] Starting NFS kernel daemon: nfsdrpc.nfsd: address family inet6 not supported by protocol TCP
 mountdrpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
. ok

ワーニング出てますが大丈夫そうです。ダメだとエラーが出ます。serviceコマンドで確認します。
これで立ち上がってるようなのですが、リブートすると止まってます。サービスの自動起動方法はまた次回ということで。

ESXiからマウントしてみます。
esxi_raspi_mount.png
一応無事マウント出来たようです。

SSHでESXiに入り、仮想マシンをコピーしてみます。vmkfstoolsでthinを指定しないと(普通のcpコマンドとかだと)容量が増えるので注意です。
vmkfstools -i <local>/OpenIndiana.vmdk -d thin <pi>/OpenIndiana.vmdk

Clone: 20% done.

…半端なく遅い…目測(笑)100KB/s。未完了。

WEBにあった「RaspberryPiのnfsは遅いぞ~特に書き込みはな~覚悟しろ」的な発言のとおりでした。読み出しはまだましなようですが。仮想マシンのブートに耐えられるか、とりあえず試してみようかと。

やっぱりiscsiの方が良いのでしょう。どこかに簡単な方法ないかな~

<追記>
あまりに遅いので、USBに挿したメモリをexportしました。すると1.5MB/sほど(目測)。速くはないですが、だいぶ高速化されてます。これなら使える?
タグ:Raspberry Pi

Raspberry Pi : セットアップ [基板]

公式の通りに行ってみます。

Raspberry PiのWEBから「Raspbian “wheezy”」を落としてきます。
「Win32DiskImager」を使ってイメージをSDカードに書き込みます。2GB以上なら大丈夫そうです。容量以上のSDカードでも良いです。ディスク領域は後で拡張できます。
MicroUSBに電源、HDMIにモニタ、Ethernet、USBにキーボードマウスをつなぎ、SDカードを差し込んで電源On。数十秒でこんな感じの設定画面が立ち上がってきます。これはSSHからコピペしていて罫線とか化けちゃってますが、画面にはちゃんと出てます。
     lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
     x Raspi-config                                                                 x
     x                                                                              x
     x           info               Information about this tool                     x
     x           expand_rootfs      Expand root partition to fill SD card           x
     x           overscan           Change overscan                                 x
     x           configure_keyboard Set keyboard layout                             x
     x           change_pass        Change password for 'pi' user                   x
     x           change_locale      Set locale                                      x
     x           change_timezone    Set timezone                                    x
     x           memory_split       Change memory split                             x
     x           ssh                Enable or disable ssh server                    x
     x           boot_behaviour     Start desktop on boot?                          x
     x           update             Try to upgrade raspi-config                     x
     x                                                                              x
     x                                                                              x
     x                                                                              x
     x                   <Select>                   <Finish>                    x
     x                                                                              x
     mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

だいたい上から順番に設定します。
今回はデスクトップとしては使わないつもりなので、SSHイネーブル、起動時にXは立ち上げない、を設定します。試しにXは立ち上げてみましたが、やはり色々非力なようで、全く応答しなくなるときがたまにありました。
<Finish>で保存、リブート。設定が完了するまでは毎回この画面が立ち上がるようです。
ちなみにこのツールは「sudo raspi-config」でいつでも立ち上げられます。

リブート後はSSHから入ります。デフォルトのユーザ(pi)は「sudo su -」でrootになれます。
試しに「apt-get update」を実行。ネットワークとかが問題ないかの確認になります。

次は目的の一つ、ESXiのデータストレージにチャレンジです。iscsiかnfsの導入です。
タグ:Raspberry Pi

Raspberry Pi : キター [基板]

結構時間かかりましたが、無事到着しました、Raspberry Pi。
paspi_hako.JPG
外箱。USBメモリは比較用。
paspi_nakami.JPG中身
中身は基板とペーパーが2枚ほど。
paspi_omote.JPG
基板の表。
左下のMicroUSBが電源。5V 700mA。Linux実行時の消費電力は3W程度でした。意外と大きい?
paspi_ura.JPG
裏面。SDカードのソケットがやたらでかく見えます。
タグ:Raspberry Pi

HP ProLiant G7 ML110 Wiki [PC]

月頭ぐらいからアクセス数が妙に増えてるな?と思ったら、まとめWikiとかにリンクが貼られていたんですね。こんなつたない記事にありがとうございます。

そんなWikiから書き忘れてた事を一つ。
「各チップ詳細」の項目
「IDEモードでは2つのIDEコントローラとして認識する。」
おぉ!ってことで試してます。2chをESXiのデータストア用として、4chをパススルーさせてOpenIndianaへ。途中までは上手くいったのですが…
パススルーまでは設定できたのですが、仮想マシンのOIから上手く認識されません。仮想IDEコントローラーとぶつかってるのかな?とも思って光学ドライブほかをSCSI接続にして、「ide.present = "FALSE"」の状態にしてもみましたがダメでした。インストーラーからもドライブが無いと言われます。

この件はさっさとあきらめました(笑)

HP ProLiant G7 ML110 電力 [PC]

昔から日記系のモノがダメで、このBlogも早速週記どころか月記になりそうな状態ですが、まぁそんなモンって事で。

落ち着くようで落ち着かないこのサーバーですが、今はこんな構成です。

換えたところ。
電源:EA-380D
CPU:Xeon E3 1220L
Mem : 4G+4G
他、ファンはCPUと背面を1500rpmの静かなファンに。前面はそのまま。

OS : VMware ESXi 5(ゲストはOpenIndianaほかWin、Linuxいくつか)
ドライブ構成
SSD 64GB(ESXi用データーストア)
2.5inch 1TB (RDM,zfs。homeとか一時とか常時アクセス用)
3.5inch 2TBx4 (RDM,zfs,raidz2。データ置き場。普段はスピンダウン※)

この状態での電力。
・コンセントつなぐとiLOとEtherポートがアクティブになるので3Wほど食います。
・起動後アイドル状態で40~45W。現在のESXiはこの状態。
・HDDもスピンダウンすると25Wほど※。
・CPUがフル稼働すると+15~20Wぐらい。

zfsのscrubなどHDDとCPUに負荷をかけるような処理をすると60W前後です。

※今はESXiでRDMにしているのでスピンダウンできない。値は実験的に外部NFSサーバーにESXiのデータストアを置いて、HDDのコントローラをパススルーさせた場合です(このときはスピンダウンする)。低消費電力のnfsかiscsiサーバーたてたらこの状態にする予定です。

HP ProLiant G7 ML110 静音化 [PC]

さて、さすがにうるさくなってきました(笑)

ということで、静音化挑戦です。ファンコンを作る意気込みです。雑誌付録のCPUボードがたくさんあるし。

まずはオシロで配線を当たってみます。こちらはCPUファン。
g7fan_wave1.png
黄:12V
青:PWM
緑:GND?ノイズ?

…おや?緑が回転検知で回転数に応じたパスルでも出てるのかと思ったのですが…
緑のはおおむねGND。PWMパルスに同期して誘導ノイズらしきものが見えるだけです。回転数とは全く関係なし。

データシートを当たってみます(順番が逆だぞ!)
Delta(PDF注意)
ページVIに回転検出関連の記述があります。ファンの基板にO/Pと書いてあるのが緑の信号。ちょっとだけ抜粋(ダメかな?)。
rotation_detector.png回転検知
ファンが止まるとオープンになる端子のようです。実験。
g7fan_wave2.png強制停止
緑が3.3Vぐらいになってます。
g7fan_wave3.png
その後は全てのファンがほぼ100%に。アラートのブザーよりうるさい(笑)

なので、BIOS騙すには緑をGNDに落とすだけでOKって事になります。
Fan_Cheat1.JPGいかさまプラグ
…ファンコンでも何でもねぇ(笑)延長コードより簡単だ。
Fan_Cheat2.JPGいかさまプラグ絶縁
絶縁テープ巻いてできあがり。

これをマザボのコネクタに挿します。方向に注意。逆に挿すと12VとPWMがショートするので、ロジック系にプルアップ抵抗(と寄生ダイオード?)経由で12Vがかかるかも知れません。何かしら安全策は採ってると思いますが、止めましょう。

元のファンの代わりに、昔8cmファンと間違えて買ってきちゃって使い道がなく埋もれてた9cmの1500rpmファン(それも2つ)を、CPUと背面のファンと交換します。どこで役に立つかわからんもんですな~PWM無視して電源直結です(黄色と黒をファンの電源に。もしくは電源から分岐して直結)。十分静かなので良しとしてます。BIOS制御のPWM情報を尊重したい場合は青の配線をPWMに入れれば良いかと。
前面のFanはそのままにしてます。PCIeに何か挿した場合はこれも交換ですかね。

ちなみに青と緑の信号は、抵抗でプルアップしてて、オープンコレクタ(ドレイン)でGNDに引っ張ってる信号だと思われます。Hレベルの電圧はプルアップ先で変わるので、今回みたいに3.3Vと5Vが共存してます。
マイコン等とつなぐときは、特にマザボに返す緑の線はプッシュプルにせずにオープンコレクタにした方が良さそうです。

しばらく運転してますが、とりあえず大丈夫?負荷もかけてないし、まだまだわかりませんけど(追記:一晩中CPU・HDD負荷かけてみたけど平気でした)。
iLO_Fan_Cheat.pngiLO読み

決まり文句ですが、自己責任でお願いします。
また、確実にエアフローは悪化してます。特にHDDの温度は注意が必要でしょう。夏場は心配です。小径なので、ちょっと速め(2000~2500rpmぐらい?)のファンにして、PWM制御入れようと思ってます。

HP ProLiant G7 ML110 騒音その2 [PC]

ここんところ涼しくて騒音対策を忘れそうになりますが…
検索とかで間違えて来てしまった方、最初に謝っておきます。すみません。手抜です。

一番うるさいのは背面ファン(Fan1)。一方CPUファン(Fan7)は20W Xeonの効果あってかフルロードでも全然上がりません。うるさい子は内側に、ってことでこの2つを交換。前面ファン(Fan8)は拡張カードが無ければゆるゆるです。
交換と言っても物理的にはそのままで、コネクタを入れ替えるだけ。CPUファンのケーブルを元々背面ファンの刺さってたコネクタへ。これは届きます。背面ファンのケーブルはCPUファンのコネクタへ。これは届かないので、延長ケーブルを作ります。20cm程度伸ばせばOK。
コネクタは2mmピッチ、2x3の6ピンヘッダ。普通の2.45mmピッチでは無いので注意。この手の物は大抵秋葉原の千石電商で揃います。一個30円のヘッダと圧着端子を5ピン分、ピンヘッダオスを購入。将来ファンコントローラー作ると思うので余分に。
R0026209.JPG
ケーブルは4本。GNDのループバックがあるのでコネクタ側は5ピンになります。ファン側はオスのヘッダにハンダ付け。ホットボンドで固めて絶縁テープ巻いてできあがり。ケーブルがばらつかない程度に熱収縮チューブも一応装備。
R0026213.JPG
写真まで撮っておいてなんですが、冗談ですm(__)m。のつもりでした。
ところが意外と効きます。風切りの高い音がケース内になるので気持ち静か。ファンコントローラー作るまでのその場しのぎとして利用中。CPUが標準の60Wぐらいだと負荷かけたときに逆にうるさくなるかも知れませんが…

後はファンコントローラーをいつ作るか…か。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。