Skip to content

07 — Display & Silent Boot

The N100 renders Auvra’s GUI; the selected integrated hardware uses the Tang FPGA card’s own DDR3 framebuffer and RGB888/DVI scanout to drive the touch display. The S90 top panel is the current mechanical prototype, not the product definition. The hard requirement is that users never see the N100 boot.

Host-rendered frames cross PCIe into a double-buffered FPGA framebuffer; the FPGA generates panel timing and scanout. A touch controller connects to FPGA I²C/GPIO where its actual interface permits it; the PCIe driver exposes touch through Linux evdev and video through DRM/KMS. The Auvra GUI stays on the N100. The existing X11/SDL3 frontend and native CLAP editors must work on the DRM device before this path can replace host HDMI. Video DMA has lower priority than audio DMA and sample timing. The precise panel, RGB888 versus DVI route, host-to-framebuffer transfer, buffering, touch IC and backlight control are [verify] in 17 F8. A static FPGA recovery image is allowed; it is not an alternative GUI runtime.

Off-the-shelf HDMI video + USB-HID touch panels are driverless on Linux.12

Panel Size / res Interface Note
Waveshare 7EP-CAPLCD 7″ IPS, 1280×800 HDMI + USB (10-pt) Compact; optical-bonded, 6H glass.1
Waveshare 10.1DP-CAPLCD 10.1″ IPS, 1280×800 HDMI + USB (10-pt) More panel area; 5 V via USB-C.2
Waveshare 10.1″ HDMI (G) 10.1″ IPS, 1920×1200 HDMI + USB (10-pt) Higher density; N100 drives it fine at 60 Hz.

These HDMI/USB panels are for the software MVP and bench fallback. Pick by panel cut-out and UI complexity; an integrated FPGA-driven panel must be qualified separately for compatible video/touch signaling. Mind panel weight (the 10.1″ is ~540 g) and use a rigid sub-panel (08).

The five layers below apply to N100 HDMI. With the integrated FPGA scanout, the panel is not connected to the N100 GOP: keep it dark or show a static recovery image until the FPGA, DRM driver and app have valid frames. Do not assume the existing intel_backlight sysfs path controls the FPGA panel.

flowchart TB
    P["Power on"] --> B["① UEFI/BIOS<br/>Fast Boot, logo off, CSM off"]
    B --> L["② Bootloader<br/>systemd-boot, timeout 0, no menu"]
    L --> K["③ Kernel cmdline<br/>quiet, console→serial, no cursor/logo"]
    K --> PL["④ Plymouth<br/>blank/black theme"]
    PL --> BL["⑤ Backlight off<br/>until app paints"]
    BL --> APP["Kiosk synth app<br/>→ backlight on"]
    APP --> U["User sees: instant app, nothing else"]

In setup (F2):3

Setting Value
Fast Boot Enabled (or Ultra Fast)
Full Screen Logo Disabled
CSM Disabled (pure UEFI → no legacy VGA text)
Setup Prompt Timeout 0
VT-x / VT-d (unused) Disabled (also fewer SMIs)

With CSM off and logo off, the panel gets no signal until the Intel GOP driver comes up — silently.

Stage 2 — Bootloader — systemd-boot (preferred for an appliance)

Section titled “Stage 2 — Bootloader — systemd-boot (preferred for an appliance)”
/boot/efi/loader/loader.conf
timeout 0
default synth.conf

No menu, no splash, immediate hand-off. (GRUB equivalent: GRUB_TIMEOUT=0, GRUB_TIMEOUT_STYLE=hidden, GRUB_TERMINAL_OUTPUT=console.)

quiet loglevel=0 rd.udev.log_level=3 systemd.show_status=false \
vt.global_cursor_default=0 logo.nologo fbcon=nodefer \
console=ttyS0,115200 plymouth.ignore-serial-consoles splash
Flag Effect
quiet loglevel=0 Suppress kernel boot messages.
systemd.show_status=false No [ OK ] lines on tty1.
vt.global_cursor_default=0 No blinking cursor.
logo.nologo / fbcon=nodefer No Tux logo; no deferred-takeover text flash.
console=ttyS0,115200 Send console to the COM1 serial header, not the panel — keeps debug access without showing it.4
plymouth.ignore-serial-consoles Plymouth still draws on the panel despite serial console.

(Use console=null instead if you never want a serial console.)

A minimal script theme that renders nothing gives a solid black screen from initrd onward:

/usr/share/plymouth/themes/blank/blank.plymouth
[Plymouth Theme]
Name=Blank
ModuleName=script
# blank.script is empty → draws nothing
Terminal window
plymouth-set-default-theme -R blank
update-initramfs -u # (Debian) or rebuild the Yocto initramfs

Stage 5 — Backlight off until the app paints

Section titled “Stage 5 — Backlight off until the app paints”

Even a black backlit panel glows in a dark room. Keep the backlight off, enable it once the UI’s first frame is up:

Terminal window
# pre-start (systemd unit, Before=synth.service)
echo 0 > /sys/class/backlight/intel_backlight/brightness
# inside the app, after first frame:
echo 100 > /sys/class/backlight/intel_backlight/brightness

Net result: BIOS silent → no menu → black through kernel/init → backlight on with the app’s first frame. The user only ever sees the synth.

  • One full-screen app owns the display — no desktop or window-manager chrome. The product uses a minimal X11 kiosk because host and native CLAP editors must share one embeddable display server; Auvra renders through SDL3/x11 (16 §3).
  • Launch the UI from a systemd service on the dedicated housekeeping core (core 0), so it never competes with the isolated audio cores (03).
  • Touch input arrives as standard evdev: USB-HID on the bench panel, the FPGA input driver on the integrated panel. Map it in the UI toolkit.
  • Separation of concerns: UI and engine live in one Auvra process but on different threads and priorities. The UI sends bounded commands and reads telemetry through lock-free channels; it never blocks or owns the audio callback (12 §5).
  1. Exact /sys/class/backlight device name on this panel + N100 combo (often intel_backlight).
  2. Whether the chosen panel’s backlight is software-dimmable or only on/off over its interface.
  3. Panel EDID quirks over HDMI (force a mode in the kernel cmdline if needed).
  4. FPGA panel timing, touch-controller wiring, DRM/KMS buffer model and X11 modesetting compatibility while native plugin editors are open.
  1. Waveshare 7EP-CAPLCD (HDMI + USB 10-point, driverless on Linux). https://www.waveshare.com/7ep-caplcd.htm ↩ ↩2

  2. Waveshare 10.1DP-CAPLCD wiki. https://www.waveshare.com/wiki/10.1DP-CAPLCD ↩ ↩2

  3. ASRock, “Intel N100 series BIOS setup guide.” https://download.asrock.com/Manual/Software/Intel%20N100/Software_BIOS%20Setup%20Guide_English.pdf ↩

  4. ASRock, “N100DC-ITX” specification (COM1 serial header). https://www.asrock.com/mb/Intel/N100DC-ITX/index.asp ↩