Hardware & Kernel DRM Driver for RPI DSI Displays.
Note: This repository is still under development. Feel free to open issues if you have any questions or suggestions.
Simplified Chinese(简体中文)
Compared from SPI/DPI panels,DSI panels has taken these advantages:
- High refresh rate(~60fps)
- Easy to wire
- Consume less gpio resources
- Low power consumption
Due to the circuit design of Raspberry Pi boards, RPi 4b on-board DSI connector only routes out 2 DSI lanes, with a maximum resolution of 720p.
If you want to drive a panel with more than 2 lanes, you may need to consider the compute module or RPi 5.
You must enable DRM first in order to use this driver.
In Raspberry Pi OS releases after 2022-1-28, DRM is enabled by default.
Old releases of RPiOS may not support DRM,so use latest version of RPiOS is recommended.
| Part Number | Diagonal | Resolution | Interface | Connector | TP | Target | Note |
|---|---|---|---|---|---|---|---|
| W280BF036I | 2.8 Inch | VGA(480x640) | DSI 1 Lane | 24p | None | w280bf036i |
|
| TDO-QHD0500D5 | 5.3 Inch | QHD(540x960) | DSI 2 Lane | 33p | FT5406 | tdo-qhd0500d5 |
*Note: this tutorial and code only keep compatibility with latest RPiOS. If you are using old RPiOS, you are on your own.
Check for kernel headers:
ls /lib/modules/`uname -r`/buildIf not, install it:
sudo apt install linux-headers-rpi-v8 # for arm64,armv7 install linux-headers-rpi-v7, RPi 5 install linux-headers-rpi-2712Install make and dtc:
sudo apt install make device-tree-compilerClone:
git clone https://github.com/CNflysky/RPI_DSI_Displays --depth 1
cd RPI_DSI_Displays/srcSelect target among Target column of Supported Panel table.
e.g. install 2.8 Inch driver for RPi 4:
make w280bf036i
sudo make installReboot.
use sudo make remove to uninstall driver.
If you want to get adapters,take a look at adaptersdirectory.
You can view it on OSHWHub too:Link(Chinese version only)
edit dts files:
rpi_dsi_display:rpi-dsi-display@0 {
compatible = <...>;
status = "okay";
reg = <0>;
backlight = <&rpi_dsi_display_gpio_backlight>;
rotation = <0>; // Rotation: [0, 90, 180, 270]
...
}
Follow these steps:
# check overlay loaded by firmware
sudo vclog --msg | grep rpidisp
# does kernel module loaded?
lsmod | grep panel_rpi_dsi_display
dmesg | grep panel_rpi_dsi_display
# check overlay applyed or not
sudo find /proc/device-tree/ -name *rpi-dsi-display*
cat *found node*/status
# check backlight node
cat /sys/class/backlight/rpi-dsi-display-bl/brightness
echo 128 | sudo tee -a /sys/class/backlight/rpi-dsi-display-bl/brightness
# if problem still exists, submit an issueHere
Translated from my blog,may not 100% accurate.




