# Fix a connection

## The QR opens a page but the phone does not join

Check the address in the link. `localhost` on a phone points to that phone. The host must advertise an address the phone can reach. For local play, use the same reachable network and avoid a guest network that blocks communication between devices.

If the host rotated its invitation or removed the old seat, scan its current QR. Do not reuse a saved host link as a player link.

## The browser cannot open its camera

Some browsers require a secure page for camera access. Use the phone's normal camera to open the QR, or paste the full join link. Base touch play can work even when in-page scanning or motion APIs are unavailable.

## The phone pairs, but an installed game sees no controller

Look at **Test your controls** on the computer. If the lights respond, the phone network path works. Next check the native gamepad result. A missing driver, denied entitlement or OS permission is a separate setup problem.

If a native device exists, check that the game supports that device type and has a player/controller assigned. Use an SDK-integrated example to isolate phone input from OS gamepad compatibility.

## Ping is missing or high

A dash means there is no current measured sample. If input also stops, check the reconnect status and host process. If replies are slow, compare the selected route and the network the phone is using. A local link can still be slow when devices or the network are busy.

Ping is the endpoint round trip. It does not by itself identify rendering, display or game-loop delay.

## Buttons stay down after leaving

Stop the session and inspect the client neutralization, server timeout and helper watchdog paths. Do not treat a visual button release as proof that the receiving game got a release. The regression tests cover disconnect/resume behavior; test the real OS path before release.

## A private role appears on the shared screen

Check the object passed to public state publication. It must exclude secret roles, prompts, answers and code fragments. Send a separate private view to the intended player. Hiding leaked data in the shared UI does not fix the leak.

## Mouse or keyboard controls do nothing

Confirm that the computer owner approved this exact connection. Reconnecting clears approval. Check the platform permission and supported control list. Linux arbitrary Unicode typing is not currently implemented; a text field must not suggest otherwise.
