電子辞書Brainをいじる (1) Brainuxの環境を構築する

電子辞書Brainをいじる

以前ネットを検索していると、電子辞書を改造して、WinCE上でアプリを動かしたり、
Linux(Debian)を動かすことができるというのを発見していたが、動かせる電子辞書を持っていないので、記憶の片隅に置いていた。

先日Bookoffを探索していたときに、SHARPさんの電子辞書であるBrain SH3が3000円で転がっているのを発見。
検索してみたところ、通称Brain第3世代と言われるもので、比較的に簡単にWindowsCE化やLinux(Brainux)を動かすことが可能なようですので、その場で購入。
(第1-3世代が普通に動かすことができる範囲で、第4世代は機種選定や工夫が必要とのこと)

で、WindowsCE(WinCE)化についてはもともとこの電子手帳が「Windows Embedded CE 6.0 Core」上で動いているので、それを開放する形でアプリが動かすことができます。

また、Linux(Brainux)については、SDに書き込むDiskイメージが公開されているので、こちらを利用すればOKですが、ファイルシステムの関係でそのままでは、1つのSDカードで教養は難しそうでしたので、まずは、Linux(Brainux)を準備して、Boot領域にある少量のFAT32領域を拡張して、WinCE環境で共用利用できるよう環境構築を挑戦してみます。

BrainのWindowsCE化を含めた活用ページ
Brain Wiki

Brainuxについては、こちらが紹介ページだと思います。
Brainux Wiki

用意するもの

今回用意するのは以下ですが、
ぶっちゃけ第1-3世代のSHARP 電子辞書Brainさえ入手できれば、あとは何とかなると思います。

  • SHARP BRAIN PW-SH3(第3世代Brain)
  • MicroSDカード(今回は32GBを用意。Linuxだけなら4GB以上のmicroSDカードが必要)
  • PC(今回はWindowsPCを使った手順になります)
  • PC上でMicroSDが読み書きできるスロットやUSBドングル(必要に応じてSDアダプター)
  • Linux(Brainux)のDiskイメージ
    今回は、以下のgithub上にある2024-12-23-202715バージョンのイメージをダウンロードします。
    Releases · brain-hackers/buildbrain
    sdimage-2024-12-23-202715.zip
  • 起動可能なUSBドライブを簡単に作成できるツール
    今回はrufusを利用しますが、以下からダウンロードできます。
    Rufus – 起動可能なUSBドライブを簡単に作成できます
    rufus-4.11p.exeのポータブル版で大丈夫です。
  • Windows上でパーティーションを操作できるツール
    今回はMinTool Partition Wizard無償版を利用します。
    以下からダウンロードできます。
    MiniTool Partition Wizard ダウンロード センター
    無償版(pw-free-online.exe)で問題ありません。

Linuxイメージの書き込み

まずはダウンロードしたBrainuxの起動イメージのzipファイル(sdimage-2024-12-23-202715.zip)を展開し、出てきたファイル(sdimage-2024-12-23-202715.img)を
Rufusを利用して用意したMicroSDに書き込みします。

まずは、用意したMicroSDをPCに接続して認識させます。

次にMicroSDにLinuxイメージを書き込みます。
Rufusはポータブル版であれば、インストール不要でするの利用が簡単です。
「ブートの種類」横の「選択」をクリックして、先ほど解凍したイメージファイル(sdimage-2024-12-23-202715.img)を設定します。

「デバイス」については用意したMicroSDを選択してください。
(書き込み先を間違えるとデータが消えて大惨事になりますので、容量などで確認してください。)
あとはデフォルトでOKです。
準備ができたらスタートを押します

警告が出るので、問題なければ「OK」をクリックすると書き込みが開始されます。

書き込みが終われば、SDカードの準備は完了です。

書き込んだ結果、全体で約3GBが使用済です。
うちWindows10,11やWinCEで操作可能な領域であるFAT領域は64MBで、
空き領域は残りF48MB程度ですね。
WinCE環境と共存させるには、心もとない容量です。

アプリフォルダには、Linux(Brainux)起動用のアプリが登録されています。

Linux(Brainux)の起動

