Configuration
Thunder uses a JSON configuration file to modify the its behaviour. By default it looks for a config file in /etc/Thunder/config.json on Linux, although a custom path can be specified at launch.
When building Thunder, it will generate a default config file based on the options provided to CMake at configure-time using the generic config builder here: https://github.com/rdkcentral/Thunder/blob/master/Source/Thunder/GenericConfig.cmake
This section documents the available options for Thunder. This is different from the plugin-specific configuration which is documented elsewhere.
Note
Any options that are children of a parent option are documented as parent.child. E.G parentOption.childOption = true equates to the following JSON
{
"parentOption":{
"childOption":true
}
}
Configuration Options
| Option Name | Description | Data Type | Default | Example |
|---|---|---|---|---|
| model | Friendly name for the device Thunder is running on. Can be overridden with the MODEL_NAME env var |
string | - | My STB |
| port | The port Thunder will listen on for HTTP(S) requests. | integer | 80 | 9998 |
| binding | The interface Thunder will bind to and listen on. Set to 0.0.0.0 to listen on all available interfaces. |
string | 0.0.0.0 | 127.0.0.1 |
| interface | The network interface Thunder will bind on. If empty, will pick the first appropriate interface. | string | - | eth0 |
| prefix | URL prefix for the REST/HTTP endpoint | string | Service | |
| jsonrpc | URL prefix for the JSON-RPC endpoint | string | jsonrpc | |
| persistentpath | Directory to store persistent data in. Each plugin will have an associated directory underneath this corresponding to the callsign of the plugin. |
string | - | /opt/thunder/ |
| datapath | Read-only directory plugins can read data from. Each plugin will have an associated directory underneath this corresponding to the callsign of the plugin. |
string | - | usr/share/thunder |
| systempath | Directory plugin libraries are installed and available in | string | - | /usr/lib/thunder/ |
| volatilepath | Directory to store volatile temporary data. Each plugin will have an associated directory underneath this corresponding to the callsign of the plugin |
string | /tmp | /tmp/ |
| proxystubpath | Directory to search for the generated proxy stub libraries | string | - | /usr/lib/thunder/proxystubs |
| postmortempath | Directory to store debugging info (worker pool information, debug data) in the event of a plugin or server crash. If breakpad is found during build, will store breakpad mindumps here |
string | /opt/minidumps | /opt/minidumps |
| communicator | Socket to listen for COM-RPC messages. Can be a filesystem path on Linux for a Unix domain socket, or a TCP socket. For unix sockets, the file permissions can be specified by adding a | followed by the numeric permissions |
string | /tmp/communicator|0777 | 127.0.0.1:4000 |
| redirect | Redirect incoming HTTP requests to the root Thunder URL to this address (please note it must contain the resource that is required e.g. index.html ) | string | http://127.0.0.1/Service/Controller/UI/index.html | http://127.0.0.1/Service/Controller/UI/index.html |
| idletime | Amount of time (in seconds) to wait before closing and cleaning up idle client connections. If no activity occurs over a connection for this time Thunder will close it. | integer | 180 | 180 |
| softkillcheckwaittime | When killing an out-of-process plugin, the amount of time to wait after sending a SIGTERM signal to the process before checking & trying again | integer | 3 | 3 |
| hardkillcheckwaittime | When killing an out-of-process plugin, the amount of time to wait after sending a SIGKILL signal to the process before trying again | integer | 10 | 10 |
| legacyinitalize | Enables legacy Plugin initialization behaviour where the Deinitialize() method is not called on if Initialize() fails. For backwards compatibility | bool | false | false |
| defaultmessagingcategories | See "Messaging configuration" below | object | - | - |
| defaultwarningreportingcategories | See "Warning Reporting Configuration" below | array | - | - |
| process.user | The Linux user the Thunder process runs as | string | - | myusr |
| process.group | The Linux group the Thunder process runs under | string | - | mygrp |
| process.priority | The nice priority of the Thunder process | integer | - | 0 |
| process.policy | The linux scheduling priority of the Thunder process. Valid values are: Batch, FIFO, Idle, RoundRobin, Other |
string | - | OTHER |
| process.oomadjust | The OOM killer score (see here for more info) | integer | - | 0 |
| process.stacksize | The default stack size in bytes for spawned threads. If not set or 0, will use to Linux defaults | integer | - | 4096 |
| process.umask | Set the Thunder umask value | integer | - | 077 |
| input.locator | If using Thunder input handling. Socket to receive key events over | string | /tmp/keyhandler|0766 | - |
| input.type | If using Thunder input handling. Input device type (either device (/dev/uinput) or virtual (json-rpc api) |
string | Virtual | Device |
| input.output | If using Thunder input handling. Whether input events should be re-output for forwarding | bool | true | - |
| configs | Directory to search for plugin config files | string | If not set, will default to <thunder-config-directory>/plugins (e.g. /etc/Thunder/plugins) |
/etc/thunder/plugins |
| ethernetcard | Using the MAC address of this interface, Thunder will generate a unique identifier |
string | - | eth0 |
| plugins | Array of plugin configurations. Not recommended - each plugin should have its own config file. Normally only used for Controller plugin configuration |
array | - | - |
| environments | Array of environment variables to set for the Thunder process. Each item in the array should be an object with key, value, and override properties.Values can be built from path substitutions (e.g. %persistentpath%) |
array | - | [{"name": "FOO", "value": "BAR", "override": true}] |
| exitreasons | Array of plugin exit/deactivation reasons that should result in the postmortem handler being triggered (e.g. to create minidump, dump worker thread status) | array | - | ["Failure","MemoryExceeded","WatchdogExpired"] |
| messagingport | By default, the messaging engine sends log/trace messages over a unix socket. Provide a TCP port here to use that port instead if desired | int | - | 3000 |
| processcontainers.logging | Path for container logs if using process container. Behaviour will vary depending on container backend | string | - | - |
| linkerpluginpaths | Array of additional directories to search for .so files | array | - | - |
| observe.proxystubpath | Directory to monitor for new proxy stub libraries. If libraries are added during runtime, Thunder will load these new proxystubs | string | - | /root/thunder/dynamic/proxystubs |
| observe.configpath | Directory to monitor for new plugin configuration files. If config files are added during runtime, Thunder will load them | string | - | /root/thunder/dynamic/config |
| hibernate.locator | Configuration for the process hibernation feature (alpha) | string | - | - |