<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-CA">
	<id>https://nmsl.cs.sfu.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yliu</id>
	<title>NMSL - User contributions [en-ca]</title>
	<link rel="self" type="application/atom+xml" href="https://nmsl.cs.sfu.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yliu"/>
	<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php/Special:Contributions/Yliu"/>
	<updated>2026-05-06T13:14:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=group_meeting&amp;diff=2720</id>
		<title>group meeting</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=group_meeting&amp;diff=2720"/>
		<updated>2009-04-27T05:55:47Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We hold regular meetings (mostly bi-weekly) for discussion. In each meeting, a graduate student will present his/her progress on research. This is followed by 15-20 minute discussion. The presenter can also choose a recent paper and present it to the group. The paper must be from the top conferences/Journals in our research areas, such as, ACM Multimedia, SIGCOMM, INFOCOM, ICNP, IEEE Transactions on Networking, ACM TOMCCAP, and IEEE Transactions on Multimedia. &lt;br /&gt;
&lt;br /&gt;
The meetings are good opportunities for students to practice their presentation skills and to get constructive feedback from the group on their research.  The meetings keep the group members informed about different research problems being addressed in the group. They are also very helpful in finding research topics specially for new students. &lt;br /&gt;
&lt;br /&gt;
Everybody is welcome to attend. Meeting time: (usually) every other Friday, 4:00-5:00 PM, room SUR 4040.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summer 2009==&lt;br /&gt;
&lt;br /&gt;
* 29 July 09: Mohammad &lt;br /&gt;
&lt;br /&gt;
* 17 July 09: Cheng  &lt;br /&gt;
&lt;br /&gt;
*  3 July 09:  Kianoosh &lt;br /&gt;
&lt;br /&gt;
* 19 June 09: Ahmed &lt;br /&gt;
&lt;br /&gt;
* 5 June 09: Canceled (Mohamed attending NOSSDV'09)&lt;br /&gt;
&lt;br /&gt;
* 22 May 09: Cong &lt;br /&gt;
&lt;br /&gt;
* 8 May 09:  [[media:mobiletv.pptx|Yi]]&lt;br /&gt;
&lt;br /&gt;
== Spring 2009 ==&lt;br /&gt;
&lt;br /&gt;
* 17 Apr 09: [[media:infocom09.pptx|Cheng (practice your infocom presentation)]]&lt;br /&gt;
&lt;br /&gt;
* 27 March 09: Andreas Berger &lt;br /&gt;
&lt;br /&gt;
* 27 Feb 09: Shabnam and Yuanbin&lt;br /&gt;
&lt;br /&gt;
* 23 Jan 09: Cheng (rehearse your PhD proposal) and Kianoosh&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2468</id>
		<title>Private: implementing esg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2468"/>
		<updated>2008-10-20T18:17:55Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Debug tools===&lt;br /&gt;
We have the following software analyze tool:&lt;br /&gt;
&lt;br /&gt;
1) Divicatch + USB Analyzer&lt;br /&gt;
&lt;br /&gt;
2) DVBSam + WinTV DVB-T USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have the following hardware:&lt;br /&gt;
&lt;br /&gt;
1) Nokia N92 &lt;br /&gt;
&lt;br /&gt;
2) Nokia N96 &lt;br /&gt;
&lt;br /&gt;
We have the following 2 &amp;quot;working&amp;quot; transport stream:&lt;br /&gt;
&lt;br /&gt;
1) N92.ts (only works on N92, this stream is created in Aug 7, 2006, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
2) N96.ts (only works on N96, this stream is created in Oct 16, 2007, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
These streams are under \\students\yliu\DVBH_debug\TS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N92 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N92.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency1: 562 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  DVB parameters: 8MHz, QPSK, 2/3, 1/8, 8k&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
It includes two ESGs, one is Nokia OAI, the other is early verion of CBMS&lt;br /&gt;
&lt;br /&gt;
[Trial with cell phone device]&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can load Nokia OAI ESG very well and play the corresponding program. and can not load CBMS ESG.&lt;br /&gt;
Since in this transport stream, it has two int tables, and each one correspond to one type of ESG. So it is easy for me to identify which one works. &lt;br /&gt;
&lt;br /&gt;
N96 failed to load any of the above ESGs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Trial with software analyzer]&lt;br /&gt;
&lt;br /&gt;
1) DiviCatch can not detect Nokia OAI ESG, can find CBMS ESG running on port 3937 but failed on bootstrap steps.&lt;br /&gt;
&lt;br /&gt;
2) DVBSam can see Nokia OAI ESG Bootstrap running on FF05:0000:0000:0000:0000:0000:0000:012D with port 9214 , can pass bootstrap steps but failed on ESG receive; can see CBMS ESG running on 224.0.23.14 with port 3937,  can pass bootstrap steps but failed on ESG receive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
It seems like early version of ESG are not supported by current analyzer and latest cell phones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N96 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N96.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency 690 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
Inside this TS, there are three channels:&lt;br /&gt;
&lt;br /&gt;
* Channel1 is used for ESG delivery&lt;br /&gt;
* Channel2 contains three programs, all free to air&lt;br /&gt;
* Channel3 contains two encrypted programs&lt;br /&gt;
&lt;br /&gt;
Our cell phone and analyzer can see the free programs from Channel2. &lt;br /&gt;
&lt;br /&gt;
Channel 2 contains 3 video programs:&lt;br /&gt;
&lt;br /&gt;
* Program1 use 102143.sdp&lt;br /&gt;
* Program2 use 102317.sdp&lt;br /&gt;
* Program3 use 102491.sdp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It includes three types of ESGs, 1st is OMA BCAST, 2nd is DVB IPDC, and the 3rd is Prestandard OMA BCAST and they all use port 9214.&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can NOT load any of the above ESGs&lt;br /&gt;
&lt;br /&gt;
N96 can load ESG and play the video.&lt;br /&gt;
&lt;br /&gt;
But since this TS file only has one int table, so three types of ESG are mixed up together. So the goal is to find which is the actual working ESG on N96. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Try to load IPDC ESG by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
* Try to load OMA ESG/Prestandard OMA BCAST by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Our USB analyzer software can not even read the ESG that works on Nokia N96 cell phone!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* DVBSam failed to receive Prestandard OMA BCAST&lt;br /&gt;
&lt;br /&gt;
* DVBSam can receive IPDC ESG and OMA BCAST ESG successfully.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Either IPDC ESG or OMA BCAST ESG in N96.ts is valid for Nokia N96 cell phone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have put ESG Bootstrap data, IPDC ESG, OMA BCAST ESG for this TS in \\students\yliu\DVBH_debug\ESG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Compare IPDC ESG form N96.ts with our current implementation===&lt;br /&gt;
&lt;br /&gt;
One obvious error of our current IPDC ESG implementation is in urn:dvb:ipdc:cid:2&lt;br /&gt;
&lt;br /&gt;
The length of ESG data repository is wrong, should be 00 0B 53 instead of the original 00 07 5E , such that the whole SDP can be transferred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPDC ESG used insider N96.ts:&lt;br /&gt;
&lt;br /&gt;
* Originally sent in gzip format&lt;br /&gt;
&lt;br /&gt;
* After unzip, self contains 17 outline SDP files, 5 image files (one for each video program) and 7 XML files&lt;br /&gt;
  19_Acquisition.xml &lt;br /&gt;
  19_Content.xml  &lt;br /&gt;
  19_PurchaseChannel.xml&lt;br /&gt;
  19_Purchase.xml&lt;br /&gt;
  19_Schedule.xml &lt;br /&gt;
  19_ServiceBundle.xml&lt;br /&gt;
  19_Service.xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our current IPDC ESG implementation:&lt;br /&gt;
&lt;br /&gt;
* Not sent in gzip format, no need to unzip&lt;br /&gt;
&lt;br /&gt;
* Self-contain 1 inline SDP file, 4 XML files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main difference is how we deal with SDP files, ours are created by VLC which may not works fine on N96 cell phone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Possible failure reason of our current implementation:===&lt;br /&gt;
&lt;br /&gt;
* Might be inline SDP content has problems?&lt;br /&gt;
&lt;br /&gt;
Actually we have not reached to parsing SDP step. So I use the word might be. As if only SDP fail, we should be able to still detect and select the ESG,  but when we try to play the corresponding channel, the ESG will tell you no stream received (due to bad SDP)&lt;br /&gt;
&lt;br /&gt;
* Maybe due to get too many ESG bootstrap&lt;br /&gt;
&lt;br /&gt;
Using DVBSam, when I check ESG status, our testbed will refresh ESG very quickly (less than 10 seconds) That is to do a ESG Bootstrap again and again. &lt;br /&gt;
&lt;br /&gt;
The bad thing is  during a Boorstrap, it will delete all the existing ESG.  So maybe the cell phone is trying to receive the actual ESG, but out testbed sends a ESG bootstrap message and delete all the ESG the cell phone&lt;br /&gt;
is trying to receive. (which equals to a refresh in DVBSam ESG monitor)&lt;br /&gt;
&lt;br /&gt;
And in real DVB-H TS, we can easily see there is no such kind of refresh for ESG. After bootstrap ,we get the actual ESG and they are always sitting there!&lt;br /&gt;
&lt;br /&gt;
Obviously, the real world DVB-H TS is using an ESG server to populate the ESGs , and we are using flute tool, I do not know how to get rid of more than necessary ESG Bootstrap based on our current implementation.&lt;br /&gt;
&lt;br /&gt;
And do remember to use DVBSam which is very powerful. Divicatch in most case can not help much on ESG part! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Compare OMA BCAST ESG used in N96.ts with our current implementation===&lt;br /&gt;
&lt;br /&gt;
The OMA BCAST ESG in N96.ts is much more complex than our current. It has 9 containers, self contain 93 SDP files , 29 xml files and 19 DU files.&lt;br /&gt;
&lt;br /&gt;
Ours only has 1 DU file, 1 SDP, 4 xml files.&lt;br /&gt;
&lt;br /&gt;
I did not do much on this direction due to time limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-H related info found on N92===&lt;br /&gt;
C:\dvbh.ini   &lt;br /&gt;
&lt;br /&gt;
  ScheduleItemRemovalInterval=7&lt;br /&gt;
  AutoScanNwTimeRetryDelay=5&lt;br /&gt;
  ESGRootPort=9214&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
  NifFwdToStackInterval=500&lt;br /&gt;
  NifReadInterval=500&lt;br /&gt;
  SocketRecvBufSize=800000&lt;br /&gt;
  TerminalMaximumBandwidth=500000&lt;br /&gt;
  RequiredDiskFreeSpacePercentage=5&lt;br /&gt;
  AllowUsageTracking=1&lt;br /&gt;
  SignalScanFreqLow=472000000&lt;br /&gt;
  SignalScanFreqHigh=702000000&lt;br /&gt;
  SignalScanBW=8000000&lt;br /&gt;
  SignalScanType=1&lt;br /&gt;
  AutoScanEnabled=1&lt;br /&gt;
  AutoScanStartDelayAfterBoot=5&lt;br /&gt;
  AutoScanInterval=10800&lt;br /&gt;
  AutoScanPreferredPlatformId=-1&lt;br /&gt;
  AutoScanPlatformSetRetryDelay=120&lt;br /&gt;
  PlatformSetUniversalTimeout=60&lt;br /&gt;
  ScanUniversalTimeout=600&lt;br /&gt;
  NetworkTimeUpdateUniversalTimeout=35&lt;br /&gt;
  BootUniversalTimeout=20&lt;br /&gt;
  InactivityPowerOffTime=300&lt;br /&gt;
  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
  ER4SWImageFile=z:\enginer4.img&lt;br /&gt;
  ER4AntennaSetup=z:\ER4AntennaSetup.dat&lt;br /&gt;
  ER4SetPlatformRetryTimeout=25000&lt;br /&gt;
  ER4SetPlatformRetryCount=10&lt;br /&gt;
  ESGMgrUpdTime=120&lt;br /&gt;
  ESGMgrUpdTimeAfterErr=10&lt;br /&gt;
  ESGMgrUpdInterval=180&lt;br /&gt;
  ESGMgrUpdRestartCount=3&lt;br /&gt;
  ESGMgrRxInitTime=30&lt;br /&gt;
  ESGMgrRxPeriodChkTime=20&lt;br /&gt;
  ESGMgrUpdateEnabled=1&lt;br /&gt;
  ESGMgrFCastRestartCount=3&lt;br /&gt;
  ESGMgrUpkeepCleaningDelay=20160&lt;br /&gt;
  ESGMgrCarouselDeltaStartTimeInHours=48&lt;br /&gt;
  UsageTrackerRetryInterval=1&lt;br /&gt;
  UsageTrackerRetryCounts=5&lt;br /&gt;
  ECRenewalTime=1800000000&lt;br /&gt;
  ECRenewalOffset=1&lt;br /&gt;
  ECRemovalTimeInHours=48&lt;br /&gt;
  AutoScanPlatformSetRetries=1&lt;br /&gt;
  NwTimeUpdateRetries=2&lt;br /&gt;
  PowerOffDelayAfterNwDiscovery=3&lt;br /&gt;
  ReplayBuffer=30&lt;br /&gt;
  UsageTrackerDbUpperLimit=1000000&lt;br /&gt;
  DRMClockUpdateInterval=30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Error message found on N96===&lt;br /&gt;
&lt;br /&gt;
Based on N92 dvbh.ini config file, I guess on N96, DVBH.img is either  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
or  ER4SWImageFile=z:\enginer4.img  on N92.  And it sounds more like the complete image, not just the boot image.&lt;br /&gt;
&lt;br /&gt;
And even though N96's dvbh.ini file is short, it seems like some parameters still follows the N92's example, for example &lt;br /&gt;
the log files on N96 matched with N92's config file  &lt;br /&gt;
&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
&lt;br /&gt;
In DVBH.img we find the following readable error message: &lt;br /&gt;
  PSI_Processor   PSI_patpmt  PSI_nitint&lt;br /&gt;
&lt;br /&gt;
  ThreadX API error: The event group is already created. Threadx API error: Invalid event group pointer. The pointer is NULL. System timer thread obj\dvbh\dtv1000_dbg&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
As the above error message happens after the PSI/SI info section, It is the next step--ESG Bootstrap on Cell phone that cause the above error lines. The cell phone tried to receive something and the application crashed.  So on N96 the Subsystem ESG Manage did not get anything and leads to timeout.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
=== TS files for various ESG versions available on-line (Mon Oct 13 09:30:11 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There is a recent DVB-H trial that adopts multiple ESG versions. A final report can be found at [http://www.dvb-h.org/PDF/Mobile%20World%20Congress%20Abertis%20Telecom%20Receivers%20V3.2.pdf  here]. In this trial, two types of Nokia ESG platforms are used: OAI and OMA BCAST. They also made some ts files available on an ftp site (see pp.18 in the above report).&lt;br /&gt;
&lt;br /&gt;
To reverse engineer the requirements of Nokia's OMA BCAST ESG implementation, we can download and analyze the ts files of Nokia BCAST platform. We can use the channel parameters listed in the report to identify the right ts stream.&lt;br /&gt;
&lt;br /&gt;
=== To debug buffer overflow problems (Sun Oct  5 14:57:03 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There have been quite a few nasty buffer overflow bugs in dataaggregator and timeslicer, which cannot be easily found by reviewing the code. To trace the problem, we may use the memory checking feature of the valgrind tool. Valgrind can be installed through apt-get. &lt;br /&gt;
&lt;br /&gt;
To use it, compile your code with CC flags: -g and -O0. Then run the timeslicer (for example) as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
valgrind --leak-check=yes ./timeslicer -n 1024 -g 8 -b 8 -d 400 -c 3 -o qpsk -p esgbt:/tmp/fatcapsesgbt:0x555 -p esg:/tmp/fatcapsesg:0x666 -p prog1:/tmp/fatcapsinput1:0x771 -p prog2:/tmp/fatcapsinput2:0x772 -p prog3:/tmp/fatcapsinput3:0x773 -p prog4:/tmp/fatcapsinput4:0x774 -p prog5:/tmp/fatcapsinput5:0x775 -p prog6:/tmp/fatcapsinput6:0x776 -p prog7:/tmp/fatcapsinput7:0x777 -p prog8:/tmp/fatcapsinput8:0x778 -f /tmp/fatcapsfifo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output of valgrind is descriptive, see their webpage for details.&lt;br /&gt;
&lt;br /&gt;
=== DVBH related files on N96 (Wed Oct  1 19:39:06 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There are a few DVB-H related files in the N96 ROM (z:\) and flash (c:\):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
z:\dvbhsetup.dat&lt;br /&gt;
z:\DVBH.img&lt;br /&gt;
z:\System\data\dvbh\dvbh.ini   &amp;lt;--- readable&lt;br /&gt;
c:\System\data\esg&lt;br /&gt;
c:\System\data\ipdc&lt;br /&gt;
c:\logs\ipdc                             &amp;lt;--- readable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Some error files from N96 (Wed Oct  1 17:26:50 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
The log indicates that the esg receiver fails to receive some file. Unfortunately, we cannot be sure which stage did it fail. Little can be done beyond this point without Nokia's supports, e.g., putting the logger into development/verbose mode.&lt;br /&gt;
&lt;br /&gt;
Therefore, I decided to put N96 aside until we get some supports from Nokia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	------- Subsystem DVBH Manager error -------&lt;br /&gt;
2008/10/01	2:15:01	Emitting module: c\cdvbhmgrinactivityobserver.cpp line: 231&lt;br /&gt;
2008/10/01	2:15:01	Error code:      -2497&lt;br /&gt;
2008/10/01	2:15:01	Description:     Cutting_power_in_NoPlatform_state_due_to_inactivity&lt;br /&gt;
2008/10/01	2:15:01	Additional info: (none)&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	------- Subsystem ESG Manager error -------&lt;br /&gt;
2008/10/01	2:20:30	Emitting module: \common\src\cesgfilereceiver.cpp line: 548&lt;br /&gt;
2008/10/01	2:20:30	Error code:      0&lt;br /&gt;
2008/10/01	2:20:30	Description:     TimerTimeout NoBlocksReceived&lt;br /&gt;
2008/10/01	2:20:30	Additional info: (none)&lt;br /&gt;
2008/10/01	2:25:30	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comments from Mr. Hanel, who is an engineer at Decontis (the company who makes dvbSAM) ===&lt;br /&gt;
&lt;br /&gt;
Nokia is a special case. It is correct that Nokia moves from its own&lt;br /&gt;
proprietary OAI ESG toward OMA BCAST ESG, but the transport streams created&lt;br /&gt;
with Nokia ESG server I saw so far in the near past were not fully&lt;br /&gt;
compatible yet with OMA BCAST. So handhelds from vendors != Nokia have&lt;br /&gt;
problems with broadcasts where Nokia ESG is inside. And the other way is&lt;br /&gt;
often also blocked - Nokia handhelds mostly could not receive ESGs provided&lt;br /&gt;
by ESG servers from other vendors. Mostly only the combination Nokia ESG&lt;br /&gt;
server + Nokia handheld worked properly. Of course, this behavior may change&lt;br /&gt;
with every new software version Nokia releases for its handhelds.&lt;br /&gt;
Since nobody except Nokia itself knows what's going on within their&lt;br /&gt;
handhelds, finding the problem could be difficult. Could be that your ESG is&lt;br /&gt;
fully compliant to the standard and nevertheless the Nokia handheld cannot&lt;br /&gt;
handle it. I'd recommend to update the N96 firmware to the latest version&lt;br /&gt;
and to try at least one more DVB-H handheld, e.g. a recent one from LG or&lt;br /&gt;
Samsung.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2467</id>
		<title>Private: implementing esg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2467"/>
		<updated>2008-10-20T18:14:36Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Debug tools===&lt;br /&gt;
We have the following software analyze tool:&lt;br /&gt;
&lt;br /&gt;
1) Divicatch + USB Analyzer&lt;br /&gt;
&lt;br /&gt;
2) DVBSam + WinTV DVB-T USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have the following hardware:&lt;br /&gt;
&lt;br /&gt;
1) Nokia N92 &lt;br /&gt;
&lt;br /&gt;
2) Nokia N96 &lt;br /&gt;
&lt;br /&gt;
We have the following 2 &amp;quot;working&amp;quot; transport stream:&lt;br /&gt;
&lt;br /&gt;
1) N92.ts (only works on N92, this stream is created in Aug 7, 2006, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
2) N96.ts (only works on N96, this stream is created in Oct 16, 2007, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
These streams are under \\students\yliu\DVBH_debug\TS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N92 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N92.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency1: 562 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  DVB parameters: 8MHz, QPSK, 2/3, 1/8, 8k&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
It includes two ESGs, one is Nokia OAI, the other is early verion of CBMS&lt;br /&gt;
&lt;br /&gt;
[Trial with cell phone device]&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can load Nokia OAI ESG very well and play the corresponding program. and can not load CBMS ESG.&lt;br /&gt;
Since in this transport stream, it has two int tables, and each one correspond to one type of ESG. So it is easy for me to identify which one works. &lt;br /&gt;
&lt;br /&gt;
N96 failed to load any of the above ESGs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Trial with software analyzer]&lt;br /&gt;
&lt;br /&gt;
1) DiviCatch can not detect Nokia OAI ESG, can find CBMS ESG running on port 3937 but failed on bootstrap steps.&lt;br /&gt;
&lt;br /&gt;
2) DVBSam can see Nokia OAI ESG Bootstrap running on FF05:0000:0000:0000:0000:0000:0000:012D with port 9214 , can pass bootstrap steps but failed on ESG receive; can see CBMS ESG running on 224.0.23.14 with port 3937,  can pass bootstrap steps but failed on ESG receive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
It seems like early version of ESG are not supported by current analyzer and latest cell phones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N96 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N96.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency 690 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
Inside this TS, there are three channels:&lt;br /&gt;
&lt;br /&gt;
* Channel1 is used for ESG delivery&lt;br /&gt;
* Channel2 contains three programs, all free to air&lt;br /&gt;
* Channel3 contains two encrypted programs&lt;br /&gt;
&lt;br /&gt;
Our cell phone and analyzer can see the free programs from Channel2. &lt;br /&gt;
&lt;br /&gt;
Channel 2 contains 3 video programs:&lt;br /&gt;
&lt;br /&gt;
* Program1 use 102143.sdp&lt;br /&gt;
* Program2 use 102317.sdp&lt;br /&gt;
* Program3 use 102491.sdp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It includes three types of ESGs, 1st is OMA BCAST, 2nd is DVB IPDC, and the 3rd is Prestandard OMA BCAST and they all use port 9214.&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can NOT load any of the above ESGs&lt;br /&gt;
&lt;br /&gt;
N96 can load ESG and play the video.&lt;br /&gt;
&lt;br /&gt;
But since this TS file only has one int table, so three types of ESG are mixed up together. So the goal is to find which is the actual working ESG on N96. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Try to load IPDC ESG by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
* Try to load OMA ESG/Prestandard OMA BCAST by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Our USB analyzer software can not even read the ESG that works on Nokia N96 cell phone!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* DVBSam failed to receive Prestandard OMA BCAST&lt;br /&gt;
&lt;br /&gt;
* DVBSam can receive IPDC ESG and OMA BCAST ESG successfully.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Either IPDC ESG or OMA BCAST ESG in N96.ts is valid for Nokia N96 cell phone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have put ESG Bootstrap data, IPDC ESG, OMA BCAST ESG for this TS in \\students\yliu\DVBH_debug\ESG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Compare IPDC ESG form N96.ts with our current implementation===&lt;br /&gt;
&lt;br /&gt;
One obvious error of our current IPDC ESG implementation is in urn:dvb:ipdc:cid:2&lt;br /&gt;
&lt;br /&gt;
The length of ESG data repository is wrong, should be 00 0B 53 instead of the original 00 07 5E , such that the whole SDP can be transferred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPDC ESG used insider N96.ts:&lt;br /&gt;
&lt;br /&gt;
* Originally sent in gzip format&lt;br /&gt;
&lt;br /&gt;
* After unzip, self contains 17 outline SDP files, 5 image files (one for each video program) and 7 XML files&lt;br /&gt;
  19_Acquisition.xml &lt;br /&gt;
  19_Content.xml  &lt;br /&gt;
  19_PurchaseChannel.xml&lt;br /&gt;
  19_Purchase.xml&lt;br /&gt;
  19_Schedule.xml &lt;br /&gt;
  19_ServiceBundle.xml&lt;br /&gt;
  19_Service.xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our current IPDC ESG implementation:&lt;br /&gt;
