SlideShare a Scribd company logo
1 of 53
Download to read offline
Build your own IPTV head-end
Thomas Kernen



BBC 2013 Release
History & Objectives
 Build an IPTV head-end for my home that would fit my personal lab testing and
 viewing requirements
 In a “production” state but continues to be upgraded with new hardware and
 software
 Word of mouth has led to people being interested in knowing how I did it
 Presentation is designed to help those who wish to build themselves an IPTV
 head-end for their home, office, lab, school, campus, etc...
 Focus of this presentation is on the head-end requirements for streaming live
 radio and TV services and not Video on Demand services or receivers
 All the information in the presentation is provided on an “as is” basis without
 warranties of any kind, either express or implied
Agenda

Planing the Head-End

Building the Head-End

Media Players

Support for IPv6

What needs worked on (IMHO)

References
Planning the Head-End
Introduction
 Evolution of TV viewing from 1 screen/home to multi-screen & multi-viewer environment

 Traditionally users have a single physical source for their TV signal. Now there are multiple
 sources (satellite, cable, terrestrial, IPTV, etc)

 Receivers are evolving quickly. Each generation introduces new and improved features.
 Hard to keep up and usually requires swapping out hardware

 Delinearisation of content means most people want to record and then view it later

 Best “off the shelf” products tend to provide a subset of the features required to support
 the statements above, but then are locked into their own vendor scheme

 Home brew systems aren’t perfect, your own requirements will determine if some or part
 of what follows is of any use to you
Basics of reception of TV services
 In an analogue world, each frequency carries a single service (= TV channel)

 These days virtually all services are transmitted digitally
    “analogue switch off” - ”digital switch over”

 Each frequency typically carries up to 12 different Standard Definition digital TV services
    less for HD services

 Services are modulated on a carrier according to DVB specifications. T and T2 for
 Terrestrial, S and S2 for satellite, C and C2 for cable, ...

 Each modulation type requires a different front-end receiver

 All services on a given frequency are contained within an MPEG-2 Transport Stream
    Multiple Program Transport Stream (MPTS) or Single Program Transport Stream (SPTS)

 And may be individually scrambled (= encrypted)
Basics of Reception of TV services
 Terrestrial or cable source: full RF bandwidth and therefore services are available at the
 output of the wall socket. Multiple receivers can be attached without impacting one
 another
    To receive a transport stream, the receiver must tune to a specific frequency and setup additional
    parameters (RF bandwidth, Symbol Rate, modulation scheme, Guard interval, Forward Error
    Correction, ...)

 With satellite sources, things are more complicated. Different satellites (orbital positions),
 polarisations (Horizontal/Vertical) and bands (low and high) come into play
    To receive a transport stream, the receiver must tune to a specific satellite, frequency, polarisation,
    band and setup additional parameters (Symbol Rate, Forward Error Correction, modulation
    scheme, ...)

 In a classic receiver these additional parameters are normally hidden from the end user
 and may be auto detected or preprogrammed
Basics of Reception of TV services
To receive multiple satellite feeds we need to include a few
components into the reception system

Each Low Noise Block (LNBs) needs 4 outputs to provide the
2 polarisations (horizontal/vertical) for each of the 2 bands (low/
high). This called a quattro LNB

If you need services from 3 different satellites you need 3
LNBs, either mounted on a universal dish that has a bracket
for those 3 orbital positions, or on 2 or 3 separate dishes.

All the outputs of the LNBs need to be wired to a DiSEqC
switch. Different models exist depending on the number of
inputs from the LNBs and outputs to the receivers are required.
Each satellite will be linked to an input number (usually 1 to 16)

Pro systems don’t use DiSEqC since each input is wired to a
L-Band Multichannel multiplexer
Anatomy of a Transport Stream
 Example of the structure of an MPTS

 Service analysed here is BBC ONE HD
   taken from a UK Freeview DVB-T2 multiplex

   satellite and cable use the same overall format

 Transport Stream ID: 16516

 Video PID: 6601

 Audio PIDs: 6602, 6606

 Private Data PIDs: 6605
Scrambled services

 There are many scrambling vendors on the market
    Different content providers use different systems

 Scrambled services are setup to protect access to the content

 These are usually bound to distribution rights for a specific territory

 Some scrambling systems used by content providers may not provide the option of using
 a standalone subscription card but requires to be paired with a specific provided receiver

 Please check with your content provider(s) if their services can be used with a standard
 compatible receiver and what scrambling system is used
Planning your channel line up
 Use one of the numerous databases to identify what services you are interested in

 Make a list of all of them: Frequencies, modulations, scrambling

 Classify by frequencies, transports and modulations = number of required receivers




                                                                                      Source: King Of Sat
Differences between receivers and HEs
 Consumer receiver tunes to the service the user is currently viewing. In a head-end all
 services that need to be received are permanently tuned to

 Consumer receiver is designed for descrambling the service currently viewed. In a head-
 end all services in the transport stream need to be descrambled. This requires special
 Conditional Access Modules that can descrambled multiple services at the same time.
 Prefer CAM vendors with professional series such as Aston and SMiT

 Consumer receiver with IP capabilities will typically stream a single channel. In a head-end
 we stream all the services

 To allow any end device in the network to receive any service at any point in time:
   We need multiple receivers tuned to all the channels to be able to receive, descramble and stream
   around the clock
Building the head-end
What you need to build your own HE
 Hardware:
   A server case and a motherboard with enough slots for all your receivers (PCI and PCIe)

   Receivers for your different sources (Analogue, DVB-T/T2, DVB-S/S2, DVB-C/C2)

   Conditional Interface (CI) daughterboards for descrambling content protected services

   Conditional Access Modules (CAM) for the daughterboards

   Subscription cards for the different services you wish to descramble

 Software:
   A modern Linux distribution (Ubuntu for example) with a recent kernel

   Video4Linux (V4L) DVB drivers and utilities from Linuxtv.org

   DVB streaming applications such as DVBlast

   A decent understanding of how Linux works and how to get applications running
Hardware
Good server grade motherboard with enough PCI and PCIe slots for all your receivers
  My initial (2009) design was a Supermicro C2SBC-Q (5x PCI, 2x PCIe)

  Update: Use new generation motherboards with up to 7 PCIe slots on a single board for density

Save on PCI/PCIe slots:
  Use dual or quad tuner cards whenever possible

     Update: New cards with 6 tuners on their way

  Use receivers with CI slots onboard/daughterboard or projects such as OSCAM

Double check that your hardware supports the symbol rate and modulation for the
services you want to receive. Check at a chip level and the driver modules

Read and re-read the LinuxTV.org Hardware Wiki to make sure you have the right
hardware for your requirements
Hardware
Successfully used the following cards and CAMs (and many more), YMMV:
  Technotrend S-1500 (PCI DVB-S) with CI daughterboard, T-1500 (PCI DVB-T), S-3200 (PCI DVB-S2)

  TBS 6980 (PCIe DVB-S2) with dual tuner functionality

  TBS 6925 (PCIe DVB-S2) with support for advanced DVB-S2 modes (ACM, VCM, MIS, 16/32APSK)

  NetUp Dual DVB-S2-CI (PCIe DVB-S2) with dual tuner and dual CI slots onboard

  DViCO FusionHDTV DVB-T Dual Digital 4 (PCI DVB-T) with dual tuner

  Hauppauge WinTV Nova-T 500 (PCI DVB-T) with dual tuner

  SMiT Viaccess, PowerCAM Pro, Neotion ACS 3.1

Suggest using NetUp and TBS PCIe/PCI boards for decent hardware support
Networking

All networks will differ in one way or another. Chances are you will have at least a switch,
possibly a router, one or more wireless access points. And a variety of end points that could
receive services from the head-end

Note that only the latest 802.11n access points will be able to provide you with decent
bandwidth for streaming channels to receivers. They may or may not support multicast


                                                          Set Top
                                                         Box (STB)
                                                                                Set Top
                                                                               Box (STB)




                                                                          Set Top
                                                                         Box (STB)
   IPTV Head-End
                                  AccessPoint
Video streaming: Unicast vs. Multicast
                                         Set Top
                                        Box (STB)




                                                                Unicast
                                                     Set Top
IPTV Head-End                                       Box (STB)




                             Router                  Set Top
                                                    Box (STB)
         Number of Streams
                                       Set Top
                                      Box (STB)




IPTV Head-End                                        Set Top
                                                    Box (STB)
                                                                Multicast


                             Router                  Set Top
                                                    Box (STB)
To Multicast or not to Multicast...
Multicast is the preferred manner to distribute a single source to multiple end devices, but:
   Many low end routers and switches may not handle multicast properly (CPU vs. HW replication)

   If no routing in your network, turn IGMP snooping on in your switch (with IGMP querier)

   Source Specific Multicast (SSM) is strongly recommended vs. Any Source Multicast (ASM)

   Best practice range for SSM groups is 239.232.x.x/16

   All modern operating systems support IGMPv3 and SSM

   Tip: make sure hosts have a route for your multicast traffic for 224.0.0.0/4:

       “route add -net 224.0.0.0 netmask 240.0.0.0 dev ethX”

Unicast creates one stream per receiver, even if 2 receivers are viewing the same service.
Whilst this might not be an issue with a couple of receivers, this doesn’t scale in an office,
school, campus, etc...
Multicast cheat sheet for your router(s)
 Very condensed version of what you need to do on your (Cisco) router(s) to allow IP
 multicast traffic to flow. May or may not apply to your specific setup and hardware

 Enable multicast globally using the “ip multicast-routing”

 Enable PIM sparse-mode on each interface that sends/receives mcast traffic using “ip pim
 sparse-mode”

 For IGMPv3/SSM configuration:
    Add support for IGMPv3 on each interface using “ip igmp version 3”

    Change SSM range from default 232/8 (Internet sourced SSM range) to 239.232.x.x (Scoped)

        “ip pim ssm range 90” and “access-list 90 permit 239.232.0.0 0.0.255.255”

 For IGMPv2/ASM configuration:
    Add Rendez-vous Point (RP) using “ip pim rp-address x.x.x.x” where x.x.x.x is the address of the
    loopback interface of your device. Make sure you add it to all your devices and that it is reachable
