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.
1. Selected FPGA display and touch path
Section titled “1. Selected FPGA display and touch path”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.
Bench panel
Section titled “Bench panel”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).
2. Silent boot — bench HDMI path
Section titled “2. Silent boot — bench HDMI path”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"]
Stage 1 — UEFI/BIOS (ASRock AMI)
Section titled “Stage 1 — UEFI/BIOS (ASRock AMI)”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)”timeout 0default synth.confNo menu, no splash, immediate hand-off. (GRUB equivalent: GRUB_TIMEOUT=0, GRUB_TIMEOUT_STYLE=hidden, GRUB_TERMINAL_OUTPUT=console.)
Stage 3 — Kernel command line
Section titled “Stage 3 — Kernel command line”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.)
Stage 4 — Plymouth — blank theme
Section titled “Stage 4 — Plymouth — blank theme”A minimal script theme that renders nothing gives a solid black screen from initrd onward:
[Plymouth Theme]Name=BlankModuleName=script# blank.script is empty → draws nothingplymouth-set-default-theme -R blankupdate-initramfs -u # (Debian) or rebuild the Yocto initramfsStage 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:
# 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/brightnessNet result: BIOS silent → no menu → black through kernel/init → backlight on with the app’s first frame. The user only ever sees the synth.
3. Kiosk UI
Section titled “3. Kiosk UI”- 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).
4. Open questions ([verify])
Section titled “4. Open questions ([verify])”- Exact
/sys/class/backlightdevice name on this panel + N100 combo (oftenintel_backlight). - Whether the chosen panel’s backlight is software-dimmable or only on/off over its interface.
- Panel EDID quirks over HDMI (force a mode in the kernel cmdline if needed).
- FPGA panel timing, touch-controller wiring, DRM/KMS buffer model and X11 modesetting compatibility while native plugin editors are open.
Footnotes
Section titled “Footnotes”-
Waveshare 7EP-CAPLCD (HDMI + USB 10-point, driverless on Linux). https://www.waveshare.com/7ep-caplcd.htm ↩ ↩2
-
Waveshare 10.1DP-CAPLCD wiki. https://www.waveshare.com/wiki/10.1DP-CAPLCD ↩ ↩2
-
ASRock, “Intel N100 series BIOS setup guide.” https://download.asrock.com/Manual/Software/Intel%20N100/Software_BIOS%20Setup%20Guide_English.pdf ↩
-
ASRock, “N100DC-ITX” specification (COM1 serial header). https://www.asrock.com/mb/Intel/N100DC-ITX/index.asp ↩