Hdhomerun Development

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

HDHomeRun Development Guide (20110518)

HDHomeRun Software release 20100213 contains enhancements and improvements used in this guide. The latest HDHomeRun drivers, code, and firmware can e found on the Silicondust we site! http!""www.silicondust.com"downloads

I. Scripting - HDHomeRun Con ig


The HDHomeRun can e scripted using the hdhomerun#config command line utilit$. This utilit$ is cross%platform!

&indows, 'inu(, )ac, *+SD, Solaris. 32% it or ,-% it operating s$stems. +ig%endian and little%endian ./0s. /. or em edded platforms.

Compiling hdhomerun_config
!indo"# (pre-compiled)$
Download and install the HDHomeRun software for &indows. The hdhomerun#config.e(e e(ecuta le can e found in the program director$ % default .!1/rogram 2iles1Silicondust1HDHomeRun.

!indo"# (%S&C'')$
Download and e(tract the li hdhomerun archive. .reate a new empt$ pro3ect and include all the .c and .h files. 2rom the pro3ect properties page under .".44 advanced, change the .ompile 5s t$pe to ., clic6 appl$ and then change it ac6 to .44 %% this is a wor6around for a ug in )S7.44. 0nder the 'in6er input, add &s2#32.li and iphlpapi.li as 5dditional Dependencies. .ompile.

C(g"in)*inu+)%,c)-.SD$
Download and e(tract the li hdhomerun archive. Run 8ma6e8

Using hdhomerun_config
The list of supported commands can e o tained $ running hdhomerun#config without an$ parameters! hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config discover <id> get help <id> get <item> <id> set <item> <value> <id> scan <tuner> [<filename>] <id> save <tuner> <filename> <id> upgrade <filename>

Di#cover t/e HDHomeRun device# on t/e net"or0$


The discover command will find HDHomeRun devices that are on the same su net as the host! hdhomerun_config discover

Sending comm,nd# to , #peci ic HDHomeRun$


The 9:id;< shown a ove represents a uni=ue identifier for a HDHomeRun device, this can e either Device >D, or >/ address! hdhomerun_config <device id> get help hdhomerun_config <ip address> get help To address $ Device >D the HDHomeRun must e on the same su net as the host. 5 Device >D of 22222222 can e used as a wild card for the first HDHomeRun device found on the networ6. Do not use this s$nta( if there are multiple HDHomeRun devices on the networ6, as the device used will e random ased on discover$ order, which ma$ change etween commands.

1uer( t/e li#t o option# #upported 2( , HDHomeRun device$


The get"set options supported $ a specific HDHomeRun device can e =ueried using the get help command! hdhomerun_config <id> get help ?(ample output! Supported configuration options: /tuner<n>/channel <modulation>:<freq|ch> /tuner<n>/channelmap <channel map> /tuner<n>/filter !<nnnn>" !<nnnn> [###] /tuner<n>/program <program num'er> /tuner<n>/target <ip>:<port> /tuner<n>/status /tuner<n>/streaminfo /tuner<n>/de'ug /tuner<n>/loc**ey /ir/target <ip>:<port> /lineup/location <countrycode>:<postcode> /lineup/location disa'led /sys/model /sys/features /sys/version /sys/copyright /sys/de'ug Get/set modulation and frequency Get/set channel to frequency map Get/set $%& filter Get/set ($)G program filter Get/set target %$ for tuner &isplay status of tuner &isplay stream info &isplay de'ug info for tuner Set/clear tuner loc* Get/set target %$ for %+ Get/Set location for lineup &isa'le lineup server connection &isplay model name &isplay supported features &isplay firm,are version &isplay firm,are copyright &isplay de'ug info

C/,nnelm,p$
The channelmap is used to configure the auto%modulation detection and channel scan. This should e configured correctl$ for each tuner. The channelmap configuration is stored in non%volatile memor$ so onl$ needs to e set once. format: format: eg: eg: hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config <device id> get /tuner<n>/channelmap <device id> set /tuner<n>/channelmap <channelmap> -------- get /tuner /channelmap -------- set /tuner /channelmap us"'cast

.hannel maps supported $ HDHR%0S hardware! 3,me us-bcast us-cable us- rc us-irc De#cription Digital Antenna (ATSC). Digital Cable - !"C frequency layout. Digital Cable - #"C frequency layout. *oc,tion US, Canada US, Canada US, Canada

Digital Cable - Normal frequency layout. US, Canada

.hannel maps supported $ HDHR%?0 hardware! 3,me De#cription *oc,tion Australia Australia $uro%e, Ne& 'ealand $uro%e, Ne& 'ealand Tai&an Tai&an

au-bcast Digital Antenna (Australia). au-cable Digital Cable (Australia). eu-bcast Digital Antenna ($uro%e). eu-cable Digital Cable ($uro%e). t&-bcast t&-cable Digital Antenna (Tai&an). Digital Cable (Tai&an).

C/,nnel #c,n$
To run a channel scan! format: hdhomerun_config <device id> scan /tuner<n> [<log filename>] eg: hdhomerun_config -------- scan /tuner scan #log This command will scan all channels on the selected channelmap plus an$ additional channelmaps associated with the selected channelmap. 5ll standard modulation t$pes for the selected channelmap are tested. &hen a digital channel is found it will identif$ the programs on the channel. The log filename is optional@ if included it will log to the given filename.

4uning , p/(#ic,l c/,nnel$


To set a channel use the set channel command! format: format: eg: eg: hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config <id> set <id> set --------------/tuner<n>/channel <modulation>:<frequency> /tuner<n>/channel <modulation>:<channel> set /tuner /channel auto:./0 set /tuner /channel auto:.

Supported modulation t$pes can e =ueried with the get s$s%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 eg: hdhomerun_config -------- set /tuner /channel none

C/ec0ing t/e #ign,l #trengt/$


The asic signal information can e o tained $ using the get status command! format: hdhomerun_config <device id> get /tuner<n>/status eg: hdhomerun_config -------- get /tuner /status ?(ample output! ch1qam:22 loc*1qam3/. ss142 snq15

seq10

'ps1244 6603 pps1

ch A channel re=uested loc6 A actual modulation detected ss A signal strength. B0C is appro(imatel$ %12d+m7. sn= A signal to noise =ualit$ D ased on analog signal to noise ratioE. se= A s$m ol error =ualit$ Dnum er of uncorrecta le digital errors detectedE. ps A raw channel its per second. pps A pac6ets per second sent through the networ6.

)ore advanced information can e o tained $ using the get de ug command! format: hdhomerun_config <device id> get /tuner<n>/de'ug eg: hdhomerun_config -------- get /tuner /de'ug ?(ample output! tun: dev: ts: flt: net: ch1qam:22 loc*1qam3/. ss147 snq144 seq10 resync1 overflo,1 'ps1244 530. ut157 te1 miss1 crc1 'ps1244 530. pps1 err1 stop1 d'g133 40".52

?ach line contains a prefi( to indicate the t$pe of data, followed $ the values.

tun A tuner status

see a ove section

dev A device status ts A transport stream


ps A its per second ut A utiliFation percentage D100C is filled to capacit$E te A transport error counter Duncorrecta le reception errorE miss A missed pac6et counter D3ump in se=uence num ersE crc A crc error counter ps A its per second

flt A results after pid filtering

net A networ6 status


pps A pac6ets per second err A pac6ets or TS frames dropped efore transmission. stop A reason for stopping the stream

The counters are reset to Fero upon a channel change, ut ma$ indicate a small num er of errors caused efore the tuner loc6s on the channel. 5s a result, diagnostics should e ased on the change in values over time, and not the initial values.

Detecting t/e progr,m# on , p/(#ic,l c/,nnel$


The HDHomeRun will detect the programs Dsu %channelsE. 0se the get streaminfo command to =uer$ the detected programs! format: hdhomerun_config <id> get /tuner<n>/streaminfo eg: hdhomerun_config -------- get /tuner /channel streaminfo The output format is! <program num'er>: <virtual ma8or>#<virtual minor> [<name>] [9<flags>:] ?(ample output! 2: 3 #0 ;<=<">& 7: 3 #7 ?@A)B? Digital ca le does not alwa$s provide the channel name or virtual channel num er! 0: 3: 2: 9encrypted: 9control:

>t ma$ ta6e several seconds after setting the channel for the stream information to e full$ populated Ddepending on how long the channel ta6es to loc6 and how often the stream information is sent $ the roadcaster"ca le providerE.

5iltering 2( progr,m (#u2-c/,nnel)$


The HDHomeRun supports automatic />D filtering $ program num er! format: hdhomerun_config <id> set /tuner<n>/program <program num'er> eg: hdhomerun_config -------- set /tuner /program 2 &hen filtering $ program the /5T and /)T ta les are generated $ the HDHomeRun. 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: +$ default the /5T and /)T are generated. To also generate a 5TS.%st$le T7.T use! hdhomerun_config <id> set /tuner<n>/program C<program num'er> tvct_from_pmt1<virtual ma8or>#<virtual minor>9<name>:C eg: hdhomerun_config <id> set /tuner /program C2 tvct_from_pmt100#39A)SA:C

5iltering 2( 6ID$
The HDHomeRun supports ar itrar$ hardware />D filtering! format: hdhomerun_config <id> set /tuner<n>/filter <filter> eg: hdhomerun_config -------- set /tuner /filter C ! " !0---C hdhomerun_config -------- set /tuner /filter C ! ! 2 " ! &hen filtering $ />D the stream is filtered ut otherwise unmodified. The filter is cleared to pass%all D0(0000%0(1222E when a set channel command is received.

22

!0--<C

S,ving , #tre,m$
The hdhomerun#config command can e used to automate the process of saving to the local files$stem! format: hdhomerun_config <id> save /tuner<n> <filename> eg: hdhomerun_config -------- save /tuner capture#ts &hile saving the stream, a single period 9.< will e displa$ed ever$ second. 5dditionall$, as of the 200B0,0G release, the hdhomerun#config will detect reception and networ6 errors, replacing the 9.< with an alternative character to indicate the pro lem. ?(ample output! ############n###############################n##########ts########## "" Dideo statistics "" 32232 pac*ets recievedE 3 net,or* errorsE 0 transport errorsE 0 sequence errors Advanced: 5 filename of 9null< indicates no file should e created, allowing the use of the save command as a diagnostic tool. Advanced: 9%< ma$ e used as a filename to indicate standard output, allowing the save command to e used as a pipe on supported platforms. eg: hdhomerun_config -------- save /tuner " | vlc "

Stre,ming to , t,rget m,c/ine$


Set the target >/ address and port num er using the set target command! format: format: eg: eg: hdhomerun_config hdhomerun_config hdhomerun_config hdhomerun_config <id> set <id> set --------------/tuner<n>/target udp://<ip>:<port> /tuner<n>/target rtp://<ip>:<port> set /tuner /target udp://053#0.4#0#0 set /tuner /target rtp://053#0.4#0#0

:/ :/

The target machine must e listening on the given 0D/ port. The HDHomeRun will automaticall$ clear the target if a >.)/ port unreacha le message is received. 5 glo al roadcast D2HH.2HH.2HH.2HHE or su net roadcast can e specified however care must e ta6en to ensure that the roadcast traffic will not cause pro lems with other devices on the networ6. >f the local networ6 is ridged to a wireless networ6 then the 5/ will t$picall$ transmit at a low roadcast speed saturating the wireless networ6.

7+,mple$ Stre,ming to &*C$


Run 7'.! 2ile, Ipen Jetwor6 Stream. Select 0D/"RT/. Specif$ port H000. Discover the HDHomeRun! hdhomerun_config discover Run a channel scan! hdhomerun_config -------- scan /tuner Set the ph$sical channel! hdhomerun_config -------- set /tuner /channel auto:./0 .hec6 su %programs! hdhomerun_config -------- get /tuner /streaminfo scan #log

Select a su %program! hdhomerun_config -------- set /tuner /program 2 Set the target! hdhomerun_config -------- set /tuner /target <ip address of pc>:/

II.!indo"# .D8 Driver#


The HDHomeRun &indows software include +D5 drivers D32% it and ,-% itE for use with third part$ software.

Direct Show filter:


The +D5 driver consists of a single Direct Show filter. The Direct Show filter is registered oth as a 8+D5 Source 2ilter8 DKS.5T?LIRM#+D5#J?T&IRK#T0J?RE and as a 8+D5 Receiver .omponent8 DKS.5T?LIRM#+D5#R?.?>7?R#.I)/IJ?JTE for compati ilit$. Inl$ one instance should e used Dt$picall$ KS.5T?LIRM#+D5#J?T&IRK#T0J?RE.

BDA Demodulator type:


&indows N/ includes the older 9)icrosoft NNNN Jetwor6 /rovider< components. These 9)icrosoft NNNN Jetwor6 /rovider< components will not wor6 with a driver that pu lishes multiple demodulator nodes. &indows ).? 200H and 7ista support oth the 9)icrosoft NNNN Jetwor6 /rovider< components and the newer universal 9)icrosoft Jetwor6 /rovider< component. This newer universal component supports drivers that pu lish multiple demodulator nodes. &indows )edia .enter T7 /ac6 D&).T7/E and later re=uire that a 0S%O5) driver pu lish oth an B7S+ demodulator node and a O5) demodulator node. This re=uirement means a driver that supports 0S%O5) for &).T7/ will not wor6 with the older 9)icrosoft NNNN Jetwor6 /rovider< components. )an$ third part$ +D5 applications continue to use the older 9)icrosoft NNNN Jetwor6 /rovider< components for compati ilit$ with N/. This has the advantage of supporting N/, ut the disadvantage of not eing a le to programaticall$ detect if an 5TS. tuner supports 0S%O5). 0nfortunatel$ the conflicting com inations mean that it is not possi le for a driver to pu lish one set of features. To solve this pro lem the HDHomeRun +D5 driver will auto%detect which networ6 providerDsE are part of the graph and use this detection to select which demodulator nodes to pu lish. >t is recommended that an application attempt to use the universal 9)icrosoft Jetwor6 /rovider< component, and onl$ use the 9)icrosoft NNN Jetwor6 /rovider< components if the universal component fails to instantiate. The following ta le shows the demodulator nodes pu lished $ the HDHomeRun driver ased on the networ6 provider detected. H,rd",re 3et"or0 Demodul,tor 3ode 4(pe 6rovider ATSC ATSC D.,T3C D.,T3C D.,T3C Uni(ersal )SN*D$+,DA+-.S,+D$/*DU0AT*"1)SN*D$+,DA+2A/+D$/*DU0AT*" ATSC D.,T D.,C )SN*D$+,DA+-.S,+D$/*DU0AT*" )SN*D$+,DA+C*4D/+D$/*DU0AT*" if user configures 5Digital Antenna6. )SN*D$+,DA+2A/+D$/*DU0AT*" if user configures 5Digital Cable6. Uni(ersal )SN*D$+,DA+C*4D/+D$/*DU0AT*"1)SN*D$+,DA+2A/+D$/*DU0AT*"

Frequency Offset:
&ith analog T7 the channel fre=uenc$ is t$picall$ e(pressed as the video carrier fre=uenc$. &ith digital T7 the channel fre=uenc$ is t$picall$ e(pressed as the digital center fre=uenc$.

The HDHomeRun hardware uses the digital center fre=uenc$ to tune a channel. 2or 5TS."0S%O5) operation the &indows +D5 s$stem uses the JTS. video carrier fre=uenc$. The HDHomeRun +D5 driver will add 1.PH)HF to the re=uested fre=uenc$ to convert the re=uested fre=uenc$ into the digital center fre=uenc$ needed $ the hardware. 2or D7+T"D7+. operation the &indows +D5 s$stem uses the digital center fre=uenc$. The +D5 driver will pass the re=uested fre=uenc$ directl$ to the hardware.

rogram! "D filtering:


The HDHomeRun supports hardware />D filtering. &hen used this reduces the networ6 andwidth to that of the su %channel eing watched"recorded. This is useful for 0S%O5) as the HDHomeRun will stream B0) ps of networ6 traffic if oth tuners are streaming unfiltered. There are three options for using the hardware />D filter support % filtering $ program num er, custom />D handling, or uilt in &indows />D handling.

5ilter 2( progr,m num2er$


The HDHomeRun driver supports a custom >HDHomeRun#/rogram2ilter interface to allow the +D5 application to select a program Dsu %channelE of interest. The HDHomeRun will automaticall$ detect the re=uired />Ds and set the />D filter appropriatel$. The 5/> consists of two functions % put#/rogramJum er and get#/rogramJum er. 1E 'ocate the KSJID?#+D5#/>D#2>'T?R node of the HDHomeRun tuner. 2E Let the >HDHomeRun#/rogram2ilter interface. 3E Set the program num er D1%,HH3HE $ calling put#/rogramJum er. To pass all programs unfiltered pass 0 as the program num er. To disa le program filtering and return to />D filtering pass %1 as the program num er.

Cu#tom 6ID /,ndling$


The HDHomeRun driver supports the )icrosoft >)/?L2/>D)ap interface for configuring the hardware />D filter. -E 'ocate the KSJID?#+D5#/>D#2>'T?R node of the HDHomeRun tuner. HE Let the >)/?L2/>D)ap interface. ,E .all )ap/>D and 0nmap/>D 5/>s are needed. 2or 5TS., t$picall$ the application will set he />D filter to /5TD0(0000E 4 /S>/D0(122+E on a channel change. Ince the /5T has een detected and processed the application will ena le the /)T />Ds identified in the /5T. Then, once the desired /)T has een detected and processed the application will ena le the ?S />Ds Daudio and videoE identified in the /)T.

.uilt in !indo"# 6ID /,ndling$


XP: The &indows +D5 s$stem supports the />D filtering 5/>s ut does not set the />D filter. XP + MCE 2005: The &indows +D5 s$stem supports the />D filtering 5/>s and will set the />D filter automaticall$ when using the standard &indows +D5 components. Vista: The &indows +D5 s$stem supports the />D filtering 5/>s and will attempt to set the />D

filter automaticall$. There is a ug in one of the standard &indows +D5 components that prevents this from wor6ing. Windows 7: The &indows +D5 s$stem supports the />D filtering 5/>s and will set the />D filter automaticall$ when using the standard &indows +D5 components. HDHomeRun Setup will auto%detect if the IS has wor6ing uilt in />D filter support and can configure the driver appropriatel$. ).? 200H or &indows P is re=uired to test the uilt in &indows hardware />D filter handling. >t is important to test oth changing to a new fre=uenc$ and changing to a different su %channel on the same fre=uenc$. +uilt in &indows />D handling cannot e used with normal N/ Dnon ).? 200HE or normal 7ista Dnon &).T7/E.

US digital ca#le support:


The HDHomeRun +D5 driver supports native 0S%O5) D.learO5)E operation, as well as providing a channel remap mechanism to allow 0S digital ca le to e used with legac$ 5TS.%onl$ applications. The modulation is auto%detected $ the HDHomeRun. The onl$ application change t$picall$ needed to tune a native digital ca le channel is to pass a ca le fre=uenc$ rather than an IT5 fre=uenc$.

%odul,tion$
0S digital ca le providers mostl$ use O5)2H, modulation, however can also use O5),- and"or B7S+ modulation. The HDHomeRun uses the modulation t$pe set $ the application as a hint, ut alwa$s auto% detects the modulation t$pe. The general%purpose method for detecting if a driver supports auto%modulation detection is to =uer$ the 8>+D5#5utoDemodulate8 interface. >f this interface e(ists, call put#5utoDemodulate. >f this function returns IK then the tuner supports automatic modulation detection.

C/,nnel m,p$
There are three common channel num er to fre=uenc$ ta les used $ 0S ca le providers % .a le, >R., and HR.. The .a le and >R. channel maps are almost identical. &ith the e(ception of channels H and ,, all >R. channels are within 2H6HF of the matching .a le channels Dless than the tuning resolution of a t$pical tunerE. To test all 0S ca le channels an application must test all .a le channels, all HR. channels, and >R. channels H and ,. The HDHomeRun driver can operate in one of four modes! Native: the application is responsi le for setting the fre=uenc$. The HDHomeRun will tune the re=uested fre=uenc$ Dplus 1.PH)HF to convert the re=uested fre=uenc$ from JTS. video carrier fre=uenc$ to digital center fre=uenc$E. AutoU Ca!leMa": used for legac$ applications onl$ support the .a le channel map. The HDHomeRun driver will loo6 up the re=uested fre=uenc$ and compare with the channel configuration recorded $ HDHomeRun Setup. The re=uested fre=uenc$ is converted to a HR. or >R. fre=uenc$ as needed.

AutoU Ca!leMa"#ilte$ed: used for legac$ applications that onl$ support the .a le channel map. The HDHomeRun driver will loo6 up the re=uested fre=uenc$ and compare with the channel configuration recorded $ HDHomeRun Setup. The re=uested fre=uenc$ is converted to a HR. or >R. fre=uenc$ as needed. >f the re=uested fre=uenc$ is 6nown not to contain unencr$pted digital video then the channel will e set to 9none<. This will result in a Fero signal strength and speed up the channel scan process. %e&a"#$e'uenc(: used for legac$ applications that support D7+%T ut not D7+%.. The HDHomeRun driver will loo6 up the re=uested IT5 fre=uenc$ in the lineup file DRemapTrigger fieldE. >f a match is found it will tune the actual fre=uenc$ specified in the lineup file. %e&a"P$og$a&: used for legac$ applications that support 5TS. ut not .learO5). The HDHomeRun driver will loo6 up the re=uested IT5 fre=uenc$ in the lineup file DRemapTrigger fieldE. >f a match is found it will tune the fre=uenc$4program specified in the lineup file. &hen operating in this mode the HDHomeRun will generate the /5T, /)T, and 7.T information needed to wor6 with 5TS. onl$ applications. &hen using this mode onl$ ,B channels can e used as there are ,B IT5 fre=uencies Dchannels 2 to ,GE.

C/,nnel identi ic,tion$


0S Digital .a le providers t$picall$ do not sent a 7.T with the stream. >n cases where a 7.T is included in the stream this information often incorrect. Silicondust maintains a lineup server that trac6s unencr$pted digital ca le channels to match with guide data. Silicondust provides access to this information via a we 5/> Q see following 'ineup Server chapter.

Dri$er configuration:
The user specifies the application the$ intend to use with the HDHomeRun when the run HDHomeRun Setup. This selection sets a num er of registr$ options to ad3ust the driver ehavior to suit the specified application. 2or development the 5pplication can e set to 9Ither! Registr$<. This tells HDHomeRun Setup not to overwrite the registr$ options, thus allowing the options to e set manuall$. 2or production please contact Silicondust to have $our application added to the list of user% selecta le applications in HDHomeRun Setup.

Regi#tr($
The +D5 driver configuration is per tuner, stored in! HK?M#'I.5'#)5.H>J?1SI2T&5R?1Silicondust1HDHomeRun1Tuners1:device id;%:tuner inde(; 7alues are case sensitive. 3,me /odel SourceTy%e &,lid &,lue# 4irm&are model string from t e !D!ome"un ard&are. Used by t e ,DA dri(er to configure de(ice s%ecific features. 5Digital Antenna6, 5Digital Cable6, 5Disabled6. Used by !D!ome"un Setu% to enable source s%ecific features3o%tions. Used by t e ,DA dri(er to select auto-modulation grou% if not s%ecified by t e a%%lication. Name of t e source. S ould be set to 5Digital Antenna6, 5Digital Cable6, or 5Disabled6 unless t ere are multi%le directional antennas or multi%le cable systems. Used by !D!ome"un Setu% to manage c annel lineu%s. Used by Dynamic Tuner Allocation feature to identify interc angeable tuners.

Source

Used by ,DA dri(er to select t e lineu% 7/0 file to use & en a lineu%-a&are o%tion suc as AutoUSCable/a% or "ema% mode is enabled. A%%lication ,DADemodulator ,DA;#D4ilter C annel/a%%ing Name of a%%lication 8no&n to !D!ome"un Setu%, or 5*t er9 "egistry6. Used by !D!ome"un Setu% :U# to store user selection. De%recated - not used by dri(er. 5$nabled6 - enable ard&are ;#D filter su%%ort. 5Disabled6 - disable ard&are ;#D filter su%%ort. 5Nati(e6, 5AutoUSCable/a%6, 5AutoUSCable/a%4iltered6, 5"ema%;rogram6, 5"ema%4requency6 - see c annel ma% section under US digital cable su%%ort.

III.*ineup Server
Silicondust maintains a lineup server to trac6 and identif$ antenna and ca le channels. The main focus is on identif$ing unencr$pted digital ca le channels in the 0S. 2or end%customers the lineup information is availa le from the Silicondust we site! http!""www.silicondust.com"hdhomerun"channels 2or application use the lineup information is availa le via a N)'"HTT/S ased we 5/>. u!)c*annel t$ac+ing: The lineup server trac6s and groups su %channels $ comparing the video content using a real% time video hash. )atching is automatic and is not dependent on the fre=uenc$ or the stream la$out. 7ideo matching allows the lineup server to automaticall$ match and trac6 names from 5TS. channels, DT5%identified channels, /S>/%identified channels, and user%identified channels. The server is currentl$ trac6ing G0,000 unencr$pted ca le su %channels and t$picall$ identifies 100,000 tuner%to%tuner video matches per minute. Enc$("ted vs Unenc$("ted: The lineup server uses >%2rame detection from HDHomeRun devices to detect unencr$pted su % channels. This improves the relia ilit$ of reporting which su %channels are unencr$pted. ,ineu" t$ac+ing: The lineup server automaticall$ identifies and trac6s ca le lineups. ?ach lineup is a collection of ca le head%ends with the identical unencr$pted channels, e(cluding on%demand channels. This information is used to locate the correct lineup for a user re=uest for channel identification. A- C: 5TS. Dover the airE channels are validated against a dictionar$ of latitude"longitude, callsign, transport stream >D, and virtual channel num ers. The output of the dictionar$ is the T)S%st$le callsign for matching guide data. A- C $e!$oadcast on ca!le: The lineup server automaticall$ matches over%the%air su %channels with ca le su %channels $ matching the video content. This allows the 5TS. channel name to e applied to the ca le channel without rel$ing on user feed ac6. 'i6ewise if a ca le provider changes the channel la$out the 5TS.%re roadcast channels are automaticall$ detected and named. Co&cast .-A in/o$&ation: The lineup server processes .omcast DT5 information to aid with channel identification. Su %channels identified via .omcast DT5 information are automaticall$ matched with su % channels on non%DT5 ased headends ased on the video content. Use$ /eed!ac+: The lineup server accepts and processes user feed ac6 for trac6ing channels that cannot e automaticall$ identified using 5TS., DT5, or /S>/ matching. Su %channels are automaticall$ matched etween head ends ased on video content. The user feed ac6 is anal$Fed oth at the local level for the specific head%end and at a wider level for all head%ends that roadcast the specific video feed. e$vice: 2or application use the lineup information is availa le via a N)'"HTT/S ased we 5/>.

The we 5/> is availa le for use with HDHomeRun tuners at no cost. 2or non%HDHomeRun tuners the service is availa le for a nominal cost ased on the num er of users. This helps cover andwidth and operating costs. The we 5/> documentation follows.

!e2 86I$ C/,nnel #c,n)n,me re#olution$


>n most cases a D7R application will re=uest name resolution directl$ after a channel scan. This ma$ e due to a user initiated channel scan or ma$ e a ac6ground tas6 that runs a channel scan periodicall$. %e'uest U%,: https!""www.silicondust.com"hdhomerun"lineupuiR.mdA>dentif$/rograms2 %e'uest /o$&at: <F!ml version1C0# C encoding1CGA-"4C standalone1CyesCF> <HineupG%+equest> <Dendor>IDendorJ</Dendor> <?pplication>I?pplicationJ</?pplication> <Bommand>%dentify$rograms3</Bommand> <Gser%&>IGser%&J</Gser%&> [<&evice%&>I&evice%&J</&evice%&>] <Hocation>IBountry codeJ:I$ostcodeJ</Hocation> <$rogram> <(odulation>I(odulationJ</(odulation> <-requency>IBenter frequency >KJ</-requency> <AransportStream%&>IAS%&J</AransportStream%&> <$rogramLum'er>I$rogram num'erJ</$rogramLum'er> <SeenAimestamp>IMMMM"(("&& >>:((:SSJ</SeenAimestamp> </$rogram> <$rogram> <(odulation>I(odulationJ</(odulation> <-requency>IBenter frequency >KJ</-requency> <AransportStream%&>IAS%&J</AransportStream%&> <$rogramLum'er>I$rogram num'erJ</$rogramLum'er> <SeenAimestamp>IMMMM"(("&& >>:((:SSJ</SeenAimestamp> </$rogram> </HineupG%+equest>

7endor! Test string to identif$ the application vendor. 2or e(ample 9Silicondust 0S5<. 5pplication! Te(t string to identif$ the application, version, and platform. 2or e(ample 9HDHomeRun Setup 200G0-1H D&indowsE< .ommand! 9>dentif$/rograms2<. 0ser>D! Llo all$ uni=ue string to identif$ the user"household. T$picall$ this will e the userSs email address or a 3 or - letter a reviation of the product name followed $ the product serial num er Dfor e(ample 92II!123-H,PB<E. >f there are multiple computers in the same household the$ should all return the same 0ser>D. Device>D! Iptional field to specif$ the Device >D of a HDHomeRun if a HDHomeRun is present. 2or e(ample 910100000<. This field can e present multiple times for multiple HDHomeRun devices. 'ocation! Two character >SI countr$ code followed $ the postcode Dcolon separatedE. 2or e(ample 90S!G-0B,<. The >SI countr$ code should e capitaliFed. )odulation! 2or 0S digital ca le the modulation should e one of 9=am2H,<, 9=am,-<, or

9Bvs < Dcase sensitiveE.

2re=uenc$! Digital center fre=uenc$ in HF. 2or e(ample, 0S ca le channel 100 is 9,H1000000<. >f the JTS. video carrier fre=uenc$ is used internall$ $ the D7R application D,-G2H0000 for channel 100E then add 1.PH)HF to get the digital center fre=uenc$. TransportStream>D! 1,% it transport stream >D as detected from the /5T. This ma$ e specified as an integer D91P3<E or in he( D90(005D<E. /rogramJum er! 1,% it program num er from the /5T Dor 7.TE. The values of 0 and ,HH3H are reserved. SeenTimestamp! 0T. time of when the channel"program was detected in 9MMMM%))%DD HH!))!SS< format. 2or a complete channel scan the timestamp for all programs can e set to the time the channel scan was initiated. 5ll detected unencr$pted programs should e sent in the re=uest. The complete set of program information is used to detect the right head%end match.

%es"onse /o$&at: <F!ml version1C0# C encoding1CGA-"4C standalone1CyesCF> <HineupG%+esponse> <Bommand>%dentify$rograms3</Bommand> <$rogram> <(odulation>I(odulationJ</(odulation> <-requency>IBenter frequency >KJ</-requency> <AransportStream%&>IAS%&J</AransportStream%&> <$rogramLum'er>I$rogram num'erJ</$rogramLum'er> [<GuideLame>IGuide nameJ</GuideLame>] [<GuideLum'er>IGuide num'erJ</GuideLum'er>] </$rogram> <$rogram> <(odulation>I(odulationJ</(odulation> <-requency>IBenter frequency >KJ</-requency> <AransportStream%&>IAS%&J</AransportStream%&> <$rogramLum'er>I$rogram num'erJ</$rogramLum'er> [<GuideLame>IGuide nameJ</GuideLame>] [<GuideLum'er>IGuide num'erJ</GuideLum'er>] </$rogram> </HineupG%+esponse>

LuideJame! 0T2%B encoded name of the program Dsu %channelE matching the guide. 2or 0S digital ca le Tri une"Tap2it guide names are provided. This field will e omitted if not 6nown. Special purpose LuideJame results!

9IJD?)5JD< indicates a d$namic program that should default to disa led.

LuideJum er! 9n.n< or 9n< format virtual channel num er. 2or 0S digital ca le the virtual channel num ers are unrelia le for matching Q the virtual channel num er should not e used for channel matching e(cept as a fall% ac6 if the returned LuideJame does not e(ist in the guide. This field will e omitted if not 6nown.

!e2 86I$ Correction) eed2,c0$


>f the application provides a mechanism to manuall$ enter or correct the name of a channel then this information should e sent to the lineup server using the feed ac6 5/>. This feed ac6 is used to improve the results and to avoid overwriting user corrections if the user runs another channel scan. %e'uest U%,: https!""www.silicondust.com"hdhomerun"lineupuiR.mdA>dentif$2eed ac62 %e'uest /o$&at: <F!ml version1C0# C encoding1CGA-"4C standalone1CyesCF> <HineupG%+equest> <Dendor>IDendorJ</Dendor> <?pplication>I?pplicationJ</?pplication> <Bommand>%dentify-eed'ac*3</Bommand> <Gser%&>IGser%&J</Gser%&> [<&evice%&>I&evice%&J</&evice%&>] <Hocation>IBountry codeJ:I$ostcodeJ</Hocation> <$rogram> <(odulation>I(odulationJ</(odulation> <-requency>IBenter frequency >KJ</-requency> <AransportStream%&>IAS%&J</AransportStream%&> <$rogramLum'er>I$rogram num'erJ</$rogramLum'er> <GserGuideLame>IGuide nameJ</GserGuideLame> [<GserGuideLum'er>IGuide num'erJ</GserGuideLum'er>] <Gser(odified>IMMMM"(("&& >>:((:SSJ</Gser(odified> </$rogram> <$rogram> <(odulation>I(odulationJ</(odulation> <-requency>IBenter frequency >KJ</-requency> <AransportStream%&>IAS%&J</AransportStream%&> <$rogramLum'er>I$rogram num'erJ</$rogramLum'er> <GserGuideLame>IGuide nameJ</GserGuideLame> [<GserGuideLum'er>IGuide num'erJ</GserGuideLum'er>] <Gser(odified>IMMMM"(("&& >>:((:SSJ</Gser(odified> </$rogram> </HineupG%+equest>

.ommand! 9>dentif$2eed ac62<. 0serLuideJame! 0T2%B encoded name of the program Dsu %channelE matching the guide. 0serLuideJum er! 9n.n< or 9n< format guide num er for the program Dsu %channelE. This field can e omitted if not 6nown. 0ser)odified! 0T. time of when the user modified the guide name or the guide num er of program Dsu %channelE in 9MMMM%))%DD HH!))!SS< format. Inl$ names that have een user%modified should e sent using this 5/>.

%es"onse /o$&at: <F!ml version1C0# C encoding1CGA-"4C standalone1CyesCF> <HineupG%+esponse> <Bommand>%dentify-eed'ac*3</Bommand> </HineupG%+esponse>

9e( tec/nic,l term# o u#e$


HTT/S to e used for re=uests. N)' encoding to e 0T2%B. The script or D7R application to identif$ itself in the re=uest including the version. Re=uests to the lineup server to e made from the user"client application, not from a central server. Support for the correction"feed ac6 5/> is re=uired if the application provides a wa$ for the user to edit channel names. +usiness and Technical contact information to e registered with Silicondust.

I&.*i2r,r( 86I
The li hdhomerun li rar$ can e used for direct programmatic control of the HDHomeRun. See 9Scripting % HDHomeRun .onfig< for platform compati ilit$ and information on compiling.

Disco$ery A "
The discover$ 5/> is used to find HDHomeRun units on the networ6 % documented in hdhomerun#discover.h. 2or repetitive ac6ground polling use hdhomerun#discover#createDE and hdhomerun#discover#find#devicesDE. 2or less fre=uent use the hdhomerun#discover#find#devices#customDE 5/> provides discover$ using a single call. Jote! the Discover$ 5/> will return the list of HDHomeRun units on the networ6 ut does not indicate the num er of tuners associated with each HDHomeRun unit. This will e addressed in the future. >f this affects $our application please contact supportUsilicondust.com.

De$ice A "
The Device 5/> is the primar$ 5/> for controlling a HDHomeRun tuner % documented in hdhomerun#device.h.

Cre,te$
.all hdhomerun#device#createDE or hdhomerun#device#create#from#strDE to create a device o 3ect. See hdhomerun#device.h for parameters and usage. T$picall$ a device o 3ect will e created for each tuner to e controlled.

Get)Set$
The get"set 5/>s can e used in a similar wa$ to the get"set commands of hdhomerun#config. See hdhomerun#device.h for the complete list of get"set functions. 2or e(ample, to set a channel call! hdhomerun#device#createDE hdhomerun#device#set#tuner#channelDE hdhomerun#device#set#tuner#programDE Jote! for Let functions that return a string the string is valid until another li hdhomerun 5/> call.

&ideo #tre,m$
Iption 1! li hdhomerun video soc6et support! The device%video 5/> handles the video 0D/ soc6et, target configuration, uffering, se=uence chec6ing, etc. 5fter setting the channel call hdhomerun#device#stream#startDE to create the video 0D/ soc6et and start the video service thread. .all hdhomerun#device#stream#recvDE periodicall$ to receive the video stream.

The hdhomerun#device#stream#start"stopDE 5/>s call hdhomerun#device#set#tuner#targetDE internall$ as needed. Iption 2! e(ternal video soc6et support! 2or applications with e(isting 0D/ or RT/ video support use hdhomerun#device#set#tuner#targetDE to set the target to the listening 0D/ port. &hen streaming is no longer re=uired use the same function to set the target to 9none<.

Re#ource loc0$
The resource loc6 5/> is used to prevent conflicts when there are multiple hosts on the networ6 controlling the same set of tuners. 'ow level! use hdhomerun#device#tuner#loc66e$#re=uestDE to re=uest e(clusive control of the tuner. This function will return success D1E if the re=uest was successful, re3ect D0E if the tuner is in use $ anther host, or error D%1E if a communication error occurs. &hen the tuner loc6 is no longer re=uired use hdhomerun#device#tuner#loc66e$#releaseDE to release the resource loc6. The hdhomerun#device#tuner#loc66e$#forceDE 5/> will cause a resource loc6 to e released regardless of which host owns the loc6. This function should onl$ e called if the user has een presented with a dialog and the user has e(plicitl$ re=uested that the loc6 e overridden. The HDHomeRun will self e(pire the resource loc6 if not streaming and no commands are received in a 30s period. >f the host application crashes without releasing the resource loc6 this timeout will allow the tuner to e used again. The e(ception % if the tuner is streaming video and the host has a firewall that prevents >.)/ port unreacha le messages the tuner will not e informed that the video is no longer eing accepted $ the host. Streaming will continue and the tuner will maintain the loc6. To avoid this situation use the Device Selector 5/> to re=uest the resource loc6. This will auto% detect and release dead loc6s % see Device Selector 5/> section elow. Jote! the detection and automatic release of dead resource loc6s is planned to e moved to hdhomerun#device#tuner#loc66e$#re=uestDE. >f this affects $our application please contact supportUsilicondust.com

De$ice Selector A "


The Device Selector 5/> is used to automaticall$ select and loc6 an availa le tuner from a pool of tuners % documented in device#selector.h. 5 pool is t$picall$ all tuners on the local networ6 that have the same signal source.

Setup$
0se hdhomerun#device#selector#createDE to create the selector o 3ect. 0se hdhomerun#device#selector#add#deviceDE to add a device to the selection pool.

4uner #election$
Start! use hdhomerun#device#selector#choose#and#loc6DE to find and loc6 an availa le tuner. Stop! use hdhomerun#device#tuner#loc66e$#releaseDE to release the loc6 when the tuner is no longer re=uired. .hannel change! there are two options for handling the resource loc6 when changing channel!

1E Release the resource loc6 $ calling hdhomerun#device#tuner#loc66e$#releaseDE, then call hdhomerun#device#selector#choose#and#loc6DE to find and loc6 an availa le tuner. 2E Refresh the e(isting loc6 $ calling hdhomerun#device#tuner#loc66e$#re=uestDE. >f the application still holds the resource loc6 the re=uest function will return success D1E. >f the loc6 has een lost at some point ut the tuner is availa le the re=uest function will reac=uire the loc6 and return success D1E. >f the loc6 as een lost at some point and the tuner is now loc6ed $ another host the re=uest function will return us$ D0E. >n this situation the application should call hdhomerun#device#tuner#loc66e$#releaseDE to release the local loc6 state and call hdhomerun#device#selector#choose#and#loc6DE to find another tuner.

&.%odul,tion t(pe#
84SC
ATSC modulation ATSC auto-modulation Jotes! -(sb auto<t

There is onl$ one modulation t$pe for 5TS. % auto,t is an alias for the Bvs modulation t$pe. The auto,t alias was not present in earl$ firmware versions. 0sing 9Bvs < will avoid an$ issues with older firmware. &hen the modulation is not specified or 9auto< is specified the ehavior depends on the firmware version. Ilder firmware versions will test Bvs , =am2H,, and =am,- DslowerE. Jewer firmware versions choose the modulation ased on the channel map set DfasterE! us-bcast auto<t3-(sb

D&.-4
D.,-T -/!= modulation D.,-T @/!= modulation D.,-T </!= modulation D.,-T -/!= auto-modulation D.,-T @/!= auto-modulation D.,-T </!= auto-modulation Jotes! t-qam<> t-qam?< t-q%s8 t@qam<> t@qam?< t@q%s8 t<qam<> t<qam?< t<q%s8 auto-t auto@t auto<t

The HDHomeRun re=uires the channel andwidth to e specified % if the incorrect channel andwidth is specified the HDHomeRun will not loc6. The current HDHomeRun models do auto%modulation detection when tuning D7+%T regardless of which modulation t$pe is specified Die tB=am,-, tB=am1,, and tB=ps6 are all aliases for autoBtE. The HDHomeRun will report the actual modulation in "tuner:n;"status. There is no performance penalt$ for using auto%modulation. &hen the modulation is not specified or 9auto< is specified the modulation is chosen ased on the channel map! eu-bcast au-bcast t&-bcast auto@t (4ABCC/!=) auto-t (4DEBCC/!=) auto@t auto<t

:S-C,2le
US-cable modulation US-cable auto-modulation Jotes! qamFG< qam<> qam auto<c

The auto,c alias was not present in earl$ firmware versions. 0sing 9=am< for auto%modulation will avoid an$ issues with older firmware. &hen the modulation is not specified or 9auto< is specified the ehavior depends on the firmware

version. Ilder firmware versions will test Bvs , =am2H,, and =am,- DslowerE. Jewer firmware versions choose the modulation ased on the channel map set DfasterE! us-cable us- rc us-irc auto<c3qam

D&.-C
D.,-C -/!= modulation D.,-C @/!= modulation D.,-C </!= modulation D.,-C -/!= auto-modulation D.,-C @/!= auto-modulation D.,-C </!= auto-modulation Jotes! a-qamFG<-HHHH a-qam?F--HHHH a-qam<>-HHHH a@qamFG<-HHHH a@qam?F--HHHH a@qam<>-HHHH a<qamFG<-HHHH a<qam?F--HHHH a<qam<>-HHHH auto-c auto@c auto<c

The s$m ol rate is specified as a -%digit decimal num er % the s$m ols"sec divided $ 1000. 2or e(ample, B)HF O5)2H, at ,,G00,000 s$m ols"second is specified as 9aB=am2H,%,G00<. >f the incorrect channel andwidth is specified the HDHomeRun ma$ loc6, however the signal performance ma$ e impacted. >f the incorrect modulation t$pe or s$m ol rate is specified the HDHomeRun will not loc6. &hen D7+%. auto%modulation is specified the HDHomeRun will attempt to tune following the "s$s"dv c#modulation setting. 0p to three modulation strings can e programmed Dspace separatedE and this information is stored in non%volatile configuration memor$ $ the HDHomeRun. 5uto%modulation will not wor6 until the "s$s"dv c#modulation value has een set $ the user. The autoBc, autoPc, and auto,c modes are identical % the HDHomeRun will attempt to tune using the modulation strings from the "s$s"dv c#modulation setting. The channel andwidth is set ased on the modulation strings found in "s$s"dv c#modulation. &hen the modulation is not specified or 9auto< is specified the modulation is chosen ased on the channel map! eu-cable au-cable t&-cable auto-c3auto@c3auto<c auto-c3auto@c3auto<c auto-c3auto@c3auto<c

3on-vol,tile con igur,tion


The "tuner:n;"channelmap and "s$s"dv c#modualtion varia les are store in non%volatile configuration memor$ $ the HDHomeRun. These varia les are intended to e set $ the user during setup"configuration if desired. These varia les should JIT e set $ the /. software on each channel tune.

You might also like