Connecting from Windows
macOS and Linux find the iPad by name without any setup. Windows is the awkward one, and it’s worth knowing exactly why before you start troubleshooting.
Windows 10 (1703 and later) and Windows 11 ship an mDNS resolver. They can usually resolve a .local hostname — ping studio-ipad.local often just works. What Windows does not have is DNS-SD service browsing: nothing on a stock Windows box can enumerate the _pmix-ctrl._tcp service to discover the iPad for you. And the built-in resolver is conditional — it wants the network profile set to Private, it can be blocked by firewall policy, and it’s been reported as unreliable on some subnets.
So the honest summary is: name resolution on Windows might work, discovery won’t. Pick one of the options below. The first one always works.
Option 1 — Use the IP address (recommended)
No software to install, nothing to depend on.
1. Get the iPad’s IP. On the iPad: Settings → Wi-Fi → tap the ⓘ next to your network → IP Address. You’ll get something like 192.168.1.42.
2. Test it from Command Prompt or PowerShell:
curl.exe http://192.168.1.42:6006/health
curl.exe ships with Windows 10 and later. In PowerShell you must type curl.exe — bare curl is an alias for Invoke-WebRequest, which takes different arguments.
3. Pin the address. DHCP will eventually hand the iPad a different IP. In your router’s admin page, add a DHCP reservation (sometimes called “static lease” or “address reservation”) for the iPad’s MAC address. Now the URL you put in a config file stays correct.
4. Optional — give it a name anyway. Once the IP is reserved, you can map a friendly name locally without Bonjour. Open Notepad as Administrator, open:
C:\Windows\System32\drivers\etc\hosts
and add a line:
192.168.1.42 pmix
Save. Now http://pmix:6006/mcp works from that PC — in a browser, in curl, and in any MCP client config. This is the cleanest setup for a fixed control-room machine: a stable, readable URL with no discovery protocol involved at all.
Option 2 — Install Apple’s Bonjour for Windows
If you’d rather have real .local names and service discovery — useful when you have several iPads, or when the address moves around a lot — install Apple’s Bonjour service.
Download Bonjour Print Services for Windows v2.0.2 from Apple and run BonjourPSSetup.exe. (Despite the name, it installs the full Bonjour stack, not just printer support. If you already have iTunes for Windows, you already have Bonjour.)
After installing, .local names resolve reliably:
curl.exe http://studio-ipad.local:6006/health
The iPad’s .local name comes from Settings → General → About → Name, with spaces and punctuation replaced by hyphens. .local lookups are case-insensitive, so you don’t have to match the capitalisation.
Bonjour also gives you dns-sd.exe, which can actually find the iPad for you:
& "C:\Program Files\Bonjour\dns-sd.exe" -B _pmix-ctrl._tcp
That lists every pMix.studio mixer advertising the Control API on your network. To resolve one to a hostname and port:
& "C:\Program Files\Bonjour\dns-sd.exe" -L "Studio iPad" _pmix-ctrl._tcp
Both commands run until you press Ctrl-C. On some installs the path is C:\Program Files (x86)\Bonjour\dns-sd.exe.
The service advertises TXT records alongside itself — api_port, mcp_path, mcp_transport, events_path — so a discovery-aware client can configure itself entirely from the browse result.
Option 3 — Scan for it
If you don’t know the IP, can’t get to the iPad, and don’t want to install anything, sweep the subnet for anything answering on port 6006. In PowerShell 7:
$prefix = "192.168.1" # change to match your network
1..254 | ForEach-Object -Parallel {
$ip = "$using:prefix.$_"
try {
$info = Invoke-RestMethod -Uri "http://${ip}:6006/info" -TimeoutSec 1 -ErrorAction Stop
"$ip -> $($info.device_name) ($($info.device_model))"
} catch { }
} -ThrottleLimit 64
A few seconds later you get the address and which iPad is on it. ForEach-Object -Parallel needs PowerShell 7 — on Windows PowerShell 5.1 drop the -Parallel/-ThrottleLimit and the $using: prefix, and expect the scan to take a couple of minutes.
To find your own subnet, run ipconfig and read the IPv4 Address of your Wi-Fi adapter.
Connecting an MCP client on Windows
With an address in hand, Claude Code works the same as anywhere:
claude mcp add --transport http pmix http://192.168.1.42:6006/mcp
Clients that only speak stdio (older Claude Desktop builds, some editor integrations) need a bridge. mcp-remote handles it, and because the Control API is plain HTTP on your LAN — not HTTPS — you must pass --allow-http:
{
"mcpServers": {
"pmix": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"http://192.168.1.42:6006/mcp",
"--allow-http"
]
}
}
}
That needs Node.js installed. If you set up the hosts-file name from Option 1, use http://pmix:6006/mcp here instead and the config survives a network change.
More on wiring up assistants — including what to tell one that has no MCP support at all — is on Pointing an AI assistant at pMix.
When nothing connects
Work down this list — most of it isn’t Windows-specific.
Is the API actually on? Settings → Control API on the iPad. The Status row should read Listening. The toggle is off by default and resets nothing else.
Did you allow Local Network access? The first time you enable the Control API, iPadOS asks. If it was denied, no traffic reaches the app. Fix it in the iPad’s Settings → pMix Studio → Local Network.
Same network? Both devices must be on the same subnet. Common traps: the iPad joined the 5 GHz SSID and the PC is on a separate guest network; the PC is on Ethernet behind a different switch; a VPN on the PC is capturing LAN traffic. Disconnect any VPN and retry.
Client isolation. Many routers — and almost every guest network — enable “AP isolation” or “client isolation”, which blocks device-to-device traffic entirely. You can reach the internet but not each other. Turn it off, or move both devices to the main network.
Is the iPad asleep? A locked iPad with the screen off will drop the connection. Keep pMix.studio in the foreground during a show.
Windows network profile. For .local names, open Settings → Network & internet → your Wi-Fi → and set the network profile to Private. mDNS is commonly blocked on Public profiles.
Still stuck? Fall back to Option 1. A raw IP address bypasses every naming and discovery problem on this list, and curl.exe http://<ip>:6006/health is the single test that tells you whether the problem is the network or the name.