作成したMicroSDをBrain(PW-SH3)に挿して電源を入れます。
電子辞書のメニュー(HOME -> ツール -> 追加コンテンツ -> 追加アプリ・動画)に進んで、
「launch Linux」をクリックすることで、Linux(Brailunx)を起動できます。

OS起動には50秒くらいかかります。

ログイン画面では、Xinitrc、Shell、Jvmが選べるようです。
デフォルトのログイン認証情報は、user/brainです。

Shellが非X11環境で、Xinitrc・JvmがX11環境になります。

Shellでは、X11が立ち上がらないので、GUIは使えませんが動きが軽いです。

Xinitrc・Jvmの違いがまだ分かっていないのですが、初回起動時にタッチパネルの調整画面が出るのでここで設定すれば、画面タッチパネルも問題なく使えます。
画面タッチパネルは感圧式なので、付属のペンか爪の先で押すような操作になるのですが、
何もないところでタッチすると、メニューが出てくるので、Terminalを選べば、Shellが起動します。

キーボード操作について

SH3の場合、、Brainuxではキーボードバインドは以下になります
(基本英字キーボードな割り当てです)。

Enter「決定」ボタンになります。
ESC 「調べる」ボタン
TAB 「国語辞典」ボタン

Shift 「シフト」ボタン
Ctrl 「≫を回転して上向きした記号」ボタン
Alt 「文字切り替え」ボタン
記号 「記号」ボタン

それ以外のキーマップは、BrainWikiに詳しく書かれています。

PW-SH3で試しているのですが、同時押し入力パターンの一部記号(「,」「.」「/」)の入力がうまくいかない場合があり、入力できても何故か連続入力されて止まらないことが多いです。
ほかの機種が同じかはわかりませんが。

この場合、削除キーで削除して対応していますが、すぐに別のキーを押すことで連続入力を止めるやり方しか思いつきませんでした。
(「.」を入力するのに、記号+m -> m で.mを入力して、mを削除)

「.」はIPアドレスとか、URLの入力で入力する頻度が高いので、ちょっとストレスではあります。

入力出来るときは入力できるが、何故か連続入力として認識されてしまい、今のところ上手く制御できていません。

USBホストアダプタ経由でUSBキーボードを接続するのが、おすすめです。
(英語キーボード認識になりますので、英語キーボード推奨です。)

現在のストレージ系の情報を表示させてみる

では、Terminalを立ち上げて現在の状態を確認するため、コマンドを打ってみます。

lsblk ブロックデバイス(ストレージ)の一覧を表示

mount マウント状況

brainuxを終了させる

brainuxを終了させるには、以下のコマンドを入力します(userのパスワード入力が必要)。
私が使ったイメージでは自動で電源OFFまでされました。
次回電源ボタンを押した際には、電子辞書アプリが起動します。

sudo shutdown -h now

再起動は以下コマンドになり、再起動後に電子辞書アプリが起動します。

sudo shutdown -r now

FAT32領域を広げたい

先ほど確認した通り、WinCEでも利用できるFAT領域が64MBなので、MicroSDの空き容量を使って拡張してみます。

今回使うツールはMintool Partition Wizardです。
先ほどダウンロードしたインストーラ(pw-free-online.exe)を実行すればインストールできます。
(Mintool Partition Wizardインストール後に、Windowsログオン時にMintoolのウィンドウができようになったときは、タスクスケジューラにある「MinTool ShadowMaker」「MinToolPartiitionWizard」を無効化すれば出なくなります。)

MicroSDはDisk3になります。
まずはFA32領域にあるLinux領域(EXT4)をずらします。
32GBのMicrosdなので、FAT32を全体の半分の16GBを確保したとすると、
後ろのLinux領域をまずは移動します。

Linux領域であるrootfs(Ext4)を選択して、右クリック->移動/サイズ変更をクリックします。

現在所鵜パーティションの位置情報が表示されます。

パーティションのブロックを右に移動して、「前の未割り当て領域」を0.00->15.92になるまで移動します。

OKを押して、左横の適用をクリックします。

警告が出るので、「はい」をクリックします。

移動が開始されます。
(実際のデータ移動が発生するのでそれなりに時間がかかります。)

完了するとメッセージが表示されます。

