/ クレア工房 / 電子工作 / SPARCstation の NVRAM の電池交換

SPARCstation の NVRAM の電池交換

本稿では SPARCstation に搭載されている NVRAM と呼ばれる電子部品の電池切れ対策について説明を試みています。 読者が本稿を利用した結果について、著者は一切の責任を負わないものとさせて頂きます。

1. NVRAM とは

1.1 一般的な事柄

NVRAM は Sun SPARCstation など (以下単に sparc) で使用されている半導体デバイスのひとつです。 一般には Non-Volatile RAM を略して NVRAM と呼ばれています。 また、時計回路を内蔵していることから Timekeeper RAM とも呼ばれています。 Timekeeper RAM は NVRAM の製品名でもあります。

NVRAM を取り扱う上で重要な知見が得られますので 各社から発表されているデータシートを参照しておくことをおすすめします。 NVRAM の主なメーカは ダラス社 (2002年現在、マキシム社)ST 社 です。

単に不揮発なメモリであれば NVRAM と呼ばれるものと勘違いされがちですが、 実際問題として NVRAM と呼ぶためにはその内部構造に RAM と呼ぶにふさわしい構造を有している必要があります。

フラッシュメモリを NVRAM と呼ぶことは、通常ではありません。 フラッシュメモリは書き換え可能な回数に制限があること、 それから電気的に上書きができない構造であることから、 一般的には ROM に区分されています。

実際の NVRAM 製品は時計機能を内蔵していることが多いことから リアルタイムクロックと呼ばれたりもしますが、 NVRAM と呼ぶために本質的な機能ではありません。

1.2 NVRAM の外観

Top view of MK48T18

sparc の世界においては、 通常 NVRAM は Sun の管理用にバーコードの印刷された黄色いシールが貼られた状態で sparc のマザーボード上に設けられた IC ソケットに装着されています。 色彩的に目立ちますので探すのは容易ではないかと思います。 ただし必ずしもバーコードシールが貼られているわけではなく、 装置が中古品だった場合には独自に交換されてシール無しになっている場合もあります。

1.3 NVRAM の構造

Non-Volatile RAM というぐらいですから、 このデバイスは基本的には RAM を基幹にして設計されています。 電気的には、ちょっと特殊な機能を持った SRAM として扱えます。 電源を落したときに内容を揮発させないために SRAM コアに 常時通電し続けるための電池が内蔵されています。 さらにはバッテリバックアップの付録で時計も内蔵しており、 時刻情報も更新を止めずに保持します。

NVRAM のパッケージには 2 種類あります。

本稿では後者のタイプについて、電池交換の改造を行っています。 詳しいことは後述します。

1.4 電池寿命

カタログスペックとしては10年ぐらい持つようですが、 実際には5年程度ではないか、とも囁かれています。 私自身は予防交換しか行ったことがなく、 実際に電池切れする現場に遭遇したことはありません。

NVRAM の電池が切れていても、 SPARCstation の電源が入っている限り NVRAM には外部から電源が供給されています。 運転中のマシンの電池切れを事前に察知することができないのが問題といえば問題です。 マシン本体の電源を切って再投入してみて始めて露見するわけです。

NVRAM はその構造上、マシンの電源が入っていて外部から電源が供給されている限り、 内蔵のリチウム電池は FET を用いて切り離されており、 半導体の漏れ電流と電池自身の自己放電のほかには、 電池を摩耗させる要素は特にはありません。

もし、電池の切れた NVRAM が見付かったら、 速やかに交換してメインボードから撤去することをお勧めします。 リチウム電池が切れたまま何年も放置しておくと、 やがて破裂してメインボードを破壊してしまう恐れがあります。

1.5 機種の対応

NVRAM は sun4c アーキテクチャにおいては MK48T02 相当品、 sun4m 以降のアーキテクチャにおいては MK48T08 相当品が使われています。 便宜のため代表的な機種名と対応するデバイスを表にしておきますが、 完全な情報は Sun Microsystems 社が公開しているハンドブックを参照してください。

