Remote play build guide · authoritative continuation

Finish the controller bridge

Resume from a Windows reboot, lock in the corrected Xbox mappings, automate the host, and prove the entire Animal Crossing remote-play path.

Windows 11 Pro Parsec Xbox 360 HORI/Pokkén Pico firmware 1080p60
The mapping fix Use the pinned SDL2 bridge. Do not use --swap-abxy.

Xbox A/B/X/Y now match Switch A/B/X/Y by label. Menu is Plus, View is Minus, and the Xbox logo is Home.

Final mapping

The four controls that matter most

Xbox A/B/X/Y
Switch A/B/X/Y
Menu · three lines
Plus
View · rectangles
Minus
Xbox logo
Home

12. Resume the controller setup after the PC reboot

12.1 Know what the reboot did—and did not—reset

A Windows restart stopped OBS, the temporary PowerShell bridge, and the active Parsec session. It did not erase:

  • The HORI/Pokkén firmware on the Pico.
  • The Python environment under C:\RemoteSwitch\switch-pico-sdl2.
  • The Parsec Virtual USB driver.
  • The OBS profile and scene.
  • The UART wiring.

For normal operation, leave the hardware connected like this:

Windows host USB
    -> Raspberry Pi Debug Probe
    -> UART U port
    -> GPIO4 / GPIO5 / GND on Pico

Switch dock USB
    -> Pico Micro-USB data port

The Pico belongs on the Switch dock. The Debug Probe belongs on the Windows PC.

12.2 Confirm the working bridge folder survived

Open a normal PowerShell window on the host and run:

Test-Path C:\RemoteSwitch\switch-pico-sdl2\.venv\Scripts\python.exe
git -C C:\RemoteSwitch\switch-pico-sdl2 rev-parse --short HEAD

Expected results:

True
e13ba50

If Test-Path says False, do not continue to the bridge command. Recreate the pinned SDL2 environment:

Set-Location C:\RemoteSwitch
git clone https://github.com/jyapayne/switch-pico.git switch-pico-sdl2
Set-Location C:\RemoteSwitch\switch-pico-sdl2
git checkout e13ba506cfc31fa8f02f50a9ac2a445d1ecf246b
py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -e .
.\.venv\Scripts\python.exe -m pip install "PySDL2-dll==2.32.10"

If the folder already exists, do not clone over it.

12.3 Reconfirm the Debug Probe COM port

Run:

C:\RemoteSwitch\switch-pico-sdl2\.venv\Scripts\python.exe -m serial.tools.list_ports -v

Find the USB Serial Device associated with the Raspberry Pi Debug Probe. The tested machine used COM3.

You can verify it visually:

  1. Open Device Manager.
  2. Expand Ports (COM & LPT).
  3. Unplug only the Debug Probe's USB cable.
  4. Note which COM entry disappears.
  5. Reconnect the probe and confirm the same entry returns.

Keep the Debug Probe in the same physical PC USB port. Windows normally preserves its COM number there.

Every command below uses COM3. If Windows now assigns another number, substitute that number everywhere, including the startup script.

12.4 Confirm the Switch-side prerequisites

Using a local Joy-Con if necessary:

  1. Confirm the Switch is awake and docked.
  2. Open System Settings > Controllers and Sensors.
  3. Confirm Pro Controller Wired Communication is On.
  4. Open System Settings > Sleep Mode.
  5. Confirm Auto-Sleep (Connected to TV) is Never.

The HORI compatibility firmware does not implement controller wake-from-sleep. Keeping the docked Switch awake is part of this design.

12.5 Confirm Parsec's host controller mode after reboot

On the Windows host:

  1. Open Parsec > Settings > Host.
  2. Confirm Parsec Virtual USB Gamepads is Enabled.
  3. Confirm the latest offered Virtual USB driver is installed.
  4. Set Virtual Gamepad Type to Xbox 360.
  5. Click Restart at the top of Parsec if you changed either setting.