移動が完了しました。
rootfs(Exr4)の領域が移動して、
FAT32領域であるboot(FAT32)の後ろに空き領域が確保できたことがわかります。

次は、FAT32領域を広げます。
FAT32領域であるboot(FAT32)をクリックして、「拡張」をクリックします。

現在のパーティションの状態が表示されます。

「どのくらいの空き領域を利用しますか?」のスライダーを一番右側に移動して、
先ほど確保した空き領域をすべて使って拡張します。

OKを押して、左下の適用をクリックします。

警告が出るので、「はい」をクリックします。

完了するとメッセージが表示されます(データの移動などはないのですぐに終わります)。

SDカードのFAT32領域の状態をWindowsから見ると、容量15.9GBに拡張されています。

これでFAT32領域の拡張は完了です。

改めてBrainuxを起動する

拡張したmicroSDをBrainに挿しなおして、先ほどと同様にBrainuxをブートします。
問題なくBootできればOKです

再度、lsblk ブロックデバイス(ストレージ)の一覧を表示すると、
/boot領域16GBになっていますね。拡張成功です。

Linux領域を拡張

次にLinux領域を拡張します。
標準でツールが用意されているので、こちらを利用します。

sudo brain-config

上下左右キーと Enter キー(決定キー)を使って以下の手順に従って操作します。
“Advanced Options” を選択
“Expand Filesystem” を選択

しばらくすると “Root partition has been resized. …” と表示されるので “Ok” を選択
“Back” を押しトップメニューに戻る
“Finish” を選択すると再起動が促されるため再起動すれば、拡張完了です。

再度、lsblk ブロックデバイス(ストレージ)の一覧を表示すると、
無事 /領域が13.1GBになっています。

SWAP領域の確保

最後にSwap領域を確保します。

デフォルトではSwapは設定されていません。

まずは、Swapファイルの作成と、Swap設定を実施します。
ここでは、Swapファイルの静として、”2048″と2GBを指定しています。
(今考えると、512MBくらいでも問題ないかもしれません。)

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 0600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile


次に、Swap設定を永続化するために、
/etc/fstabファイルを編集して、次の行を追加します。

/swapfile none swap sw 0 0

キーのバインドに癖があるので、以下を参考にしてください。
Enter 決定
ESC 「調べる」ボタン
: 記号+シフト+H
= 記号+F
/ 記号+-
viiの保存と終了 シフト+ZZ

では、freeコマンドでSwapの状態を確認します。
Swap領域が確保されていますね。

最後に再起動して、再度freeコマンドでSwapが継続して確保されていることを確認出来たら作業完了です。一部スワップしていることも確認できます。

これでBrain自体のインストールまでは完了しました。

 

今後WinCE化やアプリのインストール、Brainux上のアプリ等を試していきたいです。

 

Views: 70

カテゴリー: Brainux | コメントする

Windowsで原因不明の空き容量不足の調査と対策

Windows11で空き容量不足発生

サブで使用しているPCを今まで使っていたのだが、
いつの間にかCドライブが枯渇していた。最近Windows10から11にアップグレードしたサーバだったので、以前のwindowsのデータが残ているのかと思って、ストレージセンサーで削除してみたが、2GB程度は減ったけど効果はスズメの涙程度。
120GBのSSDなので、何かあったのかと調査開始。

肥大化しているファイルを探す

で、どこがそんなに容量を使っているか巨大なファイルをコマンドで調べていたところ・・・・・(以下は、Cドライブ全体で100MB以上のファイルを列挙するものです。)

FORFILES /S /C “cmd /c if @fsize GTR 104857600 echo @path @fsize”

ん!!

ちょっと待って、57002040969のファイルサイズって、53GBやん
原因間違いなくこれやん!!

ファイルを削除する

“C:\ProgramData\Synaptics\ValidityService.log”は、何かのログファイルですね。
Synapticsとなっているから、ノートPCに搭載されているタッチパネル関係かな?
ということで、一回そのままログファイルを削除してみる。

削除すると、少し待つと勝手に新しいファイルが作られて、0バイトから徐々に増えていきます。

肥大化したファイルについて対策する

“ValidityService.log”でネットを検索すると、Synaptics社製のタッチパッドドライバで ValidityService.logと言うファイル名のログファイルが永遠に肥大化するというバグがあるようです。

