Skip to main content

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 KeyTypeDescription
localProxyUrlstringFull proxy base URL, e.g. "http://192.168.1.100:8888". Takes precedence over localIpAddress and localProxyPort.
localIpAddressstringIP address of the machine running the capture proxy. Leave empty or absent to disable proxying.
localProxyPortstringPort 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
note

The SDK re-reads these registry keys on every request — changes take effect immediately without relaunching the channel.

caution

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.

note

Request headers are never logged, as they may contain sensitive user credentials.

Registry Key​

Registry KeyValuesDescription
maestroHttpLogs"true" / anything elseSet 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
note

Like the proxy keys, maestroHttpLogs is re-read on every request — you can toggle it at any point without restarting the channel.