User Tools

Site Tools


displays

The displays & cluster override

The dash has 4 physical panels, but the i.MX6 drives only 2 video outputs:

Logical display Output Physical panel
[0] Integrated screen LVDS (built-in) center infotainment (the Android UI)
[1] HDMI screen HDMI (presentation) right small portrait panel (cluster media area)

The driver speed/SoC cluster and the left portrait panel are separate ECUs — not reachable from this Android. The reachable right panel is only the top-left crop of the HDMI canvas (~264 × 464 px, portrait, with a slight keystone skew to allow for).

Painting above the OEM

The OEM paints the cluster from a very high window layer. A normal application window is drawn under it. Because a system-signed app runs as uid.system, it can add a system-level overlay window bound to display [1] that lands above the OEM layer, so our content wins.

Two gotchas that cost hours:

  1. screencap does not capture this overlay (hardware-overlay path) — verify on the physical panel, not a screenshot.
  2. The overlay must be fully opaque when active; a partly-transparent fill lets the OEM show

through.

Implemented: a speed-limit sign + “SLOW DOWN” appears on the right panel when the over-speed rule fires, and is transparent otherwise. See speedwarning.

displays.txt · Last modified: by 127.0.0.1