Do not use DualShock 4 or DualSense emulation for this build. The SDL2 bridge and the tested remote path expect Parsec's standardized Xbox 360 device.

12.6 Prepare the sister's Xbox controller on her Mac

The recommended controller is the current official Xbox Wireless Controller—the Series X|S model with USB-C and a Share button.

On the Mac:

  1. Update macOS before first setup.
  2. Turn on the Xbox controller.
  3. Hold its pairing button until the Xbox light flashes.
  4. Open System Settings > Bluetooth and connect Xbox Wireless Controller.
  5. Open System Settings > Game Controllers.
  6. Select the Xbox controller and return its controls to their defaults if they were customized previously.
  7. Close Steam while commissioning this path so Steam Input cannot consume or duplicate controller events.
  8. Open Parsec > Settings > Gamepad.
  9. Select the Xbox controller.
  10. Press every control and watch Parsec's State display.

The intended Parsec meanings are:

Physical Xbox control Parsec control
A A
B B
X X
Y Y
Menu, three horizontal lines Start
View, overlapping rectangles Back
Xbox logo Guide
Share Misc/Share, when exposed
LB / RB Left / Right Shoulder
LT / RT Left / Right Trigger
Left / right stick click Left / Right Stick
D-pad D-pad

If a control is wrong, use Map in Parsec's Gamepad tab to assign it. Use Show Raw Data when you need to determine whether macOS and Parsec can see a button at all.

12.7 Create the Parsec virtual controller on the host

The virtual controller does not exist merely because the host PC booted. Parsec creates it after the remote player connects and presses a face button.

  1. On the Mac, connect to the Windows host in Parsec.
  2. Press Xbox A once.
  3. The host should play the Windows USB-connected sound.
  4. On the host, press Windows+R, enter joy.cpl, and press Enter.
  5. Confirm an Xbox 360 Controller appears.
  6. Open its Properties > Test page.
  7. Confirm A/B/X/Y, both sticks, D-pad, bumpers, triggers, Menu, and View respond correctly.

If joy.cpl is empty, do not start debugging the Pico. Fix Parsec first:

  • Confirm the remote user has gamepad permission.
  • Confirm the client pressed a face button after connecting.
  • Restart Parsec on the host, reconnect, and press A again.
  • Reinstall the Parsec Virtual USB driver if the host still creates no device.

12.8 Confirm the SDL2 bridge sees only the intended controller

Disconnect local controllers from the Windows host. Then run:

Set-Location C:\RemoteSwitch\switch-pico-sdl2
.\.venv\Scripts\python.exe -m switch_pico_bridge.controller_uart_bridge --list-controllers

Expected output includes:

Detected controller 0: Xbox 360 Controller

No controllers detected is normal if the sister is not currently connected or has not pressed a face button. It is not evidence that the Python installation broke.

Avoid using the older physical Xbox One controller directly on the Windows host. Its SDL GUID reproduced a known SDL input-read problem during testing. Parsec's virtual Xbox 360 controller is the validated path.

12.9 Run the corrected bridge manually

Stop any old bridge console with Ctrl+C. Then run:

Set-Location C:\RemoteSwitch\switch-pico-sdl2
.\.venv\Scripts\python.exe -u -m switch_pico_bridge.controller_uart_bridge --ports COM3 --no-imu --zero-sticks --deadzone 0.12 --zero-hotkey= --swap-hotkey=

Expected startup messages include:

Prepared 1 specified UART port(s) for auto-pairing.
Detected controller 0: Xbox 360 Controller
Auto-paired controller 0 to COM3
Controller 0 (...) paired to COM3

The terminal does not print a line for every button. Silence while playing is normal.

Why these options are final:

