Time Sleuth Display Lag Testerによるモニタ遅延計測

導入

遅延。この言葉に対してあなたが抱く感情はどのようなものでしょうか・・・あ、久しぶりにブログを書くのでちょっと奇をてらった冒頭にしようかなと(^^;あ、結果だけ見たい方は次のブロックに進んでください。しばらく自分語りが続きますw

自分は昭和生まれで、ブラウン管でSTGなどをzero lag環境で長い間やってきた人間です。しかしながら、液晶モニタ全盛の現代でゲームをやる場合、液晶モニタでゲームをプレイせざるを得ないことが多く、そうなると所謂「遅延」が気になるわけです。特にSTGでは遅延の大小が自機の操作性に直結しており、そのゲームの面白さにさえ影響を与えるほどの重要なファクターとなります。自宅には汎用ビデオゲーム筐体であるブラストシティを導入しておりますが、諸般の事情によりアーケード基板であっても自室の液晶モニタにCBOXを繋いでプレイすることが多いです。

つい最近(2024年6月)まで液晶でアーケード基板のゲームをプレイする場合は、日本を代表するスケーラーであるフレームマイスターを使用していました。遅延をそれなりに感じつつも

電波新聞社こそ至高!絶対神!

という価値観を植え付けられた世代であるため、フレームマイスターを超える(フレームマイスターより遅延の少ない)スケーラーなど存在しない!と疑わない日々を送っていました。

そんな思考停止状態で日々を送っていたわけですが、今年になって始めた趣味?であるレトロPCいじり絡みで、レトロPCのキャプチャ環境について最適な環境を調査していた過程において、遅延観点ではフレームマイスターは完全に時代遅れの代物と化していることに気づかされたのです。

趣味のレトロPCいじり

ああああそんなバカなあああ!と自分の情弱さ加減に幻滅しつつも、遅延をもっと少なくできるという素晴らしい情報を知ってしまっては、遅延が大嫌いな自分の欲求はもう止められません。気が付いたら2024年現在定評のあるスケーラー(2万円以下)を全部ポチっていました。

2024年現在定評のあるスケーラー、GBS-C、OSSC、RetroTINK 2x-ProとラグテスターのTime Sleuth Display Lag Tester

別に遅延を改善するだけであればラグテスターは必要ないのですが、昨今SNSやECサイトのレビューでは、「遅延はあまり感じません」「え~っ、遅延なんてなくなくね?キャハハ!」「(アストロシティミニVの)ACアダプタを換えたら遅延が改善しました!(キリッ)」などと、なんのエビデンスも示さずあてにならない人間の体感だけで語るやつのなんと多いこと。

そんなエビデンスも示さずに体感だけの感想を語る害悪な人間に自分は絶対になってはいけない!との考えに至り、ラグテスターを使った精密な遅延計測はマスト、マスター、マステストである、と金もないのにラグテスターも無理してポチりました。(泣)

Time Sleuth Display Lag Testerを使った遅延計測中の様子。合計6か所(白い長方形)で測定可能

というわけで・・・

遅延計測結果

液晶モニタをドーンと10台くらい用意してデータとしての有用性を上げていきたいところですが、そんな金や保管場所があるわけもなく手持ちの3台のみの比較となります(ALIENWAREのモニタもあるけどDPに変換するのが面倒)。なお、計測にあたりテスターが出力するHDMI信号をコンポーネント信号に変換してスケーラーに食わせる必要があるため、avedio linksのHDMItoコンポーネントコンバータを使用しました。日本の尼では売り切れていたので米尼より取り寄せました。最初アリエクのほうが安かったのでそっちから買ったのですが、コンバータだけで20msほど遅延するという粗悪製品だったので、もしもオレっちも計測するぜ!なんて奇特な方は米尼から買うことを強くお勧めします。送料に糸目をつけなければ3日で日本に来ます。どっちの製品も取説にメーカー名の記載すらないノンブランド臭のする中華のアレな作りですが、アリエクの方は画質も悲惨で完全にゴミです。

というわけで計測結果はGoogle スプレッドシートに上げました。

https://docs.google.com/spreadsheets/d/14iLRMDgA8F1GQ09rNE-5QCfUe2qJiHFV/edit?usp=sharing&ouid=103781726692634923394&rtpof=true&sd=true

画像としても上げておきます。

遅延計測結果

総評、というか感想および数値だけでは見えてこない情報の補足

  • 低遅延で有名な製品というわけではないと思うけど、GB2770HSUは比較的新しい世代のモニタであり、総じて優秀
  • 3つのスケーラーの遅延の違いは1~3ms程度で僅差ではあるが、ゼロラグのブラウン管から数msの液晶になっただけで操作感に違和感を覚えることを考慮すると、1ms程度であっても過小評価するべきではない。
  • GBS-CはOSSCより遅延が若干多い、という情報をYoutubeで見たけど自分の環境ではGBS-Cのほうがやや良好
  • OSSCはGBS-Cより遅延が若干多いが、ブレが非常に少ない。プレイに影響を及ぼすような違いとなるのかは分からない。計測前の体感ではOSSCの方が良好であったが、計測してみたらこの結果である。
  • OSSCで240pがすべてno syncになってしまっているが、HDMItoコンポーネントコンバータのせいかもしれない。
  • 240p前後になるアーケード基板の場合はRetroTINK 2x Proが最適かも。ただし画質はS端子またはコンポーネントレベルになる。
  • テレビはテレビ番組を観るために使うものであり、ゲームをするために使うものではない。(ガチ勢並みの感想)
  • なんとなく3か所を計測ポイントとしてみたけど、top以外を計測する意味は何かあったのかと自問自答している。
  • 遅延の話ではないけど、画質という点ではRGB入力のOSSCが一番綺麗
  • 同様に遅延の計測をされている先人の方々のデータをみるとPixioのモニタが遅延が少ないようなので、いずれ入手して追試したい。

というわけでこの記事はいかがでしたでしょうか。役に立ったのなら、高評価およびチャンネル登録をお願いします。(そんなボタンはない)

電池切れCPS2基板復旧手順

CPS2のゲーム基板(B-Board)には電池が搭載されており、その電池が切れると起動に必要なセキュリティキーが消え、ゲームが正常に起動しなくなるという恐ろしい結末が待っています。CPS2のゲームがリリースされていたのは1990年代~2000年代初頭であり、2019年の今、いつ電池が切れてもおかしくありません。事実私のプロギアの嵐の電池がつい先日切れました。(笑)

電池切れが起こる前に上手くセキュリティキーを保持しつつ新しい電池に交換することもできるのですが、セキュリティキーが消えてしまい基板が起動しなくなった場合はどうしたらいいのでしょう。
心配はいりません。海外のハッカーがセキュリティキーを書き戻す素晴らしい手法を編み出しました。
その手順は、前述のハッカー本人が「Capcom CPS2 Security Programming Guide」として綺麗にまとめています。記載内容はとても解りやすく実際に私も手順にしたがい復旧できました。しかし記事が英語であること、多少ハマったところもあったことから、補完資料としてまとめることにしました。

別ソリューションとしてカスタムチップをB-Board上に実装して電池レス化する「InfiniKey-CPS2」というものもあります。しかしながらチップの入手性があまり良くないことと、はんだ付けの難易度が比較的高いため、はんだ付けをする箇所が少ない&基板を複数復旧する場合にも基板毎に電池&電池ケースだけを用意すれば良い、こちらのソリューションをお勧めします。

なお、オリジナルの記事ではいくつか存在するB-Boardのリビジョンすべての復旧(desuicide)手順を網羅していますが、私の記事ではプロギアの嵐の基板(93646B-7)を例に記載していきます。

必要なもの

1. Arduino Uno

いわゆるマイコンボードです。これにプログラム「ArcadeHacker_CPS2.ino」を書き込んで実行し、セキュリティキーを基板に書きこむことになります。Arduinoの公式ハードはそれなりの価格ですが、非公式の互換ハードが多く製造されており、安く入手できます。下手をしたら1回しか使わないので品質が多少低くても互換ハードで十分でしょう。私が使用したものは以下のリンクのものです。

ELEGOO UNO R3

2. LCD Keypad Shield

Arduinoで画面表示を見て操作するために必要な、液晶とキーパッドが一緒になったハードです。これもピンキリですが私は互換ハードの互換ハード(?)で済ませました。

HiLetgo 1602 LCD キーパッド シールド ボード

3. ピンストリップ

LCD Keypad Shield基板上の穴に挿して接続端子とするためのピン。私は以下のものを購入しましたが大量に余りました。7本あれば良いです。

HiLetgo® 20個セット 40Pin 2.54mm 単一列端子ピン ヘッダー ストリップ

4. ジャンパワイヤ

ピンストリップで増設した接続端子と基板を接続するために使うケーブルです。また、ATX電源から出るペリフェラル4ピンをB-Boardに接続するためにも使います。(後述) オリジナルの記事ではオスオスとメスメス8本ずつ必要と書いてありますが、93646B-7の場合はメスメスのタイプが7本あれば間に合います。ケチって短いものにすると作業効率が低下するので注意です。

JPワイヤー20cm(メスーメス)10本入【20SS-MIX】

5.  グラバークリップ

B-Board上の6ピン端子(CN9)に6ピンコネクタを使わずそれぞれのピンにケーブルを1本ずつ接続するために使用します。6個必要です。これが地味に価格が高い。安いのを探しまくって海外発送のものにしました。

Lovoski 2個セット ミニグラバー

6. 電源延長ケーブル(ペリフェラル4ピンオスメス)

自作PC等のATX電源から生えるHDD電源用ペリフェラル4ピンコネクタから、B-Boardに供給する電源(5V)を取り出すために使用します。最近のATX電源だとペリフェラルコネクタがなく、SATA電源コネクタ(平べったいアレ)だけしかないかもしれません。その場合はSATA用電源変換ケーブルを用意します。

電源延長ケーブル【WA-048B】

7. 電子工作用具

上記のほか、電子工作全般に使用する以下のものが必要です。

・はんだごて

・はんだ

・ケーブルストリッパー

・ニッパー

・テスター

テスターは無くても大丈夫ですが、そもそも電池切れであるのかどうかの確認に使えますし(3.6Vがちゃんと電池から供給されていることをチェックする)、トラブルシューティング用にあったほうが良いです。

8. CPS2関連

CPS2のB-Board用として以下のものが必要です。

・T20トルクスドライバー (これでカバーを留めているネジ(4本)を外します。ホームセンターなどで入手できます)

・塩化チオニルリチウム電池 (交換用電池です。単3形はおさまりはいまいちですが容量が大きいです)

ER14505(単3) 塩化チオニルリチウム電池 2600mAh

・電池ケース (上記電池の収納用です)

電池ケース 単3×1本 リード線 板バネ端子【BHC-311A】

9. ATX電源搭載自作PC(電源、Arduinoセッティング用)

突然ハードルが上がりました。5VとUSB電源が取れれば自作PCでなくてもなんでも良いです。自作PCがあれば一番楽だと思います。Arduinoセッティング用としてWindowsPCは必要となります。Linuxでもおそらく出来るとは思いますが素直にWindowsでやりましょう。そのほうが無難です。

10. 復旧用プログラム ArcadeHacker_CPS2.ino

復旧用プログラム ArcadeHacker_CPS2.ino を https://github.com/ArcadeHacker/ArcadeHacker_CPS2 からダウンロードしてデスクトップなど適当な場所に保存しておきます。

基板復旧(desuicide)

必要なものを用意するだけでちょっと疲れちゃうと思いますが、物さえ準備できれば実際の作業はそれほど大変ではありません。それではここから実際の復旧手順を書いていきます。

1. B-Board電池交換

1.1. まず、基板は2階建てになっているので、2階部分を外します。普通に手で外せますが、ピンが曲がらないように注意しましょう。次にB-Boardに実装されているもはや無用の長物ですらない電池をニッパーを使って基板から外します。マイナス側はニッパーが入りづらいので、プラス側をニッパーで切断してから電池を起こし、マイナス側は電池をぐりぐりするとポロッと外れます。

1.2. 電池ケースをはんだを使って取り付けます。基板を裏返し、元々はんだが盛られていたところにはんだをちょっと足せばすんなり付けられます。プラスマイナスは間違えないように慎重に。ケースを基板に繋いだら電池をケースにセットしておきます。

 

2. Arduinoセッティング

2.1.  Arduino本体にLCDキーパッドを装着します。ここはオリジナルの記事の写真をみれば直観的に出来るかと思います。次にピンストリップを7列分用意して、LCDキーパッド基板右上の7個ある穴に差し込みます。グラグラしてすぐ外れるのでビニールテープなどで固定しておきましょう。

2.2. Arduino開発環境である Arduino IDE を https://www.arduino.cc/en/Main/Software からダウンロードしてインストールします。インストール方法はググってください。いきなりハショりましたが世の中そんなものです。私は早くこの記事を書き上げて趣味のアニメ鑑賞をしたいのです。今期はえんどろ~!が最高ですね。

2.3. ArduinoとPCを付属のUSBケーブルで接続し、ダウンロード済の復旧用プログラム ArcadeHacker_CPS2.ino をダブルクリックします。Arduino IDEが起動するので、左上の「→」(マイコンボードに書き込む)をクリックします。

2.4. 書き込みが完了して数秒ほどたつと、LCDに「Select a game: –press down–」と表示されます。何も映らない人は焦らないでください。私もはじめは何も映りませんでした。LCDの輝度が基板左上にある半固定抵抗で調整できます。精密ドライバーで反時計回りに10周くらいまわして映らないようであれば、時計回りに20周くらい回します。それで映らなければ反時計周りに30周、それで映らなければ時計回りに40、、、そのうち映ります。輝度を合わせて出荷しろと(笑)

これでArduinoの準備は終わりです。PCから外しておきましょう。

3. B-Board電源供給用ケーブルの作成

オリジナルの記事の「Assembling the CPS2 target power cable」のところです。

電源延長ケーブルの「赤」と「その隣の黒」のケーブルをニッパーで切って、これまたニッパーで途中をぶった切ったジャンパワイヤとはんだでくっつけて、B-Board電源供給用に使うケーブルを作成します。黄色とその隣の黒のケーブルは12Vなので使用しません。不安な方はATX電源に接続し電源を供給状態にし、テスターで電圧が5Vであることを確認してください。

 

4. Arduino(LCD Keypad Shield)にジャンパワイヤを接続

LCD Keypad Shield基板上のピンにジャンパワイヤを接続していきます。GNDはATX電源から持ってくるGNDもあるので、ここでは便宜上Arduino-GNDという名称で呼びます。Arduino-GNDはLCD Keypadの半固定抵抗右横にある6ピンの右上になります。そこにジャンパワイヤを接続します。

ピンストリップで増設した7ピンの接続端子(LCD Keypad右上)は、番号が左から13、12、11、3、2、1、0となります。ボードリビジョン93646B-7を復旧する場合、12、11、3、2の4本を使うため、そこにジャンパワイヤを接続します。

 

5. グラバークリップ取り付け

4.で接続したジャンパワイヤの対向側にグラバークリップを接続します。グラバークリップは二股になっていますが、どちらに接続してもかまいません。

6. ArduinoとB-Boardの接続

B-Boardの左のほうにある6ピンのヘッダ(CN9)にグラバークリップで以下の通りArduinoと結線します。CN9のピン番号は上から1、2、3、4、5、6となります。グラバークリップは二股になっている股間()の突起を押すと先端から手がニョロっと出てきます。それでピンを挟んで接続します。

Arduino-GND → CN9の6

12 → CN9の5

11 → CN9の4

3 → CN9の3

2 → CN9の2

ここはオリジナル記事の写真が見やすいです。

7. 電源接続

手順3で作成した電源供給用ケーブルの黒線(GND)をCN9の6番に繋いでいるグラバークリップの片方に接続(ブリッジ)します。赤線は先にグラバークリップを付け、CN9の1番に繋ぎます。電源供給用ケーブルのペリフェラル端子はATX電源に接続しておきます。(接続前にPCの電源をOFFにしておくこと)

8. B-Boardに電源供給

ATX電源からB-Boardに電源を供給します。PCに組み込んだ状態のATX電源であれば、PCの電源をONにすれば電源が供給されます。

9. Arduinoに電源供給

ArduinoとPCをUSBケーブルで接続し、Arduinoの電源をONにします。

10. セキュリティキー書き込み

LCDに「Select a game: –press down–」と表示されたら、UP DOWNボタンを押して復旧する基板のゲーム名称を表示させ、SELECTボタンを押して選択します。プロギアの嵐はprogearjです。(エミュのゲーム名称に準じているっぽいですね)

書き込みが終わると「–disconnect and  test pcb–」と表示されます。PCからArduinoを外します。次にPCの電源をOFFにして、B-Boardに繋いでいたグラバークリップを全て外します。

11.  B-Board組み立て

外した2階部分を元に戻し、B-Boardをケースに組み込みます。私は以下の画像のように電池ケースはケースに両面テープで固定しました。

12. 動作確認

さて、上手くいきましたでしょうか。上手くいかなかった場合は、はんだ付け不良で電流がきちんと流れていないなどの原因が考えられます。電池をはんだ付けしたところが3.6V出ているか、ATX電源からちゃんと5Vがきているかなどをテスターを使って確認してみると良いかもしれません。

ここをご覧になってdesuicideを試した皆さまが成功することを祈念してこの記事を終わりにしたいと思います。

Thank you !

Synology DS216jにhomebridgeをインストールする

久しぶりの更新。まだ生きてます。

唐突ですが、時代はいまやスマートホーム()! 常時起動させているNAS、DS216jにhomebridgeを入れて、Siriから格安Wi-Fi対応学習リモコン経由で家電を音声操作しちゃおう!と思い立ちました。

超ざっくり処理の流れを説明すると、

iPhone(Siri) → homebridge(DS216j) → Wi-fi対応リモコン(RM mini3(eRemote mini)など) → 家電機器

となります。homebridgeはnode.jsで動くプログラムで、node.jsがパッケージセンターに公式に用意されていることから、さくっと30分くらいでインストール終わるんじゃね?と最初は思っていましたがhomebridgeがエラーを吐いて動かない。てこでも動かない。opkg環境を構築してソースからビルドしても動かない。dockerコンテナなら超さくっとインストールできるぜ?なんて情報もありましたが、上位機種じゃないとだめ。というわけでdocker全盛?の2018年にchroot監獄です。この記事を書くのも含めて結局トータル12時間くらいかかったという・・・。こんなに苦労するなら転がってるラズパイに環境構築すればよかったと後悔していなくもないです。

というわけで、homebridgeと学習リモコンの設定はぶっちゃけチョロなので、苦労したhomebridgeのインストール手順のみとなりますがまとめました。ここ↓
Setup Homebridge on Synology NAS without Docker
の手順を参考にしましたが結構アレンジしてます。というかせざるを得なかった。 同じCPUアーキテクチャの後継機種DS218jでも同じ手順が使えそうですね。

とここで注意事項。以下の手順でNASに入れるdebian-chrootパッケージは、DSM6.0以降のDiskStation(以降DS)に入れてアンインストールすると、DSが”brick(煉瓦化)”(日本でいうところの文鎮)する致命的な不具合が報告されています。対処方法は2018年10月19日現在、完全に確立されていないようです。したがって、

以下の手順を実施してもたらされる全ての結果の責任は手順実施者が負うことを認識してください。
責任を自分で負えないのであれば以下の手順を絶対に行わないでください。
実施する場合も必ずのNAS上にあるデータのバックアップを取ってください。

それではスタート

0. administratorsグループに所属するユーザをNAS上に作成しておく

1. Enable SSH your NAS. (いきなり英語でびっくりした?調査中英語ばっかりで疲れたのでこの疲れをおすそ分け)
なお、22番ポート以外のポートを使うように設定しておく。(10022など。以降、10022番ポートに設定した前提で手順を記載する)

2. コントロールパネル→ファイルサービス→詳細→「Bonjourサービスの検出を有効にする」のチェックを外して適用する

(chroot環境のmDNSを有効化するためDS側は無効にする)

3. パッケージセンター→設定→全般→トラストレベルを「Synology Inc.および信用された製造元」に変更、パッケージソースタブで場所「http://packages.synocommunity.com/」、名前は適当にsynocommunityとかにして追加してOK

4. パッケージセンターの検索バーに「python」と入力してエンターを押す。コミュニティカテゴリのPythonをインストール

5. ここにアクセスし、「5.2 armada38x」をクリックしてdebian-chroot.v7.f5644[armada38x].spkをダウンロードする。

6. 5.でダウンロードしたファイルをパッケージセンターから手動インストールする。

7. teratermなどでNASにsshログイン(10022番ポート)する。ログインユーザは0.で作成したユーザ

8. rootになる

【ネイティブDS環境】$ sudo -i

9. debian chrootを発動する

【ネイティブDS環境】# /var/packages/debian-chroot/scripts/start-stop-status chroot

10. aptデータベースを更新

【chroot環境】# apt-get update

11. 必要なツール類をインストール

【chroot環境】# apt-get install build-essential
【chroot環境】# apt-get install chkconfig
【chroot環境】# apt-get install python2.7
【ネイティブDS環境】$ sudo -i
【ネイティブDS環境】# cd /volume1/@appstore/python/lib/python2.7/site-packages
【ネイティブDS環境】# pip install --upgrade pip
【ネイティブDS環境】# pip install --upgrade setuptools
【ネイティブDS環境】# pip install pyextdirect
【ネイティブDS環境】# cd /usr/lib/python2.7/site-packages/
【ネイティブDS環境】# cp -pR pyextdirect /volume1/@appstore/python/lib/python2.7/site-packages/

12. 作業用ディレクトリを作成して移動する

【chroot環境】# mkdir ~/work
【chroot環境】# cd ~/work

13. node.jsのソースをhttp://nodejs.org/dist/からダウンロードして展開(お好きなバージョンをどうぞ。動かなくても知らんけどne)

【chroot環境】# wget http://nodejs.org/dist/latest-v8.x/node-v8.12.0.tar.gz
【chroot環境】# tar xvzf node-v8.12.0.tar.gz

14. node.jsをビルドしてインストール。(2~3時間かかるので昼寝でもしてね)

【chroot環境】# cd node-v8.12.0
【chroot環境】# ./configure
【chroot環境】# make -j2
【chroot環境】# make install

15. homebridgeに必要なマルチキャストDNS関連のパッケージをインストールして起動

【chroot環境】# apt-get install libavahi-compat-libdnssd-dev
【chroot環境】# cd /
【chroot環境】# mount -t proc proc proc/
【chroot環境】# /etc/init.d/dbus start
【chroot環境】# /etc/init.d/avahi-daemon start

16. homebridgeをインストール

【chroot環境】# npm config set python /usr/bin/python2.7
【chroot環境】# npm install -g --unsafe-perm homebridge

あとは自分の学習リモコンに応じて必要なプラグインもここらへんでインストールしておく。私の場合は

【chroot環境】# npm install -g homebridge-broadlink-rm

17. homebridgeをサービスとして起動するように設定

【chroot環境】# useradd -s /bin/false -b /var/run homebridge
【chroot環境】# cd ~/work
【chroot環境】# wget https://gist.githubusercontent.com/gregwym/d7b31606758acfb61896f588d13c3dda/raw/a7350fe13df3f99312bdaea85aca0cc4a1389e8f/init.d.homebridge.sh
【chroot環境】# cp init.d.homebridge.sh /etc/init.d/homebridge
【chroot環境】# chmod 755 /etc/init.d/homebridge

18. homebridge起動確認。1回起動してすぐに停止させる。この操作によりchroot環境の/var/run/homebridge配下に.homebridge/が作成される。せっかちな人向け(for the impatient)が笑いをさそう

【chroot環境】# service homebridge start
[ ok ] Starting HomeKit support for the impatient: homebridge.
【chroot環境】# service homebridge status
[ ok ] homebridge is running.
【chroot環境】# service homebridge stop
[ ok ] Stopping HomeKit support for the impatient: homebridge.

19. いったんログアウトしてchroot環境を抜ける(teratermを閉じる)

20. NASにsshログイン(10022番ポート)する。ログインユーザは0.で作成したユーザ

21. rootになる

【ネイティブDS環境】$ sudo -i

22. /var/packages/debian-chroot/scripts/start-stop-statusのバグ?を修正する。
(start-stop-status start(またはstop)はDSM6.0環境では正常動作はしていない。
しかし、DS起動時に呼ばれ/procや/dev/ptsをchroot環境にマウントする処理をしてくれるので有用)

【ネイティブDS環境】# vi /var/packages/debian-chroot/scripts/start-stop-status

73行目付近のexit 1をexit 3に変更する
(省略)
    status)
        if daemon_status; then
            echo ${DNAME} is running
            exit 0
        else
            echo ${DNAME} is not running
            exit 1 ←←←←←←←←←←←←←←←← ここをexit 3に変更する
        fi
        ;;
