Driver Type
Categories
- Recent Updates
- Access Control
- Amplifier
- A/V Receiver
- Climate and Pool Control
- Disc Player / Changer
- Display
- DSP
- DVR
- Irrigation / Sprinklers
- Lighting Control
- Matrix Switch
- Media Server and Player
- Multi-Room A/V
- Networking
- Power and Rack Management
- Security
- Surveillance
- Teleconferencing
- Training
- Tuner
- Utility
- Video Projector
Driver Type
Categories
- Recent Updates
- Access Control
- Amplifier
- A/V Receiver
- Climate and Pool Control
- Disc Player / Changer
- Display
- DSP
- DVR
- Irrigation / Sprinklers
- Lighting Control
- Matrix Switch
- Media Server and Player
- Multi-Room A/V
- Networking
- Power and Rack Management
- Security
- Surveillance
- Teleconferencing
- Training
- Tuner
- Utility
- Video Projector
Roku Advanced Pro Control
By: David Bowdler
Updated: Aug. 14, 2026
Version: 0.20
Roku Advanced Pro Control
▶ Watch the demo: https://youtu.be/71jtcCLEoFQ — the hosted Web Object remote (keyboard search, swipeable app grid and now playing).
The complete Roku driver for RTI. Full two-way control of Roku streaming players and Roku TVs over the local network — no cloud, no account. It runs two feedback channels at once: the classic ECP API for every command plus Roku’s own instant push channel, so play/pause, the current app and power state update the moment they change.
It also does the thing most Roku drivers cannot: open an app at a specific title, in a single command — no arrow-key macros, nothing to drift out of sync. Verified on hardware from a cold start, with the app already running, and switching from one title straight to another.
Key Features
- Instant push feedback — play / pause, current app and power update the moment they change (Roku’s ECP-2 channel, no polling lag).
- Real-art app grid — live from each Roku, both as an RTI list widget (drop the Roku N Apps tag) and in the hosted web remote; tap to launch.
- Universal search — type a title and the Roku jumps straight to results.
- Find My Remote — beep a lost Roku voice remote from a button.
- Deep linking straight into a title — not just “open Netflix” but “open Netflix at this show”, in one command. Works from cold, with the app already open, and switching title to title — so it suits scheduled and unattended content, not just a button press.
- Deep Link Playing feedback — Roku never reports whether a content id actually resolved, so the driver checks a few seconds after each jump and publishes whether playback really started. Confirm a new content id while you build, and let an unattended screen recover itself.
- Auto-programs RTI templates — transport / navigation use the RTI-standard media tags, so the Movie Player page template wires the whole layout in one drop, including now-playing title, cover art and progress.
- Hosted web remote — a phone / tablet / panel remote served straight off the processor, with a swipeable app carousel, now-playing card and search keyboard. Dedicated single-section Web Objects too (search-only, apps-only, now-playing-only), each themeable with its own colours.
- Roku-TV control — discrete inputs (Tuner / HDMI 1-4 / AV), channel and volume.
- Survives a DHCP address change — enter a Roku’s serial number and, if it is ever given a different IP, the driver finds it on the network, re-binds and reconnects on its own. It searches outward from the last known address, so a Roku that moved nearby is found in seconds. Optional; leave blank for IP-only behaviour.
- A progress bar that tells the truth — some apps (Netflix among them) never report a duration, so a progress bar would sit permanently at zero. The driver publishes Has Duration / No Duration so the bar can be hidden when there is nothing meaningful to show.
- Up to 6 Rokus from one driver instance, each with its own app list and feedback.
- Limited-mode detection — if a Roku’s “Control by mobile apps” privacy setting is blocking control, the driver raises a clear on-screen prompt telling the installer exactly what to change.
Requirements
- Any Roku streaming player or Roku TV on the same local network as the RTI processor.
- On each Roku: Settings > System > Advanced system settings > Control by mobile apps > Network access > Default.
- RTI XP processor. A right-click Discover Rokus option scans the network and fills each Roku’s name and IP automatically.
- Optional but recommended on DHCP networks: enter each Roku’s serial number (Settings > System > About) so the driver can find it again if its IP ever changes.
How It Works
Add the driver, set the number of Rokus and each unit’s name and IP (or run Discover Rokus). Drop the driver’s tags onto your interface, or drop a Roku source / the Movie Player template onto a page to auto-program the standard remote. Point an RTI Web Object at the processor for the hosted phone / tablet remote. Everything is local and instant.
Roku Advanced Pro Control
Version 0.20
Smart Home Programming – smarthomeprogramming.com.au
Overview
Full two-way control of Roku streaming players and Roku TVs over the local network (ECP, no cloud, no account). Instant push feedback plus a live app grid with real channel artwork, now-playing progress, universal search, Find-My-Remote, and a hosted web remote. Controls up to 6 Rokus from one driver instance.
Setup
1. On each Roku enable network control: Settings > System > Advanced system settings > Control by mobile apps > Network access > Default. Rokus ship set to "Limited", which blocks control; the driver detects this and raises the "Control Disabled" event with on-screen guidance.
2. Add the driver in Integration Designer. Set Number of Rokus, then for each Roku enter its Name and IP Address. Tip: right-click the driver and choose Discover Rokus to scan the network and auto-fill names and IPs.
3. Optional but recommended: also enter each Roku's Serial Number (Settings > System > About on the Roku). If the Roku ever changes IP address, the driver finds it again automatically - see "If the Roku changes IP address" below. Leave it blank and the driver behaves exactly as before, using the IP only.
4. Drag the tags below onto your interface (Tag Browser), or drop a Roku source onto a page to auto-program the standard remote.
How tags work
Every command has a Roku parameter (1-6, default Roku 1). Transport tags wire to the first / selected Roku by default; set the parameter in a macro to target a specific Roku. Feedback variables and the App List are per-Roku (Roku 1 ... Roku 6). Drop the Roku N Apps tag on a list widget to get the app grid (with real icons) plus tap-to-launch in one action.
The transport tags use the RTI-standard media tag names, so dropping the built-in Movie Player page template (Page Wizard) auto-programs the whole transport, navigation and now-playing layout in one step. Roku 1's now-playing feedback also carries the standard NP tags (NP Title = current app, NP Cover = app art, NP Elapsed / NP Duration / NP Progress) so the template's now-playing text, progress and cover bind automatically.
Command Tags
Transport
Home – tags "Home", "Menu Home", "Stop" (Roku has no Stop command; Stop maps to Home, which exits/stops playback)
Up – tag "Up"
Down – tag "Down"
Left – tag "Left"
Right – tag "Right"
OK / Select – tag "OK"
Back – tag "Back"
Play / Pause – tags "Play", "Pause"
Scan Reverse – tags "Rev", "Scan Back"
Scan Forward – tags "Fwd", "Scan Forward", "Skip Forward" (Roku has no chapter-skip; Skip Forward maps to scan)
Instant Replay – tags "Instant Replay", "Skip Back"
Info / * – tag "Info"
Backspace – tag "Backspace"
Enter – tag "Enter"
Search (key) – tag "Search"
Volume Up – tag "Volume Up"
Volume Down – tag "Volume Down"
Volume Mute – tag "Mute"
Power On – tag "Power On"
Power Off – tag "Power Off"
Power Toggle – tag "Power Toggle"
Channel Up (Roku TV) – tag "Channel Up"
Channel Down (Roku TV) – tag "Channel Down"
Input Tuner / HDMI 1-4 / AV (Roku TV) – tags "Input Tuner", "Input HDMI 1".."Input HDMI 4", "Input AV 1"
Press and Hold (wire to Button Down / Button Up for smooth scan and repeat)
Key Hold Down – tag "Roku Hold Down"
Key Hold Up – tag "Roku Hold Up"
Apps and Content
App List / App Select (per Roku) – tag "Roku N Apps" (drop on a list widget)
Launch App by id – tag "Launch App"
Launch App by name – tag "Launch App Name"
Launch Deep Link (app + content id + media type) – tag "Deep Link"
Universal Search + Launch – tag "Search Launch"
Type Text (into a focused field) – tag "Send Text"
Extras
Find My Remote – tag "Find Remote" (beeps a Roku voice remote with a built-in speaker)
System
Reconnect – tag "Reconnect"
Refresh State – tag "Refresh"
Refresh App List – tag "Refresh Apps"
Remote Logging On / Off / Toggle – tags "Remote Logging On", "Remote Logging Off", "Remote Logging Toggle"
Deep Linking – jump straight to a show or movie
The "Deep Link" tag opens an app AT a specific title, instead of just opening the app at its home screen. It is a single command – no arrow keys, no timing, nothing to drift. This is the reliable way to build a "Movie Night" button, or an unattended content rotation.
Launch Deep Link takes four values
Roku – which player (Roku 1 to Roku 6)
App ID – the app's numeric id, for example 12 for Netflix
Content ID – the id of the title inside that app (see below)
Media Type – one of: movie, series, season, episode, live
Finding an App ID
Drop the "Roku N Apps" tag on a list widget and the driver lists every installed app, or open the web remote and use the app grid. App ids are the same on every Roku, so once you have one you can reuse it on any system. Common ids: Netflix 12, Prime Video 13, Disney Plus 291097.
Finding a Content ID
The Content ID is defined by the app, not by Roku. For Netflix, open the title in a web browser and read the number out of the address bar:
netflix.com/watch/80057281 gives Content ID 80057281
Other apps use their own id format. Open the title on that app's website and look for the id in the address.
Important – a wrong Content ID fails silently
If the Content ID is not valid, the Roku still reports success and gives no error at all. It simply opens somewhere else, usually the app's home screen. This looks exactly like a broken driver, and it is the most common reason deep links appear to "miss".
The driver cannot detect this reliably, because Roku never reports it. To help you check a new Content ID while you are building, the driver publishes Deep Link Playing (and its opposite, Deep Link Not Playing) a few seconds after each deep link. That tells you whether playback actually started.
Treat it as information, not as a pass/fail. Some apps open a title's detail page instead of playing straight away, which is correct behaviour and will still report Not Playing. It is most useful when you already expect playback to begin.
If a jump does not start playing
Occasionally a jump will open the app but not start playing, even with a correct Content ID. This is usually the app itself showing something first - a "who is watching" profile screen, or a "still watching?" prompt - which stops playback starting until it is cleared.
The fix is simple: send Home, wait about five seconds, then send the jump again. Leaving the app clears whatever was on screen.
For unattended or timed content it is worth building this into the macro: after a jump, check Deep Link Playing. If it is false and you expected playback, send Home, wait, and repeat the jump once. Jumps that work are unaffected, so this only ever runs when something has actually gone wrong - which on an unattended screen is exactly when nobody is there to notice.
What is supported
Deep linking works whether the app is closed or already running, and you can jump from one title straight to another without closing the app in between. That makes it suitable for unattended rotations and scheduled content.
Reliable on Netflix, Prime Video, Disney Plus and YouTube. Support varies elsewhere, because each app decides whether to implement it. Apple TV is known to be unreliable. If an app does not support deep linking, the "Launch App" tag will still open it normally.
Example
To open Netflix at Stranger Things on Roku 1, set: Roku = Roku 1, App ID = 12, Content ID = 80057281, Media Type = series.
Feedback Variables (per Roku, tag "Roku N ...")
Name (string) – tag "Roku N Name"
Connected (boolean) – tag "Roku N Connected"
Status (string) – tag "Roku N Status"
ECP Mode (string) – tag "Roku N ECP Mode"
Model (string) – tag "Roku N Model"
Location (string) – tag "Roku N Location"
Serial (string) – tag "Roku N Serial"
Is On (boolean) – tag "Roku N Is On"
Not On (boolean) – tag "Roku N Not On"
Power (string) – tag "Roku N Power"
Play State (string) – tag "Roku N Play State"
Is Playing (boolean) – tag "Roku N Is Playing"
Is Paused (boolean) – tag "Roku N Is Paused"
Position (s) (integer) – tag "Roku N Position (s)"
Duration (s) (integer) – tag "Roku N Duration (s)"
Progress % (integer, bind to a gauge) – tag "Roku N Progress %"
Has Duration (boolean) – tag "Roku N Has Duration"
No Duration (boolean) – tag "Roku N No Duration"
Deep Link Playing (boolean) – tag "Roku N Deep Link Playing"
Deep Link Not Playing (boolean) – tag "Roku N Deep Link Not Playing"
Note: not every app tells Roku how long the content is. Netflix, for example, never reports a duration, so Duration and Progress % stay at 0 while it plays. Use Has Duration on a progress bar's Visible property to hide the bar when there is nothing meaningful to show, or No Duration to show a "playing" indicator in its place. The hosted web remote does this automatically.
Current App (string) – tag "Roku N Current App"
Current App Icon (image) – tag "Roku N App Icon"
App List (list, bind to a list widget) – tag "Roku N Apps"
Roku 1 additionally carries the RTI-standard now-playing tags for media templates: NP Title (current app), NP Cover (app art), NP Elapsed, NP Duration, NP Progress.
Global: Any Roku On, All Rokus Connected, Driver Version. Licence: Licence Valid / Status, Trial Active / Expired / Time Remaining, MAC For Key.
If the Roku changes IP address
On a network using DHCP a Roku can be given a different IP address, usually after a router restart or a power cut. When that happens a driver bound only to the old address stops working, and it does so silently.
If you have entered the Serial Number for a Roku, this driver handles it for you. After three failed checks it searches the local network for the Roku with that serial number, re-binds to the new address and reconnects on its own. It fires the IP Address Changed event when it does.
The search starts at the last known address and works outwards, because a device usually moves to a nearby address. In testing, a Roku that had moved one address away was found in about three seconds. A Roku that has moved right across the network can take a few minutes. It checks one address at a time on purpose, so it never floods the processor.
This only runs when a Roku has genuinely stopped responding. Normal operation is unaffected, and if the Serial Number field is blank nothing changes at all.
Events
Per Roku (tag "Roku N ..."): Connected, Disconnected, Powered On, Powered Off, Playing, Paused, Stopped, Idle, App Changed, Control Disabled, IP Address Changed.
Driver: Control Disabled (any Roku), Trial Warning, Trial Expired, Remote Logging On / Off.
Web Remote
Enable the Web Remote in Driver Properties (on by default, port 9080). Point an RTI Web Object or any browser at http://<processor-ip>:9080/?device=1 for a phone/tablet remote: real-art app carousel, now-playing with progress, search keyboard, and a settings gear to choose background / accent colours and show or hide the Now Playing, Search and Apps sections. Section defaults are set by the Show Now Playing / Search / Apps options in Driver Properties.
Dedicated single-section web objects – add a mode to the URL to show just one section, sized to fill the window (ideal for a long, narrow Web Object strip):
Full remote – http://<processor-ip>:9080/?device=1
Search bar only – http://<processor-ip>:9080/?mode=search
Apps carousel only (fixed horizontal strip, icons fit the height, swipe left/right) – http://<processor-ip>:9080/?mode=apps
Now Playing only (large art, title and progress) – http://<processor-ip>:9080/?mode=np
Per-object colours – add bg and/or accent as bare hex (no # and no encoding), e.g. ?mode=search&bg=05002c&accent=e50914. These override the shared gear theme, so every Web Object can have its own background; text auto-adjusts light/dark. Add &device=N to target Roku N.
Licensing
120-minute trial, then a licence key tied to this processor's MAC address (enter under Licensing; the MAC For Key variable shows the address to quote). Feedback keeps working after the trial; only control is gated.
Support
Smart Home Programming – smarthomeprogramming.com.au – support via the website. Please quote your driver version and the MAC For Key value.
120-minute free trial built in — the driver is fully functional for two hours each time it loads, so you can evaluate it on real hardware.
A permanent licence is tied to your RTI processor’s MAC address. After purchase you receive a licence key generated for that processor; enter it under the driver’s Licensing settings (the MAC For Key variable shows the address to quote). Feedback keeps working after the trial; only control is gated.
Purchase: smarthomeprogramming.com.au/store/