# Network & Connectivity

## Web UI Not Loading

**Symptoms:** Browser shows "This site can't be reached", "Connection refused", or a blank page.

**Diagnosis steps:**

1. Confirm Exaplay 3 is running — check the system tray icon.
2. Confirm you are using the correct URL: `http://<engine-ip>:8123/` (not HTTPS).
3. From the engine machine itself, try `http://localhost:8123/`.
4. Check Windows Firewall: **inbound TCP port 8123 must be allowed**.

**Windows Firewall rule (PowerShell):**

```powershell
New-NetFirewallRule -DisplayName "Exaplay Web UI" -Direction Inbound -Protocol TCP -LocalPort 8123 -Action Allow
```

5. If the page loads on `localhost` but not from another machine, the firewall is blocking external access.

***

## UI Connected but Data Not Updating (Stale Project State)

If the UI loads but shows a project that is not the one currently open in the engine:

1. Click the **🔄 Reconnect** button (appears when the WebSocket indicator is yellow/red).
2. Hard-refresh the browser page: `Ctrl+Shift+R`.
3. Check the **Connection Status** indicator in the top-right corner of the header.

The UI uses two WebSocket connections to the engine:

* `/info` — project events (cue changes, media status, license)
* `/perf` — performance metrics

If either disconnects, the indicator turns red. Exaplay automatically retries the connection every few seconds.

***

## OSC Messages Not Being Received

1. Confirm **Receive OSC** is enabled in **Config → Network → OSC**.
2. Confirm the sending device is targeting the correct IP and port (default: `8000`).
3. Test with a simple OSC sender (e.g. **TouchOSC**, **OSCTestCase**).
4. Check Windows Firewall: **inbound UDP port 8000 must be allowed**.
5. Check the **Monitor** tab in the Control View — incoming OSC messages appear in the event log if the connection is working.

***

## ArtNet Timecode Not Locking

1. Confirm **Receive ArtNet TC** is enabled in **Config → Network → ArtNet**.
2. Verify both devices are on the same subnet (Art-Net uses UDP broadcast by default).
3. Confirm the ArtNet source is sending on the correct universe.
4. Check the Transport bar — `TC: Locked` appears when valid timecode is received.
5. If using multiple network adapters, select the correct adapter in **Config → Network → ArtNet → Network Adapter**.

***

## NDI Sources Not Discovered

1. Confirm the NDI sender is on the same network segment as Exaplay.
2. NDI discovery uses **mDNS (UDP port 5353)**. Ensure multicast is enabled on the network switch.
3. Check Windows Firewall: allow **UDP 5353** and **TCP/UDP 5960–5989**.
4. Try using **NDI Studio Monitor** on the Exaplay machine to verify whether NDI sources are visible to the OS at all. If they are visible there but not in Exaplay, restart Exaplay.

***

## Remote Exaplay Instance Not Appearing in Network Tab

Exaplay uses **UDP broadcast on port 45454** for auto-discovery. Each instance broadcasts a beacon every 5 seconds.

1. Confirm both PCs are on the **same subnet** (e.g. `192.168.1.x/24`). UDP broadcast does not cross subnets.
2. Check Windows Firewall: **inbound UDP port 45454 must be allowed** on both machines.
3. Some managed network switches disable UDP broadcast forwarding. Enable it in your switch configuration.
4. Verify the Exaplay Engine is actually running on the remote PC (check the system tray icon).
5. Open a browser on each PC and navigate to `http://<other-pc-ip>:8123/` — if the UI loads, HTTP works but UDP discovery may be blocked.
6. Restart Exaplay on both PCs to force re-broadcast.

**Windows Firewall rule (PowerShell):**

```powershell
New-NetFirewallRule -DisplayName "Exaplay Discovery" -Direction Inbound -Protocol UDP -LocalPort 45454 -Action Allow
```

***

## Effects Server Not Responding (Port 3001)

The Effects Server (`server.js`) runs on port 3001. If the UI reports connection issues to the Effects Server:

1. Confirm the Effects Server is running: `node server.js` from `exaplay_backend/`.
2. Check Windows Firewall: **TCP port 3001 must be allowed**.
3. Check the browser console (`F12`) for WebSocket errors to `ws://localhost:3001/effects`.
4. If the Effects Server crashed, restart it. In a production environment, use PM2 or a Windows Service to keep it alive automatically.

**Quick restart:**

```bash
cd exaplay_backend
node server.js
```

***

## Remote Control View Not Working from Another Machine

The Control View (`/control`) and User View (`/user`) are standard web pages served by the engine. If they load on `localhost` but not from a remote browser:

1. The remote browser must use `http://<engine-ip>:8123/control`.
2. Firewall on the engine PC must allow port 8123 from the remote device's IP or subnet.
3. Ensure the devices are on the same network (or connected via VPN).
4. Do not use HTTPS — Exaplay serves plain HTTP by default.

***

## PJLink Projector Not Responding

1. Confirm the projector's IP and port in **Config → Devices → TCP Devices**.
2. Ping the projector from the engine machine: `ping 192.168.1.50`.
3. Test the PJLink connection with a PJLink test tool.
4. Ensure the projector's PJLink port (default: **4352**) is not blocked by a switch ACL.
5. Some projectors require a PJLink password — ensure it is set correctly in Exaplay.
6. Check the **Monitor** tab event log for TCP errors when attempting a command.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.exaplay.one/v3/troubleshooting/network.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
