Steam Deck - ZFEbHVUE/Batocera-CRT-Script GitHub Wiki
A quick, field-tested guide to running Batocera-CRT-Script on the Steam Deck and outputting analog video to a CRT.
-
✅ USB-C → VGA (Realtek RTD2166)
-
StarTech CDP2VGA3MBNL — 3 m integrated cable
Also reported working: CDP2VGAMM2MB (2 m).
Use this to feed VGA → SCART or Component transcoders, or to a VGA→S-Video converter.
-
StarTech CDP2VGA3MBNL — 3 m integrated cable
-
✅ AR-glasses style USB-C splitters (power + video pass-through) — recommended.
Reason: Confirmed in testing — standard USB-C hubs with DP Alt Mode failed to pass a stable low dot-clock path required for CRT timings. Avoid DP Alt-Mode hubs and use AR-glasses style splitters instead: -
❌ Avoid these USB-C hubs for CRT use (DisplayPort Alt Mode did not work in testing):
Why: In practice, several “USB-C hubs with DP Alt Mode” failed to pass a stable low dot-clock path needed for CRT timings. Splitters made for AR glasses (power + video) were more reliable when paired with a known-good USB-C→VGA (RTD2166) cable.
-
Steam Deck → StarTech USB-C→VGA (CDP2VGA3MBNL) → Antonio Villena VGA→S-Video → CRT
Status: Works. Slight resolution-switch delay (typical of DP/USB-C DACs). -
Steam Deck → VITURE USB-C “glasses” splitter → StarTech USB-C→VGA (CDP2VGA3MBNL) → Rondo HD15-to-SCART → RetroTINK RGB2COMP → Component → CRT
Status: Works. Stable after Switchres override tweaks (see below).
Quick sanity check used: Tekken 3 resolution-switch test. Expect a small mode-switch delay compared to native VGA/DVI-I.
Goal: Give low dot-clock modes a stable path and ensure proper parity rules on DCN hardware.
-
Copy the system default to the RetroArch override:
cp /etc/switchres.ini /userdata/system/configs/retroarch/ -
Edit the copy at
/userdata/system/configs/retroarch/switchres.ini:Set
dotclock_minand test in small steps until you find the lowest stable value:
dotclock_min 2
Then try, one at a time: 2, 4, 5, 6, 7, 8, 10, 12, 16, 20, 25
Keep the lowest value that locks cleanly on your chain.
Max dot clock floor used here is 25 MHz → dotclock_min 25.
With super-resolutions, using a slightly higher floor won’t hurt.
Confirm parity rule is present (Steam Deck = DCN):
interlace_force_even 1
Hierarchy reminder (most specific first):
/userdata/system/configs/retroarch/config/<core_name>/switchres.ini
/userdata/system/configs/retroarch/switchres.ini
/etc/switchres.ini
Use a per-core file if only certain cores need a different dotclock_min.
Run these on the Deck:
-
Show current resolution under X
DISPLAY=:0 batocera-resolution currentResolution -
Confirm DCN detection and parity decision in the 15 kHz build log
grep -E 'Engine detect|Parity decision' /userdata/system/logs/BUILD_15KHz_Batocera.log -
Ensure the parity rule exists in the effective INI you are using
grep -n 'interlace_force_even' /etc/switchres.ini
Expected snippets:
Engine detect: ... DCN ...Parity decision: interlace_force_even=1 (engine=DCN)
-
Black or rolling image at 240p/480i:
Adjustdotclock_minin the override INI (/userdata/system/configs/retroarch/switchres.ini) by stepping through low values until you get a stable lock.
Try: 2, 4, 5, 6, 7, 8, 10, 12, 16, 20, 25 — keep the lowest value that locks cleanly.
(Max floor used here is 25 MHz. With super-res, a slightly higher floor won’t hurt.) -
Sync OK in PSX or SNES but others unstable:
Try per-core overrides at/userdata/system/configs/retroarch/config/<core_name>/switchres.iniwith a slightly differentdotclock_min. -
No video via a USB-C hub or dock:
Swap the hub for an AR-glasses style splitter (power + video) and keep the StarTech CDP2VGA3MBNL as the VGA DAC. -
Long mode-switch pauses:
Expected vs native analog. Harmless, just slower than DVI-I or VGA.
-
StarTech USB-C→VGA (3 m, CDP2VGA3MBNL):
Product: https://www.startech.com/en-us/display-video-adapters/cdp2vga3mbnl
Amazon: https://www.amazon.com/USB-VGA-Cable-Computer-Monitor/dp/B078MS23PL?th=1 -
AR-glasses splitters (recommended style):
AGFINEST: https://www.amazon.com/dp/B0DMJFX528
VITURE: https://www.amazon.com/dp/B0CGMGDK53
Ubrokeifixit (untested): https://www.amazon.com/Ubrokeifixit-Glasses-Converter-Charging-Adapter/dp/B0FNCWY58T/ref=sr_1_1 -
Avoid (for CRT use):
StarTech hub: https://www.amazon.com/dp/B0CJCL2K8R
SABRENT dock: https://www.amazon.com/dp/B0BTJYY8MD
- Batocera: v42 Stable
- CRT profile: for example MS929
- Outcome: First-try success. Mega Drive and SNES needed a small dotclock tweak.
- Tekken 3 (YouTube)
- Old Towers (YouTube)
- Crystal Breakers (YouTube)