Skip to main content

MIPI DSI Display

This guide explains how to connect a display to the board, configure it where needed, verify that it is detected, and render content on it.

The Grinn AstraADA-1680 routes the MIPI DSI signals from the Grinn AstraSOM-1680 to the Astra Machina Foundation Series board, so the panel is attached to the Machina board and driven through the adapter.

Connect the Display

danger

Make sure to follow these rules:

  • Power off the board and disconnect its power supply before connecting or removing a display panel.
  • Connect the panel only to the connector listed below. The MIPI CSI camera connectors use the same FPC form factor, and connecting a panel to one of them may damage either the board or the panel.

Insert the FPC into the 22-pin FPC connector MIPI_DSI (J208) on the Astra Machina Foundation Series board with the contacts oriented as shown below.

FPC connected to the MIPI_DSI connector on the board

Select the Panel

The default device tree already enables a MIPI DSI panel, so a panel can work straight away with no dtbo variable set at all. To drive a different panel, enable the Device Tree Overlay that matches it:

PanelDevice Tree Overlay
Waveshare MIPI DSI paneldolphin-ws-panel-overlay.dtbo
Waveshare MIPI DSI panel (1080p)dolphin-ws-1080p-panel-overlay.dtbo
Haier MIPI DSI paneldolphin-haier-panel-overlay.dtbo

Change the Active Panel

Open a serial console as described in Access the Device, power on the board, and press any key when prompted to stop autoboot.

At the U-Boot prompt, select the overlay for the attached panel and boot:

setenv dtbo dolphin-ws-panel-overlay.dtbo
saveenv
boot

The setting is persistent, so the board keeps using the selected panel across reboots. To go back to the panel enabled by the default device tree, clear the variable:

setenv dtbo
saveenv
boot
note

Overlays are comma-separated, so a panel overlay can be combined with others. Setting dtbo replaces the whole list, and any overlay that was previously enabled has to be repeated.

Verify the Display

On the host, enter the target shell:

adb shell

In the target shell, list the DRM connectors and their status:

for status in /sys/class/drm/card*-*/status; do
connector=${status%/status}
printf '%s: %s\n' "${connector##*/}" "$(cat "$status")"
done

The connector the display is attached to has to be reported as connected, for example:

card0-DSI-1: connected
card0-HDMI-A-1: disconnected

If the connector is missing or reported as disconnected, check the connection as described above.

Keep this target shell open for the examples below.

Use the Display

The image runs a Wayland / Weston compositor by default, so the desktop appears on the display as soon as it is detected. The following steps run in the target shell.

Point the Wayland clients at the running compositor first:

WAYLAND_SOCKET=$(find /run/user -mindepth 2 -maxdepth 2 -type s -name 'wayland-*' -print -quit)

export XDG_RUNTIME_DIR="${WAYLAND_SOCKET%/*}"
export WAYLAND_DISPLAY="${WAYLAND_SOCKET##*/}"

Then render a test pattern full screen:

gst-launch-1.0 -v videotestsrc \
! video/x-raw,format=NV12 \
! waylandsink fullscreen=true

A color bar pattern covering the whole display confirms that the pipeline works end to end. Press Ctrl+C in the shell to stop it.

Use Both Displays at Once

The board drives the MIPI DSI panel and the HDMI display as two independent outputs at the same time, and both of them can be configured to run Weston. Connect the second display as described in the HDMI display guide.

With both attached, the verification command reports both connectors as connected:

card0-DSI-1: connected
card0-HDMI-A-1: connected
note

Mirroring the same output to both displays is not supported.