world leader in high performance signal processing
Trace: » fbcon

The Framebuffer Console

The framebuffer console (fbcon), as its name implies, is a text console running on top of the framebuffer device. It has the functionality of any standard text console driver, such as the VGA console, with the added features that can be attributed to the graphical nature of the framebuffer.

What are the features of fbcon? The framebuffer console supports high resolutions, varying font types, display rotation, primitive multihead, etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature made available by the underlying graphics card are also possible.

Configuration

The framebuffer console can be enabled by using your favorite kernel configuration tool. It is under Device Drivers→Graphics Support→Support for framebuffer devices→Framebuffer Console Support. Select 'y' to compile support statically, or 'm' for module support. The module will be fbcon.

You should also enable Virtual terminal and VT Console Support

Device Drivers --->
  Character devices --->
    [*] Virtual terminal
    [*]   Support for console on virtual terminal
    [ ]   Support for binding and unbinding console drivers
    [ ] Non-standard serial port support
        Serial drivers  --->
    [*] Unix98 PTY support
    [ ] Legacy (BSD) PTY support

Virtual terminal

If you say Y here, you will get support for terminal devices with display and keyboard devices. These are called “virtual” because you can run several virtual terminals (also called virtual consoles) on one physical terminal.

You need at least one virtual terminal device in order to make use of your keyboard and monitor. Therefore, only people configuring an embedded system would want to say N here in order to save some memory; the only way to log into such a system is then via a serial or network connection.

Support for console on virtual terminal

The system console is the device which receives all kernel messages and warnings and which allows logins in single user mode. If you answer Y here, a virtual terminal (the device used to interact with a physical terminal) can be used as system console. This is the most common mode of operations, so you should say Y here unless you want the kernel messages be output only to a serial port (in which case you should say Y to “Console on serial port”, below).

If you do say Y here, by default the currently visible virtual terminal (/dev/tty0) will be used as system console. You can change that with a kernel command line option such as “console=tty3” which would use the third virtual terminal as system console. See the documentation of your boot loader (u-boot) about how to pass options to the kernel at boot time.

Modify the kernel command line

When the kernel boot the command line is passed into the kernel from u-boot in the “bootargs” environment variable or the kernel command line can be compiled in to the kernel if required.

To trigger the Framebuffer Console instead of the Serial Console the kernel command line may contain:

console=tty0

To use multiple consoles, you can simply do something like:

console=tty0 console=ttyBF0,57600

The last console specified will be the default.

Framebuffer Driver

In order for fbcon to activate, at least one framebuffer driver is required, so choose from any of the numerous drivers available.

Device Drivers --->
  Graphics support --->
    [*] Backlight & LCD device support  --->
        <*> Lowlevel Backlight controls
        <*> Lowlevel LCD controls
    <*> Support for frame buffer devices
    <*> Support for frame buffer devices
    [*]   Enable firmware EDID
    [ ]   Enable Video Mode Handling Helpers
    [ ]   Enable Tile Blitting Support
    ---   Frame buffer hardware drivers
    <*> SHARP LQ035 TFT LCD on uClinux (BF537 STAMP)
    (0x58) The slave address of the I2C device (0x58, 0x5A, 0x5C and 0x5E)
    [*]   Use Landscape 320x240 instead of Portrait 240x320
    [ ]   Use 16-bit BGR-565 instead of RGB-565
    < > Virtual Frame Buffer support (ONLY FOR TESTING!)
        Console display driver support  --->
        Logo configuration  --->

Blackfin/Linux currently supports a variety of frame buffer output devices:

  • adv7171 - an Analog Devices Video DAC which accepts data in the YCrCb color space
  • bf537-lq035 - Sharp 3.5 inch QVGA Display
  • bfin-lq035q1-fb Sharp 3.5 inch QVGA Display
  • adv7393 - an Analog Devices Video DAC which accepts data in RGB color space
  • bf54x-lq043fb - Sharp 4.3 inch 480×272 TFT LCD Display (BF548 EZ-Kit)
  • Varitronix VL_PS_COG_T350MCQB TFT - The BF527 EZ-KIT Lite features a Varitronix VL_PS_COG_T350MCQB TFT LCD module with touchscreen overlay. This is a 3.5” landscape display with a resolution of 320 x 240 and a color depth of 24 bits. The interface is an RGB-888 serial parallel interface, eight bits of red, followed by eight bits of green, and then eight bits of blue.