Table: IDPROM vs. SPARCstations
MachineArch.IDPROM
SPARCstation 1 sun4c MK48T02
SPARCstation 1+ sun4c MK48T02
SPARCstation 2 sun4c MK48T02
SPARCstation IPCsun4c MK48T02
SPARCstation IPXsun4c MK48T02
SPARCclassic sun4m MK48T08
SPARCclassic X sun4m MK48T08
SPARCstation LX sun4m MK48T08
SPARCstation 4 sun4m MK48T08
SPARCstation 5 sun4m MK48T08
SPARCstation 10 sun4m MK48T08
SPARCstation 20 sun4m MK48T18

機種によっては IC カードリーダが搭載されており、 Ethernet MAC アドレスやホスト ID といったユーザが書き換えない情報は IC カード (SCC) に記録するようになっています。 代表としては Netra-T1 が該当します。 そのような機種でも NVRAM デバイス自体は実装されており、 SCC では実現しづらい時計機能や環境設定の保存のため用いられています。 NVRAM の電池切れと無縁なわけではありません。

1.6 電池が切れて困ること

使わないマシンを保存する場合など、 時計を更新する必要がない場合には NVRAM のレジスタを操作してクロックを止めることができます。 NVRAM 自身の消費電流が減りますので電池が長持ちします。

2. NVRAM の電池切れに対応する

2.1 電池切れに気づいたら

不幸にもあなたのマシンの電池が切れてしまい、 交換が必要になったと仮定します。 そのとき (1) NVRAM そのものを交換するか、 (2) NVRAM を改造して電池だけ交換するかの判断を迫られることになります。

もし業務用のマシンで顧客に対する信頼が重要な場合は マシンの保守サービスを実施している業者に依頼して NVRAM を交換してもらうのが現実的です。 メーカに交換を依頼すると 60k〜100k ぐらいかかるかも知れませんが、 業務用ならやむを得ないと思われます。

個人用のマシンで自由が利く場合は、 通常はメーカと保守契約などはまったく締結していないでしょうから、 at your own risk において自分で交換する方法が射程距離に入ってきます。

NVRAM を秋葉原の店頭で買うと 3k〜6k ぐらいしますから、 決して安価な部品ではありません。 NVRAM の半導体部分は消耗するものではありませんから 電池だけどうにかして交換できれば、 NVRAM を電池パックもろとも取り換えるよりは安価になる可能性があります。 ざっくりと言ってリチウム電池代 300yen + 手間賃 + 電子工作技術ぐらいと、 人件費・工具費を無視すれば 1/10 ぐらいで済みます。

2.2 NVRAM 改造に対する適性

Bottom view of MK48T18

上下2層に分離された構造になっていること、 左右に合成樹脂で充填してある部分で接合してあることにも注意してください。 これは旧型のデバイスで、現在新品で売られているものと形状が異なります。

ゲジゲジの足が生えている部分が半導体を封止しているパッケージ (写真では上側) で、 他方が電池と水晶振動子が封入されているパッケージ (写真では下側) です。

もしお手持ちの NVRAM がこのように二段重ね構造になっていない場合は改造は困難です。 以降は電池交換の技術的な方法について説明します。

3. 電池交換の方法

3.1 NVRAM の加工作業に取り掛かる前に

sparc の IDPROM 領域 16バイト分のデータは紙にメモして残しておきましょう。 NVRAM の電池が切れてしまってからでは読みだすことができないからです。 NVRAM の電池を切らず (切り離さず) に交換しようなどとは考えない方が賢明です。 一瞬でも電池を切り離せばその地点で SRAM に保持されているデータは消えてしまいます。

IDPROM データは PROM プロンプトから .idprom コマンドを実行すれば表示させることができます。

ハードウェア構成が特殊な場合は nvramrc などの設定情報も紙に書き出しておきましょう。 シリアルコンソールを利用する場合は端末側でログを取って保存するのが簡単ですが、 最低限度 IDPROM の情報だけは肉眼で読める媒体に書き出して マシンに貼っておくことをおすすめします。 電池切れの不幸はいつ襲って来るかわからないからです。

中古品などで保守の無いマシンの場合はホスト ID の紛失を取り戻すのは困難です。 個人で入手した中古のマシンが既に記憶喪失になっていた場合は (通常は) MAC アドレスとホスト ID を捏造するしかありません。 もし NVRAM に純正と思しき黄色いシールが貼ってあればラッキーです。 シールに印刷された番号がそのまま MAC アドレスの下位3バイトになります。

