- On Roku:
Settings → Network → About → note IP Address - Example IP:
10.0.0.154
curl -v http://<ROKU_IP>:8060/query/device-infoIf curl doesn’t work (Windows PowerShell):
Invoke-WebRequest -Uri "http://<ROKU_IP>:8060/query/device-info" -Method GET -Verbose✅ Confirm:
- Response status is
200 - XML is returned
<ecp-setup-mode>isdefaultorpermissive
On Roku:
Settings → System → Advanced System Settings → Control by Mobile Apps / External Control → Network Access- Set to Permissive
curl -v -d '' http://<ROKU_IP>:8060/keypress/HomeIf curl doesn’t work (Windows PowerShell):
Invoke-WebRequest -Uri "http://<ROKU_IP>:8060/keypress/Home" -Method POST➡ Roku should go back to its Home screen.
Note: On Roku TVs you must set network access to Permissive. Some Roku TVs won’t show the full XML return.
- Download from nodejs.org
- Run installer → accept defaults (includes
npm)
node -v
npm -vIf you get a script execution error:
- Close PowerShell
- Open PowerShell as Administrator
- Run:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserEnter Y when prompted.
npx create-expo-app roku-remote --template blank
cd roku-remotenpx expo start- Browser will open with a QR code
- Open Expo Go on your phone → scan QR
Edit App.js — delete all code and paste:
import { View, Button } from "react-native";
export default function App() {
const rokuIp = "10.0.0.154"; // Replace with your Roku IP
function goHome() {
fetch(`http://${rokuIp}:8060/keypress/Home`, { method: "POST" });
}
return (
<View style={{ flex: 1, justifyContent: "center" }}>
<Button title="Go Home" onPress={goHome} />
</View>
);
}➡ Press the button → Roku should return to Home.