Option Reason
--ports COM3 Auto-pairs the first arriving Parsec controller with the known Debug Probe port and supports hot-plugging.
--no-imu The HORI firmware intentionally has no gyro path, and Animal Crossing does not require it.
--zero-sticks Captures the initial neutral positions when the virtual controller arrives. Keep both sticks released during connection.
--deadzone 0.12 Suppresses the approximately 8% return-to-center drift observed during testing without harming Animal Crossing.
--zero-hotkey= Disables the terminal re-zero hotkey for unattended operation.
--swap-hotkey= Prevents an accidental terminal keypress from changing ABXY later.

There is deliberately no --swap-abxy flag. In this pinned SDL2 revision, no flag means Xbox labels map directly to the same Switch labels.

12.10 Final controller mapping

The resulting mapping is:

Xbox controller Nintendo Switch
A A
B B
X X
Y Y
LB L
RB R
LT ZL
RT ZR
Menu, three lines Plus +
View, overlapping rectangles Minus
Xbox logo Home
Share Capture, when Parsec exposes the Share/Misc button
Left stick click L-stick click
Right stick click R-stick click
D-pad D-pad
Left and right sticks Left and right sticks

This is label-for-label ABXY, not physical-position mapping. When Animal Crossing says “Press A,” press the Xbox button labeled A.

12.11 Test every control before automating it

On the Switch, open Controllers > Change Grip/Order, then test:

  1. Release the controller and wait five seconds. Nothing should move.
  2. Press A, B, X, and Y individually.
  3. Test all four D-pad directions.
  4. Move each stick in a full circle and release it.
  5. Press LB, RB, LT, and RT.
  6. Press Menu and verify Switch Plus.
  7. Press View and verify Switch Minus.
  8. Press the Xbox logo and confirm it opens the Switch HOME Menu.
  9. Press Share and look for the Switch capture confirmation.
  10. Click both sticks.

Then launch Animal Crossing and confirm:

  • Xbox A selects.
  • Xbox B cancels.
  • Xbox X and Y perform their expected in-game functions.
  • Menu opens the NookPhone or the appropriate Plus action.
  • View performs the Minus action.
  • Xbox logo returns to HOME.

Do not automate the bridge until the controls pass this manual test.

12.12 If Xbox Home or Share is intercepted

First open Parsec > Settings > Gamepad > Show Raw Data on the Mac.

  • If the Xbox-logo press appears, map it to Guide.
  • If Share appears, map it to Misc/Share.
  • If the Xbox logo never appears, check macOS System Settings > Game Controllers for a system action assigned to that button and return the controller to default controls.
  • If Guide remains unavailable but Share works, temporarily map Share to Guide. Home matters more than Capture for unattended Switch use.

The Windows bridge cannot forward a button that never reaches Parsec. Diagnose this on the Mac's Parsec Gamepad screen before changing Python or reflashing the Pico.

13. Finish the Parsec video, audio, and access settings

13.1 Host settings

On the Windows host, open Parsec > Settings > Host and use:

  • Hosting Enabled: On
  • Resolution: 1920×1080
  • FPS: 60
  • Bandwidth Limit: 30 Mbps
  • Display: the 1080p60 display carrying the OBS projector
  • Audio: CABLE Input (VB-Audio Virtual Cable)
  • Echo Cancelling: Off
  • Parsec Virtual USB Gamepads: Enabled
  • Virtual Gamepad Type: Xbox 360
  • Quality: Lowest Latency

Restart Parsec after changing the gamepad type or Virtual USB driver.

13.2 Sister's client settings

On the Mac:

  • Window Mode: Fullscreen
  • VSync: Off initially
  • Decoder: Hardware
  • H.265/HEVC: Off for the baseline test
  • 10-bit color: Off
  • Controller: verified in Settings > Gamepad

If she sees tearing, enable VSync and accept its small latency cost. If the network cannot sustain 30 Mbps, lower the host limit to 25 Mbps, then 20 Mbps.

13.3 Give access only to her account

Use separate Parsec accounts.

  1. Add the sister as a friend or invited guest.
  2. Enable Gamepad permission.
  3. Enable keyboard and mouse only if you want her to perform recovery actions.
  4. Enable unattended connection only for her trusted account.
  5. Do not share the host account password.
  6. Do not create a permanent public Parsec share link.

