What the ILI9881C is
The ILI9881C is an Ilitek driver for MIPI DSI TFT panels, typically 720×1280 or 800×1280 portrait panels. It has no SPI or RGB pixel interface: commands and pixels both travel over DSI. Ilitek does not publish its datasheet openly, so the practical reference is the mainline Linux driver, panel-ilitek-ili9881c.c, plus the init table from your panel maker.
One controller, many init tables
The Linux driver is not one configuration. It carries a separate init table, display timing and lane count for each panel it supports. The panels listed in mainline include:
- Raspberry Pi Touch Display 2, 5″ and 7″ (
raspberrypi,dsi-5inch,raspberrypi,dsi-7inch): 720×1280, 2 data lanes. - Waveshare 7.0″ DSI Touch A: 2 data lanes.
- Panels from Banana Pi, Startek, TDO, Feixin, Bestar, Wanchanglong and Ampire: 720×1280 or 800×1280, on 2 or 4 lanes depending on the panel.
Two panels with the same controller can still need different init tables and timings. If you copy an init table from another board, the screen may stay black or show stripes even though the DSI link is up. Start from the table for your exact panel.
Mainline Linux has an ILI9881C driver but no ILI9881D entry. Treat an ILI9881D panel, such as our PJ5015B14 (4.99″ 720×1280 IPS), as needing its own init table and timing from the panel datasheet.
Power-on sequence in the Linux driver
The mainline driver brings a panel up in this order:
- Enable IOVCC, wait 5 ms, then enable the main supply and wait 5 ms.
- Assert reset for 20 ms, release it, then wait 20 ms.
- Send the panel's init table. The ILI9881C uses page-switch commands to reach its vendor registers.
- Return to page 0, enable the tearing-effect output, and send Exit Sleep.
- Wait 120 ms, then send Display On.
Raspberry Pi: Touch Display 2
Raspberry Pi's documentation loads Touch Display 2 with these overlays:
dtoverlay=vc4-kms-dsi-ili9881-5inchdtoverlay=vc4-kms-dsi-ili9881-7inch
Add ,dsi0 to use the other DSI port. Both the 5″ and 7″ models are 720×1280 with five-point touch. The 10″ model uses a different controller and overlay (vc4-kms-dsi-ili79600-10-1inch) and needs four DSI lanes.
A custom ILI9881C or ILI9881D panel on a Pi needs a device-tree overlay that names a matching panel entry. Reusing the Touch Display 2 overlay only works if the panel really matches that init table and timing.
ESP32-P4 and the M5Stack Tab5
ESPHome's mipi_dsi driver runs ILI9881C panels on the ESP32-P4, with 1 or 2 data lanes (2 by default). The M5Stack Tab5 shows how fragile the choice is. ESPHome documents three hardware versions:
- Made before 14 October 2025: ILI9881C display driver with a separate GT911 touch controller. Use model
M5STACK-TAB5. - Later units: an integrated display-and-touch controller, either an ST7123 (
M5STACK-TAB5-ST7123) or an ST7121 (M5STACK-TAB5-ST7121).
The three init sequences are not interchangeable. If you pick the wrong display model, the screen just stays dark and nothing relevant is logged. A wrong touch driver does log an error, so ESPHome suggests identifying the board from the touch driver first.
Bring-up checklist
- Confirm the lane count and DSI mode (video, sync-pulse or burst) from the panel datasheet; the host's settings must match.
- Use the init table for your exact panel, not just for the controller name.
- Check the reset and supply sequence. Some boards control reset or power through an IO expander.
- Backlight on but no picture usually means the wrong init table, the wrong lane count, or a DSI timing mismatch, not a dead panel.
For interface choices, see MIPI DSI vs LVDS vs eDP and the MIPI DSI interface page.
Guides & comparisons
ILI9881C troubleshooting & FAQ
Can I reuse the Raspberry Pi Touch Display 2 overlay for another ILI9881C panel?
Only if the panel matches that init table, timing and 2-lane setup. The mainline Linux driver keeps a separate init table, mode and lane count for every supported panel, so a different ILI9881C panel usually needs its own panel entry and overlay.
My M5Stack Tab5 screen stays dark in ESPHome. Which model do I choose?
ESPHome documents three Tab5 versions: units made before 14 October 2025 use the ILI9881C with a GT911 touch controller (M5STACK-TAB5); later units use an ST7123 (M5STACK-TAB5-ST7123) or ST7121 (M5STACK-TAB5-ST7121). A wrong display model fails silently, while a wrong touch driver logs an error, so identify the board from the touch driver first.
Is ILI9881D the same as ILI9881C?
Do not assume so. Mainline Linux has an ILI9881C driver but no ILI9881D entry, so an ILI9881D panel needs its own init table and timing from the panel datasheet.
How many DSI lanes does an ILI9881C panel use?
It depends on the panel. In the mainline Linux driver the Raspberry Pi 5″/7″ and Waveshare 7″ entries use 2 lanes, while several 720×1280 and 800×1280 panels use 4. Match the host configuration to your panel datasheet.