■手元に届いたraspberryPiにちょうどおあつらえ向きのサイズのUSB接続ディスプレイがあったので使えるようにしたかった。調べてみるとデバイスドライバはあるものの、ラズベリパイはデフォルトではそれを有効にはしておらず、カーネルをリコンパイルすることで利用可能にできるということが解った。
リコンパイルしてみると確かにデバイスは認識されて、あとはX-Windowから利用できるようにするだけだった、というのが先日の日記。
ラズベリパイのデフォルトのビデオ出力はオンボードのHDMIで、USBデバイスはOSブート後になる。ブートシーケンスの中でUSBホストが有効化され、その延長でディスプレイが発見される流れになる。デバイスのfbというのはフレームバッファーのことで、X-Windowから利用できる。
利用するにはxorg.confに設定する。ただ、ラズベリパイの配布イメージはデフォルトだとこのxorg.confが存在しない。
どうにかこうにか見様見真似で/etc/X11/xorg.confを作成した。
Section "Device" Identifier "fb1" driver "displaylink" Option "fbdev" "/dev/fb1" EndSection Section "Monitor" Identifier "monitor1" EndSection Section "Screen" Identifier "LCD8000U" Device "fb1" Monitor "monitor1" SubSection "Display" Modes "800x600" EndSubSection EndSection Section "ServerLayout" Identifier "Display" Screen 0 "LCD8000U" 0 0 EndSection
この設定でstartxとやると、標準のHDMIはブラックアウトして、USB接続のディスプレイだけが使えるようになる。マルチディスプレイの設定もあるのだけど、うちの環境ではHDMIのディスプレイとUSBサブディスプレイの画像サイズが違いすぎて使いづらかったため、シングル接続の設定のみにしました。
この設定でstartxとやるとデスクトップが表示されるのだけど、今度はLXDE環境の設定と齟齬が残ってメニュー表示が正しく表示されなくなる。画面解像度が想定されたデフォルトからずれているためらしく、これを解消するためにxrandrを初期化時に実行させる。
今回はログインユーザーのホームディレクトリ(${HOME})以下に設定ファイルを作成しました。
cd ${HOME}
cd .config
mkdir lxsession
cd lxsession
mkdir LXDE
cd LXDE
cp /etc/xdg/lxsession/LXDE/autostart .
ユーザー用のautostartファイルをコピーしたあと、編集してxrandrの実行文を追加します。
vi autostart
@xrandr --putput udlfb --auto
これでXデスクトップを再起動すると、LXDE環境が初期化されてメニューがちゃんと画面内に表示されるようになりました。