(省略)

23. パッケージセンターからDebian Chrootを開き、「実行」をクリックする。(間違ってもアンインストールを選んでクリックしないこと!

24. chroot環境に直接sshできる環境を構築する。(chroot環境に直接sshする場合は22番ポートで接続する環境となる)

【ネイティブDS環境】# /var/packages/debian-chroot/scripts/start-stop-status chroot
【chroot環境】# apt-get install ssh

25. chroot環境にsshログインするためのユーザ(例:mainte)を作成する

【chroot環境】# useradd mainte -m
【chroot環境】# passwd mainte

26. chroot環境でsshしたユーザがrootにsuできるように、rootのパスワードを設定する

【chroot環境】# passwd

27. いったんログアウトしてchroot環境を抜ける(teratermを閉じる)

28. NASにsshログイン(10022番ポート)する。ログインユーザは0.で作成したユーザ

29. rootになる

【ネイティブDS環境】$ sudo -i

30. chroot後にchroot環境で各種サービスが自動起動するように設定する

サービス起動スクリプトを作成

【ネイティブDS環境】# vi /usr/local/debian-chroot/var/chroottarget/root/service_start.sh

以下の内容で作成
#!/bin/sh
service dbus start
service avahi-daemon start
service homebridge start
service ssh start

作成したスクリプトに実行権を付与

【ネイティブDS環境】# chmod 755 /usr/local/debian-chroot/var/chroottarget/root/service_start.sh

「/var/packages/debian-chroot/scripts/start-stop-status chroot」実行時に上記スクリプトを実行するように修正する

【ネイティブDS環境】# vi /var/packages/debian-chroot/scripts/start-stop-status

78行目付近の「chroot ${CHROOTTARGET}/ /bin/bash」行をコメントアウトし、
下記のように「chroot ${CHROOTTARGET}/ /bin/bash -c "/root/service_start.sh"」行を追加する
(省略)
    chroot)
