[:en]
This document consists of technical informations about Digiguest Coax system. Document has information about plugins and usage of DVB-T modulator on Digiguest Coax server.
[:fr]
Ce document contient des informations techniques sur le système Digiguest Coax. Le document contient des informations sur les plugins et l’utilisation du modulateur DVB-T sur le serveur Digiguest Coax.
[:]
[:en]
Digiguest Coax System
[:fr]
Système Digiguest Coax
[:]
[:en]
Digiguest Coax is a system developed for Hotel Infotainment. TVs are specially designed to get the data from DVB-T channel. Basically you can send data files, firmware files, and TV commands through coaxial cable from TV antenna input.
Data flows are unidirectional. Server sends data (user interface, firmware updates, RS232 commands etc.) to TVs but the server doesn’t receive any feedback from the TVs.
Broadcast channel between server and our TVs is 63th channel (810 MHz) by default. It can be reassigned, but TVs must be provided with a new channel list having the corresponding channel as its broadcast channel(See 5.1.1.2) . Broadcast channel is the channel, which the server uses to send data files to TV and TV uses to receive data files.
If the RF signal and TV broadcasts are distributed with the same cable, the signal levels on the cable should be regulated.
You can find sample connection topology as below.
[:fr]
Digiguest Coax est un système développé pour l’infodivertissement hôtelier. Les téléviseurs sont spécialement conçus pour obtenir les données de la chaîne DVB-T. Fondamentalement, vous pouvez envoyer des fichiers de données, des fichiers de micrologiciel et des commandes TV via un câble coaxial depuis l’entrée de l’antenne TV.
Les flux de données sont unidirectionnels. Le serveur envoie des données (interface utilisateur, mises à jour du micrologiciel, commandes RS232, etc.) aux téléviseurs, mais le serveur ne reçoit aucun retour des téléviseurs.
La chaîne de diffusion entre le serveur et nos téléviseurs est la 63e chaîne (810 MHz) par défaut. Elle peut être réattribuée, mais les téléviseurs doivent être dotés d’une nouvelle liste de chaînes ayant la chaîne correspondante comme chaîne de diffusion (voir 5.1.1.2). La chaîne de diffusion est la chaîne que le serveur utilise pour envoyer des fichiers de données à la télévision et que la télévision utilise pour recevoir des fichiers de données.
Si le signal RF et les émissions télévisées sont distribués avec le même câble, les niveaux de signal sur le câble doivent être régulés.
Vous pouvez trouver un exemple de topologie de connexion ci-dessous.
[:]
[:en]
File Structure
[:fr]
Structure de fichier
[:]
[:en]
This part contains the necessary HTML structure of infotainment system. Provided SDK creates a package with the files under tmp/rfhoteltv periodically and sends it to the TVs. Before putting the data to the stream, tmp directory is zipped.
index.html which is the start page. On TV browser only “tmp/rfhoteltv/index.html” file is started. It binds the rest of the HTML,JS and CSS files. You should start modifying this file for your usage purposes.
Application should be designed to work locally for performance increase and in case of no internet connection on TVs. Thus, all external libraries such as Bootstrap, jQuery, etc… should be included under “tmp/rfhoteltv”.
[:fr]
Cette partie contient la structure HTML nécessaire du système d’infodivertissement. Le SDK fourni crée périodiquement un package avec les fichiers sous tmp/rfhoteltv et l’envoie aux téléviseurs. Avant de mettre les données dans le flux, le répertoire tmp est compressé.
index.html est la page de démarrage. Sur le navigateur TV, seul le fichier « tmp/rfhoteltv/index.html » est ouvert. Il lie le reste des fichiers HTML, JS et CSS. Commencez par modifier ce fichier pour vos besoins d’utilisation.
L’application doit être conçue pour fonctionner localement afin d’optimiser les performances et en cas d’absence de connexion Internet sur les téléviseurs. Ainsi, toutes les bibliothèques externes telles que Bootstrap, jQuery, etc. doivent être incluses sous « tmp/rfhoteltv ».
[:]
[:en]
Elements
[:fr]
Éléments
[:]
[:en]
- html for MB230 and Default.html for MB110
- xml
- json
- Image files ( optional )
- Script files ( optional )
- Style files ( optional )[:fr]
- html pour MB230 et Default.html pour MB110
- xml
- json
- Fichiers images (facultatif)
- Fichiers de script (facultatif)
- Fichiers de style (facultatif)[:]
[:en]
Sample Default.html
[:fr]
Exemple de fichier Default.html
[:]
[:en]
While you are writing your HTML code, you can either use the OIPF plugins or the special plugins which are designed only for our TVs. You can access to these plugins document from our support site by following the below path.
Documents -> Vestel TV SDK -> D0301 – HTML App Supported Functionalities App
P.S: OIPF plugins are not fully supported. You can find the implementation status and notes for each plugin.
Please also note that, your html resolution should be 720p.
You can review the sample “tmp/rfhoteltv/Pages/Default.html” file in SDK[:fr]
Quand vous écrivez votre code HTML, vous pouvez utiliser soit les plugins OIPF, soit les plugins spéciaux qui sont conçus uniquement pour nos téléviseurs. Vous pouvez accéder à ces documents de plugins à partir de notre site d’assistance en suivant le chemin ci-dessous.
Documents -> Vestel TV SDK -> D0301 – Application HTML de fonctionnalités prises en charge
P.S. : Les plugins OIPF ne sont pas entièrement pris en charge. Vous pouvez trouver l’état d’implémentation et les notes pour chaque plugin.
Veuillez également noter que votre résolution HTML doit être de 720p.
Vous pouvez consulter l’exemple de fichier « tmp/rfhoteltv/Pages/Default.html » dans le SDK[:]
[:en]
Sample Channel List
[:fr]
Exemple de liste de chaînes
[:]
[:en]
You can find sample channel list for Digiguest Coax on our support site by following below path.
Documents è Vestel TV SDK è Sample Channel Table for Digiguest Coax
In order to change the channel list of a TV include the XML version of the channel list and call fileChannellistHelper.setChannelList(pathXML) method on TV JS side. You can add version control with an additional additional mechanism where you increase the version only when the channel list is changed. It prevents channel list to be loaded on each package arrival.
Broadcast Channel, Channel 63(810000 KHz) Representation in a XML file:
[:fr]
Vous pouvez trouver un exemple de liste de chaînes pour Digiguest Coax sur notre site d’assistance en suivant le chemin ci-dessous.
Documents – Vestel TV SDK – Exemple de tableau de chaînes pour Digiguest Coax
Afin de modifier la liste des chaînes d’un téléviseur, incluez la version XML de la liste des chaînes et appelez la méthode fileChannellistHelper.setChannelList(pathXML) côté JS sur la TV. Vous pouvez ajouter un contrôle de version avec un mécanisme supplémentaire dans lequel vous n’augmentez la version que lorsque la liste des chaînes est modifiée. Cela empêche le chargement de la liste des chaînes à chaque arrivée de paquet.
Chaîne de diffusion, chaîne 63 (810 000 kHz) Représentation dans un fichier XML :
[:]
[:en]
Sample Command List
[:fr]
Exemple de liste de commandes
[:]
<dvb:SingleService> <dvb:ServiceLocation Network=“DVB-T“> <dvb:TunerConfiguration Frequency=“810000” /> </dvb:ServiceLocation> <dvb:TextualIdentifier ServiceName=“Vestel1” /> <dvb:LogicalChannelNumber ChannelNumber=”223” /> <dvb:DVBTriplet OrigNetId=”9018” ServiceId=”1″ TSId=”1″ /> <dvb:SI ServiceEncrypted=”0″ ServiceLocked=”0″ ServiceType=”1″ ServiceUniqueId=“Vestel1” ServiceVMX=”0“> <dvb:ContentGenre>101</dvb:ContentGenre> </dvb:SI> </dvb:SingleService>
[:en]
Command execution is performed without any action on TV side. TV checks “tmp/rfhoteltv/commandList.json” file on every package arrival.
The JSON file structure is given below:
{“Room No 1”: [
{“id”: “Unique ID of command 1”, “text”: “RS-232 Command 1”},
{“id”: “Unique ID of command 2”, “text”: “RS-232 Command 2”},
…
],
“Room No 2”: [
{“id”: “Unique ID of command 1”, “text”: “RS-232 Command 1”},
{“id”: “Unique ID of command 3”, “text”: “RS-232 Command 3”},
],
“Room No 3”:[],
“Room No 4”:[
…
]
}
“id” tag respresents version value of the command to be sent. “text” tag represents a value the command name and parameters.
See the sample JSON object below:
{“5”: [{“id”: “1_36069479”, “text”: “TON 100”}], “12”: [], “100”: [], “101”: [{“id”: “1_36069479”, “text”: “TON 100”}, {“id”: “3_36069479”, “text”: “RST”}], “203”: []} |
[:fr]
L’exécution de la commande est effectuée sans aucune action du côté du téléviseur. La TV vérifie le fichier « tmp/rfhoteltv/commandList.json » à chaque arrivée de paquet.
La structure du fichier JSON est donnée ci-dessous :
{“Chambre No 1”: [
{“id”: “ID unique de la commande 1”, “text”: “Commande RS-232 1”},
{“id”: “ID unique de la commande 2”, “text”: “Commande RS-232 2”},
…
],
“Chambre No 2”: [
{“id”: “ID unique de la commande 1”, “text”: “Commande RS-232 1”},
{“id”: “ID unique de la commande 3”, “text”: “Commande RS-232 3”},
],
“Chambre No 3”:[],
“Chambre No 4”:[
…
]
}
« id » représente la valeur de version de la commande à envoyer. « text » représente la valeur du nom de la commande et ses paramètres.
Voir l’exemple d’objet JSON ci-dessous :
{“5”: [{“id”: “1_36069479”, “text”: “TON 100”}], “12”: [], “100”: [], “101”: [{“id”: “1_36069479”, “text”: “TON 100”}, {“id”: “3_36069479”, “text”: “RST”}], “203”: []} |
[:]
[:en]
Folder Structure
[:fr]
Structure de dossiers
[:]
[:en]
There are two ways to make the folder structure.
[:fr]
Il existe deux façons de créer la structure de dossiers.
[:]
[:en]
Temporary File
[:fr]
Fichier temporaire
[:]
[:en]
If you want to make all the files remain in only RAM of the TV, folder structure should be done as below. But in this case, with every reboot all of the data will be removed from the TV and TV will show a loading screen while downloading the content. As a suggestion, tmp can always be used for data downloading and when the application is started; it can copy itself the non volatile section to the “/data/rfhoteltv” folder for the cases such as server is being down or a quick start needed after TV reboot. “StorageManager.copy(sourcePath, targetPath)” method provided by StorageManager TV browser plugin on JavaScript can be used for file transfer from tmp to data.
Every javascript and css files should be under /tmp/rfhoteltv folder even optional ones.
[:fr]
Si vous souhaitez que tous les fichiers restent uniquement dans la RAM du téléviseur, la structure des dossiers doit être organisée comme ci-dessous. Mais dans ce cas, à chaque redémarrage, toutes les données seront supprimées du téléviseur et le téléviseur affichera un écran de chargement lors du téléchargement du contenu. À titre de suggestion, tmp peut toujours être utilisé pour le téléchargement de données et au démarrage de l’application. Il peut copier lui-même la section non volatile dans le dossier « /data/rfhoteltv » par exemple dans le cas où le serveur est en panne ou où un démarrage rapide est nécessaire après le redémarrage du téléviseur. La méthode « StorageManager.copy(sourcePath, targetPath) » fournie par le plug-in de navigateur StorageManager TV sur JavaScript peut être utilisée pour le transfert de fichiers de tmp vers data.
Tous les fichiers JavaScript et css doivent se trouver dans le dossier /tmp/rfhoteltv, y compris les fichiers facultatifs.
[:]
[:en]
NonVolatile File
[:fr]
Fichier non volatile
[:]
[:en]
If you want to make the all files remain in the TV flash memory folder, you should use “/data/rfhoteltv” folder to save your files. However, TV flash has a rewrite life cycle and it is strongly recommended not to use data folder for package receiving. Instead, use tmp folder for periodic data receivement and copy files only when there is an important change in the files received. Flash memory folder has 50 Mb storage assigned for MB110 and 100 Mb storage for MB230. For the direct package sending to data folder structure should be done as below. For this case, TV always writes the files to the non-volatile memory. You should modify createbundle.py for this operation.
- “/data/rfhoteltv/index.html” (Required, path and file name should be written like this)
[:fr]
Si vous souhaitez que tous les fichiers restent dans le dossier de la mémoire flash du téléviseur, vous devez utiliser le dossier « /data /rfhoteltv » pour enregistrer vos fichiers. Cependant, la mémoire flash de la TV a un cycle de vie de réécriture et il est fortement recommandé de ne pas utiliser le dossier data pour la réception de paquets. Au lieu de cela, utilisez le dossier tmp pour la réception périodique de données et la copie de fichiers uniquement lorsqu’il y a un changement important dans les fichiers reçus. Le dossier de mémoire flash a 50 Mo de stockage attribués pour le MB110 et 100 Mo de stockage pour le MB230. Pour l’envoi direct de paquets à la structure du dossier data, procédez comme ci-dessous. Dans ce cas, le téléviseur écrit toujours les fichiers dans la mémoire non volatile. Vous devez modifier createbundle.py pour cette opération.
- « /data/rfhoteltv/index.html » (Obligatoire, le chemin et le nom du fichier doivent être écrits ainsi)
[:]
[:en]
Description of SDK Sample Scripts
[:fr]
Description des exemples de scripts du SDK
[:]
[:en]
createBundle.py
[:fr]
createBundle.py
[:]
[:en]
It manages packet creation, streaming, TV auto restart and auto recovery of Opencaster driver operations. Packet creation and streaming are tiring processes for the hard disk, because stream is always on and when the packet is sent, broadcast cycle starts with the new packet. Each broadcast cycle takes about 90 seconds for short_donor.ts and 270 – 1200 seconds for long2_donor.ts. We recommend you to create packages on a RamDisk. All operations with OpenCaster commands (except sending the stream) can be doable on a RamDisk.
If you create a RamDisk and copy OpenCaster files in it, you can use them on packet creation. Example code of creating a RamDisk is given below:
1. sudo mkdir Ramdisk à Make a file for RamDisk. 2. sudo chmod 777 -R Ramdisk/ à Give it access permission. 3. sudo mount -t tmpfs -o size=3072M tmpfs Ramdisk/ à Mount a size of Ram. For example 3072 Mb. 4. sudo cp OpenCaster/ Ramdisk/OpenCaster/ à Copy OpenCaster folder into the RamDisk.
|
[:fr]
Gère la création de paquets, la diffusion, le redémarrage automatique du téléviseur et la récupération automatique des opérations du pilote OpenCaster. La création et la diffusion de paquets sont des processus intensifs pour le disque dur, car le flux est toujours actif et, lorsque le paquet est envoyé, le cycle de diffusion commence avec le nouveau paquet. Chaque cycle de diffusion prend environ 90 secondes pour short_donor.ts et 270 à 1200 secondes pour long2_donor.ts. Nous vous recommandons de créer les paquets sur un disque virtuel. Toutes les opérations avec les commandes OpenCaster (sauf l’envoi du flux) peuvent être réalisées sur un disque virtuel.
Si vous créez un disque virtuel et y copiez des fichiers OpenCaster, vous pouvez les utiliser pour la création de paquets. Un exemple de code de création d’un disque virtuel est donné ci-dessous :
1. sudo mkdir Ramdisk – Créer un fichier pour le disque virtuel. 2. sudo chmod 777 -R Ramdisk/ – Lui donner une autorisation d’accès. 3. sudo mount -t tmpfs -o size=3072M tmpfs Ramdisk/ – Monter une taille de RAM. Par exemple 3072 Mo. 4. sudo cp OpenCaster/ Ramdisk/OpenCaster/ – Copier le dossier OpenCaster dans le disque virtuel. |
[:]
[:en]
Packet Creation&Streaming
[:fr]
Création et diffusion de paquets
[:]
[:en]
On each broadcast cycle, tmp folder on the main directory is compressed as “files.zip”. ZIP file must be a deflated type file.
[:fr]
À chaque cycle de diffusion, le dossier tmp du répertoire principal est compressé en « files.zip ». Le fichier ZIP doit être un fichier de type non compressé.
[:]
[:en]
Packet Insertion to the Stream
[:fr]
Insertion de paquets dans le flux
[:]
[:en]
DCF file is the packet label file on TV side so TV software gets the packet name, type(normal package or firmware) and its size and also decides if the arriving packet is sent for this TV or not. Moreover, version info should be 0 or larger than the previous package verison so TV accepts to receive the package. “1234.dcf” is the obligatory file name for this project and it is added to the stream with “files.zip” automatically by “createBundle.py” script.
“OpenCaster/generate_ssu_data.py” generates carausel files from “files.zip” and “1234.dcf”. Instead of files.zip as bundle parameter, firmware file path can be added with image parameter. For firmware, version parameter should be set to firmware’s corresponding hex version.
“OpenCaster/generate_ssu_carousel.sh” creates ts file with PID 36 which is set as parameter. PID 36 is the fixed section where TV looks for package. Parameter with 80 value is another constant which matches with 80 seconds TV search period. It should not be changed.
“OpenCaster/BungItIn” inserts the created ts into a donor stream file. output.ts is the output file name which is set as parameter. For application package “OpenCaster/short_donor.ts” donor stream file is used while “OpenCaster/long2_donor.ts” is used for firmware file streaming. For a different donor file usage, there should be some configurations should be performed by support side.
“tstdt output.ts > final.ts” command adds the current time information to the generated stream and outputs it as “final.ts”
Finally, tsrfsend command starts broadcasting operation. Usage details are given below:
Usage: tsrfsend file.ts device_id frequency bandwitdh fec gi kmode qam cell_id output_gain Example: tsrfsend final.ts 0 810000 8000 32 7/8 1/4 8 0 0 means: send file final.ts on device 0 at 810MHz frequency, 8MHz bandwidth, 32qam, 7/8 fec, 1/4 gi, 8k mode, 0 cell id, 0 gain possible values are: N device_number KHz Frequency 2000-8000 KHz bandwidth 4|16|32 qpsk, 16qam, 32qam 1/2|2/3|3/4|5/6|7/8 fec 1/16|1/32|1/4|1/8 guard interval 2|8 2k or 8k mode id tps-cell_id gain output gain |
You can change the first line of “config.txt” to broadcast from different channel. By default, it is 63rd channel. In order to make TVs listen the new channel, TVs must be provided with a new channel list having the corresponding channel as its broadcast channel (See 5.1.1.2) .
See “opencaster” method in “createBundle.py” script.
[:fr]
Le fichier DCF est le fichier d’étiquette de paquet du côté du téléviseur afin que le logiciel du téléviseur obtienne le nom du paquet, son type (paquet normal ou micrologiciel) et sa taille, et décide également si le paquet arrivant a été envoyé pour ce téléviseur ou non. De plus, les informations de version doivent être de 0 ou supérieures à la version précédente du package afin que le téléviseur accepte de recevoir le package. 1234.dcf est le nom de fichier obligatoire pour ce projet et il est ajouté au flux avec files.zip automatiquement par le script createBundle.py.
OpenCaster/generate_ssu_data.py génère des fichiers carrousel à partir de files.zip et 1234.dcf. Au lieu de files.zip comme paramètre de lot, le chemin du fichier de micrologiciel peut être ajouté avec le paramètre d’image. Pour le micrologiciel, le paramètre de version doit être défini sur la version hexadécimale correspondante du micrologiciel.
OpenCaster/generate_ssu_carousel.sh crée un fichier ts avec le PID 36 défini comme paramètre. PID 36 est la section fixe où le téléviseur recherche le paquet. Le paramètre avec une valeur de 80 est une autre constante qui correspond à une période de recherche de TV de 80 secondes. Il ne doit pas être modifié.
OpenCaster/BungItIn insère le ts créé dans un fichier de flux donneur. output.ts est le nom du fichier de sortie qui est défini comme paramètre. Pour le package d’application, le fichier de flux donneur OpenCaster/short_donor.ts est utilisé, tandis que OpenCaster/long2_donor.ts est utilisé pour la diffusion de fichiers de micrologiciel. Pour une utilisation différente du fichier donneur, certaines configurations doivent être effectuées du côté support.
tstdt sortie.ts > final.ts La commande ajoute les informations d’heure actuelle au flux généré et les émet avec final.ts
Enfin, la commande tsrfsend démarre l’opération de diffusion. Les détails d’utilisation sont donnés ci-dessous :
Utilisation : tsrfsend file.ts id_appareil fréquence bande passante fec gi kmmode qam id_cellule gain_sortie Exemple : tsrfsend final.ts 0 810000 8000 32 7/8 1/4 8 0 0 signifie envoyer le fichier final.ts sur l’appareil 0 à la fréquence 810 MHz, avec une bande passante de 8 MHz, 32qam, 7/8 fec, 1/4 gi, en mode 8k, avec l’ID de cellule 0 et un gain de 0 les valeurs possibles sont : N numéro_périphérique Fréquence en kHz Bande passante 2000-8000 kHz 4|16|32 qpsk, 16qam, 32qam 1/2|2/3|3/4|5/6|7/8 fec Intervalle de garde 1/16|1/32|1/4|1/8 2|8 Mode 2k ou 8k id tps-cell_id gain Gain de sortie |
Vous pouvez modifier la première ligne de config.txt pour diffuser à partir de différentes chaînes. Par défaut, c’est la 63e chaîne. Pour que les téléviseurs écoutent sur la nouvelle chaîne, les téléviseurs doivent être dotés d’une nouvelle liste de chaînes ayant la chaîne correspondante comme chaîne de diffusion (voir 5.1.1.2).
Voir la méthode opencaster méthode dans le script createBundle.py.
[:]
[:en]
TV Firmware Update
[:fr]
Mise à jour du micrologiciel du téléviseur
[:]
[:en]
You can configure firmware update settings via “firmwareConfig.txt” file. If you would like to send the firmware to the all rooms delete line 6 on “firmwareConfig.txt”. Firmware file name must be given in the text. This file will be added to stream and TVs will get the update.
Firmware files must be a core update file in format as a bin file and must contain TV’s model in its name, like mb110 or mb230.
[:fr]
Vous pouvez configurer les paramètres de mise à jour du micrologiciel via le fichier firmwareConfig.txt. Si vous souhaitez envoyer le micrologiciel à toutes les chambres, supprimez la ligne 6 de firmwareConfig.txt. Le nom du fichier du micrologiciel doit être indiqué dans le texte. Ce fichier sera ajouté au flux et les téléviseurs recevront la mise à jour.
Les fichiers du micrologiciel doivent être un fichier de mise à jour de base au format bin et contenir le modèle du téléviseur dans leur nom, comme mb110 ou mb230.
[:]
[:en]
TV Auto Restart
[:fr]
Redémarrage automatique des téléviseurs
[:]
[:en]
For performance boost, TVs are suggested to be rebooted once a day. It can be managed via TV RS-232 command of “RST”. You can schedule it on the sample project by setting auto restart time as “hour-minute” in third line of “config.txt”. When the scheduled time comes, “createBundle.py” script copies “tmp/rfhoteltv/commandList.json” file to the “systemRF” directory. Then, it adds RST command to the all rooms in “tmp/rfhoteltv/commandList.json”. Auto restart interval lasts 15 minutes; after that, it replaces “tmp/rfhoteltv/commandList.json” with the original version of it from “systemRF /commandList.json”.[:fr]Pour améliorer les performances, il est suggéré de redémarrer les téléviseurs une fois par jour. Cela peut être géré via la commande TV RS-232 de RST. Vous pouvez la programmer sur l’exemple de projet en définissant l’heure de redémarrage automatique au format heure-minute en troisième ligne de config.txt. Lorsque l’heure prévue arrive, le script createBundle.py copie le fichier tmp/rfhoteltv/commandList.json dans le répertoire systemRF. Ensuite, il ajoute la commande RST à toutes les chambres de tmp/rfhoteltv/commandList.json. L’intervalle de redémarrage automatique dure 15 minutes. Après cela, il remplace tmp/rfhoteltv/commandList.json avec la version originale de systemRF /commandList.json.
[:]
[:en]
Auto recovery of Opencaster driver
[:fr]
Récupération automatique du pilote OpenCaster
[:]
[:en]
Very rarely especially after a reboot, Opencaster driver may not be accessible under “/dev” directory. “createBundle.py” script can detect this case. If that happens, it reinstalls the driver and reboots the server. It does this operation only once for any failure case.[:fr]Très rarement, surtout après un redémarrage, le pilote OpenCaster peut ne pas être accessible sous le répertoire /dev. Le script createBundle.py script peut détecter ce cas. Si cela se produit, il réinstalle le pilote et redémarre le serveur. Il ne fait cette opération qu’une seule fois pour tout cas d’échec.
[:]
[:en]
install.py
[:fr]
install.py
[:]
[:en]
“install.py” script should be run once for the server setup. Opencaster driver and its tools, Python 3.7 and Supervisor, openssh-server are installed. After a successful setup, the script reboots the computer; otherwise lists the steps error occurred.
Supervisor configuration for “createBundle.py” is performed in “install.py” script. Supervisor service providec auto-start of the script “createBundle.py”. It also restarts the script after a failure and handles its log management. Logs are stored in “debug” directory.
You can see code example below:
[:fr]
Le script install.py doit être exécuté une fois pour la configuration du serveur. Le pilote OpenCaster et ses outils, Python 3.7, Supervisor et openssh-server sont installés. Après une installation réussie, le script redémarre l’ordinateur, sinon il répertorie les étapes où l’erreur s’est produite.
La configuration du superviseur pour createBundle.py est effectuée par le script install.py. Le service Supervisor fournit le démarrage automatique du script createBundle.py. Il redémarre également le script après un échec et gère sa gestion des journaux. Les journaux sont stockés dans le répertoire debug.
Vous pouvez voir un exemple de code ci-dessous :
[:]
[:en] Note that performStep () uses the Python subprocess call function and the output of the debug step.performStep(‘add-apt-repository ppa:deadsnakes/ppa -y || add-apt-repository ppa:deadsnakes/ppa -y -k hkp://p80.pool.sks-keyservers.net:80’) performStep(‘apt update -y’) performStep(‘apt install python3.7 -y’) performStep(‘python3.7 get-pip.py’) performStep(‘apt-get install -y –no-install-recommends binutils gcc libc6-dev libgomp1 linux-libc-dev make python3.7-dev zlib1g-dev python3-dateutil libssl-dev’) performStep(‘apt-get install zlib1g-dev’) performStep(‘chmod 700 -R OpenCaster’) performStep(‘make -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver’) performStep(‘make install -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver’) performStep(‘cp it950x.rules /etc/udev/rules.d/’) performStep(‘/etc/init.d/udev restart’) performStep(‘make -C OpenCaster/opencaster-3.2.2’) performStep(‘make install -C OpenCaster/opencaster-3.2.2’) performStep(‘make -C OpenCaster/tsrfsend-nosvn’) performStep(‘make install -C OpenCaster/tsrfsend-nosvn’) performStep(‘python3.7 -m pip install –upgrade pip’) performStep(‘python3.7 -m pip install virtualenv’) performStep(“python3.7 -m virtualenv env”) performStep(‘apt install openssh-server’) performStep(‘apt-get install -y supervisor’) performStep(‘service supervisor start’) performStep(‘supervisorctl reread’) performStep(‘supervisorctl update’) performStep(‘reboot’) [:fr] Notez que performStep() utilise la fonction d’appel de sous-processus Python et le résultat de l’étape de débogage. performStep(‘add-apt-repository ppa:deadsnakes/ppa -y || add-apt-repository ppa:deadsnakes/ppa -y -k hkp://p80.pool.sks-keyservers.net:80’) performStep(‘apt update -y’) performStep(‘apt install python3.7 -y’) performStep(‘python3.7 get-pip.py’) performStep(‘apt-get install -y –no-install-recommends binutils gcc libc6-dev libgomp1 linux-libc-dev make python3.7-dev zlib1g-dev python3-dateutil libssl-dev’) performStep(‘apt-get install zlib1g-dev’) performStep(‘chmod 700 -R OpenCaster’) performStep(‘make -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver’) performStep(‘make install -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver’) performStep(‘cp it950x.rules /etc/udev/rules.d/’) performStep(‘/etc/init.d/udev restart’) performStep(‘make -C OpenCaster/opencaster-3.2.2’) performStep(‘make install -C OpenCaster/opencaster-3.2.2’) performStep(‘make -C OpenCaster/tsrfsend-nosvn’) performStep(‘make install -C OpenCaster/tsrfsend-nosvn’) performStep(‘python3.7 -m pip install –upgrade pip’) performStep(‘python3.7 -m pip install virtualenv’) performStep(“python3.7 -m virtualenv env”) performStep(‘apt install openssh-server’) performStep(‘apt-get install -y supervisor’) performStep(‘service supervisor start’) performStep(‘supervisorctl reread’) performStep(‘supervisorctl update’) performStep(‘reboot’) [:] |
[:en]
Tv Side Notes
[:fr]
Notes sur la télévision
[:]
[:en]
Digiguest Coax is a product which provides update of any file within TV’s file system that is in a writable location. A ZIP archive is embedded into a SSU (System Software Update) carousel, which is based on DSM-CC (Digital storage media command and control) specification. The ZIP archive resides in a group of the carousel that carries a particular software update for a single manufacturer and contains a software image as well. This carousel is prepared with OpenCaster tools in transport stream format.
Prerequisite: B2BProducts field must be set as Digiguest Coax in the profile.
Supported Platforms: Currently supported platforms are MB110, MB120 and MB230.
By using Digiguest Coax product, file bundle (e.g. html application, channel list) and TV firmware can be updated. The required things will be explained in the following parts.
Since firmware update can be done over RF stream, automatic web update is disabled for Digiguest Coax products.
[:fr]
Digiguest Coax est un produit qui fournit une mise à jour de tout fichier du système de fichiers du téléviseur qui se trouve dans un emplacement accessible en écriture. Une archive ZIP est intégrée dans un carrousel SSU (System Software Update), basé sur la spécification DSM-CC (Commande et contrôle des supports de stockage numériques). L’archive ZIP réside dans un groupe du carrousel qui contient une mise à jour logicielle particulière pour un fabricant unique, ainsi qu’une image logicielle. Ce carrousel est préparé avec les outils OpenCaster au format de flux de transport.
Prérequis : Le champ B2BProducts doit être défini sur Digiguest Coax dans le profil.
Plateformes prises en charge : Les plateformes actuellement prises en charge sont MB110, MB120 et MB230.
En utilisant le produit Digiguest Coax, le lot de fichiers (par exemple, l’application HTML, la liste des chaînes) et le micrologiciel du téléviseur peuvent être mis à jour. Les éléments requis seront expliqués dans les parties suivantes.
Étant donné que la mise à jour du micrologiciel peut être effectuée via un flux RF, la mise à jour Web automatique est désactivée pour les produits Digiguest Coax.
[:]
[:en]
Preparing file bundle
[:fr]
Préparation du lot de fichiers
[:]
[:en]
For storing Digiguest Coax related files in TV’s filesystem, “/data/rfhoteltv” and “/tmp/rfhoteltv” paths are reserved and read/write permission is given to StorageManager plugin to be able to manipulate files. Contents of the bundle, which in ZIP format, will be extracted to TV’s root directory and must be placed accordingly. ZIP file must be a deflated type file.
[:fr]
Pour stocker les fichiers liés à Digiguest Coax dans le système de fichiers du téléviseur, les chemins /data/rfhoteltv et /tmp/rfhoteltv sont réservés et l’autorisation en lecture/écriture est donnée au plugin StorageManager pour pouvoir manipuler les fichiers. Le contenu du lot, qui est au format ZIP, sera extrait dans le répertoire racine du téléviseur et doit être placé en conséquence. Le fichier ZIP doit être un fichier de type non compressé.
[:]
[:en]
HTML Application
[:fr]
Application HTML
[:]
[:en]
The default application contents are stored under /vendor/html_applications/rfhoteltv directory which is mounted as read only. The start page of default application is under /vendor/html_applications/rfhoteltv/project/coaxialclient/index.html for MB230 and /vendor/html_applications/rfhoteltv/project/coaxialclientPages/default.html for MB110. After FTI (First Time Installation), default application is started.
Assuming that example application contents are zipped under export directory and the application start page is under /export/index.html. After application is downloaded into /tmp directory, the contents of web page is should be moved into /data/rfhoteltv/ path. After the bundle update is completed, in order to start the new application, “starturl.txt” file should be updated with SETSTARTURL command. Note that when it is set once, it always shows the same path. Therefore, there is no need to call SETSTARTURL command again for further updates.
Note that /tmp is a common temporary and volatile directory in Unix systems, the contents of which will be lost after a system reset. Therefore, at the end of the update process, the files should be copied to /data if they need to be permanent.
Below table shows platform specific available spaces for file system partitions
Platform | Partition | Available Space(MB) |
MB110 | /data | 55 |
/tmp | 210 | |
MB230 | /data | 100 |
| /tmp | 210 |
[:fr]
Le contenu par défaut de l’application est stocké sous le répertoire /vendor/html_applications/rfhoteltv, qui est monté en lecture seule. La page de démarrage de l’application par défaut est sous /vendor/html_applications/rfhoteltv/project/coaxialclient/index.html pour le MB230 et /vendor/html_applications/rfhoteltv/project/coaxialclientPages/default.html pour le MB110. Après la première installation (FTI), l’application par défaut est lancée.
Nous supposons que le contenu de l’exemple d’application est compressé sous le répertoire d’exportation et que la page de démarrage de l’application se trouve sous /export/index.html. Une fois l’application téléchargée dans le répertoire /tmp, le contenu de la page Web doit être déplacé vers le chemin /data/rfhoteltv/. Une fois la mise à jour du lot terminée, afin de démarrer la nouvelle application, starturl.txt doit être mis à jour avec la commande SETSTARTURL. Notez que lorsque vous définissez cette valeur une fois, elle affiche toujours le même chemin. Par conséquent, il n’est pas nécessaire d’appeler à nouveau la commande SETSTARTURL pour les autres mises à jour.
Notez que /tmp est un répertoire temporaire et volatile courant dans les systèmes Unix, dont le contenu sera perdu après une réinitialisation du système. Par conséquent, à la fin du processus de mise à jour, les fichiers doivent être copiés dans /data si vous voulez les rendre permanents.
Le tableau ci-dessous montre les espaces disponibles spécifiques à la plateforme pour les partitions du système de fichiers
Plateforme | Partition | Espace disponible (Mo) |
MB110 | /data | 55 |
/tmp | 210 | |
MB230 | /data | 100 |
| /tmp | 210 |
[:]
[:en]
Channel List File
[:fr]
Fichier de liste de chaînes
[:]
[:en]
Channel list file (channelTable.xml) must be written in the Deluxe+ channel list format.
In order to get channel list file processed, ChannelListVersion element must get increased every time file uploaded to TV.
Stream channel name should be set “Vestel1” if the stream channel does not have hotel specific information video.
In addition, channel lists should follow the rules specified in Channel List Helper.
[:fr]
Le fichier de liste de chaînes (channelTable.xml) doit être écrit au format de liste de chaînes Deluxe+.
Pour que le fichier de liste de chaînes soit traité, l’élément ChannelListVersion doit être augmenté chaque fois que le fichier est téléchargé sur le téléviseur.
Le nom de la chaîne de diffusion doit être défini sur Vestel1 si la chaîne de diffusion n’a pas de vidéo d’informations spécifiques à l’hôtel.
De plus, les listes de chaînes doivent suivre les règles spécifiées dans Assistant pour la liste de chaînes.
[:]
[:en]
Command List Processor
[:fr]
Processeur de liste de commandes
[:]
[:en]
The commandList.json file is prepared by the server side and downloaded together with the file bundle. The file is located in “/tmp/commandList.json”.
The file must satisy below requirements:
- The name of the file is “commandList.json”.
- Each room is defined as a seperate json object.
- Inside the room object, there is a json array independent from the number of commands for the room.
- Each object of json array is formatted as two field. The field tag names may be changed. However, the order of the field must be same.
- Field-1: It includes the version tag called “id” and version value of the command to be sent.
- Field-2: It includes the command tag called “text” and as a value the command name with parameters.
The formatted file example is shown below:
commandList.json
{
“1”: [
{
“id”: “13_30869573”,
“text”: “STV 12”
}
],
“102”: [
{
“id”: “4_25714025”,
“text”: “TOF”
}
],
“719”: [
{
“id”: “7_28117708”,
“text”: “SETMAXVOLUME 91”
},
{
“id”: “7_22317708”,
“text”: “TOF”
}
]
}
Supported commands are listed under RS232/LAN ASCII Commands
[:fr]
Le fichier commandList.json est préparé du côté serveur et téléchargé avec le lot de fichiers. Le fichier se trouve dans /tmp/commandList.json.
Le fichier doit satisfaire les exigences ci-dessous :
- Le nom du fichier est commandList.json.
- Chaque chambre est définie comme un objet json distinct.
- À l’intérieur de l’objet de chambre, il existe un tableau json indépendant du nombre de commandes pour la chambre.
- Chaque objet du tableau json est formaté avec deux champs. Les noms de balise des champs peuvent être modifiés. Cependant, l’ordre des champs doit être le même.
- Field-1 : Inclut la balise de version appelée id et la valeur de version de la commande à envoyer.
- Field-2 : Comprend la balise de commande appelée text et comme valeur le nom de la commande avec ses paramètres.
L’exemple de fichier formaté est illustré ci-dessous :
commandList.json
{
“1”: [
{
“id”: “13_30869573”,
“text”: “STV 12”
}
],
“102”: [
{
“id”: “4_25714025”,
“text”: “TOF”
}
],
“719”: [
{
“id”: “7_28117708”,
“text”: “SETMAXVOLUME 91”
},
{
“id”: “7_22317708”,
“text”: “TOF”
}
]
}
Les commandes prises en charge sont répertoriées sous Commandes RS232/LAN ASCII
[:]
[:en]
Preparing an OAD stream with the file bundle
[:fr]
Préparation d’un flux OAD avec le lot de fichiers
[:]
[:en]
OpenCaster is a Linux based free and open source MPEG2 transport stream data generator and packet manipulator that is composed of a number of binary tools. Its currently used version is 3.2.2.
[:fr]
OpenCaster est un générateur de données de flux de transport MPEG2 gratuit et open source basé sur Linux et un manipulateur de paquets qui est composé d’un certain nombre d’outils binaires. Sa version actuellement utilisée est la 3.2.2.
[:]
[:en]
Download OpenCaster directory from SVN Tools repository
In any working directory
[:fr]
Téléchargez le répertoire OpenCaster à partir du référentiel SVN Tools dans n’importe quel répertoire de travail
[:]
[:en]
svn export http://svn/repos/Tools/OpenCaster
This directory contains the source code for OpenCaster tools, Python libraries, scripts and patches for for preparing OAD streams.
Instructions
Following instructions describe how to build and install OpenCaster’s binary tools and the complementary Python libraries and to prepare OAD streams within the downloaded directory ‘OpenCaster’. If you prefer another working directory, or to work with administrative permissions, please change file paths and administrative commands or copy/move files accordingly.
[:fr]
svn export http://svn/repos/Tools/OpenCaster
Ce répertoire contient le code source des outils OpenCaster, des bibliothèques Python, des scripts et des correctifs pour la préparation des flux OAD.
Instructions
Les instructions suivantes décrivent comment créer et installer les outils binaires d’OpenCaster et les bibliothèques Python complémentaires, et préparer les flux OAD dans le répertoire téléchargé « OpenCaster ». Si vous préférez un autre répertoire de travail, ou pour travailler avec des autorisations administratives, modifiez les chemins de fichiers et les commandes administratives ou copiez/déplacez les fichiers en conséquence.
[:]
[:en]
Build and Install OpenCaster tools and the Python library ‘dvbobjects’
Extract the source code
[:fr]
Générez et installez les outils OpenCaster et la bibliothèque Python ‘dvbobjects’, puis extrayez le code source
[:]
[:en]
cd OpenCaster/tar xvfz opencaster_3.2.2+dfsg.orig.tar.gz
Required patch
There is an inconsistency in the Python library ‘dvbobjects‘ that prevents separate compatibility descriptors for DII message and DSM-CC, which results in a failure when processing DII messages in OAD. In order to overcome this issue and some build and installation errors that have been experienced with the source code bundle, the patch file opencaster-3.2.2-patch.txt is created. In order to apply it, execute the following command.
Apply the patch
cd opencaster-3.2.2patch -p1 <../opencaster-3.2.2-patch.txt
Build and install
sudo chmod 700 -R OpenCaster
make -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver
make install -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver
cp it950x.rules /etc/udev/rules.d/
/etc/init.d/udev restart
make -C OpenCaster/opencaster-3.2.2
make install -C OpenCaster/opencaster-3.2.2
make -C OpenCaster/tsrfsend-nosvn
make install -C OpenCaster/tsrfsend-nosvn
cd ..
[:fr]
cd OpenCaster/tar xvfz opencaster_3.2.2+dfsg.orig.tar.gz
Correctif requis
Une incohérence dans la bibliothèque Python objets dvb empêche d’avoir des descripteurs de compatibilité séparés pour le message DII et DSM-CC, ce qui entraîne un échec lors du traitement des messages DII dans OAD. Afin de surmonter ce problème et certaines erreurs de génération et d’installation rencontrées avec le lot de code source, le fichier correctif opencaster-3.2.2-patch.txt est créé. Pour l’appliquer, exécutez la commande suivante.
Appliquez le patch
cd opencaster-3.2.2patch -p1 <../opencaster-3.2.2-patch.txt
Générez et installez
sudo chmod 700 -R OpenCaster
make -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver
make install -C OpenCaster/SDK_Linux/it950x_linux_v16.11.10.1/it950x_driver
cp it950x.rules /etc/udev/rules.d/
/etc/init.d/udev restart
make -C OpenCaster/opencaster-3.2.2
make install -C OpenCaster/opencaster-3.2.2
make -C OpenCaster/tsrfsend-nosvn
make install -C OpenCaster/tsrfsend-nosvn
cd ..
[:]
[:en]
Create DVB sections of SSU carousel
[:fr]
Créez des sections DVB du carrousel SSU
[:]
[:en]
The downloaded Python script ‘generate_ssu_data.py‘ is used to create DVB sections of the carousel. Its arguments are listed below. Both decimal and hexadecimal representations can be used for integer values. There are mandatory and optional arguments of the SSU carousel:
[:fr]
Le script Python téléchargé generate_ssu_data.py est utilisé pour créer des sections DVB du carrousel. Ses arguments sont énumérés ci-dessous. Les représentations décimales et hexadécimales peuvent être utilisées pour les valeurs entières. Il existe des arguments obligatoires et facultatifs pour le carrousel SSU :
[:]
[:en]
Mandatory Parameters
[:fr]
Paramètres obligatoires
[:]
[:en]
1.OUI (Organization unique identifier)
[:fr]
1. OUI (Identificateur unique de l’organisation)
[:]
[:en]
OUI value is constant. It must be set as “0009DF”.
[:fr]
La valeur OUI est constante. Elle doit être définie comme 0009DF.
[:]
[:en]
2.Hardware model number
[:fr]
2. Numéro de modèle du matériel
[:]
[:en]
This number will NOT have an effect on update process.
[:fr]
Ce numéro n’aura PAS d’effet sur le processus de mise à jour.
[:]
[:en]
3.Software version number
[:fr]
3. Numéro de version du logiciel
[:]
[:en]
About the meaning of the software version, there is a difference between the terminology used in Vestel and the fields in SSU compatibility descriptor. The argument ‘software version numbers’ is in fact the merged values of ‘model’ and ‘version’ members of the software descriptor in hexadecimal representation, ‘model’ being the high-order word and ‘version’ being the low-order word. This effective version value should match the value of “Version” tag in DCF.
Software version number is an 8-nibble single integer representation of the software version text, which starts with the letter ‘V’ and has ‘.’ characters to separate numbers in decimals. In the hexadecimal form of the software version number, the decimal conversion of first two nibbles together is the first number in the version text. The third and the forth nibbles make up the second decimal number and so on. For example the version text for the software version number of 0x072F00AA is “V.7.47.0.170”.
[:fr]
Concernant la signification de la version du logiciel, il existe une différence entre la terminologie utilisée dans Vestel et les champs du descripteur de compatibilité SSU. L’argument « numéros de version du logiciel » représente en fait les valeurs fusionnées de « modèle » et « version » du descripteur logiciel en représentation hexadécimale, « modèle » étant le mot de poids fort et « version » le mot de poids faible. Cette valeur de version effective doit correspondre à la valeur de la balise Version balise dans DCF.
Le numéro de version du logiciel est une représentation entière unique de 8 quartets du texte de la version du logiciel, commençant par la lettre ‘V’ et utilisant des caractères ‘ . ‘ pour séparer les nombres en valeurs décimales. Sous la forme hexadécimale du numéro de version du logiciel, la conversion décimale des deux premiers quartets constitue le premier nombre dans le texte de la version. Le troisième et le quatrième quartets constituent le deuxième nombre décimal, et ainsi de suite. Par exemple, le texte de version pour le numéro de version du logiciel 0x072F00AA est « V.7.47.0.170 ».
[:]
[:en]
4.DCF (Download Control File) name
[:fr]
4. Nom DCF (fichier de contrôle de téléchargement)
[:]
[:en]
This file manages the SSU carousel. In Vestel, DCF has been historically generated by OAD tools. For more information on this, please check this page. The extension of this file is .dcf without signature at the end. The DCF name is determined as constant. It must not be changed.The constant name is 1234.dcf
DCF file includes different tags which are explained below. Note that for the tags which are not mentioned here should directly be copied to the dcf file as shown in 1234.dcf.
[:fr]
Ce fichier gère le carrousel SSU. Chez Vestel, le DCF est historiquement généré par les outils OAD. Pour plus d’informations à ce sujet, consultez cette page. L’extension de ce fichier est .dcf sans signature à la fin. Le nom DCF est déterminé sous forme de constante. Il ne doit pas être modifié. Le nom de la constante est 1234.dcf
Le fichier DCF comprend différentes balises qui sont expliquées ci-dessous. Notez que les balises qui ne sont pas mentionnées ici doivent être directement copiées dans le fichier DCF comme indiqué dans 1234.dcf.
[:]
[:en]
DCF Tags Information
[:fr]
Informations sur les balises DCF
[:]
[:en]
Mandatory Tags
Below tags should always be included.
1- Target
It is the combination of OUI and DCF in a way that “/OUI/DCF” and used to verify the target platform. Therefore it should match the platform specific oui and dcf values. In Digiguest Coax products, the oui and dcf values are determined as constant to enable different platforms file bundle update at the same time in one channel (frequency). Note that firmware update is processed in one platform at a time. In this tag, below constant value must be set.
Target=/0009df/1234.dcf
2- Version
It shows the version of the ssu carousel to be updated. The version must be greater (not equal) than the platform current firmware version. As a constraint, there is a single version mechanism which is only meaningful for the firmware update. However, it should also be set for bundle specific update. As an alternative way, the version check may be deactivated by setting 0 as a version number. It may be useful when the bundle version is checked via another way.
3- CodeSize(Byte)
This tag shows the total file size to be updated. The value must be set as bytes. It is useful for timeout specification. The reason why timeout specification is necessary is that sometimes missing packets may cause the update errors. After specified timeout is passed the update error is given and update is restarted.
Due to the timeout specification strictly based on update file size, the total size must be set correctly. Below table shows the CodeSize – Timeout relationship.
CodeSize (MB) | Timeout (second) |
< 1 | 20 |
=> 1 | 20 + 6 * (CodeSize – 1) |
As an example, assuming we need to update 5 MB data. When the packet is somehow missed during the update, it gives an update error after 44 sec and then update is restarted.
Optional Tags
Below tags may be included according to the requirements.
1- Load
This tag should be used when the firmware is included in the update. The value shows the firmware path.
2- FileBundle
This tag should be used when the file bundle is included in the update. The value shows the file bundle path.
3-RoomID
This tag is introduced to enable Software update for only particular TV(s). If DCF file does not include “RoomID” tag, then all TVs will be updated. The room ID can be added into DCF file either as the only room id of target TV (e.g. “RoomID”=12) or as the separate room IDs (“RoomID=12a,1;b,93b,120-a”). Note that different room IDs are separated with comma, therefore room IDs should not include comma by itself.
[:fr]
Balises obligatoires
Les balises ci-dessous doivent toujours être incluses.
1- Target
C’est la combinaison des valeurs OUI et DCF au format /OUI/DCF pour vérifier la plateforme cible. Par conséquent, elle doit correspondre aux valeurs OUI et DCF spécifiques à la plateforme. Dans les produits Digiguest Coax, les valeurs OUI et DCF sont déterminées comme des constantes pour permettre la mise à jour simultanée du lot de fichiers pour différentes plateformes sur une chaîne (fréquence). Notez que la mise à jour du micrologiciel est traitée une plateforme à la fois. Dans cette balise, la valeur constante ci-dessous doit être définie.
Target=/0009df/1234.dcf
2- Version
Représente la version du carrousel SSU à mettre à jour. La version doit être supérieure (non égale) à la version actuelle du micrologiciel de la plateforme. Comme contrainte, il existe un mécanisme de version unique qui n’a de sens que pour la mise à jour du micrologiciel. Cependant, il doit également être défini pour une mise à jour spécifique au lot. Alternativement, le contrôle de version peut être désactivé en définissant 0 comme numéro de version. Cela peut être utile lorsque la version du lot est vérifiée d’une autre manière.
3- CodeSize(octets)
Cette balise indique la taille totale du fichier à mettre à jour. La valeur doit être définie en octets. Elle est utile pour la spécification du délai d’attente. La raison pour laquelle la spécification du délai d’attente est nécessaire est que parfois des paquets manquants peuvent provoquer des erreurs de mise à jour. Une fois le délai spécifié dépassé, une erreur de mise à jour est signalée et la mise à jour est redémarrée.
La spécification du délai d’expiration étant strictement basée sur la taille du fichier de mise à jour, la taille totale doit être définie correctement. Le tableau ci-dessous montre la relation entre CodeSize et le délai d’expiration.
CodeSize (MB) | Délai d’expiration (secondes) |
< 1 | 20 |
=> 1 | 20 + 6 * (CodeSize – 1) |
Par exemple, supposons que nous avons besoin de mettre à jour 5 Mo de données. Lorsque le paquet manque pour une raison ou une autre lors de la mise à jour, une erreur de mise à jour est générée après 44 secondes, puis la mise à jour est redémarrée.
Balises facultatives
Les balises ci-dessous peuvent être incluses en fonction de vos besoins.
1- Load
Cette balise doit être utilisée lorsque le micrologiciel est inclus dans la mise à jour. La valeur indique le chemin du micrologiciel.
2- FileBundle
Cette balise doit être utilisée lorsque le lot de fichiers est inclus dans la mise à jour. La valeur indique le chemin du lot de fichiers.
3- RoomID
Cette balise est introduite pour activer la mise à jour du logiciel uniquement pour des téléviseurs particuliers. Si le fichier DCF n’inclut pas de balise RoomID, tous les téléviseurs sont mis à jour. Vous pouvez ajouter des identifiants de chambre au fichier DCF soit comme identifiant de chambre unique (par ex. RoomID = 12) ou en tant qu’ID de chambre séparés (RoomID=12a,1;b,93b,120-a). Notez que les différents ID de chambre sont séparés par des virgules. Par conséquent, les ID de chambre ne doivent pas inclure de virgule.
[:]
[:en]
Optional Parameters
- –hw_version: Specifies the hardware version in the SSU compatibility descriptor. Its default value is 0x0000.
- –image: Specifies the firmware image path.
- –bundle: Specifies the compressed file bundle path.
- –out: Specifies the output data (section files) directory. Default directory is datacarousel. If the directory is created previously, the contents are deleted. If not so, the directory is created.
Once all SSU modules are ready, you may create the DVB sections that will be the OAD part of the transport stream.
Example for generating SSU data
python generate_ssu_data.py 0x0009DF 0x6681 0x072F00AA 6681.dcf –image=mb110_OAD_compress_en.bin –bundle=files.zip –out=datacarousel
[:fr]
Paramètres facultatifs
- –hw_version : Spécifie la version matérielle dans le descripteur de compatibilité SSU. Sa valeur par défaut est 0x0000.
- –image : Spécifie le chemin de l’image du micrologiciel.
- –bundle : Spécifie le chemin d’accès au lot de fichiers compressés.
- –out : Spécifie le répertoire des données de sortie (fichiers de section). Le répertoire par défaut est datacarousel. Si le répertoire a déjà été créé, son contenu est supprimé. Sinon, le répertoire est créé.
Une fois que tous les modules SSU sont prêts, vous pouvez créer les sections DVB qui constitueront la partie OAD du flux de transport.
Exemple de génération de données SSU
python generate_ssu_data.py 0x0009DF 0x6681 0x072F00AA 6681.dcf –image=mb110_OAD_compress_en.bin –bundle=files.zip –out=datacarousel
[:]
[:en]
Merge carousel’s section data and convert it to a transport stream
[:fr]
Fusionnez les données de section du carrousel et convertissez-les en flux de transport
[:]
[:en]
The downloaded shell script ‘generate_ssu_carousel.sh’ is used to create the SSU transport stream. Its arguments are listed below:
- SSU section directory: Default one is “datacarousel” unless it is set with “–out” argument in the section generator script.
- PID(Packet Identifier): Constant value. It is 36 (equivalent hex value is 24).
- Padding: Currently padding is not supported and should be disabled. (Enable/Disable: 1/0)
- Mount frequency: Frequency of DSI and DII sections in the carousel. Default value is twice per carousel period. It should be higher in order to mount the carousel faster.
- DCF frequency: Frequency of the DCF’s section in the carousel. Default is once per carousel period. It should be higher in order to locate download data faster.
Example for creating SSU transport stream
./generate_ssu_carousel.sh datacarousel 36 0 80 2000
[:fr]
Le script shell téléchargé generate_ssu_carousel.sh est utilisé pour créer le flux de transport SSU. Ses arguments sont énumérés ci-dessous :
- Répertoire de la section SSU : La valeur par défaut est datacarrousel à moins que vous utilisiez l’argument -out dans le script du générateur de section.
- PID (identifiant de paquet) : Valeur constante, 36 (la valeur hexadécimale équivalente est 24).
- Remplissage : Actuellement, le remplissage n’est pas pris en charge et doit être désactivé. (Activer/Désactiver : 1/0)
- Fréquence de montage : Fréquence des sections DSI et DII dans le carrousel. La valeur par défaut est de deux fois par période de carrousel. Elle doit être plus élevée pour monter le carrousel plus rapidement.
- Fréquence DCF : Fréquence de la section du DCF dans le carrousel. La valeur par défaut est d’une fois par période de carrousel. Elle dit être plus élevée pour localiser plus rapidement les données de téléchargement.
Exemple de création de flux de transport SSU
./generate_ssu_carousel.sh datacarousel 36 0 80 2000
[:]
[:en]
Replace SSU data in a donor stream
[:fr]
Remplacer les données SSU dans un flux donneur
[:]
[:en]
The last step is to embed the carousel’s transport stream into a donor stream, which should be a previously prepared OAD stream with a PID allocated for SSU data. Possibly it already contains a software update image. Using a tool named BungItIn, the SSU data of the donor stream in a certain PID can be replaced with data from the newly generated carousel’s transport stream. Output of BungItIn is the new transport stream that contains the ZIP archive. BungItIn is a custom Windows tool that is developed by Vestel and is located here: http://svn/repos/Tools/TransportStream/transportstream/consoleUtilities/BungItIn/
BungItIn.exe –
s0x –
d0x -repeat
For more information on BungItIn, please see its page.
Like many other Windows tools, BungItIn can be executed in Linux with Wine, which is a compatibility layer for running Windows applications in Linux.
Example for executing BungItIn in Linux
wine “C:\Program Files\BungItIn\BungItIn.exe”
Michelangelo_V2.32.0.170_6681_MANGELO-5071.ts datacarousel.ts output.ts -s0x24 -d0x24 -repeat
[:fr]
La dernière étape consiste à intégrer le flux de transport du carrousel dans un flux donneur, qui doit être un flux OAD préalablement préparé avec un PID alloué pour les données SSU. Il contient peut-être déjà une image de mise à jour logicielle. À l’aide d’un outil nommé BungItIn, les données SSU du flux donneur dans un certain PID peuvent être remplacées par les données du flux de transport du carrousel nouvellement généré. La sortie de BungItIn est le nouveau flux de transport qui contient l’archive ZIP. BungItIn est un outil Windows personnalisé développé par Vestel et situé ici : http://svn/repos/Tools/TransportStream/transportstream/consoleUtilities/BungItIn/
BungItIn.exe –
s0x –
d0x -repeat
Pour plus d’informations sur BungItIn, veuillez consulter sa page.
Comme de nombreux autres outils Windows, BungItIn peut être exécuté sous Linux avec Wine, qui est une couche de compatibilité pour exécuter des applications Windows sous Linux.
Exemple d’exécution de BungItIn sous Linux
wine “C:\Program Files\BungItIn\BungItIn.exe”
Michelangelo_V2.32.0.170_6681_MANGELO-5071.ts datacarousel.ts output.ts -s0x24 -d0x24 -repeat
[:]
[:en]
Handle Key Press
[:fr]
Pression sur la touche de poignée
[:]
[:en]
KEY | Behaviour |
BACK |
|
EXIT |
|
HOME |
|
SOURCE |
|
TV |
|
DIGIT KEYS |
|
[:fr]
KEY | Comportement |
BACK |
|
EXIT |
|
HOME |
|
SOURCE |
|
TV |
|
DIGIT KEYS |
|
[:]
[:en]
Notes
[:fr]
Remarques
[:]
[:en]
- Room ID (TV ID) cloning to and from USB is disabled for Digiguest Coax.
- Packet creation and streaming are tiring processes for hard disk, we recommend you to create packages on RamDisk. All operations with OpenCaster commands (except sending the stream) can be doable on a RamDisk.
[:fr]
- Le clonage d’ID de chambre (ID TV) vers et depuis une clé USB est désactivé pour Digiguest Coax.
- La création de paquets et le streaming sont des processus intensifs pour le disque dur, nous vous recommandons donc de créer des paquets sur un disque virtuel. Toutes les opérations avec les commandes OpenCaster (sauf l’envoi du flux) peuvent être réalisées sur un disque virtuel.
[:]