2022年10月8日土曜日

ソーラーライトその後(ソーラーライトを長持ちさせる技)


改造したソーラーライトを1年ほど使ってみて幾つかのトラブルや故障を経験したので、その実例と対策について以下に記す。なお実際に使った吊るソーラーラート、ソーラーアクセントライト、ソーラーガーデンライトに言及する場合はそれぞれHSL、SAL、SGLと略記する。

1,太陽電池の水対策

ソーラーライトを屋外で使うと何か所かから雨水が侵入し部品や電子回路を痛める。とくに太陽電池周りは、それを張り付けるためにコーキング剤が裏面の配線を通す穴付近に使ってある以外は全く対策されていないと言ってよい。ここに水が浸入すると太陽電池の電極を傷めたり(写真)電線を伝って電子回路に侵入する。太陽電池が劣化すると起電力が低下しニッケル水素(NiMH)電池の充電が不足するとともに夜と認識される時間が長くなる。また太陽電池の配線が腐食して切れたこともある。

これを防ぐには太陽電池の周囲を接着剤かコーキング剤で埋め雨水の侵入を防ぐ必要がある。私はUV硬化のレジン液(要するにネイルアートに被せて紫外線で硬化させる液体)で埋めた。

 

2,電源スイッチの水対策

電源スイッチも雨水の侵入口である。電源スイッチは下面にあるが物理的に塞げず、1年も風雨に晒されると接点などに錆が出始め動きも悪くなってくる。

私は時々CRC 2-26を吹き付けている。 電源スイッチだけでなく内部にある素子や金属にも湿気対策も必要だが、CRC 2-26はそれにも効果があることを期待する。

もし電源スイッチをON/OFFする事が無いのであれば 電源スイッチを取り外し穴を塞ぐのも1つのやり方である。


 3,LEDの電極の腐食対策

LEDの裏側の形状はフラットか少し凹んでおり、ここに水が溜まって電極を腐食することがある(写真)。

これを防ぐにはLEDの裏面をレジン液等を使って凸面にするとともにLEDをケース下面からあまり突出させないよう取り付けるか、またはLEDの周囲のケースとの隙間を接着剤等で固めて雨の侵入を防ぐ必要がある。次の写真はLEDの周囲をレジンで塞いでいる。また光を反射するようケースを銀色に塗装している。


 

4, ニッケル水素(NiMH)電池の過放電対策

 実際に使ってみたところでは3cm×3cm(9cm^2)の太陽電池を使っているSALやSGLでは真夏でも定常的に充電が不足しているようであり、個体差はあるが朝まで持たなかったり、特に曇りや雨の日が続くとほとんど光らなくなる事がある。それに比べ4cm×4cm(16cm^2)の太陽電池を使っている吊るソーラーライトは悪天が続かない限り朝まで比較的元気である。

実際にはSALやSGLはできるだけ長時間太陽光を当ててやるとともに、NiMH電池が弱ってきたら、過放電になる前に充電器で追充電してやると元気に復活する。 NiMH電池の充電器は千円以下でAmazon等で入手できる。

なお3種のソーラーライトに内蔵されている単4サイズのNiMH電池の容量には100mAh、200mAh、600mAhなどの種類がある。しかし容量が少ないと悪天が続いた場合に電池が過放電になってしまう。もし100mAhや200mAhの電池が入っていた場合にはもっと容量の大きい物と交換したほうが良い。

  〔※参考〕HSL、SALやSGLのLED点灯時の消費電流は11mA~12mA程度である。一方直射日光が当たる快晴の昼間(10月)にSALを太陽に正対させてNiMH電池の充電電流を計ってみたところ最大で23mA程度であった。太陽光の入射角は昼間を通じて変化するので近似的にsinθに従うと考えると平均充電電流は14mA(sinカーブの平均値は0.64なので)である。なお実際には太陽が出ていてもソーラセルの起電力が一定(概ね1.4V)以上ないと充電は始まらないが、その点は無視して計算しているので参考程度の値だと考えていただきたい。

一方ソーラーライトは通常太陽電池を真上に向けて設置するので太陽の高度角による影響が出る。南中時の高度角は夏至の関東ではで78度(sinθ=0.98)、冬至で31度(sinθ=0.52)程度であり、夏至での発電能力低下は些少であるが冬至には発電能力は約半分に低下する。実際には雲や悪天も影響してさらに悪化する場合もあり得る。