Related:
Interface 16/18-bit TFT-LCD over an 8-bit wide PPI using a small Programmable Logic Device (CPLD)
Design Files and Schematics

See also the page about programs that work with the framebuffer.

Fonts

Also, you will need to select at least one compiled-in fonts, but if you don't do anything, the kernel configuration tool will select one for you, usually an 8×16 font.

Device Drivers --->
  Graphics support --->
    Console display driver support  --->
      <*> Framebuffer Console support
      [ ]   Framebuffer Console Rotation
      [*] Select compiled-in fonts
      [ ]   VGA 8x8 font
      [ ]   VGA 8x16 font
      [*]   Mac console 6x11 font (not supported by all drivers)
      [ ]   console 7x14 font (not supported by all drivers)
      [ ]   Pearl (old m68k) console 8x8 font
      [ ]   Acorn console 8x8 font
      [ ]   Mini 4x6 font
      [ ] Sparc console 8x16 font
      [ ] Sparc console 12x22 font (not supported by all drivers)
      [ ] console 10x18 font (not supported by all drivers)

Sample screenshots from an QVGA 320x240 display

  • VGA 8×8 font

  • Mac console 6×11 font

  • Mini 4×6 font

To display the penguin logo, choose any logo available in Logo Configuration→Boot up logo.

Device Drivers --->
  Graphics support --->
    Bootup logo  --->
      [ ] Standard black and white Linux logo
      [ ] Standard 16-color Linux logo
      [*] Standard 224-color Linux logo (NEW)

The Standard 224-color Linux logo works best with the Blackfin framebuffer drivers.

USB Mouse and Keyboard Support

The framebuffer console should have also a Keyboard. To enable a typical USB keyboard follow the steps below.

See also here: usb_ez-extender

Make sure you don't have conflicts between the interrupt pin and the GPIOs used by your display

------------------------------ USB support ----------------------------
                                                                    
-----------------------------------------------------------------------
 <*> Support for Host-side USB                                         
 [ ]   USB verbose debug messages                                      
 ---   Miscellaneous USB options                                       
 [ ]   USB device filesystem                                           
 [ ]   Enforce USB bandwidth allocation (EXPERIMENTAL)                 
 [ ]   Dynamic USB minor allocation (EXPERIMENTAL)                     
 [ ]   USB selective suspend/resume and wakeup (EXPERIMENTAL)          
 ---   USB Host Controller Drivers                                     
 < >   ISP116X HCD support                                             
 < >   ISP1362 HCD support                                             
 < >   ISP1760 HCD support                                             
 <*>   SL811HS HCD support                                             
 (55)    GPIO IRQ pin for Interrupt                                    
 ---   USB Device Class drivers                                        
 < >   USB Modem (CDC ACM) support                                     
 < >   USB Printer support                                             
 --- NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'           
 --- may also be needed; see USB_STORAGE Help for more information     
 [ ] The shared table of common (or usual) storage devices             
 --- USB Input Devices                                                 
 <*> USB Human Interface Device (full HID) support                     
 [*]   HID input layer support       
------------------------- Input device support ---------------------------

--------------------------------------------------------------------------
 --- Generic input layer (needed for keyboard, mouse, ...)
 < >   Support for memoryless force-feedback devices
 ---   Userland interfaces
 <*>   Mouse interface
 [*]     Provide legacy /dev/psaux device
 (320)  Horizontal screen resolution
 (240)   Vertical screen resolution
 < >   Joystick interface
 < >   Touchscreen interface
 <M>   Event interface
 < >   Event debugging
 ---   Input Device Drivers
 [*]   Keyboards  --->
		 --- Keyboards
		 < >   AT keyboard
		 < >   Sun Type 4 and Type 5 keyboard
		 < >   DECstation/VAXstation LK201/LK401 keyboard
		 < >   XT keyboard
		 < >   Newton keyboard
		 < >   Stowaway keyboard
 [*]   Mouse  --->
		 --- Mouse
		 < >   PS/2 mouse
		 < >   Serial mouse
		 < >   DEC VSXXX-AA/GA mouse and VSXXX-AB tablet
 [ ]   Joysticks  --->
 [ ]   Touchscreens  --->
 [*]   Miscellaneous devices  --->
     Hardware I/O ports  --->
		 < > Serial I/O support
		 < > Gameport support