HPコミュニティ
なぜSynapticsの有効性サービスログのサイズは常に大きくなるのですか?

対策として、いったん該当ファイルを消した後に、
また自動で作成されてどんどん太っていくので、その間にValidityService.logのプロパティで読み取り専用にすることで、いったん暫定対策。

ちょっと待っただけで4MB超えてますね


いったんこれで、空き容量確認しました。

ちなみにこのバグ、あたらめてネットで確認すると

対策方法としては
 1) Synaptics FP WBF Policy Serviceを停止する
 2) C:\ProgramData\Synaptics\ValidityService.logを削除する
 3) C:\ProgramData\Synaptics\ValidityService.logにダミーのファイルを作成する
 4) C:\ProgramData\Synaptics\ValidityService.logのダミーのファイルのプロパティで「読み取り専用」にチェックを入れる
 5) Synaptics FP WBF Policy Serviceを開始する

で解決するそうです
(私の時はサービス止めずにファイル削除して「読み取り専用」にしちゃいましたが)

いったんこれで様子見します。

Views: 29

カテゴリー: Windows | コメントする

WindowsPCの消費電力を下げる方法(モダンスリープの無効化で年額7000円弱節約できるかも)

Win11PCの電気代を抑えたい

Windows11を使用しているが、最新スリープしても消費電力が下がらないのに気づきました。

HELIOSNEO16

アイドル状態   50-60W/h ぐらい
ディスプレイOFF 30-50W/h ぐらい
スリープ状態   30W/h ぐらい
休止状態      0W/h

もし、現状だと、スリープ状態を維持していても
1日で30W/h x 24 (h) x 40(円/(1000w/h)) = 28.8円
1ケ月(30日)で864円かかることになります。

もし普段PCを毎日17:00-25:00に使用しているとすると
スリープしている時間は、24-8時間=16時間で1日の2/3はスリープ状態になるので
その期間電源を落とせれば、一か月で864*(2/3)=576円削減になります。

塵つもで、1年で計算すると、576 x 12 = 6,912円は意外と大きいかもしれません。

設定を確認

また、以前Windows10のPCを使用していた時は、休止の設定があったのですが、その設定もなくなっていました。

で、いろいろ確認していたところ、
Windows11のスリープは「モダンスリープ」(S0 低電力アイドル)というものが標準になっており、CPUは停止まではせずに低消費電力で稼働しているようです。

最初にPCを使っていいたころは、スリープすると消費電力が0Wになっていたはずなので、
どっかのタイミングで、モダンスリープが有効になってしまったのかもしれません。
(ハイブリッドスリープも有効になっていた。)

省電力モードの状態の種類

  • ディスプレイOFF
    ディスプレイをOFFにしますが、CPUやメモリはそのまま稼働しています。
    (消費電力目安 30-50W)
  • スリープ状態( モダンスリープ:S0 低電力アイドル)
    PCの多くの部分の電力は切るものの、CPUは消費電力の低いアイドル状態として完全には停止させない。ネットワークからのパケット受信などで割り込みが起こると、一時的に復帰してこれを処理できる。大半の時間は低電力状態に留まるため、バッテリー消費が抑えられ、従来型のスリープとは見た目は変わらない。
    復旧速度は非常に速いが、CPUが稼働している分表皮電力が高いです。
    (消費電力目安 30-40W)
  • スリープ状態(通常スリープ :S3 スタンバイ)
    作業中の状態をメモリに保存し、低電力で待機するため、復帰が早く、短時間の離席時に便利です。それ以外のデバイスは基本的に電源OFFとなる。
    (消費電力目安 0-1W)
  • 休止状態
    作業中のメモリ状態をハードディスクに保存し、電源を完全に切るため、スリープよりも消費電力が少なく、長時間使用しない場合に適しています
    注意点としては、システムドライブがSSDなどの場合、メモリのお状態が休止状態開始時に書き込まれるため、SSDの総書き込み容量が関されることでSSDの寿命に影響が出る可能性がある。(バッテリ稼働しているモバイルPC向けです)。
    (消費電力目安 0W)
  • ハイブリッドスリープ
    一定時間経過後にスリープ状態ののちに、また指定時間がたつと自動的に休止状態になります。バッテリ運用しているときにうれしい機能です。

