fbset 는 프레입버퍼의 해상도를 변경합니다.

fbset의 사용법에 대해서 알아보기로 하겠습니다.

우분투에서는 fbset 설치는  다음과 같이 합니다.

$ sudo apt-get install fbset

임베디드 시스템에서는 buildroot 또는 직접 소스를 받아서 빌드하셨어 사용하시면 됩니다.
만일 busybox에 있는 fbset을 사용할 경우에는 일부 옵션들이 생략되어 있어 제한적으로 사용할 수 있습니다.

1. fbset 도움말

# fbset --help
Linux Frame Buffer Device Configuration Version 2.1 (23/06/1999)
(C) Copyright 1995-1999 by Geert Uytterhoeven

Usage: fbset [options] [mode]

Valid options:
  General options:
    -h, --help         : display this usage information
    --test             : don't change, just test whether the mode is valid
    -s, --show         : display video mode settings
    -i, --info         : display all frame buffer information
    -v, --verbose      : verbose mode
    -V, --version      : print version information
    -x, --xfree86      : XFree86 compatibility mode
    -a, --all          : change all virtual consoles on this device
  Frame buffer special device nodes:
    -fb <device>       : processed frame buffer device
                         (default is /dev/fb0)
  Video mode database:
    -db <file>         : video mode database file
                         (default is /etc/fb.modes)
  Display geometry:
    -xres <value>      : horizontal resolution (in pixels)
    -yres <value>      : vertical resolution (in pixels)
    -vxres <value>     : virtual horizontal resolution (in pixels)
    -vyres <value>     : virtual vertical resolution (in pixels)
    -depth <value>     : display depth (in bits per pixel)
    -nonstd <value>    : select nonstandard video mode
    -g, --geometry ... : set all geometry parameters at once
    -match             : set virtual vertical resolution by virtual resolution
  Display timings:
    -pixclock <value>  : pixel clock (in picoseconds)
    -left <value>      : left margin (in pixels)
    -right <value>     : right margin (in pixels)
    -upper <value>     : upper margin (in pixel lines)
    -lower <value>     : lower margin (in pixel lines)
    -hslen <value>     : horizontal sync length (in pixels)
    -vslen <value>     : vertical sync length (in pixel lines)
    -t, --timings ...  : set all timing parameters at once
  Display flags:
    -accel <value>     : hardware text acceleration enable (false or true)
    -hsync <value>     : horizontal sync polarity (low or high)
    -vsync <value>     : vertical sync polarity (low or high)
    -csync <value>     : composite sync polarity (low or high)
    -gsync <value>     : synch on green (false or true)
    -extsync <value>   : external sync enable (false or true)
    -sync <value>      : custom (driver specific) sync value
    -bcast <value>     : broadcast enable (false or true)
    -laced <value>     : interlace enable (false or true)
    -double <value>    : doublescan enable (false or true)
    -rgba <r,g,b,a>    : recommended length of color entries
    -grayscale <value> : grayscale enable (false or true)
  Display positioning:
    -move <direction>  : move the visible part (left, right, up or down)
    -step <value>      : step increment (in pixels or pixel lines)

2. 현재 설정되어 있는 프레입버퍼 정보 보기

$ fbset -i

mode "1920x1080"
    geometry 1920 1080 3840 2160 32
    timings 0 0 0 0 0 0 0
    accel true
    rgba 8/16,8/8,8/0,0/0

Frame buffer device information:
    Name        : inteldrmfb
    Address     : 0xd0096000
    Size        : 33177600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 15360
    Accelerator : No


fbset의 정보는 /sys/class/graphics/fb0/modes와 video 모드 데이타베이스 파일인 /etc/fb.modes를 참조합니다.
입베디드 시스템에서는 /etc/fb.modes 위의 파일이 존재하지 않을 수 있으므로 추가해 주셔야 합니다.


3. 해상도 변경

$ fbset -g 1600 1200 1600 1200 16 -t 6111 112 280 3 38 168 4

-g 는 위의 fbset -i 에서 출력된 geometry 이며, -t 옵션은 timings 입니다.

-g와 -t의 옵션 값들은 /etc/fb.modes를 참조하시면 됩니다.

-g  <xres> <yres> <vxres> <vyres> <depth>
-t <pixclock> <left margin> <right margin> <upper margin> <lower margin> <horizontal sync length> <vertical sync length>


4. 화면 이동 옵션

$ fbset -move right -step 50
$ fbset -move right -step 50
$ fbset -move down -step 36