ホスト ID はライセンス管理の問題を除けばわりと自由になりますが、 MAC アドレスの取り扱いに関しては細心の注意が必要です。 理由の如何を問わず捏造する場合はそれがあくまでも捏造したものに過ぎないことと、 接続先の LAN 内で MAC アドレスに衝突があると ネットワークに甚大な混乱をもたらすことに留意してください。

3.2 必要な工具

私が使用した工具類です。

電子工作に必要な一般的な工具があれば足ります。 はんだ付け作業のために、はんだごて、ラジオペンチ、はんだ、ニッパー等は最低限でも必要です。 今回はハンダを取り除く作業もありますので、はんだ吸い取り線も必要です。

電池端子を掘り出すためには印を彫るのに使うニードル刃があると便利かも知れません。 無ければ通常のデザインナイフでも足りるでしょう。 刃を折り取るタイプのカッターナイフは危険ですので避けたほうが無難ですが、 刃を飛ばさないように注意すれば使えないこともありません。

従来書いてこなかったのですが、 電池電圧と極性を調べるためのテスターが必要です。

3.3 必要な材料

電池として私は CR2032 互換品を使いました。 電池ホルダは SONY 製のもので、 いずれも秋月電子通商で購入したものです。 電池は 3.0 V の製品であればどんなものでも差し支えありませんが、 長時間の微弱放電に耐える電池を採用すべきです。 必然的にリチウム一次電池を採用することになると思います。 リード線付きの電池であれば電池ホルダは不要になりますが、 作業中の短絡事故の可能性を考えますと電池ホルダを採用した方が安全です。

NVRAM は半導体製品であり、静電気に対して脆弱です。 作業中に NVRAM が破壊されることを防ぐために導電性スポンジ (半導体を購入した際に梱包材として使われている黒いスポンジ) が必要です。 最近のデバイスは静電気に対する保護が充実していますから、 運が良ければ導電性スポンジなしでも壊れないとは思いますけどね。

この他に配線のために UEW、 電池ボックスを固定するための両面テープなどを使用しました。

3.4 NVRAM を取り出す

マシンの蓋をあけて NVRAM の位置と取り付け方向を確認してください。 それからソケットに挿してある NVRAM を取り出します。 取り出す際に静電気を浴びせてしまったり足を曲げたりしないように注意しましょう。

この稿を読まれている方には自明のことと思いますので、詳細は割愛します。 わからない方は http://docs.sun.com/ にある Sun 純正のオンラインマニュアルを参照するか、 あるいは http://www.sunhelp.org/ などを参照してください。

3.5 NVRAM から電池部分を分離する

まず NVRAM の両端にある合成樹脂を 彫刻刀やデザインナイフ、ニードルなど先の尖った刃物で掘って取り除きます。 掘る相手が中途半端に軟らかいため、 彫刻刀を使用する場合は刃こぼれを覚悟してください。 印を彫るのに使うニードルが手頃です。 カッターナイフの利用は刃が折れた時のことを考えると危険ですが、 使えないこともありません。

デバイスの端子で指をぐっさり刺さないように (当然ですが刺さると痛いです) 画像のように厚手の導電性スポンジに NVRAM を挿して 指とデバイスの端子の両方を保護しつつ作業すると良いのではないかと思います。

樹脂を掘ってゆくと、中からはんだ付けされた端子がひょっこり姿を現します。 このはんだ付けされた部分を切り落としてしまわないように注意して掘りましょう。

なにげなく掘った後の画像を出していますが、ここが一番しんどい作業です。 掘ってしまえば作業の半分は終ったようなものです。

このように両端とも樹脂を掘って取り除きます。 樹脂が取れたら両端の端子に盛られているはんだを吸い取り線できれいに吸い取ります。

はんだをきれいに吸い取ることができたら、 あとは上下のすき間にマイナスドライバを差し込んで軽くこじると パキっと音がしてきれいに分離することができます。

分離する前後どちらでもかまいませんが、 テスターで電池電圧を測定してください。 後で新しい電池を取り付けるときに、 プラスとマイナスを間違えると壊れます。