現状利用可能なスリープの一覧

現状の使用可能なスリープの状態を確認するには、以下のコマンドを入力します。

powercfg /availablesleepstatesavailablesleepstates
(またはPowercfg /a)

なお、
「スタンバイ (S0 低電力アイドル) ネットワークに接続されています」
となっていますが、以下のコマンドを入力すると、
「スタンバイ (S0 低電力アイドル) ネットワークが切断されました」
と無効に変更できます。勝手にスリープから復帰してしまう場合は有効なコマンドです。

(最後の数字を0->1にすることで、ネット接続接続を有効化します[設定を元に戻す]。)
(最後の数字を0->2にすることで、「ノートPCのふたを閉じたときにのみ無効」することも可能だそうです。)

表示される通り、モダンスリープ(S0 低電力アイドル)が有効になっていると、
この状態では、スタンバイ(S1,S2,S3)やハイブリッドスリープが利用できないようです。

なので、モダンスリープを無効化してみます。

モダンスリープを無効化方法

モダンスリープを無効化するには、レジストリをいじる必要があります。

スタートメニューもしくは Win+R で 「 regedit 」と入力してレジストリエディタを起動

以下のフォルダに移動する
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power

Powerフォルダを選択した状態で右パネルの適当な所で右クリック
追加で「 DWORD 値 (32-bit)」を追加します。
Value name は 「PlatformAoAcOverride」。値は0のままでOKです。

レジストリエディタを閉じて、OSを再起動すると、設定が反映されます。

再起動後に、現状の使用可能なスリープの状態を確認すると、
「スタンバイ (S0 低電力アイドル)」の代わりに、「スタンバイ (S3)」が使用可能になっています。

これで、スリープすると消費電力はほぼ0になります。
なお、S3スリープでは、USB接続のキーボードやマウス。ジョイパットなどの電源は切れます。

休止も問題なくできました。

設定変更したことによって、「次の時間が経過後休止状態にする設定が復活しました。」

休止が電源メニューにでてこない場合

なお、電源メニューで休止状態が表示されない場合は、以下の手順で休止を有効化できます。

休止を有効化するには、コマンドプロンプトを管理者で起動した後で、以下のコマンドを入力してみてください。

逆に休止を無効化するには、コマンドプロンプトを管理者で起動した後で、以下のコマンドを入力となります。

あとは、休止を有効化することで、電源メニューに休止を表示させることができます。
(「現在利用可能ではないせってを変更します」をクリックすると変更できるようになります。)

これで、電源メニューに休止が表示されます。

S3スリープがうまく動かない場合

これでスリープすることで、S3スリープが利用可能になりました。
スリープ中はほぼ電力を消費しなくなります。

モダンスリープ(S0 低電力アイドル)よりは、起動に時間はかかりますがそこまで差は感じられません。休止はSSDをシステムDiskdに使用している場合寿命を縮める可能性がありますのでS3スリープが使えるのであればこちらを使うのをおすすめです。

しかし、S3スリープがうまく動かなかったり、S3スリープ実行後に不具合が起こる場合には、残念ながらS3スリープは断念したほうがいいです。

レジストリエディタを再度立ち上げて、
先ほど作成した以下のレジストリ項目を削除して、再起動すればも元に戻ります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
「PlatformAoAcOverride」

間違ったものを消すと、最悪PCが立ち上がらなくなります可能性もありますので、操作する場合は注意しながら作業してください。

実は、私の環境では、S3スリープを有効にして、S3スリープ自体はできたのですが、
S3復帰後にノートPCのディスプレイがONにならない事象が発生してしまい、元に戻しました。(ノートPCのディスプレイは、試行錯誤の上、電源OFFの状態で電源ケーブルを抜いてしばらく放置すると復活しました。厳密な復活条件は見つかっていませんが・・・)

なので、私の場合はS3スリープの設定を元に戻したうえで、
電源モードの操作や休止状態を組み合わせたバッチファイを作成して、消費電力削減を試し中です。

ある程度調べ終わったら、また記事にしたいと思います。

Views: 116

カテゴリー: Windows | コメントする