Skip to content

Plinken Remote

Plinken Remote is an iOS companion app that lets you control Plinken from your iPhone or iPad over your local network. It communicates using OSC (Open Sound Control) for parameter control and RTP for live camera streaming.

The Plinken desktop app runs three network services that the iOS app connects to:

ServiceDefault PortProtocolPurpose
Config Server9100HTTP (TCP)Auto-discovery and configuration
OSC Listener9000UDPReceives control messages from iOS
OSC Reply9001UDPSends state updates back to iOS
RTP Video5004UDPReceives camera video stream from iOS

When the iOS app connects, it sends an HTTP GET request to the config server. Plinken responds with a JSON payload:

{
"oscPort": 9000,
"oscReplyPort": 9001,
"rtpPort": 5004,
"name": "Plinken",
"version": "0.1.0"
}

The config server:

  • Runs on an Axum HTTP server bound to 0.0.0.0:9100
  • Tracks connected clients by IP address with connection time and last activity
  • Any route (/config or fallback) returns the same configuration JSON

Plinken maintains a registry of connected Remote clients:

PropertyTypeDescription
ipstringClient IP address
namestringDevice name (if provided)
connected_atInstantWhen the client first connected
last_activityInstantLast time any activity was received

Client activity is updated whenever:

  • The iOS app fetches the config endpoint
  • OSC messages arrive from the client’s IP

Ensure your iPhone/iPad and your Mac are on the same Wi-Fi network. For lowest latency, use a 5 GHz network.

Open Plinken on your Mac. The config server starts automatically on port 9100. Verify it’s running in Settings → OSC or check the status indicator.

Open Plinken Remote on your iPhone or iPad:

  1. The app automatically discovers Plinken via the config endpoint
  2. If auto-discovery fails, tap Connection Settings and enter your Mac’s IP address manually
  3. Once connected, the app fetches the config JSON and establishes OSC communication

The iOS app provides:

TabFeatures
TransportPlay, stop, record, timeline position, cycle toggle
Control SurfaceTouch faders and XY pad for real-time parameter control
ActionsQuick-access buttons for common Plinken commands
CameraStream device camera into Plinken

Control playback directly from your device:

  • Play / Stop — Toggle playback
  • Record — Arm and trigger recording
  • Rewind / Forward — Navigate the timeline
  • Cycle — Toggle loop mode
  • Tap Tempo — Tap to set BPM

All transport commands are sent as OSC messages to port 9000 and translated to Plinken’s internal command system.

The touch control surface provides:

  • Faders — Vertical touch sliders mapped to track volumes, sends, or parameters
  • XY Pad — Two-axis touchpad for simultaneous control of two parameters
  • Buttons — Momentary and toggle buttons for mute, solo, arm

Controls send OSC values that Plinken maps to automation parameters.

Stream your iPhone or iPad camera directly into Plinken’s compositor:

  1. Open the Camera tab in Plinken Remote
  2. Select front or back camera
  3. The video feed is sent via RTP to port 5004
  4. In Plinken, the feed appears as a live video source in the compositor

The RTP port is configurable — Plinken advertises the current port in the config JSON, and you can change it programmatically:

-- The RTP port is set internally; check Settings → OSC for current values

Map any iOS control to a Plinken parameter:

  1. Long-press a control (fader, XY pad axis, or button) on the iOS app
  2. Select Map to Parameter
  3. Move the target parameter in Plinken — auto-detection captures the mapping
  4. The mapping is saved and synced via OSC
PortServiceConfigurable
9100HTTP Config ServerStart/stop via API
9000OSC Listener (incoming)Via Settings → OSC
9001OSC Reply (outgoing)Fixed default
5004RTP Video (incoming)Via set_rtp_port()

If you’re using a firewall, ensure the following ports are open:

  • TCP 9100 — Config server (HTTP)
  • UDP 9000 — OSC control messages
  • UDP 9001 — OSC reply/feedback
  • UDP 5004 — RTP video stream

The remote server can be controlled programmatically:

FunctionDescription
start(port)Start the config server on specified port
stop()Stop the config server and clear client registry
is_running()Check if the server is running
port()Get the current listening port
get_clients()Get list of connected clients
touch_client(ip)Update last activity for a client IP
set_rtp_port(port)Change the RTP port advertised to clients
rtp_port()Get the current RTP port
ProblemSolution
Can’t find PlinkenVerify both devices are on the same network. Check that port 9100 is not blocked by a firewall.
High latencyUse 5 GHz Wi-Fi. Avoid Bluetooth interference. Close bandwidth-heavy apps.
Camera not showingGrant camera permission to Plinken Remote in iOS Settings. Check that RTP port 5004 is open.
Controls unresponsiveCheck the OSC listener status in Settings → OSC. Verify UDP 9000 is open.
Connection dropsThe config server tracks client activity. If no activity is received, the client entry becomes stale. Reconnect from the iOS app.