raspberry pi 公式ディスプレイとraspbian jessie Pixelで、画面の90°回転ができない!!を解決。

lcd_rotate=1,3が効かない! 2は効くのに!!

やりたいことは、画面の90°回転。もしくは270°回転。タッチパネルもあわせてね。

ひょんなことで、Raspberry Pi公式ディスプレイを縦位置で画面表示する必要に迫られまして。

lcd_rotate=1

この設定を/boot/config.txtに追記してあげればすぐに変更できると思ってたのに、そうじゃなかったので、解決策をメモ。
以下の内容は、次のスレッドの議論を元に設定変更を行い、手元の環境で動作を確認しました。 (手元環境: raspberry pi3, raspbian jessie with pixel(どのリリースかわすれた。。。), raspberry pi公式ディスプレイ(たぶん、element14のやつ))

画面を回転させる設定

/boot/config.txt
に、以下の呪文を追記します。

display_rotate=1

再起動後、画面が時計回りに90°回転するはず。
反時計回りに90°(つまり時計回りに270°)回転させる場合は、設定値を3に。

タッチパネルのx,yを回転させる設定

上記ディスプレイの回転では、画面しか回転しないため、タッチパネルがおかしなことになります。
なので、以下のコマンドで、タッチパネルのx,yの軸を変更します。

xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1

コマンドラインで上のコマンドを実行すると、すぐに反映されるはず。

起動時に実行するように、スクリプトファイルにして、ログイン時に実行させる

上記コマンドを毎回打つのもアレなので、ホームフォルダにシェルスクリプトファイルを作ります。

#!/bin/sh
xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

(display_rotate=3の場合は、そちらのスクリプトを)

で、

chmod 777 rotatetouch.sh で実行権限をつけて、LXDEの自動実行に追記。

/home/pi/rotatetouch.sh

これで、自動的にタッチパネルも入力が正しく行われるようになるはず。

ハマったところ

ネットをさまよっていると、下記コマンドでタッチパネルが回転できる記述が多くありました。

xinput --set-prop 'FT5406 memory based driver' 'Evdev Axis Inversion' 0 1
xinput --set-prop 'FT5406 memory based driver' 'Evdev Axes Swap' 1

が、そんな設定ないよ、と怒られて設定できない模様。

“Coordinate Transformation Matrix”

これで、設定する必要があるみたい。

 I can run
xinput list
and see
'FT5406 memory based driver'
in the list and I can
xinput list-props 'FT5406 memory based driver' | grep "Coordinate Transformation Matrix"
and see the identity matrix I just can't seem to set it with --set-prop