
リモートサーバーへの接続には、通常ノートPCやスマートフォンが必要だ。しかし、外出先で簡単なコマンド実行のためだけに大きなデバイスを持ち歩くのは不便である。
ある開発者が、この問題に対する解決策として「PocketSSH」をGitHubで公開した。ESP32-S3 T-Deck PlusをベースにしたポータブルSSHターミナルクライアントで、物理キーボード、トラックボール、タッチスクリーンを備えている。
ハードウェア構成と操作性
プロジェクトは、ESP32-S3 T-Deck Plusが標準で備える320×240ピクセルのST7789 LCD、GT911タッチコントローラー、C3キーボードモジュール、トラックボール(GPIO 1、2、3、15)を活用する。SSH2プロトコルによる暗号化通信でリモートサーバーに接続し、PTYターミナルエミュレーション(vt100)により適切なシェル操作を実現する。
特徴的なのは、複数の入力方式を組み合わせた操作体系だ。物理キーボードでコマンドを入力し、トラックボールの上下移動でコマンド履歴をナビゲートする。タッチスクリーンは右から左へのスワイプで特殊キーパネルを表示し、Ctrl+C、Ctrl+Z、Tabといった制御シーケンスに素早くアクセスできる。v1.1.0では、タッチ操作でカーソル位置を直接移動できる機能が追加され、テキスト編集の利便性が向上した。
技術的な工夫
開発者はESP-IDF v5.5.1とLVGL v9.xを組み合わせ、FreeRTOSマルチタスクアーキテクチャで実装した。キーボード入力処理、トラックボール監視、SSHデータ受信、GUI描画を並行して実行しながら、画面描画を優先するノンブロッキング入力システムにより、大量データ転送時でもフリーズを防いでいる。
v1.1.0では、高速電源サイクル時のブートループ問題を解決した。GPIO4(ストラッピングピン)のADC初期化前に100ms遅延を追加することで、残留電圧がブートストラッピングシーケンスに干渉するのを防ぎ、電源サイクルのタイミングに関係なく確実に起動するようになった。
実用上の制約
320×240ディスプレイと描画性能の制約により、htopやtop、watchといった画面更新が連続するアプリケーションの使用は困難だ。代わりに、ls、cd、cat、grepといった標準シェルコマンドや、スクリプト実行、1回限りのコマンドが最適な用途となる。
セキュリティ面では、SSH2プロトコルによる暗号化通信を採用しているが、現状ではホスト鍵検証を行わず任意のサーバーを受け入れる。開発者は、本番環境での使用にはホスト鍵検証の追加や公開鍵認証への移行を推奨している。
プロジェクトはオープンソースで公開されており、WebブラウザからESP Web Flasherを使用して簡単にファームウェアを書き込める。ESP32-S3エコシステムでの複数入力デバイス統合や、組み込みデバイスでのSSH実装の参考になる事例だ。