結局、夏至に平均14mAで充電できたとして昼間の長さが14時間あるとすると、これを充電するには196mAhの容量の充電池が必要である。これはLEDを夜通し光らせるには十分な電気量である。もっと太陽電池の面積の広いHSLではさらに大容量(300mAh以上)のNiMH電池が欲しい。一方冬至では平均11.5mAで9時間充電できるとしても充電量は103.5mAhしかなく、これは冬期の長い夜を通してLEDを光らせるには不十分であり、この問題はNiMH電池の容量を増やしても解決しない。気温の低い冬場の電池の充電効率の低下を考えると条件は更に悪い。この場合は回路の消費電流を減らす事を考える必要がある。

  5,ソーラーガーデンライトのハンガー(吊り下げ用部品)は弱い

ソーラーガーデンライトでは吊り下げるためのハンガーが柔らかめのプラスチック製(写真左)で強度が弱く、しばしば強風で落下し、時に太陽電池や電子回路、また外箱にダメージを与える。これを金属製に替える事で落下防止になる。

私は百均でジャンボ ゼムクリップ(70本入りが100円だった)を買ってペンチで曲げてハンガー作った(写真右)。

2022年10月7日金曜日

ソーラーアクセントライト キャンドル化用の基板を作る

 吊るソーラーラートに引き続いてソーラーアクセントライト改造用の基板を設計した。回路は以前書いたものと少し違って次のようにした。下図がKiCADで基板の設計に使った回路図である。

回路を変更した理由は前の回路ではソーラーセル(太陽電池)の出力に電源スイッチが介在しないため光が当たった状態では常に回路に電圧がかかっていたからである。この変更の弊害としてU2やLEDがハングアップしたときU2やLEDがリセットされずLEDが光らなくなる問題がある。これを回避するためR1を追加し、スイッチをOFFにした状態ではC2に溜まった電荷をR1を通じて放電させることとした。C2がフル(4.7V)に充電されている状態で電源スイッチをOFFにすると約15秒でC2の両端の電圧は10mVまで低下する。1分もOFFにしていたらハングアップは解消されるだろう。R1を流れる電流は0.2mA程度なのでLEDの光量にもほとんど影響はない。

次に基板の大きさであるが、元の基板の大きさが12mm×26mm程度でかなり小さく電池の下に隠れる部分もあるので部品を置ける場所が少ない。そこで基板を円形(直径35mm)にして面積を稼ぐことにした。但しプラスチックの土台の上には電池を支持するため2つの下駄(ポール、3mmΦ)が立っている。これを通すため基板には2つの穴を開けておく必要がある。

ソーラーアクセントライトでは電池が高い位置に配置されているのに伴い基板の上側には電池の下を除きスペースに余裕がある。 また電池の下に来る部分の上面には隙間が無いため部品を配置できないが下面には高さのない部品を配置できる。

CADの結果は次のようなものである。 2作目なのでKiCADにも少し慣れて基板の両面にシルクスクリーン印刷を入れることが出来た。

LEDは1個でも2個でも対応できるようにした。1個の場合は斜めのランドにに取り付けると良い。またキャンドル型のLEDや色がリアルタイムに変化するLEDなどでU2が不要な場合はU2の1-2番ピンにジャンパ-を入れる。

 この基板を20枚発注したところ$6.86で吊るソーラーライトより$1高くなった。

 

吊るソーラーライト キャンドル化用の基板を作る


 この1年で計50個以上の百均の100円ソーラーライトを改造してきたが、いちいち基板の配線を切ったり繋いだり、さらに部品を立体的に配線して改造するのも面倒なのでプリント基板作りに挑戦することとした。

プリント基板は若い頃(半世紀前)から作ってきた。銅面にマジックインクで書いたりサンハヤトで売っていたシールやテープを切り貼りしたりしてパターンを作り、それを塩化第二鉄溶液でエッチングして片面基盤を作ってきた。この方法でエレキーやニキシー管の周波数カウンタなど作った事がある。また大学では卒研で8ビットコンピュータ関係の両面基板(B5サイズ)を設計し手作業で配線パターンを作成、外注した経験がある。しかし今はCADの時代である。

CADには以前から興味があったが複数のCADソフトを使いこなすほど器用でもないので、どのCADが自分に合っていて習得すべきか決めかねたまま放って今に至る。最近何気なくYoutubeを見ていたらフリーソフトのKiCADで基板を作成・発注する動画が目に留まった。これなら爺(自分)にもできそうだ。そして基板を格安で発注できることも分かり、やる気が起きた。さらにKiCADの開発がCERN(欧州原子核研究機構)からサポートされている事も大きい(CERNは最初にWWWを開発したところとしても有名である)。

