<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wk.sound4.biz/index.php?action=history&amp;feed=atom&amp;title=Link_and_Share_Transmitter</id>
	<title>Link and Share Transmitter - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wk.sound4.biz/index.php?action=history&amp;feed=atom&amp;title=Link_and_Share_Transmitter"/>
	<link rel="alternate" type="text/html" href="https://wk.sound4.biz/index.php?title=Link_and_Share_Transmitter&amp;action=history"/>
	<updated>2026-11-03T22:45:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wk.sound4.biz/index.php?title=Link_and_Share_Transmitter&amp;diff=343&amp;oldid=prev</id>
		<title>Marcel at 17:10, 23 February 2021</title>
		<link rel="alternate" type="text/html" href="https://wk.sound4.biz/index.php?title=Link_and_Share_Transmitter&amp;diff=343&amp;oldid=prev"/>
		<updated>2021-02-23T17:10:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wk.sound4.biz/index.php?title=Link_and_Share_Transmitter&amp;amp;diff=343&amp;amp;oldid=77&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Marcel</name></author>
	</entry>
	<entry>
		<id>https://wk.sound4.biz/index.php?title=Link_and_Share_Transmitter&amp;diff=77&amp;oldid=prev</id>
		<title>Camille: Created page with &quot;This tool eases command sending in an automatic and recurrent way.   This interpreter reads and executes text files containing the commands to send, with also specific command...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wk.sound4.biz/index.php?title=Link_and_Share_Transmitter&amp;diff=77&amp;oldid=prev"/>
		<updated>2020-05-20T09:52:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;This tool eases command sending in an automatic and recurrent way.   This interpreter reads and executes text files containing the commands to send, with also specific command...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This tool eases command sending in an automatic and recurrent way. &lt;br /&gt;
