-
Notifications
You must be signed in to change notification settings - Fork 15
HD CRT Mode Switcher
Caution
USE THIS TOOL AT YOUR OWN RISK. WE ARE NOT RESPONSIBLE FOR DAMAGE TO YOUR EQUIPMENT.
CRT MONITOR SAFETY:
- A CRT MONITOR MUST NEVER BE TURNED ON DURING HD MODE!
- HIGH FREQUENCIES DURING HD MODE CAN PERMANENTLY DAMAGE YOUR CRT MONITOR!
- ONLY TURN ON YOUR CRT MONITOR WHEN IN CRT MODE AND AFTER BATOCERA HAS FULLY BOOTED.
- KNOW YOUR GEAR.
The HD/CRT Mode Switcher is a feature that allows you to seamlessly switch between two display configurations
- HD Mode: Standard Batocera configuration for modern displays (HDMI, DisplayPort, etc.)
- CRT Mode: CRT Script configuration for 15/25/31kHz CRT monitors
- Seamless Switching: Toggle between HD and CRT modes with one menu selection and reboot
- State Preservation: All configurations (emulator settings, video outputs, resolutions) are preserved and restored per mode
- No Manual Reconfiguration: Eliminates the need to manually reconfigure settings when switching displays
- Prevents Black Screens: Automatically handles video output selection to prevent display issues
- Complete Isolation: HD and CRT configurations are completely separate—no mixing between modes
The Mode Switcher manages:
- Video Output: Automatically selects the correct display output for each mode
- Video Resolution: Sets appropriate boot resolution (HD resolutions for HD Mode, CRT timings for CRT Mode)
- Emulator Configurations: Complete folder swapping for MAME, RetroArch, and EmulationStation configs
- System Files: Overlay file management (removed for vanilla Batocera in HD Mode, restored for CRT Mode)
- Custom Binaries: CRT Script custom binaries are backed up/restored per mode
- Scripts: CRT Script-specific scripts are preserved/removed per mode (user custom scripts always preserved)
- Batocera v43+ installed and running
- CRT Script installed
- SSH access enabled on your Batocera system
- At least 2 video outputs connected - REQUIRED
- A single port can be shared as both HD and CRT outputs but you will need a hardware switcher. Here's a Display Port one for example.
-
Dual display setup (one HD display + one CRT monitor) - not required for handheld systems like Steam Deck since the handheld screen is the HD Display
- Note: Even if you only have one physical display showing at a time, you still need 2 outputs configured
-
Input device for navigating the Mode Switcher UI:
- Keyboard - Arrow keys, Enter, Esc/Tab for navigation
- Controller - Controller buttons are mapped to keyboard keys
The HD/CRT Mode Switcher is automatically installed when you run the Batocera v43 CRT Script installation. After installation completes and you reboot, the Mode Switcher will be available in EmulationStation's CRT tools menu.
After installation, the Mode Switcher will be available in EmulationStation's CRT tools menu.
In EmulationStation, navigate to:
- CRT TOOLS → HD/CRT Mode Switcher
On first launch, you'll see a critical safety warning about CRT monitor safety. Read it carefully and select "I UNDERSTAND" to proceed. This warning will not appear again after you acknowledge it.
The Mode Switcher will detect your current mode and show you the option to switch to the other mode:
- If in CRT Mode: You'll see "Switch to HD Mode"
- If in HD Mode: You'll see "Switch to CRT Mode"
Navigation:
-
Keyboard:
- Use UP/DOWN arrow keys to navigate
- Press Enter to select/confirm
- Press Esc or Tab to cancel/go back
-
Controller:
- Use UP/DOWN on D-pad or joystick to navigate
- Press B button (mapped to Enter) to select/confirm
- Press A button (mapped to Esc) to cancel
Note
You should already have CRT configs detected and set if this is the first time launching the app after initial CRT-Script install and boot. Launching this app for the first time should just ask Select an output for HD Mode.
The Mode Switcher will detect all available video outputs and ask you to select one for the target mode.
Understanding the Output Selection Dialog:
The dialog displays three columns of information for each detected output:
-
DETECTED OUTPUT: Lists the unique identifiers for video output ports that the system has detected. These are the names of the physical or logical display connectors available on your hardware.
- Examples:
DP-1(DisplayPort 1),DP-2(DisplayPort 2),HDMI-1(HDMI 1),HDMI-2(HDMI 2),DVI-I-1(DVI-I 1),eDP-1(embedded DisplayPort 1)
- Examples:
-
CONNECTED PORT: Indicates whether a display device is physically connected to the corresponding output port.
- Status:
connected(display/cable is plugged in) ordisconnected(no display detected)
- Status:
-
CURRENT OUTPUT: Shows the current operational status or assignment of the detected output.
-
[DISABLED]- Output is not currently configured for any mode -
[CURRENT HD]- Output is currently configured for HD Mode -
[CURRENT CRT]- Output is currently configured for CRT Mode -
[SELECTED FOR HD]- Output has been selected for HD Mode (during current session) -
[SELECTED FOR CRT]- Output has been selected for CRT Mode (during current session)
-
What to expect:
- Outputs are marked with
[CURRENT HD]or[CURRENT CRT]if they're already configured - Outputs are marked with
[SELECTED FOR HD]or[SELECTED FOR CRT]if you've just selected them - The dialog shows connection status for each output
- A RESCAN option is available to rescan outputs if you've connected/disconnected displays or changed cables
Important:
- If you've already configured VIDEO OUTPUT and VIDEO MODE in ES MAIN MENU → SYSTEM SETTINGS, those settings will be respected and backed up
- If VIDEO OUTPUT or VIDEO MODE are not configured, the Mode Switcher will force you to make those selections before allowing a mode switch
- This prevents black screen issues while giving you full control
- Ensure you select different outputs for HD Mode and CRT Mode - they cannot share the same output
- If outputs have changed (cables connected/disconnected), use the RESCAN option to refresh the output list
Tip
Configuration from EmulationStation is always preserved and respected. If you've already set VIDEO OUTPUT and VIDEO MODE in System Settings, the Mode Switcher won't ask again.
Note: This step will only appear if you have not configured VIDEO OUTPUT and VIDEO MODE in ES MAIN MENU → SYSTEM SETTINGS. If these are already configured, this step is skipped and your existing settings will be used.
Tip
Boot resolutions are pre-configured safe modes. Only resolutions prefixed with Boot_ are shown to ensure your CRT can display them safely during startup.
When switching to CRT Mode and VIDEO MODE is not configured, you'll be asked to select a boot resolution from your videomodes.conf file.
What to expect:
- Only resolutions prefixed with
Boot_are shown (e.g.,Boot_576i,Boot_480p) - These are safe resolutions that your CRT can display during boot
- Select the resolution that matches your CRT's capabilities
Note: If switching to HD Mode, this step is skipped (HD Mode uses standard HD resolutions).
Note
During boot resolution selection, you're choosing the initial video mode before Batocera fully starts. Select a mode your CRT is known to support reliably.
You'll be asked to confirm the mode switch:
Are you sure you want to switch from [Current Mode] to [Target Mode]?
This will modify system files and require a reboot.
- Select PROCEED to continue
- Select CANCEL to abort
When switching TO CRT Mode:
IMPORTANT SAFETY WARNING
Before proceeding, you MUST:
1. DO NOT IMMEDIATELY TURN ON YOUR CRT
2. Keep your CRT Monitor off until after BIOS boot
WARNING:
High frequencies during PC BIOS boot could DAMAGE your monitor!
Only turn on your monitor AFTER Batocera has fully booted.
When switching TO HD Mode:
CRITICAL: CRT MONITOR SAFETY
Before proceeding, you MUST:
1. TURN OFF YOUR CRT IMMEDIATELY BEFORE RESET
2. Keep it OFF during the whole duration of HD Mode
WARNING:
High frequencies during PC BIOS boot and HD Mode could DAMAGE your monitor!
Only turn on your monitor AFTER CRT Mode has been initialized and AFTER Batocera has fully booted.
Important
Safety warnings about CRT monitor power management are critical. Always follow the instructions on monitor timing in the dialogs when switching modes.
The Mode Switcher will:
- Backup your current mode configuration
- Restore the target mode configuration
- Configure video outputs
- Save changes to overlay
You'll see progress messages during this process.
After successful switching, you'll see a completion message:
CRT Mode:
Successfully saved CRT Mode configs
REMEMBER:
- Keep monitor OFF during BIOS boot
- Turn on your monitor AFTER CRT Mode has been initialized and AFTER Batocera has fully booted
System will reboot now...
HD Mode:
Successfully saved HD Mode configs
System will reboot now...
The system will automatically reboot or power down depending if you are X11 or Wayland + X11. After reboot or new power cycle, you should see your display on the selected output.
On Steam Deck only, the CRT Script can offer an optional path back to HD Mode using a physical button chord (wired up through Triggerhappy / multimedia_keys.conf), so you do not have to open EmulationStation on the CRT when you cannot see the UI.
Why this exists
If the Deck boots in CRT Mode while you are away from a CRT, the built-in panel can stay black: CRT timings are not a usable signal for that LCD. The normal HD/CRT Mode Switcher is a dialog-driven tool and needs a working display, so without SSH or a CRT attached you could be stuck. This feature adds a blind, controller-only escape hatch: the watcher can see the chord soon after boot, and the script switches using HD settings you already saved the last time you used the switcher, with rumble so you know the reboot is coming even when you cannot see the screen.
When it applies
- Hardware: Steam Deck (handheld screen counts as the HD display; same dual-output idea as elsewhere in this guide).
-
Service: The blind switch only works if
crt_mode_switch_watcheris installed and enabled with the rest of the v43 CRT Script media-keys deploy (same installer pass that ships the watcher andcrt-mode-switch-combo). - One-time setup through the switcher: This combo is only meaningful after you have already used the HD/CRT Mode Switcher at least once in both directions: CRT Mode → HD Mode, then HD Mode → CRT Mode again. That round trip creates and validates the HD-side backups the blind script expects. If you have never completed that cycle, stick to CRT TOOLS → HD/CRT Mode Switcher for switching to HD.
Important
Blind Switch Watcher will only be avaiable after a complete full HD/CRT round trip using the Mode Switcher has been made. This saved the HD settings that the blind switch restores. After enabling the device must be rebooted in order for the watcher to kick in. Save on both HD and CRT Mode.
How to do it (button combo)
Hold all four of these Deck controls at the same time for about 5 seconds (keep them held; do not tap; It does not matter which order you press, the moment they are all held down it will start the count):
| Role in script | Typical Deck hardware |
|---|---|
| SELECT | View button (above the left analog stick) |
| START | Menu button (above the right analog stick) |
| L1 | Left shoulder |
| L2 | Left trigger |
In evtest, these map to BTN_SELECT, BTN_START, BTN_TL, BTN_TL2. If your unit names differ, use evtest on the Deck gamepad node to confirm all four codes exist before relying on this in the field.
How it feels
- After the hold, the combo script takes a lock and waits; you should feel haptic rumble on the Deck right before the system shuts down for reboot into HD Mode. The rumble is a deliberate “you are about to shutdown” cue; if rumble is unavailable on your node, the script still proceeds after the hold.
Symptoms: Mode Switcher doesn't appear in CRT tools menu
Solutions:
- Verify CRT Script installation completed successfully
- Check if files are in correct location:
/userdata/system/Batocera-CRT-Script/ - Verify Mode Switcher script exists:
ls -la /userdata/system/Batocera-CRT-Script/ - Restart EmulationStation:
systemctl restart emulationstation
Symptoms: Display goes black after mode switch and reboot
Solutions:
- Verify correct video output was selected
- Check
batocera.confforglobal.videooutput=setting - Try switching back to previous mode
- Check
/userdata/system/logs/BUILD_15KHz_Batocera.logfor errors
Symptoms: Mode switches but wrong display is active
Solutions:
- Verify video output selection matches your physical setup
- Check DRM sysfs:
ls /sys/class/drm/card*-*/status - Manually set output in ES: MAIN MENU → SYSTEM SETTINGS → VIDEO OUTPUT
- Re-run Mode Switcher with correct output
Symptoms: CRT tools don't appear in EmulationStation after switching to CRT Mode
Solutions:
- Check if
es_systems_crt.cfgexists:/userdata/system/configs/emulationstation/es_systems_crt.cfg - Verify file contains
emulatorlauncherentries - Restart EmulationStation:
systemctl restart emulationstation - Check logs:
/userdata/system/logs/BUILD_15KHz_Batocera.log
Symptoms: Emulator settings lost after mode switch
Solutions:
- Check backup directory:
/userdata/Batocera-CRT-Script-Backup/mode_backups/ - Verify backups exist for both
hd_mode/andcrt_mode/ - Check logs for backup/restore errors
- Try manual restore from backup if needed
Symptoms: Your custom scripts are missing after mode switch
Solutions:
- This should NOT happen - user custom scripts are preserved
- Check if scripts are in backup:
/userdata/Batocera-CRT-Script-Backup/mode_backups/[mode]/userdata_configs/scripts/ - Restore from backup if needed
- Report this as a bug if it occurs
Symptoms: Output selection dialog shows no outputs or errors
Solutions:
- Check DRM sysfs access:
ls -la /sys/class/drm/ - Verify you're running as root
- Check system logs for DRM errors
- Try manual output selection in ES first, then run Mode Switcher
Symptoms: Only one video output detected, or trying to use same output for both modes
Caution
- CRITICAL: A single output cannot be shared as both HD and CRT outputs at the same time
- You must have at least 2 separate video outputs connected to use the Mode Switcher
- Connect additional displays/outputs to your GPU/APU
- Verify outputs are detected:
ls /sys/class/drm/card*-*/status - If you only have one physical display, you still need 2 outputs configured (one for HD Mode, one for CRT Mode)
- The Mode Switcher requires separate outputs for each mode - they cannot share the same output
Solutions:
- CRITICAL: A single output cannot be shared as both HD and CRT outputs at the same time
- You must have at least 2 separate video outputs connected to use the Mode Switcher
- Connect additional displays/outputs to your GPU/APU
- Verify outputs are detected:
ls /sys/class/drm/card*-*/status - If you only have one physical display, you still need 2 outputs configured (one for HD Mode, one for CRT Mode)
- The Mode Switcher requires separate outputs for each mode - they cannot share the same output
If you encounter bugs or issues during beta testing:
-
Check the logs:
tail -100 /userdata/system/logs/BUILD_15KHz_Batocera.log
-
Report to Discord channel:
-
Note your setup:
- Batocera version
- GPU/APU model
- Display outputs available
- Current mode before issue
- Target mode attempted