&lt;br /&gt;
* Not sent in gzip format, no need to unzip&lt;br /&gt;
&lt;br /&gt;
* Self-contain 1 inline SDP file, 4 XML files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main difference is how we deal with SDP files, ours are created by VLC which may not works fine on N96 cell phone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Possible failure reason of our current implementation:===&lt;br /&gt;
&lt;br /&gt;
* Might be inline SDP content has problems?&lt;br /&gt;
&lt;br /&gt;
Actually we have not reached to parsing SDP step. So I use the word might be. As if only SDP fail, we should be able to still detect and select the ESG,  but when we try to play the corresponding channel, the ESG will tell you no stream received (due to bad SDP)&lt;br /&gt;
&lt;br /&gt;
* Maybe due to get too many ESG bootstrap&lt;br /&gt;
&lt;br /&gt;
Using DVBSam, when I check ESG status, our testbed will refresh ESG very quickly (less than 10 seconds) That is to do a ESG Bootstrap again and again. &lt;br /&gt;
&lt;br /&gt;
The bad thing is  during a Boorstrap, it will delete all the existing ESG.  So maybe the cell phone is trying to receive the actual ESG, but out testbed sends a ESG bootstrap message and delete all the ESG the cell phone&lt;br /&gt;
is trying to receive. (which equals to a refresh in DVBSam ESG monitor)&lt;br /&gt;
&lt;br /&gt;
And in real DVB-H TS, we can easily see there is no such kind of refresh for ESG. After bootstrap ,we get the actual ESG and they are always sitting there!&lt;br /&gt;
&lt;br /&gt;
Obviously, the real world DVB-H TS is using an ESG server to populate the ESGs , and we are using flute tool, I do not know how to get rid of more than necessary ESG Bootstrap based on our current implementation.&lt;br /&gt;
&lt;br /&gt;
And do remember to use DVBSam which is very powerful. Divicatch in most case can not help much on ESG part! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-H related info found on N92===&lt;br /&gt;
C:\dvbh.ini   &lt;br /&gt;
&lt;br /&gt;
  ScheduleItemRemovalInterval=7&lt;br /&gt;
  AutoScanNwTimeRetryDelay=5&lt;br /&gt;
  ESGRootPort=9214&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
  NifFwdToStackInterval=500&lt;br /&gt;
  NifReadInterval=500&lt;br /&gt;
  SocketRecvBufSize=800000&lt;br /&gt;
  TerminalMaximumBandwidth=500000&lt;br /&gt;
  RequiredDiskFreeSpacePercentage=5&lt;br /&gt;
  AllowUsageTracking=1&lt;br /&gt;
  SignalScanFreqLow=472000000&lt;br /&gt;
  SignalScanFreqHigh=702000000&lt;br /&gt;
  SignalScanBW=8000000&lt;br /&gt;
  SignalScanType=1&lt;br /&gt;
  AutoScanEnabled=1&lt;br /&gt;
  AutoScanStartDelayAfterBoot=5&lt;br /&gt;
  AutoScanInterval=10800&lt;br /&gt;
  AutoScanPreferredPlatformId=-1&lt;br /&gt;
  AutoScanPlatformSetRetryDelay=120&lt;br /&gt;
  PlatformSetUniversalTimeout=60&lt;br /&gt;
  ScanUniversalTimeout=600&lt;br /&gt;
  NetworkTimeUpdateUniversalTimeout=35&lt;br /&gt;
  BootUniversalTimeout=20&lt;br /&gt;
  InactivityPowerOffTime=300&lt;br /&gt;
  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
  ER4SWImageFile=z:\enginer4.img&lt;br /&gt;
  ER4AntennaSetup=z:\ER4AntennaSetup.dat&lt;br /&gt;
  ER4SetPlatformRetryTimeout=25000&lt;br /&gt;
  ER4SetPlatformRetryCount=10&lt;br /&gt;
  ESGMgrUpdTime=120&lt;br /&gt;
  ESGMgrUpdTimeAfterErr=10&lt;br /&gt;
  ESGMgrUpdInterval=180&lt;br /&gt;
  ESGMgrUpdRestartCount=3&lt;br /&gt;
  ESGMgrRxInitTime=30&lt;br /&gt;
  ESGMgrRxPeriodChkTime=20&lt;br /&gt;
  ESGMgrUpdateEnabled=1&lt;br /&gt;
  ESGMgrFCastRestartCount=3&lt;br /&gt;
  ESGMgrUpkeepCleaningDelay=20160&lt;br /&gt;
  ESGMgrCarouselDeltaStartTimeInHours=48&lt;br /&gt;
  UsageTrackerRetryInterval=1&lt;br /&gt;
  UsageTrackerRetryCounts=5&lt;br /&gt;
  ECRenewalTime=1800000000&lt;br /&gt;
  ECRenewalOffset=1&lt;br /&gt;
  ECRemovalTimeInHours=48&lt;br /&gt;
  AutoScanPlatformSetRetries=1&lt;br /&gt;
  NwTimeUpdateRetries=2&lt;br /&gt;
  PowerOffDelayAfterNwDiscovery=3&lt;br /&gt;
  ReplayBuffer=30&lt;br /&gt;
  UsageTrackerDbUpperLimit=1000000&lt;br /&gt;
  DRMClockUpdateInterval=30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Error message found on N96===&lt;br /&gt;
&lt;br /&gt;
Based on N92 dvbh.ini config file, I guess on N96, DVBH.img is either  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
or  ER4SWImageFile=z:\enginer4.img  on N92.  And it sounds more like the complete image, not just the boot image.&lt;br /&gt;
&lt;br /&gt;
And even though N96's dvbh.ini file is short, it seems like some parameters still follows the N92's example, for example &lt;br /&gt;
the log files on N96 matched with N92's config file  &lt;br /&gt;
&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
&lt;br /&gt;
In DVBH.img we find the following readable error message: &lt;br /&gt;
  PSI_Processor   PSI_patpmt  PSI_nitint&lt;br /&gt;
&lt;br /&gt;
  ThreadX API error: The event group is already created. Threadx API error: Invalid event group pointer. The pointer is NULL. System timer thread obj\dvbh\dtv1000_dbg&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
As the above error message happens after the PSI/SI info section, It is the next step--ESG Bootstrap on Cell phone that cause the above error lines. The cell phone tried to receive something and the application crashed.  So on N96 the Subsystem ESG Manage did not get anything and leads to timeout.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
=== TS files for various ESG versions available on-line (Mon Oct 13 09:30:11 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There is a recent DVB-H trial that adopts multiple ESG versions. A final report can be found at [http://www.dvb-h.org/PDF/Mobile%20World%20Congress%20Abertis%20Telecom%20Receivers%20V3.2.pdf  here]. In this trial, two types of Nokia ESG platforms are used: OAI and OMA BCAST. They also made some ts files available on an ftp site (see pp.18 in the above report).&lt;br /&gt;
&lt;br /&gt;
To reverse engineer the requirements of Nokia's OMA BCAST ESG implementation, we can download and analyze the ts files of Nokia BCAST platform. We can use the channel parameters listed in the report to identify the right ts stream.&lt;br /&gt;
&lt;br /&gt;
=== To debug buffer overflow problems (Sun Oct  5 14:57:03 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There have been quite a few nasty buffer overflow bugs in dataaggregator and timeslicer, which cannot be easily found by reviewing the code. To trace the problem, we may use the memory checking feature of the valgrind tool. Valgrind can be installed through apt-get. &lt;br /&gt;
&lt;br /&gt;
To use it, compile your code with CC flags: -g and -O0. Then run the timeslicer (for example) as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
valgrind --leak-check=yes ./timeslicer -n 1024 -g 8 -b 8 -d 400 -c 3 -o qpsk -p esgbt:/tmp/fatcapsesgbt:0x555 -p esg:/tmp/fatcapsesg:0x666 -p prog1:/tmp/fatcapsinput1:0x771 -p prog2:/tmp/fatcapsinput2:0x772 -p prog3:/tmp/fatcapsinput3:0x773 -p prog4:/tmp/fatcapsinput4:0x774 -p prog5:/tmp/fatcapsinput5:0x775 -p prog6:/tmp/fatcapsinput6:0x776 -p prog7:/tmp/fatcapsinput7:0x777 -p prog8:/tmp/fatcapsinput8:0x778 -f /tmp/fatcapsfifo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output of valgrind is descriptive, see their webpage for details.&lt;br /&gt;
&lt;br /&gt;
=== DVBH related files on N96 (Wed Oct  1 19:39:06 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There are a few DVB-H related files in the N96 ROM (z:\) and flash (c:\):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
z:\dvbhsetup.dat&lt;br /&gt;
z:\DVBH.img&lt;br /&gt;
z:\System\data\dvbh\dvbh.ini   &amp;lt;--- readable&lt;br /&gt;
c:\System\data\esg&lt;br /&gt;
c:\System\data\ipdc&lt;br /&gt;
c:\logs\ipdc                             &amp;lt;--- readable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Some error files from N96 (Wed Oct  1 17:26:50 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
The log indicates that the esg receiver fails to receive some file. Unfortunately, we cannot be sure which stage did it fail. Little can be done beyond this point without Nokia's supports, e.g., putting the logger into development/verbose mode.&lt;br /&gt;
&lt;br /&gt;
Therefore, I decided to put N96 aside until we get some supports from Nokia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	------- Subsystem DVBH Manager error -------&lt;br /&gt;
2008/10/01	2:15:01	Emitting module: c\cdvbhmgrinactivityobserver.cpp line: 231&lt;br /&gt;
2008/10/01	2:15:01	Error code:      -2497&lt;br /&gt;
2008/10/01	2:15:01	Description:     Cutting_power_in_NoPlatform_state_due_to_inactivity&lt;br /&gt;
2008/10/01	2:15:01	Additional info: (none)&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	------- Subsystem ESG Manager error -------&lt;br /&gt;
2008/10/01	2:20:30	Emitting module: \common\src\cesgfilereceiver.cpp line: 548&lt;br /&gt;
2008/10/01	2:20:30	Error code:      0&lt;br /&gt;
2008/10/01	2:20:30	Description:     TimerTimeout NoBlocksReceived&lt;br /&gt;
2008/10/01	2:20:30	Additional info: (none)&lt;br /&gt;
2008/10/01	2:25:30	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comments from Mr. Hanel, who is an engineer at Decontis (the company who makes dvbSAM) ===&lt;br /&gt;
&lt;br /&gt;
Nokia is a special case. It is correct that Nokia moves from its own&lt;br /&gt;
proprietary OAI ESG toward OMA BCAST ESG, but the transport streams created&lt;br /&gt;
with Nokia ESG server I saw so far in the near past were not fully&lt;br /&gt;
compatible yet with OMA BCAST. So handhelds from vendors != Nokia have&lt;br /&gt;
problems with broadcasts where Nokia ESG is inside. And the other way is&lt;br /&gt;
often also blocked - Nokia handhelds mostly could not receive ESGs provided&lt;br /&gt;
by ESG servers from other vendors. Mostly only the combination Nokia ESG&lt;br /&gt;
server + Nokia handheld worked properly. Of course, this behavior may change&lt;br /&gt;
with every new software version Nokia releases for its handhelds.&lt;br /&gt;
Since nobody except Nokia itself knows what's going on within their&lt;br /&gt;
handhelds, finding the problem could be difficult. Could be that your ESG is&lt;br /&gt;
fully compliant to the standard and nevertheless the Nokia handheld cannot&lt;br /&gt;
handle it. I'd recommend to update the N96 firmware to the latest version&lt;br /&gt;
and to try at least one more DVB-H handheld, e.g. a recent one from LG or&lt;br /&gt;
Samsung.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2466</id>
		<title>Private: implementing esg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2466"/>
		<updated>2008-10-20T17:58:39Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Debug tools===&lt;br /&gt;
We have the following software analyze tool:&lt;br /&gt;
&lt;br /&gt;
1) Divicatch + USB Analyzer&lt;br /&gt;
&lt;br /&gt;
2) DVBSam + WinTV DVB-T USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have the following hardware:&lt;br /&gt;
&lt;br /&gt;
1) Nokia N92 &lt;br /&gt;
&lt;br /&gt;
2) Nokia N96 &lt;br /&gt;
&lt;br /&gt;
We have the following 2 &amp;quot;working&amp;quot; transport stream:&lt;br /&gt;
&lt;br /&gt;
1) N92.ts (only works on N92, this stream is created in Aug 7, 2006, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
2) N96.ts (only works on N96, this stream is created in Oct 16, 2007, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
These streams are under \\students\yliu\DVBH_debug\TS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N92 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N92.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency1: 562 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  DVB parameters: 8MHz, QPSK, 2/3, 1/8, 8k&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
It includes two ESGs, one is Nokia OAI, the other is early verion of CBMS&lt;br /&gt;
&lt;br /&gt;
[Trial with cell phone device]&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can load Nokia OAI ESG very well and play the corresponding program. and can not load CBMS ESG.&lt;br /&gt;
Since in this transport stream, it has two int tables, and each one correspond to one type of ESG. So it is easy for me to identify which one works. &lt;br /&gt;
&lt;br /&gt;
N96 failed to load any of the above ESGs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Trial with software analyzer]&lt;br /&gt;
&lt;br /&gt;
1) DiviCatch can not detect Nokia OAI ESG, can find CBMS ESG running on port 3937 but failed on bootstrap steps.&lt;br /&gt;
&lt;br /&gt;
2) DVBSam can see Nokia OAI ESG Bootstrap running on FF05:0000:0000:0000:0000:0000:0000:012D with port 9214 , can pass bootstrap steps but failed on ESG receive; can see CBMS ESG running on 224.0.23.14 with port 3937,  can pass bootstrap steps but failed on ESG receive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
It seems like early version of ESG are not supported by current analyzer and latest cell phones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N96 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N96.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency 690 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
Inside this TS, there are three channels:&lt;br /&gt;
&lt;br /&gt;
* Channel1 is used for ESG delivery&lt;br /&gt;
* Channel2 contains three programs, all free to air&lt;br /&gt;
* Channel3 contains two encrypted programs&lt;br /&gt;
&lt;br /&gt;
Our cell phone and analyzer can see the free programs from Channel2. &lt;br /&gt;
&lt;br /&gt;
Channel 2 contains 3 video programs:&lt;br /&gt;
&lt;br /&gt;
* Program1 use 102143.sdp&lt;br /&gt;
* Program2 use 102317.sdp&lt;br /&gt;
* Program3 use 102491.sdp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It includes three types of ESGs, 1st is OMA BCAST, 2nd is DVB IPDC, and the 3rd is Prestandard OMA BCAST and they all use port 9214.&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can NOT load any of the above ESGs&lt;br /&gt;
&lt;br /&gt;
N96 can load ESG and play the video.&lt;br /&gt;
&lt;br /&gt;
But since this TS file only has one int table, so three types of ESG are mixed up together. So the goal is to find which is the actual working ESG on N96. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Try to load IPDC ESG by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
* Try to load OMA ESG/Prestandard OMA BCAST by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Our USB analyzer software can not even read the ESG that works on Nokia N96 cell phone!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* DVBSam failed to receive Prestandard OMA BCAST&lt;br /&gt;
&lt;br /&gt;
* DVBSam can receive IPDC ESG and OMA BCAST ESG successfully.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Either IPDC ESG or OMA BCAST ESG in N96.ts is valid for Nokia N96 cell phone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have put ESG Bootstrap data, IPDC ESG, OMA BCAST ESG for this TS in \\students\yliu\DVBH_debug\ESG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Compare IPDC ESG form N96.ts with our current implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-H related info found on N92===&lt;br /&gt;
C:\dvbh.ini   &lt;br /&gt;
&lt;br /&gt;
  ScheduleItemRemovalInterval=7&lt;br /&gt;
  AutoScanNwTimeRetryDelay=5&lt;br /&gt;
  ESGRootPort=9214&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
  NifFwdToStackInterval=500&lt;br /&gt;
  NifReadInterval=500&lt;br /&gt;
  SocketRecvBufSize=800000&lt;br /&gt;
  TerminalMaximumBandwidth=500000&lt;br /&gt;
  RequiredDiskFreeSpacePercentage=5&lt;br /&gt;
  AllowUsageTracking=1&lt;br /&gt;
  SignalScanFreqLow=472000000&lt;br /&gt;
  SignalScanFreqHigh=702000000&lt;br /&gt;
  SignalScanBW=8000000&lt;br /&gt;
  SignalScanType=1&lt;br /&gt;
  AutoScanEnabled=1&lt;br /&gt;
  AutoScanStartDelayAfterBoot=5&lt;br /&gt;
  AutoScanInterval=10800&lt;br /&gt;
  AutoScanPreferredPlatformId=-1&lt;br /&gt;
  AutoScanPlatformSetRetryDelay=120&lt;br /&gt;
  PlatformSetUniversalTimeout=60&lt;br /&gt;
  ScanUniversalTimeout=600&lt;br /&gt;
  NetworkTimeUpdateUniversalTimeout=35&lt;br /&gt;
  BootUniversalTimeout=20&lt;br /&gt;
  InactivityPowerOffTime=300&lt;br /&gt;
  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
  ER4SWImageFile=z:\enginer4.img&lt;br /&gt;
  ER4AntennaSetup=z:\ER4AntennaSetup.dat&lt;br /&gt;
  ER4SetPlatformRetryTimeout=25000&lt;br /&gt;
  ER4SetPlatformRetryCount=10&lt;br /&gt;
  ESGMgrUpdTime=120&lt;br /&gt;
  ESGMgrUpdTimeAfterErr=10&lt;br /&gt;
  ESGMgrUpdInterval=180&lt;br /&gt;
  ESGMgrUpdRestartCount=3&lt;br /&gt;
  ESGMgrRxInitTime=30&lt;br /&gt;
  ESGMgrRxPeriodChkTime=20&lt;br /&gt;
  ESGMgrUpdateEnabled=1&lt;br /&gt;
  ESGMgrFCastRestartCount=3&lt;br /&gt;
  ESGMgrUpkeepCleaningDelay=20160&lt;br /&gt;
  ESGMgrCarouselDeltaStartTimeInHours=48&lt;br /&gt;
  UsageTrackerRetryInterval=1&lt;br /&gt;
  UsageTrackerRetryCounts=5&lt;br /&gt;
  ECRenewalTime=1800000000&lt;br /&gt;
  ECRenewalOffset=1&lt;br /&gt;
  ECRemovalTimeInHours=48&lt;br /&gt;
  AutoScanPlatformSetRetries=1&lt;br /&gt;
  NwTimeUpdateRetries=2&lt;br /&gt;
  PowerOffDelayAfterNwDiscovery=3&lt;br /&gt;
  ReplayBuffer=30&lt;br /&gt;
  UsageTrackerDbUpperLimit=1000000&lt;br /&gt;
  DRMClockUpdateInterval=30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Error message found on N96===&lt;br /&gt;
&lt;br /&gt;
Based on N92 dvbh.ini config file, I guess on N96, DVBH.img is either  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
or  ER4SWImageFile=z:\enginer4.img  on N92.  And it sounds more like the complete image, not just the boot image.&lt;br /&gt;
&lt;br /&gt;
And even though N96's dvbh.ini file is short, it seems like some parameters still follows the N92's example, for example &lt;br /&gt;
the log files on N96 matched with N92's config file  &lt;br /&gt;
&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
&lt;br /&gt;
In DVBH.img we find the following readable error message: &lt;br /&gt;
  PSI_Processor   PSI_patpmt  PSI_nitint&lt;br /&gt;
&lt;br /&gt;
  ThreadX API error: The event group is already created. Threadx API error: Invalid event group pointer. The pointer is NULL. System timer thread obj\dvbh\dtv1000_dbg&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
As the above error message happens after the PSI/SI info section, It is the next step--ESG Bootstrap on Cell phone that cause the above error lines. The cell phone tried to receive something and the application crashed.  So on N96 the Subsystem ESG Manage did not get anything and leads to timeout.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
=== TS files for various ESG versions available on-line (Mon Oct 13 09:30:11 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There is a recent DVB-H trial that adopts multiple ESG versions. A final report can be found at [http://www.dvb-h.org/PDF/Mobile%20World%20Congress%20Abertis%20Telecom%20Receivers%20V3.2.pdf  here]. In this trial, two types of Nokia ESG platforms are used: OAI and OMA BCAST. They also made some ts files available on an ftp site (see pp.18 in the above report).&lt;br /&gt;
&lt;br /&gt;
To reverse engineer the requirements of Nokia's OMA BCAST ESG implementation, we can download and analyze the ts files of Nokia BCAST platform. We can use the channel parameters listed in the report to identify the right ts stream.&lt;br /&gt;
&lt;br /&gt;
=== To debug buffer overflow problems (Sun Oct  5 14:57:03 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There have been quite a few nasty buffer overflow bugs in dataaggregator and timeslicer, which cannot be easily found by reviewing the code. To trace the problem, we may use the memory checking feature of the valgrind tool. Valgrind can be installed through apt-get. &lt;br /&gt;
&lt;br /&gt;
To use it, compile your code with CC flags: -g and -O0. Then run the timeslicer (for example) as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
valgrind --leak-check=yes ./timeslicer -n 1024 -g 8 -b 8 -d 400 -c 3 -o qpsk -p esgbt:/tmp/fatcapsesgbt:0x555 -p esg:/tmp/fatcapsesg:0x666 -p prog1:/tmp/fatcapsinput1:0x771 -p prog2:/tmp/fatcapsinput2:0x772 -p prog3:/tmp/fatcapsinput3:0x773 -p prog4:/tmp/fatcapsinput4:0x774 -p prog5:/tmp/fatcapsinput5:0x775 -p prog6:/tmp/fatcapsinput6:0x776 -p prog7:/tmp/fatcapsinput7:0x777 -p prog8:/tmp/fatcapsinput8:0x778 -f /tmp/fatcapsfifo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output of valgrind is descriptive, see their webpage for details.&lt;br /&gt;
&lt;br /&gt;
=== DVBH related files on N96 (Wed Oct  1 19:39:06 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There are a few DVB-H related files in the N96 ROM (z:\) and flash (c:\):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
z:\dvbhsetup.dat&lt;br /&gt;
z:\DVBH.img&lt;br /&gt;
z:\System\data\dvbh\dvbh.ini   &amp;lt;--- readable&lt;br /&gt;
c:\System\data\esg&lt;br /&gt;
c:\System\data\ipdc&lt;br /&gt;
c:\logs\ipdc                             &amp;lt;--- readable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Some error files from N96 (Wed Oct  1 17:26:50 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
The log indicates that the esg receiver fails to receive some file. Unfortunately, we cannot be sure which stage did it fail. Little can be done beyond this point without Nokia's supports, e.g., putting the logger into development/verbose mode.&lt;br /&gt;
&lt;br /&gt;
Therefore, I decided to put N96 aside until we get some supports from Nokia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	------- Subsystem DVBH Manager error -------&lt;br /&gt;
2008/10/01	2:15:01	Emitting module: c\cdvbhmgrinactivityobserver.cpp line: 231&lt;br /&gt;
2008/10/01	2:15:01	Error code:      -2497&lt;br /&gt;
2008/10/01	2:15:01	Description:     Cutting_power_in_NoPlatform_state_due_to_inactivity&lt;br /&gt;
2008/10/01	2:15:01	Additional info: (none)&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	------- Subsystem ESG Manager error -------&lt;br /&gt;
2008/10/01	2:20:30	Emitting module: \common\src\cesgfilereceiver.cpp line: 548&lt;br /&gt;
2008/10/01	2:20:30	Error code:      0&lt;br /&gt;
2008/10/01	2:20:30	Description:     TimerTimeout NoBlocksReceived&lt;br /&gt;
2008/10/01	2:20:30	Additional info: (none)&lt;br /&gt;
2008/10/01	2:25:30	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comments from Mr. Hanel, who is an engineer at Decontis (the company who makes dvbSAM) ===&lt;br /&gt;
&lt;br /&gt;
Nokia is a special case. It is correct that Nokia moves from its own&lt;br /&gt;
proprietary OAI ESG toward OMA BCAST ESG, but the transport streams created&lt;br /&gt;
with Nokia ESG server I saw so far in the near past were not fully&lt;br /&gt;
compatible yet with OMA BCAST. So handhelds from vendors != Nokia have&lt;br /&gt;
problems with broadcasts where Nokia ESG is inside. And the other way is&lt;br /&gt;
often also blocked - Nokia handhelds mostly could not receive ESGs provided&lt;br /&gt;
by ESG servers from other vendors. Mostly only the combination Nokia ESG&lt;br /&gt;
server + Nokia handheld worked properly. Of course, this behavior may change&lt;br /&gt;
with every new software version Nokia releases for its handhelds.&lt;br /&gt;
Since nobody except Nokia itself knows what's going on within their&lt;br /&gt;
handhelds, finding the problem could be difficult. Could be that your ESG is&lt;br /&gt;
fully compliant to the standard and nevertheless the Nokia handheld cannot&lt;br /&gt;
handle it. I'd recommend to update the N96 firmware to the latest version&lt;br /&gt;
and to try at least one more DVB-H handheld, e.g. a recent one from LG or&lt;br /&gt;
Samsung.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2465</id>
		<title>Private: implementing esg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2465"/>
		<updated>2008-10-20T17:45:22Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Debug tools===&lt;br /&gt;
We have the following software analyze tool:&lt;br /&gt;
&lt;br /&gt;
1) Divicatch + USB Analyzer&lt;br /&gt;
&lt;br /&gt;
2) DVBSam + WinTV DVB-T USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have the following hardware:&lt;br /&gt;
&lt;br /&gt;
1) Nokia N92 &lt;br /&gt;
&lt;br /&gt;
2) Nokia N96 &lt;br /&gt;
&lt;br /&gt;
We have the following 2 &amp;quot;working&amp;quot; transport stream:&lt;br /&gt;
&lt;br /&gt;
1) N92.ts (only works on N92, this stream is created in Aug 7, 2006, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
2) N96.ts (only works on N96, this stream is created in Oct 16, 2007, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
These streams are under \\students\yliu\DVBH_debug\TS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N92 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N92.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency1: 562 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  DVB parameters: 8MHz, QPSK, 2/3, 1/8, 8k&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
It includes two ESGs, one is Nokia OAI, the other is early verion of CBMS&lt;br /&gt;
&lt;br /&gt;
[trial with cell phone device]&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can load Nokia OAI ESG very well and play the corresponding program. and can not load CBMS ESG.&lt;br /&gt;
Since in this transport stream, it has two int tables, and each one correspond to one type of ESG. So it is easy for me to identify which one works. &lt;br /&gt;
&lt;br /&gt;
N96 failed to load any of the above ESGs.&lt;br /&gt;
&lt;br /&gt;
[trial with software analyzer]&lt;br /&gt;
&lt;br /&gt;
1) DiviCatch can not detect Nokia OAI ESG, can find CBMS ESG running on port 3937 but failed on bootstrap steps.&lt;br /&gt;
&lt;br /&gt;
2) DVBSam can see Nokia OAI ESG Bootstrap running on FF05:0000:0000:0000:0000:0000:0000:012D with port 9214 , can pass bootstrap steps but failed on ESG receive; can see CBMS ESG running on 224.0.23.14 with port 3937,  can pass bootstrap steps but failed on ESG receive&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
It seems like early version of ESG are not supported by current analyzer and latest cell phones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N96 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N96.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency 690 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
It includes three types of ESGs, 1st is OMA BCAST, 2nd is DVB IPDC, and the 3rd is Prestandard OMA BCAST and they all use port 9214.&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can NOT load any of the above ESGs&lt;br /&gt;
&lt;br /&gt;
N96 can load ESG and play the video.&lt;br /&gt;
&lt;br /&gt;
But since this TS file only has one int table, so three types of ESG are mixed up together. So the goal is to find which is the actual working ESG on N96. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Try to load IPDC ESG by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
* Try to load OMA ESG/Prestandard OMA BCAST by divicatch : this can pass bootstrap step and then will crash the Divicatch software during ESG reception.&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Our USB analyzer software can not even read the ESG that works on Nokia N96 cell phone!&lt;br /&gt;
&lt;br /&gt;
* DVBSam failed to receive Prestandard OMA BCAST&lt;br /&gt;
&lt;br /&gt;
* DVBSam can receive IPDC ESG and OMA BCAST ESG successfully.&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
&lt;br /&gt;
Either IPDC ESG or OMA BCAST ESG in N96.ts is valid for Nokia N96 cell phone.&lt;br /&gt;
&lt;br /&gt;
I have put ESG Bootstrap data, IPDC ESG, OMA BCAST ESG for this TS in \\students\yliu\DVBH_debug\ESG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-H related info found on N92===&lt;br /&gt;
C:\dvbh.ini   &lt;br /&gt;
&lt;br /&gt;
  ScheduleItemRemovalInterval=7&lt;br /&gt;
  AutoScanNwTimeRetryDelay=5&lt;br /&gt;
  ESGRootPort=9214&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
  NifFwdToStackInterval=500&lt;br /&gt;
  NifReadInterval=500&lt;br /&gt;
  SocketRecvBufSize=800000&lt;br /&gt;
  TerminalMaximumBandwidth=500000&lt;br /&gt;
  RequiredDiskFreeSpacePercentage=5&lt;br /&gt;
  AllowUsageTracking=1&lt;br /&gt;
  SignalScanFreqLow=472000000&lt;br /&gt;
  SignalScanFreqHigh=702000000&lt;br /&gt;
  SignalScanBW=8000000&lt;br /&gt;
  SignalScanType=1&lt;br /&gt;
  AutoScanEnabled=1&lt;br /&gt;
  AutoScanStartDelayAfterBoot=5&lt;br /&gt;
  AutoScanInterval=10800&lt;br /&gt;
  AutoScanPreferredPlatformId=-1&lt;br /&gt;
  AutoScanPlatformSetRetryDelay=120&lt;br /&gt;
  PlatformSetUniversalTimeout=60&lt;br /&gt;
  ScanUniversalTimeout=600&lt;br /&gt;
  NetworkTimeUpdateUniversalTimeout=35&lt;br /&gt;
  BootUniversalTimeout=20&lt;br /&gt;
  InactivityPowerOffTime=300&lt;br /&gt;
  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
  ER4SWImageFile=z:\enginer4.img&lt;br /&gt;
  ER4AntennaSetup=z:\ER4AntennaSetup.dat&lt;br /&gt;
  ER4SetPlatformRetryTimeout=25000&lt;br /&gt;
  ER4SetPlatformRetryCount=10&lt;br /&gt;
  ESGMgrUpdTime=120&lt;br /&gt;
  ESGMgrUpdTimeAfterErr=10&lt;br /&gt;
  ESGMgrUpdInterval=180&lt;br /&gt;
  ESGMgrUpdRestartCount=3&lt;br /&gt;
  ESGMgrRxInitTime=30&lt;br /&gt;
  ESGMgrRxPeriodChkTime=20&lt;br /&gt;
  ESGMgrUpdateEnabled=1&lt;br /&gt;
  ESGMgrFCastRestartCount=3&lt;br /&gt;
  ESGMgrUpkeepCleaningDelay=20160&lt;br /&gt;
  ESGMgrCarouselDeltaStartTimeInHours=48&lt;br /&gt;
  UsageTrackerRetryInterval=1&lt;br /&gt;
  UsageTrackerRetryCounts=5&lt;br /&gt;
  ECRenewalTime=1800000000&lt;br /&gt;
  ECRenewalOffset=1&lt;br /&gt;
  ECRemovalTimeInHours=48&lt;br /&gt;
  AutoScanPlatformSetRetries=1&lt;br /&gt;
  NwTimeUpdateRetries=2&lt;br /&gt;
  PowerOffDelayAfterNwDiscovery=3&lt;br /&gt;
  ReplayBuffer=30&lt;br /&gt;
  UsageTrackerDbUpperLimit=1000000&lt;br /&gt;
  DRMClockUpdateInterval=30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Error message found on N96===&lt;br /&gt;
