Raspi用表示装置4種を試す -2.2-

 HDMI表示のフレームバッファが直接操作可能かどうか確認してみる。Raspbian Lite環境なので、/deb/fb0は直接操作できるだろう。ssh接続して操作する。

 使用可能なフレームバッファデバイスを確認する。fb0しかない。

pi@raspberrypi:~ $ ls -l /dev/fb*
crw-rw---- 1 root video 29, 0 Jun 20 11:17 /dev/fb0
pi@raspberrypi:~ $ fbset -i

mode "1184x624"
    geometry 1184 624 1184 624 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
    Name        : BCM2708 FB
    Address     : 0x3e929000
    Size        : 2955264
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 4736
    Accelerator : No

 サイズをチェック。あれ? FullHDではないの? 微妙な数字だな...

pi@raspberrypi:~ $ cat /sys/class/graphics/fb0/virtual_size
1184,624

 ビット深度をチェック。32bitカラー。

pi@raspberrypi:~ $ cat /sys/class/graphics/fb0/bits_per_pixel
32

 表示画面をダンプしてファイルにする。2.9MBくらいのファイルになった。

pi@raspberrypi:~ $ cat /dev/fb0 > hdmi.raw
pi@raspberrypi:~ $ ls -l hdmi.raw
-rw-r--r-- 1 pi pi 2955264 Nov 14 10:40 hdmi.raw

 フレームバッファに0を書き込んでみると、画面が黒くなった。

pi@raspberrypi:~ $ dd if=/dev/zero of=/dev/fb0
dd: writing to '/dev/fb0': No space left on device
5773+0 records in
5772+0 records out
2955264 bytes (3.0 MB, 2.8 MiB) copied, 0.0398629 s, 74.1 MB/s

 先程ダンプした内容を書き戻してみると、もとの画面が表示された。

pi@raspberrypi:~ $ cat hdmi.raw > /dev/fb0

 ランダムな値を書き込むと、カラー版の砂の嵐みたいのが表示された。

pi@raspberrypi:~ $ cat /dev/urandom >/dev/fb0
cat: write error: No space left on device

 ちなみに、rawファイルはそのままでは少し扱いにくいフォーマットなので、fbcatコマンドを使って変換するのが楽だ。ppmファイルに吐き出すことができる。

pi@raspberrypi:~ $ sudo apt-get install fbcat
pi@raspberrypi:~ $ fbcat > hdmi.ppm
pi@raspberrypi:~ $ ls -l hdmi.ppm
-rw-r--r-- 1 pi pi 2216464 Nov 14 11:55 hdmi.ppm

 さらに、fbcatパッケージに含まれるfbgrabを使うと、直接pngファイルを吐くこともできる。

pi@raspberrypi:~ $ fbgrab hdmi.png

 任意の画像をフレームバッファに書き込むには、fbiコマンドを使うことができる。

pi@raspberrypi:~ $ sudo apt-get install fbi
pi@raspberrypi:~ $ sudo fbi -T 1 -d /dev/fb0 -noverbose sample.png

 表示エリア外の黒い縁が目立つ。

 画像をフレームバッファと同じサイズで作っても、表示した時には切れる部分が出てくるようだ。フレームバッファとパネルの表示エリアのサイズは一致していないようだ。

 fbiコマンドは多機能なので、3秒毎にディレクトリ内の全pngファイルを表示するには、以下のようにする。

pi@raspberrypi:~ $ sudo fbi -t 3 -T 1 -d /dev/fb0 ./*.png

 フレームバッファサイズへの自動リサイズなどのオプションも選ぶことができる。

つづく


オリジナル投稿: Raspi用表示装置4種を試す -2.2-|kinneko|pixivFANBOX
https://www.fanbox.cc/@kinneko/posts/657170