This is an old revision of the document!


SiliconDust TECH manual

Documentation relating to the commercial-grade TECH product line from SiliconDust.

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.

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\”

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

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 <id> get help
hdhomerun_config <id> get <item>
hdhomerun_config <id> set <item> <value>
hdhomerun_config <id> scan <tuner> [<filename>]
hdhomerun_config <id> save <tuner> <filename>
hdhomerun_config <id> upgrade <filename>

The discover command will find devices that are on the same subnet as the host:

hdhomerun_config discover

The “<id>” shown above represents a unique identifier for a device, this can be either Device ID, or IP address:

hdhomerun_config <device id> get help
hdhomerun_config <ip address> 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.

The get/set options supported by a specific device can be queried using the get help command:

hdhomerun_config <id> get help

Example output:

/card/status					Get status of CableCARD (6CC only)
/oob/channel <modulation>:<freq>		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					<config> 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|"<ip> <mask> <gw> <dns>"	Get/set system IP address
/sys/model					Get/set model string
/sys/restart					<resource> Restart device/component
/sys/version					Get firmware version
/tuner<n>/channel <modulation>:<freq|ch>	Get/set channel
/tuner<n>/channelmap <channelmap>		Get/set channelmap
/tuner<n>/debug					Get tuner debug information
/tuner<n>/filter "0x<nnnn>-0x<nnnn> […]"	Get/set tuner PID filter
/tuner<n>/lockkey				Get/set tuner locking
/tuner<n>/plotsample				Get raw plotsample data from tuner
/tuner<n>/program <program number>		Get/set MPEG program
/tuner<n>/streaminfo				Get list of programs on current channel
/tuner<n>/status				Get tuner status
/tuner<n>/target <ip>:<port>			Get/set stream target
/tuner<n>/vchannel <vchannel>			Get/set virtual channel number (6CC only)
/tuner<n>/vstatus				Get/set subscription/protection status (6CC only)

To run a channel scan:

Format: hdhomerun_config <id> scan /tuner<n> [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.

To set a channel use the set channel command:

Format: hdhomerun_config <id> set /tuner<n>/channel <modulation>:<frequency>
Format: hdhomerun_config <id> set /tuner<n>/channel <modulation>:<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 <id> get /sys/features

To stop the tuner set the channel to none:

Format: hdhomerun_config <id> set /tuner<n>/channel none
Example: hdhomerun_config FFFFFFFF set /tuner0/channel none

To set a virtual channel use the set vchannel command:

Format: hdhomerun_config <id> set /tuner<n>/vchannel <virtual channel>
Example: hdhomerun_config FFFFFFFF set /tuner0/vchannel 702

To stop the tuner set the vchannel to none:

Format: hdhomerun_config <id> set /tuner<n>/vchannel none
Example: hdhomerun_config FFFFFFFF set /tuner0/vchannel none

The basic signal information can be obtained by using the get status command:

Format: hdhomerun_config <id> get /tuner<n>/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 <device id> get /tuner<n>/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 <id> get /tuner<n>/streaminfo
Example: hdhomerun_config FFFFFFFF get /tuner0/channel streaminfo

The output format is:

<program number>: <virtual major>.<virtual minor> [<name>] [(<flags>)]

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).

TECH3 and later supports automatic PID filtering by program number or virtual channel number:

Format: 	hdhomerun_config <id> set /tuner<n>/program <program number>
		hdhomerun_config <id> set /tuner<n>/program <virtual channel number>
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 <id> set /tuner<n>/program "<program number> tvct_from_pmt=<virtual major>.<virtual
minor>(<name>)"
Example: hdhomerun_config <id> set /tuner0/program "3 tvct_from_pmt=11.2(TEST)"
  • Last modified: 2026/03/24 06:04