しかしこの手法をソーラーライトに適用するにはもう1つ問題がある。 これまでの改造では立体的に追加部品を配置したため追加部分を狭い場所に押し込むことが出来たが新たに基板を起こす場合、全ての部品を平面上に配置することとなり、これが可能かわからない。吊るソーラーライトに元々付いている基板の大きさは22mm×17mmであるが、電源スイッチ、取付用ネジ穴、LEDは決まった場所に配置する必要があるため、それ以外の部品を余白に配置する必要があるが、実際にはこの面積ではSMD(表面実装部品)でも使わない限り全ての部品を載せることはできない。そこでプラスチックの土台に載せることが可能な基板の大きさを調べると22mm×25mmまでは拡大しても大丈夫であることが分かった(次の写真の橙線)。

組み込む回路は以前に作ったそのままである。最初にKiCADの回路図エディタで配線図にする必要がある。このとき一般的な部品のシンボルはあらかじめ用意されているがライブラリに無い部品のシンボルはシンボルエディタを使って自分で作る必要があった。そのとき、後で行うエレクトリカルチェックに必要な信号線の属性の定義が面倒であった。VDDが電源入力なのは間違いないがGNDは何だ?あと太陽電池からの入力SOLは電源なのか?信号なのか?


 最終的にはエレクトリカルチェックで合格するようトライ&エラーを繰り返し上図のように設定した。これを使って出来上がった回路図は次の通り。なおキャンドル型のLEDや色がリアルタイムに変化するRGB-LEDなどでU2が不要な場合はU2の1-2番ピン間をジャンパ-する必要がある。

 回路図が出来上がると次にPCBエディタで基板の設計を行う。そのためには各部品のフットプリント(基板上を占める形)が必要である。

 一般的な部品のフットプリントはあらかじめ用意されている中から選べばよいが足りないものは他の部品を流用するかフットプリントエディタを使って自分で作る必要がある。例えば回路図のU2用には次のフットプリントを作成した。


フットプリントは多層のデータで構成されている。回路(表裏)、シルクスクリーン(表裏)、マスク(表裏)、マージン、エッジカット、等々であり画面上では色で識別する。

これはバグかも知れないがフットプリント作成時にマージン層に線(赤紫色)を引くとそこを越えて配線を通せなかった。本来は部品の配置上の問題(過接近や重なり)を検出し警告を発する機能のはずなので随分悩んだが、結論として次図の様にマージン層は使わない様変更して思った通りの配線を引けるようになった。なお外形を丸から長方形に変更したのは実装の方法を変更したからで上記問題とは関係ない。

 〔後で分かった事だが部品の配置上の問題を検出するのにマージン層を使ったのは間違いで、その目的にはコートヤード層を使うべきであった〕

配線図の各シンボルに対応した実際の部品のフットプリントはその部品の置き方によって変わるため、部品ごとに必要に応じて複数のフットプリントを用意し、各シンボルとどのフットプリントを対応させるか指示する必要がある。今回は次のような対応にした。

ここでまで来てPCBエディタによるプリント基板の設計に移るが、今回のように基板の物理的要件が決まっている場合は先ずそれを設定する。今回は先ず基板の大きさを設定し、次に電源スイッチ、取付用ネジ穴、LEDを決まった場所に配置した。次に残りの部品を基板内にうまく配置できるかを試した。(SMDは使わないので)部品の配置には平面だけでなく空間、特に高さを考慮する必要がある。というのは隙間が基板の下側に6mm、上側にも同程度しかないからであって、場所によってはもっと狭くなる。とくに高さのある電解コンデンサなどは基板の外に横置きにする検討が必要である。

PCBエディタを起動すると最初は部品が一塊になって隅に置かれている。それを手作業で基板上に配置しなおし結線する。部品間に必要な結線は配線図を元に予め直線で結ばれているので、それを元に実際の基板上の線に落とし込んでゆく。この過程は文字で説明するより動画で見たほうが分かり易いのでYoutubeなどを参考にして欲しい。 また別のソフト(freeroute等)を使って自動配線させ、をれを手作業で修正・調整することもできる。

一通り配線を終えるとデザインルールチェッカーによって問題点を洗い出す。デザインルールチェッカーは配線が回路図通りに結線されているか、線間の間隔は妥当か、部品が重なって配置されていないか等をチェックするほか基板の製作上の問題をチェックしエラーや警告を出してくれる。その時、初めは分かりにくく手こずったエラーは配線の1mm以下の短い断片が残って取れない(部品の裏に隠れて場所が分からない)事である。これは部品をアウトラインモードにして透かして見ると発見しやすい。

