-
Notifications
You must be signed in to change notification settings - Fork 494
Home
Linux Framebuffer drivers for small TFT LCD display modules.
<img src="http://www.adafruit.com/images/ID797.jpg" title="Video: Raspberry Pi boots with Adafruit 2.2" LCD display" border="10" />
- Development
- FBTFT on Raspian
- Supported LCD modules
- Raspberry Pi LCD Shields
- Step-by-step using FBTFT
- Install
- Using fbtft_device
- Framebuffer use
- Debug
- Backlight
- Touchpanel
- Source code
- News
For a list of all wikipages see Pages
The FBTFT drivers are now included in the Raspberry Pi Foundation kernel and can be installed with plain rpi-update
.
SPI controller driver with DMA support
The spi-bcm2835 driver has now gotten DMA support, so we don't need the out-of-tree spi-bcm2708 anymore.
This means that I will stop making updates to the custom FBTFT kernel.
To maximize throughput, make sure txbuflen is 16k or 32k (default is usually 4k). This is needed because of the dma mapping/engine overhead per transfer that spi-bcm2835 has.
Device Tree: txbuflen = <32768>;
fbtft_device txbuflen=32768
# Here it is 16k
$ dmesg | grep graphics
[ 8.547173] graphics fb1: fb_ili9341 frame buffer, 320x240, 150 KiB video memory, 16 KiB DMA buffer memory, fps=50, spi0.0 at 48 MHz
See /boot/overlays/README and FBTFT RPI overlays for information about Device Tree overlays.
To use fbtft_device instead of a DT overlay, add to /boot/config.txt:
dtparam=spi=on
Use rpi-source to get the matching kernel source, making it easy to build modules.
Run like this:
REPO_URI=https://github.com/notro/rpi-firmware rpi-source
Examples on how to build various modules
Using the Adafruit 2.2" display as an example
sudo modprobe fbtft_device name=adafruit22
dmesg will show the default pin assignements, and that the driver is loaded.
fbtft_device: SPI devices registered:
fbtft_device: spidev spi0.0 500kHz 8 bits mode=0x00
fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00
fbtft_device: 'fb' Platform devices registered:
fbtft_device: bcm2708_fb id=-1 pdata? no
fbtft_device: Deleting spi0.0
fbtft_device: GPIOS used by 'adafruit22':
fbtft_device: 'reset' = GPIO25
fbtft_device: 'led' = GPIO23
fbtft_device: SPI devices registered:
fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00
fbtft_device: fb_hx8340bn spi0.0 32000kHz 8 bits mode=0x00
graphics fb1: fb_hx8340bn frame buffer, 176x220, 75 KiB video memory, 16 KiB buffer memory, fps=20, spi0.0 at 32 MHz
FRAMEBUFFER=/dev/fb1 startx
Note: You might need to move an xorg config out of the way if X doesn't start:
sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf ~
con2fbmap 1 1
Add to file /etc/modules
fbtft_device name=adafruit22 verbose=0
Auto login: modify file /etc/inittab
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1
Auto startx: modify file /etc/rc.local
su -l pi -c "env FRAMEBUFFER=/dev/fb1 startx &"
Ref: http://elinux.org/RPi_Debian_Auto_Login
Add kernel argument to file /boot/cmdline.txt
fbcon=map:10
For more: Boot console
Add to file /etc/modules-load.d/raspberrypi.conf
spi_bcm2708
fbtft_device
Add to file /etc/modprobe.d/fbtft.conf
options fbtft_device name=adafruit22
If you find bugs or have problems, please submit an issue.
Without the help from other people, this project would not exist
- Matt Porter wrote st7735fb which FBTFT grew from
- Texy has provided much input and testing that have helped move this project forward
- Derek Campbell did the work to implement DMA
- Several people have provided drivers and improvements
- Donations have helped me buy displays and accessories
Also thanks to people that help answering questions about FBTFT.