玄箱でNetBSDを動かす

「hardware/power-control」の編集履歴(バックアップ)一覧はこちら

hardware/power-control」の最新版変更点

追加された行はこの色になります。

削除された行はこの色になります。

 * 玄箱の(外部からの)電源制御
 
 ** &color(red){警告}
 これらの実験はハードウェアの改造を伴う。当然ながらメーカー保証は望めない状態となる。
 また、はんだ付けに不慣れであると簡単に故障し、再起不能となるおそれがある。
 電源まわりにはんだ付けする際、ショートをしてしまうと発煙、発火のおそれがある。最悪、火災や感電によって死に至るおそれもある。
 これらを総合的に考慮し、自己責任のもとに実験遂行の可否を判断すること。貴方以外のだれも責任は負わない。
 ----
 ** AC電源復旧時の自動電源復旧
 サーバ用途では万が一の停電の場合出来る限り自動的に復旧してほしいものだが、残念ながら玄箱は復旧しない。
 本来ならばAVRのプログラムを書き換えて制御するところだろうが、ここは簡単なハードウェアを追加してこれを実現してみる。
 
 *** 回路図
 &ref(auto-poweron.jpg)
 回路図はフリーのBSch3Vを使用して記述した。(作者に感謝)
 *** 結線
 VCCは+5Vへつなぐ。細かいところなのでショートに注意。テスタ等でチェックすること。
 &ref(vcc_5v.jpg)
 SWは玄箱の電源スイッチのうち、GNDで無いほうにつなぐ。(前列左側がGND)
 &ref(pow_sw.jpg)
 GNDはどこか適当なGNDへつなぐ。
 *** 動作概要
 タイマICのNE555を2つ(またはNE556を1つ)使用し、各々を連動させることで電源SWにつながったトランジスタを駆動する。各タイマ回路はワンショットマルチバイブレータを構成している。
 左側(U1)のNE555は30秒タイマである。電源がONされると同時にR1,C1によって負パルスが生成され、タイマがスタートする。
 タイマの定数はR2,C2によって決定する。
 TP1の電位は30秒の間、正となる。30秒経過すると負(GND)になる。このダウンエッジを捉え、短い負パルスを生成しているのがQ1,C3,Q2である。
 短い負パルスを受け、U2のタイマが始動する。このタイマの定数はR6,C4によって決定する。
 U2のタイマによって、約1秒の正パルスが生成される。これでQ3のトランジスタが駆動され、オープンコレクタ接続されたスイッチが閉じられる。
 以上により、AC電源復旧30秒後に玄箱の電源が投入される。
 SW1はこの機能の有効/無効を選択するために入れてある。
 即座に復旧させないのは、チャタリングによる故障を防ぐためである。
 *** 時定数計算
 555のタイマ時間は (1.1×C×R)(秒)で計算できる。左側は(1.1×47×10^(-6)×680×10^3)であるので、35.156(秒)となる。実際には各素子の誤差や経年変化、温度特性等もあるので凡その目安である。
 右側も同様に、(1.1×10×10^(-6)×100×10^3)=1.1(秒)となる。
 より正確に時間を合わせるには、半固定抵抗を使用して調節することになる。
 
 *** 補足
 タイマ時定数を決定しているCR*以外*の定数はかなりいいかげんである。これは手持ち部品の不足に起因している。
 Tr(UN4219)は抵抗が入っているものを使用しているが、この抵抗値はベースにシリーズなものが1k, エミッタ-ベース間は10kである。2SC1815等で代用する場合はこの値を参考にされたし。
 (もちろんこれを使用したのも部品不足によるものであり、特に抵抗を必要としていない部分も有る。)
 TP1-GND, TP2-GNDに1k程度の抵抗とLEDを直列につないだものを接続すると、タイマの動作が目に見えるようになる。
 消費電流実測値は、動作中が約10mA, 動作完了後が約5.5mAである。これらは上記デバッグLEDを含んでいるため、実際には動作中はもっと小さいと思われる。
 
 *** バグ
 回路図は実験成功後の基板から写し取ったので、写し取りミスが有るかもしれない。
 C1,C3の電荷は放ったらかしなので、何か問題があるかもしれない。
 基本的に正論理で構成したが、一部負論理とすることで部品点数が削減できるはずである。
 ----
 ** Wake On LANパケットによる玄箱のリモート電源ON
 *** きっかけ
 玄箱はWoLが使えない。内蔵LANコントローラへ電源が供給されていないため、実現できる可能性はほぼ無い。
 しかしながら、山下さんBBSに書かれた文章(byそのさん)をきっかけに調査を開始した。
 概要としては、外部にWoL対応のNICを用意し、そちらで受け取ったWoLイベントを玄箱へ通知することで電源ON、を実現しようというもの。
 通常のWoL対応NICというものはただ単に+5VSBを供給するだけではWoL動作せず、PCIバス側からの制御が必要であり、+5VSBを供給しておくことでこの制御された情報を覚えておくことで実現していると思っていたため、ダメ元でとりあえず実験を行ってみた。
 # 他のPCに挿した状態でWoLケーブルを引っ張ってくる、というのは100%動きそうだが現実的で無いと思うので実験していない。
 # (昔のタワー型PCに玄箱を格納しておく形を採るならば現実的かもしれないが...)
 
 *** プレ実験準備&プレ実験
 いまどきのPCI2.2での電源制御では無い、WoLケーブルがつながるタイプのNICを探したり借りたりして実験。
 PCIバスは挿さずに+5VSB,GND,WoLのみで実験。+5VSB-GNDにはスイッチング電源、WoL-GNDにはLED+抵抗を接続。
 結果、RTL8139Cが実装されたCorega FEther PCI-TXS(未開封:新古品)がWoLパケットに反応した。(いまのところこのNICのみ正常動作を確認)
 予想外の結果に驚いたが、これでNICの廃物利用(失礼!)が出来るならと、実験をすすめることにした。
 # BBSには書かなかったが、3comのNICも動作していない。最安値が動作したのは嬉しい?限り。
 # なお、現在出回っている&color(red){8139C+では動作するかどうか不明}。
 
 *** 回路動作(予定)
 プレ実験ではLEDはWoLパケットを受けると点灯し、その後+5VSBを切るまで点灯しつづけた。というわけで次のような動きを行うものを作ることにする。
 (これは当該品ならではの動作かもしれない。8139のWoL信号はプログラマブルであり、アクティブハイ、アクティブロー、ポジティブパルス、ネガティブパルスの4種類あるため。一応デフォルトはアクティブハイ。)
 
 - WoL信号の立ち上がりエッジを捉え、1秒タイマを起動する。タイマの出力は正パルス(1秒間ONになる)。
 - タイマの出力を2つに分け、1つはオープンコレクタのトランジスタを駆動してスイッチに接続する。もう一つはNICの+5VSBを切るためにトランジスタによるスイッチング回路へ向ける。
 
 これでWoLパケットを受けると1秒間スイッチが押され、同時にNICの電源が遮断されることでWoL受信状態がクリアされることになる目論見である。
 
 *** 実験準備(回路検討)
 部品が入手出来た(Thanks to tyamaさん)ので、回路を検討。
 部品は以下の通り。
 - LM555(NE555同等品)×1
 - UN4219(抵抗入りTr)×2
 - 1秒タイマ用時定数部品
 -- 10uF
 -- 100kΩ
 - リレー(2回路)
 - 保護Di
 - 抵抗を少し(シリーズやプルアップ/ダウン等)
 - コンデンサも少し(+5VSB-GND間:リレーの先)
 
 入力のWoL信号はアクティブハイなので、ダウンエッジを取る555のためにTrで反転する。
 555はワンショットマルチバイブレータで1秒タイマを構成する。(上の回路図の右側を参照)
 555の出力はTrで受けてからリレーにつなぐ。(ソリッドステート化は後回し _o_)
 - LM555のドライブ能力は高い(200mA)ので、そのまま繋いでも良いかもしれない。
 - LMC555(CMOS版)でも100mAなのでまだ余裕が有る。
 リレーのSWの一方は+5VSBへつなぐ。(アクティブ時に開(断))
 もう一方は玄箱の電源SWにつなぐ。(アクティブ時に閉(入))
 リレーはインピーダンスが高いもの(5Vで約30mA駆動)なので、残留磁束での逆電圧を防ぐため保護ダイオードを入れておく。
 
 *** 回路図
 &ref(wol_circ.jpg)
 (D1は1N4007;ちょっと見難い _o_)
 (RELAYは941H-2C-5D;秋月で購入)
 
 *** 単体実験
 &ref(wol_exp1.jpg)
 VCC-GNDに5Vのスイッチング電源を接続。
 5VSB-GND-WOLはNICに接続。NIC(PCI-TXS)はスイッチングハブに接続。
 WoLのマジックパケットの送信はNetBSD pkgsrcのnet/wakeupを使用。(wakeup xx:xx:xx:xx:xx:xx)
 実験なのでまだ玄箱へは接続しない。
 
 *** 単体実験結果
 5Vの電源をONすると、スイッチングハブのLEDが点灯(Link-Up)した。正常。
 NIC側のLEDは点灯しない。たぶんこんなものだろう。
 玄箱NetBSDからWoLパケットを送信。リレーが作動した音がし、1秒ほどで元に戻る音がした。正常。
 リレーが作動するとリンクLEDが消灯。元に戻ってから1秒ほどで再度点灯。
 連続して送出しても問題無し。
 もちろんリンクLEDが点灯していない時には空振りする。
 スイッチング電源をチャタリングさせても特に誤動作はしない様子。
 
 今のところ全く問題無し。このまま使えそう。
 
 *** 玄箱接続試験
 玄箱接続試験と言いながら、現在蓋が開いているLinkStation(MIPS)へ接続。
 接続先は前の電源自動復旧と同様。
 結果は成功(^_^)。(ここで失敗する内容は無いが...)
 まだ実運用にはいろいろ課題も多いので、今後解決する必要が有る。
 
 *** 現状の課題
 - 他に使えるNICが無いか
 -- 93C46の書き換えで対応出来ないか
 - 電流量測定
 - リレーをソリッドステート化
 - 筐体内への実装(基板実装の小型化)
 -- NICとの接続部分をどうするか
 - 電源自動復旧との統合
 
 (続く...かも)
 ----
 コメントが有りましたらどうぞ
-- べっ、べつにアンタのためじゃないんだからね!(ノ゚Д゚)ノシ$ http://e29.mobi/  -- 俺だ  (2011-12-15 22:30:24)
 #comment(size=50,nsize=20,vsize=5)
 ----
 ご連絡先: E.Kawauchi atto gmail dotto com
 #counter