Multicast traffic over Wifi: Warning!
 Many wifi access points are agnostic to multicast traffic
   Traffic is forwarded

 Means all packets are broadcasted to all wifi clients
   This will seriously degrade the performance for all users in many setups

 Some vendors claim multicast support
   But can it cope with multiple streams and/or high definition video bit rate?

 If you plan on deploying multicast over wifi work with a vendor that has a multicast
 enabled Wifi solution
   Can send multicast traffic only to the clients requesting it

   Can control the authorised multicast groups on the wireless infrastructure
Software compilation environment
 In order to be able to download and install the different software packages discussed in
 the next section you will be the following environment.

 All the syntax used here is specific to Ubuntu, others will need to adapt the syntax.

 Make “sudo apt-get install make”

 GCC “sudo apt-get install gcc”

 Kernel-Headers “sudo apt-get install linux-headers-$(uname -r) build-essential”

 Python is needed for Mercurial “sudo apt-get install python”

 Git “sudo apt-get install git-core”

 Mercurial “sudo apt-get mercurial libncurses-dev”
V4L-DVB

Grab latest V4L-DVB tree
  V4L-DVB in distribution release rapidly out of sync with new modules and bug fixes

  Retrieve v4l-dvb source tree: “hg clone http://linuxtv.org/hg/v4l-dvb”

  Update sources later on: “cd v4l-dvb” and then “hg pull -u http://linuxtv.org/hg/v4l-dvb”

Build v4l-dvb kernel modules:
  Change to v4l-dvb directory “cd v4l-dvb”, build the modules “make”, install the modules “make install”

  If more than 8 adapters, change DVB_MAX_ADAPTERS from 8 to a higher number in the menuconfig

  Tip: Include only modules you really need for your hardware
V4L-DVB modules in the kernel
                                                                   [ 8.012881] saa7146: found saa7146 @ mem f8054000
 [   7.870037] saa7146: register extension 'budget_ci dvb'.
                                                                   (revision 1, irq 65) (0x13c2,0x1019).
 [ 7.870109] budget_ci dvb 0000:06:01.0: PCI INT A -> GSI 74
                                                                   [   8.012892] saa7146 (1): dma buffer size 192512
 (level, low) -> IRQ 64
                                                                   [ 8.012896] DVB: registering new adapter (TT-Budget
 [ 7.870236] saa7146: found saa7146 @ mem f82c4000
                                                                   S2-3200 PCI)
 (revision 1, irq 64) (0x13c2,0x1012).
                                                                   [   8.070942] adapter has MAC addr = 00:d0:5c:0b:5b:6d
 [   7.870247] saa7146 (0): dma buffer size 192512
                                                                   [ 8.071348] input: Budget-CI dvb ir receiver saa7146 (1) as /
 [   7.870251] DVB: registering new adapter (TT-Budget-T-CI PCI)
                                                                   devices/pci0000:00/0000:00:06.0/0000:05:00.0/0000:06:02.0/
                                                                   input/input5
 [   7.931683] adapter has MAC addr = 00:d0:5c:04:43:06
                                                                   [   8.414241] stb0899_attach: Attaching STB0899
 [ 7.932235] input: Budget-CI dvb ir receiver saa7146 (0) as /
 devices/pci0000:00/0000:00:06.0/0000:05:00.0/0000:06:01.0/
                                                                   [   8.443895] stb6100_attach: Attaching STB6100
 input/input4
                                                                   [   8.454305] LNBx2x attached on addr=8
 [ 8.034327] DVB: registering adapter 0 frontend 0 (Philips
 TDA10046H DVB-T)...
                                                                   [ 8.454310] DVB: registering adapter 1 frontend 0 (STB0899
 [ 8.012786] budget_ci dvb 0000:06:02.0: PCI INT A -> GSI 78       Multistandard)...
 (level, low) -> IRQ 65
DVB-APPS

dvb-apps is a set of tools to allow you to scan for available channels and then tune to a
given service. Useful for preliminary debugging when you can’t tune to a given service
  To retrieve the dvb-apps source tree: “hg clone http://linuxtv.org/hg/dvb-apps”

  To update the sources later on: “cd dvb-apps” and then “hg pull -u http://linuxtv.org/hg/dvb-apps”

  Change into the directory “cd dvb-apps”, build the modules “make”, install “sudo make install”

Details about this package are available here: http://www.linuxtv.org/wiki/index.php/
LinuxTV_dvb-apps
dvbsnoop -s feinfo -frontend /dev/dvb/adapter0/frontend0



Checking your devices
                                                        dvbsnoop V1.4.00 -- http://dvbsnoop.sourceforge.net/
                                                        ---------------------------------------------------------
                                                        FrontEnd Info...
                                                        ---------------------------------------------------------
                                                        Device: /dev/dvb/adapter0/frontend0
                                                        Basic capabilities:

DVBsnoop can allow you to check if your DVB                Name: "Philips TDA10046H DVB-T"
                                                           Frontend-type:        OFDM (DVB-T)

devices have been detected by the OS                       Frequency (min): 51000.000 kHz
                                                           Frequency (max): 858000.000 kHz
                                                           Frequency stepsiz: 166.667 kHz
                                                           Frequency tolerance: 0
DVBsnoop will query the frontend (RF receiver) of          Symbol rate (min): 0.000000 MSym/s
                                                           Symbol rate (max): 0.000000 MSym/s
your DVB device for card details such as frequency         Symbol rate tolerance: 0 ppm
                                                           Notifier delay: 0 ms
range, capabilities and current parameters                 Frontend capabilities:
                                                              auto inversion
                                                              FEC 1/2
This doesn’t guarantee the card is in a working state         FEC 2/3
                                                              FEC 3/4
but provides feedback on the detected capabilites             FEC 5/6
                                                              FEC 7/8
and if it is recognised by the OS.                            FEC AUTO
                                                              QPSK
                                                              QAM 16

Syntax is “dvbsnoop -s feinfo -frontend /dev/dvb/             QAM 64
                                                              QAM AUTO

adapterX/frontendX” where adapterX is the dvb                 auto transmission mode
                                                              auto guard interval

device number (starting with 0, 1, 2, ...) and the      Current parameters:
                                                           Frequency: 0.000 kHz

frontend of that device (0 or 1 for the second tuner       Inversion: OFF
                                                           Bandwidth: 8 MHz

of a dual tuner device)                                    Stream code rate (hi prio): FEC 1/2
                                                           Stream code rate (lo prio): FEC 1/2
                                                           Modulation: QPSK
                                                           Transmission mode: 2k mode
                                                           Guard interval: 1/32
                                                           Hierarchy: none
Testing your Scrambling modules
     As part of the dvb-apps package, you have a tool called gnutv. This command line application allows you to check your rights
     for your descrambling cards                                                      ------------------------------
                                                          ------------------------------     PowerCam_HD V2.0.4
                                                          PowerCam_HD V2.0.4                 0. Quit menu
sudo gnutv -adapter 1 -cammenu                            Valid card                         1. Processing...
CAM Application type: 01
                                                          0. Quit menu                       Please wait ...
CAM Application manufacturer: 02ca
                                                          1. Consultation                    Enter option:
CAM Manufacturer code: 3000
                                                          2. Authorization                    ------------------------------
CAM Menu string: PowerCam_HD V2.0.4
                                                          Press 'OK' to continue             PowerCam_HD V2.0.4
CAM supports the following ca system ids:
                                                          Enter option: 1                    Subscription BIS
  0x0500
                                                          Please enter your PIN code: XXXX   0. Quit menu
------------------------------
                                                          ------------------------------     1. Subscription per class :
PowerCam_HD V2.0.4
                                                          PowerCam_HD V2.0.4                 2. 11/22/2009 - 12/31/2009 Class:
Select a language
                                                          Card N?: XXXX                      3. 100,50
0. Quit menu
                                                          0. Quit menu                       4. 09/22/2009 - 10/31/2009 Class:
1. English
                                                          1. BIS                             5. 100,50
2. French
                                                          2. BIS-PREPAID                     6. 09/13/2009 - 09/22/2009 Class:
3. Spanish
                                                          3. ViaEutelsat1                    7. 210,150,103,102,101,100
4. German
                                                          4. ViaEutelsat2                    8. 50,2
5. Arabic A
                                                          5. ViaEutelsat3                    9. 08/22/2009 - 09/30/2009 Class:
6. Arabic B
                                                          6. BIS-EXTRA                       10. 100,50
Select one and press 'OK' to continue
                                                          Press 'OK' to continue             Press 'OK' to continue
Enter option: 1
                                                          Enter option: 1                    Enter option:
------------------------------                            ------------------------------     Main Menu
PowerCam_HD V2.0.4                                        PowerCam_HD V2.0.4                 0. Quit menu
Main Menu                                                 BIS                                1. SmartCard & PIN
0. Quit menu
                                                          0. Quit menu                       2. CAS
1. SmartCard & PIN
                                                          1. Subscription                    3. VP: 88730
2. CAS
                                                          2. Pre-booking                     4. Download Status
3. VP: XXXXX
                                                          Press 'OK' to continue             5. CSP - Disabled
4. Download Status
                                                          Enter option: 1                    Select one and press 'OK' to continue
5. CSP - Disabled
Select one and press 'OK' to continue                                                        Enter option: 1
Enter option: 1
MuMuDVB
MuMuDVB provides RTP/UDP multicast and HTTP unicast streaming capabilities. It takes
all services from a transport stream and maps each service to a unique multicast group

By default all services are streamed. Options allow to specify specifically which services are
required (multiple audios, subtitles, Teletext, data, ...)

Session Announcement Protocol (SAP) for receivers that can listen & build a services listing

Download from source: “git clone http://mumudvbgit.braice.net/mumudvb”, “cd
mumudvb”, “autoreconf -i -f”, “./configure”, “make”, “sudo make install”

To launch the application for initial testing (debug) use the following:
   “mumudvb -d -vvv -s -c <config_file>”

   Once you have confirmation the setup is working you can skip the -d value
MuMuDVB
New builds now offer:
  New DVB parser

  Software based transcoding feature (needs some updating, currently broken)

  Supports Software descrambling (SASC-NG)

  Builds play lists for VLC Player and MythTV formats

  Support for OpenWRT platform for mobile setups

  RTP Timestamps support

  Override/specify adapter to use in the Command Line (vs. config file)

  IPv6 support including SAP announcements

  RF Signal level and error rate (if tuner/module supports it)

  DVB-T2 supports