デザインルールチェッカーで問題が無くなればガーバーファイルおよびドリルファイル、ドリルマップファイルを出力して基板の設計が出来上がり発注できる状態になる。

そして実際に発注した。基板の厚さはやレジストの色は選べる(選択内容で価格が変わる場合がある)ので、基板の厚さ1mm、レジストの色は標準的な緑を選択した。料金は20枚で5.86ドルである。安い!このほか送料が着払いで600円程必要である(製作に1~2日、送付に6~8日程度かかる)。

しかし残念な事にこの設計では大きなミスを犯していた。この図では表から見たようにCADは設計しているが、上の写真に従って私は裏から見たつもりで作業をしていた。つまり表裏が逆になっているのである。幸いな事にこの回路で使う部品は裏返しても問題はない、つまりシルクスクリーンの印刷されていない裏面に部品を取り付けても問題は生じないので実害はない。あるいはこのシルクスクリーンの通りに部品を付けて基板を裏返しに取り付ける手もあるが、その場合電源スイッチのON/OFFが表示と逆になる。

初めてCADを使ったので理解が足りてない分ミスは仕方がないが、リカバーできるので良しとしよう。

2022年6月8日水曜日

SSD逝く

 Mac Book Air Early 2014 の換装に使ったSP社のSSD(500GB)が3年を経過して調子が悪くなった。

 具体的には電源ONで最初は正常に起動するが時間の経過とともにおかしくなり、5分も経過すると全く認識できなくなったりOS-Xがクラッシュしたりした。これを再び立ち上げようとするとSSDを認識できなくて?マークのフォルダが表示される。

電源を切って暫く放っておくと正常に戻るが時間とともに同じ状況になる、その繰り返しである。

切り分けのためこのSSDをWindowsマシンに移してフォーマットし様子をみると最初は、

と、一見正常であるが、やがて次の様にフォーマットできなくなり

最後には全く認識できなくなった。

電源を切ってこのSSDをいったん冷ますと復旧することから熱的な問題があるようだが、触ってもSSD自体の温度はほとんど上昇していない。

幸いな事にこのSSDは5年保証なので早速SP社のサポート窓口に連絡し、指示に従って現物と購入時の領収書を送ると1週間ほどで新しいSSDが届いた。壊れたSSDはAmazonで購入したものであるが、領収書は購入3年後でもAmazonからダウンロードできた。

今回の事で、改めてSSDは消耗品だなぁと思った次第である。そういえばマイクロSDカードもたまに壊れるから、これから買うときに保証について確認しておいた方が良さそうだ。

このMac BookのデータはTimeMachineで定期的にバックアップしていたので別のSSDを入れてバックアップからレストアする事でMac Bookは簡単は復旧できた。

2022年4月18日月曜日

粉吹きThinkPad

 長い間物置に入っていたThinkPad s30を取り出してみたら液晶がヤバい事になっている。

 それとともにケースの隙間から白い粉が出ている。あの白い粉はいったい何だろう?電解コンデンサの液が漏れたにしては量が半端ない。バッテリーは綺麗なまま取り外せているのでこれとは関係ない。液晶が漏れて乾いたのか?何れにしても何とかせねば、と早速上下に分解すると基板の周囲に山ほど白い粉が積もっている。これはいかん。

 このままじゃどうにもならないので粉をまき散らさないようにパーツを取り外してみると、

 不思議な事に粉が出来ているのはケースの底の周囲の表面と底から立ち上がったネジ受けだけで底板の底部や部品類は綺麗なままだ。従ってコンデンサの電解液の漏れや液晶の漏れが原因ではないようだ。

 とりあえずケースをぬるま湯に浸けて洗ってみた。浮きあがっていている粉は流れたがケースの表面に付着した部分は石のように固くて、少々こすっても取れない。

 何かおかしいなと思ってネットで検索してみると同例が1件見つかった。それによると、これはマグネシウム合金の腐食らしい。てっきり底板はプラスチックだと思っていたが、実はマグネシウム合金らしい。

 それならばと、ドライバーやピンセット等を使って白い粉を削った。うまく削れて金属光沢した表面が見える所もあるがなかなか手ごわい。金属のサビ取りなら何とかなるかなとCRCの5-56、3-36、2-26を使ってみると、表面は荒れているが白さが取れて少しは綺麗になったように見える。


続く

2022年4月16日土曜日

Dynabook(T75)のHDDを修復(その3)WindowsREの復活

  前回述べたようにBCDの回復(再構築)は、

> bootrec /rebuildbcd

