• Quick Start
  • Booting
  • Platform
  • Portals
  • References
    • API Reference TOI3
    • IIP Reference
  • Resources
ARRIS Enterprises, Inc. Confidential Information

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 Secondary 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 number 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 diagnostic software.
TblShowSplash Yes
No
Enables or disables if the splash should be displayed when there is a valid TBL present.
WifiWizardDisabled Yes
No
Specifies if the WiFi wizard should be display or not during boot up.
WifiWPSDisabled Yes
No
Specifies if WPS should 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?, TblShowSplash?, 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 TblShowSplash (#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://<username:password@>[server name or ip]<:port>/[path/to/file]

User name and password can be percent-encoded and is used for basic access authorization. This feature is only supported in DBL version 6.7 and newer.

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.

    
<?xml version="1.0"?>
<!DOCTYPE StbConfig SYSTEM "stbconfig.dtd">
<StbConfig>
<BootParams>
  <KernelUrl>http://www.example.com/bootimage</KernelUrl>
  <KernelVersion>1.0</KernelVersion>
  <SplashUrl>http://www.example.com/splashimage</SplashUrl>
  <SplashVersion>1.0</SplashVersion>
</BootParams>
<PermanentParams>
  <StatusScreenColor>0,0,0</StatusScreenColor>
</PermanentParams>
</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.


#
#!/usr/bin/python
# Copyright (c) 2016 ARRIS Enterprises, Inc. All rights reserved.
# This program is confidential and proprietary to ARRIS Enterprises, Inc.
# (ARRIS), and may not be copied, reproduced, modified, disclosed to others,
# published or used, in whole or in part, without the express prior written
# permission of ARRIS.

# This is an example CGI-BIN script for hosting boot images for HTTP boot
# See the documentation page booting/methods/http_boot.html for more information

import os
import traceback

def generate_stbconfig(server, image, splash):
  out = """<?xml version="1.0"?>
<!DOCTYPE StbConfig SYSTEM "stbconfig.dtd">
<StbConfig>
<BootParams>
  <KernelUrl>%s/%s</KernelUrl>
  <KernelVersion>1.0</KernelVersion>
  <SplashUrl>%s/%s</SplashUrl>
  <SplashVersion>1.0</SplashVersion>
</BootParams>
<PermanentParams>
  <StatusScreenColor>0,0,0</StatusScreenColor>
</PermanentParams>
</StbConfig>
"""
  return out % (server, image, server, splash)

def parse_qs(qs):
  d = {}
  for item in qs.split('&'):
      name, value = item.split('=')
      if name in d:
          d[name].append(value)
      else:
          d[name] = [value]
  return d

serial_db = {'1931690851': 'kreatv-bi-special_4302.bin'}
product_db = {'arris-vip4302wbt-dev': ('kreatv-bi-default_4302.bin',
                                     'splash-4302.bmp')}
output = ''
try:
  http_server = 'http://%s' % os.getenv('SERVER_ADDR')
  parameters = parse_qs(os.getenv('QUERY_STRING'))

  default_bi, splash = product_db[parameters['product'][0]]
  image = serial_db.get(parameters['serial'][0],
                        default_bi)
  output += generate_stbconfig(http_server,
                               image,
                               splash)
  output = 'Content-type: text/xml\n\n' + output
except Exception, e:
  output = 'Status: 500 Internal Server Error\n'
  output += 'Content-type: text/html\n\n'
  output += '<html><body>HTTP/1.1 500 Internal Server Error\n'
  output += '<br>%s</body></html>' % traceback.format_exc()

print output

5.1.p5

Copyright (c) 2017 ARRIS Enterprises, LLC. All Rights Reserved. ARRIS Enterprises, LLC. Confidential Information.