&lt;br /&gt;
Based on N92 dvbh.ini config file, I guess on N96, DVBH.img is either  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
or  ER4SWImageFile=z:\enginer4.img  on N92.  And it sounds more like the complete image, not just the boot image.&lt;br /&gt;
&lt;br /&gt;
And even though N96's dvbh.ini file is short, it seems like some parameters still follows the N92's example, for example &lt;br /&gt;
the log files on N96 matched with N92's config file  &lt;br /&gt;
&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
&lt;br /&gt;
In DVBH.img we find the following readable error message: &lt;br /&gt;
  PSI_Processor   PSI_patpmt  PSI_nitint&lt;br /&gt;
&lt;br /&gt;
  ThreadX API error: The event group is already created. Threadx API error: Invalid event group pointer. The pointer is NULL. System timer thread obj\dvbh\dtv1000_dbg&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
As the above error message happens after the PSI/SI info section, It is the next step--ESG Bootstrap on Cell phone that cause the above error lines. The cell phone tried to receive something and the application crashed.  So on N96 the Subsystem ESG Manage did not get anything and leads to timeout.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
=== TS files for various ESG versions available on-line (Mon Oct 13 09:30:11 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There is a recent DVB-H trial that adopts multiple ESG versions. A final report can be found at [http://www.dvb-h.org/PDF/Mobile%20World%20Congress%20Abertis%20Telecom%20Receivers%20V3.2.pdf  here]. In this trial, two types of Nokia ESG platforms are used: OAI and OMA BCAST. They also made some ts files available on an ftp site (see pp.18 in the above report).&lt;br /&gt;
&lt;br /&gt;
To reverse engineer the requirements of Nokia's OMA BCAST ESG implementation, we can download and analyze the ts files of Nokia BCAST platform. We can use the channel parameters listed in the report to identify the right ts stream.&lt;br /&gt;
&lt;br /&gt;
=== To debug buffer overflow problems (Sun Oct  5 14:57:03 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There have been quite a few nasty buffer overflow bugs in dataaggregator and timeslicer, which cannot be easily found by reviewing the code. To trace the problem, we may use the memory checking feature of the valgrind tool. Valgrind can be installed through apt-get. &lt;br /&gt;
&lt;br /&gt;
To use it, compile your code with CC flags: -g and -O0. Then run the timeslicer (for example) as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
valgrind --leak-check=yes ./timeslicer -n 1024 -g 8 -b 8 -d 400 -c 3 -o qpsk -p esgbt:/tmp/fatcapsesgbt:0x555 -p esg:/tmp/fatcapsesg:0x666 -p prog1:/tmp/fatcapsinput1:0x771 -p prog2:/tmp/fatcapsinput2:0x772 -p prog3:/tmp/fatcapsinput3:0x773 -p prog4:/tmp/fatcapsinput4:0x774 -p prog5:/tmp/fatcapsinput5:0x775 -p prog6:/tmp/fatcapsinput6:0x776 -p prog7:/tmp/fatcapsinput7:0x777 -p prog8:/tmp/fatcapsinput8:0x778 -f /tmp/fatcapsfifo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output of valgrind is descriptive, see their webpage for details.&lt;br /&gt;
&lt;br /&gt;
=== DVBH related files on N96 (Wed Oct  1 19:39:06 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There are a few DVB-H related files in the N96 ROM (z:\) and flash (c:\):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
z:\dvbhsetup.dat&lt;br /&gt;
z:\DVBH.img&lt;br /&gt;
z:\System\data\dvbh\dvbh.ini   &amp;lt;--- readable&lt;br /&gt;
c:\System\data\esg&lt;br /&gt;
c:\System\data\ipdc&lt;br /&gt;
c:\logs\ipdc                             &amp;lt;--- readable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Some error files from N96 (Wed Oct  1 17:26:50 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
The log indicates that the esg receiver fails to receive some file. Unfortunately, we cannot be sure which stage did it fail. Little can be done beyond this point without Nokia's supports, e.g., putting the logger into development/verbose mode.&lt;br /&gt;
&lt;br /&gt;
Therefore, I decided to put N96 aside until we get some supports from Nokia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	------- Subsystem DVBH Manager error -------&lt;br /&gt;
2008/10/01	2:15:01	Emitting module: c\cdvbhmgrinactivityobserver.cpp line: 231&lt;br /&gt;
2008/10/01	2:15:01	Error code:      -2497&lt;br /&gt;
2008/10/01	2:15:01	Description:     Cutting_power_in_NoPlatform_state_due_to_inactivity&lt;br /&gt;
2008/10/01	2:15:01	Additional info: (none)&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	------- Subsystem ESG Manager error -------&lt;br /&gt;
2008/10/01	2:20:30	Emitting module: \common\src\cesgfilereceiver.cpp line: 548&lt;br /&gt;
2008/10/01	2:20:30	Error code:      0&lt;br /&gt;
2008/10/01	2:20:30	Description:     TimerTimeout NoBlocksReceived&lt;br /&gt;
2008/10/01	2:20:30	Additional info: (none)&lt;br /&gt;
2008/10/01	2:25:30	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comments from Mr. Hanel, who is an engineer at Decontis (the company who makes dvbSAM) ===&lt;br /&gt;
&lt;br /&gt;
Nokia is a special case. It is correct that Nokia moves from its own&lt;br /&gt;
proprietary OAI ESG toward OMA BCAST ESG, but the transport streams created&lt;br /&gt;
with Nokia ESG server I saw so far in the near past were not fully&lt;br /&gt;
compatible yet with OMA BCAST. So handhelds from vendors != Nokia have&lt;br /&gt;
problems with broadcasts where Nokia ESG is inside. And the other way is&lt;br /&gt;
often also blocked - Nokia handhelds mostly could not receive ESGs provided&lt;br /&gt;
by ESG servers from other vendors. Mostly only the combination Nokia ESG&lt;br /&gt;
server + Nokia handheld worked properly. Of course, this behavior may change&lt;br /&gt;
with every new software version Nokia releases for its handhelds.&lt;br /&gt;
Since nobody except Nokia itself knows what's going on within their&lt;br /&gt;
handhelds, finding the problem could be difficult. Could be that your ESG is&lt;br /&gt;
fully compliant to the standard and nevertheless the Nokia handheld cannot&lt;br /&gt;
handle it. I'd recommend to update the N96 firmware to the latest version&lt;br /&gt;
and to try at least one more DVB-H handheld, e.g. a recent one from LG or&lt;br /&gt;
Samsung.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2464</id>
		<title>Private: implementing esg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2464"/>
		<updated>2008-10-20T17:38:18Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Debug tools===&lt;br /&gt;
We have the following software analyze tool:&lt;br /&gt;
&lt;br /&gt;
1) Divicatch + USB Analyzer&lt;br /&gt;
&lt;br /&gt;
2) DVBSam + WinTV DVB-T USB &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have the following hardware:&lt;br /&gt;
&lt;br /&gt;
1) Nokia N92 &lt;br /&gt;
&lt;br /&gt;
2) Nokia N96 &lt;br /&gt;
&lt;br /&gt;
We have the following 2 &amp;quot;working&amp;quot; transport stream:&lt;br /&gt;
&lt;br /&gt;
1) N92.ts (only works on N92, this stream is created in Aug 7, 2006, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
2) N96.ts (only works on N96, this stream is created in Oct 16, 2007, comes from Nokia)&lt;br /&gt;
&lt;br /&gt;
These streams are under \\students\yliu\DVBH_debug\TS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Analyze of N92 DVB-H Transport Stream===&lt;br /&gt;
&lt;br /&gt;
For N92.ts, its transmission parameters are as follows:&lt;br /&gt;
  Frequency1: 562 MHz&lt;br /&gt;
  Modulation QPSK&lt;br /&gt;
  DVB parameters: 8MHz, QPSK, 2/3, 1/8, 8k&lt;br /&gt;
  Code Rate 2/3&lt;br /&gt;
  Guard Interval 1/8&lt;br /&gt;
  Transmission-mode 8k&lt;br /&gt;
&lt;br /&gt;
It includes two ESGs, one is Nokia OAI, the other is early verion of CBMS&lt;br /&gt;
&lt;br /&gt;
[trial with cell phone device]&lt;br /&gt;
&lt;br /&gt;
N92 cell phone can load Nokia OAI ESG very well and play the corresponding program. and can not load CBMS ESG.&lt;br /&gt;
Since in this transport stream, it has two int tables, and each one correspond to one type of ESG. So it is easy for me to identify which one works. &lt;br /&gt;
&lt;br /&gt;
N96 failed to load any of the above ESGs.&lt;br /&gt;
&lt;br /&gt;
[trial with software analyzer]&lt;br /&gt;
&lt;br /&gt;
1) DiviCatch can not detect Nokia OAI ESG, can find CBMS ESG running on port 3937 but failed on bootstrap steps.&lt;br /&gt;
&lt;br /&gt;
2) DVBSam can see Nokia OAI ESG Bootstrap running on FF05:0000:0000:0000:0000:0000:0000:012D with port 9214 , can pass bootstrap steps but failed on ESG receive; can see CBMS ESG running on 224.0.23.14 with port 3937,  can pass bootstrap steps but failed on ESG receive&lt;br /&gt;
&lt;br /&gt;
[Conclusion]&lt;br /&gt;
It seems like early version of ESG are not supported by current analyzer and latest cell phones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-H related info found on N92===&lt;br /&gt;
C:\dvbh.ini   &lt;br /&gt;
&lt;br /&gt;
  ScheduleItemRemovalInterval=7&lt;br /&gt;
  AutoScanNwTimeRetryDelay=5&lt;br /&gt;
  ESGRootPort=9214&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
  NifFwdToStackInterval=500&lt;br /&gt;
  NifReadInterval=500&lt;br /&gt;
  SocketRecvBufSize=800000&lt;br /&gt;
  TerminalMaximumBandwidth=500000&lt;br /&gt;
  RequiredDiskFreeSpacePercentage=5&lt;br /&gt;
  AllowUsageTracking=1&lt;br /&gt;
  SignalScanFreqLow=472000000&lt;br /&gt;
  SignalScanFreqHigh=702000000&lt;br /&gt;
  SignalScanBW=8000000&lt;br /&gt;
  SignalScanType=1&lt;br /&gt;
  AutoScanEnabled=1&lt;br /&gt;
  AutoScanStartDelayAfterBoot=5&lt;br /&gt;
  AutoScanInterval=10800&lt;br /&gt;
  AutoScanPreferredPlatformId=-1&lt;br /&gt;
  AutoScanPlatformSetRetryDelay=120&lt;br /&gt;
  PlatformSetUniversalTimeout=60&lt;br /&gt;
  ScanUniversalTimeout=600&lt;br /&gt;
  NetworkTimeUpdateUniversalTimeout=35&lt;br /&gt;
  BootUniversalTimeout=20&lt;br /&gt;
  InactivityPowerOffTime=300&lt;br /&gt;
  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
  ER4SWImageFile=z:\enginer4.img&lt;br /&gt;
  ER4AntennaSetup=z:\ER4AntennaSetup.dat&lt;br /&gt;
  ER4SetPlatformRetryTimeout=25000&lt;br /&gt;
  ER4SetPlatformRetryCount=10&lt;br /&gt;
  ESGMgrUpdTime=120&lt;br /&gt;
  ESGMgrUpdTimeAfterErr=10&lt;br /&gt;
  ESGMgrUpdInterval=180&lt;br /&gt;
  ESGMgrUpdRestartCount=3&lt;br /&gt;
  ESGMgrRxInitTime=30&lt;br /&gt;
  ESGMgrRxPeriodChkTime=20&lt;br /&gt;
  ESGMgrUpdateEnabled=1&lt;br /&gt;
  ESGMgrFCastRestartCount=3&lt;br /&gt;
  ESGMgrUpkeepCleaningDelay=20160&lt;br /&gt;
  ESGMgrCarouselDeltaStartTimeInHours=48&lt;br /&gt;
  UsageTrackerRetryInterval=1&lt;br /&gt;
  UsageTrackerRetryCounts=5&lt;br /&gt;
  ECRenewalTime=1800000000&lt;br /&gt;
  ECRenewalOffset=1&lt;br /&gt;
  ECRemovalTimeInHours=48&lt;br /&gt;
  AutoScanPlatformSetRetries=1&lt;br /&gt;
  NwTimeUpdateRetries=2&lt;br /&gt;
  PowerOffDelayAfterNwDiscovery=3&lt;br /&gt;
  ReplayBuffer=30&lt;br /&gt;
  UsageTrackerDbUpperLimit=1000000&lt;br /&gt;
  DRMClockUpdateInterval=30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Error message found on N96===&lt;br /&gt;
&lt;br /&gt;
Based on N92 dvbh.ini config file, I guess on N96, DVBH.img is either  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
or  ER4SWImageFile=z:\enginer4.img  on N92.  And it sounds more like the complete image, not just the boot image.&lt;br /&gt;
&lt;br /&gt;
And even though N96's dvbh.ini file is short, it seems like some parameters still follows the N92's example, for example &lt;br /&gt;
the log files on N96 matched with N92's config file  &lt;br /&gt;
&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
&lt;br /&gt;
In DVBH.img we find the following readable error message: &lt;br /&gt;
  PSI_Processor   PSI_patpmt  PSI_nitint&lt;br /&gt;
&lt;br /&gt;
  ThreadX API error: The event group is already created. Threadx API error: Invalid event group pointer. The pointer is NULL. System timer thread obj\dvbh\dtv1000_dbg&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