14. Make the controller bridge start automatically

14.1 Create the permanent bridge launcher

Open Notepad and save the following as:

C:\RemoteSwitch\start-switch-bridge.cmd

Use this exact content, replacing COM3 only if the Debug Probe uses another port:

@echo off
setlocal
set "ROOT=C:\RemoteSwitch\switch-pico-sdl2"
set "PYTHON=%ROOT%\.venv\Scripts\python.exe"
set "LOGDIR=C:\RemoteSwitch\logs"

if not exist "%LOGDIR%" mkdir "%LOGDIR%"
cd /d "%ROOT%"

echo [%date% %time%] Starting Remote Switch controller bridge>>"%LOGDIR%\switch-pico-bridge.log"
"%PYTHON%" -u -m switch_pico_bridge.controller_uart_bridge --ports COM3 --no-imu --zero-sticks --deadzone 0.12 --zero-hotkey= --swap-hotkey= >>"%LOGDIR%\switch-pico-bridge.log" 2>&1
exit /b %errorlevel%

Important:

  • The path is switch-pico-sdl2, not switch-pico.
  • There is no --swap-abxy.
  • Do not launch debug-bridge.py for daily use.

14.2 Test the launcher manually

  1. Stop every bridge with Ctrl+C.
  2. Double-click C:\RemoteSwitch\start-switch-bridge.cmd.
  3. Have the sister connect through Parsec and press A.
  4. Test the Switch.
  5. Close the launcher with Ctrl+C.
  6. Open the log:
Get-Content C:\RemoteSwitch\logs\switch-pico-bridge.log -Tail 40

Do not schedule it until this exact launcher works.

14.3 Create the Task Scheduler entry

  1. Open Task Scheduler.
  2. Select Create Task, not Create Basic Task.
  3. On General:
    • Name: Remote Switch - Controller Bridge
    • User: the Windows account used for remote play
    • Select Run only when user is logged on
    • Leave Run with highest privileges cleared
  4. On Triggers:
    • New
    • Begin the task: At log on
    • Specific user: the remote-play Windows account
    • Delay task for: 15 seconds
  5. On Actions:
    • Program: C:\Windows\System32\cmd.exe
    • Arguments: /c "C:\RemoteSwitch\start-switch-bridge.cmd"
    • Start in: C:\RemoteSwitch
  6. On Conditions:
    • Clear Start the task only if the computer is on AC power if shown.
  7. On Settings:
    • Enable Allow task to be run on demand.
    • Enable If the task fails, restart every 1 minute.
    • Set restart attempts to 999.
    • Clear Stop the task if it runs longer than.
    • If already running: Do not start a new instance.
  8. Save.

The task may start before a Parsec controller exists. That is fine; the bridge waits for hot-plug events.

14.4 Test the scheduled task without rebooting

Run:

Start-ScheduledTask -TaskName "Remote Switch - Controller Bridge"
Start-Sleep -Seconds 3
Get-ScheduledTaskInfo -TaskName "Remote Switch - Controller Bridge"
Get-Content C:\RemoteSwitch\logs\switch-pico-bridge.log -Tail 40

Then connect through Parsec, press A, and confirm the Switch responds.

Only one process may own COM3. Do not leave a manual bridge running when starting the scheduled task.

15. Make OBS return to the clean Switch view

15.1 Save the full-screen projector

In OBS:

  1. Open File > Settings > General.
  2. In Projectors:
    • Enable Save projectors on exit.
    • Enable Hide cursor over projectors.
    • Enable Always on top if available.
  3. Right-click the Switch scene.
  4. Choose Fullscreen Projector (Scene).
  5. Select the display Parsec captures.
  6. Confirm the Switch fills the display.
  7. Exit OBS normally with File > Exit once, then reopen it.
  8. Confirm the projector returns.

