====== SiliconDust TECH manual ======
Documentation relating to the commercial-grade TECH product line from SiliconDust.
===== Hardware =====
==== Ethernet ====
Connect the Ethernet port(s) to a network switch. On models with multiple ports, all ports must be connected in order for all tuners to be accessible. A single port can be directly connected to the network interface on a PC to access that specific device. All ports are auto-crossover so a standard Ethernet cable can be used.
===== Additional Tools and Software =====
====Firmware====
Firmware downloads: https://www.silicondust.com/support/tech/
====Windows====
Download and install the latest Windows release of the HDHomeRun software: https://download.silicondust.com/hdhomerun/hdhomerun_tech_windows.exe
The HDHomeRun Setup wizard is optional.
When the installation process is complete it is recommended that the HDHomeRun program directory be added to the PATH so that the hdhomerun_config utility can be run from a cmd prompt. The default program directory is “C:\Program Files\Silicondust\HDHomeRun\”
====Linux====
Download and extract the libhdhomerun archive.
Run "make" to compile hdhomerun_config (systems that use a non-GNU make by default may need to install and use "gmake" instead).
Copy hdhomerun_config to /usr/local/bin
===== Command Line Utility (hdhomerun_config) =====
Open a command prompt or terminal window and change directory to the HDHomeRun installation directory: "C:\Program Files\Silicondust\HDHomeRun\"
The list of supported commands can be obtained by running hdhomerun_config without any parameters:
hdhomerun_config discover
hdhomerun_config get help
hdhomerun_config get -
hdhomerun_config set
-
hdhomerun_config scan []
hdhomerun_config save
hdhomerun_config upgrade
==== Discover devices on the network ====
The discover command will find devices that are on the same subnet as the host:
hdhomerun_config discover
==== Sending commands to a specific device ====
The “” shown above represents a unique identifier for a device, this can be either Device ID, or IP address:
hdhomerun_config get help
hdhomerun_config get help
To address by Device ID the device must be on the same subnet as the host.
A Device ID of FFFFFFFF can be used as a wild card for the first device found on the network. Do not use this syntax if there are multiple devices on the network, as the device used will be random based on discovery order, which may change between commands.
===== Supported Commands =====
The get/set options supported by a specific device can be queried using the get help command:
hdhomerun_config get help
Example output:
/card/status Get status of CableCARD (6CC only)
/oob/channel : Get/set out of band channel (6CC only)
/oob/debug Get out of band channel debug info (6CC only)
/oob/status Get out of band channel status info (6CC only)
/sys/boot Get/set boot configuration
/sys/copyright Get copyright information
/sys/debug Get/set system debug information
/sys/features Get system feature information
/sys/hwmodel Get system hardware model string
/sys/ipaddr dhcp|" " Get/set system IP address
/sys/model Get/set model string
/sys/restart Restart device/component
/sys/version Get firmware version
/tuner/channel : Get/set channel
/tuner/channelmap Get/set channelmap
/tuner/debug Get tuner debug information
/tuner/filter "0x-0x […]" Get/set tuner PID filter
/tuner/lockkey Get/set tuner locking
/tuner/plotsample Get raw plotsample data from tuner
/tuner/program Get/set MPEG program
/tuner/streaminfo Get list of programs on current channel
/tuner/status Get tuner status
/tuner/target : Get/set stream target
/tuner/vchannel Get/set virtual channel number (6CC only)
/tuner/vstatus Get/set subscription/protection status (6CC only)
==== Channel scan ====
To run a channel scan:
Format: hdhomerun_config scan /tuner [log filename]
Example: hdhomerun_config FFFFFFFF scan /tuner0 scan0.log
This command will scan all channels on the selected channel map plus any additional channel maps associated with the selected channel map. All standard modulation types for the selected channel map are tested.
When a digital channel is found it will identify the programs on the channel.
The log filename is optional; if included it will log to the given filename.
==== Tuning a physical channel ====
To set a channel use the set channel command:
Format: hdhomerun_config set /tuner/channel :
Format: hdhomerun_config set /tuner/channel :
Example: hdhomerun_config FFFFFFFF set /tuner0/channel auto:651000000
Example: hdhomerun_config FFFFFFFF set /tuner0/channel auto:60
To auto-detect the modulation type use “auto” for the modulation.
Supported modulation types can be queried with the get sys-features command:
hdhomerun_config get /sys/features
To stop the tuner set the channel to none:
Format: hdhomerun_config set /tuner/channel none
Example: hdhomerun_config FFFFFFFF set /tuner0/channel none
==== Tuning a virtual channel (TECH3-CC only) ====
To set a virtual channel use the set vchannel command:
Format: hdhomerun_config set /tuner/vchannel
Example: hdhomerun_config FFFFFFFF set /tuner0/vchannel 702
To stop the tuner set the vchannel to none:
Format: hdhomerun_config set /tuner/vchannel none
Example: hdhomerun_config FFFFFFFF set /tuner0/vchannel none
==== Checking the signal strength ====
The basic signal information can be obtained by using the get status command:
Format: hdhomerun_config get /tuner/status
Example: hdhomerun_config FFFFFFFF get /tuner0/status
Example output:
ch=qam:33 lock=qam256 ss=83(-10dBmV) snq=90(29dB) seq=100 bps=38807712 pps=0
* ch = channel requested
* lock = actual modulation detected
* ss = signal strength.
* snq = signal to noise quality (MER).
* seq = symbol error quality (based on the number of uncorrectable digital errors detected).
* bps = raw channel bits per second.
* pps = packets per second sent through the network.
More advanced information can be obtained by using the get debug command:
Format: hdhomerun_config get /tuner/debug
Example: hdhomerun_config FFFFFFFF get /tuner0/debug
Example output:
tun: ch=qam:33 lock=qam256 ss=84 snq=88 seq=100 dbg=22081-6930
dev: resync=0 overflow=0
ts: bps=38809216 ut=94 te=0 miss=0 crc=0
flt: bps=38809216
net: pps=0 err=0 stop=0
Each line contains a prefix to indicate the type of data, followed by the values.
* tun = tuner status
* see above section
* dev = device status
* ts = transport stream
* bps = bits per second
* ut = utilization percentage (100% is filled to capacity)
* te = transport error counter (uncorrectable reception error)
* miss = missed packet counter (jump in sequence numbers)
* crc = crc error counter
* flt = results after pid filtering
* bps = bits per second
* net = network status
* pps = packets per second
* err = packets or TS frames dropped before transmission.
* stop = reason for stopping the stream
The counters are reset to zero upon a channel change, but may indicate a small number of errors caused before the tuner locks on the channel. As a result, diagnostics should be based on the change in values over time, and not the initial values.Detecting the programs on a physical channel:
The device will detect the programs (sub-channels). Use the get streaminfo command to query the detected programs:
Format: hdhomerun_config get /tuner/streaminfo
Example: hdhomerun_config FFFFFFFF get /tuner0/channel streaminfo
The output format is:
: . [] [()]
Example output:
3: 20.1 KBWB-HD
4: 20.4 AZTECA
Digital cable does not always provide the channel name or virtual channel number:
1: 0.0
2: 0.0 (encrypted)
3: 0.0 (control)
It may take several seconds after setting the channel for the stream information to be fully populated (depending on how long the channel takes to lock and how often the stream information is sent by the broadcaster/cable provider).
==== Filtering by program (sub-channel) ====
TECH3 and later supports automatic PID filtering by program number or virtual channel number:
Format: hdhomerun_config set /tuner/program
hdhomerun_config set /tuner/program
Example: hdhomerun_config FFFFFFFF set /tuner0/program 3
hdhomerun_config FFFFFFFF set /tuner0/program 11.2
When filtering by program the MPEG TS tables are generated by the device. The result is a valid single-program transport stream.
The program filter is cleared when a set channel or a set filter command is received.
**Advanced:** By default the PAT and PMT are generated. To also generate a ATSC-style TVCT use:
hdhomerun_config set /tuner/program " tvct_from_pmt=.()"
Example: hdhomerun_config set /tuner0/program "3 tvct_from_pmt=11.2(TEST)"
==== Filtering by PID ====
The TECH supports arbitrary hardware PID filtering:
Format: hdhomerun_config set /tuner/filter
Example: hdhomerun_config FFFFFFFF set /tuner0/filter "0x0000-0x1FFF"
hdhomerun_config FFFFFFFF set /tuner0/filter "0x0000 0x0030-0x0033 0x1FFB"
When filtering by PID the stream is filtered but otherwise unmodified.
The filter is cleared to pass-all (0x0000-0x1FFF) when a set channel command is received.
==== Saving a stream ====
The hdhomerun_config command can be used to automate the process of saving to the local filesystem:
Format: hdhomerun_config save /tuner
Example: hdhomerun_config FFFFFFFF save /tuner0 capture.ts
While saving the stream, a single period “.” will be displayed every second. Errors will be indicated by
a letter.
Example output:
............n...............................n..........ts..........
-- Video statistics --
23323 packets recieved, 2 network errors, 1 transport errors, 1 sequence errors
**Advanced:** A filename of “null” indicates no file should be created, allowing the use of the save command as a diagnostic tool.
**Advanced:** “-” may be used as a filename to indicate standard output, allowing the save command to be used as a pipe on supported platforms.
Example: hdhomerun_config FFFFFFFF save /tuner0 - | vlc -
==== Streaming to a target machine ====
Set the target IP address and port number using the set target command:
Format: hdhomerun_config set /tuner/target udp://:
Format: hdhomerun_config set /tuner/target rtp://:
Example: hdhomerun_config FFFFFFFF set /tuner0/target udp://192.168.1.100:5000
Example: hdhomerun_config FFFFFFFF set /tuner0/target rtp://192.168.1.100:5000
The target machine must be listening on the given UDP port. The TECH3 will automatically clear the target if a ICMP port unreachable message is received when sending to a unicast address. To override this, add no_clear to the target.
Format: hdhomerun_config set /tuner/target "udp://: no_clear"
Format: hdhomerun_config set /tuner/target "rtp://: no_clear"
Example: hdhomerun_config FFFFFFFF set /tuner0/target "udp://192.168.1.100:5000 no_clear"
Example: hdhomerun_config FFFFFFFF set /tuner0/target "rtp://192.168.1.100:5000 no_clear"
A global broadcast (255.255.255.255), subnet broadcast, or multicast target can be specified however care must be taken to ensure that the traffic will not cause problems with other devices on the network.
If the local network is bridged to a wireless network then the AP will typically transmit at a low broadcast speed saturating the wireless network.
The time-to-live (TTL) defaults to 64. To configure a lower TTL use the following format (quotes required):
Format: hdhomerun_config set /tuner/target "udp://: ttl="
Format: hdhomerun_config set /tuner/target "rtp://: ttl="
Example: hdhomerun_config FFFFFFFF set /tuner0/target "udp://192.168.1.100:5000 ttl=8"
Example: hdhomerun_config FFFFFFFF set /tuner0/target "rtp://192.168.1.100:5000 ttl=8"
==== Example: Streaming to VLC ====
Run VLC: Media, Open Network Stream. Select UDP/RTP. Specify port 5000.
Discover the device:
hdhomerun_config discover
Run a channel scan:
hdhomerun_config FFFFFFFF scan /tuner0 scan0.log
Set the physical channel:
hdhomerun_config FFFFFFFF set /tuner0/channel auto:651000000
Check sub-programs:
hdhomerun_config FFFFFFFF get /tuner0/streaminfo
Select a sub-program:
hdhomerun_config FFFFFFFF set /tuner0/program 3
Set the target:
hdhomerun_config FFFFFFFF set /tuner0/target udp://:5000
===== HTTP Streaming (TECH3-CC only) =====
TECH3-CC models can be used to stream via HTTP (unicast only) to VLC or other clients.
Format: http://:5004/auto/v
Example: http://10.10.10.2:5004/auto/v721
===== Lineup file (TECH3-CC only) =====
TECH3-CC units support virtual channel lineup information transmitted by the cable provider and received via the CableCARD. This is available in XML and JSON format.
http:///lineup.xml
http:///lineup.json
===== Datacast operation =====
TECH3 units support Datacast TCP/IP over OTA broadcast. Datacasting often provides news, weather, traffic, stock market, and other information which may or may not relate to the program[s] it is carried with. An electronic program guide is usually included. Datacast TCP-IP packets are reassembled and then routed to the LAN port.
Example:
Discover the device:
hdhomerun_config discover
Set the physical channel:
hdhomerun_config FFFFFFFF set /tuner0/channel auto:651000000
Set the datacast PID:
hdhomerun_config FFFFFFFF set /tuner0/filter 0x0A00
Set the target:
hdhomerun_config FFFFFFFF set /tuner0/target datacast
===== Using /sys/boot =====
The /sys/boot variable allows the TECH unit to automatically set variables at startup, allowing you to preserve settings across power outages or simply set the power on defaults.
The syntax for the /sys/boot consists of multiple lines of text; a variable name followed by a single space and then the value: (there should not be any space before the variable name)
...
Example (save as boot.txt):
/tuner0/channelmap us-cable
/tuner0/channel 103
/tuner0/program 4
To store the configuration to the device:
Format: hdhomerun_config set /sys/boot - < filename
Example: hdhomerun_config FFFFFFFF set /sys/boot - < boot.txt
Changes will be applied the next boot; to execute the new /sys/boot immediately:
Format: hdhomerun_config execute
Example: hdhomerun_config FFFFFFFF execute
==== Static IP assignment ====
A static IP address can be configured using the following command (the quotes are required as shown):
Format: hdhomerun_config set /sys/ipaddr " "
Example: hdhomerun_config 169.254.34.98 set /sys/ipaddr "10.10.20.43 255.255.255.0 10.10.20.1"
Note: The TECH requires a gateway when used to stream multicast, even if on the same subnet.
==== Reverting to DHCP ====
The TECH can be configured for DHCP operation (default) using the following command:
Format: hdhomerun_config set /sys/ipaddr dhcp
Example: hdhomerun_config 169.254.34.98 set /sys/ipaddr dhcp
===== Setting the channel map =====
The channel map is a non-volatile configuration option that is used to set the channel to frequency table, to configure the channel scan table, and to optimize the auto-modulation detection.
GUI: The channel map can be set for each tuner by running HDHomeRun Config (GUI).
Command line: The channel map can be set for each tuner using the following command:
Format: hdhomerun_config set /tuner/channelmap
Example: hdhomerun_config 10001000 set /tuner0/channelmap us-cable
Example: hdhomerun_config 10001000 set /tuner1/channelmap us-cable
Channel maps supported by HDHR-TECH-US hardware:
^ Name ^ Description ^ Location ^
| us-bcast | Digital Antenna (ATSC). | US, Canada |
| us-cable | Digital Cable - Normal frequency layout. | US, Canada |
| us-hrc | Digital Cable - HRC frequency layout. | US, Canada |
| us-irc | Digital Cable - IRC frequency layout. | US, Canada |
Channel maps supported by HDHR-TECH-EU hardware:
^ Name ^ Description ^ Location ^
| au-bcast | Digital Antenna (Australia). | Australia |
| au-cable | Digital Cable (Australia). | Australia |
| eu-bcast | Digital Antenna (Europe). | Europe, New Zealand |
| eu-cable | Digital Cable (Europe). | Europe, New Zealand |
| tw-bcast | Digital Antenna (Taiwan). | Taiwan |
| tw-cable | Digital Cable (Taiwan). | Taiwan |