aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md114
-rw-r--r--config/mod.conf244
-rw-r--r--config/mot/bbc1.txt0
-rw-r--r--config/mot/f3.txt0
-rw-r--r--config/mot/fip.txt0
-rw-r--r--config/mot/maxxima.txt0
-rw-r--r--config/mux.conf342
-rw-r--r--config/supervisor/encoder-bbc1.conf7
-rw-r--r--config/supervisor/encoder-f3.conf7
-rw-r--r--config/supervisor/encoder-fip.conf7
-rw-r--r--config/supervisor/encoder-maxxima.conf7
-rw-r--r--config/supervisor/mod.conf7
-rw-r--r--config/supervisor/mux.conf7
13 files changed, 658 insertions, 84 deletions
diff --git a/README.md b/README.md
index 95687b8..b4af718 100644
--- a/README.md
+++ b/README.md
@@ -1,108 +1,54 @@
ODR-mmbTools scripts for 24/7 operation
=======================================
+version : radioHack2016
-This repository contains a set of scripts that can be used for
-running the ODR-mmbTools in a production environment, where
-failure resilience is important.
-
-Concept
--------
-
-The scripts themselves, all located in this folder, are independent
-of the configuration of the transmission. All configuration is
-in a separate folder called 'site'. 'examplesite' contains a sample
-configuration you can adapt.
-
-These scripts assume that all programme streams to be included in
-the multiplex are mp3 webstreams. For each programme, a URL has to
-be specified.
-
-The scripts are designed to be failure-resilient: in case and encoder
-or a web-stream decoder crashes, an email is sent to the operator, a
-log message is written to syslog, and the encoding chain is restarted.
Prerequisites
-------------
-You need to have a working ODR-DabMux and ODR-DabMod configuration to
-use these scripts. Also several audio-related tools are necessary
-(mplayer, gstreamer, etc.)
+You need to have a working ODR-DabMux, ODR-DabMod, fdk-aac-dabplus and/or toolame-dab configuration to
+use these scripts. Also supervisor is now needed. (apt-get install supervisor)
-The ICY-Text to DLS script requires python.
Folder structure
----------------
-The root folder contains the scripts described below.
-
-The site/ folder contains the site configuration.
-The site/dls folder contains the files needed for communication between
-the scripts for the insertion of DLS, and the site/slide contains slides
-to be transmitted.
-
-site/configuration.sh lists all the programmes to be transmitted.
-
-site/multiplex.mux contains the ODR-DabMux configuration. site/mod.ini is used
-as configuration for ODR-DabMod.
-
-site/filtertaps.txt contains the ODR-DabMod FIRFilter taps.
+The 'config' folder contains all needed configuration file and needed to be moved into /home/odr/ folder.
-site/mail-warning.txt is either empty, if no warning mails should be sent by the
-script, or a valid email address to send the warning to.
+ * config/mod.conf : contains mod configuration
+ * config/mux.conf : contains mux configuration
+ * config/supervisor/ : contains all supervisor configuration file.
+ * config/mot/ : contains all dls and sls file. You need to create FIFO FILE with mkfifo for eatch radio (mkfifo /home/odr/config/mot/f3.pad)
-The site/dls folder must exist, and can contain default DLS text files for the
-different programmes.
-The site/slide folder is optional, and must contain one folder for each programme,
-named after its ID, into which you can place slides to be transmitted.
+About encoder and mot-encoder
+-----------------
-How to get started
-------------------
+Encoder (toolame-dab or dabplus-enc) write ICY-text into a text file. You need to create this file at first for each radio :
+ * touch /home/odr/config/mot/f3.txt
-The examplesite/ folder should be taken as a template to create a new site, it
-contains all needed files.
+mot-encoder read ICY-text information from previous text file and write into pad file. This pad file need to be a FIFO and you need to create it for each radio :
+ * mkfifo /home/odr/config/mot/f3.pad
- * Create a copy of it, and call it *site*.
- * Modify and adapt all configuration files presented above.
- * Start a GNU Screen session.
- * Launch JACK (see below)
- * Start ODR-DabMux and ODR-DabMod using *start-mux-mod.sh*
- * Start one encoder using *radio.sh ID* or all encoders with
- *launch-all-encoders.sh*
+If you use Slide Show, you can put your image into the directory under mot folder corresponding to the radio (example: /home/odr/config/mot/f3/)
-Scripts
--------
-*start-mux-mod.sh* starts ODR-DabMux and ODR-DabMod with the configuration
-given in site/multiplex.mux and site/mod.ini
-
-*radio.sh* starts one mplayer and fdk-aac-dabplus encoder for the radio
-programme whose identification is set in site/configuration.sh. This script
-will automatically restart the encoder if there is a failure.
-
-The *encode-XYZ.sh* scripts contain all the logic for failure resilience,
-and use different players to read the stream.
-
-*encode-libvlc.sh* is the newest addition: it launches an encoder using the
-integrated libVLC input that can directly connect to a web-stream. There is
-no DLS support yet.
-
-*encode-jack.sh* is the best supported script of all these. It extracts
-ICY-Text and launches the mot-encoder to insert DLS and optionally slides.
- It needs a running JACK daemon to work, which should be started with
-
- jackd -d dummy -r 32000
-
-*launch-all-encoders.sh* and *kill-all-encoders.sh* can start and stop all
-configured encoders, and are meant to be used inside a GNU Screen session. For
-each encoder, a new GNU Screen window is created.
+About supervisor
+----------------
-*icy-info.py* is a helper script that converts the webstream ICY Text into DLS
-for the mot-encoder. Do not run it directly, it is used by *encode-jack.sh*.
+You need to create sym link into /etc/supervisor/conf.d/ for eatch radio configuration file and call supervisorctl to reread and update configuration.
+Example :
+ * sudo ln -s /home/odr/config/supervisor/f3.conf /etc/supervisor/conf.d/f3.conf
+ * sudo supervisorctl reread
+ * sudo supervisorctl update
+All services are launch from supervisor.
-Additional remarks
-------------------
+To show status of all services :
+ * sudo supervisorctl status
-For a rate of 48kHz, the RATE parameters in the *encode-XYZ.sh* script must be
-changed.
+To [stop|start|restart] a service :
+ * sudo supervisorctl [stop|start|restart] service-name
+To apply change after change anything in /home/odr/config/supervisor/ file you need to call supervisor to reread and update configuration.
+ * sudo supervisorctl reread
+ * sudo supervisorctl update
diff --git a/config/mod.conf b/config/mod.conf
new file mode 100644
index 0000000..9c5cf07
--- /dev/null
+++ b/config/mod.conf
@@ -0,0 +1,244 @@
+; Sample configuration file for ODR-DabMod
+
+[remotecontrol]
+; enable the telnet remote control on localhost:2121
+; Since this is totally unsecure telnet, the software
+; will only listen on the local loopback interface.
+; To get secure remote access, use SSH port forwarding
+telnet=1
+telnetport=2121
+
+; Enable zmq remote control.
+; The zmq remote control is intended for machine-to-machine
+; integration and requires that ODR-DabMod is built with zmq support.
+; The zmq remote control may run in parallel with Telnet.
+;
+; Protocol:
+; ODR-DabMod binds a zmq rep socket so clients must connect
+; using either req or dealer socket.
+; [] denotes message part as zmq multi-part message are used for delimitation.
+; All message parts are utf-8 encoded strings and match the Telnet command set.
+; Explicit codes are denoted with "".
+; The following commands are supported:
+; REQ: ["ping"]
+; REP: ["ok"]
+;
+; REQ: ["get"][module name][parameter]
+; REP: [value] _OR_ ["fail"][error description]
+;
+; REQ: ["set"][module name][parameter][value]
+; REP: ["ok"] _OR_ ["fail"][error description]
+zmqctrl=0
+zmqctrlendpoint=tcp://127.0.0.1:9400
+
+[log]
+; Write to a logfile or to syslog.
+; Setting filename to stderr is very useful during tests and development
+syslog=0
+filelog=1
+filename=/dev/stderr
+
+[input]
+; A file or fifo input is using transport=file
+;transport=file
+;source=/dev/stdin
+
+; When the end of file is reached, it is possible to rewind it
+;loop=0
+
+; When recieving data using ZeroMQ, the source is the URI to be used
+transport=zeromq
+source=tcp://localhost:9050
+; The option max_frames_queued defines the maximum number of ETI frames
+; that can be in the input queue
+max_frames_queued=100
+
+[modulator]
+; Gain mode: 0=FIX, 1=MAX, 2=VAR
+;
+; Mode 0 (FIX) uses a fixed factor and is really not recommended. It is more
+; useful on an academic perspective for people trying to understand the DAB
+; modulation.
+;
+; Mode 1 (MAX) is the normalization of every OFDM symbol. No overshoot, no
+; truncating, but varying output power (around 3dB) which might not be the best
+; for some power amplifier. The output samples are limited to a magnitude
+; of 32768.
+;
+; Mode 2 (VAR) uses the method specified in ETSI 300 798. This method
+; normalizes to 4 times the standard deviation for an approximation of the RMS
+; power. So around 6/100000 samples will be truncated and will introduce some
+; really minor distortion. But this mode also maximizes the output power. This
+; is the gain mode recommended for real world operation as it is based on a DAB
+; standard; the only difference is that ODR-DabMod uses a better resolution
+; with 16 bits instead of 8 bits.
+gainmode=2
+
+; Transmission mode
+; If not defined, take the mode from ETI
+mode=1
+
+; The digital gain is a value that is multiplied to each sample. It is used
+; to tune the chain to make sure that no non-linearities appear up to the
+; USRP daughterboard programmable gain amplifier (PGA).
+; If there is clipping, the spectral quality of the signal will quickly deteriorate,
+; and wide-band noise will be generated.
+;
+; Be aware that there is a dependency with resampling.
+digital_gain=0.8
+
+; Output sample rate. Values other than 2048000 enable
+; resampling.
+; Warning! digital_gain settings are different if resampling
+; is enabled or not !
+rate=2048000
+
+; CIC equaliser for USRP1 and USRP2
+; Set to 0 to disable CicEqualiser
+; when set to 400000000, an additional USRP2 check is enabled.
+; See DabModulator.cpp line 186
+dac_clk_rate=0
+
+; The USRP1 does not have flexible clocking, you will need
+;rate=3200000
+; and
+;dac_clk_rate=128000000
+
+[firfilter]
+; The FIR Filter can be used to create a better spectral quality.
+; The filter taps can be calculated with the python script
+; doc/fir-filter/generate-filter.py
+enabled=0
+filtertapsfile=simple_taps.txt
+
+[output]
+; choose output: possible values: uhd, file, zmq
+output=uhd
+
+[fileoutput]
+; Two output formats are supported: In the default mode,
+; the file output writes I/Q float values (i.e. complex float)
+; to the file. The I and Q samples can take values up to
+; 100000 in absolute magnitude with gainmode FIX.
+; With gainmode VAR, they should never exceed 50000.
+; With gainmode MAX, thet are limited to 32767.
+;format=complexf
+;
+; When the format is set to s8, the output writes I/Q 8-bit
+; signed integers, where the magnitude is multiplied by 128/50000
+; effectively mapping the gainmode VAR range of -50000 -- 50000
+; to -128 -- 128. For other gainmodes, use the digital_gain setting
+; to make sure you don't create clipping.
+;format=s8
+
+; The output file:
+;filename=/dev/stdout
+
+[uhdoutput]
+; The UHD output can be directly used with the Ettus USRP devices
+;
+; You have to set master_clock_rate to a multiple of the
+; sample_rate. Ideally, it should be
+; master_clock_rate = 4 * sample_rate
+; or even a higher factor.
+;
+; Settings for a USRP B100:
+;device=
+; you can put additional UHD device settings here
+;master_clock_rate=32768000
+;type=b100
+;txgain=2.0
+; Try first with small gain values
+; Also set rate to 2048000
+
+; For the B200
+; More information and measurements available on:
+; http://wiki.opendigitalradio.org/index.php/USRP_B200_Measurements
+;
+; Settings:
+device=
+master_clock_rate=32768000
+type=b200
+txgain=40
+; The B200 needs larger gains (up to 89dB) but,
+; "Gain settings are application specific, but it is recommended that users
+; consider using at least half of the available gain to get reasonable dynamic
+; range."
+; From the B200 User Manual
+; http://files.ettus.com/uhd_docs/manual/html/usrp_b200.html
+
+
+; For the USRP1
+;device=
+;type=usrp1
+; the usrp1 can have two daughterboards, the subdevice parameter allows you
+; to choose which one to use
+;subdevice=A:0
+; The USRP1 doesn't support master_clock_rate, you need to enable resamping
+
+
+; You must specify either frequency or channel, but not both.
+;frequency=234208000
+channel=13C
+
+; The reference clock to use. The gpsdo is the ODR LEA-M8F board, the
+; official Ettus GPSDO is selected with gpsdo-ettus
+; possible values : internal, external, MIMO, gpsdo, gpsdo-ettus
+refclk_source=internal
+
+; The reference one pulse-per second to use
+; possible values : none, external, MIMO, gpsdo
+pps_source=none
+
+; Behaviour when external clock reference lock lost
+; possible values: ignore, crash
+behaviour_refclk_lock_lost=ignore
+
+; The maximum accepted holdover time for the gpsdo.
+; Valid only if the refclk and pps_source are set to gpsdo.
+; This value is also used for the initial lock check, and must
+; be at least a minute so that the GPSOD has enough time to lock
+; and to start disciplining its oscillator.
+; Units: seconds
+; Set to 0 to disable holdover check
+; default value: 0
+max_gps_holdover_time=600
+
+; section defining ZeroMQ output properties
+[zmqoutput]
+
+; on which port to listen for connections
+; please see the Transports section in man zmq
+; for more informat io the syntax
+listen=tcp://*:54001
+
+; what ZMQ socket type to use. Valid values: PUB, REP
+; Please see man zmq_socket for documentation
+socket_type=pub
+
+; Used for SFN with the UHD output
+[delaymanagement]
+
+; Enable handling of timestamps for SFN
+synchronous=0
+
+; Whether to mute the TX when incoming frames have no timestamp
+mutenotimestamps=0
+
+; This offset is added to the TIST, and the sum defines the
+; TX time of the transmission frame. It can by changed at runtime
+; through the remote control.
+offset=0.002
+
+; The previous static vs dynamic offset distinction, and reading the
+; modulatoroffset from a file has been removed.
+
+[tii]
+; (experimental)
+; If these options are set, TII transmission is enabled.
+; DAB modes I and II are supported, and must be set explicitly in
+; this file. Reading DAB mode from ETI is not supported.
+enable=0
+comb=16
+pattern=3
+
diff --git a/config/mot/bbc1.txt b/config/mot/bbc1.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/mot/bbc1.txt
diff --git a/config/mot/f3.txt b/config/mot/f3.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/mot/f3.txt
diff --git a/config/mot/fip.txt b/config/mot/fip.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/mot/fip.txt
diff --git a/config/mot/maxxima.txt b/config/mot/maxxima.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/mot/maxxima.txt
diff --git a/config/mux.conf b/config/mux.conf
new file mode 100644
index 0000000..0fec378
--- /dev/null
+++ b/config/mux.conf
@@ -0,0 +1,342 @@
+; This is the official configuration file example that
+; serves as documentation for the config file reader.
+; More information about the usage of the tools is available
+; in the guide, which can be found on the
+; www.opendigitalradio.org website.
+;
+; As you can see, comments are defined by semicolons.
+;
+; The format is called INFO format, and defined by boost property_tree:
+; http://www.boost.org/doc/libs/1_41_0/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.info_parser
+
+; It consists of six mandatory sections, whose relative order in this
+; file are of no importance.
+
+; The general section defines global multiplex parameters.
+general {
+ ; the DAB Transmission mode (values 1-4 accepted)
+ dabmode 1
+
+ ; the number of ETI frames to generate (set to 0 to get an unlimited number)
+ nbframes 0
+
+ ; boolean fileds can accept either false or true as values:
+
+ ; Enable logging to syslog
+ syslog false
+
+ ; Write the SCCA field useful for the Factum ETI analyser
+ writescca false
+
+ ; Enable timestamp definition necessary for SFN
+ ; This also enables time encoding using the MNSC.
+ tist false
+
+ ; The management server is a simple TCP server that can present
+ ; statistics data (buffers, overruns, underruns, etc)
+ ; which can then be graphed a tool like Munin
+ ; The doc/stats_dabmux_multi.py tool is a suitable
+ ; plugin for that.
+ ; If the port is zero, or the line commented, the server
+ ; is not started.
+ managementport 12720
+
+ ; FIG Carousel
+ ; Set this to true to use the new FIG carousel implementation,
+ ; which makes better usage of the FIB space.
+ new_fig_carousel false
+}
+
+remotecontrol {
+ ; enable the telnet remote control server on the given port
+ ; This server allows you to read and define parameters that
+ ; some features export. It is only accessible from localhost.
+ ; Set the port to 0 to disable the server
+ telnetport 12721
+
+ ; the remote control server makes use of the unique identifiers
+ ; for the subchannels, services and components. Make sure you
+ ; chose them so that you can identify them.
+}
+
+; Some ensemble parameters
+ensemble {
+ id 0x4fff ; you can also use decimal if you want
+ ecc 0xec ; Extended Country Code
+
+ local-time-offset auto ; autmatically calculate from system local time
+ ; or
+ ;local-time-offset 1 ; in hours, supports half-hour offsets
+
+ international-table 1 ; See TS 101 756 clause 5.7
+ ; 1 corresponds to the PTy used in RDS
+ ; 2 corresponds to program types used in north america
+
+ ; all labels are maximum 16 characters in length
+ label "TuxMux"
+ ; The short label is built from the label by erasing letters, and cannot
+ ; be longer than 8 characters. If omitted, it will be truncated from the
+ ; label
+ shortlabel "TxMux"
+
+ ; Announcement settings for FIG0/19
+ announcements {
+ test_announcement {
+ cluster 1
+ flags {
+ Traffic true
+ }
+
+ subchannel sub-f3
+ }
+ }
+}
+
+; Definition of DAB services
+services {
+ ; Each service has it's own unique identifier, that is
+ ; used throughout the configuration file and for the RC.
+ srv-f3 {
+ label "Frequence3"
+ shortlabel "F3"
+ pty 0
+ language 0
+ ; also supports id
+
+ ; List of announcement switching flags signalled in FIG 0/18
+ ; This lists all possible announcements. If one is left out, it is disabled.
+ announcements {
+ Alarm false
+ Traffic true
+ Travel false
+ Warning false
+ News false
+ Weather false
+ Event false
+ Special false
+ ProgrammeInfo false
+ Sports false
+ Finance false
+
+ ; a comma separated list of clusters in which the service belongs to
+ clusters "1,2"
+ }
+ }
+ srv-maxxima {
+ label "Maxxima"
+ }
+ srv-fip {
+ label "FIP"
+ }
+ srv-bbc1 {
+ label "BBC1"
+ }
+
+}
+
+; The subchannels are defined in the corresponding section.
+; supported types are : audio, bridge, data, enhancedpacket,
+; dabplus, dmb, packet, test
+subchannels {
+ sub-f3 {
+ type dabplus
+ inputfile "tcp://*:9001"
+ bitrate 96
+ id 1
+
+ ; type audio subchannels automatically use
+ ; UEP, unless the bitrate is 8, 16, 24, 40 or 144kbit/s
+ ; (EN 300 401 Clause 6.2.1)
+ ; this can be overridden with the option protection-profile
+ protection-profile EEP_A
+ ; supported options: UEP (use only for type audio!)
+ ; EEP_A (for all bitrates)
+ ; EEP_B (bitrates multiple of 32kbit/s)
+
+ ; Set the protection level, possible values depend
+ ; on the protection profile:
+ ; UEP profile: 1 to 5; EEP profiles: 1 to 4
+ protection 2
+ }
+ sub-maxxima {
+ type dabplus
+ inputfile "tcp://*:9002"
+ bitrate 96
+ id 2
+ protection-profile EEP_A
+ protection 2
+ }
+ sub-fip {
+ type dabplus
+ inputfile "tcp://*:9003"
+ bitrate 96
+ id 3
+ protection-profile EEP_A
+ protection 3
+
+ ; ZMQ specific options, mandatory:
+
+ ; Maximum size of input buffer, in AAC frames (24ms)
+ ; when this buffer size is reached, some frames will be
+ ; discarded to get the size again below this value.
+ ; As the present implementation discards entire AAC superframes,
+ ; (5 frames = 120ms) the effect will clearly be audible.
+ zmq-buffer 40
+
+ ; At startup or after an underrun, the buffer is filled to this
+ ; amount of AAC frames before streaming starts.
+ zmq-prebuffering 20
+ }
+
+ sub-bbc1 {
+ type audio
+ ; for audio types, you can use the ZeroMQ input (if compiled in)
+ ; with the following configuration in combination with
+ ; toolame-dab
+ ;
+ ; Support for toolame-dab is not as good as with fdk-aac-dabplus
+ inputfile "tcp://*:9004"
+ bitrate 128
+ id 4
+ protection 1
+
+ ; The options are the same as for dabplus
+ zmq-buffer 40
+ zmq-prebuffering 20
+ }
+}
+
+; For now, each component links one service to one subchannel
+components {
+ ; the component unique identifiers are used for the RC.
+ comp-f3 {
+ ; specifies audio -or- packet type, defaults to zero when not given
+ ; audio: foreground=0, background=1, multi-channel=2
+ ; data: unspecified=0, TMC=1, EWS=2, ITTS=3, paging=4, TDC=5, IP=59, MOT=60, proprietary=61
+ type 0
+
+ ; According to specification, you should not define component labels if
+ ; the service is only used in one component. The service label is sufficient
+ ; in that case.
+ ;label "Frequence3"
+ ;shortlabel "F3"
+ service srv-f3
+ subchannel sub-f3
+
+ ; for audio components, the field
+ figtype 0x2
+ ; defines the User Application Type according to TS 101 756 Table 16:
+ ; 0x2 : MOT Slideshow
+ ; 0x3 : MOT Broadcast Web Site
+ ; 0x4 : TPEG
+ ; 0x5 : DGPS
+ ; 0x6 : TMC
+ ; 0x7 : EPG
+ ; 0x8 : DAB Java
+ ; 0x44a : Journaline
+ ; If not defined, the FIG 0/13 is not transmitted for this component
+
+ ; for packet components, the fields
+ ; "user application type in FIG 0/13 for packet mode"
+ ;figtype
+ ; and the packet address (mandatory)
+ ;address
+ ; are supported, with the same syntax as in the manpage.
+ ; FIG 0/13 is only transmitted when figtype is defined.
+ ; The -d option on the command line is:
+ ;datagroup (true|false)
+ ; and defaults to false.
+ }
+
+ comp-maxxima {
+ service srv-maxxima
+ subchannel sub-maxxima
+
+ figtype 0x2
+ }
+
+ comp-fip {
+ service srv-fip
+ subchannel sub-fip
+
+ figtype 0x2
+ }
+
+ comp-bbc1 {
+ service srv-bbc1
+ subchannel sub-bcc1
+
+ figtype 0x2
+ }
+}
+
+; A list of outputs, in the format
+; unique-id "uri"
+outputs {
+ ; The unique-id has no signification. It can be used by the
+ ; remote control or the statistics server to identify the
+ ; output
+
+ ;supported output types for file and fifo outputs are
+ ; raw, framed and streamed
+ ;
+ ; Please see doc/dab_output_formats.txt
+ ;stdout "fifo:///dev/stdout?type=raw"
+
+ ; ZeroMQ output example
+ ; Listen on all interfaces, on port 9050
+ zmq "zmq+tcp://*:9050"
+
+ ; Throttle output to real-time (one ETI frame every 24ms)
+ throttle "simul://"
+
+ ; The edi output has a different syntax
+ ;edi {
+ ; ; example for unicast EDI
+ ; ;destination "192.168.23.23"
+ ; ; for unicast EDI, do not set source
+
+ ; ; example for multicast EDI, the source IP is required
+ ; ; so that the data is sent on the correct ethernet interface
+ ; destination "232.20.10.1"
+ ; source "192.168.0.50"
+ ; ; The multicast TTL has to be adapted according to your network
+ ; ttl 1
+
+ ; ; The settings below apply to both unicast and multicast
+
+ ; ; EDI uses the UDP protocol
+ ; port 12000
+ ; sourceport 13000
+
+ ; ; Enable the PFT subsystem. If false, AFPackets are sent.
+ ; enable_pft true
+
+ ; ; How many lost fragments can be recovered by Reed-Solomon
+ ; fec 2
+
+ ; ; Length of a RS chunk, can be overriden
+ ; ;default=207
+ ; ;chunk_len 207
+
+ ; ; Save the packets sent over ethernet to the file ./edi.debug
+ ; dump false
+
+ ; ; show more debugging info
+ ; verbose false
+
+ ; ; (optional) set the kind of alignment to use in TAG Packets
+ ; ; 0: no padding
+ ; ; 8: pad to eight bytes (default)
+ ; ; above 8: insert *dmy TAG Item to pad to given size in bytes
+ ; ;tagpacket_alignment 8
+ ;
+
+ ; Other outputs:
+ ; TCP listen on port
+ ;net "tcp://host:port"
+ ; UDP send to host:port
+ ;net "ucp://host:port"
+ ; RAW (for farsync ETI card)
+ ;farsync "raw://device"
+}
diff --git a/config/supervisor/encoder-bbc1.conf b/config/supervisor/encoder-bbc1.conf
new file mode 100644
index 0000000..e3e3637
--- /dev/null
+++ b/config/supervisor/encoder-bbc1.conf
@@ -0,0 +1,7 @@
+[program:encoder-bbc1]
+command=/usr/local/bin/toolame-dab -s 48 -V http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p -b 128 -W /home/odr/config/mot/bbc1.txt -p 34 -P /home/odr/config/mot/maxxima.txt tcp://127.0.0.1:9004
+autostart=false
+autorestart=true
+priority=10
+stderr_logfile=/var/log/supervisor/encoder-bbc1.log
+stdout_logfile=/var/log/supervisor/encoder-bbc1.log
diff --git a/config/supervisor/encoder-f3.conf b/config/supervisor/encoder-f3.conf
new file mode 100644
index 0000000..9fca153
--- /dev/null
+++ b/config/supervisor/encoder-f3.conf
@@ -0,0 +1,7 @@
+[program:encoder-f3]
+command=/usr/local/bin/dabplus-enc --vlc-uri=http://ice.stream.frequence3.net/frequence3-128.mp3 -b 96 -r 48000 --sbr -o tcp://127.0.0.1:9001 --pad=58 --pad-fifo=/home/odr/config/mot/f3.pad --write-icy-text=/home/odr/config/mot/f3.txt
+autostart=false
+autorestart=true
+priority=10
+stderr_logfile=/var/log/supervisor/encoder-f3.log
+stdout_logfile=/var/log/supervisor/encoder-f3.log
diff --git a/config/supervisor/encoder-fip.conf b/config/supervisor/encoder-fip.conf
new file mode 100644
index 0000000..3d91f62
--- /dev/null
+++ b/config/supervisor/encoder-fip.conf
@@ -0,0 +1,7 @@
+[program:encoder-fip]
+command=/usr/local/bin/dabplus-enc --vlc-uri=http://audio.scdn.arkena.com/11016/fip-midfi128.mp3 -b 96 -r 48000 --sbr -o tcp://127.0.0.1:9003 --pad=58 --pad-fifo=/home/odr/config/mot/fip.pad --write-icy-text=/home/odr/config/mot/fip.txt
+autostart=false
+autorestart=true
+priority=10
+stderr_logfile=/var/log/supervisor/encoder-fip.log
+stdout_logfile=/var/log/supervisor/encoder-fip.log
diff --git a/config/supervisor/encoder-maxxima.conf b/config/supervisor/encoder-maxxima.conf
new file mode 100644
index 0000000..2a8c805
--- /dev/null
+++ b/config/supervisor/encoder-maxxima.conf
@@ -0,0 +1,7 @@
+[program:encoder-maxxima]
+command=/usr/local/bin/dabplus-enc --vlc-uri=http://maxxima.mine.nu:8000/ -b 96 -r 32000 --sbr -o tcp://127.0.0.1:9002 --pad=58 --pad-fifo=/home/odr/config/mot/maxxima.pad --write-icy-text=/home/odr/config/mot/maxxima.txt
+autostart=false
+autorestart=true
+priority=10
+stderr_logfile=/var/log/supervisor/encoder-maxxima.log
+stdout_logfile=/var/log/supervisor/encoder-maxxima.log
diff --git a/config/supervisor/mod.conf b/config/supervisor/mod.conf
new file mode 100644
index 0000000..1543abe
--- /dev/null
+++ b/config/supervisor/mod.conf
@@ -0,0 +1,7 @@
+[program:mod]
+command=/usr/local/bin/odr-dabmod -C /home/odr/config/mod.conf
+autostart=false
+autorestart=true
+priority=1
+stderr_logfile=/var/log/supervisor/mod.log
+stdout_logfile=/var/log/supervisor/mod.log
diff --git a/config/supervisor/mux.conf b/config/supervisor/mux.conf
new file mode 100644
index 0000000..c4a721e
--- /dev/null
+++ b/config/supervisor/mux.conf
@@ -0,0 +1,7 @@
+[program:mux]
+command=/usr/local/bin/odr-dabmux -e /home/odr/config/mux.conf
+autostart=false
+autorestart=true
+priority=1
+stderr_logfile=/var/log/supervisor/mux.log
+stdout_logfile=/var/log/supervisor/mux.log