Man Linux: Main Page and Category List

Name

       dvbsnoop - DVB and MPEG stream analyzer

SYNOPSIS

       dvbsnoop [-s mode] [options] pid

       dvbsnoop [-s mode] [options] -if filename [pid]

       dvbsnoop [-s mode] [options] -b [pid] > binary.file

       dvbsnoop [-s mode] [options]

Description

       DVBSNOOP   is   a   text   based  DVB  and  MPEG  stream  analyzer  for
       viewing/debugging stream information, e.g. send via digital TV. You may
       also  use  dvbsnoop  to analyze mpeg compliant streams stored on DVD or
       other media.  Dvbsnoop analyzes and displays MPEG,  DVB,  DSM-CC,  MHP,
       etc.  data and structures in human readable form. Possible stream types
       are TS  (tranport  streams),  PS  (program  streams),  PES  (packetized
       elementary streams) or SECTIONS (service information streams).

       DVBSNOOP  also  has  some  additional functionality to analyze receiver
       (set top box, dvb card) data, bandwidth  of  a  transport  stream,  pid
       scan, etc.

       Using  special  network programs like netcat (nc), dvbsnoop may also be
       used to do remote sniffing and decoding. For  post-processing  dvbsnoop
       output,  you  may  use  the  full  range  of  unix  tools and scripting
       languages (grep, perl, python, mrtg, gnuplot, etc.).

Usage

       Dvbsnoop  provides  an  online  and   offline   input   and   different
       snoop/decoding modes (see below).

       Using    dvbsnoop   ’online’   requires   dvb-api   compliant   devices
       (http://www.linuxtv.org) to grab  live  stream  information  from  e.g.
       satellite or cable tv or data streams. You will also need DVB compliant
       hardware (e.g. DVB-S pci card or a linux based setop box like dbox2  or
       Dreambox)  to  receive  DVB data streams. To tune into a transponder or
       frequency, please use a program like ’szap’,  ’dvbtune’  or  a  DVB-GUI
       like ’Enigma’, ’Neutrino’, ’MythTV’, ’VDR’, etc..

       The  ’offline’  mode  enables  you to analyze binary stream files (e.g.
       transport stream files or PES files).

       Some options are specific for the selected modes. You may try different
       combinations of command line options to get best results.

       A  short  FAQ  for  common questions and example decoding output can be
       found at http://dvbsnoop.sourceforge.net.

Basic Decoding Selection Mode Command Line Options

       -s [ts|ps|pes|sec|pidscan|bandwidth|signal|feinfo]
               Basic snoop mode selection.
                 sec      = SI mode (SECTIONS)
                 ts       = transport stream mode
                 ps       = program stream mode (same as PES mode)
                 pes      = packetized elementary stream mode,
                             e.g. teletext, audio, video, data
                 pidscan  = scan and display PIDs on tuned
                             transponder/frequency.
                 bandwidth = bandwidth measurement mode
                             for selected pid.
                 signal   = display tuner signal reception info.
                 feinfo   = display tuner data (frontend info).

              The modes ’sec’, "ps" or "pes" require the selection of  a  PID.
              The  mode  ’ts’  requires  either  a PID specified or the option
              -tsraw.

              A PID can be  specified  using  octal,  decimal  or  hexadecimal
              values.  Examples:  octal: 021, decimal: 17, hexadecimal: 0x11

              If  -s  option  is  omitted,  default  mode is "-s sec" (Section
              mode).

General Command Line Options

       -help
              Print help text with command line options.

       -hideproginfo
              Do not print dvbsnoop header (version, etc.).

General Decoding Output Command Line Options

       -pd <mode>
              Specify print decoding verbose mode. Specify 0 for no output.  9
              will be very verbose. Default is 6.

       -npd
              Same as -pd 0.

       -ph <mode>
              Specify print hex output verbose mode:
               0=no hexdump output, 1=hex output, 2=hex line,
               3=ascii line, 4=alternate hex output. (default is 4)

       -hexdumpbuffer

       -nohexdumpbuffer
              Switch  on/off  hexdump  of stream input buffer.  May be used to
              enhance -ph option. (e.g. -ph 4 -nohexdumpbuffer)

       -nph
              Obsolete, same as -nohexdumpbuffer.

       -t<mode>
              Timestamp output mode:
                 -tf = full timestamp
                 -td = delta timestamp mode,
                 -tn = no time stamp.

       -b
              Binary output of packets  (disables  other  output).   Use  this
              option  to  store  raw  data  in  file  or chain data to another
              program.
                 E.g.:  dvbsnoop -s ts 0x00 -b > file
                        dvbsnoop -s pes 0x3FF -b | ./myprogram

              There might be a file limit on your system (mostly  2  GB)  when
              writing files using ’>’.

Device Selection Command Line Options

       Dvbsnoop  uses  default  devices,  defined  by  the  DVB  API.  On some
       platforms or if using multiple dvb cards,  you  may  want  to  override
       default settings, e.g. to select a different tuner.

       -demux <device>
              Specify <device> for demux.  If not specified, dvbsnoop uses the
              device specified by the linux  dvb-api.

       -dvr <device>
              Specify <device> for dvr.  If not specified, dvbsnoop  uses  the
              device specified by the linux  dvb-api.

       -frontend <device>
              Specify  <device> for frontend.  If not specified, dvbsnoop uses
              the device specified by the linux  dvb-api.

       -adapter <n>
              Specify DVB adapter/card by number <n> (0-9) using default  path
              pattern (e.g. /dev/dvb/adapter1/...). If not specified, dvbsnoop
              uses the default adapter/card - usually 0.

       -devnr <n>
              Specify DVB device number <n> (0-9) on a DVB adapter/card  using
              default  path  pattern  (e.g.  /dev/dvb/adapt.../demux1). If not
              specified, dvbsnoop uses the default device number - usually  0.

       -buffersize <kb>
              Set  demux  read  buffer  size  in  KBytes.   Default  is 0 (use
              internal default value).

       -n <value>
              Stop after reading <value> packets. Use this to limit  the  read
              process.  Default is 0 (no limit).

       -if <file>
              Read binary stream data from file instead of the demux device.
                <file>  =  ’-’  reads  from  standard input.  Depending on the
              decoding  mode  this  might  be  transport  stream,   packetized
              elementary  stream  or  sections.  Please aware, that you cannot
              e.g. use -s pes or -s sec on  a  saved  transport  stream.   The
              decoding/snooping mode has to match the saved stream format!

SECTION Mode (SEC) Specific Command Line Options

       The  following  command  line  options  are  special  to  the ’SECTION’
       decoding mode:

       -s sec
              Section mode.

       -timeout <ms>
              Section read timeout in ms. Default is 0 (no timeout).

       -f <filter>
              Filter value for filtering section data e.g. table id’s.   Value
              may be decimal (49), octal (037) or hexadecimal (0x4F).  You may
              use multibyte filters like: 0x4E.01.20.FF The  filter  comprises
              e.g.  16 bytes covering byte 0 and byte 3..17 in a section, thus
              excluding bytes 1 and 2 (the length field  of  a  section).   To
              check the filter values use -pd 9.

       -m <mask>
              Mask value to use for filters.  Value may be decimal (49), octal
              (037) or hexadecimal (0x4F).   You  may  use  multibyte  filters
              like:  0xFF.F0.FE.FF The filter comprises e.g. 16 bytes covering
              byte 0 and byte 3..17 in a section, thus excluding bytes 1 and 2
              (the length field of a section).  To check the filter values use
              -pd 9.

       -N <value>
              Stop after decoding <value>  packets.  Use  this  to  limit  the
              packet  decoding process.  Useful, when reading stream data from
              file.  -n limits the read packet process, -N limits the decoding
              process.  Using dvb hardware filters -n would be the same as -N.
              Default is 0 (no limit).

       -crc
              Do CRC checking, when reading section  data.   Default  is  off.
              This  is  only supported, if your DVB hardware/firmware supports
              CRC checking.  Remark:  Some  section  types  may  use  Checksum
              instead of CRC.

       -nocrc
              Don’t  do  hardware/firmware  CRC,  when  reading  section  data
              (default).  Some DVB sections do not have proper CRC set!

       -softcrc
              Do   soft   CRC   checking,   when   reading    section    data.
              Hardware/firmware   CRC   should   be   preferred.   Default  is
              -nosoftcrc.  Remark: Some section types may use Checksum instead
              of CRC.

       -nosoftcrc
              Don’t do soft CRC, when reading sections. (default)

       -spiderpid
              Snoop  referenced  section  PIDs.  This option recursively reads
              all PIDs referenced by a section. This option also  sets  number
              of packets to be read to 1 (sets -n 1). To read more packets for
              a pid, use -n <count> after specifying -spiderpid.

       -privateprovider <id>
              Set provider <id> string for decoding of special private  tables
              and   descriptors.  Use  -help  to  display  provider  currently
              supported. If omitted, private data will be displayed as hexdump
              depending  on  -ph  option.  (If you have information on private
              data structures, currently not supported by dvbsnoop, please let
              us know!)

Transport Stream (TS) Mode Specific Command Line Options

       The  following  command  line  options  are  special  to the ’Transport
       Stream’  decoding mode:

       -s ts
              Transport Stream mode.

       -sync
              (obsolete as of 1.4.10, -sync is default. This  option  enforces
              software packet sync for TS and PS/PES).

       -nosync
              (obsolete as of 1.4.10).

       -tssubdecode
              Sub-decode  SI  data  (sections)  or  PS/PES data from transport
              stream decoding. This reads transport stream packets  and  tries
              to  decode  its content.  Useful to decode PES or SI data from a
              transport stream file.

       -tsraw
              Read full transport stream (all pids).   Your  hardware/firmware
              has to support this mode.

       -N <value>
              Stop  after  decoding  <value>  packets.  Use  this to limit the
              packet decoding process.  Useful, when reading stream data  from
              file.  -n limits the read packet process, -N limits the decoding
              process. Using dvb hardware filters -n would be the same as  -N.
              Default is 0 (no limit).

PES or PS Mode Specific Command Line Options

       The following command line options are special to the ’PES’ (packetized
       elementary stream) or ’PS’ (program stream) decoding mode:

       -s ps  Program Stream mode.

       -s pes
              Packetized Elementary Stream mode.

       -sync
              (obsolete as of 1.4.10, -sync is default. This  option  enforces
              software packet sync for TS and PS/PES).

       -nosync
              (obsolete as of 1.4.10).

       PID Scan Mode Specific Command Line Options
              The following command line options are special to the ’PID Scan’
              discovery mode:

       -s pidscan
              Scan PIDs on transponder/frequency.

       -maxdmx <n>
              Set maximum use of DMX filters.  Default is 0 (use all  possible
              filters).

Bandwidth Mode Specific Command Line Options

       There  are  no special command line options for the ’Bandwidth’ display
       mode.

       -s bandwidth
              Determine bandwidth for a dvb  stream.  This  will  be  done  by
              calculating received ts packets in a timeslot.

Signal Mode Specific Command Line Options

       There  are  no  special  command line options for the ’Signal Strength’
       display mode.

       -s signal
              Poll frontend signal status.

       -timeout <ms>
              Poll timing in msec.

Frontend Info Mode Specific Command Line Options

       There are no special command  line  options  for  the  ’Frontend  Info’
       display  mode.

       -s feinfo
              Display frontend information.

Examples

       Examples how to use dvbsnoop:

       Display EPG, 10 sections:
          dvbsnoop -s sec -nph  -n 10  0x12
          dvbsnoop -s sec -ph 3 -n 10 -crc  0x12

       Display sections tree (1 packet each) using private provider data:
          dvbsnoop -s sec -spiderpid -privateprovider premiere.de  0x00

       Display sections tree (1 packet each) skipping "empty" pids:
          dvbsnoop -s sec -spiderpid -timeout 15000  0x00

       Display  PAT  transport  stream (ts) and do subdecoding of sections and
       descriptors:
          dvbsnoop -s ts -pd 4 -tssubdecode -nph  0x00

       Read PES (e.g. Videotext, Video, Audio) stream:
          dvbsnoop -s pes 0x28F
          dvbsnoop -s pes 0x28F -b > pes.bin.file

       Read PS from file and do not show hex dump:
          dvbsnoop -if hdtv_ps_file.mpg -s ps -ph 0 -nohexdumpbuffer -n 30

       Show current signal strength:
          dvbsnoop -s signal
          dvbsnoop -s signal -pd 9 -n 100 -timeout 100

       Show bandwidth usage of a PID  0x1FF:
          dvbsnoop -s bandwidth -n 1000 -pd 2 0x1FF
          dvbsnoop -s bandwidth -buffersize 256 -n 1000  0x1FF

       Do PID scan of a tuned transponder (different display levels):
          dvbsnoop -s pidscan -pd 1
          dvbsnoop -s pidscan -pd 6
          dvbsnoop -s pidscan -pd 9 -maxdmx 12

       Show frontend info:
          dvbsnoop -s feinfo -pd 9

       Try to scan all sections, read 2 packets per PID:
          dvbsnoop -nohexdumpbuffer -spiderpid -n 2  0x0000

       Save 1000 packets of a transport stream to a file:
          dvbsnoop -b -n 1000 -s ts  0x200  > ts_file.pid0x200.bin
          dvbsnoop -b -n 1000 -s ts -tsraw  > ts_file.bin

       Read transport stream (ts) from file and decode:
          dvbsnoop -s ts -if ts_stream.bin
          dvbsnoop -s ts -if ts_file.pid0x200.bin   0x200

       Simple filter for some PID values, some examples:
          dvbsnoop -n 5 -nph 0x00 | grep -i "PID: "
          dvbsnoop -spiderpid -nph -n 10  0x00 | grep -i "PID: " | sort | uniq
          dvbsnoop -s signal -pd 9 | ./perl-statistics-prog.pl

       Other simple filter examples:
          dvbsnoop -s sec -f 0x4E -m 0xFF  0x12
          dvbsnoop -s sec -f 0x4E.34.00 -m 0xFF.FF.0F  0x12
          dvbsnoop -s sec -f 16.00 -m 255.255  0x12
          dvbsnoop -s sec -nph -n 5 0x10 | grep -i "frequency"
          dvbsnoop -s ts -nph 0x100 | grep -i ’Transport_error\|^PID’

       Selecting devices:
          dvbsnoop -s feinfo -pd 9 -frontend /dev/dvb/adapter0/frontend1
          dvbsnoop -s feinfo -pd 9 -adapter 0 -devnr 1
          dvbsnoop -s feinfo -pd 9 -adapter 2

       Sending dvbsnoop data over network, using netcat:
          dvbsnoop -s pes 0x28F -b    nc -q  ServerName 31337

       Do remote decoding of dvb data over network using dvbsnoop and netcat:
         streaming site:
             dvbsnoop -s ts 0x0065 -b    nc -q  ServerName 31000
         receiving site:
             nc -l -p 31000    dvbsnoop -nph -s ts -tssubdecode -if -

         You may also use e.g. dvbtools for sending dvb data over a network:
             dvbstream ....  -->  dumprtp  dvbsnoop -s ts -if -

NOTES

       dvbsnoop  tries  to decode all of the data it receives, e.g. if you try
       to decode a video or audio stream in section mode, dvbsnoop may  assume
       a  section  table  and  will  decode  the  data wrong. In this case the
       decoding will be garbage. Using the ’-crc’ option should  prevent  this
       (if supported at the hardware/driver level).
       dvbsnoop  does  not do DVB stream validation.  dvbsnoop assumes correct
       DVB streams. Corrupted streams or streams with  wrong  semantics  (e.g.
       incorrect length information) will result in wrong decoding output. For
       this reason, the use of ’-crc’ options is strongly recommended.
       Depending on the firmware of your dvb card, dvbsnoop may not be able to
       sniff  on  pids, which are occupied by other processes. This is no bug,
       this is a driver/firmware issue.

SIGNALS

       dvbsnoop  catches signals to provide smooth program termination.
          SIGHUP, SIGQUIT and SIGTERM  will terminate dvbsnoop smoothly.
          SIGABORT will abort at once after flushing buffers.
          SIGKILL  will just kill down dvbsnoop (OS specific).

BUGS

       Please check http://dvbsnoop.sourceforge.net for bug reports.
       Bug reports: http://sourceforge.net/tracker/?group_id=85040

SEE ALSO

       dvbtune (1), dvbstream (1).

Acknowledgments

       DVBSNOOP was written by Rainer Scherg (rasc).
       Copyright (c) 2001-2006  Rainer Scherg

       Additional patches and bugfixes/-reports were provided  by  members  of
       the  tuxbox  project - bringing digital TV to linux based set top boxes
       (e.g. "dbox2" digital tv receiver) and also by users of  dvbsnoop  (see
       the ChangeLog file for credits).
       For     more     information     about     DVBSNOOP     please    visit
       ’http://dvbsnoop.sourceforge.net’.