Transport Control
How the phone's play, step and jump buttons drive the host — the Control Surface plugin, the After Effects bridge, and the keystroke fallback.
The transport buttons on the phone do not send keystrokes over the network. They send one-byte commands to the plugin, and the plugin decides how to execute each one on the host. Which mechanism it uses determines what works, and whether the host application has to be in the foreground.
The phone's transport bar has five buttons, and the app can send exactly five
commands: Go to In point (0x25), Step back one frame (0x22),
Play/Pause (0x20), Step forward one frame (0x21) and Go to Out
point (0x26). The wire protocol reserves five more — large steps and three
shuttle commands — and the plugin implements all of them, but no shipping build
of the app has a control that sends them. They are protocol headroom, not
features.
There are three mechanisms, tried in this order:
| Mechanism | Host | Ships in the installer | Needs the host in the foreground |
|---|---|---|---|
| Control Surface plugin | Premiere Pro | Yes | No |
| AEGP bridge | After Effects, Windows only | No — manual install | No |
| Synthetic keystrokes | Any host, fallback | n/a | Windows: yes. macOS: no. |
The plugin tries the in-process bridge first for every button. Only if no bridge is loaded does it fall back to keystrokes — and it decides that per button, so a single command failing does not disable the rest.
Premiere Pro: the Control Surface plugin
PremiereLiveCtrl is a second, separate plugin that both installers place
alongside the Transmit plugin. It registers with Premiere Pro as a Control
Surface device, which is the only plugin type Adobe gives real transport API
access to. It loads into the same process as the Transmit plugin and the two talk
directly in memory.
| Path | |
|---|---|
| Windows | C:\Program Files\Adobe\Common\Plug-ins\ControlSurface\PremiereLiveCtrl.acsrf |
| macOS | /Library/Application Support/Adobe/Common/Plug-ins/ControlSurface/PremiereLiveCtrl.bundle |
This is what makes transport work when Premiere Pro is behind another window: the commands go through the SDK, not through the keyboard.