で出来るが、これでは回復環境(WindowdRE)は回復出来ない。

 WindowsREを回復させるには reagentc コマンドを使う。ただ、reagentc はデフォルトでは現在立ち上がっているシステムを対象としているので reagentc をWindowsPEから使うには一工夫が必要である。

 先ず、reagentcを使うには予め回復環境のボリュームにドライブ文字を割り当てる必要がある。ディスクの管理情報を表示させ、その中で回復環境(WinRE)のVolumeは非表示となっているのでこれにドライブ文字を次の様に割り付ける。次の下線の文字が入力するコマンドである。

> diskpart
DISKPART> list volume
DISKPART> select volume N   ...NはWindowsREの含まれるVolume番号
DISKPART> assign letter R   ...仮に文字Rを割り付ける
DISKPART> list volume
DISKPART> exit

 これを実行した結果、次の様にWinREのボリューム(Volume 3)にRが割り付けられている。なおVolume5,6はWindowsPEの入ったUSBメモリーなので無視してよい。

 WindowsREの実体はWindowsRE.wimというファイルで、これはR:¥Recovery\Windowsのディレクトリ(フォルダ)に収納されているが(私のケースでは)Windows以下が隠しファイルになっていて表示されず、危うく欠落していると判断するところだった。パーティションの容量とボリュームの空き容量が余りにも違う(0.5GBほど少ない)事から何か隠れていると追及して分かった(隠しファイルを表示したい場合はdirコマンドに/a:hオプションを付ける)。

 reagentc はWindowsPEには含まれないのでC:ドライブにあるものを使う。そのため次の様に先ずカレントディレクトリを C:¥Windows¥System32 に移す

> c:
C:¥> cd ¥Windows¥system32
C:¥Windows¥System32>

 回復環境の場所をBCDに設定するには次のコマンドを使う。/target が起動したディスク以外のディスクに設定する場合の書き方である。

C:¥Windows¥system32> reagentc /setreimage /path R:¥Recovery¥WindowsRE /target C:¥windows

次に 回復環境を起動可能にするには、 

C:¥Windows¥system32> reagentc  /enable  /osguid {guid}

とする。ここで/osguid の引数の{guid}は bcdedit /enum /v で表示されるブートローダの identifier の値(GUID)である。

 これらを適用した結果、BCDのdefaultのブートローダーには次の様に recoverysequence recoveryenabled が追加されWindowsREが立ち上がるようになった。

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
default                 {default}
resumeobject            {5ef36c70-b615-11ec-93cb-806e6f6e6963}
displayorder            {default}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 10 Home
locale                  ja-JP
recoverysequence        {8d7ba65d-b72b-11ec-b0fc-b5353a56518a}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {5ef36c70-b615-11ec-93cb-806e6f6e6963}
bootmenupolicy          Standard

 ここまで出来て回復環境が使えるようになったので、あとはDynabookの持ち主にやってもらう事とした。

メデタシ、メデタシ。

 

 

 

 

 

 

 

 

2022年4月15日金曜日

Dynabook(T75)のHDDを修復(その2)Windowsの復活

 前回、壊れたHDDからエラー付きでクローンもどきを作ってユーザデータを吸い上げることが出来たが、クローンもどきを実装したDynabookは立ち上がらなかった。この状態でマイクロソフトからWindowsのインストーラをダウンロードしピュアなWindows10をクリーンインストールすることは出来るが、出来ればDynabookの回復環境(WindowsRE)を起動してメーカー提供のアプリを含む工場出荷時の状態に戻せるようにしたい。
 このままでは回復環境が立ち上がらないので作業用PCで(rufus使って)USBメモリーにWindowsPEをインストールし、そのUSBメモリーからDynabookを起動して作業する事にした。
 F12を押しながらDynabookを起動し、USBメモリーから立ち上げ、キーボードの選択を行い、次のインストール画面の左下に小さく表示された「コンピュータを修復する」をクリックし(このとき間違っても「今すぐインストール」をクリックしてはならない)、

次に「トラブルシューティング」に移り、

メニュー中の「コマンドプロンプト」を起動する。

 ここで先ずGPTの起動情報(EFIパーティションの中にあるBCDファイルの内容)を確認する。それにはBCDEditコマンドを使う。
 コマンドプロンプトから bcdedit  /enum を実行すると、

>bcdedit  /enum

 Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume7
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {default}
resumeobject            {3990bcde-b3ba-11ec-81f0-e8a48f166c51}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {3990bce0-b3ba-11ec-81f0-e8a48f166c51}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {3990bcde-b3ba-11ec-81f0-e8a48f166c51}
nx                      OptIn
bootmenupolicy          Standard

