Known bugs and loose ends¶
Reviewed 18 October 2026 against the current tree and recorded Nova tests. An implemented fix is not a device test. Items below distinguish observed failures from checks still needed; each has a next action.
GitHub issues track work; the roadmap sets priorities. Older reproductions, rejected explanations and resolved bugs are preserved in the investigation history. Commands there may refer to removed programs or older kernels.
Emulators¶
nova-push and the Neo Geo CD folder name¶
The current PortareOS tools automatic converter recognizes neogeocd,
while PortareOS stores these games in /storage/roms/neocd/. Passing a CUE
with nova-push neocd is rejected; using neogeocd targets the wrong folder.
Until the tools recognize the current name, convert locally with
portare_chd.py and transfer the resulting CHD with nova-push neocd.
The installation guide uses this workaround.
Dolphin hangs and audio problems¶
GameCube remains broken in the libretro path
(#463). Soul Calibur II
has hung after a FIFO error. An audio-driver fix restored batches that
exceeded RetroArch's small PipeWire ring, but clean gameplay with sound has
not been established. Older standalone Dolphin.ini experiments do not
establish the current core's behavior.
Reproduce with the shipped core; keep RetroArch's log, /var/log/exec.log
and dmesg. While frozen, identify the RetroArch PID and collect all-thread
backtraces with gdb. Separate an emulator deadlock from a graphics-driver
wait before changing settings. See the
debug tools guide for collection commands.
Flycast: Tony Hawk regression check¶
Tony Hawk's Pro Skater dropped from its intended 30 fps to 26 or less with
audio stutter in standalone Flycast. Changing audio backends and pinning
the GPU did not fix it. That frontend, its emu.cfg and start_flycast.sh
are gone; RetroArch now owns audio and presentation.
Replay the same section with the current libretro core and record application/display intervals and xruns. If it is clean, close the old finding as removed with the standalone. Do not apply the old backend or compositor experiments to the current image. See the performance plan.
PlayStation and PS2: remaining coverage¶
SwanStation's preemptive-frame readback cost was reduced by patch 002 (#495). PlayStation's PRMPT switch is available again, off by default, with higher CPU/GPU clocks while enabled. The old claim that the switch was removed is obsolete. Measured throughput, remaining missed refreshes and settings are in SwanStation.
ARMSX2 is playable through libretro; tuning and compatibility work continues (#477). Recheck Time Crisis II's glitches and speed against the standalone baseline. PS2 has no RetroAchievements because the core exposes no memory to RetroArch. See ARMSX2 for measured configurations.
Guides and preemptive frames¶
M2 guide handover worked on a 2D core; returning from a guide still needs explicit tests on Vulkan cores such as ParaLLEl N64 and Flycast. Check graphics-context recovery, audio and the first seconds of resumed play.
Neo Geo CD now enables one preemptive frame by default, with Metal Slug and
Metal Slug 2 pause/resume checks recorded. Other consoles keep it off.
SNES and PlayStation have performance measurements, but every offered core
still needs deterministic save/load and input tests. Watch for
[Run-Ahead Preemptive] failures and flicker after a changed input; a
metadata claim of deterministic states alone is insufficient. See
NeoCD and the
test plan.
Display¶
The color profiles crush the dark greys¶
Gamma 2.2 and sRGB collapsed dark steps that remained visible with stock
on 26 September. Stock remains the default, and the one-shot
colorprofile-stock migration resets earlier selections. Refit the low
codes and verify grey ramps on the panel before recommending either profile.
De-gamma and 8bpc dithering also need device checks. See
color profiles.
External displays and audio routing¶
A monitor replaces the panel while it is connected (external-display
forces the panel's connector off; #707). Nothing checks yet that the monitor
has Adaptive-Sync, which msm DP does not implement, and a game keeps the
output it started on until it exits.
A display carries no sound: there is no DisplayPort DAI link, and audio stays on the speakers or line-out. Test display ownership, hotplug and return to the panel together.
VRR and Steam validation¶
The current floor is 65 Hz, up to 120.198 Hz. The launcher and Steam's gamescope use VRR too, and Steam is capped at 60 fps. Probe measurements support the new floor and repeat scheduling; a real Steam game on the final kernel/gamescope combination is still unmeasured. Check frame delivery, late-frame recovery and display transitions. RetroArch rejects rates that cannot fit twice, including some arcade boards near 61 Hz. See variable refresh.
Audio¶
RetroArch defaults to 8 ms. The current PipeWire path permits a 3 ms graph quantum at 32, 44.1 and 48 kHz; pull-mode position reporting and removal of batch headroom have been measured. The earlier 24 ms default and "#428 merged, not run" notes describe intermediate builds.
The remaining work is end-to-end button-to-sound and audio/video alignment, longer cross-core playback tests, headphones, Bluetooth and output changes. Measure the threaded audio pipeline rather than adding its nominal target to the budget by assumption. A smaller DSP period and direct ALSA did not improve the measured queue. See audio latency for current settings and the investigation log.
Automatic output-rate selection still needs explicit N64 coverage after
the game programs its DAC: compare [Audio] Output rate picked and the
PCM's hw_params, then listen through rate changes. The tested speaker
rates do not establish headphone or Bluetooth behavior.
Power and resume¶
Platform sleep works; overnight validation remains¶
The earlier "SoC never sleeps" finding is superseded by #658. Nightly
20261018 (9d0a1c9) entered CX, AOSS and DDR sleep and resumed in both a
30-second and a 10-minute test. The latter measured 23 mA, against
39 mA over 5.9 hours on the preceding nightly. These are different test
durations, not a current overnight comparison.
Run an overnight battery test, repeated short cycles, suspend with an open
playback PCM, charger attachment while asleep, and speaker/headphone checks
after wake. Wi-Fi returned within a second in the recorded test; the old
10.6-second NetworkManager-era delay is no longer the current baseline.
Investigate the new hwmon ... parent phy0 should not be sleeping resume
warning if it produces a failure. Full evidence and earlier failed
hypotheses are in power measurements.
Charging-current limits remain unverified¶
Kernel patch 0510 and charge-throttle implement a firmware current ceiling
and temperature steps at 40, 42 and 44 °C. Verify
constant_charge_current_max, a supported current-limit write, and
current_now while charging; watch journalctl -u charge-throttle -f as
the battery warms. A rejected property or
no charge current limit on this kernel means the mitigation is ineffective.
RT threads keep clocks high¶
NeoCD's emulation uses about a tenth of a middle core, yet the X3 remains at 2957 MHz for mostly idle real-time audio/GPU threads. The default RT utilization clamp is 1024. Lowering it globally or moving threads with coarse masks increased late frames or CPU cost in recorded tests; all three experiments were rejected. Measure a per-thread or kernel policy across systems; see NeoCD's measurements.
Gamepad report loss and suspend indicators¶
200 Hz MCU reporting survives resume. At 250 Hz, about 19% of reports did
not reach evdev; values 0 and 1 stopped the pad. Trace the loss before
raising the default. rsinput_process_data() also drops a partial frame at
the end of a callback instead of reassembling it across callbacks.
The suspend hooks and power handler write /sys/class/leds/power-led,
which the Nova does not expose. The guarded writes do nothing; the stick
LEDs are separate. Test a real indication before claiming feedback during
the suspend transition. Bluetooth controller reconnect after resume and
MCU/LED rail power-off still need explicit device checks.
Build and configuration¶
tools/device-tests predates several current defaults: it still expects a
256-frame audio quantum, unconditional fixed-mode panel selection and old
automatic-frame-delay/PlayStation profile behavior. Update those assertions
and demonstrate failure on deliberately wrong settings before relying on
the checker as a current regression gate. The
test plan records the current expectations.
Changed defaults in persistent files need one-shot migrations; copying new
files with --ignore-existing does not update values in existing files.
Fresh installs now mark the existing migrations as done (#638).
retroarch.cfg and retroarch/config/, including seeded core options, are
deliberately refreshed on update; the first copy is kept at
config.pre-refresh. Changes in those managed paths may overwrite menu
edits. Test both fresh and updated devices when changing defaults.
The kernel patch-fuzz count from 26 September was for Linux 7.2.5 and
97 patches. It is historical, not the current 7.2.11 stack. #658 recorded
121 production patches applying and nine changed objects plus the DTB
compiling; that does not establish zero fuzz. If tightening patch policy,
measure the current stack without patch -s, retain its output and test a
deliberately rejected hunk. The old patch list is in the investigation
history.