Confirm the plugin loaded by opening Preferences → Control Surface — the device is listed there.
That list shows the device as PremiereLive, the project's internal name. The Transmit device, the Setup window, the installer and the network advertisement all say PreviewMonitor; only this one display string was never renamed. It is the same plugin.
What each button does in Premiere Pro
| Phone button | Premiere Pro command |
|---|---|
| Play/Pause | Toggles playback on the active sequence |
| Step forward / back one frame | Step Forward 1 Frame / Step Back 1 Frame |
| Go to In point | Go to In |
| Go to Out point | Go to Out |
The two outer buttons are In point and Out point, not sequence start and end. They execute Go to In and Go to Out, so on a sequence where you have marked a range they jump to that range, not to the first and last frame. On a sequence with no In/Out set they land where you would expect.
The reserved large-step opcodes map to Premiere Pro's own "many frames" commands and the reserved shuttle opcodes drive the transport suite's shuttle, equivalent to J / K / L. Nothing in the app sends them.
Play/pause takes a different route on each platform, for the same reason: Adobe's transport call resolves which sequence to play from the foreground window, so it silently does nothing when Premiere Pro is in the background. On Windows the plugin marshals the call onto a Premiere-owned thread with an explicit target; on macOS it posts the app-scoped L and K shortcuts, choosing the direction from the real play state. Both work with Premiere Pro behind another window.
After Effects: the AEGP bridge
After Effects gets the video picture from exactly the same Transmit plugin, so the live image behaves identically. Transport is where it differs.
After Effects has no Control Surface host, so PremiereLiveCtrl never loads
there. A separate plugin, PremiereLiveAE.aex, fills the role using the AEGP
API.
PremiereLiveAE.aex ships in neither installer and does not exist on macOS
at all. On Windows you have to place it by hand; on macOS After Effects there is
no bridge, and every button falls back to keystrokes.
What works with the bridge installed
| Phone button | After Effects behavior |
|---|---|
| Play/Pause | Toggles the RAM preview by posting Space to After Effects' panel window |
| Step forward / back one frame | Moves the front comp's playhead by one frame, through the AEGP API |
| Go to In point | Jumps to the comp's first frame |
| Go to Out point | Jumps to the comp's last whole frame |
Frame stepping and the two jumps use the real API, so they are exact and work regardless of which window has focus.
The outer two buttons behave differently here. In Premiere Pro they are genuinely Go to In and Go to Out; the After Effects bridge has no in/out marks to honor, so it seeks to the composition's first frame and its last whole frame instead. The button labels on the phone still read Go to In point and Go to Out point.
Play/pause is a keystroke because After Effects exposes no preview API. The bridge posts Space straight to After Effects' panel window rather than through the system input queue, so it does not need After Effects in front — it works with After Effects minimized. When After Effects is backgrounded, the bridge flips the application's active flag first, then sends the key a moment later, because After Effects suspends its preview engine when it loses activation.
Installing PremiereLiveAE.aex by hand
The file is produced by a Windows build of the plugin. Copy it into After Effects' own plug-ins folder — not the shared MediaCore folder the Transmit plugin lives in.
Create a folder named PremiereLive inside
C:\Program Files\Adobe\Adobe After Effects <year>\Support Files\Plug-ins.
PremiereLiveAE.aex into it. Confirm the administrator prompt.
After Effects scans this folder recursively, so the file works from a subfolder — which keeps it easy to find and remove later.
Nothing in the Setup window reports whether the bridge loaded. To confirm it, use
the plugin's own log: After Effects writes plugin-ae.log, and the bridge logs a
line containing PremiereLiveAE loaded at startup. See
Logs and diagnostics.
The keystroke fallback
If no bridge is loaded — the Control Surface plugin is missing or has not
connected yet, or After Effects has no .aex — the plugin synthesizes the host's
default keyboard shortcuts instead.
| Phone button | Key |
|---|---|
| Play/Pause | Space |
| Step forward / back one frame | → / ← |
| Go to In point / Out point | Shift+I / Shift+O |
(The reserved large-step and shuttle opcodes map to Shift+→ / Shift+← and J / K / L on this path. No shipping build sends them.)
On Windows these are injected into the system input queue with SendInput,
exactly as if you had pressed the key yourself. That means the host application
must be the foreground window. If Premiere Pro is behind your browser, or the
Setup window itself has focus, the keystroke lands somewhere else. This is the
shipping state for After Effects, because no installer places the .aex.
On macOS the events are posted as NSEvents into the host application's own event queue instead, so the foreground barrier does not apply the same way — the host does not have to be frontmost. One exception: Space is panel-scoped in Premiere Pro's default shortcut set and needs a live window to receive it, so if Premiere Pro is inactive or fully minimized the plugin brings it forward before sending. The step and jump keys never do that.
These are Premiere Pro's shortcuts, and they are sent unchanged in every host. In
After Effects without the bridge, → and ← nudge the selected layer in time
instead of stepping the playhead — After Effects steps frames with Page Down and
Page Up. The picture on the phone does not change, so there is no sign anything
happened, and Undo is the only way back. Deselect all layers in After Effects
before using the phone's transport, or install PremiereLiveAE.aex.
The fallback also assumes you have not remapped those keys. If you use a custom keyboard layout in Premiere Pro, the buttons follow your remapping, because the host resolves the key itself. The Control Surface path does not have this problem — it names commands, not keys.
When nothing happens
If the buttons do nothing at all, work through
Transport does nothing. The two
most common causes are the host not being in the foreground on Windows with no
Control Surface plugin installed, and After Effects without the .aex.
Last updated on
Trusted iPhones
How pairing works — the 6-digit code on first connection, silent token reconnects afterwards, where the trust store lives, and how to reset it.
Two Hosts on One Machine
Running Premiere Pro and After Effects side by side — separate ports, names, logs and trust stores — plus what happens with two monitors live at once.