Boot IP-STB with HTTP
Only parts of the HTTP 1.1 specification are implemented, URLs containing non-escaped reserved characters are not supported. Server redirects with code 301, 302 and 303 are supported.
KreaTV HTTP boot is a two step download mechanism where the first step is always an HTTP GET from HTTP server. The second step can be all protocols except from USB, i.e. TFTP, Infocast, Local Storage or HTTP.
The HTTP server address and port is configured via DHCP options, KreaTV boot loader menu or production parameters.
Downloading the StbConfig meta data file in the first step is done by requesting a page from the server's root using the bootcast id, i.e. for
VIP4302WBT
the request will be
http://www.example.com/arris-vip4302wbt-dev
For making the HTTP boot more dynamic and configurable on the server side, the requests to the HTTP server will add product (i.e., bootcastid), serial number, MAC address, boot loader version, software version, splash version and diagnostic image version as parameters to the request, e.g.
http://www.example.com/arris-vip4302wbt-dev?product=arris-vip4302wbt-dev&serial=1931690851&mac=00:02:9b:00:01:02&fw_version=6.3&kernel_version=1.0&splash_version=1.0&diagnostic_version=1.0
In the second step of the KreaTV HTTP boot STB will start to download the splash and boot image with the protocols specified in the meta data file, see Types of URLs in StbConfig below for protocol syntax and StbConfig meta data file example for a meta data file example.
For HTTP protocol in the second step it has the same limitations as the first step and the parameters is also added to the request for making this step scriptable on the server side.
Version handling
The version tags KernelVersion and
SplashVersion are used to determine if a software update is
required. Some devices store the boot image and boot splash
image in flash memory. If a version tag changes, the device will discard the
version stored in flash and download the newer version from the network next
time it boots.
The boot splash image itself does not contain version information and the
version tag SplashVersion can be set arbitrarily.
It is stored together with the boot splash image in flash memory.
The boot image version tag KernelVersion
must match the one stored in the boot image binary.
The boot image version is chosen when a boot image binary is built.
A boot image is built using the
build_boot_image
command. The boot image version is specified using the
--info version parameter.
The command boot_image_version
can be used to retrieve the version of a boot image.
Permanent parameters
HTTP boot allows user parameters to be set in flash. This is done by setting subtags to the tag PermanentParams. Below is a list of the supported parameters as it looks right now. Please keep in mind the supported parameters may change slightly in different DBL versions. See the Std Config meta data file example section for an example.
| Parameter |
Valid values |
Description |
| IPConfigMethod | DHCP Fixed | Defines how the default network interface should be configured, either through DHCP or manually configured (also known as using static/fixed IP). |
| IPAddress | | IP address is used if IPConfigMethod is set to Fixed. |
| Netmask | | Netmask is used if IPConfigMethod is set to Fixed. |
| Gateway | | Gateway is used if IPConfigMethod is set to Fixed. |
| DNS1 | | DNS 1 is used if IPConfigMethod is set to Fixed. |
| DNS2 | | DNS 2 is used if IPConfigMethod is set to Fixed. |
| DhcpTimeout | >0 | DHCP answer timeout in seconds. |
| SplashOrder | 1 - 4, 6 - 7 | A sequence of download protocols used for retrieval of the boot splash. 1 - Bootcast 2 - TFTP 3 - Local storage 4 - SAP (Session Announcement Protocol) 5 - Reserved 6 - HTTP 7 - USB |
| BootOrder | 1 - 4, 6 - 7 | A sequence of download protocols used for retrieval of the boot image. 1 - Bootcast 2 - TFTP 3 - Local storage 4 - SAP (Session Announcement Protocol) 5 - Reserved 6 - HTTP 7 - USB |
| DiagnosticOrder | 1 - 4, 6 - 7 | A sequence of download protocols used for retrieval of the diagnostic boot image. 1 - Bootcast 2 - TFTP 3 - Local storage 4 - SAP (Session Announcement Protocol) 5 - Reserved 6 - HTTP 7 - USB |
| FirmwarelogAddress | | An IP address + port to the log client, e.g. 192.168.0.10:19997 |
| NetconsolelogAddress | | An IP address + port + MAC address to the log client, e.g. 192.168.0.10:19997@00:11:22:33:44:55 |
| Bootcast | | A multicast address to where the meta data file are transmitted. |
| BootcastTimeout | 1 - 255 | Data timeout in seconds for Bootcast, e.g. the maximum time between two multicast data packets. |
| BootcastAttempts | 1 - 255 | The number of attempts before bootcast downloading fails. |
| BootcastId | An arbitrary text string identifying the VIP. | The bootcast id used to identify the correct meta data file, normally on the form <operator>-<VIP model>, for example, arris-vip4302. -dev should be added on development units. |
| IgnoreBootcastVersion | Yes No | If enabled, the image version on the network is not fetched and compared with the image stored in local storage. Can be useful if running without network connection such as some DVB units. |
| TftpServer1 | | Primary TFTP server address. |
| TftpServer2 | | Seconday TFTP server address. |
| TftpServer3 | | Third TFTP server address. |
| TftpServer4 | | Fourth TFTP server address. |
| TftpPoolAttempts | 1 - 255 | The number of attempts for all TFTP servers in the TFTP server pool. |
| TftpNodeAttempts | 1 - 255 | The number of attempts performed by each TFTP server in the TFTP server pool. |
| TftpTimeout | 1 - 255 | TFTP data timeout in seconds to be negotiated by the server. |
| TftpRrqTimeout | 1 - 255 | TFTP read request timeout in seconds. |
| TftpBlockSize | 8 - 65464 | TFTP data block size in bytes to be negotiated with the server. |
| SapAddress | | Sets the multicast address and port for SAP (Session Announcement Protocol). Can also be a DNS name, which will be resolved using DNS. In this case, the SAP multicast address and port is expected in a text record reply from the DNS server. |
| SapTimeout | 1 - 255 | Data timeout in seconds for SAP, e.g. the maximum time between two multicast data packets. |
| SapAttempts | 1 - 255 | The number of attempts before SAP downloading fails. |
| SapId | An arbitrary text string identifying the VIP. | The SAP id used to identify the correct meta data file, normally on the form <operator>.<VIP model>, for example, arris.vip4302. If no SAP id is specified, the default SAP id is based on the bootcast id with slashes replaced by dots. |
| HttpServer | | URL or IP address to the HTTP boot server. |
| HttpPort | 0 - 65535 | Port number for HTTP boot server. |
| HttpTimeout | 1 - 255 | Connection and data timeout in seconds for HTTP requests. |
| HttpAttempts | 1 - 255 | The number of HTTP request attempts before failing. |
| HttpProxy | | Domain name or IP address to a HTTP proxy. If not specified, no HTTP proxy is used. |
| HttpProxyPort | | Port numer for a HTTP proxy. |
| SplashFilename | | Splash filename when using the TFTP protocol. |
| KernelFilename | | Kernel (boot image) filename when using the TFTP protocol. |
| DiagnosticFilename | | Diagnostic image filename when using the TFTP protocol. |
| NtpServerAddress | | IP address to the NTP server. |
| NtpServerList | <IP address>,<IP address>..., <IP address> | Comma separated list of IP addresses to NTP servers. |
| DhcpServerAddress | | IP address of the DHCP server used. |
| IgmpVersion | 0 - 3 | Force the IGMP version on the network interface used. When set to 0, the Linux kernel will auto detect the IGMP version starting with version 3 and fallback to version 2 if not all clients on the same network supports version 3. |
| VendorClassId | | Vendor class ID string used for identifying the VIP model in the DHCP communication, normally on the form <operator>_<VIP model>, for example, ARRIS_VIP4302. This parameter should be a uppercase mirror of BootcastId |
| FrontButtonCode | | A list of colon separated hex values used as key codes for enabled front buttons, e.g. 0x74:0x58:0x67:0x3b:0x3d:0x6a:0x57:0x69:0x6c:0x44. Note: In older box models this list was limited to only 8 buttons and the FrontButtonCodeExt was used to support more buttons (see below). |
| FrontButtonCodeExt | | Deprecated. Was used in conjunction with the FrontButtonCode parameter (see above) to specify additional front button key codes.. |
| FrontButtonHardReset | | Specifies the time in seconds to push the power button before initating a software reset of the system. If not specified, no reset will occur. |
| LedStandbyState | On Off | Defines if the standby led should be active or not during standby. |
| ShowIPSettings | Yes No | Defines if the IP settings submenu is visible in the bootloader menu from the start. |
| ShowAdvancedSettings | Yes No | Defines if the advanced settings submenu is visible in the bootloader menu from the start. |
| AllowSubmenuCodes | Yes No | Defines if the secret codes should be allowed to enable the IP and advanced settings submenus for production units. This parameter is always regarded as enabled for development units. |
| MenuHidden | Yes No | Defines if the bootloader menu will be hidden (disabled) for the user or not. |
| HideTvSystem | Yes No | Defines if the TV system submenu should be hidden for the user or not. |
| InternalProgress | Yes No | Turns on or off the internal progress bar used for showing the boot progress. |
| ProgressbarColor | 0-255,0-255,0-255 | R,G,B value specifying the color to be used for the progress bar. |
| RFFrequency | | Specifies the RF frequency to use on models having an RF modulator. |
| Language | en-US sv-SE nl-NL tr-TR | Specifies the language to use for status and error messages during boot as well as the language used in dialogs and boot menu in the bootloader. |
| StatusScreen | Yes No | Turns status and error messages on or off during boot. |
| StatusScreenColor | 0-255,0-255,0-255 | R,G,B value specifying the color of the status and error messages on screen |
| HideUpdatingMsg | Yes No | Turns on or off the updating status message shown during boot (defined by the message tag <StatusmsgUpdating>). |
| HideNoPwrOffMsg | Yes No | Deprecated, not used. Message removed. |
| InfoScreen | Yes No | Specify if the information dialog should be shown or not, invoked by pressing the info button on the remote during boot. |
| InfoKey | | Additional key code for displaying the information dialog during boot. |
| MenuKey | | Additional key code for activating the boot menu in the bootloader. |
| DiagnosticKey | | Key code for activating the diagnostic image. |
| FactoryReset | Yes No | Enables or disables (grays out) the factory reset button in the boot menu which allows the end user to perform a factory reset. |
| RemoveSoftware | Yes No | Enables or disables (grays out) the remove software button in the boot menu which allows the end user to perform a removal of the splash image, boot image and diagnostic image stored in the unit. |
| BootWithoutNet | Yes No | Specifies if the box should continue to boot if network is not present and no IP information is available. However, network link is always first listened for. This parameter must be enabled when using a 3rd stage boot loader. |
| DvbNetworkId | | Specifies the default DVB network ID to use for software updates using the golden image on DVB enabled units. 65536 (-1) means auto detect. |
| DvbFrequency | | Specifies the default DVB frequency to connect to for software updates using the golden image on DVB enabled units |
| DvbSymbolRate | | Specifies the default DVB symbol rate to use for software updates using the golden image on DVB enabled units. |
| DvbModulation | 16QAM 32QAM 64QAM 128QAM 256QAM | Specifies the default DVB modulation to use for software updates using the golden image on DVB enabled units. |
| IRFrequency | 56,36 | Deprecated. Specifies the IR frequency in kHz to select on boards having multiple IR receivers. |
| IRProtocols | P1[:ID1,...,IDn];...;Pn[:ID1,...,IDn] where ID is a number and P is: KREATVIR SEJIN RSTEP_KPN RSTEP NEC RC5 RCMM | Specifies the IR protocols that should have priority. Entries are separated using semicolon and optional RCU IDs are comma separated after a colon. Example values: KREATVIR RCMM:52,80 KREATVIR;RSTEP:21 |
| IgnoreVci | Yes No | Ignore VCI parameters (Vendor Class Information sent in DHCP option 43). Useful when the DHCP server cannot be used for sending boot parameters such as in local NAT networks. |
| Diagnostic | Yes No | Enables or disables (grays out) the diagnostic button in the boot menu which allows the end user to start a special disgnostic software. |
| WifiWizardDisabled | Yes No | Specifies if the WiFi wizard should be display or not during boot up. |
| WifiWPSDisabled | Yes No | Specifies if WPS shoud be disabled or not. |
| RF4CEPairingDisabled | Yes No | Specifies if RF4CE pairing wizard should be disabled or not. |
| DiagnosticStorageDevice | mtd2 mtd3 | Specifies what storage device the diagnostic image is located. Currently mtd2 and mtd3 refers to the flash and reserved partitions in the local flash memory. mtd3 must only be used if the reserved partition feature is enabled at production time. The reserved partition must use UBIFS. |
StbConfig
StbConfig DTD
<!ELEMENT StbConfig (BootParams, PermanentParams?)>
<!ELEMENT BootParams (KernelUrl, KernelVersion?, SplashUrl?, SplashVersion?. DiagnosticUrl?, DiagnosticUrlVersion?, NfsServerAddress?, NfsRootPath?)>
<!ELEMENT KernelUrl (#PCDATA)>
<!ELEMENT KernelVersion (#PCDATA)>
<!ELEMENT SplashUrl (#PCDATA)>
<!ELEMENT SplashVersion (#PCDATA)>
<!ELEMENT DiagnosticUrl (#PCDATA)>
<!ELEMENT DiagnosticVersion (#PCDATA)>
<!ELEMENT NfsServerAddress (#PCDATA)>
<!ELEMENT NfsRootPath (#PCDATA)>
<!ELEMENT PermanentParams (IPConfigMethod?, IPAddress?, Netmask?, Gateway?, DNS1?, DNS2?, DhcpTimeout?, SplashOrder?, BootOrder?, DiagnosticOrder?, FirmwarelogAddress?, NetconsolelogAddress?, Bootcast?, BootcastTimeout?, BootcastAttempts?, BootcastId?, IgnoreBootcastVersion?, TftpServer1?, TftpServer2?, TftpServer3?, TftpServer4?, TftpPoolAttempts?, TftpNodeAttempts?, TftpTimeout?, TftpRrqTimeout?, TftpBlockSize?, SapAddress?, SapTimeout?, SapAttempts?, SapId?, HttpServer?, HttpPort?, HttpTimeout?, HttpAttempts?, HttpProxy?, HttpProxyPort?, SplashFilename?, KernelFilename?, DiagnosticFilename?, NtpServerAddress?, NtpServerList?, DhcpServerAddress?, IgmpVersion?, VendorClassId?, CurrentColorCoding?, FrontButtonCode?, FrontButtonCodeExt?, FrontButtonHardReset?, LedStandbyState?, ShowIPSettings?, ShowAdvancedSettings?, AllowSubmenuCodes?, MenuHidden?, HideTvSystem?, InternalProgress?, ProgressbarColor?, RFFrequency?, Language?, StatusScreen?, StatusScreenColor?, HideUpdatingMsg?, HideNoPwrOffMsg?, InfoScreen?, InfoKey?, MenuKey?, DiagnosticKey?, FactoryReset?, RemoveSoftware?, BootWithoutNet?, DvbNetworkId?, DvbFrequency?, DvbSymbolRate?, DvbModulation?, IRFrequency?, IRProtocols?, IgnoreVci?, Diagnostic?, WifiWizardDisabled?, WifiWPSDisabled?, WiFiRSSI?, RF4CEPairingDisabled?, DiagnosticStorageDevice?)>
<!ELEMENT IPConfigMethod (#PCDATA)>
<!ELEMENT IPAddress (#PCDATA)>
<!ELEMENT Netmask (#PCDATA)>
<!ELEMENT Gateway (#PCDATA)>
<!ELEMENT DNS1 (#PCDATA)>
<!ELEMENT DNS2 (#PCDATA)>
<!ELEMENT DhcpTimeout (#PCDATA)>
<!ELEMENT SplashOrder (#PCDATA)>
<!ELEMENT BootOrder (#PCDATA)>
<!ELEMENT DiagnosticOrder (#PCDATA)>
<!ELEMENT FirmwarelogAddress (#PCDATA)>
<!ELEMENT NetconsolelogAddress (#PCDATA)>
<!ELEMENT Bootcast (#PCDATA)>
<!ELEMENT BootcastTimeout (#PCDATA)>
<!ELEMENT BootcastAttempts (#PCDATA)>
<!ELEMENT BootcastId (#PCDATA)>
<!ELEMENT IgnoreBootcastVersion (#PCDATA)>
<!ELEMENT TftpServer1 (#PCDATA)>
<!ELEMENT TftpServer2 (#PCDATA)>
<!ELEMENT TftpServer3 (#PCDATA)>
<!ELEMENT TftpServer4 (#PCDATA)>
<!ELEMENT TftpPoolAttempts (#PCDATA)>
<!ELEMENT TftpNodeAttempts (#PCDATA)>
<!ELEMENT TftpTimeout (#PCDATA)>
<!ELEMENT TftpRrqTimeout (#PCDATA)>
<!ELEMENT TftpBlockSize (#PCDATA)>
<!ELEMENT SapAddress (#PCDATA)>
<!ELEMENT SapTimeout (#PCDATA)>
<!ELEMENT SapAttempts (#PCDATA)>
<!ELEMENT SapId (#PCDATA)>
<!ELEMENT HttpServer (#PCDATA)>
<!ELEMENT HttpPort (#PCDATA)>
<!ELEMENT HttpTimeout (#PCDATA)>
<!ELEMENT HttpAttempts (#PCDATA)>
<!ELEMENT HttpProxy (#PCDATA)>
<!ELEMENT HttpProxyPort (#PCDATA)>
<!ELEMENT SplashFilename (#PCDATA)>
<!ELEMENT KernelFilename (#PCDATA)>
<!ELEMENT DiagnosticFilename (#PCDATA)>
<!ELEMENT NtpServerAddress (#PCDATA)>
<!ELEMENT NtpServerList (#PCDATA)>
<!ELEMENT DhcpServerAddress (#PCDATA)>
<!ELEMENT IgmpVersion (#PCDATA)>
<!ELEMENT VendorClassId (#PCDATA)>
<!ELEMENT CurrentColorCoding (#PCDATA)>
<!ELEMENT FrontButtonCode (#PCDATA)>
<!ELEMENT FrontButtonCodeExt (#PCDATA)>
<!ELEMENT FrontButtonHardReset (#PCDATA)>
<!ELEMENT LedStandbyState (#PCDATA)>
<!ELEMENT ShowIPSettings (#PCDATA)>
<!ELEMENT ShowAdvancedSettings (#PCDATA)>
<!ELEMENT AllowSubmenuCodes (#PCDATA)>
<!ELEMENT MenuHidden (#PCDATA)>
<!ELEMENT HideTvSystem (#PCDATA)>
<!ELEMENT InternalProgress (#PCDATA)>
<!ELEMENT ProgressbarColor (#PCDATA)>
<!ELEMENT RFFrequency (#PCDATA)>
<!ELEMENT Language (#PCDATA)>
<!ELEMENT StatusScreen (#PCDATA)>
<!ELEMENT StatusScreenColor (#PCDATA)>
<!ELEMENT HideUpdatingMsg (#PCDATA)>
<!ELEMENT HideNoPwrOffMsg (#PCDATA)>
<!ELEMENT InfoScreen (#PCDATA)>
<!ELEMENT InfoKey (#PCDATA)>
<!ELEMENT MenuKey (#PCDATA)>
<!ELEMENT DiagnosticKey (#PCDATA)>
<!ELEMENT FactoryReset (#PCDATA)>
<!ELEMENT RemoveSoftware (#PCDATA)>
<!ELEMENT BootWithoutNet (#PCDATA)>
<!ELEMENT DvbNetworkId (#PCDATA)>
<!ELEMENT DvbFrequency (#PCDATA)>
<!ELEMENT DvbSymbolRate (#PCDATA)>
<!ELEMENT DvbModulation (#PCDATA)>
<!ELEMENT IRFrequency (#PCDATA)>
<!ELEMENT IRProtocols (#PCDATA)>
<!ELEMENT IgnoreVci (#PCDATA)>
<!ELEMENT Diagnostic (#PCDATA)>
<!ELEMENT WifiWizardDisabled (#PCDATA)>
<!ELEMENT WifiWPSDisabled (#PCDATA)>
<!ELEMENT WiFiRSSI (#PCDATA)>
<!ELEMENT RF4CEPairingDisabled (#PCDATA)>
<!ELEMENT DiagnosticStorageDevice (#PCDATA)>
Types of URLs in StbConfig
[] = Required
<> = Optional
Infocast: infocast://[multicast group]<:port>/[object name]
TFTP : tftp://[server ip]<:port>/[path/to/file]
Local : local://
HTTP : http://[server name or ip]<:port>/[path/to/file]</code>
StbConfig meta data file example
The following example is booting a boot image named bootimage and a splash image called splashimage from http://www.example.com. It is also utilizing the permanent parameters to set the color of status and error messages to black. This file can be placed in your web server root directory and be named to match your bootcast ID, e.g. arris-vip4302wbt-dev. Kernel (i.e. boot image) and splash paths should be set according to Types of URLs in StbConfig.
Example Apache2 configurations
This section contains an python CGI-BIN example script illustrating how to utilize the HTTP request parameters. It is for instance possible to send out certain boot images to STBs with certain serial numbers or MAC addresses. This can be quite handy if friendly test users should receive a different software image.
Simple internal redirect using mod_rewrite
Make sure that AllowOverride All is set in the Apache configuration file and restart the server.
Create the following .htaccess file in your WWW root directory.
RewriteEngine on
RewriteRule ^arris-vip(.*)$ cgi-bin/stbconfig [L]
Simple external redirect using mod_rewrite
Make sure that AllowOverride All is set in the Apache configuration file and restart the server.
Create the following .htaccess file in your WWW root directory.
Rewrit Engine on
RewriteRule ^arris-vip4302wbt-dev$ http://www.example2.com/cgi-bin/stbconfig [R]
Example CGI script
Create the following file, stbconfig, in your cgi-bin directory, remember to make the file executable.