Debugging
The Maestro Roku SDK provides opt-in debug features for inspecting HTTP traffic during development. These features are controlled by keys written to the devInfo section of the Roku device registry and have no effect unless explicitly enabled — SDK behavior in production is unchanged.
HTTP Capture Proxy
The Roku OS does not support system-level proxy settings. The SDK provides a registry-based mechanism to redirect its HTTP requests through a local capture proxy, so you can inspect SDK traffic in tools like Charles Proxy.
When configured, the SDK rewrites its request URLs to the semicolon form that capture proxies expect:
http://<proxy-host>:<proxy-port>/;<original-url>
Registry Keys
Write the following keys to the devInfo registry section from your channel's startup code:
| Registry Key | Type | Description |
|---|---|---|
localProxyUrl | string | Full proxy base URL, e.g. "http://192.168.1.100:8888". Takes precedence over localIpAddress and localProxyPort. |
localIpAddress | string | IP address of the machine running the capture proxy. Leave empty or absent to disable proxying. |
localProxyPort | string | Port the proxy listens on. Defaults to "8888" if localIpAddress is set and this key is absent. |
Example
Using a direct proxy URL:
sub enableProxy()
regSec = CreateObject("roRegistrySection", "devInfo")
regSec.write("localProxyUrl", "http://192.168.1.100:8888")
regSec.flush()
end sub
Or, using a host and port:
sub enableProxy()
regSec = CreateObject("roRegistrySection", "devInfo")
regSec.write("localIpAddress", "192.168.1.100")
regSec.write("localProxyPort", "8888")
regSec.flush()
end sub
To disable proxying, clear the keys:
sub disableProxy()
regSec = CreateObject("roRegistrySection", "devInfo")
regSec.delete("localProxyUrl")
regSec.delete("localIpAddress")
regSec.flush()
end sub
The SDK re-reads these registry keys on every request — changes take effect immediately without relaunching the channel.
The SDK uses certificate pinning on HTTPS requests (common:/certs/ca-bundle.crt). A man-in-the-middle SSL intercept will not work — configure your capture proxy to use the semicolon pass-through form rather than SSL decryption.
HTTP URL Logging
The SDK can log the URL and HTTP status code of every outbound request and response to the Roku telnet console. This lets you inspect SDK traffic without a capture proxy.
Request headers are never logged, as they may contain sensitive user credentials.
Registry Key
| Registry Key | Values | Description |
|---|---|---|
maestroHttpLogs | "true" / anything else | Set to "true" to print every SDK request and response URL to the device log. |
Example
sub enableHttpLogs()
regSec = CreateObject("roRegistrySection", "devInfo")
regSec.write("maestroHttpLogs", "true")
regSec.flush()
end sub
When enabled, log output appears in the following format:
MAESTRO SDK [HTTP] --> GET https://api.example.com/v1/panels
MAESTRO SDK [HTTP] <-- 200 https://api.example.com/v1/panels
To disable logging, delete or clear the key:
sub disableHttpLogs()
regSec = CreateObject("roRegistrySection", "devInfo")
regSec.delete("maestroHttpLogs")
regSec.flush()
end sub
Like the proxy keys, maestroHttpLogs is re-read on every request — you can toggle it at any point without restarting the channel.