| Summary | Roku app that streams from a local Stash server instance. | |
| Repository | https://github.com/MrRedBeard/Stash-Roku-App |
Stash Roku App
Roku app that streams from a local Stash server instance
I like the interface of Stash more than any other streaming server I have tried and it just works
Screenshot
Stash Server
Developer Instructions
Roku Developer Mode
Home (Γ3), Up (Γ2), Right, Left, Right, Left, Right
![]()
Roku CEC/ARC Debug Menu
![]()
Sequence: Home Γ5 β Down β Left β Up β Up β Up
- Shows HDMI-CEC devices connected and ARC audio negotiation logs.
Roku Reboot Shortcut
Home Γ5 β Up β Rewind β Rewind β Fast Forward β Fast Forward
![]()
![]()
![]()
![]()
![]()
![]()
![]()
- Quick reboot without unplugging
Roku Ads Menu
![]()
Home (Γ4), Up, Right, Down, Left, Up
- In the resulting menu, find βCycle scrollable adsβ and set it to βAlways Disabledβ.
- Find βCycle home screen ad banner serverβ and change it to βDemo 3β.
- Restart your Roku to see the changes.
Roku Network Menu
![]()
Home Γ5 β Up β Down β Up β Down β Up
- Check Wi-Fi signal, link speed, channel, and other diagnostics.
Roku Hidden System Info Panel
![]()
Home Γ5 β Up β Right β Down β Left β Up
- build number, model ID, serial, uptime, memory, temperature.
Roku Platform / Hardware Menu
![]()
![]()
![]()
![]()
![]()
Home Γ5 β Fast Forward β Pause β Rewind β Pause β Fast Forward
- Access CPU / temperature / memory stats, Wi-Fi radio power settings.
Dev Setup
npm install
chmod +x scripts/*.sh
Stash Server
Stash API Key (Requires authentication to be turned on but you can generate a key then remove auth)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJzdGFzaCIsInN1YiI6IkFQSUtleSIsImlhdCI6MTc2MDM2NzgxNX0.AtUO0Rnt707OeDR5gfFr7b-Roe4TA5soMNX-nFVHjcc
TVs
- MB http://192.168.1.189/
- Office http://192.168.1.235
Dev Interface for Screenshots
http://192.168.1.235/plugin_inspect
Launch app on TV, upload package, enter password and click screenshot
Test connection to Roku
curl -v -u "rokudev:roku" "http://192.168.1.235/plugin_install" 2>&1 | sed -n '1,20p'
Build
npm run build; # bsc will now find bsconfig.json and stop whining
npm run package; # zips to out/app.zip using your scripts
export ROKU_IP=192.168.1.235; export ROKU_PASS='roku';
npm run sideload; # pushes to Developer Installer
Launch + console
npm run build; # bsc will now find bsconfig.json and stop whining
npm run package; # zips to out/app.zip using your scripts
export ROKU_IP=192.168.1.235; export ROKU_PASS='roku';
npm run sideload
curl -d '' "http://$ROKU_IP:8060/launch/dev"
nc "$ROKU_IP" 8085
Tail
npm run tail
Common Errors
Console connection is already in use.
- ps aux | grep βncβ
- look for βncβ like
username 799080 0.0 0.0 5844 2976 pts/1 T 10:05 0:00 nc 192.168.1.235 8085 - kill -9 ######
Test Stash Graph API
curl -s -X POST "http://192.168.1.232:9999/graphql" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "ApiKey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJzdGFzaCIsInN1YiI6IkFQSUtleSIsImlhdCI6MTc2MDM2NzgxNX0.AtUO0Rnt707OeDR5gfFr7b-Roe4TA5soMNX-nFVHjcc" \
--data-binary '{"query":"query GetScenes($filter: FindFilterType!, $scene_filter: SceneFilterType){ findScenes(filter:$filter, scene_filter:$scene_filter){ scenes{ id title duration } } }","variables":{"filter":{"page":1,"per_page":5},"scene_filter":{}}}'
curl -s -X POST "http://192.168.1.232:9999/graphql" \
-H "Content-Type: application/json" -H "Accept: application/json" \
-H "ApiKey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJzdGFzaCIsInN1YiI6IkFQSUtleSIsImlhdCI6MTc2MDM2NzgxNX0.AtUO0Rnt707OeDR5gfFr7b-Roe4TA5soMNX-nFVHjcc" \
--data-binary '{"query":"query GetScenes($filter: FindFilterType!, $scene_filter: SceneFilterType){ findScenes(filter:$filter, scene_filter:$scene_filter){ scenes{ id title } } }","variables":{"filter":{"page":1,"per_page":5},"scene_filter":{}}}'
Resources
Roku Icons
Format: The icon must be a PNG file.
Dimensions: The icon must be 320 x 180 pixels.
| UI Resolution | Manifest Value | Width Γ Height | Description / Typical Devices |
|---|---|---|---|
| SD | sd |
720 Γ 480 |
Legacy non-HD devices (rare now) |
| HD | hd |
1280 Γ 720 |
720p Roku devices & HD TVs |
| FHD | fhd |
1920 Γ 1080 |
Full-HD layout grid (recommended) |
| (No UHD token) | (auto-scaled) | (3840 Γ 2160) | 4K TVs upscale FHD UI automatically |