Press Esc on the host to leave projector mode temporarily.

15.2 Create the OBS scheduled task

Create another Task Scheduler task:

  • Name: Remote Switch - OBS
  • Run only when the remote-play Windows user is logged on
  • Trigger: At log on, delayed 25 seconds
  • Program:
C:\Program Files\obs-studio\bin\64bit\obs64.exe
  • Arguments:
--profile "Remote Switch" --collection "Remote Switch" --scene "Switch" --disable-missing-files-check
  • Start in:
C:\Program Files\obs-studio\bin\64bit

Use the same retry and no-time-limit settings as the bridge task.

15.3 Reconfirm audio after the reboot

In OBS:

  1. Confirm the Game Capture Neo audio meter moves.
  2. Open Advanced Audio Properties.
  3. Set the Neo to Monitor Only (mute output).
  4. Open Settings > Audio > Advanced.
  5. Set Monitoring Device to CABLE Input (VB-Audio Virtual Cable).

In Parsec Host settings, Audio must also be CABLE Input.

The TV still receives audio independently through the Neo's HDMI OUT.

16. Finish unattended Windows recovery

16.1 Confirm Parsec is installed per-computer

The per-computer installation lets the Parsec service start before a user signs in.

In PowerShell:

Get-CimInstance Win32_Service |
    Where-Object {
        $_.Name -match "parsec" -or
        $_.DisplayName -match "parsec"
    } |
    Format-Table Name, DisplayName, State, StartMode

At least one Parsec service should be Running with an automatic start mode.

If no service appears, reinstall Parsec using its Per Computer option, restart Windows, and recheck.

16.2 Automatic sign-in decision

OBS and the controller bridge need an interactive Windows session.

For a dedicated, physically secure host:

  1. Download Microsoft Sysinternals Autologon.
  2. Run Autologon64.exe as administrator.
  3. Enter the dedicated remote-play Windows account and password.
  4. Select Enable.
  5. Restart and verify the account signs in.

Use BitLocker and keep the machine physically secure. A local administrator can recover the stored autologon credential.

If you do not enable autologon, Parsec can reach the Windows sign-in screen, but someone must sign in before OBS and the user-level scheduled bridge become available.

16.3 Power-loss settings

  • In BIOS/UEFI, set Restore on AC Power Loss to Power On.
  • Keep Windows sleep disabled.
  • Disable USB selective suspend for this host.
  • Keep Windows Update active, but configure Active Hours around likely play times.
  • Prefer a small UPS for the PC, network equipment, dock, and capture card.
  • A smart plug is useful for the dock or capture hardware; it is not a safe routine way to restart Windows.

17. Staged acceptance test after the reboot

Pass each stage before moving to the next.

Stage A — Local HDMI and OBS

  • TV shows Switch video and audio through Neo passthrough.
  • OBS shows 1080p60 Switch video.
  • OBS audio meter moves.
  • Fullscreen Scene Projector fills the host display.

Stage B — Parsec video and audio

  • Sister connects.
  • She sees only the clean Switch scene.
  • She hears one clean stereo feed.
  • Parsec reports hardware decode and stable network timing.

Stage C — Parsec virtual controller

  • Client Gamepad State responds correctly.
  • After connecting and pressing A, host joy.cpl shows Xbox 360 Controller.
  • Its Test page shows correct controls.

Stage D — Bridge

  • Scheduled task is running.
  • Log shows controller 0 paired to COM3.
  • Idle input is neutral.
  • Every control follows the mapping table in Step 12.10.

Stage E — Animal Crossing

  1. Return to the Switch HOME Menu.
  2. Select the sister's existing Switch user.
  3. Launch Animal Crossing.
  4. Confirm her existing resident and house load on the family island.
  5. Walk, open inventory, use the NookPhone, enter and leave a building, and save normally.