#        chroot ${CHROOTTARGET}/ /bin/bash ←←←←←←←←←←←←←←←←←←←← コメントアウト
        chroot ${CHROOTTARGET}/ /bin/bash -c "/root/service_start.sh" ←←←←←←←← 追加
(省略)

31. NAS起動時に自動的にchrootするようにする

【ネイティブDS環境】# vi /etc/rc.local

以下の内容で作成。/bin/sleep 60はいらないかも
#!/bin/sh
/bin/sleep 60
/var/packages/debian-chroot/scripts/start-stop-status chroot

作成したファイルに実行権を付与

【ネイティブDS環境】# chmod 755 /etc/rc.local

32. NASを再起動する

【ネイティブDS環境】# reboot

33. NAS起動後chroot環境が自動で出来上がっているので、sshログイン(22番ポート)する。ログインユーザは25.で作成したユーザ

32. rootになる

【chroot環境】$ su -

34. あとはネット上にごろごろしているhomebridgeの設定方法を参考にしてconfig.jsonをがしがし書く。config.jsonは/var/run/homebridge/.homebridge/に配置。homebridgeの停止・起動・再起動は、以下のようにserviceコマンドで。

【chroot環境】# service homebridge stop
【chroot環境】# service homebridge start
【chroot環境】# service homebridge restart