MuMuDVB output
                                                                                                                      Info: Tune:     FE_HAS_SYNC : found sync bytes
                                                                                                                      Info: Tune:     FE_HAS_LOCK : everything's working...
                                                                                                                      Info: Tune: Strength:      58907
                                                                                                                      Info: Tune: SNR:       59565
                                                                                                                      Info: Tune: Event: Frequency: 10772919 (or 8727081)
                                                                                                                      Info: Tune:       SymbolRate: 22000000
MuMuDVB Version 1.6.1b_20100614
                                                                                                                      Info: Tune:       FEC_inner: 5
 --- Build information ---
                                                                                                                      Info: Tune: Bit error rate: 0
Built with CAM support.
                                                                                                                      Info: Tune: Signal strength: 58891
Built without transcoding support.
                                                                                                                      Info: Tune: SNR: 59565
Built with ATSC support.
                                                                                                                      Info: Tune: FE_STATUS:
Built with ATSC long channel names support.
                                                                                                                      Info: Tune:     FE_HAS_SIGNAL : found something above the noise level
Built with support for DVB API Version 5 (DVB-S2).
                                                                                                                      Info: Tune:     FE_HAS_CARRIER : found a DVB signal
Built with pthread support (used for periodic signal strength display, cam support, transcoding, and threaded read).
                                                                                                                      Info: Tune:     FE_HAS_VITERBI : FEC is stable
---------
                                                                                                                      Info: Tune:     FE_HAS_SYNC : found sync bytes
                                                                                                                      Info: Tune:     FE_HAS_LOCK : everything's working...
(snip)
                                                                                                                      Info: Main: Card 0 tuned
                                                                                                                      Info: Main: The traffic will be shown every 10 seconds
Info: Multicast: You decided to send the RTP header (multicast only).
                                                                                                                      Info: Autoconf: Autoconfiguration Start
Info: SAP: Sap announces will be sent
                                                                                                                      Info: DVB: Bit error rate:       0 Signal strength: 59198 SNR:    59565
Info: You have enabled the PAT Rewriting
                                                                                                                      Info: Autoconf: Autoconfiguration done
Info: Main: Full autoconfiguration, we activate SDT rewritting. if you want to desactivate it see the README.
                                                                                                                      Info: Autoconf: Diffusion 8 channels
Info: Main: Full autoconfiguration, we activate sorting of the EIT PID. if you want to desactivate it see the README.
                                                                                                                      Info: Autoconf: Channel number : 0, name : "BBC 1 London" service id 6301
Info: Autoconf: The autoconfiguration auto update is enabled. If you want to disable it put "autoconf_pid_update=0" in
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.0:1234
your config file.
                                                                                                                      Info: Autoconf: Channel number : 1, name : "BBC 2 England" service id 6302
Info: Main: Streaming. Freq 10773000
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.1:1234
Info: Tune: Using DVB card "ST STV0299 DVB-S"
                                                                                                                      Info: Autoconf: Channel number : 2, name : "ETV" service id 6306
Info: Tune: Tuning DVB-S to Freq: 1023000 kHz, LO frequency 9750000 kHz Pol:H Srate=22000000, LNB number: 3
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.2:1234
Info: Tune: LNB voltage 18V
                                                                                                                      Info: Autoconf: Channel number : 3, name : "BBC TES 3" service id 6315
Info: Tune: DISEQC SETTING SUCCEDED
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.3:1234
Info: Tune: FE_STATUS:
                                                                                                                      Info: Autoconf: Channel number : 4, name : "BBC FOUR" service id 6316
Info: Tune: Strength:      58880
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.4:1234
Info: Tune: SNR:      59415
                                                                                                                      Info: Autoconf: Channel number : 5, name : "BBC THREE" service id 6319
Info: Tune: FE_STATUS:
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.5:1234
Info: Tune:     FE_HAS_SIGNAL : found something above the noise level
                                                                                                                      Info: Autoconf: Channel number : 6, name : "BBC 1 NI" service id 6331
Info: Tune:     FE_HAS_CARRIER : found a DVB signal
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.6:1234
Info: Tune:     FE_HAS_VITERBI : FEC is stable
                                                                                                                      Info: Autoconf: Channel number : 7, name : "FIVE" service id 6335
                                                                                                                      Info: Autoconf: 	Multicast ip : 239.100.1.7:1234
                                                                                                                      Info: DVB: Bit error rate:       0 Signal strength: 58891 SNR:    59574
DVBlast
DVBlast is a simple and powerful MPEG-2 TS demux and streaming application
  Designed to open DVB device, tune, place PIDs filters, config CAM and demux to output

  No processing of the streams, transcoding, PID remapping or remultiplexing

  Focus is on stability and minimal tampering with the stream source

Supports V4L-DVB devices (e.g.: S/S2, T/T2, ...), DVB-ASI and UDP/RTP IP inputs

CAM menus (MMI) and front-end status support via external application

Download latest released code here: http://downloads.videolan.org/pub/videolan/dvblast/
2.2/dvblast-2.2.tar.bz2
  No configuration options, “make & make install” and your done
biTStream

Required by DVBlast
   Replaces unique previous DVBlast external dependency on libdvbpsi in first builds

biTStream is a set of C headers allowing a simpler access to binary structures such as
specified by MPEG, DVB, IETF, etc

Download via “git clone git://git.videolan.org/bitstream.git”

Install using “make install”, no autoconf for now

Always update before you install new release of DVBlast
DVBlast
Command line for tuning parameters, config file for channels to be streamed

“dvblast -u -f 10773000 -a 0 -n 0 -s 22000000 -v 18 -t 255 -S 1 -e -c <config.cfg>”
  -u budget mode (no hardware filtering)

  -f = frequency, a = adapter number, n = frontend, s = symbol rate

  -v 13|18 voltage to be applied to trigger Vertical|Horizontal polarisation

  -t = Multicast TTL, -S satellite number (0, 1-4)

  -e enable EPG pass through (EIT data)

  -c configuration file containing the specific services you want to multicast

Options:
  For DVB-S2 you must indicate the modulation (QPSK or PSK_8)

  For DVB-T the bandwidth of the multiplex needs to be added (usually 8MHz)
DVBlast (config file)
 Format is the following: <IP>[:<port>][/udp]         <always on>        <SID> [<PID>,]*
    There are three ways of configuring the PIDs to stream :

    1. SID-based

    239.232.0.1:1234       1     10750

    DVBlast will stream all known PIDs from service 10750 (video, audio, and subtitles). The resulting stream is fully MPEG-
    compliant, with PAT and PMT.

    2. SID and PIDs

    239.232.0.1:1234       1     10750 1234,1235

    DVBlast will stream SID 10750, but only PID 1234 and 1235 will be output. Other known PIDs will be discarded and
    removed from the PMT. The list of PIDs in the config file does not include the PAT and PMT, but it must include the PCR
    PID if it is different from the video or audio PID, otherwise the stream won't be compliant.

    3. PIDs only

    239.232.0.1:1234       1     0     0,128,1234,1235

    DVBlast will only stream the PIDs passed. No PAT and PMT will be generated, so if they are not included the stream
    won't be compliant. Also the included PAT and PMT may contain ghost programs or ESes.
DVBlast output
sudo dvblast -f 10773000 -n 0 -e -t 255 -v 18 -s 22000000 -S 3 -C -c BBC.cfg -r /tmp/dvblast.sock -a 0
DVBlast 2.2 (git-2.2-2-g38ef649)
warning: restarting
debug: using linux-dvb API version 5.4
debug: Frontend "STB0899 Multistandard" type "QPSK (DVB-S/S2)" supports:
debug: frequency min: 950000, max: 2150000, stepsize: 0, tolerance: 0
debug: symbolrate min: 5000000, max: 45000000, tolerance: 0
<snip>
debug: frequency 10773000 is in Ku-band (lower)
debug: configuring LNB to v=18 p=0 satnum=3
debug: tuning QPSK frontend to f=10773000 srate=22000000 inversion=-1 fec=999 rolloff=35 modulation=legacy pilot=-1
<snip>
debug: conf: 239.232.232.21:3000 config=0x61 sid=6301 pids[0]
<snip>
debug: frontend has acquired carrier                                                               BBC.cfg Configuration file
debug: frontend has acquired stable FEC                                                            :BBC 1 London
debug: frontend has acquired sync                                                                  239.232.232.21:3000        1   6301
info: frontend has acquired lock                                                                   :BBC 2 England
frontend has acquired lock                                                                         239.232.232.22:3000        1   6302
debug: - Bit error rate: 0                                                                         :BBC THREE
debug: - Signal strength: 211                                                                      239.232.232.23:3000        1   6319
debug: - SNR: 117                                                                                  :BBC FOUR
<snip>                                                                                             239.232.232.24:3000        1   6316
debug: new PAT tsid=2045 version=11                                                                :FIVE
debug: * program number=6301 pid=256                                                               239.232.232.25:3000        1   6335
<snip>
DVBlast updates...
  Introduced a buffering scheme to smooth packet output

  Added support for per output options

  Added ATSC A/52 stream types

  Added option to build MRTG graph files

  Moved from SVN to GIT some time ago

    “git clone git://git.videolan.org/dvblast.git”

  Better support for descrambling by:

    supporting asynchronous I/O CAM operations

    removing limitations on number of CA systems IDs and programs
Media Players
VLC Media Player
A well known Open Source media player,
supports most OSes, a large number of file
formats, audio and video codecs

In the options enable support for SAP
announcement to pickup the services via the
playlist menu (that’s if sessions are
announced and being received)

If no SAP service, you can load a file
containing all the services settings, enter
manually or link from a web page

GPU decode acceleration introduced in VLC
1.1 for Windows Vista/7 and Linux (Nvidia
and AMD/ATI) and to be included in 2.1 for
OS X builds
VLC Media Player - Services list format
                                                         #EXTM3U
                                                         #EXTINF:0,1 - Channel Name
Using the Extended M3U Playlist format, you can          rtp://@239.192.1.1:1234
                                                         #EXTINF:0,2 - Channel Name
create a service list for VLC                            rtp://@239.192.1.2:1234
                                                         #EXTINF:0,3 - Channel Name
Load the file directly into VLC locally or remotely       rtp://@239.192.1.3:1234
                                                         #EXTINF:0,4 - Channel Name
over your network                                        rtp://@239.192.1.4:1234
                                                         #EXTINF:0,5 - Channel Name
                                                         rtp://@239.192.1.5:1234
This will load the services list into the VLC playlist
                                                         #EXTM3U
and allow you to select the services you wish to         #EXTINF:0,1 - Channel Name
view                                                     rtp://192.168.1.100@239.232.1.1:1234
                                                         #EXTINF:0,2 - Channel Name
                                                         rtp://192.168.1.100@239.232.1.2:1234
Double click on the service and your up and              #EXTINF:0,3 - Channel Name
running                                                  rtp://192.168.1.100@239.232.1.3:1234
                                                         #EXTINF:0,4 - Channel Name
                                                         rtp://192.168.1.100@239.232.1.4:1234
                                                         #EXTINF:0,5 - Channel Name
                                                         rtp://192.168.1.100@239.232.1.5:1234
MythTV
Open Source software digital video recorder (DVR). Has been under development since
2002 and contains most features a modern DVR would provide

Split in 2 main components:
  MythBackend: Server applications dealing with scheduling, recording, keeping TV listings up to date

  MythFrontend: Provides end-user interface and communicates with one or more backends

Since version 0.21 and with some extra work you can integrate IPTV multicast sources as
a valid input for MythTV

MythTV wiki provides further details on how to do this for some IPTV service provides, so
does a link in the reference section. This will require some tweaking to get it running
Android client
 After much trial and error:
    Google Galaxy Nexus phone running Android 4.2 (initially tested with 4.0)

    Wifi network with multicast support enabled

    RTP or UDP encapsulated streams

 5 clients I tested:
    VLC for Android using v0.7 builds (Tested with RTP sources)

    Daroon Player (Tested with RTP sources)

    Wondershare Player (Tested with RTP sources)

    VPlayer (Tested with UDP sources)

    MX Player (Tested with UDP sources)
iOS client


 Finally found a single application very recently: Haivision InStream Mobile for iOS
       Tested on iPad 2 with iOS 6

       Wifi network with multicast support enabled

       Tested with UDP and RTP encapsulated streams

       Available on the Apple iTunes store
XBMC
Open Source software media player. Created in 2003 and ported to Linux, OS X,
Windows.

Supports SAP (Session Announcement Protocol) messages to channels to media library

Recently ported to the Raspberry Pi platform

Multicast streaming capabilities available
   Tested using SAP and static M3U playlists

   Decoding 1080i sources does require overclocking CPU from default values

   Slow acquisition time on HD sources, need to tweak settings

   Currently no IPv6 SAP support
Support for IPv6
Network support for IPv6 (quick intro)
 Multicast is not always well (or at all) supported on some networking devices, this applies
 even more to IPv6 multicast

 First select the scope you wish to use for the distribution of your content
    Important to contain your multicast traffic within specific boundaries

 Enable IPv6 multicast globally using the “ipv6 multicast-routing”

 IPv6 needs to be configured and enabled on all the networked interfaces that will be in use

 PIM Sparse Mode and MLDv2 enabled by default in Cisco IOS (when features are
 supported)

 For MLDv2/SSM configuration (Supported in Windows Vista/7 and Linux 3.0 kernels)

 For IGMPv2/ASM configuration (Rendez-Vous Point)
    Add Rendez-vous Point (RP) using “ipv6 pim rp-address x.x.x.x”. Same instructions as IPv4 syntax
Head-end & receiver support for IPv6
 Good support for IPv6 in the Linux 3.0 kernel branch used in current distributions

 DVBlast supports IPv6 since r93 commit of the code. Available in current releases

 No change on DVBlast command line syntax, only config file syntax for the multicast
 address. Note that the IPv6 address must be in between brackets
   Ex: [FF15::ABCD]:1234      1       10750

 VLC Media Player supports IPv6 out of the box

 MythTV supports IPv6 with a bit of extra work

 Some STB vendors also support IPv6 multicast, still patchy
   Not yet tested on Android or iOS
Thoughts
User experience

 Parental control over broadcast sources
   Time based Access Lists to block content sources based on time of day

 XBMC easy to adopt with smartphone/tablet based remote control

 HDMI CEC issues
   Setup dependent between display, AV receiver and Raspberry Pi

   Universal programable remote control to the rescue to overcome those limitations
Areas of improvement (IMHO)
 Web based EPG interface independent of receiver application/player
   Grab DVB-SI data from multicast sources, create XMLTV output

   Publish to web interface for users and feeding home media systems

   Merge with external EPG provider data sources & dynamic channel lineup based on user preferences

   Output syntax in multiple formats for various players

 Better IPv6 and/or multicast support
   In wider set of receivers (STB, applications, smartphones, tablets) & entry level networking equipment

 MHEG
   Integrate support for “Red Button” applications on the end devices
Summary


Basics related to building a video head-end

Advantages and constraints related to such a setup

Keep in mind your own requirements: services, network, receivers

What needs worked on to expand ecosystem (IMHO)

Have fun with your own project, please document and share with others....
References
References
 DVB-T: http://en.wikipedia.org/wiki/DVB-T & http://en.wikipedia.org/wiki/DVB-T2

 DVB-S2: http://en.wikipedia.org/wiki/DVB-S2

 DVB-C: http://en.wikipedia.org/wiki/DVB-C

 DVB-CI: http://en.wikipedia.org/wiki/DVB-CI

 CAM: http://en.wikipedia.org/wiki/Conditional_Access_Module

 King of Sat: http://en.kingofsat.net/

 Aston Professional: http://www.aston-france.com/uk-modules-professionnels.html

 SMiT http://www.smit.com.cn/index.php?lang=en
References
V4L-DVB: http://www.linuxtv.org/

Linux-media ML archives: http://www.mail-archive.com/linux-media@vger.kernel.org/

MuMuDVB: http://mumudvb.braice.net/

DVBlast: http://www.videolan.org/projects/dvblast.html

TSDecrypt: http://georgi.unixsol.org/programs/tsdecrypt/

VLC: http://www.videolan.org/

MythTV: http://www.mythtv.org/

IPTV with MythTV: http://www.avenard.org/iptv/MythTV.html

TVheadend: http://www.lonelycoder.com/hts/tvheadend_overview.html

Wireshark: http://www.wireshark.org/

More Related Content

What's hot

FreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8sFreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8sChien Cheng Wu
 
PerfectVIPs Uvm tlm slides format
PerfectVIPs Uvm tlm slides formatPerfectVIPs Uvm tlm slides format
PerfectVIPs Uvm tlm slides formatAkash Mohanty
 
Vxlan deep dive session rev0.5 final
Vxlan deep dive session rev0.5   finalVxlan deep dive session rev0.5   final
Vxlan deep dive session rev0.5 finalKwonSun Bae
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHMoises Silva
 
Ethernet protocol
Ethernet protocolEthernet protocol
Ethernet protocolTom Chou
 
CCNA 2 Routing and Switching v5.0 Chapter 6
CCNA 2 Routing and Switching v5.0 Chapter 6CCNA 2 Routing and Switching v5.0 Chapter 6
CCNA 2 Routing and Switching v5.0 Chapter 6Nil Menon
 
CCNA BASIC SWITCHING AND SWITCH CONFIGURATION
CCNA BASIC SWITCHING AND SWITCH CONFIGURATIONCCNA BASIC SWITCHING AND SWITCH CONFIGURATION
CCNA BASIC SWITCHING AND SWITCH CONFIGURATIONAswini Badatya
 
An Overview of Border Gateway Protocol (BGP)
An Overview of Border Gateway Protocol (BGP)An Overview of Border Gateway Protocol (BGP)
An Overview of Border Gateway Protocol (BGP)Jasim Alam
 
SevOne - IP SLA
SevOne - IP SLASevOne - IP SLA
SevOne - IP SLASevOne
 
Ovs dpdk hwoffload way to full offload
Ovs dpdk hwoffload way to full offloadOvs dpdk hwoffload way to full offload
Ovs dpdk hwoffload way to full offloadKevin Traynor
 
Ccna Commands In 10 Minutes
Ccna Commands In 10 MinutesCcna Commands In 10 Minutes
Ccna Commands In 10 MinutesCCNAResources
 
CCNA 2 Routing and Switching v5.0 Chapter 4
CCNA 2 Routing and Switching v5.0 Chapter 4CCNA 2 Routing and Switching v5.0 Chapter 4
CCNA 2 Routing and Switching v5.0 Chapter 4Nil Menon
 
Bandwidth Monitoring - pfSense Hangout March 2015
Bandwidth Monitoring - pfSense Hangout March 2015Bandwidth Monitoring - pfSense Hangout March 2015
Bandwidth Monitoring - pfSense Hangout March 2015Netgate
 
Chapter 15 : routing concepts
Chapter 15 : routing conceptsChapter 15 : routing concepts
Chapter 15 : routing conceptsteknetir
 
TIPC Roadmap 2021
TIPC Roadmap 2021TIPC Roadmap 2021
TIPC Roadmap 2021Jon Maloy
 

What's hot (20)

FreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8sFreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8s
 
PerfectVIPs Uvm tlm slides format
PerfectVIPs Uvm tlm slides formatPerfectVIPs Uvm tlm slides format
PerfectVIPs Uvm tlm slides format
 
Vxlan deep dive session rev0.5 final
Vxlan deep dive session rev0.5   finalVxlan deep dive session rev0.5   final
Vxlan deep dive session rev0.5 final
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCH
 
BGP Overview
BGP OverviewBGP Overview
BGP Overview
 
AMBA 2.0 REPORT
AMBA 2.0 REPORTAMBA 2.0 REPORT
AMBA 2.0 REPORT
 
Layer 3 redundancy hsrp
Layer 3 redundancy   hsrpLayer 3 redundancy   hsrp
Layer 3 redundancy hsrp
 
Ethernet protocol
Ethernet protocolEthernet protocol
Ethernet protocol
 
CCNA 2 Routing and Switching v5.0 Chapter 6
CCNA 2 Routing and Switching v5.0 Chapter 6CCNA 2 Routing and Switching v5.0 Chapter 6
CCNA 2 Routing and Switching v5.0 Chapter 6
 
CCNA BASIC SWITCHING AND SWITCH CONFIGURATION
CCNA BASIC SWITCHING AND SWITCH CONFIGURATIONCCNA BASIC SWITCHING AND SWITCH CONFIGURATION
CCNA BASIC SWITCHING AND SWITCH CONFIGURATION
 
An Overview of Border Gateway Protocol (BGP)
An Overview of Border Gateway Protocol (BGP)An Overview of Border Gateway Protocol (BGP)
An Overview of Border Gateway Protocol (BGP)
 
SevOne - IP SLA
SevOne - IP SLASevOne - IP SLA
SevOne - IP SLA
 
IPv4 VS IPv6
IPv4 VS IPv6IPv4 VS IPv6
IPv4 VS IPv6
 
Ovs dpdk hwoffload way to full offload
Ovs dpdk hwoffload way to full offloadOvs dpdk hwoffload way to full offload
Ovs dpdk hwoffload way to full offload
 
Axi protocol
Axi protocolAxi protocol
Axi protocol
 
Ccna Commands In 10 Minutes
Ccna Commands In 10 MinutesCcna Commands In 10 Minutes
Ccna Commands In 10 Minutes
 
CCNA 2 Routing and Switching v5.0 Chapter 4
CCNA 2 Routing and Switching v5.0 Chapter 4CCNA 2 Routing and Switching v5.0 Chapter 4
CCNA 2 Routing and Switching v5.0 Chapter 4
 
Bandwidth Monitoring - pfSense Hangout March 2015
Bandwidth Monitoring - pfSense Hangout March 2015Bandwidth Monitoring - pfSense Hangout March 2015
Bandwidth Monitoring - pfSense Hangout March 2015
 
Chapter 15 : routing concepts
Chapter 15 : routing conceptsChapter 15 : routing concepts
Chapter 15 : routing concepts
 
TIPC Roadmap 2021
TIPC Roadmap 2021TIPC Roadmap 2021
TIPC Roadmap 2021
 

Similar to Home Brew IPTV head-end

Similar to Home Brew IPTV head-end (20)

9.) audio video ethernet (avb cobra net dante)
9.) audio video ethernet (avb cobra net dante)9.) audio video ethernet (avb cobra net dante)
9.) audio video ethernet (avb cobra net dante)
 
15 selected topics for e-learning technologies (dtv)
15 selected topics for e-learning technologies (dtv)15 selected topics for e-learning technologies (dtv)
15 selected topics for e-learning technologies (dtv)
 
Techarticle jan05
Techarticle jan05Techarticle jan05
Techarticle jan05
 
Jiuzhou
JiuzhouJiuzhou
Jiuzhou
 
TELKOM IPTV
TELKOM IPTVTELKOM IPTV
TELKOM IPTV
 
Tenow
TenowTenow
Tenow
 
DTH- Rajan
DTH- RajanDTH- Rajan
DTH- Rajan
 
#Digital Caribbean: Dr Peter Siebert, DVB Project Office
#Digital Caribbean: Dr Peter Siebert, DVB Project Office#Digital Caribbean: Dr Peter Siebert, DVB Project Office
#Digital Caribbean: Dr Peter Siebert, DVB Project Office
 
Basics of IPTV
Basics of IPTVBasics of IPTV
Basics of IPTV
 
Audio video ethernet (avb cobra net dante)
Audio video ethernet (avb cobra net dante)Audio video ethernet (avb cobra net dante)
Audio video ethernet (avb cobra net dante)
 
Broadcast day-2007-comtech
Broadcast day-2007-comtechBroadcast day-2007-comtech
Broadcast day-2007-comtech
 
Sit training cr
Sit training crSit training cr
Sit training cr
 
Euromedia May June
Euromedia May JuneEuromedia May June
Euromedia May June
 
DTV Technical Overview
DTV Technical OverviewDTV Technical Overview
DTV Technical Overview
 
Set Up Box Product Suppliers
Set Up Box Product SuppliersSet Up Box Product Suppliers
Set Up Box Product Suppliers
 
Beginning of dtv
Beginning of dtvBeginning of dtv
Beginning of dtv
 
DIGITAL TV RECEIVER AND ITS MERITS
DIGITAL TV RECEIVER AND ITS MERITSDIGITAL TV RECEIVER AND ITS MERITS
DIGITAL TV RECEIVER AND ITS MERITS
 
Feature satip2
Feature satip2Feature satip2
Feature satip2
 
digital_set_top_box2
digital_set_top_box2digital_set_top_box2
digital_set_top_box2
 
digital_set_top_box
digital_set_top_boxdigital_set_top_box
digital_set_top_box
 

Recently uploaded

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Recently uploaded (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Home Brew IPTV head-end

  • 1. Build your own IPTV head-end Thomas Kernen BBC 2013 Release
  • 2. History & Objectives Build an IPTV head-end for my home that would fit my personal lab testing and viewing requirements In a “production” state but continues to be upgraded with new hardware and software Word of mouth has led to people being interested in knowing how I did it Presentation is designed to help those who wish to build themselves an IPTV head-end for their home, office, lab, school, campus, etc... Focus of this presentation is on the head-end requirements for streaming live radio and TV services and not Video on Demand services or receivers All the information in the presentation is provided on an “as is” basis without warranties of any kind, either express or implied
  • 3. Agenda Planing the Head-End Building the Head-End Media Players Support for IPv6 What needs worked on (IMHO) References
  • 5. Introduction Evolution of TV viewing from 1 screen/home to multi-screen & multi-viewer environment Traditionally users have a single physical source for their TV signal. Now there are multiple sources (satellite, cable, terrestrial, IPTV, etc) Receivers are evolving quickly. Each generation introduces new and improved features. Hard to keep up and usually requires swapping out hardware Delinearisation of content means most people want to record and then view it later Best “off the shelf” products tend to provide a subset of the features required to support the statements above, but then are locked into their own vendor scheme Home brew systems aren’t perfect, your own requirements will determine if some or part of what follows is of any use to you
  • 6. Basics of reception of TV services In an analogue world, each frequency carries a single service (= TV channel) These days virtually all services are transmitted digitally “analogue switch off” - ”digital switch over” Each frequency typically carries up to 12 different Standard Definition digital TV services less for HD services Services are modulated on a carrier according to DVB specifications. T and T2 for Terrestrial, S and S2 for satellite, C and C2 for cable, ... Each modulation type requires a different front-end receiver All services on a given frequency are contained within an MPEG-2 Transport Stream Multiple Program Transport Stream (MPTS) or Single Program Transport Stream (SPTS) And may be individually scrambled (= encrypted)
  • 7. Basics of Reception of TV services Terrestrial or cable source: full RF bandwidth and therefore services are available at the output of the wall socket. Multiple receivers can be attached without impacting one another To receive a transport stream, the receiver must tune to a specific frequency and setup additional parameters (RF bandwidth, Symbol Rate, modulation scheme, Guard interval, Forward Error Correction, ...) With satellite sources, things are more complicated. Different satellites (orbital positions), polarisations (Horizontal/Vertical) and bands (low and high) come into play To receive a transport stream, the receiver must tune to a specific satellite, frequency, polarisation, band and setup additional parameters (Symbol Rate, Forward Error Correction, modulation scheme, ...) In a classic receiver these additional parameters are normally hidden from the end user and may be auto detected or preprogrammed
  • 8. Basics of Reception of TV services To receive multiple satellite feeds we need to include a few components into the reception system Each Low Noise Block (LNBs) needs 4 outputs to provide the 2 polarisations (horizontal/vertical) for each of the 2 bands (low/ high). This called a quattro LNB If you need services from 3 different satellites you need 3 LNBs, either mounted on a universal dish that has a bracket for those 3 orbital positions, or on 2 or 3 separate dishes. All the outputs of the LNBs need to be wired to a DiSEqC switch. Different models exist depending on the number of inputs from the LNBs and outputs to the receivers are required. Each satellite will be linked to an input number (usually 1 to 16) Pro systems don’t use DiSEqC since each input is wired to a L-Band Multichannel multiplexer
  • 9. Anatomy of a Transport Stream Example of the structure of an MPTS Service analysed here is BBC ONE HD taken from a UK Freeview DVB-T2 multiplex satellite and cable use the same overall format Transport Stream ID: 16516 Video PID: 6601 Audio PIDs: 6602, 6606 Private Data PIDs: 6605
  • 10. Scrambled services There are many scrambling vendors on the market Different content providers use different systems Scrambled services are setup to protect access to the content These are usually bound to distribution rights for a specific territory Some scrambling systems used by content providers may not provide the option of using a standalone subscription card but requires to be paired with a specific provided receiver Please check with your content provider(s) if their services can be used with a standard compatible receiver and what scrambling system is used
  • 11. Planning your channel line up Use one of the numerous databases to identify what services you are interested in Make a list of all of them: Frequencies, modulations, scrambling Classify by frequencies, transports and modulations = number of required receivers Source: King Of Sat
  • 12. Differences between receivers and HEs Consumer receiver tunes to the service the user is currently viewing. In a head-end all services that need to be received are permanently tuned to Consumer receiver is designed for descrambling the service currently viewed. In a head- end all services in the transport stream need to be descrambled. This requires special Conditional Access Modules that can descrambled multiple services at the same time. Prefer CAM vendors with professional series such as Aston and SMiT Consumer receiver with IP capabilities will typically stream a single channel. In a head-end we stream all the services To allow any end device in the network to receive any service at any point in time: We need multiple receivers tuned to all the channels to be able to receive, descramble and stream around the clock
  • 14. What you need to build your own HE Hardware: A server case and a motherboard with enough slots for all your receivers (PCI and PCIe) Receivers for your different sources (Analogue, DVB-T/T2, DVB-S/S2, DVB-C/C2) Conditional Interface (CI) daughterboards for descrambling content protected services Conditional Access Modules (CAM) for the daughterboards Subscription cards for the different services you wish to descramble Software: A modern Linux distribution (Ubuntu for example) with a recent kernel Video4Linux (V4L) DVB drivers and utilities from Linuxtv.org DVB streaming applications such as DVBlast A decent understanding of how Linux works and how to get applications running
  • 15. Hardware Good server grade motherboard with enough PCI and PCIe slots for all your receivers My initial (2009) design was a Supermicro C2SBC-Q (5x PCI, 2x PCIe) Update: Use new generation motherboards with up to 7 PCIe slots on a single board for density Save on PCI/PCIe slots: Use dual or quad tuner cards whenever possible Update: New cards with 6 tuners on their way Use receivers with CI slots onboard/daughterboard or projects such as OSCAM Double check that your hardware supports the symbol rate and modulation for the services you want to receive. Check at a chip level and the driver modules Read and re-read the LinuxTV.org Hardware Wiki to make sure you have the right hardware for your requirements
  • 16. Hardware Successfully used the following cards and CAMs (and many more), YMMV: Technotrend S-1500 (PCI DVB-S) with CI daughterboard, T-1500 (PCI DVB-T), S-3200 (PCI DVB-S2) TBS 6980 (PCIe DVB-S2) with dual tuner functionality TBS 6925 (PCIe DVB-S2) with support for advanced DVB-S2 modes (ACM, VCM, MIS, 16/32APSK) NetUp Dual DVB-S2-CI (PCIe DVB-S2) with dual tuner and dual CI slots onboard DViCO FusionHDTV DVB-T Dual Digital 4 (PCI DVB-T) with dual tuner Hauppauge WinTV Nova-T 500 (PCI DVB-T) with dual tuner SMiT Viaccess, PowerCAM Pro, Neotion ACS 3.1 Suggest using NetUp and TBS PCIe/PCI boards for decent hardware support
  • 17. Networking All networks will differ in one way or another. Chances are you will have at least a switch, possibly a router, one or more wireless access points. And a variety of end points that could receive services from the head-end Note that only the latest 802.11n access points will be able to provide you with decent bandwidth for streaming channels to receivers. They may or may not support multicast Set Top Box (STB) Set Top Box (STB) Set Top Box (STB) IPTV Head-End AccessPoint
  • 18. Video streaming: Unicast vs. Multicast Set Top Box (STB) Unicast Set Top IPTV Head-End Box (STB) Router Set Top Box (STB) Number of Streams Set Top Box (STB) IPTV Head-End Set Top Box (STB) Multicast Router Set Top Box (STB)
  • 19. To Multicast or not to Multicast... Multicast is the preferred manner to distribute a single source to multiple end devices, but: Many low end routers and switches may not handle multicast properly (CPU vs. HW replication) If no routing in your network, turn IGMP snooping on in your switch (with IGMP querier) Source Specific Multicast (SSM) is strongly recommended vs. Any Source Multicast (ASM) Best practice range for SSM groups is 239.232.x.x/16 All modern operating systems support IGMPv3 and SSM Tip: make sure hosts have a route for your multicast traffic for 224.0.0.0/4: “route add -net 224.0.0.0 netmask 240.0.0.0 dev ethX” Unicast creates one stream per receiver, even if 2 receivers are viewing the same service. Whilst this might not be an issue with a couple of receivers, this doesn’t scale in an office, school, campus, etc...
  • 20. Multicast cheat sheet for your router(s) Very condensed version of what you need to do on your (Cisco) router(s) to allow IP multicast traffic to flow. May or may not apply to your specific setup and hardware Enable multicast globally using the “ip multicast-routing” Enable PIM sparse-mode on each interface that sends/receives mcast traffic using “ip pim sparse-mode” For IGMPv3/SSM configuration: Add support for IGMPv3 on each interface using “ip igmp version 3” Change SSM range from default 232/8 (Internet sourced SSM range) to 239.232.x.x (Scoped) “ip pim ssm range 90” and “access-list 90 permit 239.232.0.0 0.0.255.255” For IGMPv2/ASM configuration: Add Rendez-vous Point (RP) using “ip pim rp-address x.x.x.x” where x.x.x.x is the address of the loopback interface of your device. Make sure you add it to all your devices and that it is reachable
  • 21. Multicast traffic over Wifi: Warning! Many wifi access points are agnostic to multicast traffic Traffic is forwarded Means all packets are broadcasted to all wifi clients This will seriously degrade the performance for all users in many setups Some vendors claim multicast support But can it cope with multiple streams and/or high definition video bit rate? If you plan on deploying multicast over wifi work with a vendor that has a multicast enabled Wifi solution Can send multicast traffic only to the clients requesting it Can control the authorised multicast groups on the wireless infrastructure
  • 22. Software compilation environment In order to be able to download and install the different software packages discussed in the next section you will be the following environment. All the syntax used here is specific to Ubuntu, others will need to adapt the syntax. Make “sudo apt-get install make” GCC “sudo apt-get install gcc” Kernel-Headers “sudo apt-get install linux-headers-$(uname -r) build-essential” Python is needed for Mercurial “sudo apt-get install python” Git “sudo apt-get install git-core” Mercurial “sudo apt-get mercurial libncurses-dev”
  • 23. V4L-DVB Grab latest V4L-DVB tree V4L-DVB in distribution release rapidly out of sync with new modules and bug fixes Retrieve v4l-dvb source tree: “hg clone http://linuxtv.org/hg/v4l-dvb” Update sources later on: “cd v4l-dvb” and then “hg pull -u http://linuxtv.org/hg/v4l-dvb” Build v4l-dvb kernel modules: Change to v4l-dvb directory “cd v4l-dvb”, build the modules “make”, install the modules “make install” If more than 8 adapters, change DVB_MAX_ADAPTERS from 8 to a higher number in the menuconfig Tip: Include only modules you really need for your hardware
  • 24. V4L-DVB modules in the kernel [ 8.012881] saa7146: found saa7146 @ mem f8054000 [ 7.870037] saa7146: register extension 'budget_ci dvb'. (revision 1, irq 65) (0x13c2,0x1019). [ 7.870109] budget_ci dvb 0000:06:01.0: PCI INT A -> GSI 74 [ 8.012892] saa7146 (1): dma buffer size 192512 (level, low) -> IRQ 64 [ 8.012896] DVB: registering new adapter (TT-Budget [ 7.870236] saa7146: found saa7146 @ mem f82c4000 S2-3200 PCI) (revision 1, irq 64) (0x13c2,0x1012). [ 8.070942] adapter has MAC addr = 00:d0:5c:0b:5b:6d [ 7.870247] saa7146 (0): dma buffer size 192512 [ 8.071348] input: Budget-CI dvb ir receiver saa7146 (1) as / [ 7.870251] DVB: registering new adapter (TT-Budget-T-CI PCI) devices/pci0000:00/0000:00:06.0/0000:05:00.0/0000:06:02.0/ input/input5 [ 7.931683] adapter has MAC addr = 00:d0:5c:04:43:06 [ 8.414241] stb0899_attach: Attaching STB0899 [ 7.932235] input: Budget-CI dvb ir receiver saa7146 (0) as / devices/pci0000:00/0000:00:06.0/0000:05:00.0/0000:06:01.0/ [ 8.443895] stb6100_attach: Attaching STB6100 input/input4 [ 8.454305] LNBx2x attached on addr=8 [ 8.034327] DVB: registering adapter 0 frontend 0 (Philips TDA10046H DVB-T)... [ 8.454310] DVB: registering adapter 1 frontend 0 (STB0899 [ 8.012786] budget_ci dvb 0000:06:02.0: PCI INT A -> GSI 78 Multistandard)... (level, low) -> IRQ 65
  • 25. DVB-APPS dvb-apps is a set of tools to allow you to scan for available channels and then tune to a given service. Useful for preliminary debugging when you can’t tune to a given service To retrieve the dvb-apps source tree: “hg clone http://linuxtv.org/hg/dvb-apps” To update the sources later on: “cd dvb-apps” and then “hg pull -u http://linuxtv.org/hg/dvb-apps” Change into the directory “cd dvb-apps”, build the modules “make”, install “sudo make install” Details about this package are available here: http://www.linuxtv.org/wiki/index.php/ LinuxTV_dvb-apps
  • 26. dvbsnoop -s feinfo -frontend /dev/dvb/adapter0/frontend0 Checking your devices dvbsnoop V1.4.00 -- http://dvbsnoop.sourceforge.net/ --------------------------------------------------------- FrontEnd Info... --------------------------------------------------------- Device: /dev/dvb/adapter0/frontend0 Basic capabilities: DVBsnoop can allow you to check if your DVB Name: "Philips TDA10046H DVB-T" Frontend-type: OFDM (DVB-T) devices have been detected by the OS Frequency (min): 51000.000 kHz Frequency (max): 858000.000 kHz Frequency stepsiz: 166.667 kHz Frequency tolerance: 0 DVBsnoop will query the frontend (RF receiver) of Symbol rate (min): 0.000000 MSym/s Symbol rate (max): 0.000000 MSym/s your DVB device for card details such as frequency Symbol rate tolerance: 0 ppm Notifier delay: 0 ms range, capabilities and current parameters Frontend capabilities: auto inversion FEC 1/2 This doesn’t guarantee the card is in a working state FEC 2/3 FEC 3/4 but provides feedback on the detected capabilites FEC 5/6 FEC 7/8 and if it is recognised by the OS. FEC AUTO QPSK QAM 16 Syntax is “dvbsnoop -s feinfo -frontend /dev/dvb/ QAM 64 QAM AUTO adapterX/frontendX” where adapterX is the dvb auto transmission mode auto guard interval device number (starting with 0, 1, 2, ...) and the Current parameters: Frequency: 0.000 kHz frontend of that device (0 or 1 for the second tuner Inversion: OFF Bandwidth: 8 MHz of a dual tuner device) Stream code rate (hi prio): FEC 1/2 Stream code rate (lo prio): FEC 1/2 Modulation: QPSK Transmission mode: 2k mode Guard interval: 1/32 Hierarchy: none
  • 27. Testing your Scrambling modules As part of the dvb-apps package, you have a tool called gnutv. This command line application allows you to check your rights for your descrambling cards ------------------------------ ------------------------------ PowerCam_HD V2.0.4 PowerCam_HD V2.0.4 0. Quit menu sudo gnutv -adapter 1 -cammenu Valid card 1. Processing... CAM Application type: 01 0. Quit menu Please wait ... CAM Application manufacturer: 02ca 1. Consultation Enter option: CAM Manufacturer code: 3000 2. Authorization ------------------------------ CAM Menu string: PowerCam_HD V2.0.4 Press 'OK' to continue PowerCam_HD V2.0.4 CAM supports the following ca system ids: Enter option: 1 Subscription BIS 0x0500 Please enter your PIN code: XXXX 0. Quit menu ------------------------------ ------------------------------ 1. Subscription per class : PowerCam_HD V2.0.4 PowerCam_HD V2.0.4 2. 11/22/2009 - 12/31/2009 Class: Select a language Card N?: XXXX 3. 100,50 0. Quit menu 0. Quit menu 4. 09/22/2009 - 10/31/2009 Class: 1. English 1. BIS 5. 100,50 2. French 2. BIS-PREPAID 6. 09/13/2009 - 09/22/2009 Class: 3. Spanish 3. ViaEutelsat1 7. 210,150,103,102,101,100 4. German 4. ViaEutelsat2 8. 50,2 5. Arabic A 5. ViaEutelsat3 9. 08/22/2009 - 09/30/2009 Class: 6. Arabic B 6. BIS-EXTRA 10. 100,50 Select one and press 'OK' to continue Press 'OK' to continue Press 'OK' to continue Enter option: 1 Enter option: 1 Enter option: ------------------------------ ------------------------------ Main Menu PowerCam_HD V2.0.4 PowerCam_HD V2.0.4 0. Quit menu Main Menu BIS 1. SmartCard & PIN 0. Quit menu 0. Quit menu 2. CAS 1. SmartCard & PIN 1. Subscription 3. VP: 88730 2. CAS 2. Pre-booking 4. Download Status 3. VP: XXXXX Press 'OK' to continue 5. CSP - Disabled 4. Download Status Enter option: 1 Select one and press 'OK' to continue 5. CSP - Disabled Select one and press 'OK' to continue Enter option: 1 Enter option: 1
  • 28. MuMuDVB MuMuDVB provides RTP/UDP multicast and HTTP unicast streaming capabilities. It takes all services from a transport stream and maps each service to a unique multicast group By default all services are streamed. Options allow to specify specifically which services are required (multiple audios, subtitles, Teletext, data, ...) Session Announcement Protocol (SAP) for receivers that can listen & build a services listing Download from source: “git clone http://mumudvbgit.braice.net/mumudvb”, “cd mumudvb”, “autoreconf -i -f”, “./configure”, “make”, “sudo make install” To launch the application for initial testing (debug) use the following: “mumudvb -d -vvv -s -c <config_file>” Once you have confirmation the setup is working you can skip the -d value
  • 29. MuMuDVB New builds now offer: New DVB parser Software based transcoding feature (needs some updating, currently broken) Supports Software descrambling (SASC-NG) Builds play lists for VLC Player and MythTV formats Support for OpenWRT platform for mobile setups RTP Timestamps support Override/specify adapter to use in the Command Line (vs. config file) IPv6 support including SAP announcements RF Signal level and error rate (if tuner/module supports it) DVB-T2 supports
  • 30. MuMuDVB output Info: Tune: FE_HAS_SYNC : found sync bytes Info: Tune: FE_HAS_LOCK : everything's working... Info: Tune: Strength: 58907 Info: Tune: SNR: 59565 Info: Tune: Event: Frequency: 10772919 (or 8727081) Info: Tune: SymbolRate: 22000000 MuMuDVB Version 1.6.1b_20100614 Info: Tune: FEC_inner: 5 --- Build information --- Info: Tune: Bit error rate: 0 Built with CAM support. Info: Tune: Signal strength: 58891 Built without transcoding support. Info: Tune: SNR: 59565 Built with ATSC support. Info: Tune: FE_STATUS: Built with ATSC long channel names support. Info: Tune: FE_HAS_SIGNAL : found something above the noise level Built with support for DVB API Version 5 (DVB-S2). Info: Tune: FE_HAS_CARRIER : found a DVB signal Built with pthread support (used for periodic signal strength display, cam support, transcoding, and threaded read). Info: Tune: FE_HAS_VITERBI : FEC is stable --------- Info: Tune: FE_HAS_SYNC : found sync bytes Info: Tune: FE_HAS_LOCK : everything's working... (snip) Info: Main: Card 0 tuned Info: Main: The traffic will be shown every 10 seconds Info: Multicast: You decided to send the RTP header (multicast only). Info: Autoconf: Autoconfiguration Start Info: SAP: Sap announces will be sent Info: DVB: Bit error rate: 0 Signal strength: 59198 SNR: 59565 Info: You have enabled the PAT Rewriting Info: Autoconf: Autoconfiguration done Info: Main: Full autoconfiguration, we activate SDT rewritting. if you want to desactivate it see the README. Info: Autoconf: Diffusion 8 channels Info: Main: Full autoconfiguration, we activate sorting of the EIT PID. if you want to desactivate it see the README. Info: Autoconf: Channel number : 0, name : "BBC 1 London" service id 6301 Info: Autoconf: The autoconfiguration auto update is enabled. If you want to disable it put "autoconf_pid_update=0" in Info: Autoconf: Multicast ip : 239.100.1.0:1234 your config file. Info: Autoconf: Channel number : 1, name : "BBC 2 England" service id 6302 Info: Main: Streaming. Freq 10773000 Info: Autoconf: Multicast ip : 239.100.1.1:1234 Info: Tune: Using DVB card "ST STV0299 DVB-S" Info: Autoconf: Channel number : 2, name : "ETV" service id 6306 Info: Tune: Tuning DVB-S to Freq: 1023000 kHz, LO frequency 9750000 kHz Pol:H Srate=22000000, LNB number: 3 Info: Autoconf: Multicast ip : 239.100.1.2:1234 Info: Tune: LNB voltage 18V Info: Autoconf: Channel number : 3, name : "BBC TES 3" service id 6315 Info: Tune: DISEQC SETTING SUCCEDED Info: Autoconf: Multicast ip : 239.100.1.3:1234 Info: Tune: FE_STATUS: Info: Autoconf: Channel number : 4, name : "BBC FOUR" service id 6316 Info: Tune: Strength: 58880 Info: Autoconf: Multicast ip : 239.100.1.4:1234 Info: Tune: SNR: 59415 Info: Autoconf: Channel number : 5, name : "BBC THREE" service id 6319 Info: Tune: FE_STATUS: Info: Autoconf: Multicast ip : 239.100.1.5:1234 Info: Tune: FE_HAS_SIGNAL : found something above the noise level Info: Autoconf: Channel number : 6, name : "BBC 1 NI" service id 6331 Info: Tune: FE_HAS_CARRIER : found a DVB signal Info: Autoconf: Multicast ip : 239.100.1.6:1234 Info: Tune: FE_HAS_VITERBI : FEC is stable Info: Autoconf: Channel number : 7, name : "FIVE" service id 6335 Info: Autoconf: Multicast ip : 239.100.1.7:1234 Info: DVB: Bit error rate: 0 Signal strength: 58891 SNR: 59574
  • 31. DVBlast DVBlast is a simple and powerful MPEG-2 TS demux and streaming application Designed to open DVB device, tune, place PIDs filters, config CAM and demux to output No processing of the streams, transcoding, PID remapping or remultiplexing Focus is on stability and minimal tampering with the stream source Supports V4L-DVB devices (e.g.: S/S2, T/T2, ...), DVB-ASI and UDP/RTP IP inputs CAM menus (MMI) and front-end status support via external application Download latest released code here: http://downloads.videolan.org/pub/videolan/dvblast/ 2.2/dvblast-2.2.tar.bz2 No configuration options, “make & make install” and your done
  • 32. biTStream Required by DVBlast Replaces unique previous DVBlast external dependency on libdvbpsi in first builds biTStream is a set of C headers allowing a simpler access to binary structures such as specified by MPEG, DVB, IETF, etc Download via “git clone git://git.videolan.org/bitstream.git” Install using “make install”, no autoconf for now Always update before you install new release of DVBlast
  • 33. DVBlast Command line for tuning parameters, config file for channels to be streamed “dvblast -u -f 10773000 -a 0 -n 0 -s 22000000 -v 18 -t 255 -S 1 -e -c <config.cfg>” -u budget mode (no hardware filtering) -f = frequency, a = adapter number, n = frontend, s = symbol rate -v 13|18 voltage to be applied to trigger Vertical|Horizontal polarisation -t = Multicast TTL, -S satellite number (0, 1-4) -e enable EPG pass through (EIT data) -c configuration file containing the specific services you want to multicast Options: For DVB-S2 you must indicate the modulation (QPSK or PSK_8) For DVB-T the bandwidth of the multiplex needs to be added (usually 8MHz)
  • 34. DVBlast (config file) Format is the following: <IP>[:<port>][/udp] <always on> <SID> [<PID>,]* There are three ways of configuring the PIDs to stream : 1. SID-based 239.232.0.1:1234 1 10750 DVBlast will stream all known PIDs from service 10750 (video, audio, and subtitles). The resulting stream is fully MPEG- compliant, with PAT and PMT. 2. SID and PIDs 239.232.0.1:1234 1 10750 1234,1235 DVBlast will stream SID 10750, but only PID 1234 and 1235 will be output. Other known PIDs will be discarded and removed from the PMT. The list of PIDs in the config file does not include the PAT and PMT, but it must include the PCR PID if it is different from the video or audio PID, otherwise the stream won't be compliant. 3. PIDs only 239.232.0.1:1234 1 0 0,128,1234,1235 DVBlast will only stream the PIDs passed. No PAT and PMT will be generated, so if they are not included the stream won't be compliant. Also the included PAT and PMT may contain ghost programs or ESes.
  • 35. DVBlast output sudo dvblast -f 10773000 -n 0 -e -t 255 -v 18 -s 22000000 -S 3 -C -c BBC.cfg -r /tmp/dvblast.sock -a 0 DVBlast 2.2 (git-2.2-2-g38ef649) warning: restarting debug: using linux-dvb API version 5.4 debug: Frontend "STB0899 Multistandard" type "QPSK (DVB-S/S2)" supports: debug: frequency min: 950000, max: 2150000, stepsize: 0, tolerance: 0 debug: symbolrate min: 5000000, max: 45000000, tolerance: 0 <snip> debug: frequency 10773000 is in Ku-band (lower) debug: configuring LNB to v=18 p=0 satnum=3 debug: tuning QPSK frontend to f=10773000 srate=22000000 inversion=-1 fec=999 rolloff=35 modulation=legacy pilot=-1 <snip> debug: conf: 239.232.232.21:3000 config=0x61 sid=6301 pids[0] <snip> debug: frontend has acquired carrier BBC.cfg Configuration file debug: frontend has acquired stable FEC :BBC 1 London debug: frontend has acquired sync 239.232.232.21:3000 1 6301 info: frontend has acquired lock :BBC 2 England frontend has acquired lock 239.232.232.22:3000 1 6302 debug: - Bit error rate: 0 :BBC THREE debug: - Signal strength: 211 239.232.232.23:3000 1 6319 debug: - SNR: 117 :BBC FOUR <snip> 239.232.232.24:3000 1 6316 debug: new PAT tsid=2045 version=11 :FIVE debug: * program number=6301 pid=256 239.232.232.25:3000 1 6335 <snip>
  • 36. DVBlast updates... Introduced a buffering scheme to smooth packet output Added support for per output options Added ATSC A/52 stream types Added option to build MRTG graph files Moved from SVN to GIT some time ago “git clone git://git.videolan.org/dvblast.git” Better support for descrambling by: supporting asynchronous I/O CAM operations removing limitations on number of CA systems IDs and programs
  • 38. VLC Media Player A well known Open Source media player, supports most OSes, a large number of file formats, audio and video codecs In the options enable support for SAP announcement to pickup the services via the playlist menu (that’s if sessions are announced and being received) If no SAP service, you can load a file containing all the services settings, enter manually or link from a web page GPU decode acceleration introduced in VLC 1.1 for Windows Vista/7 and Linux (Nvidia and AMD/ATI) and to be included in 2.1 for OS X builds
  • 39. VLC Media Player - Services list format #EXTM3U #EXTINF:0,1 - Channel Name Using the Extended M3U Playlist format, you can rtp://@239.192.1.1:1234 #EXTINF:0,2 - Channel Name create a service list for VLC rtp://@239.192.1.2:1234 #EXTINF:0,3 - Channel Name Load the file directly into VLC locally or remotely rtp://@239.192.1.3:1234 #EXTINF:0,4 - Channel Name over your network rtp://@239.192.1.4:1234 #EXTINF:0,5 - Channel Name rtp://@239.192.1.5:1234 This will load the services list into the VLC playlist #EXTM3U and allow you to select the services you wish to #EXTINF:0,1 - Channel Name view rtp://192.168.1.100@239.232.1.1:1234 #EXTINF:0,2 - Channel Name rtp://192.168.1.100@239.232.1.2:1234 Double click on the service and your up and #EXTINF:0,3 - Channel Name running rtp://192.168.1.100@239.232.1.3:1234 #EXTINF:0,4 - Channel Name rtp://192.168.1.100@239.232.1.4:1234 #EXTINF:0,5 - Channel Name rtp://192.168.1.100@239.232.1.5:1234
  • 40. MythTV Open Source software digital video recorder (DVR). Has been under development since 2002 and contains most features a modern DVR would provide Split in 2 main components: MythBackend: Server applications dealing with scheduling, recording, keeping TV listings up to date MythFrontend: Provides end-user interface and communicates with one or more backends Since version 0.21 and with some extra work you can integrate IPTV multicast sources as a valid input for MythTV MythTV wiki provides further details on how to do this for some IPTV service provides, so does a link in the reference section. This will require some tweaking to get it running
  • 41. Android client After much trial and error: Google Galaxy Nexus phone running Android 4.2 (initially tested with 4.0) Wifi network with multicast support enabled RTP or UDP encapsulated streams 5 clients I tested: VLC for Android using v0.7 builds (Tested with RTP sources) Daroon Player (Tested with RTP sources) Wondershare Player (Tested with RTP sources) VPlayer (Tested with UDP sources) MX Player (Tested with UDP sources)
  • 42. iOS client Finally found a single application very recently: Haivision InStream Mobile for iOS Tested on iPad 2 with iOS 6 Wifi network with multicast support enabled Tested with UDP and RTP encapsulated streams Available on the Apple iTunes store
  • 43. XBMC Open Source software media player. Created in 2003 and ported to Linux, OS X, Windows. Supports SAP (Session Announcement Protocol) messages to channels to media library Recently ported to the Raspberry Pi platform Multicast streaming capabilities available Tested using SAP and static M3U playlists Decoding 1080i sources does require overclocking CPU from default values Slow acquisition time on HD sources, need to tweak settings Currently no IPv6 SAP support
  • 45. Network support for IPv6 (quick intro) Multicast is not always well (or at all) supported on some networking devices, this applies even more to IPv6 multicast First select the scope you wish to use for the distribution of your content Important to contain your multicast traffic within specific boundaries Enable IPv6 multicast globally using the “ipv6 multicast-routing” IPv6 needs to be configured and enabled on all the networked interfaces that will be in use PIM Sparse Mode and MLDv2 enabled by default in Cisco IOS (when features are supported) For MLDv2/SSM configuration (Supported in Windows Vista/7 and Linux 3.0 kernels) For IGMPv2/ASM configuration (Rendez-Vous Point) Add Rendez-vous Point (RP) using “ipv6 pim rp-address x.x.x.x”. Same instructions as IPv4 syntax
  • 46. Head-end & receiver support for IPv6 Good support for IPv6 in the Linux 3.0 kernel branch used in current distributions DVBlast supports IPv6 since r93 commit of the code. Available in current releases No change on DVBlast command line syntax, only config file syntax for the multicast address. Note that the IPv6 address must be in between brackets Ex: [FF15::ABCD]:1234 1 10750 VLC Media Player supports IPv6 out of the box MythTV supports IPv6 with a bit of extra work Some STB vendors also support IPv6 multicast, still patchy Not yet tested on Android or iOS
  • 48. User experience Parental control over broadcast sources Time based Access Lists to block content sources based on time of day XBMC easy to adopt with smartphone/tablet based remote control HDMI CEC issues Setup dependent between display, AV receiver and Raspberry Pi Universal programable remote control to the rescue to overcome those limitations
  • 49. Areas of improvement (IMHO) Web based EPG interface independent of receiver application/player Grab DVB-SI data from multicast sources, create XMLTV output Publish to web interface for users and feeding home media systems Merge with external EPG provider data sources & dynamic channel lineup based on user preferences Output syntax in multiple formats for various players Better IPv6 and/or multicast support In wider set of receivers (STB, applications, smartphones, tablets) & entry level networking equipment MHEG Integrate support for “Red Button” applications on the end devices
  • 50. Summary Basics related to building a video head-end Advantages and constraints related to such a setup Keep in mind your own requirements: services, network, receivers What needs worked on to expand ecosystem (IMHO) Have fun with your own project, please document and share with others....
  • 52. References DVB-T: http://en.wikipedia.org/wiki/DVB-T & http://en.wikipedia.org/wiki/DVB-T2 DVB-S2: http://en.wikipedia.org/wiki/DVB-S2 DVB-C: http://en.wikipedia.org/wiki/DVB-C DVB-CI: http://en.wikipedia.org/wiki/DVB-CI CAM: http://en.wikipedia.org/wiki/Conditional_Access_Module King of Sat: http://en.kingofsat.net/ Aston Professional: http://www.aston-france.com/uk-modules-professionnels.html SMiT http://www.smit.com.cn/index.php?lang=en
  • 53. References V4L-DVB: http://www.linuxtv.org/ Linux-media ML archives: http://www.mail-archive.com/linux-media@vger.kernel.org/ MuMuDVB: http://mumudvb.braice.net/ DVBlast: http://www.videolan.org/projects/dvblast.html TSDecrypt: http://georgi.unixsol.org/programs/tsdecrypt/ VLC: http://www.videolan.org/ MythTV: http://www.mythtv.org/ IPTV with MythTV: http://www.avenard.org/iptv/MythTV.html TVheadend: http://www.lonelycoder.com/hts/tvheadend_overview.html Wireshark: http://www.wireshark.org/

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. Reduced load on Server.\nReduced load on Network Links\nScales to &amp;#x2018;any&amp;#x2019; number of receivers\n\nUnicast transmission sends multiple copies of data, one copy for each receiver\nEx: host transmits 3 copies of data and network forwards each to 3 separate receivers\nEx: host can only send to one receiver at a time\nMulticast transmission sends a single copy of data to multiple receivers\nEx: host transmits 1 copy of data and network replicates at last possible hop for each receiver, each packet exists only one time on any given network\nEx: host can send to multiple receivers simultaneously\n\nExamples of multicast services / applications:\nIP TV (SP)\nGeneral enterprise video distribution\nMarket data distribution &amp;#x2013; Tibco (financial services industry)\nHoot-n-Holler voice service\n
  19. Reduced load on Server.\nReduced load on Network Links\nScales to &amp;#x2018;any&amp;#x2019; number of receivers\n\nUnicast transmission sends multiple copies of data, one copy for each receiver\nEx: host transmits 3 copies of data and network forwards each to 3 separate receivers\nEx: host can only send to one receiver at a time\nMulticast transmission sends a single copy of data to multiple receivers\nEx: host transmits 1 copy of data and network replicates at last possible hop for each receiver, each packet exists only one time on any given network\nEx: host can send to multiple receivers simultaneously\n\nExamples of multicast services / applications:\nIP TV (SP)\nGeneral enterprise video distribution\nMarket data distribution &amp;#x2013; Tibco (financial services industry)\nHoot-n-Holler voice service\n
  20. Reduced load on Server.\nReduced load on Network Links\nScales to &amp;#x2018;any&amp;#x2019; number of receivers\n\nUnicast transmission sends multiple copies of data, one copy for each receiver\nEx: host transmits 3 copies of data and network forwards each to 3 separate receivers\nEx: host can only send to one receiver at a time\nMulticast transmission sends a single copy of data to multiple receivers\nEx: host transmits 1 copy of data and network replicates at last possible hop for each receiver, each packet exists only one time on any given network\nEx: host can send to multiple receivers simultaneously\n\nExamples of multicast services / applications:\nIP TV (SP)\nGeneral enterprise video distribution\nMarket data distribution &amp;#x2013; Tibco (financial services industry)\nHoot-n-Holler voice service\n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n