Using USB Keyboard and Mouse together with Nano-X / Microwindows

See also here:

  1. Setup Framebuffer, Virtual Terminal Support, Framebuffer Console, USB HID and Input device support as described above.
  2. Edit Microwindows / Nano-X configuration file: user/microwin/src/config
TTYKBD                   = Y
NOKBD                    = N

SERMOUSE                 = Y

You can start nano-x from your framebuffer console. Nano-X’s keyboard support parses an environmental variable called CONSOLE. You need to set it to something other than what your current console is set to.

So set it to /dev/tty2:

root:~> export CONSOLE=/dev/tty2

Once you start a Nano-X application with keyboard support you can switch to the Nano-X window by using ctrl+alt+F2. If you want to switch back to the framebuffer console use ctrl+alt+F1.

root:~> usb 1-1.4: new low speed USB device using sl811-hcd and address 3
usb 1-1.4: configuration #1 chosen from 1 choice
input: Dell Dell USB Keyboard as /class/input/input0
input: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-sl811-hcd.0-1.4

root:~> export CONSOLE=/dev/tty2
root:~> nano-X &
712
root:~> nanowm &
715
root:~> nterm &
716
root:~>
  • Sample configuration
 [*] MicroWindows				--- Mouse/Touch Screen
 --- Compiling Options                          [ ] GPM Mouse
 [*] Optimize                                   [*] Serial Mouse
 [ ] Debug                                      [ ] TP Mouse
 [ ] Verbose                                    [ ] TP Helio
 --- Libraries                                  [ ] ADS Mouse
 [*] Microwin                                   [ ] IPAQ Mouse
 [*] NanoX                                      [ ] Harrier Mouse
 [ ] SharedLibs                                 [ ] PSION Mouse
 [ ] NWidget                                    [ ] uClinux/Palm TS
 [ ] OBJFramework                               [ ] DragonEngine TS
 --- Demos                                      [ ] Cleopatra Mouse
 [*] MicrowinDemo                               [ ] No Mouse
 [*] NanoXDemo                                  --- Keyboard
 --- Applications                               [*] TTY Keyboard
 [*] NanoWM                                     [ ] Scan Keyboard
 --- Settings                                   [ ] Pipe Keyboard
 (Packed-16bit-5/6/5) Screeen PixType           [ ] Cleopatra Keyboard
 [ ] Link App into server                       [ ] No Keyboard
 [*] Have File IO                               --- Install These Applications
 [ ] Have BMP Support                           [ ] Landmine
 [ ] Have GIF Support                           [ ] Launcher
 [ ] Have PNM Support                           [ ] Move
 [ ] Have XPM Support                           [*] Mine
 [*] Have JPEG Support                          [*] MAlpha
 [*] Have PNG Support                           [*] MDome
 [ ] Have T1LIB Support                         [ ] MTerm
 [ ] Have FreeType Support                      [ ] MTest
 [*] Have SharedMemory Support                  [ ] MTest2
 [ ] Have Han Zi Ku font Support                [ ] MUserFd
 [ ] Have Big5 Support                          [*] Nano-X
 [ ] Have GB2312 Support                        [*] NanoWM
 [ ] Have MS Fonts                              [*] NPanel
 [ ] Build Screen Driver only                   [*] NTerm
 [*] Window Erase Move                          [*] NTetris
 [*] Window UpdateRegions Move                  [*] NXclock
 [ ] Gray Palette                               [ ] NXev
 --- Display Config                             [ ] NXkbd
 [ ] X11 Display                                [ ] NXlsclients
 [*] Frame Buffer Display                       [*] NXterm
 [ ] Frame Buffer VGA                           [ ] NXView
 [*] VT Switch                                  [ ] NXRoach
 [ ] Portrait Mode                              [*] Tuxchess
 [ ] Frame Buffer Reverse                       [ ] Slider
 [ ] VGA Lib                                    [ ] VNC
 [ ] HW VGA                                     [ ] World
 [ ] Cleopatra VGA