といった情報が表示される。
 この中に表示されている{3990bcde-b3ba-11ec-81f0-e8a48f166c51}の様な値をGUIDといいシステム的に決まっている定数か或いは重複しないようWindowsが個別に割り当てた値である。{GUID}は「システム上の名前」であり、何処か別の所に定義され或いは存在している実体と結びついている。このほか{default}の様な{}で括られた表現はGUIDにラベル(人が読むための名前)を割り付けたものである。例えばブートマネージャーで引用されている{default}はidentifierが{default}であるブートローダーの事である。

 クローンもどきのHDDが立ち上がらないのは、完璧なクローンならばパーティションのGUIDもそのままコピーされ矛盾は生じないがクローンもどきではパーティションを作成した時点でそこに新しいGUIDが割り振られるためBCDの記述内容と実際に割り振られたGUIDが不整合を起こしているものと考えた。

 ここはダメモトでネット情報を元に管理情報を手作業で書き込んでみることにし、次の一連のコマンドを1つずつ打ち込んだ。

> bcdedit /store BCD /create {bootmgr} /d "Windows Boot Manager"
> bcdedit /store BCD /create /d "Windows 11" /application osloader
ここに新しい{GUID}が表示されるのでそれをコピーして次の{xxxx}に入れる。
> bcdedit /store BCD /set {bootmgr} default  {xxxx}
> bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
> bcdedit /store BCD /set {bootmgr} locale ja-jp
> bcdedit /store BCD /set {bootmgr} displayorder {default}
> bcdedit /store BCD /set {bootmgr} timeout 10
> bcdedit /store BCD /set {default} device partition=c:
> bcdedit /store BCD /set {default} osdevice partition=c:
> bcdedit /store BCD /set {default} path \windows\system32\winload.efi
> bcdedit /store BCD /set {default} systemroot \windows

 これは成功しDynabook単独でWindowsが立ち上がるようになった。しかしBCDの項目数が元のBCDより少ない。元通りの内容に戻したいがこれ以上正確に打ち込める自信も無い(実際幾つか間違った内容も打ち込んでいたが順序に意味がある可能性もあり訂正する方法が分からなかった)。

 あれこれ調べていくうちにbootrecコマンドを使うともっと簡単にBCDを再構築できる事が分かった。そこで次の一連のコマンドで改めてBCDを再構築した。

> bootrec /fixmbr
> bootrec /scanos
> bootrec /rebuildbcd

 これで内蔵HDDからWindowsを起動する事ができた。この時のBCDの内容は次の様になっていた。

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume3
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
default                 {default}
displayorder            {default}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 10 Home
locale                  ja-JP
osdevice                partition=C:
systemroot              \Windows
resumeobject            {5ef36c70-b615-11ec-93cb-806e6f6e6963}
bootmenupolicy          Standard

オリジナルに比べ幾つか項目が無くなっているが、これでとりあえずWindowsは動く(まだ回復環境は起動できない)。

 ここまで来たらDynabookに通常通りログインし、壊れている可能性のあるWindowsを修復することとした。ネットが使える状態でコマンドプロンプトを管理者モードで立ち上げ、次の2つのコマンドを使って復旧する(多少時間がかかる)。

> sfc /scannnow
> DISM /online /cleanup-image /restorehealth

 sfcは破損したファイルを修復して正常に終了したが、一方DISMは3.8%進んだ所で「指定されたファイルが見つかりません」とエラーを吐いて止まってしまった。どうやらシステムのファイルが壊れているようだ。いよいよクリーンインストールが必要になった。そのためには回復環境を復活させる必要がある。

  単にWindowsをクリーンインストールするのなら作成したWindowdPEから「今すぐインストール」を実行すれば良いが、一方Windowsを工場出荷の状態に戻すには回復環境(WindowsRE)を復活させHDDに格納されているメーカー作成のインストーラを起動させる必要がある。しかし回復環境はまだ立ち上がらない。

続く。

2022年4月9日土曜日

Dynabook(T75)のHDDを修復(その1)クローンの作成

 家族がDynabook(T75)が立ち上がらない、と持ってきた。これを使える所まで回復したので記憶と記録を元に書き留める。なお以下の内容は、試行錯誤的な作業を数日間に渡って行った関係で時間的な流れや手順を正確に再現したものではない。

 Dynabookの電源を入れてみると画面の中央にDynabookとタイルが出たままで、BIOSや回復環境へ進むためのファンクションキー(Fxx)の機能を表すメッセージが出る所まで進まず、 暫く放置していると回復環境(WindowsRE)が立ち上がるが修復関係のメニューを選んでもエラーになったりしてWindowsは立ち上がらない状態であった。なお家族によるとWindowsは更新を繰り返し当初Windos10であったものがWindows11までアップデートされたそうである。

 回復環境でコマンドプロンプトを立ち上げてchkdskを実行してみると多くの時間がかかるとともに次のメッセージが出てディスク(HDD)にエラーがある事が分かる。