As the above error message happens after the PSI/SI info section, It is the next step--ESG Bootstrap on Cell phone that cause the above error lines. The cell phone tried to receive something and the application crashed.  So on N96 the Subsystem ESG Manage did not get anything and leads to timeout.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
=== TS files for various ESG versions available on-line (Mon Oct 13 09:30:11 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There is a recent DVB-H trial that adopts multiple ESG versions. A final report can be found at [http://www.dvb-h.org/PDF/Mobile%20World%20Congress%20Abertis%20Telecom%20Receivers%20V3.2.pdf  here]. In this trial, two types of Nokia ESG platforms are used: OAI and OMA BCAST. They also made some ts files available on an ftp site (see pp.18 in the above report).&lt;br /&gt;
&lt;br /&gt;
To reverse engineer the requirements of Nokia's OMA BCAST ESG implementation, we can download and analyze the ts files of Nokia BCAST platform. We can use the channel parameters listed in the report to identify the right ts stream.&lt;br /&gt;
&lt;br /&gt;
=== To debug buffer overflow problems (Sun Oct  5 14:57:03 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There have been quite a few nasty buffer overflow bugs in dataaggregator and timeslicer, which cannot be easily found by reviewing the code. To trace the problem, we may use the memory checking feature of the valgrind tool. Valgrind can be installed through apt-get. &lt;br /&gt;
&lt;br /&gt;
To use it, compile your code with CC flags: -g and -O0. Then run the timeslicer (for example) as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
valgrind --leak-check=yes ./timeslicer -n 1024 -g 8 -b 8 -d 400 -c 3 -o qpsk -p esgbt:/tmp/fatcapsesgbt:0x555 -p esg:/tmp/fatcapsesg:0x666 -p prog1:/tmp/fatcapsinput1:0x771 -p prog2:/tmp/fatcapsinput2:0x772 -p prog3:/tmp/fatcapsinput3:0x773 -p prog4:/tmp/fatcapsinput4:0x774 -p prog5:/tmp/fatcapsinput5:0x775 -p prog6:/tmp/fatcapsinput6:0x776 -p prog7:/tmp/fatcapsinput7:0x777 -p prog8:/tmp/fatcapsinput8:0x778 -f /tmp/fatcapsfifo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output of valgrind is descriptive, see their webpage for details.&lt;br /&gt;
&lt;br /&gt;
=== DVBH related files on N96 (Wed Oct  1 19:39:06 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There are a few DVB-H related files in the N96 ROM (z:\) and flash (c:\):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
z:\dvbhsetup.dat&lt;br /&gt;
z:\DVBH.img&lt;br /&gt;
z:\System\data\dvbh\dvbh.ini   &amp;lt;--- readable&lt;br /&gt;
c:\System\data\esg&lt;br /&gt;
c:\System\data\ipdc&lt;br /&gt;
c:\logs\ipdc                             &amp;lt;--- readable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Some error files from N96 (Wed Oct  1 17:26:50 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
The log indicates that the esg receiver fails to receive some file. Unfortunately, we cannot be sure which stage did it fail. Little can be done beyond this point without Nokia's supports, e.g., putting the logger into development/verbose mode.&lt;br /&gt;
&lt;br /&gt;
Therefore, I decided to put N96 aside until we get some supports from Nokia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	------- Subsystem DVBH Manager error -------&lt;br /&gt;
2008/10/01	2:15:01	Emitting module: c\cdvbhmgrinactivityobserver.cpp line: 231&lt;br /&gt;
2008/10/01	2:15:01	Error code:      -2497&lt;br /&gt;
2008/10/01	2:15:01	Description:     Cutting_power_in_NoPlatform_state_due_to_inactivity&lt;br /&gt;
2008/10/01	2:15:01	Additional info: (none)&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	------- Subsystem ESG Manager error -------&lt;br /&gt;
2008/10/01	2:20:30	Emitting module: \common\src\cesgfilereceiver.cpp line: 548&lt;br /&gt;
2008/10/01	2:20:30	Error code:      0&lt;br /&gt;
2008/10/01	2:20:30	Description:     TimerTimeout NoBlocksReceived&lt;br /&gt;
2008/10/01	2:20:30	Additional info: (none)&lt;br /&gt;
2008/10/01	2:25:30	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comments from Mr. Hanel, who is an engineer at Decontis (the company who makes dvbSAM) ===&lt;br /&gt;
&lt;br /&gt;
Nokia is a special case. It is correct that Nokia moves from its own&lt;br /&gt;
proprietary OAI ESG toward OMA BCAST ESG, but the transport streams created&lt;br /&gt;
with Nokia ESG server I saw so far in the near past were not fully&lt;br /&gt;
compatible yet with OMA BCAST. So handhelds from vendors != Nokia have&lt;br /&gt;
problems with broadcasts where Nokia ESG is inside. And the other way is&lt;br /&gt;
often also blocked - Nokia handhelds mostly could not receive ESGs provided&lt;br /&gt;
by ESG servers from other vendors. Mostly only the combination Nokia ESG&lt;br /&gt;
server + Nokia handheld worked properly. Of course, this behavior may change&lt;br /&gt;
with every new software version Nokia releases for its handhelds.&lt;br /&gt;
Since nobody except Nokia itself knows what's going on within their&lt;br /&gt;
handhelds, finding the problem could be difficult. Could be that your ESG is&lt;br /&gt;
fully compliant to the standard and nevertheless the Nokia handheld cannot&lt;br /&gt;
handle it. I'd recommend to update the N96 firmware to the latest version&lt;br /&gt;
and to try at least one more DVB-H handheld, e.g. a recent one from LG or&lt;br /&gt;
Samsung.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2463</id>
		<title>Private: implementing esg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:_implementing_esg&amp;diff=2463"/>
		<updated>2008-10-17T19:56:17Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Crack Nokia S60 OS to see all system files===&lt;br /&gt;
N92: S60 3rd edition (crack successfully)&lt;br /&gt;
&lt;br /&gt;
N96: S60 3rd edition with FP2 (not yet)&lt;br /&gt;
&lt;br /&gt;
  Steps: (all files are available on network shared drive, under  students\yliu\testbed\s60crack )&lt;br /&gt;
  1) Install X-plore: this tool is a powerful file browser and can help us view all the system files and hidden files.&lt;br /&gt;
  2) Install HelloCarbide.sisx : this tool can be used to temporarily disable the root certificate on the cell phone&lt;br /&gt;
  3) Upload installServer.exe and CProfDriver_SISX.ldd to the C:\sys\ on cell phone : this is to replace root certificate and gain system access&lt;br /&gt;
  4) Install CapsOn,sisx and CapsOff.sis : the switch to control the cracking.&lt;br /&gt;
&lt;br /&gt;
On N92, now we have full control of all the files.  On N96, we can access all files except system protected files (C:\sys  and C:\private). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-H related info found on N92===&lt;br /&gt;
C:\dvbh.ini   (N92 only has a C drive)&lt;br /&gt;
&lt;br /&gt;
  ScheduleItemRemovalInterval=7&lt;br /&gt;
  AutoScanNwTimeRetryDelay=5&lt;br /&gt;
  ESGRootPort=9214&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
  NifFwdToStackInterval=500&lt;br /&gt;
  NifReadInterval=500&lt;br /&gt;
  SocketRecvBufSize=800000&lt;br /&gt;
  TerminalMaximumBandwidth=500000&lt;br /&gt;
  RequiredDiskFreeSpacePercentage=5&lt;br /&gt;
  AllowUsageTracking=1&lt;br /&gt;
  SignalScanFreqLow=472000000&lt;br /&gt;
  SignalScanFreqHigh=702000000&lt;br /&gt;
  SignalScanBW=8000000&lt;br /&gt;
  SignalScanType=1&lt;br /&gt;
  AutoScanEnabled=1&lt;br /&gt;
  AutoScanStartDelayAfterBoot=5&lt;br /&gt;
  AutoScanInterval=10800&lt;br /&gt;
  AutoScanPreferredPlatformId=-1&lt;br /&gt;
  AutoScanPlatformSetRetryDelay=120&lt;br /&gt;
  PlatformSetUniversalTimeout=60&lt;br /&gt;
  ScanUniversalTimeout=600&lt;br /&gt;
  NetworkTimeUpdateUniversalTimeout=35&lt;br /&gt;
  BootUniversalTimeout=20&lt;br /&gt;
  InactivityPowerOffTime=300&lt;br /&gt;
  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
  ER4SWImageFile=z:\enginer4.img&lt;br /&gt;
  ER4AntennaSetup=z:\ER4AntennaSetup.dat&lt;br /&gt;
  ER4SetPlatformRetryTimeout=25000&lt;br /&gt;
  ER4SetPlatformRetryCount=10&lt;br /&gt;
  ESGMgrUpdTime=120&lt;br /&gt;
  ESGMgrUpdTimeAfterErr=10&lt;br /&gt;
  ESGMgrUpdInterval=180&lt;br /&gt;
  ESGMgrUpdRestartCount=3&lt;br /&gt;
  ESGMgrRxInitTime=30&lt;br /&gt;
  ESGMgrRxPeriodChkTime=20&lt;br /&gt;
  ESGMgrUpdateEnabled=1&lt;br /&gt;
  ESGMgrFCastRestartCount=3&lt;br /&gt;
  ESGMgrUpkeepCleaningDelay=20160&lt;br /&gt;
  ESGMgrCarouselDeltaStartTimeInHours=48&lt;br /&gt;
  UsageTrackerRetryInterval=1&lt;br /&gt;
  UsageTrackerRetryCounts=5&lt;br /&gt;
  ECRenewalTime=1800000000&lt;br /&gt;
  ECRenewalOffset=1&lt;br /&gt;
  ECRemovalTimeInHours=48&lt;br /&gt;
  AutoScanPlatformSetRetries=1&lt;br /&gt;
  NwTimeUpdateRetries=2&lt;br /&gt;
  PowerOffDelayAfterNwDiscovery=3&lt;br /&gt;
  ReplayBuffer=30&lt;br /&gt;
  UsageTrackerDbUpperLimit=1000000&lt;br /&gt;
  DRMClockUpdateInterval=30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Error message found on N96===&lt;br /&gt;
&lt;br /&gt;
Based on N92 dvbh.ini config file, I guess on N96, DVBH.img is either  ER4BootImageFile=z:\spi_boot.img&lt;br /&gt;
or  ER4SWImageFile=z:\enginer4.img  on N92.  And it sounds more like the complete image, not just the boot image.&lt;br /&gt;
&lt;br /&gt;
And even though N96's dvbh.ini file is short, it seems like some parameters still follows the N92's example, for example &lt;br /&gt;
the log files on N96 matched with N92's config file  &lt;br /&gt;
&lt;br /&gt;
  IpdcNumberOfLogFiles=3&lt;br /&gt;
  IpdcLogFile=ipdc.txt&lt;br /&gt;
  IpdcLogDir=ipdc&lt;br /&gt;
  IpdcLogLevel=1&lt;br /&gt;
  IpdcLogLevelRDebug=9&lt;br /&gt;
  IpdcLoggingEnabled=1 &lt;br /&gt;
&lt;br /&gt;
In DVBH.img we find the following readable error message: &lt;br /&gt;
  PSI_Processor   PSI_patpmt  PSI_nitint&lt;br /&gt;
&lt;br /&gt;
  ThreadX API error: The event group is already created. Threadx API error: Invalid event group pointer. The pointer is NULL. System timer thread obj\dvbh\dtv1000_dbg&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
As the above error message happens after the PSI/SI info section, It is the next step--ESG Bootstrap on Cell phone that cause the above error lines. The cell phone tried to receive something and the application crashed.  So on N96 the Subsystem ESG Manage did not get anything and leads to timeout.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
=== TS files for various ESG versions available on-line (Mon Oct 13 09:30:11 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There is a recent DVB-H trial that adopts multiple ESG versions. A final report can be found at [http://www.dvb-h.org/PDF/Mobile%20World%20Congress%20Abertis%20Telecom%20Receivers%20V3.2.pdf  here]. In this trial, two types of Nokia ESG platforms are used: OAI and OMA BCAST. They also made some ts files available on an ftp site (see pp.18 in the above report).&lt;br /&gt;
&lt;br /&gt;
To reverse engineer the requirements of Nokia's OMA BCAST ESG implementation, we can download and analyze the ts files of Nokia BCAST platform. We can use the channel parameters listed in the report to identify the right ts stream.&lt;br /&gt;
&lt;br /&gt;
=== To debug buffer overflow problems (Sun Oct  5 14:57:03 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There have been quite a few nasty buffer overflow bugs in dataaggregator and timeslicer, which cannot be easily found by reviewing the code. To trace the problem, we may use the memory checking feature of the valgrind tool. Valgrind can be installed through apt-get. &lt;br /&gt;
&lt;br /&gt;
To use it, compile your code with CC flags: -g and -O0. Then run the timeslicer (for example) as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
valgrind --leak-check=yes ./timeslicer -n 1024 -g 8 -b 8 -d 400 -c 3 -o qpsk -p esgbt:/tmp/fatcapsesgbt:0x555 -p esg:/tmp/fatcapsesg:0x666 -p prog1:/tmp/fatcapsinput1:0x771 -p prog2:/tmp/fatcapsinput2:0x772 -p prog3:/tmp/fatcapsinput3:0x773 -p prog4:/tmp/fatcapsinput4:0x774 -p prog5:/tmp/fatcapsinput5:0x775 -p prog6:/tmp/fatcapsinput6:0x776 -p prog7:/tmp/fatcapsinput7:0x777 -p prog8:/tmp/fatcapsinput8:0x778 -f /tmp/fatcapsfifo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output of valgrind is descriptive, see their webpage for details.&lt;br /&gt;
&lt;br /&gt;
=== DVBH related files on N96 (Wed Oct  1 19:39:06 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
There are a few DVB-H related files in the N96 ROM (z:\) and flash (c:\):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
z:\dvbhsetup.dat&lt;br /&gt;
z:\DVBH.img&lt;br /&gt;
z:\System\data\dvbh\dvbh.ini   &amp;lt;--- readable&lt;br /&gt;
c:\System\data\esg&lt;br /&gt;
c:\System\data\ipdc&lt;br /&gt;
c:\logs\ipdc                             &amp;lt;--- readable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Some error files from N96 (Wed Oct  1 17:26:50 PDT 2008) ===&lt;br /&gt;
&lt;br /&gt;
The log indicates that the esg receiver fails to receive some file. Unfortunately, we cannot be sure which stage did it fail. Little can be done beyond this point without Nokia's supports, e.g., putting the logger into development/verbose mode.&lt;br /&gt;
&lt;br /&gt;
Therefore, I decided to put N96 aside until we get some supports from Nokia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	&lt;br /&gt;
2008/10/01	2:15:01	------- Subsystem DVBH Manager error -------&lt;br /&gt;
2008/10/01	2:15:01	Emitting module: c\cdvbhmgrinactivityobserver.cpp line: 231&lt;br /&gt;
2008/10/01	2:15:01	Error code:      -2497&lt;br /&gt;
2008/10/01	2:15:01	Description:     Cutting_power_in_NoPlatform_state_due_to_inactivity&lt;br /&gt;
2008/10/01	2:15:01	Additional info: (none)&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	&lt;br /&gt;
2008/10/01	2:20:30	------- Subsystem ESG Manager error -------&lt;br /&gt;
2008/10/01	2:20:30	Emitting module: \common\src\cesgfilereceiver.cpp line: 548&lt;br /&gt;
2008/10/01	2:20:30	Error code:      0&lt;br /&gt;
2008/10/01	2:20:30	Description:     TimerTimeout NoBlocksReceived&lt;br /&gt;
2008/10/01	2:20:30	Additional info: (none)&lt;br /&gt;
2008/10/01	2:25:30	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comments from Mr. Hanel, who is an engineer at Decontis (the company who makes dvbSAM) ===&lt;br /&gt;
&lt;br /&gt;
Nokia is a special case. It is correct that Nokia moves from its own&lt;br /&gt;
proprietary OAI ESG toward OMA BCAST ESG, but the transport streams created&lt;br /&gt;
with Nokia ESG server I saw so far in the near past were not fully&lt;br /&gt;
compatible yet with OMA BCAST. So handhelds from vendors != Nokia have&lt;br /&gt;
problems with broadcasts where Nokia ESG is inside. And the other way is&lt;br /&gt;
often also blocked - Nokia handhelds mostly could not receive ESGs provided&lt;br /&gt;
by ESG servers from other vendors. Mostly only the combination Nokia ESG&lt;br /&gt;
server + Nokia handheld worked properly. Of course, this behavior may change&lt;br /&gt;
with every new software version Nokia releases for its handhelds.&lt;br /&gt;
Since nobody except Nokia itself knows what's going on within their&lt;br /&gt;
handhelds, finding the problem could be difficult. Could be that your ESG is&lt;br /&gt;
fully compliant to the standard and nevertheless the Nokia handheld cannot&lt;br /&gt;
handle it. I'd recommend to update the N96 firmware to the latest version&lt;br /&gt;
and to try at least one more DVB-H handheld, e.g. a recent one from LG or&lt;br /&gt;
Samsung.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2435</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2435"/>
		<updated>2008-10-09T18:45:40Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified:  Yi Liu, {{REVISIONMONTH}}/{{REVISIONDAY2}}/{{REVISIONYEAR}}&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new Video file to the repository====&lt;br /&gt;
:* Pre-condition: The video file does not belong to the current video repository&lt;br /&gt;
:* On webpage, user clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Select ESG file to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Enter video port. Example: 1209&lt;br /&gt;
:* Enter an audio port. Example: 1210&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Web browser can post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to finish uploading. There will be a green status indicator showing the uploading.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* The system transfers the user to the &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* The user can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
:* Post-condition: The video file is added to the video repository&lt;br /&gt;
:* Note: this part is all handled by web GUI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User want to update DVB-H Network Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;br /&gt;
:* Post-condition: Dtplay parameters got updated.&lt;br /&gt;
:* Note: Backend script name: updatedtplay.pl&lt;br /&gt;
  updatedtplay.pl API&lt;br /&gt;
  input: dvbhparams.cfg&lt;br /&gt;
  output: rundtplay.sh,  its content is the full command for DtPlay&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update Timeslicing Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
:* Post-condition: timeslicer parameters got updated&lt;br /&gt;
:* Note: Backend script name: updatetimeslicer.pl&lt;br /&gt;
  updatetimeslicer.pl API&lt;br /&gt;
  input: timeslicing.cfg &lt;br /&gt;
  output: runtimeslicer.sh,  its content is the full command for timeslicer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User selects video to broadcast ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator&lt;br /&gt;
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.&lt;br /&gt;
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl&lt;br /&gt;
  updatevlc.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runvlc.sh,  its content is the full command for vlc&lt;br /&gt;
&lt;br /&gt;
  updateproxy.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runproxy.sh,  its content is the full command for dataaggregator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* Pre-condition2: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video_service_id1= 0x2B00&lt;br /&gt;
  video_service_id2= 0x2B01&lt;br /&gt;
  video_pmt_id1=0x31f&lt;br /&gt;
  video_pmt_id2=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Post-conditon: all the python scripts for PSI/SI table are ready.&lt;br /&gt;
:* Note: backend script name: updatepsi.pl&lt;br /&gt;
  updatepsi.pl API&lt;br /&gt;
  input: psisi.cfg &lt;br /&gt;
  output: A group of python scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====User wants to update ESG====&lt;br /&gt;
:* TBD&lt;br /&gt;
:* this part may involve updating Flute FDT table based on ESG file size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to start the DVB-H broadcast system based on current configuration====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* User clicks on &amp;quot;Start DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=start&amp;quot; which can tell the back end script to start the whole system&lt;br /&gt;
:* The back end script first do a system call to start vlc &lt;br /&gt;
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)&lt;br /&gt;
:* The back end script then do a system call to start dataaggregator&lt;br /&gt;
:* The back end script then do a system call to start timeslicer&lt;br /&gt;
:* The back end script then do a system call to start python scrips and TS Null Shaper.&lt;br /&gt;
:* The back end script then do a system call to start DtPlay&lt;br /&gt;
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.&lt;br /&gt;
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to stop the DVB-H broadcast system ====&lt;br /&gt;
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.&lt;br /&gt;
:* User clicks on &amp;quot;Stop DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=stop&amp;quot; which can tell the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay&lt;br /&gt;
:* Post-condition: DVB-H broadcast system stopped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new video channel in the current playing DVB-H broadcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs&lt;br /&gt;
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)&lt;br /&gt;
:* User clicks on &amp;quot;Add to DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=add&amp;quot; and it tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to remove an existing video channel from the current playing DVB-H broadcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (&amp;gt;=2 programs)&lt;br /&gt;
:* User select the video file he or she wants to remove&lt;br /&gt;
:* User clicks on &amp;quot;Remove from DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=remove&amp;amp;pid=1234&amp;amp;pid=1235&amp;amp;pid=3333...&amp;quot; which can tell the back end script to kill the vlc process based on the proper pid. Other parts of DVB-H boradcast system are not changed&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.&lt;br /&gt;
:* Note: backend script name: Autorun.pl&lt;br /&gt;
   input: HTTP Post message from web browser&lt;br /&gt;
  output: log files&lt;br /&gt;
  main function:  launch  rundtplay.sh, runtimeslicer.sh, runproxy.sh, runvlc.sh, and python scripts to start DVB-H boradcast system,  do system kill call to stop DVB-H boradcast system.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2434</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2434"/>
		<updated>2008-10-09T09:46:42Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified:  Yi Liu, {{REVISIONMONTH}}/{{REVISIONDAY2}}/{{REVISIONYEAR}}&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new Video file to the repository====&lt;br /&gt;
:* Pre-condition: The video file does not belong to the current video repository&lt;br /&gt;
:* On webpage, user clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Select ESG file to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Enter video port. Example: 1209&lt;br /&gt;
:* Enter an audio port. Example: 1210&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Web browser can post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to finish uploading. There will be a green status indicator showing the uploading.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* The system transfers the user to the &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* The user can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
:* Post-condition: The video file is added to the video repository&lt;br /&gt;
:* Note: this part is all handled by web GUI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User want to update DVB-H Network Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;br /&gt;
:* Post-condition: Dtplay parameters got updated.&lt;br /&gt;
:* Note: Backend script name: updatedtplay.pl&lt;br /&gt;
  updatedtplay.pl API&lt;br /&gt;
  input: dvbhparams.cfg&lt;br /&gt;
  output: rundtplay.sh,  its content is the full command for DtPlay&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update Timeslicing Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
:* Post-condition: timeslicer parameters got updated&lt;br /&gt;
:* Note: Backend script name: updatetimeslicer.pl&lt;br /&gt;
  updatetimeslicer.pl API&lt;br /&gt;
  input: timeslicing.cfg &lt;br /&gt;
  output: runtimeslicer.sh,  its content is the full command for timeslicer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User selects video to broadcast ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator&lt;br /&gt;
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.&lt;br /&gt;
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl&lt;br /&gt;
  updatevlc.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runvlc.sh,  its content is the full command for vlc&lt;br /&gt;
&lt;br /&gt;
  updateproxy.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runproxy.sh,  its content is the full command for dataaggregator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* Pre-condition2: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Post-conditon: all the python scripts for PSI/SI table are ready.&lt;br /&gt;
:* Note: backend script name: updatepsi.pl&lt;br /&gt;
  updatepsi.pl API&lt;br /&gt;
  input: psisi.cfg &lt;br /&gt;
  output: A group of python scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====User wants to update ESG====&lt;br /&gt;
:* TBD&lt;br /&gt;
:* this part may involve updating Flute FDT table based on ESG file size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to start the DVB-H broadcast system based on current configuration====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* User clicks on &amp;quot;Start DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=start&amp;quot; which can tell the back end script to start the whole system&lt;br /&gt;
:* The back end script first do a system call to start vlc &lt;br /&gt;
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)&lt;br /&gt;
:* The back end script then do a system call to start dataaggregator&lt;br /&gt;
:* The back end script then do a system call to start timeslicer&lt;br /&gt;
:* The back end script then do a system call to start python scrips and TS Null Shaper.&lt;br /&gt;
:* The back end script then do a system call to start DtPlay&lt;br /&gt;
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.&lt;br /&gt;
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to stop the DVB-H broadcast system ====&lt;br /&gt;
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.&lt;br /&gt;
:* User clicks on &amp;quot;Stop DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=stop&amp;quot; which can tell the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay&lt;br /&gt;
:* Post-condition: DVB-H broadcast system stopped&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new video channel in the current playing DVB-H broadcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs&lt;br /&gt;
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)&lt;br /&gt;
:* User clicks on &amp;quot;Add to DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=add&amp;quot; and it tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to remove an existing video channel from the current playing DVB-H broadcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (&amp;gt;=2 programs)&lt;br /&gt;
:* User select the video file he or she wants to remove&lt;br /&gt;
:* User clicks on &amp;quot;Remove from DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is &amp;quot;action=remove&amp;amp;pid=1234&amp;amp;pid=1235&amp;amp;pid=3333...&amp;quot; which can tell the back end script to kill the vlc process based on the proper pid. Other parts of DVB-H boradcast system are not changed&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.&lt;br /&gt;
:* Note: backend script name: Autorun.pl&lt;br /&gt;
   input: HTTP Post message from web browser&lt;br /&gt;
  output: log files&lt;br /&gt;
  main function:  launch  rundtplay.sh, runtimeslicer.sh, runproxy.sh, runvlc.sh, and python scripts to start DVB-H boradcast system,  do system kill call to stop DVB-H boradcast system.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2406</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2406"/>
		<updated>2008-10-02T07:10:10Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified: Yi Liu  1:45am, Oct 2, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new Video file to the repository====&lt;br /&gt;
:* Pre-condition: The video file does not belong to the current video repository&lt;br /&gt;
:* On webpage, user clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? TBD here&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Web browser can post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there. (as well as its corresponding ESG?)&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
:* Post-condition: The video file is added to the video repository&lt;br /&gt;
:* Note: this part is all handled by web GUI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User want to update DVB-H Network Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;br /&gt;
:* Post-condition: Dtplay parameters got updated.&lt;br /&gt;
:* Note: Backend script name: updatedtplay.pl&lt;br /&gt;
  updatedtplay.pl API&lt;br /&gt;
  input: dvbhparams.cfg&lt;br /&gt;
  output: rundtplay.sh,  its content is the full command for DtPlay&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update Timeslicing Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
:* Post-condition: timeslicer parameters got updated&lt;br /&gt;
:* Note: Backend script name: updatetimeslicer.pl&lt;br /&gt;
  updatetimeslicer.pl API&lt;br /&gt;
  input: timeslicing.cfg &lt;br /&gt;
  output: runtimeslicer.sh,  its content is the full command for timeslicer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User selects video to broadcast ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator&lt;br /&gt;
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.&lt;br /&gt;
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl&lt;br /&gt;
  updatevlc.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runvlc.sh,  its content is the full command for vlc&lt;br /&gt;
&lt;br /&gt;
  updateproxy.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runproxy.sh,  its content is the full command for dataaggregator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* Pre-condition2: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Post-conditon: all the python scripts for PSI/SI table are ready.&lt;br /&gt;
:* Note: backend script name: updatepsi.pl&lt;br /&gt;
  updatepsi.pl API&lt;br /&gt;
  input: psisi.cfg &lt;br /&gt;
  output: A group of python scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====User wants to update ESG====&lt;br /&gt;
:* TBD&lt;br /&gt;
:* this part may involve updating Flute FDT table based on ESG file size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to start the DVB-H boradcast system based on current configuration====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* User clicks on &amp;quot;Start DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the whole system&lt;br /&gt;
:* The back end script first do a system call to start vlc &lt;br /&gt;
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)&lt;br /&gt;
:* The back end script then do a system call to start dataaggregator&lt;br /&gt;
:* The back end script then do a system call to start timeslicer&lt;br /&gt;
:* The back end script then do a system call to start python scrips and TS Null Shaper.&lt;br /&gt;
:* The back end script then do a system call to start DtPlay&lt;br /&gt;
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.&lt;br /&gt;
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to stop the DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.&lt;br /&gt;
:* User clicks on &amp;quot;Stop DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay&lt;br /&gt;
:* Post-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh stop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new video channel in the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs&lt;br /&gt;
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)&lt;br /&gt;
:* User clicks on &amp;quot;Add to DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:58000/  This http post message tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh restart&lt;br /&gt;
  /etc/init.d/nsl-dvbh &amp;lt;start|stop|restart|status&amp;gt;&lt;br /&gt;
  input: HTTP Post message from web browser&lt;br /&gt;
  output: a feed back message to indicate whether the DVB-H broadcast system is running&lt;br /&gt;
  main function:  launch  rundtplay.sh, runtimeslicer.sh, runproxy.sh, runvlc.sh, and python scripts to start DVB-H boradcast system,  do system kill call to stop DVB-H boradcast system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to remove an existing video channel from the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (&amp;gt;=2 programs)&lt;br /&gt;
:* User select the video file he or she wants to remove&lt;br /&gt;
:* User clicks on &amp;quot;Remove from DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:68000/  This http post message tells the back end script to kill the vlc process for that specific video file. Other parts of DVB-H boradcast system are not changed&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.&lt;br /&gt;
:* Note: backend script name: killone.pl&lt;br /&gt;
  killone.pl API&lt;br /&gt;
  input: video file name, multicast ip and port&lt;br /&gt;
  output: a feed back message to indicate whether the vlc session is killed or not.&lt;br /&gt;
  main function: do a system call to kill a vlc process&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2405</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2405"/>
		<updated>2008-10-02T07:07:46Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified: Yi Liu  1:45am, Oct 2, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new Video file to the repository====&lt;br /&gt;
:* Pre-condition: The video file does not belong to the current video repository&lt;br /&gt;
:* On webpage, user clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? TBD here&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Web browser can post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there. (as well as its corresponding ESG?)&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
:* Post-condition: The video file is added to the video repository&lt;br /&gt;
:* Note: this part is all handled by web GUI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User want to update DVB-H Network Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;br /&gt;
:* Post-condition: Dtplay parameters got updated.&lt;br /&gt;
:* Note: Backend script name: updatedtplay.pl&lt;br /&gt;
  updatedtplay.pl API&lt;br /&gt;
  input: dvbhparams.cfg&lt;br /&gt;
  output: rundtplay.sh,  its content is the full command for DtPlay&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update Timeslicing Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
:* Post-condition: timeslicer parameters got updated&lt;br /&gt;
:* Note: Backend script name: updatetimeslicer.pl&lt;br /&gt;
  updatetimeslicer.pl API&lt;br /&gt;
  input: timeslicing.cfg &lt;br /&gt;
  output: runtimeslicer.sh,  its content is the full command for timeslicer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User selects video to broadcast ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator&lt;br /&gt;
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.&lt;br /&gt;
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl&lt;br /&gt;
  updatevlc.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runvlc.sh,  its content is the full command for vlc&lt;br /&gt;
&lt;br /&gt;
  updateproxy.pl API&lt;br /&gt;
  input: videoslist.cfg &lt;br /&gt;
  output: runproxy.sh,  its content is the full command for dataaggregator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* Pre-condition2: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Post-conditon: all the python scripts for PSI/SI table are ready.&lt;br /&gt;
:* Note: backend script name: updatepsi.pl&lt;br /&gt;
  updatepsi.pl API&lt;br /&gt;
  input: psisi.cfg &lt;br /&gt;
  output: A group of python scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====User wants to update ESG====&lt;br /&gt;
:* TBD&lt;br /&gt;
:* this part may involve updating Flute FDT table based on ESG file size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to start the DVB-H boradcast system based on current configuration====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* User clicks on &amp;quot;Start DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the whole system&lt;br /&gt;
:* The back end script first do a system call to start vlc &lt;br /&gt;
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)&lt;br /&gt;
:* The back end script then do a system call to start dataaggregator&lt;br /&gt;
:* The back end script then do a system call to start timeslicer&lt;br /&gt;
:* The back end script then do a system call to start python scrips and TS Null Shaper.&lt;br /&gt;
:* The back end script then do a system call to start DtPlay&lt;br /&gt;
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.&lt;br /&gt;
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to stop the DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.&lt;br /&gt;
:* User clicks on &amp;quot;Stop DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay&lt;br /&gt;
:* Post-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh stop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new video channel in the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs&lt;br /&gt;
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)&lt;br /&gt;
:* User clicks on &amp;quot;Add to DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:58000/  This http post message tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh restart&lt;br /&gt;
  /etc/init.d/nsl-dvbh &amp;lt;start|stop|restart|status&amp;gt;&lt;br /&gt;
  input: HTTP Post message from web browser&lt;br /&gt;
  output: a feed back message to indicate whether the DVB-H broadcast system is running&lt;br /&gt;
  main function:  do system calls to start/stop the following application-- vlc, dataaggregator, flute, timeslicer, python   scripts and Dtplay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to remove an existing video channel from the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (&amp;gt;=2 programs)&lt;br /&gt;
:* User select the video file he or she wants to remove&lt;br /&gt;
:* User clicks on &amp;quot;Remove from DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:68000/  This http post message tells the back end script to kill the vlc process for that specific video file. Other parts of DVB-H boradcast system are not changed&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.&lt;br /&gt;
:* Note: backend script name: killone.pl&lt;br /&gt;
  killone.pl API&lt;br /&gt;
  input: video file name, multicast ip and port&lt;br /&gt;
  output: a feed back message to indicate whether the vlc session is killed or not.&lt;br /&gt;
  main function: do a system call to kill a vlc process&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2404</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2404"/>
		<updated>2008-10-02T07:01:20Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified: Yi Liu  1:45am, Oct 2, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new Video file to the repository====&lt;br /&gt;
:* Pre-condition: The video file does not belong to the current video repository&lt;br /&gt;
:* On webpage, user clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? TBD here&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Web browser can post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there. (as well as its corresponding ESG?)&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
:* Post-condition: The video file is added to the video repository&lt;br /&gt;
:* Note: this part is all handled by web GUI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User want to update DVB-H Network Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;br /&gt;
:* Post-condition: Dtplay parameters got updated.&lt;br /&gt;
:* Note: Backend script name: updatedtplay.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update Timeslicing Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
:* Post-condition: timeslicer parameters got updated&lt;br /&gt;
:* Note: Backend script name: updatetimeslicer.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User selects video to broadcast ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator&lt;br /&gt;
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.&lt;br /&gt;
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* Pre-condition2: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Post-conditon: all the python scripts for PSI/SI table are ready.&lt;br /&gt;
:* Note: backend script name: updatepsi.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====User wants to update ESG====&lt;br /&gt;
:* TBD&lt;br /&gt;
:* this part may involve updating Flute FDT table based on ESG file size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to start the DVB-H boradcast system based on current configuration====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* User clicks on &amp;quot;Start DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the whole system&lt;br /&gt;
:* The back end script first do a system call to start vlc &lt;br /&gt;
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)&lt;br /&gt;
:* The back end script then do a system call to start dataaggregator&lt;br /&gt;
:* The back end script then do a system call to start timeslicer&lt;br /&gt;
:* The back end script then do a system call to start python scrips and TS Null Shaper.&lt;br /&gt;
:* The back end script then do a system call to start DtPlay&lt;br /&gt;
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.&lt;br /&gt;
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to stop the DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.&lt;br /&gt;
:* User clicks on &amp;quot;Stop DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay&lt;br /&gt;
:* Post-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh stop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new video channel in the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs&lt;br /&gt;
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)&lt;br /&gt;
:* User clicks on &amp;quot;Add to DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:58000/  This http post message tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.&lt;br /&gt;
:* Note: backend script name: /etc/init.d/nsl-dvbh restart&lt;br /&gt;
  /etc/init.d/nsl-dvbh &amp;lt;start|stop|restart|status&amp;gt;&lt;br /&gt;
  input: HTTP Post message from web browser&lt;br /&gt;
  output: a feed back message to indicate whether the DVB-H broadcast system is running&lt;br /&gt;
  main function:  do system calls to start/stop the following application-- vlc, dataaggregator, flute, timeslicer, python   scripts and Dtplay&lt;br /&gt;
&lt;br /&gt;
==== User wants to remove an existing video channel from the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (&amp;gt;=2 programs)&lt;br /&gt;
:* User select the video file he or she wants to remove&lt;br /&gt;
:* User clicks on &amp;quot;Remove from DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:68000/  This http post message tells the back end script to kill the vlc process for that specific video file. Other parts of DVB-H boradcast system are not changed&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.&lt;br /&gt;
:* Note: backend script name: killone.pl&lt;br /&gt;
  killone.pl API&lt;br /&gt;
  input: video file name, multicast ip and port&lt;br /&gt;
  output: a feed back message to indicate whether the vlc session is killed or not.&lt;br /&gt;
  main function: do a system call to kill a vlc process&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2403</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2403"/>
		<updated>2008-10-02T06:54:42Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified: Yi Liu  1:45am, Oct 2, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new Video file to the repository====&lt;br /&gt;
:* Pre-condition: The video file does not belong to the current video repository&lt;br /&gt;
:* On webpage, user clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? TBD here&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Web browser can post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there. (as well as its corresponding ESG?)&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
:* Post-condition: The video file is added to the video repository&lt;br /&gt;
:* Note: this part is all handled by web GUI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User want to update DVB-H Network Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;br /&gt;
:* Post-condition: Dtplay parameters got updated.&lt;br /&gt;
:* Note: Backend script name: updatedtplay.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update Timeslicing Parameters ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
:* Post-condition: timeslicer parameters got updated&lt;br /&gt;
:* Note: Backend script name: updatetimeslicer.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User selects video to broadcast ====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator&lt;br /&gt;
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.&lt;br /&gt;
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to update PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in &amp;quot;stopped&amp;quot; status&lt;br /&gt;
:* Pre-condition2: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Post-conditon: all the python scripts for PSI/SI table are ready.&lt;br /&gt;
:* Note: backend script name: updatepsi.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====User wants to update ESG====&lt;br /&gt;
:* TBD&lt;br /&gt;
:* this part may involve updating Flute FDT table based on ESG file size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to start the DVB-H boradcast system based on current configuration====&lt;br /&gt;
:* Pre-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* User clicks on &amp;quot;Start DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the whole system&lt;br /&gt;
:* The back end script first do a system call to start vlc &lt;br /&gt;
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)&lt;br /&gt;
:* The back end script then do a system call to start dataaggregator&lt;br /&gt;
:* The back end script then do a system call to start timeslicer&lt;br /&gt;
:* The back end script then do a system call to start python scrips and TS Null Shaper.&lt;br /&gt;
:* The back end script then do a system call to start DtPlay&lt;br /&gt;
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.&lt;br /&gt;
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.&lt;br /&gt;
:* Note: backend script name: start.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to stop the DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.&lt;br /&gt;
:* User clicks on &amp;quot;Stop DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay&lt;br /&gt;
:* Post-condition: DVB-H broadcast system stopped&lt;br /&gt;
:* Note: backend script name: stop.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to add a new video channel in the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs&lt;br /&gt;
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)&lt;br /&gt;
:* User clicks on &amp;quot;Add to DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:58000/  This http post message tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.&lt;br /&gt;
:* Note: backend script name: restart.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== User wants to remove an existing video channel from the current playing DVB-H boradcast system ====&lt;br /&gt;
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (&amp;gt;=2 programs)&lt;br /&gt;
:* User select the video file he or she wants to remove&lt;br /&gt;
:* User clicks on &amp;quot;Remove from DVB-H&amp;quot; button under DVB-H Parameters tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:68000/  This http post message tells the back end script to kill the vlc process for that specific video file. Other parts of DVB-H boradcast system are not changed&lt;br /&gt;
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.&lt;br /&gt;
:* Note: backend script name: killone.pl&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2383</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2383"/>
		<updated>2008-10-01T20:45:56Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
Last modified: Yi Liu  1:45pm, Oct 1, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 4 tabs for each video file:  File name, multicast IP, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Now all the scripts for PSI/SI table are ready.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler&lt;br /&gt;
:* The back end script parses the configuration file psisi.cfg&lt;br /&gt;
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files&lt;br /&gt;
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2382</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2382"/>
		<updated>2008-10-01T20:45:08Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
Last modified: Yi Liu  1:45pm, Oct 1, 2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 0x777&lt;br /&gt;
:* Enter assigned multicast IP for the video. Example: 224.0.1.2&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server. &lt;br /&gt;
:* There are 4 tabs for each video file:  File name, multicast IP, PID assigned, and its corresponding ESG file name.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.  &lt;br /&gt;
  For example:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
  video1_ip=224.0.0.1&lt;br /&gt;
  video2_ip=224.0.0.10&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  For example:&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)&lt;br /&gt;
:* Backend script create new pmt.py files &lt;br /&gt;
:* Backend script update pat.py &lt;br /&gt;
:* Backend script update sdt.py&lt;br /&gt;
:* Backend script update int.py&lt;br /&gt;
:* Backend script update psimain.py&lt;br /&gt;
:* Now all the scripts for PSI/SI table are ready.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler&lt;br /&gt;
:* The back end script parses the configuration file psisi.cfg&lt;br /&gt;
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files&lt;br /&gt;
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2381</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2381"/>
		<updated>2008-10-01T20:34:29Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler&lt;br /&gt;
:* The back end script parses the configuration file psisi.cfg&lt;br /&gt;
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files&lt;br /&gt;
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID of that file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name and its PID to psisi.cfg.  E.g:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
:* User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   &lt;br /&gt;
  E.g&lt;br /&gt;
  video1_service_id= 0x2B00&lt;br /&gt;
  video2_service_id= 0x2B01&lt;br /&gt;
  video1_pmt_id=0x31f&lt;br /&gt;
  video2_pmt_id=0x320&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2380</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2380"/>
		<updated>2008-10-01T20:26:57Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler&lt;br /&gt;
:* The back end script parses the configuration file psisi.cfg&lt;br /&gt;
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files&lt;br /&gt;
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* Pre-condition: There exist selected video file in &amp;quot;Video Files&amp;quot; tab&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* Web GUI knows which video file are selected and grab the corresponding PID of that file&lt;br /&gt;
:* Web GUI saves the total number of video files, each video file name and its PID to psisi.cfg.  E.g:&lt;br /&gt;
  video_num=2&lt;br /&gt;
  video1=abc.mp4&lt;br /&gt;
  pid1=0x777 &lt;br /&gt;
  video2=efg.mp4&lt;br /&gt;
  pid2=0x888&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from psisi.cfg&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2379</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2379"/>
		<updated>2008-10-01T20:04:59Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler&lt;br /&gt;
:* The back end script parses the configuration file psisi.cfg&lt;br /&gt;
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files&lt;br /&gt;
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
:* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* Web GUI create a new file folder for each uploaded video file and store the video there.&lt;br /&gt;
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)&lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
:* User goes to &amp;quot;Video Files&amp;quot; tab and can confirm the new uploaded video file is available in the repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* User changes the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2378</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2378"/>
		<updated>2008-10-01T19:59:43Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler&lt;br /&gt;
:* The back end script parses the configuration file psisi.cfg&lt;br /&gt;
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files&lt;br /&gt;
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Enter length description for the video. Example: 2hrs 32 minutes&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* User changes the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2377</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2377"/>
		<updated>2008-10-01T19:56:20Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button under PSI/SI tab&lt;br /&gt;
:* The webui sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler&lt;br /&gt;
:* The backend script stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button&lt;br /&gt;
:* The webui posts a start message to the main PSI/SI handler&lt;br /&gt;
:* The system parses the configuration files.&lt;br /&gt;
:* The system creates the necessary PSI/SI and ESG files&lt;br /&gt;
:* The system starts the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Enter length description for the video. Example: 2hrs 32 minutes&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* User changes the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2376</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2376"/>
		<updated>2008-10-01T19:52:34Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button&lt;br /&gt;
:* The webui posts a kill message to terminate the main PSI/SI handler&lt;br /&gt;
:* The system stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button&lt;br /&gt;
:* The webui posts a start message to the main PSI/SI handler&lt;br /&gt;
:* The system parses the configuration files.&lt;br /&gt;
:* The system creates the necessary PSI/SI and ESG files&lt;br /&gt;
:* The system starts the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Enter length description for the video. Example: 2hrs 32 minutes&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* User changes the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;MPE_FEC_Frame=1024&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-n 1024&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Guard_Interval=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-g 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;OFDM_Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-b 8&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Code_Rate=3&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-c 3&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=qpsk&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-o qpsk&amp;quot; to timeslicer&lt;br /&gt;
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;DeltaT=350&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-d 350&amp;quot; to timeslicer&lt;br /&gt;
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Time_Slicing_Algorithm=P2OPT&amp;quot;&lt;br /&gt;
:* Backend script will not do anything for now :-)&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  timeslicing.cfg &lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configuration from  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2375</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2375"/>
		<updated>2008-10-01T19:23:31Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button&lt;br /&gt;
:* The webui posts a kill message to terminate the main PSI/SI handler&lt;br /&gt;
:* The system stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button&lt;br /&gt;
:* The webui posts a start message to the main PSI/SI handler&lt;br /&gt;
:* The system parses the configuration files.&lt;br /&gt;
:* The system creates the necessary PSI/SI and ESG files&lt;br /&gt;
:* The system starts the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Enter length description for the video. Example: 2hrs 32 minutes&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* User changes the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configurationfrom  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2374</id>
		<title>mobile tv testbed software</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=mobile_tv_testbed_software&amp;diff=2374"/>
		<updated>2008-10-01T19:09:06Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use Case Analysis ==&lt;br /&gt;
Simple use cases for configuring the test bed.&lt;br /&gt;
&lt;br /&gt;
==== Stop the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Stop&amp;quot; button&lt;br /&gt;
:* The webui posts a kill message to terminate the main PSI/SI handler&lt;br /&gt;
:* The system stops the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start the PSI/SI Process ====&lt;br /&gt;
:* User clicks on &amp;quot;Start&amp;quot; button&lt;br /&gt;
:* The webui posts a start message to the main PSI/SI handler&lt;br /&gt;
:* The system parses the configuration files.&lt;br /&gt;
:* The system creates the necessary PSI/SI and ESG files&lt;br /&gt;
:* The system starts the TS NULL Shaper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selecting Video to Broadcast ====&lt;br /&gt;
:* User clicks on the &amp;quot;Video Files&amp;quot; tab.&lt;br /&gt;
:* The system lists all available video on the server.&lt;br /&gt;
:* Entries with existing check mark indicates it is currently in use.&lt;br /&gt;
:* User selects video files that are not marked.&lt;br /&gt;
:* User selects &amp;quot;Save&amp;quot; to submit the changes to the server.&lt;br /&gt;
:* The system updates the videoslist.cfg file to reflect the changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Video ====&lt;br /&gt;
:* User clicks on the &amp;quot;Upload&amp;quot; tab.&lt;br /&gt;
:* Select video to be uploaded from local computer.&lt;br /&gt;
:* Enter assigned PID - Provider ID for the video. Example: 12343&lt;br /&gt;
:* Enter length description for the video. Example: 2hrs 32 minutes&lt;br /&gt;
:* Click Upload&lt;br /&gt;
:* Browser post video file and data to the test bed server. &lt;br /&gt;
:* User waits for the browser to refresh.&lt;br /&gt;
:* The system confirms the video file was uploaded.&lt;br /&gt;
&lt;br /&gt;
==== PSI/SI Configuration Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;PSI/SI&amp;quot; tab&lt;br /&gt;
:* User changes the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the psisi.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Timeslicing Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;Time Slicing&amp;quot; tab&lt;br /&gt;
:* User selects the parameters&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the timeslicing.cfg configuration file.&lt;br /&gt;
&lt;br /&gt;
==== Changing DVB-H Parameters ====&lt;br /&gt;
:* User clicks on &amp;quot;DVB-H Parameters&amp;quot; tab&lt;br /&gt;
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are between 470 and 750)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Carrier_Frequency=538&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mf 538&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Convolutional_Rate=1/2&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mc 1/2&amp;quot; to DtPlay&lt;br /&gt;
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Gaurd_Interval=1/4&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mG 1/4&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Bandwidth=8&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mB 8&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Constellation=QPSK&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mC QPSK&amp;quot; to DtPlay&lt;br /&gt;
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)&lt;br /&gt;
:* Update dvbhparams.cfg with &amp;quot;Transmission_Mode=8k&amp;quot;&lt;br /&gt;
:* Backend script will add &amp;quot;-mT 8k&amp;quot; to DtPlay&lt;br /&gt;
:* User clicks &amp;quot;Save&amp;quot;&lt;br /&gt;
:* The system saves the changes to the dvbhparams.cfg configuration file.&lt;br /&gt;
:* Backend script use the latest configurationfrom  dvbhparams.cfg&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Nokia_N810_Tablet_trial&amp;diff=2359</id>
		<title>Nokia N810 Tablet trial</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Nokia_N810_Tablet_trial&amp;diff=2359"/>
		<updated>2008-09-28T20:07:14Z</updated>

		<summary type="html">&lt;p&gt;Yliu: New page: ==Trial Goal== Try to use Nokia N810 Tablet as DVB-H receiver device   ==Cell phone Software== [http://europe.nokia.com/n810 Nokia N810 Tablet] is running [http://maemo.org/ Maemo Linux ba...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Trial Goal==&lt;br /&gt;
Try to use Nokia N810 Tablet as DVB-H receiver device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cell phone Software==&lt;br /&gt;
[http://europe.nokia.com/n810 Nokia N810 Tablet] is running [http://maemo.org/ Maemo Linux based OS2008.]  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cell phone Hardware==&lt;br /&gt;
* Processor:   TI OMAP 2420, 400Mhz&lt;br /&gt;
* Memory:     DDR RAM 128MB ,  Flash 256MB&lt;br /&gt;
* Storage:     Up to 2GB internal memory&lt;br /&gt;
* Display:      High-resolution 4.13” WVGA display (800 x 480 pixels) with up to 65,000 colors&lt;br /&gt;
* Connectivity: WLAN standard: IEEE 802.11b/g , USB high speed for PC connectivity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Hardware needed==&lt;br /&gt;
&lt;br /&gt;
1. Nokia N810 Tablet&lt;br /&gt;
&lt;br /&gt;
2. A normal DVB-T USB-Stick (with linux driver) &lt;br /&gt;
&lt;br /&gt;
3. A powered hub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software needed==&lt;br /&gt;
&lt;br /&gt;
1. A new translated kernel, since the usb support in the standard kernel has a bug&lt;br /&gt;
&lt;br /&gt;
2. kernel-modules and firmware for the DVB-T stick&lt;br /&gt;
&lt;br /&gt;
3. mplayer with sdp-Support and libfaad2 2.6.1&lt;br /&gt;
&lt;br /&gt;
4. Proper SDP files &lt;br /&gt;
&lt;br /&gt;
5. Some other utilities, such as dvbnet, tzap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What we have done so far==&lt;br /&gt;
&lt;br /&gt;
1. Flash the cell phone operation system provided we got the OS image (either official Nokia OS image or customized OS image). &lt;br /&gt;
&lt;br /&gt;
Note: This is a complete system restore such that all the previous settings will be lost after the flash. And there is a risk to brick the phone if the customized OS image has problems.&lt;br /&gt;
&lt;br /&gt;
2. Gain root access to the device.&lt;br /&gt;
&lt;br /&gt;
3. Gain ssh access to the device.&lt;br /&gt;
&lt;br /&gt;
4. Set up proper repository location and have most commonly used Linux tools installed.&lt;br /&gt;
&lt;br /&gt;
5. Have already got the DVB-T USB stick and its Linux driver.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What we will do==&lt;br /&gt;
&lt;br /&gt;
1. Purchase a powered usb hub&lt;br /&gt;
&lt;br /&gt;
Reason: Nokia N810 Tablet only has mini-usb port which can not provide any power. To use DVB-T USB stick on N810, we have to use a powered USB hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Compile the new kernal to fix the USB support bug in the standard kernel and upload to the cell phone&lt;br /&gt;
&lt;br /&gt;
Reason: In order to use DVB-T USB stick on N810&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Install DVB-T USB stick drivers to the N810 OS&lt;br /&gt;
&lt;br /&gt;
Reason: In order to use DVB-T USB stick on N810&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Compile mplayer with sdp-Support and libfaad2 2.6.1&lt;br /&gt;
&lt;br /&gt;
Reason: mplayer will be the client software used to receive DVB-H signal. And we probably can skip ESG reception part because we can turn the device to the video stream PID directly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&lt;br /&gt;
* [http://www.internettablettalk.com/forums/showthread.php?t=17704 DVB-H on N800 - success - Internet Tablet Talk Forums]&lt;br /&gt;
&lt;br /&gt;
* [http://dvbh.kilu.de/ Running DVB-H on N800.]&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Nokia_S60_Platform_battery_monitor_tool&amp;diff=2358</id>
		<title>Nokia S60 Platform battery monitor tool</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Nokia_S60_Platform_battery_monitor_tool&amp;diff=2358"/>
		<updated>2008-09-28T19:35:14Z</updated>

		<summary type="html">&lt;p&gt;Yliu: New page: == Cell phone OS requirement: == Have to be S60 3rd Edition, Feature Pack 1 (or newer). Currently only Nokia N96 in the lab can run this software   ==Installation==  1. Connect the device ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cell phone OS requirement: ==&lt;br /&gt;
Have to be S60 3rd Edition, Feature Pack 1 (or newer). Currently only Nokia N96 in the lab can run this software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
1. Connect the device to a PC using a USB cable.&lt;br /&gt;
&lt;br /&gt;
2. Select the PC Suite mode for USB connection.&lt;br /&gt;
&lt;br /&gt;
3. Double-click the SIS package in PC Suite.&lt;br /&gt;
&lt;br /&gt;
4. Answer Yes to the installation confirmation in the PC.&lt;br /&gt;
&lt;br /&gt;
5. Follow the screen instruction to finish the installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functionality==&lt;br /&gt;
&lt;br /&gt;
1. Shows the power consumption over a measurement period. The basic unit is a watt (W). The user can switch between average and instant power.&lt;br /&gt;
&lt;br /&gt;
2. Displays current consumption which is calculated by the measured power divided by the measured voltage.&lt;br /&gt;
&lt;br /&gt;
3. Shows the CPU load over a measurement period as a percentage of the total available processing capability. Values are between 0 and 100%&lt;br /&gt;
&lt;br /&gt;
4. Displays the RAM memory usage over the period. The units are KB and MB.&lt;br /&gt;
&lt;br /&gt;
5. Presents the downlink (download) and uplink (upload) speeds through the IP stack (Internet Protocol). The unit is KB.&lt;br /&gt;
&lt;br /&gt;
6. Shows the cellular signal levels as RX and TX levels. RX level corresponds to the power of the received cellular signal.&lt;br /&gt;
&lt;br /&gt;
7. Shows the cumulative energy consumed over the measurement period. The unit is ampere-hour (Ah)&lt;br /&gt;
&lt;br /&gt;
8. Shows the battery voltage levels over a measurement period. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&lt;br /&gt;
http://www.forum.nokia.com/main/resources/user_experience/power_management/nokia_energy_profiler/&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:mobileTV&amp;diff=2357</id>
		<title>Private:mobileTV</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:mobileTV&amp;diff=2357"/>
		<updated>2008-09-28T19:24:46Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Mobile TV Networks''' &lt;br /&gt;
&lt;br /&gt;
Mobile TV allows users to watch their favorite TV shows and games on small hand-held devices while&lt;br /&gt;
traveling. It, therefore, extends the Prime Time viewing of users and provides more business opportunities&lt;br /&gt;
for content providers. The market for mobile TV is huge: it is expected to grow to up to 20 billion Euros&lt;br /&gt;
with 500 million customers by 2011 [http://europa.eu/rapid/pressReleasesAction.do?reference=IP/08/451&amp;amp;format=PDF (reference)]. In fact, mobile TV has already been deployed in parts of Europe and Asia and in pilot-testing in several locations in North and South Americas [http://www.dvb-h.org/  (official DVB-H site)]. This rapid adoption is fueled by the desire of users for multimedia content and by the technological advances in wireless mobile devices, such as personal digital assistants (PDAs), smart cellular phones, and mobile media players. Many of these devices have evolved to almost full-fledged mobile computers with high resolution displays, fast network links, large memory and storage space, and fast processors. Therefore, multimedia content can be rendered on most of these mobile devices, which further stimulates the user demands for more content and better quality. &lt;br /&gt;
&lt;br /&gt;
A common issue in all mobile wireless devices is the limited energy supply since they are battery powered. Thus, minimizing the energy consumption in mobile TV networks becomes a critical problem for the success and wide adoption of such systems. Another important issue is reducing the channel switching delay. We address these two important problems. Our goal is to provide a guarantee on the maximum switching delay from a TV channel to any other channel, without scarifying the energy saving for mobile devices. In addition, we are exploring the possibility of using scalable video coding (H.264/SVC) to support heterogeneous receivers, control switching delay, and minimize energy consumption. Furthermore, the interaction between different parameters of mobile TV systems, e.g., FEC, frame refresh delay, time slicing,  are being analyzed.  All algorithms and schemes are being implemented and evaluated in a [http://www.cs.sfu.ca/~mhefeeda/Papers/mm08demo_abstract.pdf real mobile TV testbed] that we have developed in our lab. &lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~mhefeeda/ Mohamed Hefeeda]&lt;br /&gt;
&lt;br /&gt;
* [http://www.sfu.ca/~cha16/ ChengHsin Hsu (PhD student)]&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~yliu1/ Yi Liu (MSc student)]&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~cly/ Cong Ly (MSc student)]&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
* M. Hefeeda, C. Hsu, and Y. Liu,  [http://www.cs.sfu.ca/~mhefeeda/Papers/mm08demo_abstract.pdf Testbed and Experiments for Mobile TV (DVB-H) Networks],  ACM Multimedia'08 Technical Demonstration, Vancouver, Canada, October 2008.&lt;br /&gt;
&lt;br /&gt;
* M. Hefeeda and C. Hsu,  [http://nsl.cs.sfu.ca/papers/burst_tr.pdf On Burst Transmission Scheduling in Mobile TV Broadcast Networks], School of Computing Science, Simon Fraser University, August 2008.&lt;br /&gt;
&lt;br /&gt;
* C. Hsu and M. Hefeeda, [http://nsl.cs.sfu.ca/papers/mmcn09_tr.pdf Bounding Switching Delay in Mobile TV Broadcast Networks], School of Computing Science, Simon Fraser University, July 2008.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mobile TV (DVB-H) Testbed and Experiments ==&lt;br /&gt;
&lt;br /&gt;
We have implemented a complete end-to-end testbed for [http://www.dvb-h.org/ DVB-H (Digital Video Broadcast--Handheld)] networks. The testbed provides a realistic platform for analyzing&lt;br /&gt;
various aspects of these networks, including the energy saving&lt;br /&gt;
achieved by the time slicing mechanism, average channel switching&lt;br /&gt;
delay, network capacity in terms of number of TV channels that&lt;br /&gt;
can be broadcast, visual quality of TV channels transmitting different&lt;br /&gt;
types of video streams, information exchange and interactivity&lt;br /&gt;
between base station and receivers, among many others. To the best&lt;br /&gt;
of our knowledge, there exists no open-source testbed for DVB-H.&lt;br /&gt;
The details of testbeds and pilot networks created by companies are&lt;br /&gt;
usually not published, and the source code is not available. Thus&lt;br /&gt;
academic researchers designing algorithms and protocols for mobile&lt;br /&gt;
TV networks, including ourselves, had to resort to simulation&lt;br /&gt;
and/or theoretical analysis. To address this problem, we make the&lt;br /&gt;
details and source code of our testbed available to the research community.&lt;br /&gt;
&lt;br /&gt;
The main components of our mobile TV testbed are shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:MobileTV2.jpg|center|661px|Mobile TV Testbed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Base Station.'''  The base station is a Linux box (Intel Quad-Core Xeon E5420 (2.5 GHz) PC running Ubuntu Linux) in which we installed the RF signal modulator: Dektec DTA-110T DVB-T/H Modulator and UHF Upconverter for PCI Bus. &lt;br /&gt;
This modulator implements the physical layer of the protocol stack and transmits&lt;br /&gt;
DVB-H standard compliant signals via an indoor antenna. The RF&lt;br /&gt;
output level of the modulator, however, is quite low (-29 dBm)&lt;br /&gt;
and can only reach up to 1-meter broadcast range with a 6 dB receiver&lt;br /&gt;
antenna. Using a low-power amplifier, the RF signal can be&lt;br /&gt;
boosted to about 0 dBm, which gives us approximately 20-meter&lt;br /&gt;
range in our lab environment. &lt;br /&gt;
&lt;br /&gt;
IP packets of the video streams are encapsulated in MPEs and FEC-coded using the [http://amuse.ftw.at/downloads/encapsulator open-source IP Encapsulator]; several bug fixes were needed to get it running properly with the RF modulator. The IP Encapsulator also&lt;br /&gt;
implements a simple time slicing technique. As explained in the&lt;br /&gt;
following section, we have extended this IP Encapsulator to support&lt;br /&gt;
more sophisticated and optimal time slicing techniques. We&lt;br /&gt;
have also re-designed the time slicing module to be well-structured&lt;br /&gt;
with defined interfaces in order to facilitate implementing and comparing&lt;br /&gt;
different current/future time slicing algorithms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Receivers.'''   We use the Nokia N92 device as a receiver. This&lt;br /&gt;
device is equipped with the receiver-side of the DVB-H protocol&lt;br /&gt;
and video player. The operating system on this device (Symbian)&lt;br /&gt;
provides several APIs, including APIs for measuring energy consumption.&lt;br /&gt;
While the N92 device helps in assessing the visual quality&lt;br /&gt;
of videos, it does not provide detailed logging functions of the&lt;br /&gt;
low-level signals, which are needed to evaluate the performance&lt;br /&gt;
of different protocols. To address this shortcoming, we added the&lt;br /&gt;
Divi Catch RF-T/H transport stream analyzer to the testbed. This analyzer&lt;br /&gt;
can be attached to a PC via a USB port. The analyzer records traffic&lt;br /&gt;
streams as well as provides a very detailed information on the RF&lt;br /&gt;
signal, the MPEs, jitter, time slicing, and so on. It also comes with&lt;br /&gt;
a visualization software that can run on the PC for analysis.&lt;br /&gt;
&lt;br /&gt;
We note that the (academic) price of the RF Modulator is about&lt;br /&gt;
$3,000 and of the Analyzer is about $6,000.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion and Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [[Private: mobile_tv_meeting_minutes | Meeting Minutes (login required)]]&lt;br /&gt;
&lt;br /&gt;
* [[Private:mobile_tv_testbed_software| Testbed Software Design (login required)]]&lt;br /&gt;
&lt;br /&gt;
* [[Private:mobile_streaming_ideas|Underinvestigated ideas of streaming to mobile devices (login required)]].&lt;br /&gt;
 &lt;br /&gt;
* [[Time slicing in DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[PSI_SI_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[ESG_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[FLUTE_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[Testbed Readme]]&lt;br /&gt;
&lt;br /&gt;
* [[Nokia S60 Platform battery monitor tool]]&lt;br /&gt;
&lt;br /&gt;
* [[Nokia N810 Tablet trial]]&lt;br /&gt;
&lt;br /&gt;
== References and Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dvb-h.org/ The official Mobile TV website maintained by the DVB Project Office.]&lt;br /&gt;
&lt;br /&gt;
* [http://projects.celtic-initiative.org/WING-TV/  Wing-TV Project:]  Docs to test and to verify in detail the DVB-H specification. &lt;br /&gt;
&lt;br /&gt;
* J. Wang, M. Venkatachalam, and Y. Fang, [http://www.fang.ece.ufl.edu/mypaper/jsac07wang.pdf System Architecture and Cross-Layer Optimization of Video Broadcast over WiMAX], IEEE JSAC 25(4), pp. 712--721, MAY 2007.  (Check this special issue of JSAC as well.)&lt;br /&gt;
&lt;br /&gt;
* G. Gardikis, G. Xilouris, C. Skianis, [http://www.springerlink.com/content/a32p21815h46n12q/  Broadband multimedia on the move with DVB-H],  Multimedia Tools and Applications, 36(1-2), January 2008. (DVB-H tutorial in inter-active mode.)&lt;br /&gt;
&lt;br /&gt;
* [http://limbos.wiki.sourceforge.net/ LIMBOS LInux setup for accessing Mobile Broadcasting through Online Streaming]&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Testbed_Readme&amp;diff=2339</id>
		<title>Testbed Readme</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Testbed_Readme&amp;diff=2339"/>
		<updated>2008-09-19T03:59:24Z</updated>

		<summary type="html">&lt;p&gt;Yliu: New page: == Presetup: == login with proper account, know the bandwidth and frequency of DVB-H network, start PCI card with the following command   /DVB-H/Dta1xx/Dta1xxInit start  ==File folder stru...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Presetup: ==&lt;br /&gt;
login with proper account, know the bandwidth and frequency of DVB-H network, start PCI card with the following command&lt;br /&gt;
  /DVB-H/Dta1xx/Dta1xxInit start&lt;br /&gt;
&lt;br /&gt;
==File folder structures==&lt;br /&gt;
&lt;br /&gt;
(1) /nsltester/DVBH-Encapsulator&lt;br /&gt;
&lt;br /&gt;
this folder is used to keep Encapsulator source files, whenever you change something in Encapsulator, you need to make again. See&lt;br /&gt;
  /nsltester/DVBH-Encapsulator/Makefile for more details&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
(they are installed to /usr/local/bin)&lt;br /&gt;
&lt;br /&gt;
(2) /nsltester/DVBH-Encapsulator/doxgen&lt;br /&gt;
&lt;br /&gt;
this folder is used for doxgen of DVB-H Encapsulator&lt;br /&gt;
&lt;br /&gt;
(3) /nsltester/DVBH-Encapsulator/media&lt;br /&gt;
&lt;br /&gt;
this folder is used to keep video source files&lt;br /&gt;
&lt;br /&gt;
(4) /nsltester/DVBH-Encapsulator/&amp;lt;test*&amp;gt;/log4crc&lt;br /&gt;
&lt;br /&gt;
this files is used to control the log level, remember DVB-H Encapsulator use log4c, the log files are kept in &lt;br /&gt;
  /nsltester/DVBH-Encapsulator/&amp;lt;test*&amp;gt;/logs&lt;br /&gt;
&lt;br /&gt;
Note: each test will have its own log files, e.g. for test1, the logs are under /nsltester/DVBH-Encapsulator/test1/logs&lt;br /&gt;
&lt;br /&gt;
(5) /nsltester/DVBH-Encapsulator/test*&lt;br /&gt;
&lt;br /&gt;
these folders are used for DVB-H demo, each folder test a feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test1: only play one video program, no ESG==&lt;br /&gt;
&lt;br /&gt;
  cd /nsltester/DVBH-Encapsulator/test1&lt;br /&gt;
  ./run.py (it will call test1.sh, see the following for details)&lt;br /&gt;
&lt;br /&gt;
After the test:&lt;br /&gt;
  ./stop.py   (it just do some system call to kill process)&lt;br /&gt;
&lt;br /&gt;
steps:&lt;br /&gt;
&lt;br /&gt;
1.1 start vlc to play the video file (done by test1.sh)&lt;br /&gt;
&lt;br /&gt;
1.2 start DataAggregator (proxy) to get the packet (done by test1.sh)&lt;br /&gt;
&lt;br /&gt;
1.3 start timeslicer (done by test1.sh)&lt;br /&gt;
&lt;br /&gt;
1.4 add PSI/SI info  (done by run.py)&lt;br /&gt;
&lt;br /&gt;
1.5 use Dtplay to send DVB-H signal (done by run.py)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test2: one video program and its ESG==&lt;br /&gt;
&lt;br /&gt;
  cd /nsltester/DVBH-Encapsulator/test2&lt;br /&gt;
  ./run.py (it will call test2.sh, see the following for details)&lt;br /&gt;
&lt;br /&gt;
After the test:&lt;br /&gt;
  ./stop.py  &lt;br /&gt;
&lt;br /&gt;
steps:&lt;br /&gt;
&lt;br /&gt;
2.1 (a) start vlc to play the video file (done by test2.sh)&lt;br /&gt;
&lt;br /&gt;
2.1 (b) start flute to send ESG files (done by test2.sh)&lt;br /&gt;
&lt;br /&gt;
2.2 (a) start DataAggregator (proxy) to get the packet from vlc (done by test2.sh)&lt;br /&gt;
&lt;br /&gt;
2.2 (b) start DataAggregator (proxy) to get the packet from flute (done by test2.sh)&lt;br /&gt;
&lt;br /&gt;
2.3 start timeslicer  (done by test2.sh)&lt;br /&gt;
&lt;br /&gt;
2.4 add PSI/SI info (done by run.py)&lt;br /&gt;
&lt;br /&gt;
2.5 use Dtplay to send DVB-H signal (done by run.py)&lt;br /&gt;
&lt;br /&gt;
==Test3: three video programs, and one ESG==&lt;br /&gt;
&lt;br /&gt;
  cd /nsltester/DVBH-Encapsulator/test3&lt;br /&gt;
  ./run.py (it will call test3.sh, see the following for details)&lt;br /&gt;
&lt;br /&gt;
After the test:&lt;br /&gt;
  ./stop.py&lt;br /&gt;
&lt;br /&gt;
steps:&lt;br /&gt;
&lt;br /&gt;
3.1 (a) start vlc to play three video files (done by test3.sh)&lt;br /&gt;
&lt;br /&gt;
3.1 (b) start flute to send ESG files (done by test3.sh)&lt;br /&gt;
&lt;br /&gt;
3.2 (a) start three DataAggregator (proxy) to get the packet from vlc (done by test3.sh)&lt;br /&gt;
&lt;br /&gt;
3.2 (b) start one DataAggregator (proxy) to get the packet from flute (done by test3.sh)&lt;br /&gt;
&lt;br /&gt;
3.3 start timeslicer  (done by test3.sh)&lt;br /&gt;
&lt;br /&gt;
3.4 add PSI/SI info (done by run.py)&lt;br /&gt;
&lt;br /&gt;
3.5 use Dtplay to send DVB-H signal (done by run.py)&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Private:mobileTV&amp;diff=2338</id>
		<title>Private:mobileTV</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Private:mobileTV&amp;diff=2338"/>
		<updated>2008-09-19T03:48:32Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Mobile TV Networks''' &lt;br /&gt;
&lt;br /&gt;
Mobile TV allows users to watch their favorite TV shows and games on small hand-held devices while&lt;br /&gt;
traveling. It, therefore, extends the Prime Time viewing of users and provides more business opportunities&lt;br /&gt;
for content providers. The market for mobile TV is huge: it is expected to grow to up to 20 billion Euros&lt;br /&gt;
with 500 million customers by 2011 [http://europa.eu/rapid/pressReleasesAction.do?reference=IP/08/451&amp;amp;format=PDF (reference)]. In fact, mobile TV has already been deployed in parts of Europe and Asia and in pilot-testing in several locations in North and South Americas [http://www.dvb-h.org/  (official DVB-H site)]. This rapid adoption is fueled by the desire of users for multimedia content and by the technological advances in wireless mobile devices, such as personal digital assistants (PDAs), smart cellular phones, and mobile media players. Many of these devices have evolved to almost full-fledged mobile computers with high resolution displays, fast network links, large memory and storage space, and fast processors. Therefore, multimedia content can be rendered on most of these mobile devices, which further stimulates the user demands for more content and better quality. &lt;br /&gt;
&lt;br /&gt;
A common issue in all mobile wireless devices is the limited energy supply since they are battery powered. Thus, minimizing the energy consumption in mobile TV networks becomes a critical problem for the success and wide adoption of such systems. Another important issue is reducing the channel switching delay. We address these two important problems. Our goal is to provide a guarantee on the maximum switching delay from a TV channel to any other channel, without scarifying the energy saving for mobile devices. In addition, we are exploring the possibility of using scalable video coding (H.264/SVC) to support heterogeneous receivers, control switching delay, and minimize energy consumption. Furthermore, the interaction between different parameters of mobile TV systems, e.g., FEC, frame refresh delay, time slicing,  are being analyzed.  All algorithms and schemes are being implemented and evaluated in a [http://www.cs.sfu.ca/~mhefeeda/Papers/mm08demo_abstract.pdf real mobile TV testbed] that we have developed in our lab. &lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~mhefeeda/ Mohamed Hefeeda]&lt;br /&gt;
&lt;br /&gt;
* [http://www.sfu.ca/~cha16/ ChengHsin Hsu (PhD student)]&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~yliu1/ Yi Liu (MSc student)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
* M. Hefeeda, C. Hsu, and Y. Liu,  [http://www.cs.sfu.ca/~mhefeeda/Papers/mm08demo_abstract.pdf Testbed and Experiments for Mobile TV (DVB-H) Networks],  ACM Multimedia'08 Technical Demonstration, Vancouver, Canada, October 2008.&lt;br /&gt;
&lt;br /&gt;
* M. Hefeeda and C. Hsu,  [http://nsl.cs.sfu.ca/papers/burst_tr.pdf On Burst Transmission Scheduling in Mobile TV Broadcast Networks], School of Computing Science, Simon Fraser University, August 2008.&lt;br /&gt;
&lt;br /&gt;
* C. Hsu and M. Hefeeda, [http://nsl.cs.sfu.ca/papers/mmcn09_tr.pdf Bounding Switching Delay in Mobile TV Broadcast Networks], School of Computing Science, Simon Fraser University, July 2008.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mobile TV (DVB-H) Testbed and Experiments ==&lt;br /&gt;
&lt;br /&gt;
We have implemented a complete end-to-end testbed for [http://www.dvb-h.org/ DVB-H (Digital Video Broadcast--Handheld)] networks. The testbed provides a realistic platform for analyzing&lt;br /&gt;
various aspects of these networks, including the energy saving&lt;br /&gt;
achieved by the time slicing mechanism, average channel switching&lt;br /&gt;
delay, network capacity in terms of number of TV channels that&lt;br /&gt;
can be broadcast, visual quality of TV channels transmitting different&lt;br /&gt;
types of video streams, information exchange and interactivity&lt;br /&gt;
between base station and receivers, among many others. To the best&lt;br /&gt;
of our knowledge, there exists no open-source testbed for DVB-H.&lt;br /&gt;
The details of testbeds and pilot networks created by companies are&lt;br /&gt;
usually not published, and the source code is not available. Thus&lt;br /&gt;
academic researchers designing algorithms and protocols for mobile&lt;br /&gt;
TV networks, including ourselves, had to resort to simulation&lt;br /&gt;
and/or theoretical analysis. To address this problem, we make the&lt;br /&gt;
details and source code of our testbed available to the research community.&lt;br /&gt;
&lt;br /&gt;
The main components of our mobile TV testbed are shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:MobileTV2.jpg|center|661px|Mobile TV Testbed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Base Station.'''  The base station is a Linux box (Intel Quad-Core Xeon E5420 (2.5 GHz) PC running Ubuntu Linux) in which we installed the RF signal modulator: Dektec DTA-110T DVB-T/H Modulator and UHF Upconverter for PCI Bus. &lt;br /&gt;
This modulator implements the physical layer of the protocol stack and transmits&lt;br /&gt;
DVB-H standard compliant signals via an indoor antenna. The RF&lt;br /&gt;
output level of the modulator, however, is quite low (-29 dBm)&lt;br /&gt;
and can only reach up to 1-meter broadcast range with a 6 dB receiver&lt;br /&gt;
antenna. Using a low-power amplifier, the RF signal can be&lt;br /&gt;
boosted to about 0 dBm, which gives us approximately 20-meter&lt;br /&gt;
range in our lab environment. &lt;br /&gt;
&lt;br /&gt;
IP packets of the video streams are encapsulated in MPEs and FEC-coded using the [http://amuse.ftw.at/downloads/encapsulator open-source IP Encapsulator]; several bug fixes were needed to get it running properly with the RF modulator. The IP Encapsulator also&lt;br /&gt;
implements a simple time slicing technique. As explained in the&lt;br /&gt;
following section, we have extended this IP Encapsulator to support&lt;br /&gt;
more sophisticated and optimal time slicing techniques. We&lt;br /&gt;
have also re-designed the time slicing module to be well-structured&lt;br /&gt;
with defined interfaces in order to facilitate implementing and comparing&lt;br /&gt;
different current/future time slicing algorithms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Receivers.'''   We use the Nokia N92 device as a receiver. This&lt;br /&gt;
device is equipped with the receiver-side of the DVB-H protocol&lt;br /&gt;
and video player. The operating system on this device (Symbian)&lt;br /&gt;
provides several APIs, including APIs for measuring energy consumption.&lt;br /&gt;
While the N92 device helps in assessing the visual quality&lt;br /&gt;
of videos, it does not provide detailed logging functions of the&lt;br /&gt;
low-level signals, which are needed to evaluate the performance&lt;br /&gt;
of different protocols. To address this shortcoming, we added the&lt;br /&gt;
Divi Catch RF-T/H transport stream analyzer to the testbed. This analyzer&lt;br /&gt;
can be attached to a PC via a USB port. The analyzer records traffic&lt;br /&gt;
streams as well as provides a very detailed information on the RF&lt;br /&gt;
signal, the MPEs, jitter, time slicing, and so on. It also comes with&lt;br /&gt;
a visualization software that can run on the PC for analysis.&lt;br /&gt;
&lt;br /&gt;
We note that the (academic) price of the RF Modulator is about&lt;br /&gt;
$3,000 and of the Analyzer is about $6,000.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion and Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Extend power awareness to WiMax and TDMA networks.&lt;br /&gt;
&lt;br /&gt;
* [[Private:mobile_streaming_ideas|Underinvestigated ideas of streaming to mobile devices (login required)]].&lt;br /&gt;
 &lt;br /&gt;
* [[Time slicing in DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[PSI_SI_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[ESG_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[FLUTE_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
* [[Testbed Readme]]&lt;br /&gt;
&lt;br /&gt;
* Supported frequency range:&lt;br /&gt;
** Nokia N-92 470-702 MHz&lt;br /&gt;
** Nokia N-96 470-750 MHz&lt;br /&gt;
&lt;br /&gt;
== References and Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dvb-h.org/ The official Mobile TV website maintained by the DVB Project Office.]&lt;br /&gt;
&lt;br /&gt;
* [http://projects.celtic-initiative.org/WING-TV/  Wing-TV Project:]  Docs to test and to verify in detail the DVB-H specification. &lt;br /&gt;
&lt;br /&gt;
* J. Wang, M. Venkatachalam, and Y. Fang, [http://www.fang.ece.ufl.edu/mypaper/jsac07wang.pdf System Architecture and Cross-Layer Optimization of Video Broadcast over WiMAX], IEEE JSAC 25(4), pp. 712--721, MAY 2007.  (Check this special issue of JSAC as well.)&lt;br /&gt;
&lt;br /&gt;
* G. Gardikis, G. Xilouris, C. Skianis, [http://www.springerlink.com/content/a32p21815h46n12q/  Broadband multimedia on the move with DVB-H],  Multimedia Tools and Applications, 36(1-2), January 2008. (DVB-H tutorial in inter-active mode.)&lt;br /&gt;
&lt;br /&gt;
* [http://limbos.wiki.sourceforge.net/ LIMBOS LInux setup for accessing Mobile Broadcasting through Online Streaming]&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=File:MobileTV2.jpg&amp;diff=2217</id>
		<title>File:MobileTV2.jpg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=File:MobileTV2.jpg&amp;diff=2217"/>
		<updated>2008-07-13T03:27:58Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Streaming_to_Wireless_and_Mobile_Devices&amp;diff=2216</id>
		<title>Streaming to Wireless and Mobile Devices</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Streaming_to_Wireless_and_Mobile_Devices&amp;diff=2216"/>
		<updated>2008-07-13T03:27:31Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wireless networks offer convenience,mobility, and low cost infrastructure. As wireless networks provide higher throughput and quality-of-service (QoS), video streaming over wireless networks has become an important application. The optimization of video streaming over wireless networks, however, is a challenging task because of the heterogeneity and dynamic nature of the channels among wireless nodes. In this project, we seek to optimize the quality of video streaming in wireless networks with energy-constrained devices. We consider a general wireless network model, in which there are multiple wireless stations sharing a common wireless medium. These wireless stations can, for example, be notebook computers, PDAs, or video sensors. The wireless media can include cellular networks, IEEE 802.16 WiMAX networks, and IEEE 802.11 WLANs. The wireless stations can be sending and/or receiving video streams to/from the video server through a wireless base station. For example, in video surveillance systems, video sensors captures and transmit their streams over a WLAN to a processing server for further analysis. As another example, wireless stations can be receiving video tutorials, demos, or movies from a video-on-demand streaming server over a WiMAX network.  &lt;br /&gt;
&lt;br /&gt;
We consider battery-powered wireless stations that have power constraints. To cope with the power constraints, stations employ complexity scalable video coders that may selectively skip some encoding optimization modules to save power. To maximize quality at a given power budget, we employ models that relate power consumption, encoding bit rate, and resulting distortion. Power considerations are critical in wireless devices. Previous  measurement studies indicate that modern video coders consume about two-thirds of the system power in video wireless communication systems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are also interested in video broadcasting to mobile devices in systems such as DVB-H (Digital Video Broadcast--Handheld). These systems provide TV services to mobile devices. We are working on algorithms to broadcast IP packets to mobile devices such that their wireless reception components can sleep for the longest possible period of time (and hence save energy) while maintaining good video quality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~mhefeeda/ Mohamed Hefeeda]&lt;br /&gt;
&lt;br /&gt;
* Cheng-Hsin Hsu (PhD student)&lt;br /&gt;
&lt;br /&gt;
* Yi Liu (MSc student)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
* C. Hsu, M. Hefeeda, Power-aware Video Streaming in 802.11 Wireless LANs, under review. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mobile TV (DVB-H) Testbed and Experiments ==&lt;br /&gt;
&lt;br /&gt;
This testbed is used to evaluate several of our algorithms that aim to improve mobile TV quality and usability. We configure a commodity Linux workstation as our streaming server as well as IP encapsulator that converts a video over IP stream into a MPEG-2 transport stream. This Linux workstation also hosts a PCI-based DVB-H modulator card that is connected to an in-door antenna. We currently use Nokia N92 mobile phone as TV receivers, which enables us to gather several performance metrics such as video quality, CPU loads, and energy consumption (battery-life). In particular, this testbed consists of:&lt;br /&gt;
&lt;br /&gt;
* An Intel Quad-Core Xeon E5420 (2.5 GHz) PC running Ubuntu Linux.&lt;br /&gt;
* A Dektec DTA-110T DVB-T/H Modulator and UHF Upconverter for PCI Bus.&lt;br /&gt;
* A Nokia N-92 mobile TV phone.&lt;br /&gt;
* Open source IP encapsulator software from http://amuse.ftw.at/downloads/encapsulator . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:MobileTV2.jpg|center|frame|Mobile TV Testbed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion and Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Extend power awareness to WiMax and TDMA networks.&lt;br /&gt;
&lt;br /&gt;
* [[Private:mobile_streaming_ideas|Underinvestigated ideas of streaming to mobile devices (login required)]].&lt;br /&gt;
 &lt;br /&gt;
* [[Time slicing in DVB-H]]&lt;br /&gt;
&lt;br /&gt;
*[[PSI_SI_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
*[[ESG_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
*[[FLUTE_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
== References and Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dvb-h.org/ The official Mobile TV website maintained by the DVB Project Office.]&lt;br /&gt;
&lt;br /&gt;
* [http://projects.celtic-initiative.org/WING-TV/  Wing-TV Project:]  Docs to test and to verify in detail the DVB-H specification. &lt;br /&gt;
&lt;br /&gt;
* J. Wang, M. Venkatachalam, and Y. Fang, [http://www.fang.ece.ufl.edu/mypaper/jsac07wang.pdf System Architecture and Cross-Layer Optimization of Video Broadcast over WiMAX], IEEE JSAC 25(4), pp. 712--721, MAY 2007.  (Check this special issue of JSAC as well.)&lt;br /&gt;
&lt;br /&gt;
* G. Gardikis, G. Xilouris, C. Skianis, [http://www.springerlink.com/content/a32p21815h46n12q/  Broadband multimedia on the move with DVB-H],  Multimedia Tools and Applications, 36(1-2), January 2008. (DVB-H tutorial in inter-active mode.)&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Streaming_to_Wireless_and_Mobile_Devices&amp;diff=2031</id>
		<title>Streaming to Wireless and Mobile Devices</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Streaming_to_Wireless_and_Mobile_Devices&amp;diff=2031"/>
		<updated>2008-06-02T21:49:15Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wireless networks offer convenience,mobility, and low cost infrastructure. As wireless networks provide higher throughput and quality-of-service (QoS), video streaming over wireless networks has become an important application. The optimization of video streaming over wireless networks, however, is a challenging task because of the heterogeneity and dynamic nature of the channels among wireless nodes. In this project, we seek to optimize the quality of video streaming in wireless networks with energy-constrained devices. We consider a general wireless network model, in which there are multiple wireless stations sharing a common wireless medium. These wireless stations can, for example, be notebook computers, PDAs, or video sensors. The wireless media can include cellular networks, IEEE 802.16 WiMAX networks, and IEEE 802.11 WLANs. The wireless stations can be sending and/or receiving video streams to/from the video server through a wireless base station. For example, in video surveillance systems, video sensors captures and transmit their streams over a WLAN to a processing server for further analysis. As another example, wireless stations can be receiving video tutorials, demos, or movies from a video-on-demand streaming server over a WiMAX network.  &lt;br /&gt;
&lt;br /&gt;
We consider battery-powered wireless stations that have power constraints. To cope with the power constraints, stations employ complexity scalable video coders that may selectively skip some encoding optimization modules to save power. To maximize quality at a given power budget, we employ models that relate power consumption, encoding bit rate, and resulting distortion. Power considerations are critical in wireless devices. Previous  measurement studies indicate that modern video coders consume about two-thirds of the system power in video wireless communication systems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are also interested in video broadcasting to mobile devices in systems such as DVB-H (Digital Video Broadcast--Handheld). These systems provide TV services to mobile devices. We are working on algorithms to broadcast IP packets to mobile devices such that their wireless reception components can sleep for the longest possible period of time (and hence save energy) while maintaining good video quality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.sfu.ca/~mhefeeda/ Mohamed Hefeeda]&lt;br /&gt;
&lt;br /&gt;
* Cheng-Hsin Hsu (PhD student)&lt;br /&gt;
&lt;br /&gt;
* Yi Liu (MSc student)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
* C. Hsu, M. Hefeeda, Power-aware Video Streaming in 802.11 Wireless LANs, under review. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mobile TV (DVB-H) Testbed and Experiments ==&lt;br /&gt;
&lt;br /&gt;
This testbed is used to evaluate several of our algorithms that aim to improve mobile TV quality and usability. We configure a commodity Linux workstation as our streaming server as well as IP encapsulator that converts a video over IP stream into a MPEG-2 transport stream. This Linux workstation also hosts a PCI-based DVB-H modulator card that is connected to an in-door antenna. We currently use Nokia N92 mobile phone as TV receivers, which enables us to gather several performance metrics such as video quality, CPU loads, and energy consumption (battery-life). In particular, this testbed consists of:&lt;br /&gt;
&lt;br /&gt;
* An Intel Quad-Core Xeon E5420 (2.5 GHz) PC running Ubuntu Linux.&lt;br /&gt;
* A Dektec DTA-110T DVB-T/H Modulator and UHF Upconverter for PCI Bus.&lt;br /&gt;
* A Nokia N-92 mobile TV phone.&lt;br /&gt;
* Open source IP encapsulator software from http://amuse.ftw.at/downloads/encapsulator . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:MobileTV.jpg|center|frame|Mobile TV Testbed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion and Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Extend power awareness to WiMax and TDMA networks.&lt;br /&gt;
 &lt;br /&gt;
* [[Time slicing in DVB-H]]&lt;br /&gt;
&lt;br /&gt;
*[[PSI_SI_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
*[[ESG_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
*[[FLUTE_DVB-H]]&lt;br /&gt;
&lt;br /&gt;
== References and Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dvb-h.org/ The official Mobile TV website maintained by the DVB Project Office.]&lt;br /&gt;
&lt;br /&gt;
* [http://projects.celtic-initiative.org/WING-TV/  Wing-TV Project:]  Docs to test and to verify in detail the DVB-H specification. &lt;br /&gt;
&lt;br /&gt;
* J. Wang, M. Venkatachalam, and Y. Fang, [http://www.fang.ece.ufl.edu/mypaper/jsac07wang.pdf System Architecture and Cross-Layer Optimization of Video Broadcast over WiMAX], IEEE JSAC 25(4), pp. 712--721, MAY 2007.  (Check this special issue of JSAC as well.)&lt;br /&gt;
&lt;br /&gt;
* G. Gardikis, G. Xilouris, C. Skianis, [http://www.springerlink.com/content/a32p21815h46n12q/  Broadband multimedia on the move with DVB-H],  Multimedia Tools and Applications, 36(1-2), January 2008. (DVB-H tutorial in inter-active mode.)&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=Time_slicing_in_DVB-H&amp;diff=2029</id>
		<title>Time slicing in DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=Time_slicing_in_DVB-H&amp;diff=2029"/>
		<updated>2008-06-02T07:45:03Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Four components of Testbed: ==&lt;br /&gt;
&lt;br /&gt;
Just-DVB Open source software --- used to get DVB-T signal&lt;br /&gt;
&lt;br /&gt;
FATCAPS DVB-H IP-Encapsulator --- used to get DVB-H signal based on the DVB-T signal&lt;br /&gt;
&lt;br /&gt;
DTA-110T PCI card ---send the DVB-H signal to the target client (Nokia N92)&lt;br /&gt;
&lt;br /&gt;
Nokia N92 --- the receiving device &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What does FATCPAS do? ==&lt;br /&gt;
&lt;br /&gt;
Reads IP data from configurable sources via one or more instances of the dataaggregator tool&lt;br /&gt;
Organizes the data in a MPE-FEC frame as specified in the DVB-H standard and optionally computes the MPE forward error correction (MPE-FEC)&lt;br /&gt;
Creates a stream of MPEG-2 TS packets of 188B size and outputs them to a configurable output FIFO or a file&lt;br /&gt;
Outputs timesliced MPEG2 transport stream data&lt;br /&gt;
All files located under /DVB-H/DVBH_Encapsulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What does Just-IT do? ==&lt;br /&gt;
&lt;br /&gt;
JustDVB just replaces nullpackets by configurable PSI/SI which is mandatory for a regular DVB-H stream.&lt;br /&gt;
All files located under /DVB-H/DVBH_Encapsulator/python-config-dvbh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DTA-110T PCI Card ==&lt;br /&gt;
&lt;br /&gt;
Start the card:&lt;br /&gt;
/DVB-H/Dta1xx/Dta1xxInit  start&lt;br /&gt;
Stop the card:&lt;br /&gt;
/DVB-H/Dta1xx/Dta1xxInit  stop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Two Tools from FATCAPS ==&lt;br /&gt;
'''1)	Dataaggregator (Encapsulator + sec2ts )'''&lt;br /&gt;
collects IP packets matching a given filter expression&lt;br /&gt;
  yliu1@cs-nsl-11:/DVB-H/DVBH_Encapsulator$ ./dataaggregator -h&lt;br /&gt;
  Usage: dataaggregator [-h] capture -o &amp;lt;file&amp;gt; -e &amp;lt;string&amp;gt; [-c &amp;lt;string&amp;gt;] [-s &amp;lt;string&amp;gt;] [-d &amp;lt;string&amp;gt;]&lt;br /&gt;
  -o, --outfile=&amp;lt;file&amp;gt;      Filename to write to.&lt;br /&gt;
  -e, --filterexp=&amp;lt;string&amp;gt;  Filter expression, libpcap style&lt;br /&gt;
  -c, --capturedevice=&amp;lt;string&amp;gt; Capture device&lt;br /&gt;
  -s, --srcaddr=&amp;lt;string&amp;gt;    Source IP address to be set&lt;br /&gt;
  -d, --dstaddr=&amp;lt;string&amp;gt;    Destination IP address to be set&lt;br /&gt;
  -h, --help                print this help and exit&lt;br /&gt;
&lt;br /&gt;
Sample usage&lt;br /&gt;
  ./dataaggregator capture -e 'port 1110 || port 1120' -o /tmp/capturedpackets &amp;amp;&lt;br /&gt;
&lt;br /&gt;
'''2)	Timeslicer'''&lt;br /&gt;
reads the MPE sections and MPE-FEC sections output by the encapsulator and creates corresponding MPEG2 transport stream packets&lt;br /&gt;
&lt;br /&gt;
outputs timesliced MPEG2 transport stream data&lt;br /&gt;
For the above file run by dataaggregator,  it also need to be run by timeslicer &lt;br /&gt;
  ./timeslicer -n 1024 -g 8 -b 8 -d 100 -c 3 -o qpsk -p my_program_name:/tmp/captured/packetѕ &amp;gt; /tmp/myfifo &amp;amp;&lt;br /&gt;
Also we need to manually specify several parameters such as delta-T, the number of rows of the MPE-FEC frame and whether to use MPE-FEC or not.&lt;br /&gt;
  yliu1@cs-nsl-11:/DVB-H/DVBH_Encapsulator$ ./timeslicer -h&lt;br /&gt;
  Usage: timeslicer [-h] [--fec] [-n [256, 512, 768, 1024 (default)]] -g [4, 8, 16, 32] -b [5, 7, 8] -d &amp;lt;int&amp;gt; -c [1, 2, 3, 5, 7] -o [qpsk, 16qam, 64qam] [-r &amp;lt;double&amp;gt;] -p [name:inputfile:PID] [-p [name:inputfile:PID]]... [-f &amp;lt;file&amp;gt;]&lt;br /&gt;
  --fec                     Use MPE-FEC&lt;br /&gt;
  -n, --numRows=[256, 512, 768, 1024 (default)] define number of rows in MPE-FEC frame&lt;br /&gt;
  -g, --guardInt=[4, 8, 16, 32] OFDM guard interval&lt;br /&gt;
  -b, --bandwidth=[5, 7, 8] OFDM bandwidth&lt;br /&gt;
  -d, --deltat=&amp;lt;int&amp;gt;        delta-T value for *all* programs&lt;br /&gt;
  -c, --coderate=[1, 2, 3, 5, 7] coderate&lt;br /&gt;
  -o, --constellation=[qpsk, 16qam, 64qam] constellation&lt;br /&gt;
  -r, --nullrate=&amp;lt;double&amp;gt;   the rate at which we insert nullpackets in the Ñtream. Defaults to 0.1.&lt;br /&gt;
  -p, --program=[name:inputfile:PID] add a timesliced program&lt;br /&gt;
  -f, --outfile=&amp;lt;file&amp;gt;      the file to write the output to. Defaults to stdout&lt;br /&gt;
  -h, --help                print this help and exit&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
  timeslicer -n 1024 -g 8 -b 8 -d 90 -c 3 -o qpsk -r 0.1 -p myprog:mydir/myinputfile:0x666&lt;br /&gt;
This command starts a timeslicer with the following OFDM transmission parameters: guard interval is 1/8, bandwidth is 8 MHz, constellation is qpsk and code rate is 3/4. The DVB-H encapsulator creates MPE-FEC frames with 1024 rows and with a delta-T of 0.9 seconds. For every 10 data packets, 1 nullpacket is inserted (nullrate=0.1). There's one program named myprog. The data for this program is read from /mydir/myinputfile. This program uses PID 0x666.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure PSI/SI table ==&lt;br /&gt;
FATCAPS provides some basic code in Python for configuring PSI/SI table.&lt;br /&gt;
Suppose we want to create a new PSI/SI, we need to do the following:&lt;br /&gt;
&lt;br /&gt;
'''1)	Create a new python file under /DVB-H/DVBH_Encapsulator/python-config-dvbh'''&lt;br /&gt;
&lt;br /&gt;
Example: Suppose the file is called pat.py&lt;br /&gt;
  import os&lt;br /&gt;
  from dvbobjects.PSI.PAT import *&lt;br /&gt;
  from dvbobjects.DVB.Descriptors import *&lt;br /&gt;
  import psimain&lt;br /&gt;
  sec = program_association_section(&lt;br /&gt;
  transport_stream_id = psimain.transport_stream1.transport_stream_id,&lt;br /&gt;
    program_loop = [&lt;br /&gt;
    psimain.program1,&lt;br /&gt;
    psimain.program2,&lt;br /&gt;
    psimain.program3,&lt;br /&gt;
    psimain.program4,&lt;br /&gt;
    psimain.int_program,&lt;br /&gt;
  ],&lt;br /&gt;
  version_number = 1,&lt;br /&gt;
  section_number = 0,&lt;br /&gt;
  last_section_number = 0,&lt;br /&gt;
  elementary_PID = 0,	&lt;br /&gt;
  filename = &amp;quot;pat&amp;quot;,&lt;br /&gt;
  repeat_time = &amp;quot;40&amp;quot;, #milliseconds&lt;br /&gt;
  )&lt;br /&gt;
&lt;br /&gt;
'''2)	Modify /DVB-H/DVBH_Encapsulator/python-config-dvbh/startgenerator.py to process the new python file'''&lt;br /&gt;
Add the following code:&lt;br /&gt;
  import pat&lt;br /&gt;
  UpdateSection(pat.sec)&lt;br /&gt;
  justdvbit.AddTableToNullShaper(pat.sec)&lt;br /&gt;
&lt;br /&gt;
Global variables go to /DVB-H/DVBH_Encapsulator/python-config-dvbh/psimain.py. &lt;br /&gt;
/DVB-H/DVBH_Encapsulator/python-config-dvbh/justdvbit.py is the central file that determines the order in which the&lt;br /&gt;
single tools are called, we should normally not need to change this.&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=File:l22.jpg&amp;diff=2028</id>
		<title>File:l22.jpg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=File:l22.jpg&amp;diff=2028"/>
		<updated>2008-06-02T06:38:10Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=ESG_DVB-H&amp;diff=2027</id>
		<title>ESG DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=ESG_DVB-H&amp;diff=2027"/>
		<updated>2008-06-02T06:37:05Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is ESG in DVB-H: ==&lt;br /&gt;
ESG (Electronic Service Guide) contains information about the service available, through ESG, user can select the services and items he/she is interested in and find the stored items on the terminal. It is an XML file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== When ESG operates? ==&lt;br /&gt;
It takes place after the dvb-h receiver has been started and the terminal is synchronized to a particulatr transport stream carrying IP datacast services.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Three main operations of ESG==&lt;br /&gt;
ESG bootstrap: the operation through which the terminal knows which ESGs are avaialble and how to acquire them&lt;br /&gt;
&lt;br /&gt;
ESG acquisition: the operations through which the terminal gathers and processes the ESG information for the first time or after a long time without connecting.&lt;br /&gt;
&lt;br /&gt;
ESG update: the operations through which the terminal refreshes the ESG information stored in the terminal with the latest versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How terminal device discovers service?==&lt;br /&gt;
Terminal connect to valid DVB-H TS carrying IP datacast services, it receives from the PSI/SI talbes the location(PID) where the &amp;quot;ESG bootstrap info&amp;quot; is located.&lt;br /&gt;
&lt;br /&gt;
From ESG bootstrap info, the terminal can figure out how many ESGs are available on the IP platform.&lt;br /&gt;
&lt;br /&gt;
In order to start on the selected ESG, the terminal needs to know the location of the reated IP stream through the PSI/SI table. once the terminal locates the IP stream of the ESG, it can initialize the file delivery session on the terminal and the ESG processing. then the terminal can start to receive the ESG information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How does ESG transport?==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions.  &lt;br /&gt;
&lt;br /&gt;
Files that are ESG containers are signalled in the FDT by setting the attribute&lt;br /&gt;
&lt;br /&gt;
Content-Type=&amp;quot;application/vnd.dvb.esgcontainer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The ESG container are identified based on the URI signalled in the &amp;quot;Content=Location&amp;quot; attribute of the &amp;quot;File elements&amp;quot; in the FDT (File delivery table).&lt;br /&gt;
&lt;br /&gt;
Initialization information for processing ESG data shall be carried in one ESG container called &amp;quot;ESG Init Container&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:l22.jpg]]&lt;br /&gt;
&lt;br /&gt;
==ESG syntax==&lt;br /&gt;
For detailed syntax, please go to [http://www.dvb-h.org/technology.htm]&lt;br /&gt;
See IP Datacast over DVB-H: Electronic Service Guide (ESG)&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=ESG_DVB-H&amp;diff=2026</id>
		<title>ESG DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=ESG_DVB-H&amp;diff=2026"/>
		<updated>2008-06-02T06:33:54Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is ESG in DVB-H: ==&lt;br /&gt;
ESG (Electronic Service Guide) contains information about the service available, through ESG, user can select the services and items he/she is interested in and find the stored items on the terminal. It is an XML file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== When ESG operates? ==&lt;br /&gt;
It takes place after the dvb-h receiver has been started and the terminal is synchronized to a particulatr transport stream carrying IP datacast services.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Three main operations of ESG==&lt;br /&gt;
ESG bootstrap: the operation through which the terminal knows which ESGs are avaialble and how to acquire them&lt;br /&gt;
&lt;br /&gt;
ESG acquisition: the operations through which the terminal gathers and processes the ESG information for the first time or after a long time without connecting.&lt;br /&gt;
&lt;br /&gt;
ESG update: the operations through which the terminal refreshes the ESG information stored in the terminal with the latest versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How terminal device discovers service?==&lt;br /&gt;
Terminal connect to valid DVB-H TS carrying IP datacast services, it receives from the PSI/SI talbes the location(PID) where the &amp;quot;ESG bootstrap info&amp;quot; is located.&lt;br /&gt;
&lt;br /&gt;
From ESG bootstrap info, the terminal can figure out how many ESGs are available on the IP platform.&lt;br /&gt;
&lt;br /&gt;
In order to start on the selected ESG, the terminal needs to know the location of the reated IP stream through the PSI/SI table. once the terminal locates the IP stream of the ESG, it can initialize the file delivery session on the terminal and the ESG processing. then the terminal can start to receive the ESG information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How does ESG transport?==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions.  &lt;br /&gt;
&lt;br /&gt;
Files that are ESG containers are signalled in the FDT by setting the attribute&lt;br /&gt;
&lt;br /&gt;
Content-Type=&amp;quot;application/vnd.dvb.esgcontainer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The ESG container are identified based on the URI signalled in the &amp;quot;Content=Location&amp;quot; attribute of the &amp;quot;File elements&amp;quot; in the FDT (File delivery table).&lt;br /&gt;
&lt;br /&gt;
Initialization information for processing ESG data shall be carried in one ESG container called &amp;quot;ESG Init Container&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ESG syntax==&lt;br /&gt;
For detailed syntax, please go to [http://www.dvb-h.org/technology.htm]&lt;br /&gt;
See IP Datacast over DVB-H: Electronic Service Guide (ESG)&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=ESG_DVB-H&amp;diff=2025</id>
		<title>ESG DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=ESG_DVB-H&amp;diff=2025"/>
		<updated>2008-06-02T06:30:01Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is ESG in DVB-H: ==&lt;br /&gt;
ESG (Electronic Service Guide) contains information about the service available, through ESG, user can select the services and items he/she is interested in and find the stored items on the terminal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== When esg operates? ==&lt;br /&gt;
It takes place after the dvb-h receiver has been started and the terminal is synchronized to a particulatr transport stream carrying IP datacast services.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Three main operations of ESG==&lt;br /&gt;
ESG bootstrap: the operation through which the terminal knows which ESGs are avaialble and how to acquire them&lt;br /&gt;
&lt;br /&gt;
ESG acquisition: the operations through which the terminal gathers and processes the ESG information for the first time or after a long time without connecting.&lt;br /&gt;
&lt;br /&gt;
ESG update: the operations through which the terminal refreshes the ESG information stored in the terminal with the latest versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How terminal device discovers service?==&lt;br /&gt;
Terminal connect to valid DVB-H TS carrying IP datacast services, it receives from the PSI/SI talbes the location(PID) where the &amp;quot;ESG bootstrap info&amp;quot; is located.&lt;br /&gt;
&lt;br /&gt;
From ESG bootstrap info, the terminal can figure out how many ESGs are available on the IP platform.&lt;br /&gt;
&lt;br /&gt;
In order to start on the selected ESG, the terminal needs to know the location of the reated IP stream through the PSI/SI table. once the terminal locates the IP stream of the ESG, it can initialize the file delivery session on the terminal and the ESG processing. then the terminal can start to receive the ESG information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How does ESG transport?==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions.  &lt;br /&gt;
&lt;br /&gt;
Files that are ESG containers are signalled in the FDT by setting the attibue&lt;br /&gt;
&lt;br /&gt;
Content-Type=&amp;quot;application/vnd.dvb.esgcontainer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The ESG container are identified based on the URI signalled in the &amp;quot;Content=Location&amp;quot; attribute of the &amp;quot;File&amp;quot; elements in the FDT (File delivery table).&lt;br /&gt;
&lt;br /&gt;
Initialization information for processing ESG data shall be carried in one ESG container called &amp;quot;ESG Init Container&amp;quot;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2024</id>
		<title>FLUTE DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2024"/>
		<updated>2008-06-02T06:25:19Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notation: ==&lt;br /&gt;
&lt;br /&gt;
FLUTE: file delivery over unidirectional transport&lt;br /&gt;
&lt;br /&gt;
IPDC: IP Datacast&lt;br /&gt;
&lt;br /&gt;
ALC: Asyn-chronous Layered Coding&lt;br /&gt;
&lt;br /&gt;
FDT: File Delivery Table&lt;br /&gt;
&lt;br /&gt;
TOI: Transport Object Identifier&lt;br /&gt;
&lt;br /&gt;
ESG: Electronic Service Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Basics ==&lt;br /&gt;
Files are delivered as transport objects, with optional content encoding (e.g. gzip)&lt;br /&gt;
&lt;br /&gt;
Distribution to large number of receivers&lt;br /&gt;
&lt;br /&gt;
Can be used with both multicast and unicast User Datagram Protocol (UDP) delivery&lt;br /&gt;
&lt;br /&gt;
Supports IPv4 and IPv6&lt;br /&gt;
&lt;br /&gt;
Supports Any Source Multicast (ASM) and Source Specific Multicast (SSM) models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE in DVB-H ==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions. &lt;br /&gt;
&lt;br /&gt;
[[Image:l21.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Implementation ==&lt;br /&gt;
Open-sourse software -- MAD FLUTE&lt;br /&gt;
[http://mad.cs.tut.fi/index.php?content=home]&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2023</id>
		<title>FLUTE DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2023"/>
		<updated>2008-06-02T06:19:14Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notation: ==&lt;br /&gt;
&lt;br /&gt;
FLUTE: file delivery over unidirectional transport&lt;br /&gt;
&lt;br /&gt;
IPDC: IP Datacast&lt;br /&gt;
&lt;br /&gt;
ALC: Asyn-chronous Layered Coding&lt;br /&gt;
&lt;br /&gt;
FDT: File Delivery Table&lt;br /&gt;
&lt;br /&gt;
TOI: Transport Object Identifier&lt;br /&gt;
&lt;br /&gt;
ESG: Electronic Service Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Basics ==&lt;br /&gt;
Files are delivered as transport objects, with optional content encoding (e.g. gzip)&lt;br /&gt;
&lt;br /&gt;
Distribution to large number of receivers&lt;br /&gt;
&lt;br /&gt;
Can be used with both multicast and unicast User Datagram Protocol (UDP) delivery&lt;br /&gt;
&lt;br /&gt;
Supports IPv4 and IPv6&lt;br /&gt;
&lt;br /&gt;
Supports Any Source Multicast (ASM) and Source Specific Multicast (SSM) models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE in DVB-H ==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions. &lt;br /&gt;
&lt;br /&gt;
[[Image:l21.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Implementation ==&lt;br /&gt;
TBA&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2022</id>
		<title>FLUTE DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2022"/>
		<updated>2008-06-02T06:09:10Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notation: ==&lt;br /&gt;
&lt;br /&gt;
FLUTE: file delivery over unidirectional transport&lt;br /&gt;
&lt;br /&gt;
IPDC: IP Datacast&lt;br /&gt;
&lt;br /&gt;
ALC: Asyn-chronous Layered Coding&lt;br /&gt;
&lt;br /&gt;
FDT: File Delivery Table&lt;br /&gt;
&lt;br /&gt;
TOI: Transport Object Identifier&lt;br /&gt;
&lt;br /&gt;
ESG: Electronic Service Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Basics ==&lt;br /&gt;
Files are delivered as transport objects, with optional content encoding (e.g. gzip)&lt;br /&gt;
&lt;br /&gt;
Distribution to large number of receivers&lt;br /&gt;
&lt;br /&gt;
Can be used with both multicast and unicast User Datagram Protocol (UDP) delivery&lt;br /&gt;
&lt;br /&gt;
Supports IPv4 and IPv6&lt;br /&gt;
&lt;br /&gt;
Supports Any Source Multicast (ASM) and Source Specific Multicast (SSM) models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE in DVB-H ==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions. &lt;br /&gt;
&lt;br /&gt;
[[Image:l21.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Implementation ==&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=File:l21.jpg&amp;diff=2021</id>
		<title>File:l21.jpg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=File:l21.jpg&amp;diff=2021"/>
		<updated>2008-06-02T06:06:15Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2020</id>
		<title>FLUTE DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=FLUTE_DVB-H&amp;diff=2020"/>
		<updated>2008-06-02T06:05:00Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notation: ==&lt;br /&gt;
&lt;br /&gt;
FLUTE: file delivery over unidirectional transport&lt;br /&gt;
&lt;br /&gt;
IPDC: IP Datacast&lt;br /&gt;
&lt;br /&gt;
ALC: Asyn-chronous Layered Coding&lt;br /&gt;
&lt;br /&gt;
FDT: File Delivery Table&lt;br /&gt;
&lt;br /&gt;
TOI: Transport Object Identifier&lt;br /&gt;
&lt;br /&gt;
ESG: Electronic Service Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Basics ==&lt;br /&gt;
Files are delivered as transport objects, with optional content encoding (e.g. gzip)&lt;br /&gt;
&lt;br /&gt;
Distribution to large number of receivers&lt;br /&gt;
&lt;br /&gt;
Can be used with both multicast and unicast User Datagram Protocol (UDP) delivery&lt;br /&gt;
&lt;br /&gt;
Supports IPv4 and IPv6&lt;br /&gt;
&lt;br /&gt;
Supports Any Source Multicast (ASM) and Source Specific Multicast (SSM) models&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE in DVB-H ==&lt;br /&gt;
ESG containers are transported as files in transport objects in FLUTE sessions. &lt;br /&gt;
&lt;br /&gt;
[[Image:l2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FLUTE Implementation ==&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2010</id>
		<title>PSI SI DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2010"/>
		<updated>2008-05-27T16:50:39Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is PSI/SI in DVB-H: ==&lt;br /&gt;
PSI (Program Specific Information) consists of data enabling a decoder to demultiplex DVB-H services. It contains the following table: PAT, PMT, NIT, CAT&lt;br /&gt;
&lt;br /&gt;
SI provides information on DVB-H services carried by different multiplexes, it contains the following table: SDT, EIT, RST, TDT, TOT, ST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is PSI/SI mandatory in DVB-H? ==&lt;br /&gt;
Yes,  in order for cell phones to receive DVB-H programs, Timeslicing, MPE-FEC, PSI/SI and ESG are all needed. &lt;br /&gt;
To get the DVB-H service correctly for the cell phone, server must insert the associated information into the TS stream, that is PSI and SI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI/SI and receiver (cell phone) ==&lt;br /&gt;
When the cell phone starts to receive DVB-H program, it actually starts with receiving PSI/SI. They are in the table format, no encryption and directly built in the TS datagram. &lt;br /&gt;
&lt;br /&gt;
From PSI/SI information, the cell phone knows the program list and the PID of each program in the received TS. After that the cell phone can start to receive the particular PID of the target program and ignore all PIDs of all other programs in the same TS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVB-H network layer ==&lt;br /&gt;
[[Image:newlayer1.jpg]]&lt;br /&gt;
&lt;br /&gt;
For higher resolution picture, please go to [http://www.sfu.ca/~yliu1/layer1.jpg]&lt;br /&gt;
&lt;br /&gt;
A DVB network is uniquely identified by a network_id. A DVB network consist of one or more Transport Streams&lt;br /&gt;
(TS), each carrying a multiplex and being transmitted by one or more Services. &lt;br /&gt;
&lt;br /&gt;
TS use transport_stream_id &amp;amp; original_network_id for identification, these info are saved in PAT table&lt;br /&gt;
&lt;br /&gt;
Service use service_id &amp;amp;  transport_stream_id &amp;amp; original_network_id for identification. these info are saved in PMT table&lt;br /&gt;
&lt;br /&gt;
ES (elementary stream) use component_tag or the PID in TS for identification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI contains the following tables: ==&lt;br /&gt;
PAT（Program Association Table）:The PAT lists PIDs for all PMTs in the stream. TS Packets containing PAT information always have PID 0x0.&lt;br /&gt;
&lt;br /&gt;
PMT（Program Map Table）:contain information about programs. For each program, there is a PMT.&lt;br /&gt;
&lt;br /&gt;
NIT（Network Information Table）: provides information about the multiplexes and transport streams on a given network. Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41&lt;br /&gt;
&lt;br /&gt;
CAT（Conditional Access Table）:This table is used for conditional access to the streams. This table provides association with EMM stream.&lt;br /&gt;
&lt;br /&gt;
The releationship between PAT and PMT are:&lt;br /&gt;
&lt;br /&gt;
[[Image:newlayer3.jpg]]&lt;br /&gt;
&lt;br /&gt;
For higher resolution picture, please go to [http://www.sfu.ca/~yliu1/layer3.jpg]&lt;br /&gt;
&lt;br /&gt;
== SI contains the following tables: ==&lt;br /&gt;
INT : (IP/MAC Notification Table): in an IP platform, contains all the IP address of the services and the corresponding service_id of each IP. We can get the PID of a particular service in TS with the help of PAT and PMT. Very important. &lt;br /&gt;
&lt;br /&gt;
SDT (service description table) : used to descript service name, service provider, the description of the TS.&lt;br /&gt;
&lt;br /&gt;
EIT (event information table) : the corresponding audio stream, file stream and the propsed program start time and end time. Eg. 2008-May-27 0:27am, Yi Liu is writting this wiki page.&lt;br /&gt;
&lt;br /&gt;
RST (runtime status table): provide one or more events status and time, e.g whether or not an event is running or not running.&lt;br /&gt;
&lt;br /&gt;
TDT : record the current date, time info for the server&lt;br /&gt;
&lt;br /&gt;
TOT : record the current time difference between server and local time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver using PSI/SI table to find the first time-slicing bursts ==&lt;br /&gt;
EIT table can tell the receiver the start time of the program. And whenever the program starts, the first burst session occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver switch channels ==&lt;br /&gt;
channel switch request is initiated via a user interface. This causes a mobile broadcast receiver to switch from the first channel to the second channel.  It is actually switching to another PID. We can use NIT, PAT, PMT, INT tables to trace that PID (get it from PMT). See following session for tracing service_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To trace service_id ==&lt;br /&gt;
This procedure is called INT discovery, the goal is to get service_id and IP of all programs, and the ESG service IP and service_id.&lt;br /&gt;
&lt;br /&gt;
The procedure is: &lt;br /&gt;
&lt;br /&gt;
Frequency tuning --&amp;gt; locate and read INT table from IP datagram, find platform_id and service_id --&amp;gt; Locate PAT, based on service_id to find PMT_pid in PAT --&amp;gt; Locate PMT, analyze the program PID --&amp;gt; Locate INT, get program name and service provider name --&amp;gt; Locate SDT, get the program broadcase address&lt;br /&gt;
&lt;br /&gt;
The complete programs and program list is contains in INT and SDT.  Note: ESG address is described in the INT table&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=File:newlayer3.jpg&amp;diff=2009</id>
		<title>File:newlayer3.jpg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=File:newlayer3.jpg&amp;diff=2009"/>
		<updated>2008-05-27T16:49:31Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=File:newlayer1.jpg&amp;diff=2008</id>
		<title>File:newlayer1.jpg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=File:newlayer1.jpg&amp;diff=2008"/>
		<updated>2008-05-27T16:48:57Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2007</id>
		<title>PSI SI DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2007"/>
		<updated>2008-05-27T16:48:39Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is PSI/SI in DVB-H: ==&lt;br /&gt;
PSI (Program Specific Information) consists of data enabling a decoder to demultiplex DVB-H services. It contains the following table: PAT, PMT, NIT, CAT&lt;br /&gt;
&lt;br /&gt;
SI provides information on DVB-H services carried by different multiplexes, it contains the following table: SDT, EIT, RST, TDT, TOT, ST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is PSI/SI mandatory in DVB-H? ==&lt;br /&gt;
Yes,  in order for cell phones to receive DVB-H programs, Timeslicing, MPE-FEC, PSI/SI and ESG are all needed. &lt;br /&gt;
To get the DVB-H service correctly for the cell phone, server must insert the associated information into the TS stream, that is PSI and SI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI/SI and receiver (cell phone) ==&lt;br /&gt;
When the cell phone starts to receive DVB-H program, it actually starts with receiving PSI/SI. They are in the table format, no encryption and directly built in the TS datagram. &lt;br /&gt;
&lt;br /&gt;
From PSI/SI information, the cell phone knows the program list and the PID of each program in the received TS. After that the cell phone can start to receive the particular PID of the target program and ignore all PIDs of all other programs in the same TS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVB-H network layer ==&lt;br /&gt;
[[Image:newlayer1.jpg]]&lt;br /&gt;
&lt;br /&gt;
A DVB network is uniquely identified by a network_id. A DVB network consist of one or more Transport Streams&lt;br /&gt;
(TS), each carrying a multiplex and being transmitted by one or more Services. &lt;br /&gt;
&lt;br /&gt;
TS use transport_stream_id &amp;amp; original_network_id for identification, these info are saved in PAT table&lt;br /&gt;
&lt;br /&gt;
Service use service_id &amp;amp;  transport_stream_id &amp;amp; original_network_id for identification. these info are saved in PMT table&lt;br /&gt;
&lt;br /&gt;
ES (elementary stream) use component_tag or the PID in TS for identification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI contains the following tables: ==&lt;br /&gt;
PAT（Program Association Table）:The PAT lists PIDs for all PMTs in the stream. TS Packets containing PAT information always have PID 0x0.&lt;br /&gt;
&lt;br /&gt;
PMT（Program Map Table）:contain information about programs. For each program, there is a PMT.&lt;br /&gt;
&lt;br /&gt;
NIT（Network Information Table）: provides information about the multiplexes and transport streams on a given network. Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41&lt;br /&gt;
&lt;br /&gt;
CAT（Conditional Access Table）:This table is used for conditional access to the streams. This table provides association with EMM stream.&lt;br /&gt;
&lt;br /&gt;
The releationship between PAT and PMT are:&lt;br /&gt;
[[Image:newlayer3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SI contains the following tables: ==&lt;br /&gt;
INT : (IP/MAC Notification Table): in an IP platform, contains all the IP address of the services and the corresponding service_id of each IP. We can get the PID of a particular service in TS with the help of PAT and PMT. Very important. &lt;br /&gt;
&lt;br /&gt;
SDT (service description table) : used to descript service name, service provider, the description of the TS.&lt;br /&gt;
&lt;br /&gt;
EIT (event information table) : the corresponding audio stream, file stream and the propsed program start time and end time. Eg. 2008-May-27 0:27am, Yi Liu is writting this wiki page.&lt;br /&gt;
&lt;br /&gt;
RST (runtime status table): provide one or more events status and time, e.g whether or not an event is running or not running.&lt;br /&gt;
&lt;br /&gt;
TDT : record the current date, time info for the server&lt;br /&gt;
&lt;br /&gt;
TOT : record the current time difference between server and local time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver using PSI/SI table to find the first time-slicing bursts ==&lt;br /&gt;
EIT table can tell the receiver the start time of the program. And whenever the program starts, the first burst session occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver switch channels ==&lt;br /&gt;
channel switch request is initiated via a user interface. This causes a mobile broadcast receiver to switch from the first channel to the second channel.  It is actually switching to another PID. We can use NIT, PAT, PMT, INT tables to trace that PID (get it from PMT). See following session for tracing service_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To trace service_id ==&lt;br /&gt;
This procedure is called INT discovery, the goal is to get service_id and IP of all programs, and the ESG service IP and service_id.&lt;br /&gt;
&lt;br /&gt;
The procedure is: &lt;br /&gt;
&lt;br /&gt;
Frequency tuning --&amp;gt; locate and read INT table from IP datagram, find platform_id and service_id --&amp;gt; Locate PAT, based on service_id to find PMT_pid in PAT --&amp;gt; Locate PMT, analyze the program PID --&amp;gt; Locate INT, get program name and service provider name --&amp;gt; Locate SDT, get the program broadcase address&lt;br /&gt;
&lt;br /&gt;
The complete programs and program list is contains in INT and SDT.  Note: ESG address is described in the INT table&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=File:layer1.jpg&amp;diff=2006</id>
		<title>File:layer1.jpg</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=File:layer1.jpg&amp;diff=2006"/>
		<updated>2008-05-27T16:45:54Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2005</id>
		<title>PSI SI DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2005"/>
		<updated>2008-05-27T16:44:58Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is PSI/SI in DVB-H: ==&lt;br /&gt;
PSI (Program Specific Information) consists of data enabling a decoder to demultiplex DVB-H services. It contains the following table: PAT, PMT, NIT, CAT&lt;br /&gt;
&lt;br /&gt;
SI provides information on DVB-H services carried by different multiplexes, it contains the following table: SDT, EIT, RST, TDT, TOT, ST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is PSI/SI mandatory in DVB-H? ==&lt;br /&gt;
Yes,  in order for cell phones to receive DVB-H programs, Timeslicing, MPE-FEC, PSI/SI and ESG are all needed. &lt;br /&gt;
To get the DVB-H service correctly for the cell phone, server must insert the associated information into the TS stream, that is PSI and SI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI/SI and receiver (cell phone) ==&lt;br /&gt;
When the cell phone starts to receive DVB-H program, it actually starts with receiving PSI/SI. They are in the table format, no encryption and directly built in the TS datagram. &lt;br /&gt;
&lt;br /&gt;
From PSI/SI information, the cell phone knows the program list and the PID of each program in the received TS. After that the cell phone can start to receive the particular PID of the target program and ignore all PIDs of all other programs in the same TS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVB-H network layer ==&lt;br /&gt;
[[Image:layer1.jpg]]&lt;br /&gt;
&lt;br /&gt;
A DVB network is uniquely identified by a network_id. A DVB network consist of one or more Transport Streams&lt;br /&gt;
(TS), each carrying a multiplex and being transmitted by one or more Services. &lt;br /&gt;
&lt;br /&gt;
TS use transport_stream_id &amp;amp; original_network_id for identification, these info are saved in PAT table&lt;br /&gt;
&lt;br /&gt;
Service use service_id &amp;amp;  transport_stream_id &amp;amp; original_network_id for identification. these info are saved in PMT table&lt;br /&gt;
&lt;br /&gt;
ES (elementary stream) use component_tag or the PID in TS for identification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI contains the following tables: ==&lt;br /&gt;
PAT（Program Association Table）:The PAT lists PIDs for all PMTs in the stream. TS Packets containing PAT information always have PID 0x0.&lt;br /&gt;
&lt;br /&gt;
PMT（Program Map Table）:contain information about programs. For each program, there is a PMT.&lt;br /&gt;
&lt;br /&gt;
NIT（Network Information Table）: provides information about the multiplexes and transport streams on a given network. Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41&lt;br /&gt;
&lt;br /&gt;
CAT（Conditional Access Table）:This table is used for conditional access to the streams. This table provides association with EMM stream.&lt;br /&gt;
&lt;br /&gt;
The releationship between PAT and PMT are:&lt;br /&gt;
[[Image:layer1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SI contains the following tables: ==&lt;br /&gt;
INT : (IP/MAC Notification Table): in an IP platform, contains all the IP address of the services and the corresponding service_id of each IP. We can get the PID of a particular service in TS with the help of PAT and PMT. Very important. &lt;br /&gt;
&lt;br /&gt;
SDT (service description table) : used to descript service name, service provider, the description of the TS.&lt;br /&gt;
&lt;br /&gt;
EIT (event information table) : the corresponding audio stream, file stream and the propsed program start time and end time. Eg. 2008-May-27 0:27am, Yi Liu is writting this wiki page.&lt;br /&gt;
&lt;br /&gt;
RST (runtime status table): provide one or more events status and time, e.g whether or not an event is running or not running.&lt;br /&gt;
&lt;br /&gt;
TDT : record the current date, time info for the server&lt;br /&gt;
&lt;br /&gt;
TOT : record the current time difference between server and local time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver using PSI/SI table to find the first time-slicing bursts ==&lt;br /&gt;
EIT table can tell the receiver the start time of the program. And whenever the program starts, the first burst session occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver switch channels ==&lt;br /&gt;
channel switch request is initiated via a user interface. This causes a mobile broadcast receiver to switch from the first channel to the second channel.  It is actually switching to another PID. We can use NIT, PAT, PMT, INT tables to trace that PID (get it from PMT). See following session for tracing service_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To trace service_id ==&lt;br /&gt;
This procedure is called INT discovery, the goal is to get service_id and IP of all programs, and the ESG service IP and service_id.&lt;br /&gt;
&lt;br /&gt;
The procedure is: &lt;br /&gt;
&lt;br /&gt;
Frequency tuning --&amp;gt; locate and read INT table from IP datagram, find platform_id and service_id --&amp;gt; Locate PAT, based on service_id to find PMT_pid in PAT --&amp;gt; Locate PMT, analyze the program PID --&amp;gt; Locate INT, get program name and service provider name --&amp;gt; Locate SDT, get the program broadcase address&lt;br /&gt;
&lt;br /&gt;
The complete programs and program list is contains in INT and SDT.  Note: ESG address is described in the INT table&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2004</id>
		<title>PSI SI DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2004"/>
		<updated>2008-05-27T16:44:22Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is PSI/SI in DVB-H: ==&lt;br /&gt;
PSI (Program Specific Information) consists of data enabling a decoder to demultiplex DVB-H services. It contains the following table: PAT, PMT, NIT, CAT&lt;br /&gt;
&lt;br /&gt;
SI provides information on DVB-H services carried by different multiplexes, it contains the following table: SDT, EIT, RST, TDT, TOT, ST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is PSI/SI mandatory in DVB-H? ==&lt;br /&gt;
Yes,  in order for cell phones to receive DVB-H programs, Timeslicing, MPE-FEC, PSI/SI and ESG are all needed. &lt;br /&gt;
To get the DVB-H service correctly for the cell phone, server must insert the associated information into the TS stream, that is PSI and SI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI/SI and receiver (cell phone) ==&lt;br /&gt;
When the cell phone starts to receive DVB-H program, it actually starts with receiving PSI/SI. They are in the table format, no encryption and directly built in the TS datagram. &lt;br /&gt;
&lt;br /&gt;
From PSI/SI information, the cell phone knows the program list and the PID of each program in the received TS. After that the cell phone can start to receive the particular PID of the target program and ignore all PIDs of all other programs in the same TS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVB-H network layer ==&lt;br /&gt;
[[layer1.jpg]]&lt;br /&gt;
&lt;br /&gt;
A DVB network is uniquely identified by a network_id. A DVB network consist of one or more Transport Streams&lt;br /&gt;
(TS), each carrying a multiplex and being transmitted by one or more Services. &lt;br /&gt;
&lt;br /&gt;
TS use transport_stream_id &amp;amp; original_network_id for identification, these info are saved in PAT table&lt;br /&gt;
&lt;br /&gt;
Service use service_id &amp;amp;  transport_stream_id &amp;amp; original_network_id for identification. these info are saved in PMT table&lt;br /&gt;
&lt;br /&gt;
ES (elementary stream) use component_tag or the PID in TS for identification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI contains the following tables: ==&lt;br /&gt;
PAT（Program Association Table）:The PAT lists PIDs for all PMTs in the stream. TS Packets containing PAT information always have PID 0x0.&lt;br /&gt;
&lt;br /&gt;
PMT（Program Map Table）:contain information about programs. For each program, there is a PMT.&lt;br /&gt;
&lt;br /&gt;
NIT（Network Information Table）: provides information about the multiplexes and transport streams on a given network. Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41&lt;br /&gt;
&lt;br /&gt;
CAT（Conditional Access Table）:This table is used for conditional access to the streams. This table provides association with EMM stream.&lt;br /&gt;
&lt;br /&gt;
The releationship between PAT and PMT are:&lt;br /&gt;
[[layer1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SI contains the following tables: ==&lt;br /&gt;
INT : (IP/MAC Notification Table): in an IP platform, contains all the IP address of the services and the corresponding service_id of each IP. We can get the PID of a particular service in TS with the help of PAT and PMT. Very important. &lt;br /&gt;
&lt;br /&gt;
SDT (service description table) : used to descript service name, service provider, the description of the TS.&lt;br /&gt;
&lt;br /&gt;
EIT (event information table) : the corresponding audio stream, file stream and the propsed program start time and end time. Eg. 2008-May-27 0:27am, Yi Liu is writting this wiki page.&lt;br /&gt;
&lt;br /&gt;
RST (runtime status table): provide one or more events status and time, e.g whether or not an event is running or not running.&lt;br /&gt;
&lt;br /&gt;
TDT : record the current date, time info for the server&lt;br /&gt;
&lt;br /&gt;
TOT : record the current time difference between server and local time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver using PSI/SI table to find the first time-slicing bursts ==&lt;br /&gt;
EIT table can tell the receiver the start time of the program. And whenever the program starts, the first burst session occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver switch channels ==&lt;br /&gt;
channel switch request is initiated via a user interface. This causes a mobile broadcast receiver to switch from the first channel to the second channel.  It is actually switching to another PID. We can use NIT, PAT, PMT, INT tables to trace that PID (get it from PMT). See following session for tracing service_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To trace service_id ==&lt;br /&gt;
This procedure is called INT discovery, the goal is to get service_id and IP of all programs, and the ESG service IP and service_id.&lt;br /&gt;
&lt;br /&gt;
The procedure is: &lt;br /&gt;
&lt;br /&gt;
Frequency tuning --&amp;gt; locate and read INT table from IP datagram, find platform_id and service_id --&amp;gt; Locate PAT, based on service_id to find PMT_pid in PAT --&amp;gt; Locate PMT, analyze the program PID --&amp;gt; Locate INT, get program name and service provider name --&amp;gt; Locate SDT, get the program broadcase address&lt;br /&gt;
&lt;br /&gt;
The complete programs and program list is contains in INT and SDT.  Note: ESG address is described in the INT table&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2002</id>
		<title>PSI SI DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2002"/>
		<updated>2008-05-27T16:42:21Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is PSI/SI in DVB-H: ==&lt;br /&gt;
PSI (Program Specific Information) consists of data enabling a decoder to demultiplex DVB-H services. It contains the following table: PAT, PMT, NIT, CAT&lt;br /&gt;
&lt;br /&gt;
SI provides information on DVB-H services carried by different multiplexes, it contains the following table: SDT, EIT, RST, TDT, TOT, ST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is PSI/SI mandatory in DVB-H? ==&lt;br /&gt;
Yes,  in order for cell phones to receive DVB-H programs, Timeslicing, MPE-FEC, PSI/SI and ESG are all needed. &lt;br /&gt;
To get the DVB-H service correctly for the cell phone, server must insert the associated information into the TS stream, that is PSI and SI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI/SI and receiver (cell phone) ==&lt;br /&gt;
When the cell phone starts to receive DVB-H program, it actually starts with receiving PSI/SI. They are in the table format, no encryption and directly built in the TS datagram. &lt;br /&gt;
&lt;br /&gt;
From PSI/SI information, the cell phone knows the program list and the PID of each program in the received TS. After that the cell phone can start to receive the particular PID of the target program and ignore all PIDs of all other programs in the same TS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVB-H network layer ==&lt;br /&gt;
This is a very important picture, my account can not upload picture to this wiki, have to put it on my SFU webpage.&lt;br /&gt;
[http://www.sfu.ca/~yliu1/layer1.jpg]&lt;br /&gt;
&lt;br /&gt;
A DVB network is uniquely identified by a network_id. A DVB network consist of one or more Transport Streams&lt;br /&gt;
(TS), each carrying a multiplex and being transmitted by one or more Services. &lt;br /&gt;
&lt;br /&gt;
TS use transport_stream_id &amp;amp; original_network_id for identification, these info are saved in PAT table&lt;br /&gt;
&lt;br /&gt;
Service use service_id &amp;amp;  transport_stream_id &amp;amp; original_network_id for identification. these info are saved in PMT table&lt;br /&gt;
&lt;br /&gt;
ES (elementary stream) use component_tag or the PID in TS for identification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI contains the following tables: ==&lt;br /&gt;
PAT（Program Association Table）:The PAT lists PIDs for all PMTs in the stream. TS Packets containing PAT information always have PID 0x0.&lt;br /&gt;
&lt;br /&gt;
PMT（Program Map Table）:contain information about programs. For each program, there is a PMT.&lt;br /&gt;
&lt;br /&gt;
NIT（Network Information Table）: provides information about the multiplexes and transport streams on a given network. Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41&lt;br /&gt;
&lt;br /&gt;
CAT（Conditional Access Table）:This table is used for conditional access to the streams. This table provides association with EMM stream.&lt;br /&gt;
&lt;br /&gt;
The releationship between PAT and PMT are:&lt;br /&gt;
[http://www.sfu.ca/~yliu1/layer3.jpg]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SI contains the following tables: ==&lt;br /&gt;
INT : (IP/MAC Notification Table): in an IP platform, contains all the IP address of the services and the corresponding service_id of each IP. We can get the PID of a particular service in TS with the help of PAT and PMT. Very important. &lt;br /&gt;
&lt;br /&gt;
SDT (service description table) : used to descript service name, service provider, the description of the TS.&lt;br /&gt;
&lt;br /&gt;
EIT (event information table) : the corresponding audio stream, file stream and the propsed program start time and end time. Eg. 2008-May-27 0:27am, Yi Liu is writting this wiki page.&lt;br /&gt;
&lt;br /&gt;
RST (runtime status table): provide one or more events status and time, e.g whether or not an event is running or not running.&lt;br /&gt;
&lt;br /&gt;
TDT : record the current date, time info for the server&lt;br /&gt;
&lt;br /&gt;
TOT : record the current time difference between server and local time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver using PSI/SI table to find the first time-slicing bursts ==&lt;br /&gt;
EIT table can tell the receiver the start time of the program. And whenever the program starts, the first burst session occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver switch channels ==&lt;br /&gt;
channel switch request is initiated via a user interface. This causes a mobile broadcast receiver to switch from the first channel to the second channel.  It is actually switching to another PID. We can use NIT, PAT, PMT, INT tables to trace that PID (get it from PMT). See following session for tracing service_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To trace service_id ==&lt;br /&gt;
This procedure is called INT discovery, the goal is to get service_id and IP of all programs, and the ESG service IP and service_id.&lt;br /&gt;
&lt;br /&gt;
The procedure is: &lt;br /&gt;
&lt;br /&gt;
Frequency tuning --&amp;gt; locate and read INT table from IP datagram, find platform_id and service_id --&amp;gt; Locate PAT, based on service_id to find PMT_pid in PAT --&amp;gt; Locate PMT, analyze the program PID --&amp;gt; Locate INT, get program name and service provider name --&amp;gt; Locate SDT, get the program broadcase address&lt;br /&gt;
&lt;br /&gt;
The complete programs and program list is contains in INT and SDT.  Note: ESG address is described in the INT table&lt;br /&gt;
&lt;br /&gt;
[[Image:abc.jpg]]&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
	<entry>
		<id>https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2001</id>
		<title>PSI SI DVB-H</title>
		<link rel="alternate" type="text/html" href="https://nmsl.cs.sfu.ca/index.php?title=PSI_SI_DVB-H&amp;diff=2001"/>
		<updated>2008-05-27T08:04:21Z</updated>

		<summary type="html">&lt;p&gt;Yliu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is PSI/SI in DVB-H: ==&lt;br /&gt;
PSI (Program Specific Information) consists of data enabling a decoder to demultiplex DVB-H services. It contains the following table: PAT, PMT, NIT, CAT&lt;br /&gt;
SI provides information on DVB-H services carried by different multiplexes, it contains the following table: SDT, EIT, RST, TDT, TOT, ST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is PSI/SI mandatory in DVB-H? ==&lt;br /&gt;
Yes,  in order for cell phones to receive DVB-H programs, Timeslicing, MPE-FEC, PSI/SI and ESG are all needed. &lt;br /&gt;
To get the DVB-H service correctly for the cell phone, server must insert the associated information into the TS stream, that is PSI and SI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI/SI and receiver (cell phone) ==&lt;br /&gt;
When the cell phone starts to receive DVB-H program, it actually starts with receiving PSI/SI. They are in the table format, no encryption and directly built in the TS datagram. &lt;br /&gt;
&lt;br /&gt;
From PSI/SI information, the cell phone knows the program list and the PID of each program in the received TS. After that the cell phone can start to receive the particular PID of the target program and ignore all PIDs of all other programs in the same TS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DVB-H network layer ==&lt;br /&gt;
This is a very important picture, my account can not upload picture to this wiki, have to put it on my SFU webpage.&lt;br /&gt;
[http://www.sfu.ca/~yliu1/layer1.jpg]&lt;br /&gt;
&lt;br /&gt;
A DVB network is uniquely identified by a network_id. A DVB network consist of one or more Transport Streams&lt;br /&gt;
(TS), each carrying a multiplex and being transmitted by one or more Services. &lt;br /&gt;
&lt;br /&gt;
TS use transport_stream_id &amp;amp; original_network_id for identification, these info are saved in PAT table&lt;br /&gt;
&lt;br /&gt;
Service use service_id &amp;amp;  transport_stream_id &amp;amp; original_network_id for identification. these info are saved in PMT table&lt;br /&gt;
&lt;br /&gt;
ES (elementary stream) use component_tag or the PID in TS for identification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PSI contains the following tables: ==&lt;br /&gt;
PAT（Program Association Table）:The PAT lists PIDs for all PMTs in the stream. TS Packets containing PAT information always have PID 0x0.&lt;br /&gt;
&lt;br /&gt;
PMT（Program Map Table）:contain information about programs. For each program, there is a PMT.&lt;br /&gt;
&lt;br /&gt;
NIT（Network Information Table）: provides information about the multiplexes and transport streams on a given network. Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41&lt;br /&gt;
&lt;br /&gt;
CAT（Conditional Access Table）:This table is used for conditional access to the streams. This table provides association with EMM stream.&lt;br /&gt;
&lt;br /&gt;
The releationship between PAT and PMT are:&lt;br /&gt;
[http://www.sfu.ca/~yliu1/layer3.jpg]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SI contains the following tables: ==&lt;br /&gt;
INT : (IP/MAC Notification Table): in an IP platform, contains all the IP address of the services and the corresponding service_id of each IP. We can get the PID of a particular service in TS with the help of PAT and PMT. Very important. &lt;br /&gt;
&lt;br /&gt;
SDT (service description table) : used to descript service name, service provider, the description of the TS.&lt;br /&gt;
&lt;br /&gt;
EIT (event information table) : the corresponding audio stream, file stream and the propsed program start time and end time. Eg. 2008-May-27 0:27am, Yi Liu is writting this wiki page.&lt;br /&gt;
&lt;br /&gt;
RST (runtime status table): provide one or more events status and time, e.g whether or not an event is running or not running.&lt;br /&gt;
&lt;br /&gt;
TDT : record the current date, time info for the server&lt;br /&gt;
&lt;br /&gt;
TOT : record the current time difference between server and local time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver using PSI/SI table to find the first time-slicing bursts ==&lt;br /&gt;
EIT table can tell the receiver the start time of the program. And whenever the program starts, the first burst session occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How a mobile TV receiver switch channels ==&lt;br /&gt;
channel switch request is initiated via a user interface. This causes a mobile broadcast receiver to switch from the first channel to the second channel.  It is actually switching to another PID. We can use NIT, PAT, PMT, INT tables to trace that PID (get it from PMT). See following session for tracing service_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To trace service_id ==&lt;br /&gt;
This procedure is called INT discovery, the goal is to get service_id and IP of all programs, and the ESG service IP and service_id.&lt;br /&gt;
&lt;br /&gt;
The procedure is: &lt;br /&gt;
&lt;br /&gt;
Frequency tuning --&amp;gt; locate and read INT table from IP datagram, find platform_id and service_id --&amp;gt; Locate PAT, based on service_id to find PMT_pid in PAT --&amp;gt; Locate PMT, analyze the program PID --&amp;gt; Locate INT, get program name and service provider name --&amp;gt; Locate SDT, get the program broadcase address&lt;br /&gt;
&lt;br /&gt;
The complete programs and program list is contains in INT and SDT.  Note: ESG address is described in the INT table&lt;/div&gt;</summary>
		<author><name>Yliu</name></author>
	</entry>
</feed>