Sie sind auf Seite 1von 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.

Das könnte Ihnen auch gefallen