「破損したディスク上のアッパーケース テーブルが検出されました」

 diskpart を立ち上げ list volume を実行してみると、表示にとても時間がかかってどうやらHDDが壊れているようだ。このHDDを取り出し別のPCに繋げてディスクの管理で内容を見るとC:ドライブに相当するパーティションがNTFSではなくRAWになっている。これではWindowsは立ち上がらない。


 これ以上このHDDで作業してもアクセスにとても時間がかかって作業効率が悪く、さらに最悪の場合HDDを壊してデータが復元できなくなる可能性があるので先ずこのHDDのクローンを作成することとした。

 同じ大きさのHDDを調達し、手持ちの Acronis True Image(2014版)付属のDVDで立ち上げHDDのクローニングを試みるもエラーがあってクローニングは不可とのメッセージで拒否される。代わりにHDDのバックアップの取得を行った(これは実行できた)。特にエラーのあるC:ドライブのパーティションはファイル毎ではなくセクター単位での取得になり、1TBのディスク全体を吸い上げるのに8時間くらいかかった。このとき進行状況の0%辺りと44%辺りがやたら遅かったので、この辺りが物理的に壊れている可能性が高い。

 次にこのバックアップデータをAcronisを使って作業用の新しいHDDに書き込む(リカバリ)。その前段階として新しいディスク全体の管理方法(MBR又はGPT)を元のHDDと同じ(GPT)にする必要がある。復元は、最初はAcronisで行ったが適当にお任せでやったら各パーティションの空きスペースが圧縮され元の状態を復元できなかった。そこで予めパーティションを作成してその中にデータを流し込むこととし、別のPC(※)(以下「作業用PC」とする)のdiskpartを使って壊れたdiskから管理情報(VolumeやPartition情報)を採取した(#)。

 元のDISKの管理情報は次のようなものである。

(この表示には作業用PCを使ったため、上の表示では元のC:がE:として割り当てられている)

(Partition 2がVolumeとして認識されていないのは、Partition間の隙間だからだろう)

 これらの情報からパーティション(順番、大きさ、フォーマット形式等)をdiskpart(或いは相当のツール)を使って新DISKに再現した。しかし上の表示値は丸められているので正確な値は分からず、元あった場所に狂い無くパーティションを回復することは出来なかった。このときVolume 5 (Partition 3)の属性を正しくNTFSと指定する事を忘れてはならない。

 新しいディスクに管理情報を設定した後、Partition毎にバックアップデータを流し込んだ。このデータの書き込みには4時間くらい、とくに壊れているPartition 3は全セクターをベタ書きするので時間がかかった。そしてAcronisの指示通り最後にトラック0やMBRも書き戻した。これらディスクの管理情報は最後に書き戻すよう指示されているので、ツールが適当に値を修正している筈だ。これでクローン(正確にはクローンもどき)は出来上がった。以下はこのHDDでの作業である。

 このディスクをDynabookに戻して起動を試みたが、いきなりエラーとなるだけで回復環境を含めて全く立ち上がらなかった(これはよくあるパターンで、普通は泣く泣くクリーンインストールするしかない)。各Partitionの位置がオリジナルと完全に一致していない事が原因かと思ったが最後に書き込むMBRはツールで修正されていると思われ、またこのDiskはGPT形式でありMBRを使っていないので関係ない筈なのだが・・・。

 このディスクを作業用PCに付けるとファイルにアクセス出来るようになった(色々試みたのでこの段階で何かの復活ツールの世話になったのか思い出せない)。ただし幾つかのファイル、とくにユーザのファイルへのアクセス権が無いと怒られた。そこでユーザフォルダのプロパティを開き、セキュリティタブの中のアクセス権を編集しUsersやPowerUsersを追加した(%)。ここまで来てユーザのファイルにアクセスできるようになり、ファイルを外付けUSB-HDDに取り出す事ができた。

  最後にchkdskを/fオプション付きで起動し壊れていたC:パーティションの修復を試み、それによって様々なエラーが修正された。その中には、

 CHKDSK は新しいルート ディレクトリを作成します。
  165 個のインデックスなしファイルがスキャンされました。             
  48 個のインデックスのないファイルが元のディレクトリに回復されました。
  117 個のインデックスのないファイルが lost and found に回復されました。
  48442 個の再解析レコードが処理されました。
 マスター ファイル テーブル (MFT) のミラーでエラーを修復します。
 属性定義テーブル エラーを修復します。
 ブート ファイル エラーを修復します。
 マスター ファイル テーブル (MFT) の BITMAP 属性エラーを修復します。
 ボリューム ビットマップ エラーを修復します。

 などがあった。

 続く。 

(※)作業用PCはDELLのLatitude D630(Core2Duo,4GB) というWindows-XP時代のPCをSSD化しWindows10に更新したものである。 

(#)SANWAのUSB-CVIDE3というSATA-USB3.0変換ケーブルを使って接続した。

(%)Windowsを十分理解していないのでこの操作が妥当であるかは分からない。ただ、Windowsの調子が悪くなった時はほぼ間違いなくアクセス権と後述の{GIUID}の問題が絡んでくる事は経験済み。


2022年3月1日火曜日

アクションカメラCT9500に外部マイクジャックを追加する

 アクションカメラCT9500に外部マイクジャックを付けて欲しいと頼まれた。マイクは内蔵しているが撮った音量が小さく使えないらしい。私自身はアクションカメラを触ったことはないが、かなり小型の動画撮影用カメラである。

最初はジャックを付けるには隙間が無く改造は無理だろうと思ったがネットに幾つか実例が上がっているとの話なので引き受けた。

改造は分解から始まるが最初の手がかりが分からない。下手に力を入れると酷く傷がついたり壊れて元に戻せなくなる。幸いな事にネットに動画があるので、それを参考に分解した。なおレンズを傷つけないよう作業中はレンズにマスキングテープを張った。

部品を追加する空間の大きさは上の写真を参考にしてもらいたい。分解したら次は部品の調達である。現物を持って秋月に行き、隙間に入りそうな部品を探した。

マイクジャックは2.5mmと3.5mmの物を売っているが部品の大きさがほぼ同じなので、より汎用的な3.5mmの物を使う事にする。3.5mmの物も何種類かあるが、隙間に入りそうな単純な丸い3極のジャックを選び、マイクの切り替えは別途小型のスイッチを追加する事にした(プラグを差し込む事で内蔵マイクと外部マイクを切り替えることが出来るような物もあるが大きくてカメラ内部の隙間に収まりそうにない)。また隙間に収まりそうな直径6mmのマイクを買った(元々基板に乗っていたのは直径4mm厚さ1mm程度のマイク)。

部品が揃ったので加工に移る。先ず穴あけである。内部にうまく収まりそうな位置を決めてケースに穴を開ける。穴を開ける場所は先人の例を参考に微調整した。ここだと手持ち用のホルダーに取り付けるにもギリギリ邪魔にならない(防水ケースに入れるにはジャックの頭が邪魔になるので少し削る必要がある)。 また内蔵マイク用の穴は細いスリット状なのでドリルで広げた。部品を取り付けると次の通り。ジャックはネジ式なのでそのまま固定できるが、マイクやスイッチはホットボンドや瞬間接着剤で固定した。流動性の高い瞬間接着剤は隙間からスイッチの内部に入り込んでダメにするので要注意(私は1回失敗した)。


マイク用配線を引き出すために基板上のマイクを取り外したが、ハンダが融けないうちに力を入れ過ぎてパターンが無くなってしまい、さらに多層基板なのでスルホールがそのまま裏側に出ている訳ではないため簡単に配線を引き出せなくなった。
僅かに残ったスルホールの芯を頼りにテスターであちこち当たってみると配線の行先が分かりそこから配線を取り出すこととした。
上の写真でオレンジで囲んだ配線がマイクの+端子、青が近くのGNDである。

 あとは配線を接続し、元通りに組み立てればOKであるが、実際には組み立ての途中で部品を通すのに不都合な出っ張りがあったり、部品や配線が微妙に当たったりして綺麗に収まらない。最終的には配線を通す経路を変更したり、リューターで邪魔な箇所や部品を削りやっと押し込むことが出来た。

元々自分のアクションカメラではないので音がどれくらい改善されたかは分からないが、外部マイクが使えることはもちろん、内蔵マイクを使って録音された音が内蔵スピーカーから聞こえるようになったのでやった甲斐はあったのだろう。

なおマイクにはプラグが2極、3極、4極のものがあるが、アクションカメラの録音はモノラルなので 3極プラグの先端(L)だけを使って2極にも対応するようにし、4極は規格が複数あるので変換コードを作って対応することした。