System requirements
The Makefile build and deploy targets require the following tools on your development machine:| Tool | Minimum | Purpose |
|---|---|---|
make | Any | Runs zip, install, pkg, check, and clean targets |
zip | Any | Creates out/GlobalTV.zip from project sources |
curl | Any | Uploads the ZIP to the Roku device via HTTP multipart POST |
rm | Any | Used by make clean to remove the out/ directory |
grep | Any | Used by make check and make install to parse responses |
sed | Any | Used by make install to display error output on failure |
- macOS / Linux
- Windows
make, zip, curl, rm, grep, and sed are available by default on most macOS and Linux systems. No additional setup is needed.Roku device requirements
Developer mode
Sideloading requires your Roku device to be in developer mode. Activate it with this remote sequence: Home × 3 → Up × 2 → Right → Left → Right → Left → Right This opens the Developer Settings screen where you enable the installer and set a password. That password is theROKU_PASS value you pass to make install.
Developer mode persists across reboots but is cleared if you factory-reset the device or perform certain firmware updates. Re-enable it using the same key sequence if it stops working.
Firmware and resolution
| Requirement | Value |
|---|---|
| SceneGraph version | rsg_version=1.3 (declared in manifest) |
| Supported resolutions | FHD (1920×1080) and HD (1280×720) — ui_resolutions=fhd,hd |
supports_input_launch | 1 — required for deep link support |
roDeviceInfo.GetDisplayMode().
Backend requirements
GlobalTV Roku communicates with a configurable backend server. The server list inAppConstants.brs defines the endpoints the app will try:
source/AppConstants.brs.
Required endpoints
All paths below are relative to the selected backend base URL.GET /health
GET /health
Purpose: Server reachability probe. The app sends this request before every major operation to confirm the backend is up.Timeout: 2500 ms (
TIMEOUT_HEALTH)Expected response: Any HTTP 2xx response is treated as healthy.POST /api/v1/app/devices/handshake
POST /api/v1/app/devices/handshake
Purpose: Device registration handshake. Called at startup to register the Roku device with the backend and retrieve device-specific configuration.Timeout: 12000 ms (
TIMEOUT_HTTP)GET /auth/{user}/{pass}
GET /auth/{user}/{pass}
Purpose: User authentication. The app substitutes the actual username and password into the path template.Path template:
/auth/{user}/{pass}Timeout: 15000 ms (TIMEOUT_AUTH)Auth failure codes handled:| Code | Meaning |
|---|---|
| 401 | Invalid credentials |
| 403 | Access forbidden |
| 404 | User not found |
| 460 | Network down |
| 470 | Account inactive |
| 471 | Password changed |
GET /auth/{user}/{pass}/playlist/m3u8/hls
GET /auth/{user}/{pass}/playlist/m3u8/hls
Purpose: Fetches the authenticated M3U8/HLS playlist for the logged-in user. The app parses this playlist to build the channel list and category grid.Path template:
/auth/{user}/{pass}/playlist/m3u8/hlsTimeout: 12000 ms (TIMEOUT_HTTP)GET /api/v1/app/ads/active
GET /api/v1/app/ads/active
Purpose: Returns the currently active ad snapshot. Polled every 10 seconds (
ADS_POLL_MS=10000) while the app is running.Timeout: 12000 ms (TIMEOUT_HTTP)POST /api/v1/app/metrics/track
POST /api/v1/app/metrics/track
Purpose: Metrics and usage event tracking.Timeout: 12000 ms (
TIMEOUT_HTTP)Ads backend
The app uses a dedicated ads service separate from the main backend. The base URL is configured inAppConstants.brs:
| Path | Purpose |
|---|---|
/app/devices/handshake | Ads service device registration |
/app/ads/active | Active ad snapshot poll |
/app/impressions/events/batch | Batch impression event reporting |
The ads backend can be toggled via
ADS_USE_DEDICATED=true and ADS_HANDSHAKE_ENABLED=true in AppConstants.brs. When disabled, the app falls back to the main backend for ad data.Retry behavior
| Constant | Value | Description |
|---|---|---|
RETRY_MAX | 3 | Maximum HTTP retry attempts per request |
SERVER_LAN_FORCE_RETRIES | 3 | Extra retries forced for the LAN server |
NET_RETRY_MS | 30000 | Wait time before retrying after a network failure |
Network requirements
| Requirement | Details |
|---|---|
| LAN connectivity | The Roku device and your development machine must be on the same local network for sideloading via make install |
| Internet access | Required to reach https://admin.globaltv.lat and https://ads.globaltv.lat in production |
| Port 80 (HTTP) | Used by the Roku Developer Application Installer at http://<ROKU_IP>/plugin_install |
| Port 8080 | Used by the Roku telnet interface for genkey when generating signing keys for make pkg |