2026-07 / 05
サーバー前面パネルディスプレイのリバースエンジニアリング
成果文書化されていないシリアルプロトコルをリバースエンジニアリングしてカスタム表示を実装し、一目で読み取れないと判明した時点で差し戻しました。
概要
クラスターのマスターノードには Windows 専用ベンダーアプリ向けの小型フロントパネルディスプレイが搭載されています。Linux 上では静的なロゴを表示するだけでしたが、シリアルプロトコルをリバースエンジニアリングし、ライブのクラスターデータを表示するよう作り変えました。
背景
Windows 向けフロントパネルにあるのはシリアルプロトコルと、ファームウェア固定の 8 タイルだけでした。
システム
課題
ドライバもドキュメントもベンダーの Linux サポートもなし——汎用ブリッジチップ ID で列挙される USB 仮想 COM ポートがあるだけで、それと通信するものは何もありませんでした。
調査
最初の仮説
未使用の数値タイルを転用すればクラスター状態を明確に伝えられると考えました。
公開されているコミュニティによるプロトコルのリバースエンジニアリング成果(パネルからのハンドシェイク ENQ、タイルごとの ASCII key-value 応答で「アンロック」)を基に、ライブのクラスター情報をマッピングしました。パネルのファームウェアには固定フィールドを持つハードウェア組み込みの 8 種類のタイルしか存在せず——自由描画キャンバスはありません——「カスタムコンテンツ」とは、物理的に意味のないタイル(ヘッドレスサーバーには GPU もスピーカーもバッテリーもない)をクラスターのヘルスやノードメトリクスの表示に転用することを意味しました。
証拠
0x05 # ENQ from panel
KEY=VALUE # ASCII tile response固定アイコンでは転用した値を説明できず、利用者にはラベルのない数字として見えました。
退けた修正
最初のバージョンは GPU・Volume・Battery タイルを転用してクラスターヘルスと NAS 使用率を表示しました。技術的には動作しましたが、これらのタイルは固定アイコンでテキストフィールドを持たないため、一目見ただけではラベルのない数字にしか見えません。そのまま出荷すれば、静的なロゴを紛らわしい表示に置き換えるだけでした。
判断
カスタム表示を差し戻し、意味が明確な単一ホストの表示を維持しました。
結果
最初のバージョン——GPU/Volume/Battery タイルをクラスターヘルスと NAS 使用率に転用——は技術的には動作しましたが、これらのタイルは固定アイコンでテキストフィールドを持たないため、一目見ただけでは「ラベルのない数字」にしか見えませんでした。出荷せずに差し戻し、教訓を記録:可読性のある複数ホストのローテーション表示には、数値タイルと同期して変化するテキスト付きタイルが必要で、これらのタイル単体では実現できません。現在パネルは、混乱を招くカスタムレイヤーではなく、改変なしの正直な単一ホスト統計を表示しています。
次に変えること
現在の制約: ファームウェアには自由描画領域も、任意の指標と同期できるテキストラベルもありません。
次の一手: テキスト付きタイルを数値と同期できる場合にだけ、複数ホスト表示を再検討します。
技術構成
Python · pyserial · USB CDC-ACM · systemd