分離できたら半導体パッケージ側にこびり付いている樹脂とはんだをていねいに取り除きます。

左が NVRAM の半導体パッケージ、右が電池と水晶振動子が封入されたパッケージです。 今回の実験では水晶振動子は樹脂を掘って回収しました。

この段階で電池の電圧を調べてどちらが正極なのか負極なのか調べておきます。 電池の取り付けで極性を間違えると致命的ですので慎重に。

3.6 水晶振動子を確保する

電池は捨てますので掘り出す必要はありません。

水晶振動子を確保するために必要ならば掘り出します。 水晶振動子さえ確保できれば良いので、

  1. 水晶振動子を別途購入し、それを使います。 もともと NVRAM に装着されていた水晶振動子は廃棄します。
  2. 上層部分をまるごと (あるいは電池部分だけ鋸で切り捨てて) 再利用します。
  3. 上層部分から水晶振動子を掘り出して回収します。 少々面倒臭い作業になります。
のいずれかになります。

3.7 水晶振動子の取り付け

NVRAM の尻の部分が水晶振動子の取り付け端子になっています。 ここに水晶振動子を直接はんだづけします。

水晶振動子を電池と一緒に搭載して組み立てた後の画像です。 水晶振動子は画像に示したように直付けしてしまいます。 画像では水晶を掘り出して再利用しています。

左側は水晶を発掘した後の抜け殻です。 樹脂で充填封止されていたことがわかりますね。

3.8 電池の取り付け

くどいようですが、電池を取り付けるときは極性に十分注意してください。 極性を間違えると貴重なデバイスを破壊します。 画像では少々わかりにくいですが、デバイスの1番ピン側に水晶が取り付けてあります。 反対側に電池が配線されており、左側がマイナス、右側がプラスです。 この極性はデバイスのロットによって異なる可能性がありますから、 ここで示した情報を鵜呑みにしないでご自身で十分に確認してください。

1 XTAL XTAL 28
2 27
3 26
4 25
5 24
6 23
7 22
8 21
9 20
10 19
11 18
12 17
13 16
14 BATT(-) BATT(+) 15

電池を交換できるようにする場合は、 電池と端子の間にソケットを挿入したり、 電池ホルダを使用して実装します。

電池交換の際に記録内容が揮発しても差し支えない場合は 電気二重層コンデンサを抱かせる必要はありません。 NVRAM の記録内容を保持したまま電池を取り換えられるように施工したい場合は NVRAM 側に電気二重層コンデンサを抱かせて NVRAM にかかる電源が途絶えないようにします。

電池側からみたところです。 電池ホルダと NVRAM チップの端子との接続には太めの UEW を使用しています。

画像右側の未発掘の合成樹脂の中には電池が埋まっています。

電池を電池ホルダに搭載したままはんだ付けしたりしないようにしましょう。 短絡事故が起きると電池を劣化させるだけでなくデバイスを壊す恐れがあります。

ひっくり返したところです。

この画像ではなにもしていませんが、 通常はは動作確認後に端子部分に ホットメルトやエポキシ接着剤などを充填して絶縁加工を行ないます。

3.9 NVRAM の取り付け

補修の完了した NVRAM を sparc に戻して取り付け、 無事を祈りながら火を入れます。 ラッチアップなどを起こして発熱していないことを確認します。

簡単な工作ですから、 はんだ屑を飛ばしたりしない限り本体を壊すことはまずないと思いますが、 それでも万一ということは考えられます。 普段熱くならないものが熱かったりコゲ臭かったりしたら 即座に電源を切って原因を調べませう。

参考までに、別の工作で実装したものを挙げます。 画像が荒いのはご容赦ください。

SPARCstation 20 は NVRAM と sbus カードとの隙間が小さく、 そのまま電池を載せてしまうとカードと干渉します。 なので、リード線で引き延ばして電池を取り付けています。 相当昔に施工したものですが、 ほとんどコンセントを抜いていたにもかかわらず、 2010年現在も元気に時刻を刻んでいます。

上画像の電池は、 実装当時のストックの都合で塩化チオニル型のリチウム電池、 いわゆる 3.6V タイプです。 私の手元では年単位の期間に渡って正常に動作していますが、 これから実装するなら素直に二酸化マンガン型の 3.0V タイプを使いましょう。

