Raspbrery Pi のターミナルエミュレータ PiGFX についてまとめています。

GPIO の TXD・RXD 端子を接続し、シリアルの受信信号を表示でき、
キーボードを接続してシリアル送信もできます。
キーボードは USB 以外に PS/2 にも対応しています。

コンソールはエスケープシーケンスを用いて
画面モードの変更などが可能です。

Raspberry Pi は多くの場合、OS を一度起動し、
その後アプリを起動して使用しますが、
PiGFX は boot パーティションの kernel*.img ファイルで動作し、
必要に応じて素早く起動し、使用できる特徴があります。
一方で日本語(日本語キーボード・日本語表示)は非対応です。


目次


公式サイト

 fbergama/pigfx | GitHub


インストール

Raspberry Pi は 2021年公開されている
Raspberry Pi 400 日本版まで全機種動作可能です。
ページ運営者が Raspberry Pi Zero WH と Raspberry Pi 400 で
動作確認できています。

SD カードを FAT(16) または FAT32 にフォーマットします。
これは 32GB までの SD および SDHC であれば標準フォーマットですが、
他の用途に使用した場合は  Raspberry Pi Imager の Erase を用いると便利です。
PiGFX そのものの容量が小さいので、
めったに使わなくなっている容量の小さい SD カードも使ってみるのも良いでしょう、
ただし Raspberry Pi は SD カードに相性がある事に注意を要します。

フォーマットした SD カードを一度パソコンなどで参照し、
必要なファイルを入れていきます。

まず公式プロジェクトの /bin にあるファイルをすべて入れます。

 bin/ | GitHub fbergama/pigfx

更に Raspberry Pi 公式プロジェクトで公開されている
最新の boot 関連ファイルを参照します。

 boot/ | GitHub raspberrypi/firmware

そのうち、次のファイルを入れます。

  • start.elf
  • start4.elf
  • bootcode.bin

更に pigfx.txt を開き、編集します。次の項目へ続きます。


pigfx.txt

pigfx.txt を編集して、設定を行います。
数値について触れていない場合、1 = 有効 ・0 = 無効 です。

UART

  • baudrate - 通信速度(ボー)。300 ~ 115200 で設定できます。

8 ビット・パリティなし・ストップビット 1 は固定です。

Input

  • useUsbKeyboard - USB キーボードを使用します。シリアルへ送信できます。
  • useUsbKeyboard - キーボードレイアウト。
    us uk it fr es de sg です。日本語キーボードは対応していません。
  • sendCRLF - キーボードから LF を送った時に CR LF を送信します。
  • replaceLFwithCR - キーボードから LF を送った時に LF を CR へ変更して送信します。
    CR は 16 進数 0D、LF は 16 進数 0A です。
  • backspaceEcho - Back Space を出力します。
  • skipBackspaceEcho - キーボードで Back Space を送信した時、その次の文字を無視します。
  • swapDelWithBackspace - Back Space と Del のコードを交換します。
    Back Space は 16 進数 08、Del は 16 進数 7F です。

General

  • showRC2014Logo - 起動時に RC2014 ロゴを表示します。
  • disableGfxDMA - グラフィックの DMA メモリー使用を無効にします。
  • disableCollision - スプライト衝突検出を無効にします。

Raspberry Pi GPIO の割り当て

次の割り当てがあります。他に GND・3.3V・5V を使用可能です。

ピン説明
8Tx0。キーボードからシリアル送出します
10Rx0。シリアルからの受信。この内容が画面表示されます
3PS/2 キーボード Data
5PS/2 キーボード Clock

上記でわかるように PS/2 キーボードにも対応しています。
USB キーボードは通常どおり USB 端子へ接続して下さい。

Raspberry Pi のシリアルは TTL になります。
RS-232C などへ接続する場合は変換が必要です。


ANSI ESC コード

主要な ANSI ESC コードは対応しています。
更に PiGFX 独自のコードも存在します。次を参照して下さい。

 doc/terminal_codes.txt | GitHub fbergama/pigfx

画面モードの切り替えも可能です。

 README_ADD.md | GitHub fbergama/pigfx


Q&A

日本語キーボードは使用できないのですか?

いいえ。キーボードの形式として対応していないだけで
日本語キーボードでも入力・送信できます。
通常は記号で違いがあります。

時々文字を認識しません。

通信速度を 115200 など、はやい速度に設定している場合、
遅い速度に設定してみて下さい。
GitHub 公開時のデフォルトは 9600 です。

特に Pi 初代や Pi Zero 初代シリーズでは
高速な通信速度で処理しきれないように思われます。