Stage F — True unattended restart

  1. Disconnect Parsec.
  2. Restart Windows normally.
  3. Wait three to five minutes.
  4. Confirm the host comes back online.
  5. Reconnect.
  6. Press A once to create the virtual controller.
  7. Verify video, audio, Plus, Minus, Home, ABXY, and both sticks.
  8. Repeat the full restart test a second time.

Do not call the build unattended until it passes Stage F twice.

18. Normal daily use

Sister

  1. Connect or wake the Xbox controller on the Mac.
  2. Open Parsec.
  3. Verify the controller under Settings > Gamepad if anything changed.
  4. Connect to the home PC.
  5. Press A once to create the host virtual controller.
  6. Wait a few seconds for the bridge to pair it to COM3.
  7. Play normally.
  8. Choose her existing Switch user when launching Animal Crossing.
  9. Save and return to the HOME Menu when finished.
  10. Disconnect from Parsec.
  11. Do not put the Switch to sleep.

Family at home

  • Use the TV normally through the Neo's HDMI passthrough.
  • Avoid using another controller during a remote session.
  • If controller order becomes confused, open Controllers > Change Grip/Order and reconnect only the intended controller.
  • Leave the Pico on the dock and Debug Probe on the PC.

19. Troubleshooting

The bridge says No controllers detected after boot

This is normal before a remote player connects.

  1. Connect the sister through Parsec.
  2. Press a face button.
  3. Confirm the host USB-connected sound.
  4. Check joy.cpl.
  5. The already-running bridge should hot-detect and pair it.

joy.cpl sees no controller

The problem is before switch-pico:

  1. Verify the controller in the Mac's Parsec Gamepad tab.
  2. Confirm the guest has gamepad permission.
  3. Press A after connecting.
  4. Restart host Parsec and reconnect.
  5. Reinstall the Parsec Virtual USB driver if needed.

The bridge reports Access is denied for COM3

Another process owns the UART.

Stop:

  • Any manual bridge window.
  • debug-bridge.py.
  • test-pico.py.
  • A serial terminal.
  • The scheduled bridge task before doing a manual test.

Then start exactly one bridge.

The bridge uses the wrong controller

Disconnect all local host controllers. In Parsec, reset virtual gamepads, reconnect only the sister, and press her A button first.

ABXY letters are reversed

The final SDL2 command must not contain:

--swap-abxy

Confirm the scheduled script points to switch-pico-sdl2, not the newer switch-pico folder. Stop and restart the task after correcting it.

On the client:

  1. Open Parsec Settings > Gamepad.
  2. Confirm Menu reports Start.
  3. Confirm View reports Back.
  4. Remap them if necessary.
  5. Reconnect so Parsec recreates the host controller.

The pinned bridge already maps Start to Plus and Back to Minus.

Xbox logo does not produce Home

  1. Check Show Raw Data in the client Gamepad tab.
  2. Map the Xbox logo to Guide.
  3. Reset any macOS Game Controller action assigned to the button.
  4. Close Steam.
  5. Reconnect Parsec.
  6. If Guide remains unavailable, map Share to Guide as the fallback.

Share does not produce Capture

Capture is optional. Some client/virtual-controller combinations do not expose a distinct Misc/Share button. Keep Home working even if that means sacrificing Capture.

Buttons again become directions or Up is stuck

That was the old Switch-facing Pro Controller report failure.

  1. Stop the bridge.
  2. Confirm the Pico was not reflashed with the original rollback UF2.
  3. Reflash switch-pico-hori-compat-rp2040.uf2.
  4. Restart with the SDL2 command from Step 12.9.

Do not troubleshoot this symptom by swapping physical controllers.

Stick movement continues at idle

  1. Release both sticks before connecting.
  2. Keep --zero-sticks.
  3. Keep --deadzone 0.12.
  4. Disconnect and reconnect the Parsec controller so neutral is captured again.
  5. If needed, increase to --deadzone 0.15.

Scheduled task runs but the Switch does nothing

Check:

Get-ScheduledTaskInfo -TaskName "Remote Switch - Controller Bridge"
Get-Content C:\RemoteSwitch\logs\switch-pico-bridge.log -Tail 80

Then verify:

  • Correct COM port.
  • Pico USB is on the Switch dock.
  • Debug Probe USB is on the Windows host.
  • Probe UART U port is used.
  • GPIO4 → probe RX, GPIO5 → probe TX, and GND → GND.
  • Pro Controller Wired Communication is On.
  • Exactly one bridge process is running.

Parsec shows the desktop instead of the Switch

In OBS, right-click Switch and choose Fullscreen Projector (Scene) on the display Parsec captures. Press Esc locally to exit it temporarily.

Sister hears silence

  • OBS Neo meter must move.
  • OBS Monitoring Device must be CABLE Input.
  • Neo monitoring must be Monitor Only.
  • Parsec Host Audio must be CABLE Input.
  • Reconnect the Parsec session after changing audio devices.

Switch is asleep

The HORI compatibility controller cannot wake it. Use a local power-button press or a tested dock-power workaround, then reconfirm docked auto-sleep is Never.

OBS shows an unclean-shutdown prompt

Connect through Parsec with mouse permission, choose Run Normally, select the Remote Switch profile and collection, and reopen the fullscreen scene projector.

20. Recovery ladder

Use the least disruptive step that works:

  1. Disconnect and reconnect the Parsec session.
  2. Restart Parsec on the client.
  3. Reset Parsec gamepads on the host, reconnect, and press A.
  4. Stop and start Remote Switch - Controller Bridge in Task Scheduler.
  5. Inspect the bridge log.
  6. Deactivate and reactivate the Neo source in OBS.
  7. Restart OBS and reopen its projector.
  8. Restart Windows normally.
  9. Power-cycle the dock/Neo HDMI chain if HDMI negotiation is stuck.
  10. Cut PC power only as a last resort.

Do not expose RDP, OBS WebSocket, serial ports, or ad-hoc web panels directly to the public Internet.

21. Expected experience

Image and sound

  • Switch output: 1920×1080, up to 60 fps.
  • Neo capture: 1080p60 SDR.
  • OBS: 1080p60 NV12, Rec. 709, Limited/Partial.
  • Parsec: H.264 hardware-encoded 1080p60 at up to 30 Mbps.
  • Audio: HDMI stereo → Neo → OBS → VB-CABLE → Parsec.
  • Family TV: independent HDMI passthrough.

Animal Crossing should look very good. Heavy rain, foliage, or rapid full-screen motion can show some compression.

Latency

A realistic healthy interstate target is approximately 70–140 ms of added button-to-image latency:

  • Controller forwarding, bridge, UART: a few milliseconds.
  • USB capture and OBS preview: commonly two to four 60 Hz frames.
  • Parsec encode, network, and decode: commonly another 20–60 ms.

This is comfortable for Animal Crossing and Jackbox. It is not a competitive fighting-game or rhythm-game target.

22. Final acceptance checklist

  • Pico still runs the HORI/Pokkén compatibility firmware.
  • Host bridge path is C:\RemoteSwitch\switch-pico-sdl2.
  • Pinned SDL2 commit begins with e13ba50.
  • Debug Probe COM port is correct in the launcher.
  • Parsec host emulates Xbox 360.
  • Xbox A/B/X/Y map to Switch A/B/X/Y by label.
  • Menu maps to Plus.
  • View maps to Minus.
  • Xbox logo maps to Home.
  • Share maps to Capture when the client exposes it.
  • Sticks remain neutral when released.
  • Scheduled bridge starts at logon and waits for hot-plug.
  • OBS starts with the clean fullscreen Switch scene.
  • Sister receives one clean stereo audio feed.
  • Family TV retains normal video and audio.
  • Animal Crossing loads the sister's original user and resident.
  • Two unattended Windows restart tests pass.

Once every required item passes, the remote-play system is ready for normal use.

23. Primary references