例のように、水晶振動子は掘り出さない方が簡単に目的を達成できます。 NVRAMに抱かせてある黒い塊は電気二重層コンデンサです。 コンデンサをつける意味はほとんどありませんから、 コンデンサは真似しない方がよいでしょう。

3.10 設定情報の復元

無事にマシンを起動できたら、 たいていは NVRAM の内容が初期化された状態になっています。 可能性としては天文学的にゼロに近いのですが 運が悪くスーパバイザパスワードを求められてしまうかも知れません。 その時は本当に運が悪かったと諦めて NVRAM の内容を干しなおしてから接続するか、 あるいは ROM ライタのような装置を用いて NVRAM の内容をゼロ初期化してから取り付けます。

もし、購入した sparc が最初から電池切れで MAC アドレスその他が 既に失われていた場合は自分で適当な MAC アドレスを捏造する必要があります。 その場合は自分が接続する予定の組織内 LAN で衝突しない値を与えます。 繰り返しになりますが、 もし衝突があると他の LAN 利用者に迷惑をかけることになりますので、 捏造 MAC アドレスを持つマシンを職場に持ち込むような場合は ネットワーク管理者とよく相談して 当該 MAC アドレスの使用について許可を取り付けてください。

先に紙にメモするなり捏造するなりした IDPROM 情報を PROM プロンプトから mkp コマンドで書き込みます。 IDPROM は全部で 16 バイトありますので、 下記のようにちまちまと 16 バイト分のコマンドを叩きます。 (FORTH の構文が解れば値をスタックに積んでまとめ書きができます…)

ok 01 00 mkp
ok 80 01 mkp
ok 08 02 mkp
ok 00 03 mkp
ok 20 04 mkp
...

IDPROM の最後の 1 バイトはチェックサムです。 IDPROM の値を書き換えた場合はチェックサムも合わせ込む必要があります。 .idprom で示された 16 バイトを全てそのまま書き込んだ場合は 既に合っていますのでチェックサムを合わせ直す必要はありません。 チェックサムは関数電卓を叩いてちまちま XOR 計算しても良いのですが、 hostid FAQ に FORTH スクリプトの例がありますのでそれを使うのが便利です。

ok 0 f 0 do i idprom@ xor loop f mkp

書き込み終ったら .idprom コマンドで表示させて確認します。 mkp の使い方は hostid FAQ に詳しく説明されていますので参照されることをおすすめします。 IDPROM の設定が終ったら nvramrc などの環境設定を書き込みます。 時計は OS が起動してから設定すれば良いのではないかと思います。

再起動して無事に動作することを確認した後、 いちどマシンの電源を落してみて電池によるバックアップが作動するかどうか確認します。 しばらく時間を置いてから電源を再投入し、 先程の設定がちゃんと残っていれば成功です。 交換に使用した電池の種類・容量にもよりますが、 sparc は今後 5〜10 年は電池交換なしに働いてくれるでしょう。

4. 参考資料

この稿の記述にあたり、以下の文献などを参考にしました。

Sun System Handbook, Components, IDPROM section.
Sun Microsystems 純正マニュアル。 機種名とデバイスの対応表、IDPROM デバイスの種類などが記載されています。
M48T08 64Kbit TIMEKEEPER SRAM datasheet, www.st.com
SPARCstation に使われている NVRAM デバイスと互換品の半導体データシート
The Sun Hardware Reference, www.sunhelp.org
駆け込み寺、一般的な FAQ へのリンク、ポータルサイト
Sun NVRAM/hostid FAQ, http://www.squirrel.com/sun-nvram-hostid.faq.html
NVRAM に含まれる IDPROM 情報の書き込み方法が解説されています。 NVRAM のトラブルの大半はこれを読めば解決すると思います。

他にも種々のネット上のリソースを参考にしました。 情報を公開されている皆さんに感謝の意を表します。

某社 CE こと軍曹さん ^^; から NVRAM 患者の提供と機種別のアドバイスを頂きました。 ありがとうございます。


clare at clarestudio.org
Copyright ©2002, 2003, 2004, 2009, 2010 clare. All rights reserved.