&lt;br /&gt;
This interpreter reads and executes text files containing the commands to send, with also specific commands to configure the Links or to synchronize the commands.&lt;br /&gt;
&lt;br /&gt;
This tool has been designed to optimize the command transmission. Thus, if multiple hosts are specified in a single file, they will be controlled in parallel.&lt;br /&gt;
&lt;br /&gt;
== Specific Commands ==&lt;br /&gt;
Lines starting with # are comments and are ignored.&lt;br /&gt;
&lt;br /&gt;
Lines starting with * are commands to configure the Transmitter.&lt;br /&gt;
&lt;br /&gt;
=== *host ===&lt;br /&gt;
Selects the IP address that will be used to send following commands.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*host=192.168.0.24&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *port ===&lt;br /&gt;
Selects the TCP communication port (default is 3004 due to historical reasons. Please always use 3003 now).&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*port=3003&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *multihost ===&lt;br /&gt;
Allows to send the same script to many Processors.&lt;br /&gt;
&lt;br /&gt;
Syntax:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*multihost=&amp;lt; IPaddress&amp;gt; :&amp;lt; port &amp;gt;,&amp;lt; target &amp;gt;,&amp;lt; user &amp;gt;,&amp;lt; password &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;port is optional.&lt;br /&gt;
&lt;br /&gt;
If user and password are not specified, Login will be required in the command flow, else Login command is implicit.&lt;br /&gt;
&lt;br /&gt;
Example 1: This command will be sent to both Processors&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*multihost=192.168.4.23&lt;br /&gt;
*multihost=192.168.4.24:3003&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
Bk.Src[1]=Analog&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Example 2:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*multihost=192.168.4.23,,admin,pass1&lt;br /&gt;
*multihost=192.168.4.25,09100001,admin,pass2&lt;br /&gt;
*multihost=192.168.4.25,09110022,admin,pass3&lt;br /&gt;
Bk.Src[1]=Analog&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Will be sent to the 3 processors. Note that logins were all different on each host !&lt;br /&gt;
&lt;br /&gt;
=== *include ===&lt;br /&gt;
Used to insert the content of another file at the current file location.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*include=my_commands.s4las&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Remark:&lt;br /&gt;
&lt;br /&gt;
* if the included file was encrypted, the command is unchanged because the Link&amp;amp;Share Transmitter will automatically look for the right file to use (with s4lasx extension).&lt;br /&gt;
* if there is in a directory an encrypted file and a non encrypted file with the same name (except extension), priority is given to non encrypted file : the previous command first looks for “my_commands.s4las” non-encrypted file. If it does not exist, it will look for the “my_commands.s4lasc” non-encrypted file&lt;br /&gt;
&lt;br /&gt;
=== *loadfile ===&lt;br /&gt;
Used to load a binary file, to convert it in ASCII and affect it to a named buffer.&lt;br /&gt;
&lt;br /&gt;
Syntax:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*loadfile=&amp;lt; name &amp;gt;,&amp;lt; filename &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;The content may be called back later by starting the line with $ sign and using the buffer name surrounded with $ signs.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*loadfile=MyPreset,OnePreset.s4fm4&lt;br /&gt;
$PRESET.FORCEIMPORT=$MyPreset$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *wait ===&lt;br /&gt;
Wait for the specified time in milliseconds.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*Wait=500&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *waitfor/*event ===&lt;br /&gt;
Used for synchronization : &amp;lt;code&amp;gt;*event&amp;lt;/code&amp;gt; is used to send a named event to an host, &amp;lt;code&amp;gt;*waitfor&amp;lt;/code&amp;gt; is used on another host to wait for this event.&lt;br /&gt;
&lt;br /&gt;
Caution not to create dead-locks. Best use the &amp;lt;code&amp;gt;*rendezvou&amp;lt;/code&amp;gt;s where possible.&lt;br /&gt;
&lt;br /&gt;
Syntax:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*event=eventname&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*waitfor=eventname&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Example:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
*port=3003&lt;br /&gt;
LOGIN 06010001,admin,admin&lt;br /&gt;
*WaitFor=myevent&lt;br /&gt;
RDS.PS=Tata1&lt;br /&gt;
*host=localhost&lt;br /&gt;
*port=3003&lt;br /&gt;
LOGIN 06010002,admin,admin&lt;br /&gt;
*event=myevent&lt;br /&gt;
RDS.PS=Tata2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *rendezvous ===&lt;br /&gt;
Used to synchronize many hosts, using a “Rendez-Vous” mechanism.&lt;br /&gt;
&lt;br /&gt;
Syntax:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*rendezvous=&amp;lt; rendezvous_name &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Every host that contains this command will wait for the others. Caution, use a particular rendez-vous only once per host.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
*port=3004&lt;br /&gt;
LOGIN 06010001,Admin,admin&lt;br /&gt;
*RendezVous=myrdv&lt;br /&gt;
RDS.PS=Tata1&lt;br /&gt;
*host=localhost&lt;br /&gt;
*port=3004&lt;br /&gt;
LOGIN 06010002,Admin,admin&lt;br /&gt;
*RendezVous=myrdv&lt;br /&gt;
RDS.PS=Tata2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *savenext ===&lt;br /&gt;
Save in a variable the next command result.&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;*savenext=buffername&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Example: Request the PS (RDS Program Service name) and the RT (RDS RadioText) of a processor, and affect them to the RT of the other processor&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
*port=3004&lt;br /&gt;
LOGIN 06010001,Admin,admin&lt;br /&gt;
*SaveNext=myps&lt;br /&gt;
RDS.PS?&lt;br /&gt;
*SaveNext=myrt&lt;br /&gt;
RDS.RT?&lt;br /&gt;
*host=localhost&lt;br /&gt;
*port=3004&lt;br /&gt;
LOGIN 06010002,Admin,admin&lt;br /&gt;
$RDS.RT=$myps$ - $myrt$!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *Set ===&lt;br /&gt;
Use to affect a value to a buffer. Then the value can be recalled easily.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*set=PS_perso,My Radio&lt;br /&gt;
$RDS.PS=$PS_perso$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Command line parameters ==&lt;br /&gt;
&lt;br /&gt;
=== --version ===&lt;br /&gt;
Request the software version&lt;br /&gt;
&lt;br /&gt;
=== -- check-none ===&lt;br /&gt;
Configure the software not to verify the Servers replies. Useful for half-duplex links.&lt;br /&gt;
&lt;br /&gt;
=== -- check-full ===&lt;br /&gt;
Configure the software to verify all Servers replies, to retry in case of error, and finally to return an error code if one or many commands failed.&lt;br /&gt;
&lt;br /&gt;
=== -- check-back ===&lt;br /&gt;
Configure the software to return immediately et execute the commands in background. Errors will be visible only in the log file.&lt;br /&gt;
&lt;br /&gt;
=== --host --port --cmd ===&lt;br /&gt;
Used to send commands directly without using a command file. &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; sign replaces the “Carriage Return” (end-of-line)&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;LinkAndShareTransmitter --host=localhost --port=3003 --cmd=&amp;quot;LOGIN admin,admin^RDS.PS=My Radio&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== --crypt ===&lt;br /&gt;
Used to encrypt a file so nobody can read it. A new file is created with the same name but a different extension.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;LinkAndShareTransmitter –crypt MyFile.s4las-preset&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;This command creates an encrypted file named MyFile.s4lasc-preset.&lt;br /&gt;
&lt;br /&gt;
Remark: Link&amp;amp;Share Transmitter does not provides a way to decrypt a file.&lt;br /&gt;
&lt;br /&gt;
= Typical use examples =&lt;br /&gt;
&lt;br /&gt;
=== RadioText configuration ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
RDS.RT=My new text...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OnAir Preset Selection ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
Preset.OnAir=4B - Rock Hot # Selects OnAir Preset&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup mode Main Input configuration ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
# Force to quit Mix Mode&lt;br /&gt;
In.MixMode=0&lt;br /&gt;
# Force Backup mode&lt;br /&gt;
Bk.Src[Main]=Analog  # analog input is Main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup mode input order configuration ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
Bk.Src=Analog:Digital:PCI:IP # Inputs in this order&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copy a preset from one processor to another ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost # Source Processor&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
*SaveNext=MyVariable&lt;br /&gt;
Preset.Export=4B - Rock Hot&lt;br /&gt;
&lt;br /&gt;
*host=192.168.0.22 # Target Processor&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
$Preset.ForceImport=4B - Rock Hot,$MyVariable$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copy the OnAir preset from one processor to another ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost # Source Processor&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
# Gets the OnAir preset name&lt;br /&gt;
*savenext=PresetName&lt;br /&gt;
Preset.OnAir?&lt;br /&gt;
# Get the OnAir preset config&lt;br /&gt;
*SaveNext=BufferPreset&lt;br /&gt;
$Preset.Export=$PresetName$&lt;br /&gt;
&lt;br /&gt;
*host=192.168.0.22 # Target Processor&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
# ForceImport allows to reconfigure even if the preset&lt;br /&gt;
# is already OnAir, without renaming it&lt;br /&gt;
$Preset.ForceImport=$PresetName$,$BufferPreset$&lt;br /&gt;
# Configure the OnAir preset if it was not already OnAir&lt;br /&gt;
$Preset.OnAir=$PresetName$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Copy the RDS Program Service from one processor to two others ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=localhost  # Source processor&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
*SaveNext=MyVariable&lt;br /&gt;
RDS.PS?&lt;br /&gt;
&lt;br /&gt;
*multihost=192.168.0.22,,admin,admin&lt;br /&gt;
*multihost=192.168.0.23,,admin,admin&lt;br /&gt;
$RDS.PS=$MyVariable$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turning back an IP link ===&lt;br /&gt;
Suppose that 192.168.0.1 processor is encoding and emitting on its Link 1, and that 192.168.0.2 processor receives it on its Link 1. This script turns back the Link.&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*host=192.168.0.1&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
# Turns back Link 1&lt;br /&gt;
IP.Lk1.mode=RX&lt;br /&gt;
IP.Lk1.enable=1&lt;br /&gt;
# just in case&lt;br /&gt;
# Activate the decoder&lt;br /&gt;
IP.dec.source=Link 1&lt;br /&gt;
IP.dec.enable=1&lt;br /&gt;
# Change the Process Input to use this stream&lt;br /&gt;
Bk.Src[Main]=IP&lt;br /&gt;
# Stops the encoder&lt;br /&gt;
IP.Enc.enable=0&lt;br /&gt;
&lt;br /&gt;
*host=192.168.0.2&lt;br /&gt;
LOGIN admin,admin&lt;br /&gt;
# Change the process input before removing the source&lt;br /&gt;
Bk.Src[Main]=Analog&lt;br /&gt;
# Activate the encodur&lt;br /&gt;
IP.enc.enable=1&lt;br /&gt;
# Turns back Link 1&lt;br /&gt;
IP.Lk1.source=Encoder&lt;br /&gt;
IP.Lk1.mode=TX&lt;br /&gt;
IP.Lk1.enable=1&lt;br /&gt;
# just in case&lt;br /&gt;
# Stops the Decoder&lt;br /&gt;
IP.Dec.enable=0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Camille</name></author>
	</entry>
</feed>