補足. homebridge-broadlink-rmでリモコンを学習させる(サービス起動時に標準出力の内容を確認する方法を確立するのが面倒くさかったのでrootで通常起動する方法)

【ネイティブDS環境】$ su -
【chroot環境】# service homebridge stop
【chroot環境】# cp -R /var/run/homebridge/.homebridge /root/
【chroot環境】# chown -R root:root /root/.homebridge

/root/.homebridge/config.jsonは起動に必要な最低限の内容にする

【chroot環境】# vi /root/.homebridge/config.json
{
        "bridge": {
                "name": "Homebridge",
                "username":"34:EA:34:AA:AA:AA", ←自分の環境にあわせる
                "port": 51826,
                "pin": "999-99-999"
        },
        "description": "Homebridge",
        "platforms": [
                {
                        "platform": "BroadlinkRM",
                        "name": "Broadlink RM",
                        "accessories": [
                                {
                                        "name": "テレビ",
                                        "type": "switch",
                                        "data": {
                                                "on": "",
                                                "off": ""
                                        }
                                }
                        ]
                }
        ]
}

rootでhomebridgeを起動する。ホームアプリからbridgeが認識されない場合は一度bridgeを削除してもういちど登録する。ホームアプリから学習モードをONにして学習させれば結果が標準出力に表示される。学習したデータを控えたらCTRC+Cで終了する

【chroot環境】# homebridge

おわり。長いねw