-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
Summary
Documentation and kernel configuration changes needed to support the Waveshare 2.8" DPI Touchscreen LCD (480x640) with Goodix GT911 touch controller on Pi Zero W.
Hardware
- Raspberry Pi Zero W
- Waveshare 2.8" DPI LCD (480x640)
- Goodix GT911 capacitive touchscreen
Required Kernel Config Changes
The default SeedSignerOS kernel is missing DMA support required for the DPI framebuffer. Without these, bcm2708_fb probe fails with "Couldn't allocate a DMA channel".
Add to opt/pi0/board/kernel.config:
# DMA (required for DPI framebuffer)
CONFIG_DMADEVICES=y
CONFIG_DMA_BCM2835=y
CONFIG_DMA_BCM2708=y
CONFIG_DMABUF_HEAPS=y
CONFIG_DMABUF_HEAPS_SYSTEM=y
CONFIG_DMABUF_HEAPS_CMA=y
# Touchscreen input
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_GOODIX=y
# I2C (for touch controller)
CONFIG_I2C=y
CONFIG_I2C_BCM2708=y
CONFIG_I2C_BCM2835=y
CONFIG_I2C_GPIO=y
# Framebuffer
CONFIG_FB=y
CONFIG_FB_BCM2708=y
CONFIG_FRAMEBUFFER_CONSOLE=y
Boot Configuration
cmdline.txt:
console=null quiet loglevel=0 vt.global_cursor_default=0 consoleblank=0 logo.nologo spidev.bufsiz=131072
config.txt:
start_file=start_x.elf
fixup_file=fixup_x.dat
kernel=zImage
gpu_mem=128
start_x=1
boot_delay=0
disable_splash=1
# DPI Display
ignore_lcd=0
hdmi_ignore_hotplug=1
disable_hdmi=1
gpio=0-9=a2
gpio=12-17=a2
gpio=20-25=a2
enable_dpi_lcd=1
display_default_lcd=1
dpi_group=2
dpi_mode=87
dpi_output_format=0x7F206
hdmi_timings=480 0 26 16 10 640 0 25 10 15 0 0 0 60 0 32000000 1
extra_transpose_buffer=2
# Overlays
dtoverlay=waveshare-28dpi-3b-4b
dtoverlay=waveshare-28dpi-3b
dtoverlay=waveshare-touch-28dpi
dtparam=i2c_arm=on
dtparam=spi=off
dtparam=audio=off
dtoverlay=disable-wifi
dtoverlay=disable-btRequired Overlay Files
Copy to /overlays/ on boot partition:
waveshare-28dpi-3b-4b.dtbowaveshare-28dpi-3b.dtbowaveshare-touch-28dpi.dtbo
These can be obtained from the Waveshare wiki or a Raspberry Pi OS installation.
Key Findings
- DMA is essential - The original kernel had DMA commented out, which prevented the DPI framebuffer from initializing
- Software I2C - The DPI display uses GPIO pins that conflict with hardware I2C, so the Waveshare overlay creates software I2C on GPIO 10/11 for the touch controller
- Goodix driver - Touch controller detected at I2C address 0x5d on i2c-11
- No networking -
CONFIG_NETremains disabled for security (air-gapped device)
Tested With
- SeedSigner touchscreen-v3 branch (https://github.com/FreeOnlineUser/seedsigner/tree/touchscreen-v3)
- SeedSignerOS 0.8.0 base
- Built on Windows using Docker Desktop
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels