Difference between revisions of "Testbed Readme"

From NMSL
 
(4 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
The subversion link of the mobile TV project is:
 
The subversion link of the mobile TV project is:
 
https://cs-svn.cs.surrey.sfu.ca/svn/nsl
 
https://cs-svn.cs.surrey.sfu.ca/svn/nsl
The directory should be self-contained: users can set up a base station with only Ubuntu and our project directory. To achieve this, please keep our code within the project directory, and create symbolic links if necessary. For example, Apache server may access web files, which reside in /home/cly/DVB-H/web, through a link.
+
The directory should be self-contained: users can set up a base station with only Ubuntu and our project directory. To achieve this, please keep our code within the project directory, and create symbolic links if necessary. For example, Apache server may access web files, which reside in /home/cly/DVB-H/web, through a link. Notice that we keep binaries that do not come with Ubuntu packages (such as timeslicer and sec2ts) in our bin/ directories. Common binaries (such as argtable2-dev) are installed through apt-get in /usr or /usr/local.
  
The current directory structure looks like:
+
The current directory structure is as the following:
<tt><pre>
+
<pre>
 
.
 
.
 
|-- bin                          binaries for DVB-H service
 
|-- bin                          binaries for DVB-H service
Line 23: Line 23:
 
`-- web                          web user interface
 
`-- web                          web user interface
 
     `-- configs
 
     `-- configs
</pre></tt>
+
</pre>
  
 +
== Start Test Cases with Scripts ==
  
 +
Several test cases, such as esg_ipdc_test, can be started with scripts under script/ directory. Such directory contains three sub-directories:
 +
<pre>
 +
scripts/esg_ipdc_test/      psi/si table configurations are in this directory
 +
|-- esg                            ESG and (flute) fdt files are here
 +
|  `-- flute-downloads      not used, created by mad flute
 +
|-- run.py                        script to start the broadcast service
 +
|-- stop.py                      script to stop all utility/background processes
 +
|-- launch.sh                    auxiliary script called by run.py to start utility processes
 +
`-- logs                          log files of log4c, whose granularity is controlled by log4crc
 +
</pre>
  
== Presetup: ==
+
To start a test case, cd into that directory, and run "sudo ./run.py". To stop a test case, run "sudo ./stop.py" under the same directory. Occasionally, you may need to kill some processes. Following is a complete list of relevant processes:
login with proper account, know the bandwidth and frequency of DVB-H network, start PCI card with the following command
+
# timeslicer
  /DVB-H/Dta1xx/Dta1xxInit start
+
# vlc
 +
# flute
 +
# tsnullfiller
 +
# tsnullshaper
 +
# sec2ts
 +
# DtPlay
  
==File folder structures==
+
The run.py, launch.sh, and stop.py, describe how we invoke/combine the utilities for a complete base station solution. We give a high-level, itemized, startup procedure below. Please read these three scripts for more details.
 +
# start vlc to stream video files  (by launch.sh)
 +
# start flute to send ESG files (by launch.sh)
 +
# start dataaggregator to capture packets from vlc into temp files (by launch.sh)
 +
# start dataaggregator to capture packets from flute into temp files (by launch.sh)
 +
# start timeslicer to encapsulate IP streams into a MPEG-2 traffic stream  (by launch.sh)
 +
# call python code to generate PSI/SI tables, and store them in a temp file (by run.py)
 +
# mux PSI/SI tables with the MPEG-2 traffic stream (by run.py)
 +
# start Dtplay to send MPEG-2 traffic stream over-the-air (by run.py)
  
(1) /nsltester/DVBH-Encapsulator
+
The current available test cases are:
 +
# esg_ipdc_test: implements IPDC ESG with 1 TV channel. To demonstrate the ESG stack.
 +
# esg_oma_test: implements OMA BCAST ESG with 1 TV channel. To demonstrate the ESG stack.
 +
# energy_test: broadcast 8 TV channels, without FEC (due to high CPU load), with OMA BCAST ESG to the first channel only. To demonstrate the PC receiver and P2OPT algorithm.
  
this folder is used to keep Encapsulator source files, whenever you change something in Encapsulator, you need to make again. See
+
== Start Test Cases with Web UI ==
  /nsltester/DVBH-Encapsulator/Makefile for more details
 
  
make
+
XXX to be completed XXX
 
 
make install
 
 
 
(they are installed to /usr/local/bin)
 
 
 
(2) /nsltester/DVBH-Encapsulator/doxgen
 
 
 
this folder is used for doxgen of DVB-H Encapsulator
 
 
 
(3) /nsltester/DVBH-Encapsulator/media
 
 
 
this folder is used to keep video source files
 
 
 
(4) /nsltester/DVBH-Encapsulator/<test*>/log4crc
 
 
 
this files is used to control the log level, remember DVB-H Encapsulator use log4c, the log files are kept in
 
  /nsltester/DVBH-Encapsulator/<test*>/logs
 
 
 
Note: each test will have its own log files, e.g. for test1, the logs are under /nsltester/DVBH-Encapsulator/test1/logs
 
 
 
(5) /nsltester/DVBH-Encapsulator/test*
 
 
 
these folders are used for DVB-H demo, each folder test a feature.
 
 
 
 
 
==Test1: only play one video program, no ESG==
 
 
 
  cd /nsltester/DVBH-Encapsulator/test1
 
  ./run.py (it will call test1.sh, see the following for details)
 
 
 
After the test:
 
  ./stop.py  (it just do some system call to kill process)
 
 
 
steps:
 
 
 
1.1 start vlc to play the video file (done by test1.sh)
 
 
 
1.2 start DataAggregator (proxy) to get the packet (done by test1.sh)
 
 
 
1.3 start timeslicer (done by test1.sh)
 
 
 
1.4 add PSI/SI info  (done by run.py)
 
 
 
1.5 use Dtplay to send DVB-H signal (done by run.py)
 
 
 
 
 
==Test2: one video program and its ESG==
 
 
 
  cd /nsltester/DVBH-Encapsulator/test2
 
  ./run.py (it will call test2.sh, see the following for details)
 
 
 
After the test:
 
  ./stop.py 
 
 
 
steps:
 
 
 
2.1 (a) start vlc to play the video file (done by test2.sh)
 
 
 
2.1 (b) start flute to send ESG files (done by test2.sh)
 
 
 
2.2 (a) start DataAggregator (proxy) to get the packet from vlc (done by test2.sh)
 
 
 
2.2 (b) start DataAggregator (proxy) to get the packet from flute (done by test2.sh)
 
 
 
2.3 start timeslicer  (done by test2.sh)
 
 
 
2.4 add PSI/SI info (done by run.py)
 
 
 
2.5 use Dtplay to send DVB-H signal (done by run.py)
 
 
 
==Test3: three video programs, and one ESG==
 
 
 
  cd /nsltester/DVBH-Encapsulator/test3
 
  ./run.py (it will call test3.sh, see the following for details)
 
 
 
After the test:
 
  ./stop.py
 
 
 
steps:
 
 
 
3.1 (a) start vlc to play three video files (done by test3.sh)
 
 
 
3.1 (b) start flute to send ESG files (done by test3.sh)
 
 
 
3.2 (a) start three DataAggregator (proxy) to get the packet from vlc (done by test3.sh)
 
 
 
3.2 (b) start one DataAggregator (proxy) to get the packet from flute (done by test3.sh)
 
 
 
3.3 start timeslicer  (done by test3.sh)
 
 
 
3.4 add PSI/SI info (done by run.py)
 
 
 
3.5 use Dtplay to send DVB-H signal (done by run.py)
 

Latest revision as of 16:55, 3 October 2008

Directory Structure of DVB-H Project

The subversion link of the mobile TV project is: https://cs-svn.cs.surrey.sfu.ca/svn/nsl The directory should be self-contained: users can set up a base station with only Ubuntu and our project directory. To achieve this, please keep our code within the project directory, and create symbolic links if necessary. For example, Apache server may access web files, which reside in /home/cly/DVB-H/web, through a link. Notice that we keep binaries that do not come with Ubuntu packages (such as timeslicer and sec2ts) in our bin/ directories. Common binaries (such as argtable2-dev) are installed through apt-get in /usr or /usr/local.

The current directory structure is as the following:

.
|-- bin                           binaries for DVB-H service
|-- media                       sample video files
|-- scripts                      test scripts to launch test configurations
|   `-- esg_ipdc_test       test case with IPDC ESG and one TV channel
|-- src                           (possibly modified) source code for programs not supported by Ubuntu
|   |-- LinuxSDK             driver and API of the modulator card
|   |-- OpenCaster           DVB-T utilities, note that it only works with Python 2.4
|   |-- enc_proto             an early IPE prototype used to evaluate our algorithms (based on fatcaps)
|   |-- fatcaps_v0.5         IP Encapsulator
|   |-- fec-3.0.1               FEC library used by fatcaps
|   |-- flute                     mad flute code, we only use its simple sender
|   `-- log4c-1.2.1           logging library for C programs
|-- tar                            (unmodified) source code from other projects
`-- web                          web user interface
    `-- configs

Start Test Cases with Scripts

Several test cases, such as esg_ipdc_test, can be started with scripts under script/ directory. Such directory contains three sub-directories:

scripts/esg_ipdc_test/      psi/si table configurations are in this directory
|-- esg                            ESG and (flute) fdt files are here
|   `-- flute-downloads      not used, created by mad flute
|-- run.py                        script to start the broadcast service
|-- stop.py                       script to stop all utility/background processes
|-- launch.sh                    auxiliary script called by run.py to start utility processes
`-- logs                           log files of log4c, whose granularity is controlled by log4crc

To start a test case, cd into that directory, and run "sudo ./run.py". To stop a test case, run "sudo ./stop.py" under the same directory. Occasionally, you may need to kill some processes. Following is a complete list of relevant processes:

  1. timeslicer
  2. vlc
  3. flute
  4. tsnullfiller
  5. tsnullshaper
  6. sec2ts
  7. DtPlay

The run.py, launch.sh, and stop.py, describe how we invoke/combine the utilities for a complete base station solution. We give a high-level, itemized, startup procedure below. Please read these three scripts for more details.

  1. start vlc to stream video files (by launch.sh)
  2. start flute to send ESG files (by launch.sh)
  3. start dataaggregator to capture packets from vlc into temp files (by launch.sh)
  4. start dataaggregator to capture packets from flute into temp files (by launch.sh)
  5. start timeslicer to encapsulate IP streams into a MPEG-2 traffic stream (by launch.sh)
  6. call python code to generate PSI/SI tables, and store them in a temp file (by run.py)
  7. mux PSI/SI tables with the MPEG-2 traffic stream (by run.py)
  8. start Dtplay to send MPEG-2 traffic stream over-the-air (by run.py)

The current available test cases are:

  1. esg_ipdc_test: implements IPDC ESG with 1 TV channel. To demonstrate the ESG stack.
  2. esg_oma_test: implements OMA BCAST ESG with 1 TV channel. To demonstrate the ESG stack.
  3. energy_test: broadcast 8 TV channels, without FEC (due to high CPU load), with OMA BCAST ESG to the first channel only. To demonstrate the PC receiver and P2OPT algorithm.

Start Test Cases with Web UI

XXX to be completed XXX