reTerminalのディスプレイ向きを直す

Seeed K.K.の松岡です。
先週、久々にお友達の作品制作をお手伝いしました。Seeeduino XIAOのソフトウェアを作ったのですが、、、そもそもシンセの一般的な振る舞い?が分からず、あーでもない、こーでもない、と試行錯誤。要件拾う、最初のコミュニケーション大事だなと思いつつも、ひとつのものを一緒に作る楽しいひとときでした。

さて、今回はreTerminalのディスプレイ設定です。
reTerminalにプレインストールされているRaspberry Pi OS 32bitはDebian 10(buster)ベースです。一方、Raspberry Pi Imagerで配布されている最新のRaspberry Pi OSはDebian 11(bullseye)ベースに更新されています。
やっぱ最新がいいよね、とreTerminalにbullseyeベースのRaspberry Pi OSをインストールしてreTerminalに関連したドライバーをインストールすると、ディスプレイが横向きに表示されてしまい、かなり使いにくい状況になります。

今回は、ディスプレイの横向き表示を直す手順を示します。

2022/9/26追記:
Raspberry Pi OS (32-bit) 2022-09-06時点、OSとreTerminalに関連したドライバーをインストールだけで、ディスプレイが正しく表示されます。

SeeedのreTerminalは、bullseyeベースを未だ正式サポートしていません。
bullseyeベースにすることで、ソフトウェアが動かないことがそれなりにあるようで、busterベースは当面提供されるようです。(関連記事@fabcross

Raspberry Pi OSをインストールする

reTerminalのeMMCを初期状態に戻すを参考に、bullseyeベースのRaspberry Pi OS 32bitをインストールします。

  1. reTerminalのブートモードをUSBブートに変更
  2. rpiboot
  3. Raspberry Pi ImagerでRaspberry Pi OS 32bit bullseyeをインストール
  4. reTerminalのブートモードを通常ブートに戻す

Raspberry Pi Imagerで書き込む際にSSHでリモート接続できるようにしておきます。Ctrl+Shift+Xで表示される画面で、Enable SSHを有効にしてください。

reTerminalを起動すると、内部ではRaspberry Pi OSが起動しますがLCDディスプレイは真っ黒で何も表示されません。

xrandrコマンドでモニターの状態を確認すると、LCDディスプレイ(DSI-1)が認識されていないことがわかります。

$ DISPLAY=:0.0 xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 7680 x 7680
HDMI-1 disconnected primary (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)

ドライバーをインストールする

reTerminalに関連したドライバーをインストールします。

ここで、必ずsudo apt upgradeコマンドでインストール済みパッケージを更新してください。現時点の最新Raspberry Pi OSでは、インストール済みパッケージの更新をしないとディスプレイを正しい向きに変更することができませんでした。

↑ Raspberry Pi OS (32-bit) 2022-01-28イメージではインストール済みパッケージの更新は不要。

$ sudo apt update
$ sudo apt upgrade

SeeedのGitHubリポジトリからreTerminalに関連したドライバーをクローンして、インストールします。

$ git clone --depth 1 https://github.com/Seeed-Studio/seeed-linux-dtoverlays
$ cd seeed-linux-dtoverlays
$ sudo ./scripts/reTerminal.sh
$ sudo reboot

再起動後、LCDディスプレイが表示されます。ただし横向きに。(ボキッ

xrandrコマンドでモニターの状態を確認すると、LCDディスプレイ(DSI-1)を認識しています。
本来なら、DSI-1 connected primary 720x1280+0+0の右にrightと表示されてほしい(モニター右回転設定)のですが、この時点では表示されていません。

$ DISPLAY=:0.0 xrandr
Screen 0: minimum 320 x 200, current 720 x 1280, maximum 7680 x 7680
DSI-1 connected primary 720x1280+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   720x1280      60.00*+
HDMI-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)

モニターを設定する

~/.config/monitors.xmlファイルを追加して、LCDディスプレイ(DSI-1)を明示的に設定します。

$ vi ~/.config/monitors.xml
$ sudo reboot

~/.config/monitors.xml:

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <primary>yes</primary>
      <monitor>
        <monitorspec>
          <connector>DSI-1</connector>
          <vendor>unknown</vendor>
          <product>unknown</product>
          <serial>unknown</serial>
        </monitorspec>
        <mode>
          <width>720</width>
          <height>1280</height>
          <rate>60.000</rate>
        </mode>
      </monitor>
      <transform>
        <rotation>right</rotation>
      </transform>
    </logicalmonitor>
  </configuration>
</monitors>

イエーイ!
正しく表示されるようになりました。

参考に、xrandrコマンドの結果を載せておきます。

$ DISPLAY=:0.0 xrandr
Screen 0: minimum 320 x 200, current 1280 x 720, maximum 7680 x 7680
DSI-1 connected primary 1280x720+0+0 right (normal left inverted right x axis y axis) 0mm x 0mm
   720x1280      60.00*+
HDMI-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)

タッチパネルを設定する

LCDディスプレイが正しく表示されましたが、タッチしてみると思うように操作できないことに気づきます。タッチパネルがうまく設定されていないためです。

/boot/config.txtdtoverlay=reTerminalの右側に、,tp_rotate=1を追記して再起動すると直ります。

$ sudo vi /boot/config.txt
$ sudo reboot

/boot/config.txt:

...
dtoverlay=reTerminal,tp_rotate=1
...

[おまけ] モニターを設定する(GUI)

モニターを設定する操作だけは、マウスを接続すればGUIでも設定可能でした。

変更履歴

日付 変更者 変更内容
2022/1/19 松岡 作成
2022/1/31 松岡 Raspberry Pi OS (32-bit) 2022-01-28イメージに対応
2022/9/26 松岡 Raspberry Pi OS (32-bit) 2022-09-06イメージは設定不要を追記