0% found this document useful (0 votes)
342 views50 pages

Barix Instrimer

Uopšteno o Bariks instrimeru, švicarske firme. Koristi se za slanje mp3 fajlova preko IP-a.

Uploaded by

vitez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
342 views50 pages

Barix Instrimer

Uopšteno o Bariks instrimeru, švicarske firme. Koristi se za slanje mp3 fajlova preko IP-a.

Uploaded by

vitez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

The Exstreamer Technical Documentation for Firmware Version 08.

05

EXSTREAMER

+ add TEMPERATURE. all products 0-50C except Exstreamer 0-40C, Exstreamer Gold 0-40C, HUMIDITY 0-70% relative humidity, not condensing (done
02.12.04/RS)

The Exstreamer Technical Documentation


Firmware Version 08.05
Barix AG 9/2006, all rights reserved. All information is subject
to change without notice. All mentioned trademarks belong
to their respective owners and are used for reference only.
Barix, Exstreamer, SonicIP and IPzator are trademarks of
Barix AG, Switzerland and are registered in certain countries.

Page 1

The Exstreamer Technical Documentation for Firmware Version 08.05

Table of Contents
1

SOFTWARE APPLICATION INTERFACE .................................................................................................................................... 3

1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
2
2.1
2.2
2.3
2.4
2.5

C ONTROL I NTERFACE D ESCRIPTION .................................................................................................................................................................3


C ONCATENATE C ONTROL C OMMANDS ...........................................................................................................................................................3
F ORMATS SUPPORTED ........................................................................................................................................................................................3
P RINCIPLES OF CGI WEB INTERFACE ................................................................................................................................................................4
P RINCIPLES OF SERIAL INTERFACE ....................................................................................................................................................................4
P RINCIPLES OF UDP INTERFACE ........................................................................................................................................................................4
P RINCIPLES OF TCP INTERFACE .........................................................................................................................................................................4
P RINCIPLES OF PUSHED STREAMING ...................................................................................................................................................................5
TCP TO S ERIAL AND INVERSELY (S ERIAL G ATEWAY ) .........................................................................................................................................5
C ONTROL , SERIAL, UDP, TCP AND CGI WEB INTERFACE ..........................................................................................................................6
C ONTROL C OMMANDS FOR S YNC ................................................................................................................................................................16
C ONFIGURATION VIA THE COMMAND INTERFACES ( ONLY FOR INTERNAL USE ) .............................................................................................17
IR R EMOTE C ONTROL ..................................................................................................................................................................................18
S ETUP ............................................................................................................................................................................................................19
O WN SKINS AND WEB INTERFACE .................................................................................................................................................................24
G ONG A PPLICATION ( FOR DOOR BELL ) ........................................................................................................................................................28
I DLE A PPLICATION ( STREAM DURING IDLE ) ...................................................................................................................................................28
M EMORY P AGE U SAGE ..................................................................................................................................................................................29
D YNAMIC W EB P AGE ....................................................................................................................................................................................31
T HE D YNAMIC M ARK ....................................................................................................................................................................................31
C ONFIGURATION VIA HTML P AGES .............................................................................................................................................................32
C ONFIGURATION L OGOUT ...........................................................................................................................................................................39
G REEN AND R ED LED...................................................................................................................................................................................39

ZSERVER ..................................................................................................................................................................................... 41
Z S ERVER D ISCOVERY .......................................................................................................................................................................................41
Z S ERVER . INI FILE ..............................................................................................................................................................................................43
P LAYLIST D IRECTORY ......................................................................................................................................................................................44
I NTERNET R ADIO S TATIONS ............................................................................................................................................................................44
P LAYLIST G ENERATOR .....................................................................................................................................................................................44

Page 1

The Exstreamer Technical Documentation for Firmware Version 08.05

3
3.1
3.2
3.3
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7

SPECIFICATION PLAYLISTS ...................................................................................................................................................... 45


L IST OF P LAYLISTS ...........................................................................................................................................................................................45
P LAYLIST .........................................................................................................................................................................................................46
S ONG ..............................................................................................................................................................................................................46
HARDWARE AND CONNECTORS ........................................................................................................................................... 47
E THERNET .......................................................................................................................................................................................................47
S ERIAL P ORT ...................................................................................................................................................................................................47
RTS S TATE ......................................................................................................................................................................................................47
PIO3 ( NOT FOR E XSTREAMER D IGITAL ) ..........................................................................................................................................................48
C ODEC ...........................................................................................................................................................................................................48
O THER C ONNECTORS ....................................................................................................................................................................................49
T HERMAL C HARACTERISTICS ...........................................................................................................................................................................49

Page 2

The Exstreamer Technical Documentation for Firmware Version 08.05

1 Software Application Interface


1.1

Control Interface Description

1.2

0xnn means a hexadecimal number.


means 0x0D 0x0A 0x00 on answers. On requests could be one or more of the following codes/bytes: 0x0D, 0x0A, 0x00.
The answers are only echoed to the origin source of the command (not to the other interfaces).
The answer can by selected by concatenate the L command to the command. If no special answer is requested the file ack.ack will be sent back.
The answer files can be edited and changed to your needs (see 1.15 Own skins and web interface).
The standard answers are designed as XML.
All strings and everything else are case sensitive.
All commands are asynchronous to the stream.
One command mustn't exceed 1024 bytes even it is concatenated.
Concatenate Control Commands

1.3

To concatenate control commands use &. The commands will be executed from left to right in sequence (not parallel). The must only be placed at the
end of the whole command and not after each separate command.
To start playing and set volume to 12 use: c=1&v=12
This is useful in the init sequence, in UDP commands or the define the answer. The init sequence is based on the serial command interface.
Formats supported

Streams MP3. MP3Pro files can be streamed but without the additional quality of MP3Pro.

Page 3

The Exstreamer Technical Documentation for Firmware Version 08.05

1.4

Principles of CGI WEB interface

1.5

The browser should support frames.


Use GET method in forms.
Respect the common character set for URL's.
Example for CGI WEB commands: http://x.x.x.x/rc.cgi?c=1 (command for PLAY on Exstreamer x.x.x.x)
Principles of SERIAL interface

1.6

Default settings of the serial control interface: 9600 baud, 8 data bits, 1 stop bit, no parity
Each command must be terminated with an ASCII code less than a space 0x20 (like carriage return or/and line feed).
If the command is correct and could be executed the answer OK is sent back with attached carriage return (ASCII 0x0D) and line feed (ASCII 0x0A).
ERROR with attached carriage return (ASCII 0x0D) and line feed (ASCII 0x0A) is sent back when:
- a byte is gets lost
- an invalid syntax is used
- the time between two characters exceeds 10 seconds
- the command is unknown or cant be executed
There is no time to wait between two commands or characters.
The serial connector pin out is described in chapter 4.2 Serial Port. It's the same as on a standard PC 9pol. DSub.
If IR once is used, the serial command interface can't be used anymore.
If the serial gateway functionality is used, the serial command interface can't be used anymore.
Principles of UDP interface

1.7

The standard UDP interface port for control commands is 12301.


Each command must be terminated with a ASCII 0x00, ASCII 0x0D (carriage return) or ASCII 0x0A (line feed).
If the command isn't executed busy.ack will be replied. This could happen if anything else is currently executed because UDP commands aren't stacked.
Principles of TCP interface

The standard TCP interface port for control commands is 12302.


Each command must be terminated with a ASCII 0x00, ASCII 0x0D (carriage return) or ASCII 0x0A (line feed).
The answers are the same as on the SERIAL interface.

Page 4

The Exstreamer Technical Documentation for Firmware Version 08.05

1.8

Principles of pushed streaming

1.9

The default TCP streaming port is 2020.


The default UDP streaming port is 3030.
In Exstreamer mode 0, 1 and 2 the device has to be stopped (initial state after startup) in order to receive a stream on the streaming ports. In Exstreamer
mode 4 the device is always listening on the streaming port.
Open a TCP connection to the TCP streaming port and send your MP3 file over this connection or send your file as raw UDP packets to the UDP
streaming port.
Send the raw MP3 file/stream in binary mode.
The TCP streaming port will automatically go into listen mode after the TCP connection has been closed.
Don't send another stream to the Exstreamer and don't let the Exstreamer stream from a source if a stream is sent to the UDP streaming port.
Exstreamer mode 0: if no zServer is detected and a stream is received on the streaming port, the Exstreamer mode changes automatically to mode 4 until
next startup. This means that an Exstreamer with can be used as streaming receiver after factory defaults.
Exstreamer mode 0 or 1: if the responding server answers with SYS at the beginning of its version string, the Exstreamer mode changes automatically to
mode 4 until next startup.
The streaming buffer (receiving buffer) is 32 kByte. The parameter Start Threshold defines after how many received bytes the Exstreamer will start
playing. In order to start the stream earlier, the PLAY command can be sent. If the stream is stated to early, it could be that the Exstreamer is running out
of data if the network connection is not reliable enough.
If the streaming buffer runs out of data the Exstreamer stops playing. It will start again after the Start Threshold is reached.
If another stream should immediately be sent even though a stream is playing already, don't close the TCP connection. Simply send the command
FLUSHBUF.
TCP to Serial and inversely (Serial Gateway)

Open a TCP connection to the local port (default 12302).


The serial port parameters can be set in the configuration.
Each byte transmitted to this TCP port is sent to the serial port.
Each byte received on the serial port is sent to this TCP port.
Only one TCP port at once can be used.
As long as this TCP port is open the serial command interface is disabled.
If IR functionality is once used (for receiving and/or transmitting), don't use the serial gateway without resetting the device .

Page 5

The Exstreamer Technical Documentation for Firmware Version 08.05

1.10 Control, SERIAL, UDP, TCP and CGI WEB interface


Element
ANSWERS

PLAY

STOP
PAUSE
NEXTSONG
PREVSONG

SHUFFLEON

SHUFFLEOFF

MUTE

LOUDNESSON

Description
Standard answer file ack.ack will be sent if nothing else is specified with
the L command. The file nosupport.ack will be sent on an unknown
command.
To change the answer concatenate the command GETDYNFILE and
chose the needed answer file (that's to build up the same answers of the
old Exstreamer versions below 6.00).
ex. set volume: v=4&L=volume.ack
ex. get state of CTS: L=getcts.ack (this is the replacement of all old get
commands)
If no playlist is selected, first song of first playlist will play.
If state is pause, song will continue.
If state is play, nothing happens.
After startup the device is in STOP mode.
If state is play or pause, playing will stop
otherwise nothing happens.
If state is play, playing will stop.
If state is pause, play will continue.
If no playlist is selected, first song of first playlist will play.
If state is play, next song starts playing (in sequence or random order).
If no playlist is selected, first song of last playlist will play.
If state is play, current song restarts playing.
If state is play and this command is sent two times in 2 seconds previous
song starts playing (only if shuffle off).
NEXTSONG selects song in actual playlist in random order.
If shuffle is pressed during PLAY, the current song will be played to the
end and the next song will be chosen in random order.
NEXTSONG, PREVSONG selected in sequential order.
If shuffle off is pressed during PLAY, the current song will be played to
the end the next song will be played in order
Toggle between mute and volume.
MUTE stores the last volume and resets to this value on turn on volume.
VOLUMEINC, VOLUMEDEC, VOLUME > 0 as well as FORCEMUTEOFF
unmutes the device.
Turn on loudness.

CGI command
SERIAL, TCP or UDP command
see the files in 1.15 Own skins and web interface

c=1

0x63 0x3D 0x31 0x00(c=1)

c=2

0x63 0x3D 0x32 0x00 (c=2)

c=3

0x63 0x3D 0x33 0x00 (c=3)

c=4

0x63 0x3D 0x34 0x00 (c=4)

c=5

0x63 0x3D 0x35 0x00 (c=5)

c=6

0x63 0x3D 0x36 0x00 (c=6)

c=7

0x63 0x3D 0x37 0x00 (c=7)

c=8

0x63 0x3D 0x38 0x00 (c=8)

c=9

0x63 0x3D 0x39 0x00 (c=9)

Page 6

The Exstreamer Technical Documentation for Firmware Version 08.05


LOUDNESSOFF
VOLUMELOCK
VOLUMEUNLOCK
SETASDEFAULT
FACTORYDEFAULTS
NEXTPLAYLIST

PREVPLAYLIST

FASTFORWARD
FASTREWIND
VOLUMEINC
VOLUMEDEC
BALANCERIGHT
BALANCELEFT
BASSINC
BASSDEC
TREBLEINC
TREBLEDEC
SERIALBIN
LINEIN
MICIN
SHUFFLE

GETPLAYLISTS

Turn off loudness.


After this command the volume cant be changed until you unlock it.
Unlock volume.
Store current values (volume, volume lock, mute, balance, bass, treble,
loudness level, loudness on, shuffle, repeat) as default on startup.
Set factory default values for the current runtime configuration.
Select next playlist. If currently no playlist is selected, first playlist will be
chosen. For streaming listener and puller it selects next RTP port in the
default.m3u (or custom.m3u if present) file. If it runs out of the lines, it
starts with the first one again. If there's neither default.m3u or
custom.m3u, it doesn't do anything.
Select previous playlist. If currently no playlist is selected, last playlist will
be chosen. For streaming listener and puller it selects previous RTP port
in the default.m3u (or custom.m3u if present) file. If there is no previous
port in the file, it selects the first port. If there's neither default.m3u or
custom.m3u, it doesn't do anything.
Fasten the stream approx. two times until a new song is played or the
commands PLAY, STOP or an other time FASTFORWARD.
not yet implemented.
Increment volume one step.
Decrement volume one step.
Set balance one step more to right.
Set balance one step more to left.
Increment bass level one step.
Decrement bass level one step.
Increment treble level one step.
Decrement treble level one step.
Select Serial B as input source (digital MP3 data).
Select Line In as input.
Select Mic In as input.
Toggle between SHUFFLEON and SHUFFLEOFF.
The commands c=31 until c=38 aren't implemented. Use the files in 1.15
Own skins and web interface with the command GETDYNFILE as
replacement of the command set of the Exstreamer versions below 6.00.
Transmit list of playlists to caller.
Don't use it with the UDP command interface.

c=10
c=11
c=12
c=13

0x63 0x3D 0x31 0x30 0x00 (c=10)


0x63 0x3D 0x31 0x31 0x00 (c=11)
0x63 0x3D 0x31 0x32 0x00 (c=12)
0x63 0x3D 0x31 0x33 0x00 (c=13)

c=14
c=15

0x63 0x3D 0x31 0x34 0x00 (c=14)


0x63 0x3D 0x31 0x35 0x00 (c=15)

c=16

0x63 0x3D 0x31 0x36 0x00 (c=16)

c=17

0x63 0x3D 0x31 0x37 0x00 (c=17)

c=18
c=19
c=20
c=21
c=22
c=23
c=24
c=25
c=26
c=27
c=28
c=29
c=30

0x63 0x3D 0x31 0x38 0x00 (c=18)


0x63 0x3D 0x31 0x39 0x00 (c=19)
0x63 0x3D 0x32 0x30 0x00 (c=20)
0x63 0x3D 0x32 0x31 0x00 (c=21)
0x63 0x3D 0x32 0x32 0x00 (c=22)
0x63 0x3D 0x32 0x33 0x00 (c=23)
0x63 0x3D 0x32 0x34 0x00 (c=24)
0x63 0x3D 0x32 0x35 0x00 (c=25)
0x63 0x3D 0x32 0x36 0x00 (c=26)
0x63 0x3D 0x32 0x37 0x00 (c=27)
0x63 0x3D 0x32 0x38 0x00 (c=28)
0x63 0x3D 0x32 0x39 0x00 (c=29)
0x63 0x3D 0x33 0x30 0x00 (c=30)

L=getplaylists.ack
(old c=31)

L=getplaylists.ack

Page 7

The Exstreamer Technical Documentation for Firmware Version 08.05


GETACTPLAYLIST

GETACTPLAYLISTNAME

Transmit contents of actual playlist to caller.


(Replacement for c=32_17 is p=17&L= getactplaylist.ack)
Don't use it with the UDP command interface.
Transmit actual playlist name to caller.
(Replacement for c=33_17 is p=17&L= getactplaylistname.ack)

GETSONGPATH

Transmit actual song path to caller.

GETSONGNAME

Transmit actual song name to caller.

RECSTART
RECSTOP
RECSTATE
FORCEPAUSE
FORCEMUTEON
FORCEMUTEOFF
LOUDNESSINC
LOUDNESSDEC
FLUSHBUF
PRGFEEDBACKON

start recording of internet radio on zServer (not implemented yet)


stop recording of internet radio on zServer (not implemented yet)
get recording state of internet radio (not implemented yet)
playing will stop (no toggle)
mute on forced (no toggle), details see MUTE command
mute off forced (no toggle)
Increment loudness one step.
Decrement loudness one step.
Flushes the streaming buffer (without closing TCP connection)
Progress feedback on
Sends back every second in the TCP stream connection (not on the TCP
command interface) the actual streamed byte counter terminated by a
0x0D 0x0A. The decimal byte counter (unsigned long) starts at 0 with
each new stream. This command turns off the second feedback in the
TCP stream.
Progress feedback off (see PRGFEEDBACKON)
Turns off all progress feedbacks and resets the seconds and byte counter.
Set output to stereo
Set output to mono
Set output to bridge mode. This makes sense only for the line out.. This
will be achieved by set the output to mono and invert the right channel.
Disables repeat.
Repeats the actual song forever.
Repeats the actual playlist forever.

PRGFEEDBACKOFF
STEREOOUT
MONOOUT
BRIDGEOUT
REPEATOFF
REPEATSONG
REPEATPLAYLIST

L=getactplaylist.ack
(old c=32)

L=getactplaylist.ack

L=getactplaylistname.ack L=getactplaylistname.ack
(old c=33)
L=getsongpath.ack
(old c=34)
L=getsong.ack
(old c=35)
c=36
c=37
c=38
c=39
c=40
c=41
c=42
c=43
c=44
c=45

L=getsongpath.ack

c=46

0x63 0x3D 0x34 0x36 0x00 (c=46)

c=47
c=48
c=49

0x63 0x3D 0x34 0x37 0x00 (c=47)


0x63 0x3D 0x34 0x38 0x00 (c=48)
0x63 0x3D 0x34 0x39 0x00 (c=49)

c=50
c=51
c=52

0x63 0x3D 0x35 0x30 0x00 (c=50)


0x63 0x3D 0x35 0x31 0x00 (c=51)
0x63 0x3D 0x35 0x32 0x00 (c=52)

L=getsong.ack

0x63 0x3D 0x33 0x39 0x00 (c=39)


0x63 0x3D 0x34 0x30 0x00 (c=40)
0x63 0x3D 0x34 0x31 0x01 (c=41)
0x63 0x3D 0x34 0x32 0x00 (c=42)
0x63 0x3D 0x34 0x32 0x00 (c=43)
0x63 0x3D 0x34 0x34 0x00 (c=44)
0x63 0x3D 0x34 0x35 0x00 (c=45)

Page 8

The Exstreamer Technical Documentation for Firmware Version 08.05


PRGFEEDBUDPSEC

PRGFEEDBUDPBYTE

PRGFEEDBSERSEC

PRGFEEDBSERBYTE

PRGFEEDBTCPSEC

PITCHINC
PITCHDEC
SETRTS
RESETRTS

RESETLASTCTS
PRGFEEDBCTCPSEC

Progress feedback in seconds


Every second a broadcast packet in the subnet is sent to the UDP
command port as destination port with the elapsed seconds (decimal
unsigned long) of the actual song (remains empty until first data
received). Use PRGFEEDBACKOFF to stop the feedback.
The periodical answer is the file fbsec.ack.
If no UPD command port is set this feature will not work.
Progress feedback in bytes
Every second a broadcast packet in the subnet is sent to the UDP
command port as destination port. Use PRGFEEDBACKOFF to stop the
feedback.
The periodical answer is the same as for PRGFEEDBACKON.
If no UPD command port is set this feature will not work.
Progress feedback in seconds
Every second a packet is sent to the serial port (answer see
PRGFEEDBUDPSEC).
Progress feedback in bytes
Every second a packet is sent to the serial port (answer see
PRGFEEDBUDPBYTE).
Progress feedback on
Sends every second in the TCP stream (not on the TCP command
interface) the elapsed seconds (decimal unsigned long) of the actual song
terminated by a 0x0D 0x0A. This command turns off the byte feedback
in the TCP stream.
Increment pitch level one step.
Decrement pitch level one step.
Sets output RTS to logic 1 (-12V)
Set the parameter RTS usage to off first.
Sets output RTS to logic 0 (+12V)
Set the parameter RTS usage to off first.
The commands c=62 and c=63 aren't implemented. Use the files in 1.15
Own skins and web interface with the command GETDYNFILE as
replacement of the command set of the Exstreamer versions below 6.00.
Resets last state of CTS.
Progress feedback in seconds
Every second a packet is sent to the TCP command interface.
(answer see PRGFEEDBUDPSEC)

c=53

0x63 0x3D 0x35 0x33 0x00 (c=53)

c=54

0x63 0x3D 0x35 0x34 0x00 (c=54)

c=55

0x63 0x3D 0x35 0x35 0x00 (c=55)

c=56

0x63 0x3D 0x35 0x36 0x00 (c=56)

c=57

0x63 0x3D 0x35 0x37 0x00 (c=57)

c=58
c=59
c=60

0x63 0x3D 0x35 0x38 0x00 (c=58)


0x63 0x3D 0x35 0x39 0x00 (c=59)
0x63 0x3D 0x36 0x30 0x00 (c=60)

c=61

0x63 0x3D 0x36 0x31 0x00 (c=61)

c=64
c=65

0x63 0x3D 0x36 0x34 0x00 (c=64)


0x63 0x3D 0x36 0x35 0x00 (c=65)

Page 9

The Exstreamer Technical Documentation for Firmware Version 08.05


PRGFEEDBCTYPBYTE

RESETLASTPIO

STATEFEEDBKUDPON

STATEFEEDBKSERON
STATEFEEDBKTCPON
STATEFEEDBKOFF
REPEAT
VOLLOCKTOGGLE
LOUDNESSTOGGLE
DEFAULTS

GETNEWPLAYLISTS
DETECTZSERVER
DEVICERESET
BOOTLOADER
DISCOVER
PASSWORD

Progress feedback in bytes


Every second a packet is sent to the TCP command interface.
(answer see PRGFEEDBUDBYTE)
The commands c=67 and c=68 aren't implemented. Use the files in 1.15
Own skins and web interface with the command GETDYNFILE as
replacement of the command set of the Exstreamer versions below 6.00.
Resets last state of PIO (see 4.4 PIO3 (not for Exstreamer Digital)).
The commands c=70 until c=72 aren't implemented. Use the files in 1.15
Own skins and web interface with the command GETDYNFILE as
replacement of the command set of the Exstreamer versions below 6.00.
Enables automatic state feedback (on change of song, shuffle, progress
feedback, repeat, volume, volume lock, mute, loudness, balance, bass,
treble)on the UDP command interface. The answer is the file
getstate.ack.
Enables automatic state feedback on the serial port (see
STATEFEEDBKUDPON).
Enables automatic state feedback on the TCP command interface (see
STATEFEEDBKUDPON).
Disables automatic state feedback on all interfaces.
Toggles between REPEATSONG, REPEATPLAYLIST, REPEATOFF
Toggles between VOLUMELOCK and VOLUMEUNLOCK
Toggles between LOUDNESSON and LOUDNESSOFF
Set factory defaults without the network settings (without own IP,
Gateway, Netmask, DNS, WLAN mode, WLAN name, WEP mode, WEP
key and SonicIP) and reboots the device.
The commands c=81 until c=96 aren't implemented.
Rereads the playlists from the zServer starting with playlist number 0 into
the playlist buffer.
Rediscover the zServer.
Hard reboot of device.
Starts the bootloader. The application will be left. It isn't running until the
next reboot.
If this command is received the device answers with the file discover.ack.

c=66

0x63 0x3D 0x65 0x36 0x00 (c=66)

c=69

0x63 0x3D 0x36 0x39 0x00 (c=69)

c=73

0x63 0x3D 0x37 0x33 0x00 (c=73)

c=74

0x63 0x3D 0x37 0x34 0x00 (c=74)

c=75

0x63 0x3D 0x37 0x35 0x00 (c=75)

c=76
c=77
c=78
c=79
c=80

0x63 0x3D 0x37 0x36 0x00 (c=76)


0x63 0x3D 0x37 0x37 0x00 (c=77)
0x63 0x3D 0x37 0x38 0x00 (c=78)
0x63 0x3D 0x37 0x39 0x00 (c=79)
0x63 0x3D 0x38 0x30 0x00 (c=80)

c=97

0x63 0x3D 0x39 0x37 0x00 (c=97)

c=98
c=99
c=100

0x63 0x3D 0x39 0x38 0x00 (c=98)


0x63 0x3D 0x39 0x39 0x00 (c=99)
0x63 0x3D 0x31 0x30 0x30 0x00 (c=100)

c=65535

0x63 0x3D 0x36 0x35 0x35 0x33 0x35 0x00


(c=65535)
0x61 0x3D 0x00 (a=)

Concatenate this command to the rest of the command sequence if the


a=
command interface is password (level 3) protected. The password has to
be added in plain text.

Page 10

The Exstreamer Technical Documentation for Firmware Version 08.05


BALANCEL10
BALANCEL09
--BALANCE00
--BALANCER09
BALANCER10

BASSM10
BASSM09
--BASSP00
--BASSP09
BASSP10

CONFIG
PITCHP100
PITCHP099
--PITCH000
--PITCHM69
PITCHM70

Set balance to left (right off).


Set balance to level 9 on left side.
Set balance to middle.
Set balance to level 9 on right side.
Set balance to right (left off).
Corresponding values sent to the codec for 0..10:
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2E, 0x7E
(corresponding neg. value for the other side)
Set minimal bass level.
Set bass level to -9.
Set neutral bass level.
Set bass level to 9.
Set maximal bass level.
Corresponding values sent to the codec for 0..10:
0x00, 0x09, 0x13, 0x1D, 0x26, 0x30, 0x3A, 0x43, 0x4D, 0x56, 0x5B,
0x60 (corresponding neg. value for neg. bass)
Configuration commands via the normal CGI WEB command interface.
Append the setup elements to this command. (see 1.12)
Set maximal pitch level (+10%).
Set pitch level to 9.9%.
Set neutral pitch level (0%).
Set pitch level to -9.9%.
Set minimal pitch level (-10%).
Value sent to the codec = 4800 + ((pitch/100) * pitch);

b=L10
b=L9
--b=L0
--b=R9
b=R10

0x62 0x3D 0x4C 0x31 0x30 0x00 (b=L10)


0x62 0x3D 0x4C 0x39 0x00 (b=L9)
--0x62 0x3D 0x4C 0x30 0x00 (b=L0)
--0x62 0x3D 0x52 0x39 0x00 (b=R9)
0x62 0x3D 0x52 0x31 0x30 0x00 (b=R10)

B=-10
B=-9
--B=+0 or B=0
--B=+9 or B=9
B=+10 or B=10

0x42 0x3D 0x2D 0x31 0x30 0x00 (B=-10)


0x42 0x3D 0x2D 0x39 0x00 (B=-9)
--0x42 0x3D 0x2B 0x30 0x00 (B=+0)
--0x42 0x3D 0x2B 0x39 0x00 (B=+9)
0x42 0x3D 0x2B 0x31 0x30 0x00 (B=+10)

C=

0x43 0x3d 0x00 (C=)

i=+100 or i=100
i=+99 or i=99
--i=+0 or i=0
--i=-69
i=-70

0x69 0x3D 0x31 0x30 0x30 0x00 (i=100)


0x69 0x3D 0x39 0x39 0x00 (i=-99)
--0x69 0x3D 0x30 0x00 (i=0)
--0x69 0x3D 0x2D 0x36 0x39 0x00 (i=-69)
0x69 0x3D 0x2D 0x37 0x30 0x00 (i=-70)

Page 11

The Exstreamer Technical Documentation for Firmware Version 08.05


SENDIR

Transmit an IR command.
This command is word organized (2 bytes, high byte first). The words
can be separated by a comma (no spaces). The word is interpreted as a
hexadecimal value.
The first word is the selection for the following IR command. It is
organized in bits.
Low Byte:
0x01 = SONY IR modulation
0x02 = RC 5 IR modulation
0x04 = NEC IR modulation
0x80 = RAW IR modulation
Bit 8-14:
0 for base band
1 for 37.5 kHz modulation frequency
2 for 60 kHz modulation frequency
Bit 15: 0 for transmit on serial port 0 (Serial IR Dongle)
1 for transmit on IR OUT (Exstreamer Digital only)
Example: 8102 for RC 5 IR modulation with 37.5 kHz on IR OUT.

j=

0x70 0x3D 0x00 (j=)

The following word are depended of the IR modulation:


SONY IR: Add the bits (0 or 1) to transmit starting with the first bit sent
to IR as nibbles of the words in the IR command. If the count of bits is
odd than add an f to have it even. The sync and end of transmission bits
mustn't be added.
Example: j=0101,1010001001010f
RC 5: see SONY IR
Example: j=0102,10001001010f
NEC: Add the bytes to transmit starting with the first byte to sent. The
bits inside the byte will be swapped inside this function for the
transmission of the LSB first on IR.
Example: j=0104,00FE7887
RAW: The first word after the selection word, is the active 1 (IR on)
time in 100 us. The second word is the active 0 (IR off) time in 100 us.
The next is again for active 1 and so on until a word has the value 0000.
This is to build every possible IR command.
Example: j=0180,0018,0004,000c,0008,0000

Page 12

The Exstreamer Technical Documentation for Firmware Version 08.05


LOUDNESS00
LOUDNESS01
--LOUDNESS20

GETDYNFILE

PLAYROMSONG
PLAYLISTSCOUNTTO
BUF

PLAYLISTSCHARTO BUF

VIEWPLAYLIST

PLAYPLAYLIST

Set minimal loudness level.


Set loudness level 1.
Set maximal loudness level.
Corresponding values sent to the codec for 0..20:
0, 3, 6, 9, 12, 15, 18, 21, 24, 27 ,30, 33, 36, 39, 42, 46, 50, 56, 60, 64, 68
The response is the dynamic file stored in a cob file (see 1.15 Own skins
and web interface) with that name.
Example: L=getstate.ack
Plays a song out of a flash page embedded in a web application.
Gets the buffer block of the playlists where the selected number is
included from zServer and stores it to the playlists buffer. This counter is
the global counter of all playlists available. The buffer can only store 4
kBytes of playlist names. If there are more playlists than there is space in
the playlists buffer you can load the desired block by specifying a playlist
number within the block with this command.
Gets the playlists starting with selected character from zServer and
stores it to playlists buffer until all playlists are read or the buffer is full. If
the character isn't available the next one will be taken.
Selection to view a playlist (see PLAYPLAYLIST).

l=0
l=1
--l=20

0x6C 0x3D 0x30 0x00 (l=0)


0x6C 0x3D 0x31 0x00 (l=1)
--0x6C 0x3D 0x32 0x30 0x00 (l=20)

L=

0x4C 0x3D 0x00 (L=)

m=
n=1
--n=65535

0x6D 0x3D (m=)


0x6E 0x3D 0x31 0x00 (n=1)
--0x6E 0x3D 0x36 0x35 0x35 0x33 0x35 0x00
(n=65535)

N=A
--N=Z
p=1
--p=65535

0x4E 0x3D 0x41 0x00 (N=A)


--0x4E 0x3D 0x5A 0x00 (N=Z)
0x70 0x3D 0x31 0x00 (p=1)
--0x70 0x3D 0x36 0x35 0x35 0x33 0x35 0x00
(p=65535)
0x50 0x3D 0x31 0x00 (P=1)
--0x50 0x3D 0x36 0x35 0x35 0x33 0x35 0x00
(P=65535)
0x50 0x3D 0x68 0x74 0x74 0x70 0x3A
0x2F 0x2F
(P=http:// )

Selection for playing a playlist. First song of playlist will play immediately.
Playlists are numbered in sequence from 1 to max. 65535, even if there
are more playlists than space is in the playlists buffer (4 kBytes). (see
PLAYLISTSCOUNTTOBUF)

P=1
--P=65535

Direct playing of a playlist from any web server. Give a URL after P= to
let the device get and play this playlist (m3u) from a web server with a
HTTP GET command.

P=http://

In streaming puller and listener mode this selects RTP ports in


default.m3u (or custom.m3u) file. P=1 selects the number on the first line
etc. If the number supplied is too high, first line is selected instead. If
there is neither default.m3u not custom.m3u, it doesn't do anything.

Page 13

The Exstreamer Technical Documentation for Firmware Version 08.05


SENDUDPSTRING

Send a command string in an UDP packet


Syntax: r=[<prot>://] <ip>[:<port>]/<cmd>
<prot> = udp
<cmd> = [<param>]{&<cmd>}
If no <prot> is defined then UDP is used.

r=

0x72 0x3D (r=)

S=1
--S=999
S=http://

0x53 0x3D 0x31 0x00 (S=1)


--0x53 0x3D 0x39 0x39 0x39 0x00 (S=999)
0x53 0x3D 0x68 0x74 0x74 0x70 0x3A
0x2F 0x2F
(S=http:// )

S=udp://

0x53 0x3D 0x 0x75 0x64 0x70 0x3A 0x2F


0x2F
(S=udp:// )

t=-10
t=-9
--t=+0 or t=0
--t=+9 or t=9
t=+10 or t=10

0x74 0x3D 0x2D 0x31 0x30 0x00 (t=-10)


0x74 0x3D 0x2D 0x39 0x00 (t=-9)
--0x74 0x3D 0x2B 0x30 0x00 (t=+0)
--0x74 0x3D 0x2B 0x39 0x00 (t=+9)
0x74 0x3D 0x2B 0x31 0x30 0x00 (t=+10)

If no <port> is defined then the UDP command port is used

PLAYSONG

Example: r=udp://192.168.0.22:12301/v=2 is the same as


r=192.168.0.22:12301/v=2 or
r=192.168.0.22/v=2
Direct selection of a song in a playlist. Songs are numbered in sequence
started with 1.
Direct playing of a song from any web server. Give a URL after S= to let
the device get this song from a web server with a HTTP GET command.

TREBLEM10
TREBLEM09
--TREBLEP00
--TREBLEP09
TREBLEP10

Connect to a raw UDP MP3 stream using the UDP start threshold for
start streaming.
Syntax: S=udp://<ip>:<port>
<ip> = 0.0.0.0 connects to the stream received on the <port> and then
accepts only packets from the sender (IP) of the first received packet
<ip> = 255.255.255.255 connects to the stream received on the <port>
and accepts packets from any IP address
<ip> = anything else connects to the stream received on the <port> and
accepts only packets from <ip>
<port> = 0 or C_STOP disconnects from the UDP stream
Set minimal treble level.
Set treble level to -9.
Set neutral treble level.
Set treble level to 9.
Set maximal treble level.
Corresponding values sent to the codec for 0..10:
0x00, 0x09, 0x13, 0x1D, 0x26, 0x30, 0x3A, 0x43, 0x4D, 0x56, 0x5B,
0x60 (corresponding neg. value for neg. treble)

Page 14

The Exstreamer Technical Documentation for Firmware Version 08.05


SENDTCPSTRING
VOLUME00
VOLUME01
--VOLUME20

Sends the attached string through the TCP interface. The answer will be
the string itself.
Set minimal volume level (volume off).
Set volume level 1.
Set maximal volume level.
Corresponding values sent to the codec for 0..20:
0, 76, 80, 84, 88, 92, 96, 99, 102, 106, 108, 110, 112, 114, 116, 118, 120,
124, 125, 126, 127
One step is showed as 5%. The level 0 equals the 0%.

T=

0x53 0x3D (T=)

v=0
v=1
--v=20

0x76 0x3D 0x30 0x00 (v=0)


0x76 0x3D 0x31 0x00 (v=1)
--0x76 0x3D 0x32 0x30 0x00 (v=20)

Page 15

The Exstreamer Technical Documentation for Firmware Version 08.05

1.11 Control Commands for Sync


Element
SYNC

SYNCEND

Description
This command synchronizes an Exstreamer as slave to another Exstreamer
which then will be the master.
IP:
IP address of the master Exstreamer (ex. 192.168.2.50)
PORT: Sync port of the master Exstreamer (ex. 20562). This port can be
calculated but normally it should be taken form the answer of the
DISCOVER command. The formula is:
20000 + (second to last byte of IP bit and 0x0F) x 256 + last byte
of IP
(ex. 20000 + (2 x 256) + 50 = 20562)
If the port isn't set the Exstreamer tries to figure out by itself via
a DISCOVER command on the UDP command port. (ex. use
s=<IP> for a simple sync to that master.
NAME: Name of the master Exstreamer (ex. Master). It can be taken
from the answer of the DISCOVER command. This parameter is
optional.
This command without any parameter (s=) synchronizes to the first
detected sync stream.

CGI command
SERIAL, TCP or UDP command
s=<IP>&port=<P 0x73 0x3D 0x00 (s=)
ORT>&name=<N
AME>

Connect to a raw UDP MP3. For the syntax and functionality see command
s=udp://
PLAYSONG. The difference is that a broadcast UDP packet with length 0
will be sent that causes all connected receivers (connected with this
command) to reconnect to the UDP stream for synchronisation. All
receivers will fill up their buffer simultaneously and then they will start at
the same time in case that the UDP start threshold of all receivers is set to
the same value. This behaviour is audible by a short break in the audio each
time a new receiver is connecting. The timing difference is only the
network delay.
Finish the current synchronized connection to the master.
c=103

0x73 0x3D 0x 0x75 0x64 0x70 0x3A 0x2F 0x2F

(s=udp:// )

0x63 0x3D 0x31 0x30 0x33 0x00 (c=103)

Page 16

The Exstreamer Technical Documentation for Firmware Version 08.05

1.12 Configuration via the command interfaces (only for internal use)
The difference between the command and the configuration interface is only the used prefix setup.cgi instead of rc.cgi for cgi web interface.
Element
SETCONFIG

GETCONFIG

Description
Sets the configuration
The expected string is exactly the one the HTML browser generates for
the used forms for the configuration. (L= see GETDYNFILE)
(see table in chapter 1.21 Configuration via HTML Pages for the names)
The device will respond with HTTP status 200 OK and if referenced with
the optional <file>. Then it will reboot.
Examples for set the IP address to 192.168.1.22:
for Serial, TCP or UDP: C=L=&B0=192&B1=168&B2=1&B3=22
for cgi: setup.cgi?L=uinetwork.html&B0=192&B1=168&B2=1&B3=22
or rc.cgi?C=L=uinetwork.html&B0=192&B1=168&B2=1&B3=22
Gets the configuration
See the file getconfig.ack for the answer.

CGI command
L=[<file>]&

SERIAL, TCP or UDP command


0x43 0x3D 0x4C (C=L=)

L=getconfig.ack

(L=getconfig.ack)

Page 17

The Exstreamer Technical Documentation for Firmware Version 08.05

1.13 IR Remote Control


The commands on each button of the Remote Control can be user defined. In order to do this use the Exstreamer App Development Kit (see 1.15 Own skins and
web interface). The remote.ini file in the development kit contains the commands for each button. Every line is for one button. The file format is comma-separated
and the values are case-sensitive. Don't write spaces between the separation.
The 1st field is the IR remote control command (ex. 'NE: 00FE7887' for the play button) received from the remote control. To figure out the exact command
for a button you can open the status web page on the Exstreamer with http://x.x.x.x/status where x.x.x.x is the IP address of the Exstreamer connected to the IR
Remote Control Kit. The last received IR command is displayed right beside the text 'ir'.
A '*' in the 2nd field tells the IR handler that this button is accepted for repetition.
An empty 3rd field tells the IR handler to simply execute the command (see 1.10 Control, SERIAL, UDP, TCP and CGI WEB interface) in the 4th field. It uses the
same command set as TCP or SERIAL.
An 'L' in the 3rd field tells the IR handler that the received IR remote control command has to be sent as broadcast through the UDP command interface (if
configured) following the local execution on the Exstreamer.
An 'G' in the 3rd field tells the IR handler that the received IR remote control command only has to be sent as broadcast through the UDP command interface (if
configured) without the local execution on the Exstreamer.
If all unknown IR commands should be sent through the UDP command interface add the following line: ??: *,,,
An 'L' following by a decimal number tells the IR handler to select to numbered level for the next command. To select the command for the corresponding level
simply add more fields at the end of the line for that button. The 5th field has the level 1, the 6th field has the level 2 and so on. The max. level is 255. The
selected level is declined after 2 sec or after the next button will be pressed.
Every line that doesn't contain an IR remote control command is handled as a comment.
Examples (1st line executes PLAY by pushing the play button on the remote control, 2nd line increases volume, 3rd line sets level 1 (button *), 4th line plays
playlist 1 (button 1), if level 1 play playlist 11):
NE: 00FE7887,,,c=1
NE: 00FEA857,*,,c=19
NE: 00FED02F,,,L1
NE: 00FE40BF,,L,P=1,P=11
Code table for Barix remote control buttons
Button
Code

Page 18

The Exstreamer Technical Documentation for Firmware Version 08.05

0
NE: 00FE30CF
1
NE: 00FE40BF
2
NE: 00FEC03F
3
NE: 00FE20DF
4
NE: 00FEA05F
5
NE: 00FE609F
6
NE: 00FEE01F
7
NE: 00FE10EF
8
NE: 00FE906F
9
NE: 00FE50AF
Play 
NE: 00FE7887
Stop 
NE: 00FE08F7
Pause 
NE: 00FED827
*
NE: 00FED02F
#
NE: 00FE8877
+ VOL
NE: 00FEA857
- VOL
NE: 00FEC837
+ SONG
NE: 00FE48B7
- SONG
NE: 00FE6897
MUTE
NE: 00FEF807
ON/OFF
NE: 00FE807F
PLIST +
NE: 00FE00FF
PLIST NE: 00FEB04F
SHUFFLE NE: 00FEB847
REPEAT
NE: 00FE38C7
WAKEUP NE: 00FE38C7
* synchronizes to the first available master. # reloads the list of playlists.
1.14 Setup
The factory default setup is contained in the binary file config.bin. This file can be edited with a hex editor. Be careful if you do changes. This file will be loaded to
the EEPROM on factory default.

Page 19

The Exstreamer Technical Documentation for Firmware Version 08.05

General Terms (EEPROM Organization)


IP addresses are always stored with the highest byte at the lowest address.
Strings are coded in ASCII and terminated with 0x00. The Length includes the termination.
Values are stored in little endian format (Intel) (low byte first)
All Values are integer.
Signed values are stored in 2-complement.
Unused bytes must be set to 0x00.
In the following table the column Byte shows the byte number in the 1016 bytes of configuration. The first byte has the number 0.
If a password is set then the device only will answer to this commands if the password in the command is set correct.
Parameter
Own IP

Gateway IP
Netmask
WLAN Mode
WLAN Name
WEP Mode
WEP Key
DNS 1
DNS 2
Password

Byte
Dyn. Name
[dec]
0 B0, B1, B2,
B3

4 B4, B5, B6,


B7
8 N8B0, N8B1,
N8B2, N8B3
9 B9
10 S10
43 W43
45 S45
64 B64, B65,
B66, B67
68 B68, B69,
B70, B71
72 S72

Length
[Byte]

Default Value Short Description


4 0.0.0.0

4 0.0.0.0
1 0

Static IP address of the device. 0.0.0.0 for DHCP.


0.0.1.0 disable AutoIP
0.0.2.0 disable DHCP
0.0.4.0 disable BOOTP
0.0.8.0 disable IPzator
add this special IP addresses for disabling multiple protocols
Gateway IP address. 0.0.0.0 for no gateway

4 0.0.0.0

Subnetmask. The value is the count of the zero bits counted from the lowest byte. (ex. 8 for
255.255.255.0)
1 for infrastructure mode, 0 for ad-hoc mode
SSID of the wireless network. If it is empty then the device connects to the first wlan it will find.
0 for encryption off, 1 for encryption on
To activate the 40 bit encryption use exactly 5 bytes (rest 0x00), for 128 bit encryption use exactly 13
bytes (last byte 0x00). The key always is stored binary. All 0 means no password.
Primary DNS IP address. 0.0.0.0 for no primary and no secondary DNS.

4 0.0.0.0

Alternative DNS IP address. 0.0.0.0 for no secondary DNS.

Password as String. Used in the Telnet Setup. All 0 means no password.

1 1
33
2 0
14

Page 20

The Exstreamer Technical Documentation for Firmware Version 08.05


IFMODE0

80 B80b0-1,
B80b2-3,
B80b4-5,
B80b6-7
or B80

1 0x4C

BAUDRATE0

81 B81

1 2

FLOWCONTROL0
LOCALPORT
GATEWAYDSTIP

82 B82
86 W86
88 B88, B89,
B90, B91
92 W92
94 W94

1 0
2 0
4 0.0.0.0

GATEWAYDSTPORT
BOOTTARGET

B116
B117
W120
S122

2 0
2 0x0000

Version Major
Version Minor
Setupex Length
Password Level 1

116
117
120
122

Password Level 2

130 S130

Password Level 3
Password Level 4
Password Level 5
Password Level 6
Minimum priority
volume

138
146
154
162
239

8
8
8
8
1 5

Server IP

240 B240, B241,


B242, B243

S138
S146
S154
S162
B239

1 1
1 3
2 894
8

4 0.0.0.0

Definition of the bits in that byte for the serial port 0:


Function
7 6 5 4 3 2 1 0
RS232-C
0 0
7 Bit
1 0
8 Bit
1 1
no parity
0 0
even parity
1 1
odd parity
0 1
1 Stopbit
0 1
2 Stopbit
1 1
Baudrate for the serial port 0. (7 = 300, 6 = 600, 5 = 1200, 4 = 2400, 3 = 4800, 2 = 9600, 1 = 19200, 0
= 38400, 9 = 57600, 8 = 115200)
Flow control for the serial port 0. (0 = no, 1= Software XON/XOFF, 2 = Hardware RTS/CTS)
Port for the serial gateway (0 for disable).
Gateway destination IP address. If this IP address is 0.0.0.0 and the GATEWAYDSTPORT is 0 then the
serial gateway is disabled.
Gateway destination Port (see GATEWAYDSTIP).
If this parameter is set to 0x0000 the firmware with the highest version will be started.
If this parameter is set to a value highest version of the firmware with this target will be started. If the
target is 3Q (like for the standard Exstreamer firmware) the value will be the ASCII code of this two
characters 0x5133. The first character is the high byte.
Version Major value (do not change)
Version Minor value (do not change)
Length of the extended setup (always 894)
Password stored as MD5 hash (first 8 bytes) used for save configuration via web, all 0 means no
password
Password stored as MD5 hash (first 8 bytes) used for view the configuration via web, all 0 means no
password
Password stored as MD5 hash (first 8 bytes) used for control/commands, all 0 means no password
Password stored as MD5 hash (first 8 bytes), all 0 means no password
Password stored as MD5 hash (first 8 bytes), all 0 means no password
Password stored as MD5 hash (first 8 bytes), all 0 means no password
0 ... 20. If the current volume is smaller that Minimum priority volume and a priority message starts
coming, then the volume is set to Minimum priority volume. When the priority message ends, the
volume is set back to the original level.
IP address of the server (in Exstreamer mode 0 and 1 the zServer, in mode 2 the Web server, in mode
3 the IP address of the host)

Page 21

The Exstreamer Technical Documentation for Firmware Version 08.05


Volume
Balance
Bass
Treble
Loudness
Repeat
Output Mode
Stream Listen Port
RTS Mode

244
245
246
247
248
249
250
251
253

B244
B245
B246
B247
B248
B249
B250
W251
B253

1
1
1
1
1
1
1
2
1

8
0
0
0
20
0
0
2020
0

Server Port

254 W254

Device Name
Media Configuration

Playlist Path Match

256 S256
277
B277b0,
B277b1,
B277b2,
B277b3,
B277b4,
B277b5,
B277b6,
B277b7
286 S286

33

Playlist Substitution
Mode

319 S319
352 B352

33
1 0

Server Path

353 S353

33 /

Playlist Path
Info Update Delay
Init Sequence

386 S386
419 B419
420 S420

33 /playlist.html
1 10
64

2 0
21
1 0x00

Volume 0..20
Balance -10..10
Bass -10..10
Treble -10..10
Loudness 0..20
0 for repeat of, 1 for repeat one song, 2 for repeat playlist
0 for stereo, 1 for mono, 2 for bridge (mono)
Streaming listen TCP port
0 = RTS is used to show the receiving of an IR command and lets blink the LED on the Serial IR
Dongle
1 = RTS is used to power on or off an AVR (see 4.3 RTS State)
2 = RTS is not used for something special
Port of the server (in Exstreamer mode 0 and 1 the zServer's port, in mode 2 the Web server,'s port
in mode 3 the host's port). 0 for default (8888 in mode 0 and 1, 80 in mode 3)
Name of the device
This values can be added (the function is activated by set the bit):
0x01: random on
0x02: not used
0x04: locks volume
0x08: loudness on (level see parameter loudness)
0x10: mute
0x20: walk through playlists
0x40: show cover
0x80: no SonicIP
If the path of a song in a playlist starts with this string, it will be replaced with the Playlist Substitution
string
see Playlist Path Match
0 for zServer autodetection, 1 for zServer fixed IP, 2 for Web Server, 3 for Streaming Puller, 4 for
Streaming Receiver
In mode 0 and 1 always /, in mode 2 the path part of the URL to the playlists, in mode 3 the path part
of the URL to the MP3 file.
If the path doesn't start with a / then it is used as a URL in mode 1, 2 and 3. It's used instead of the
Server IP and the Server Port. Resolving with DNS is possible.
In mode 0 and 1 always /playlist.html, in mode 2 the path part of the URL to the list of playlists
Info frame HTML meta refresh timeout in seconds (0 for disable)
String of commands (like serial command interface) which is executed after each startup of the device.

Page 22

The Exstreamer Technical Documentation for Firmware Version 08.05


Sync Port

484 W484

2 0

Connection Timeout
Reconnections

486 W486
488 B488

2 10000
1 0

Buffer Timeout

489 B489

1 20

Buffer Mode

490 B490

1 0

IR Gateway IP

4 0.0.0.0

IR Gateway Port

491 B491, B492,


B493, B494
495 W495

2 0

IR Source
Cfg Store Timeout

497 B497
498 B498

1 0
1 0

UDP RX Port
499 W499
WEB port
501
W501
RTP TX Port (reserved) 503
W503
W509
W511
W513
W515

2
2

2 0
0
0

Start Threshold
UDP Command Port
TCP Command Port
Preset

509
511
513
515

2
2
2
2

60000
12301
12302
0

Volume Gain
UDP Start Threshold
TCP Priority Rx Port

677 B677
678 W678
680 W680

1 0
2 3192
2 0

UDP Priority Rx Port

682 W682

2 0

Codec Clock Offset


Fill Buffer Time

684 W684
686 W686

2 0
2 0

Sync Port if device is Sync Master. 0 means use algorithm else use this number as fixed port (useful for
firewalls).
milliseconds to wait for a TCP streaming connection
Defines how many times a reconnection will be tried on a streaming buffer underrun if the Buffer
Underrun Mode is set to reconnect. 0 means forever.
Amount of time in seconds since the streaming buffer is empty until the Buffer Underrun Mode action
will be executed
Action if the streaming buffer underruns during an open TCP connection. 1 means disconnect the TCP
connection. 0 reconnect again the same stream.
IP address for transmitting all received IR remote control commands via UDP j= commands to the
other devices 'IR Out' output. Disabled if set to 0.0.0.0 and IR Port 0
Port for transmitting all received IR remote control commands (see IR Gateway IP). If IR Gateway is
set and this port is 0 the UDP command port is used. If the UDP command port is set to 0 the default
UDP command port 12301 is used.
0 = Serial IR Dongle, 1 = IR IN (Exstreamer Digital only)
Timeout in seconds after the last change of shuffle, repeat, volume, volume lock, mute, balance, bass,
treble and/or loudness the setup automatically will be stored into the EEPROM.
UDP streaming receiver port (0 for disable)
Port where webserver runs (0 sets 80)
RTP transmission port. If you set this, the exstreamer becomes a master and starts broadcasting RTP
on this port, with IP of network broadcast (example: 192.168.1.255).
Amount of bytes from TCP received in the streaming buffer until the stream starts playing
Receiving port for the UDP command interface (0 for disable)
Listening port for the TCP command interface (0 for disable)
User-specific storage, this parameter has no functionality. It can be used by the user for the web
interface.
Decrease the current line out level by this amount of dB. 0..115
Amount of bytes from UDP received in the streaming buffer until the stream starts playing
This parameter defines the TCP Priority Receiver Port. A stream sent to this port always will be
played unless another priority stream already will be received.
This parameter defines the UDP Priority Receiver Port. A stream sent to this port always will be
played unless another priority stream already will be received.
This parameter defines the codec clock offset in kHz to accelerate or slow down the stream.
This parameter defines the stop time in ms for refill the buffer if the buffer level falls below the half of
the Start Threshold and the current output level is below 300 for more than 100 ms. If set to 0 then
the streaming will be stopped until the buffer is refilled to the Start Threshold. This behavior only is
active if Codec Clock Offset isn't set to 0.

Page 23

The Exstreamer Technical Documentation for Firmware Version 08.05

1.15 Own skins and web interface


With the Exstreamer Digital App Development Kit or the Exstreamer App Development Kit (DOS) you can design your own web pages (skin) and modify the
answers to your needs. This kit is available on www.barix.com or www.exstreamer.com.
The stuff folder holds the files you need for the web pages. You can simply edit these files and/or add new ones. The web interface (and the firmware) need at
least the following files:
File
Version file
EXSTREAMERAPPVERSION

Dyn. Description
for the version number and the history

Answer files (see 1.21 Configuration via HTML Pages for the dynamic marks contained in the files and the exact description) Use these files in with the command GETDYNFILE as
replacement of the GET commands of the Exstreamer versions below 6.00.
ack.ack
standard answer for commands
9 current value of the balance
balance.ack
9 current value of the bass
bass.ack
busy.ack
standard answer for ignored commands (UDP)
9 answer for the DISCOVER command
discover.ack
9 answer for the progress feedback in seconds for the commands PRGFEEDBUDPBYTE, PRGFEEDBSERBYTE and PRGFEEDBCTYPBYTE
fbbyte.ack
9 answer for the progress feedback in seconds for the commands PRGFEEDBUDPSEC, PRGFEEDBSERSEC and PRGFEEDBCTYPSEC
fbsec.ack
9 content of the actual played playlist
getactplaylist.ack
9 name of the actual played playlist
getactplaylistname.ack
9 complete configuration
getconfig.ack
9 actual state of CTS
getcts.ack
9 Returns 0 if CTS has changed since the last RESETLASTCTS command. If CTS hasn't changed it returns 1.
getlastcts.ack
9 last received IR command
getlastir.ack
9 Returns 0 if PIO3 has changed since the last RESETLASTPIO command. If PIO3 hasn't changed it returns 1.
getlastpio.ack
9 actual state of PIO (see 4.4 PIO3 (not for Exstreamer Digital))
getpio.ack
9 outputs the list of playlists
getplaylists.ack
9 name of the actual played song (without path)
getsong.ack
9 path of the actual played song including the name
getsongpath.ack
9 outputs the state of the device
getstate.ack
9 content of the actual viewed playlist (selected with the command P)
getviewplaylist.ack
9 current value of the loudness
loudness.ack
nosupport.ack
answer for unknown and/or unsupported commands
9 current value of the pitch
pitch.ack

Page 24

The Exstreamer Technical Documentation for Firmware Version 08.05


random.ack
repeat.ack
treble.ack
volume.ack
Configuration file
config.bin

Pictures
4to0.gif
active.gif
activei.gif
barix.gif
exstreamer.gif
menu.gif
Settings.gif
view.gif

9
9
9
9

current state of shuffle


current state of repeat
current value of the treble
current value of the volume

factory default settings. The file is binary and an exact mirror for the EEPROM. See 1.14 Setup for the organization. Edit this file with a
hex editor if you need your own factory default settings.

needed for apply the configuration for waiting for the reboot of the device
showed as back button in the songlist frame if a playlist is showed
showed as refresh button in the info frame
used in uimenu.html
picture for the control interface, used in skin.html
picture for the menu buttons in the configuration, used in uicfg.html
picture for the setting interface of the device, used in settings.html
the little picture on the left side of each playlist name in the playlist frame to view the playlist without playing it.

HTML pages (see 1.21 Configuration via HTML Pages for the dynamic marks included in the files)
index.html
main page of the web server, included the five frames: skin, info, playlist, songlist, empty. empty is a hidden frame that receives the answer
of the CGI commands.
9 page for the info frame of index.html
info.html
notauthorized.html
showed if the user isn't authorized to view a page
9 page for the playlist frame of index.html
playlist.html
settings.html
for the setting interface of the device, used in index.html
skin.html
for the control interface of the device, used in index.html
9 for the songlist frame of index.html
songlist.html
9 shows the actual states of the device
status
9 configuration pages for the corresponding settings
uiaudio.html
9
uicontrol.html
9
uinetwork.html
9
uisecurity.html
9
uiplaylist.html
9
uiserial.html
9
uistreaming.html
9 not for Exstreamer Digital
uiwlan.html

Page 25

The Exstreamer Technical Documentation for Firmware Version 08.05


uicfg.html
uiconfig.html
uidefaults.html
uifaudio.html
uifcontrol.html
uifdefaults.html
uifloader.html
uifnetwork.html
uifsecurity.html
uifplaylist.html
uifreboot.html
uifserial.html
uifstreaming.html
uifupdate.html
uifwlan.html
uifmenu.html
uihaudio.html
uihcontrol.html
uihdefaults.html
uihloader.html
uihnetwork.html
uihsecurity.html
uihplaylist.html
uihreboot.html
uihserial.html
uihstreaming.html
uihupdate.html
uihwlan.html
uilogout.html
uimenuline.html

9
9
9

shows the current loaded versions of the device


main configuration, contains the main frames for the configuration
set factory defaults
specific configuration page, contains the frames for the corresponding configuration pages

not for Exstreamer Digital


frame page for the skin and version
help for the corresponding configuration pages

not for Exstreamer Digital


logout page
menu for the configuration buttons

Page 26

The Exstreamer Technical Documentation for Firmware Version 08.05


uiraudio.html
uircontrol.html
uirdefaults.html
uirloader.html
uirnetwork.html
uirnetwork0.html
uirnetwork00.html
uirsecurity.html
uirplaylist.html
uirreboot.html
uirserial.html
uirstreaming.html
uirupdate.html
uirwlan.html
uirdefaults1.html
uireboot.html
uirreboot1.html
uiupdate.html
update.html

showed after pressing apply or a reboot of the device is needed until the device has rebooted

9
9

9
9

not for Exstreamer Digital


showed after the device is set to factory defaults an has successfully rebooted
reboot the device
showed after the device is rebooted an has then successfully rebooted
update the device
forwarding page to hide the command for the update

Remote Control
remote.ini

contains the known IR commands and the corresponding commands therefore

Java Script
util.js

javascript functions for the HTML configuration pages (range checks)

The filenames mustn't start with rc.cgi or setup.cgi.


Don't exceed 64 kByte of data per file. Note that a bigger .cob file needs per 64 kByte one flash page of 64 kByte.
To generate a .cob file start the batch exstreamerdigapp.bat. Upload the generated .cob file into the device to the web application page (overwrite).
For the upload go to the configuration page of the device and click on the button Update. Follow the instructions there. If the device has rebooted and the update
page is showed type http://x.x.x.x/updateex.html in the address field of the browser where x.x.x.x is the IP address of the device.
Free targets can be found in 1.18 Memory Page Usage. The target field is case sensitive. If you upload a .cob file to used pages the current content will be
overloaded by the new one.
Another way to upload is with TFTP. Use the name of the page as target.

Page 27

The Exstreamer Technical Documentation for Firmware Version 08.05

The web server in the device sees all the targets (.cob files) as one directory.
If two files in different .cob files have the same name then the one from the lower page is chosen.
After the upload reboot the device and reload the modified page in the browser to see the changes. Sometimes it's needed to close the browser to see the
changes depending on the browser's cache strategy.
1.16 Gong Application (for door bell)
To use the gong functionality upload a .cob file built with the gong application development kit into the device as described in 1.15 Own skins and web interface.
Download this kit from the download section on www.exstreamer.com and replace gong.MP3 (all lowercase) with your own MP3 file. The Exstreamer looks for
this file after each reboot. If this file is available and the CTS input is activated, this file is played as long as CTS is active. The whole file will be played all the way to
the end if CTS is deactivated and the Exstreamer will then go back into its operating stage.
1.17 Idle Application (stream during idle)
To use the idle functionality upload a .cob file built with the idle application development kit into the device as described in 1.15 Own skins and web interface.
Download this kit from the download section on www.exstreamer.com and replace idle.MP3 (all lowercase) with your own MP3 file. The Exstreamer checks this
file after each reboot. If this file is available and the Exstreamer is in idle mode (not pause) this file is played continuously. If the Exstreamer starts to play another
stream the idle song stops playing.

Page 28

The Exstreamer Technical Documentation for Firmware Version 08.05

1.18 Memory Page Usage


A page is 64 kByte of flash memory. Free pages can be used for additional resources.
Exstreamer, Exstreamer Digital, Exstreamer 100 (1MB Flash) (Note: 0xC00000 = 0xD00000 = 0xE00000 = 0xF00000)
Page / Target
8K (WEB0)
WEB1
WEB2
WEB3
WEB4
WEB5
WEB6
WEB7
WEB8
WEB9
WEB10
WEB11
WEB12
WEB13
WEB14

Content
exstreamer_digital.rom (Firmware)
exstreamer_cifs.rom (Firmware)
xt05.bin (BIOS)
sg.bin (Util library)
sonicip.cob (Sonic IP Resources)
exstreamerapp.cob or exstreamerdigapp.cob (Web Application)
exstreamerapp.cob or exstreamerdigapp.cob continued (Web Application)
exstreamerapp.cob or exstreamerdigapp.cob continued (Web Application)
Reserved for future increase of Web Application
temporary used for updates
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)
free (recommended for Idle Application)
free (recommended for Gong Application)
temporary used for updates

Address for Rescuekit


0xF00000
0xF10000
0xF20000
0xF30000
0xF40000
0xF50000
0xF60000
0xF70000
0xF80000
0xF90000
0xFA0000
0xFB0000
0xFC0000
0xFD0000
0xFE0000

Page 29

The Exstreamer Technical Documentation for Firmware Version 08.05

Exstreamer Wireless (2MB Flash) (Note: 0xC00000 = 0xE00000, 0xD00000 = 0xF00000)


Page / Target
8K (WEB0)
WEB1
WEB2
WEB3
WEB4
WEB5
WEB6
WEB7
WEB8
WEB9
WEB10
WEB11
WEB12
WEB13
WEB14
WEB15
WEB16

WEB27
WEB28
WEB29
WEB30

Content
exstreamer_digital.rom (Firmware)
exstreamer_cifs.rom (Firmware)
xt05.bin (BIOS)
sg.bin (Util library)
sonicip.cob (Sonic IP Resources)
exstreamerapp.cob (Web Application)
exstreamerapp.cob continued (Web Application)
exstreamerapp.cob continued (Web Application)
Reserved for future increase of Web Application
temporary used for updates
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)
free (see 1.15 Own skins and web interface)

Address for Rescuekit


0xE00000
0xE10000
0xE20000
0xE30000
0xE40000
0xE50000
0XE60000
0xE70000
0xE80000
0xE90000
0xEA0000
0xEB0000
0xEC0000
0xED0000
0xEE0000
0xEF0000
0xF00000

free (see 1.15 Own skins and web interface)


free (recommended for Idle Application)
free (recommended for Gong Application)
temporary used for updates

0xFB0000
0xFC0000
0xFD0000
0xFE0000

Page 30

The Exstreamer Technical Documentation for Firmware Version 08.05

1.19 Dynamic Web Page


Dynamic Web Pages are built in HTML or XML or each other text file format that doesn't contain the binary character 0x00. A dynamic page can be an HTML file.
To indicate such a page it has to contain the initial mark &L(0,"*") in the first 500bytes before the first dynamic value is used. It's possible to use scripts or
everything else allowed in the document's file format. The optional third parameter (decimal value) in the initial mark is for file options. If the bit 0 (&L(0,"*",1);) in
the third parameter is set the content length will not be added in the HTTP header. That's faster because the file will then only be parsed once. Normally the file is
parsed once for the content length defined in the HTTP header. Since the length could change during execution a second time parsing is needed in order to send
the page to the browser (ex. current uptime). If the content length is need (for special web servers) the format string can be used in order to define a fix length.
The third parameter is used as a bitset. The bits 1 - 3 are used as password level (1-6) for the file corresponding to the password level parameters in the
configuration (see 1.14 Setup). Example for level 5: (&L(0,"*",10);). If the password level is 7 then the password for the Telnet/Serial setup is used.
If the bit 4 is set the access will be exclusive (only one user at a time, tested by its IP address). The user has to logout (see 1.22 Configuration Logout) or the
software does an automatic logoff 20 min after the last access to such a page. Only one password level can have the exclusive feature (doesn't matter which one).
Set bit 7 to select the codepage IBM437 instead of the standard html code page.
1.20 The Dynamic Mark
Definition: &L<name>(<id>,<format>[,par]);
A dynamic mark always starts with &L. The mark is case sensitive. Attached is a name which selects a group of dynamic values. Defined is the group 'State' for
values used in the firmware during runtime. The group 'Setup' is defined for all configuration parameters. In the parentheses are the formal parameters like in a C
function call. The mark ends always with a ;. <id> defines the desired value. <format> is a C-style format string (refer to the ANSI documentation). <par> are
additional parameters. If an additional parameter is needed it is mentioned in the related chapter in this document. No ');' is allowed in the dynamic mark. To have
this construct inside the format string use ')\;' (in unknown escape sequence only the \ will be removed). The have a '%' sign inside the format string use '%%'.
The whole mark is replaced by the <format> string filled with the dynamic value. Only one value is allowed per dynamic mark. The length of the dynamic mark
mustn't exceed 500 characters. The resulting string out from the dynamic mark mustn't exceed 500 characters.
A dynamic mark can be contained in another dynamic mark but the C-style format string must be respected. Only one recursion step is allowed.
Exampe: &LSetup(3,"%s",419,B,!0,"<meta http-equiv=refresh content=\"&LSetup(1,\"%u\",419)\;; url=info.html\">");
Note the special \ before the semicolon of the dynamic mark inside. This is escape sequence is interpreted as only a semicolon and is needed for the prohibited
sequence ;) inside a dynamic mark.
Example:

<td>&LSetup(1,"<b>%u</b>",0); highest byte of the own IP address</td>


is going to the following line if the current value of the highest byte of the own IP address will be 192:
<td><b>192</b> highest byte of the own IP address</td>

Page 31

The Exstreamer Technical Documentation for Firmware Version 08.05

1.21 Configuration via HTML Pages


The HTML pages for the device configuration use the functionality for dynamic web pages (see 1.19 Dynamic Web Page). All of the configuration parameters are
placed in HTML forms and are transferred by the method GET. Some of the values are checked by java script to prevent wrong values. Not all of the configuration
parameters have to be present in a form. It is possible to have only a part of the configuration on a web page. The form has to start with the following two tags:
<form method=GET action=setup.cgi target="answer"><input type="hidden" type="text" name=L value=uirnetwork.html>
The target of the form could be changed.
The answer after transmitting the form will be the HTML page uirnetwork.html. For another HTML page change this value. If this value isn't available only the
HTTP status 200 OK will be sent back.

The following example shows how to implement a form field for the configuration value of the highest byte in the 'own IP address'.
The input element name is a defined string, which has to be handled with care (see more about this below). The type character B stands for an unsigned value (see
table below). 0 is the address of the expected configuration parameter (see table in 1.14 Setup).
The value is a dynamic mark (see table below).
<input name=B0 size=3 maxlength=3 value=&LSetup(1,"%u",0); onChange=IPCheck(this)>

In the next example the name selects the configuration parameter 'Exstreamer Name' in the setup (see table in 1.14 Setup).
<input name=S256 size=20 maxlength=20 value='&LSetup(4,"%s",256);'>
To set a password also the name Sxxx is used with the address of the corresponding password level. The max. length if the plain password is 24. The delete the
password use 24 or more characters (ex. 25 spaces). The device builds the MD5 hash over the plain password and stores the lower 8 bytes. All 8 bytes set to 0
means no password set.
This example shows how to implement a form field for the configuration of the Netmask. The names for the bytes of the Netmask are N8B0, N8B1, N8B2 and
N8B3. 8 is the address of the Netmask in the common setup (see table in 1.14 Setup). The value after the B is the byte number of the byte in the Netmask starting
with 0 for the first byte at the left. This special handling for Netmask is needed because the Netmask is stored in one byte and not like the IP address in 4 bytes.
<input name=N8B0 size=3 maxlength=3 value=&LSetup(2,"%u",8,0); onChange=netMaskCheck(this)>

Page 32

The Exstreamer Technical Documentation for Firmware Version 08.05

The next example shows how to implement a form field for the configuration of the parameter 'Output Mode' as a selection. If the value of the configuration
parameter is equal to the second last parameter in the dynamic mark it will be replaced by the last parameter of the dynamic mark.
<select size=1 name=B250>
<option value=0 &LSetup(3,"%s",250,B,0,"selected");>Stereo</option>
<option value=1 &LSetup(3,"%s",250,B,1,"selected");>Mono</option>
<option value=2 &LSetup(3,"%s",250,B,2,"selected");>Bridge</option>
</select>

This example shows how to implement radio buttons for the configuration parameter 'Sonic IP'. The functions of the dynamic marks are equal to the example
above.
<input type=radio name=B277b7 value=0&LSetup(3,"%s",277,b7,0," checked");>Yes<input type=radio name=B277b7 value=1&LSetup(3,"%s",277,b7,1,"
checked");>No

To transmit the new configuration data to the device the submit input type of the form is used.
<input type=submit value=' Apply '>
By pressing the Apply button the new configuration data will be transferred to the device. It will store the new data to its configuration memory (EEPROM). After
this it sends the answer (see above) to the browser and reboots itself to apply the new configuration.
Dynamic Marks for Group State:
<id> Type
Description
1
Function
Prints volume in percent
2
Function
Print string if equal
3. [par]: state variable
1
shuffle (0 = off, 1 = on)
2
repeat (0 = off, 1= song, 2 = playlist)
3
MPEG version (0 = MPEG 2.5, 2= MPEG 2, 3 = MPEG 1)
4
MPEG Layer (0 = unknown 1 = Layer III, 2 = Layer II, 3 = Layer I)
5
volume lock (0 = no lock, 1 = locked)
6
synchronisation state (0 = no synchronized, 1 = synchronized, 2 = start hook in, 3 = wait for data, 4 = wait for frame, 5 = wait for sync, 6 =
master)
7
more playlists (0 = not more playlists, 1 = no previous playlists, 2 = previous and next playlists, 3 = no next playlists, 4 = playlists for letter)

Page 33

The Exstreamer Technical Documentation for Firmware Version 08.05

Fifo Function

Fifo Function

Function

8
playlist count (0 for no playlists)
9
first letter of viewed playlist (0 for no playlist, else ASCII code of the first letter)
10
1 if actual playlist number is equal to the viewed playlist number
11
first letter of played playlist (0 for no playlist, else ASCII code of the first letter)
12
loudness on (0 = off, 1 = on)
13
volume mute (0 = off, else on)
14
protection bit of the MP3 header of the current played MP3 stream (0 = off, 1 = on)
15
padding bit of the MP3 header of the current played MP3 stream (0 = off, 1 = on)
16
private bit of the MP3 header of the current played MP3 stream (0 = off, 1 = on)
17
copyright bit of the MP3 header of the current played MP3 stream (0 = off, 1 = on)
18
original bit of the MP3 header of the current played MP3 stream (0 = off, 1 = on)
19
channel mode of the MP3 header of the current played MP3 stream (0 = stereo, 1 = joint stereo, 2 = dual channel, 3 = single channel)
20
mode extension of the MP3 header of the current played MP3 stream
21
emphasis of the MP3 header of the current played MP3 stream (0 = none, 1 = 50/15 ms, 2 = reserved)
22
mode (0 = unknown, 1 = streaming, 2 = pull)
23
status (0 = idle, 1 = play, 2 = pause, 3=fast forward)
24
license (used as bitset (bit = 0 no license, 1 = license active): bit 0: synchronisation license)
25
0 if no playlist is selected else 1
31
long value of the codec's mp3 header info (high word is MPEGStatus1, low word is MPEGStatus1, see datasheet)
32
bitrate in kBps
33
samplingrate in Hz
34
codec revision mask (0x0101 for A2, 0x0935 for B4)
4. [par]: Type (see id 1 in 'Dynamic Marks for Group Setup' below)
5. [par]: value to compare. The prefixes !, > or < are allowed to change the comparison (no spaces between)
6. [par]: string for output if state value is equal to 5. [par]
Outputs the content of a playlist. The format string is for only one song/line. The contained variables and the sequence in the format string are
dependent of the source.
3. [par]: source
1 for web: variables in the following sequence: song number (unsigned integer %u), song number (unsigned integer %u), song name (string %s)
else: only variable: song name (string %s)
4. [par]: 0 for actual played playlist, else for viewed playlist
5. [par]: unsigned decimal number of the desired playlist
Outputs the file name of a path
3. [par]: state variable
1
song name
2
viewed playlist name
3
played playlist name
Outputs the bitrate of the current playing stream as an unsigned decimal number. If the bitrate is detected as bad it outputs the text 'bad'.

Page 34

The Exstreamer Technical Documentation for Firmware Version 08.05


6
7

Word Value
Function

Function

Fifo Function

10

Function

11

Function

sampling rate of the current playing stream


Outputs the content of the current playlist (current played or the one selected for viewing). The contained variables and the sequence in the format
string are in the following sequence: song number (unsigned integer %u), song number (unsigned integer %u), song name (string %s)
3.[par]: fix set to 1 for song number
4.[par]: fix set to 1 for song number
5.[par]: fix set to 2 for song name
Print Byte
3. [par]: state variable
1
current IP address
2
LAN MAC address
3
current netmask (stored as 4 bytes like the current IP address)
4
current gateway IP address
5
current DNS IP address
6
current MAC address
11
current server IP address
13
current sync master IP address
4. [par]: offset in bytes for the state variable
ex. &LState(3,"%u",1,0); for the highest byte of the current IP address
ex. &LState(3,"%H",2,0); for the MAC address
Outputs the list of playlists.
The format string is for only one playlist/line. The contained variables and the sequence in the format string are:
playlist number (unsigned integer %u), playlist number (unsigned integer %u), playlist name (string %s)
Outputs the discovered Barix devices in the network.
The format string is for only one device/line. The contained variables and the sequence in the format string are:
IP address of the discovered device (%A), name of the discovered device (string %s), IP address of the discovered device (%A), synchronisation port
of the discovered device (unsigned integer %u, 0 for no synchronisation possible), name of the discovered device (string %s)
Print state value
3. [par]: state variable
1
number of the next playlist (for reload playlist buffer)
2
number of the previous first playlist (for reload playlist buffer)
3
number of the current viewed playlist
4
number of the current played playlist
5
version string of the server (zServer)
6
hardware type (0 = unknown, 1 = Exstreamer, 2 = Exstreamer Wireless)
7
codec type (0 = no codec, 1 = MAS3509 (decoder), 2 = MAS3587 (encoder))
8
mode (0 = unknown, 1 = streaming, 2 = pull)
9
state (0 = idle, 1 = play, 2 = pause, 3=fast forward)
10
synchronisation state (0 = no synchronized, 1 = synchronized, 2 = start hook in, 3 = wait for data, 4 = wait for frame, 5 = wait for sync, 6 =

Page 35

The Exstreamer Technical Documentation for Firmware Version 08.05


master)
11
count of playlists
12
current playing playlist name
13
count of entries in the current playlist
14
current playing song name
15
number of the current song
16
TCP state admin (playlist) connection (0 closed, 1 listen, 2 established, 3 syn sent, 4 syn received, 5, fin wait 2, 6 fin wait 2, 7 fin wait 3, 8
closing, 9 last ack, 10 time wait, 11 drain)
17
TCP state stream connection (0 closed, 1 listen, 2 established, 3 syn sent, 4 syn received, 5, fin wait 2, 6 fin wait 2, 7 fin wait 3, 8 closing, 9
last ack, 10 time wait, 11 drain)
18
amount of bytes in the streaming buffer
19
number of played bytes (double word)
20
last received IR command (string)
21
current volume
22
current mute volume (if mute on equal to last current value, else 0)
23
current balance
24
current bass
25
current treble
26
current loudness
27
shuffle (0 = off, 1 = on)
28
repeat (0 = off, 1= song, 2 = playlist)
29
feedback (used as bitset, on if set to 1 (bit 0 = TCP stream byte, bit 1 = TCP stream sec, bit 2 = UDP byte, bit 3 = UDP sec, bit 4 = serial
byte, bit 5 = serial sec bit 6 = TCP cmd byte, bit 7 = TCP cmd sec))
30
seconds played of the current stream (double word)
31
CTS (0 = off, 1 = on)
32
CTS flag (see command RESETLASTCTS)
33
PIO (0 = off, 1 = on)
34
PIO flag (see command RESETLASTPIO)
35
sync port (0 if slave, else own master sync port)
36
current viewed playlist name
37
mode extension of the MP3 header of the current played MP3 stream
38
CRC of the MP3 header of the current played MP3 stream
39
current uptime in milliseconds (double word)
40
current uptime in seconds (double word)
41
count of entries in the viewed playlist
43
long value of the codec's mp3 header info (high word is MPEGStatus1, low word is MPEGStatus1, see datasheet)
44
bitrate in kBps
45
sampling rate in Hz

Page 36

The Exstreamer Technical Documentation for Firmware Version 08.05

12

Fifo Function

46
codec revision mask (0x0101 for A2, 0x0935 for B4)
47
current codec frame counter
48
current codec frame error counter
49
current quasi peak output left
50
current quasi peak output right
Outputs the list of playlists or one specific playlist.
The format string is for only one playlist/line. The contained variable in the format string is: playlist name (string %s)
3. [par]: 0 for all playlists else the decimal number of the desired playlist

Dynamic Marks for Group Setup:


<id> Type
Description
1
Function
Print setup value
3. [par]: Address (decimal) of the value in the setup
4. [par]: Type of the value (B for unsigned byte, W for word, D for double word, c for char/signed byte, b for bit numbered from 0 to 7 ex. b3 for
the fourth bit). If this parameter isn't available the type will be B.
ex. &LSetup(1,"%08lx",315,D); as hexadecimal value with 8 characters an leading zeros
ex. &LSetup(1,"%lu",311,D); as unsigned long decimal value
2
Function
Print Netmask Byte
3. [par]:Address (decimal) of the value in the setup
4. [par]: Byte number of the netmask IP address byte starting with 0 for the first left byte and incremented by one for the next bytes
3
Function
Print string if equal
3. [par]: Address (decimal) of the value in the setup
4. [par]: Type (see id 1 above)
5. [par]: value to compare. The prefixes !, > or < are allowed to change the comparison (no spaces between)
6. [par]: string for output if value at address is equal to 5. [par]
4
Function
Print string
3. [par]: Address (decimal) of the value in the setup
5
Byte (integer)
Firmware Version Major
6
Byte (integer)
Firmware Version Minor
7
Byte (integer)
Bootloader Version Major
8
Byte (integer)
Bootloader Version Minor
9
Function
Prints the version out of a standard version file in a *.cob application
3. [par]: name of the version file
4. [par]: 1 for major version number (byte), 0 for minor version number (byte)
10
Byte (integer)
year of the firmware build (only decade)
11
Byte (integer)
month of the firmware build
12
Byte (integer)
day of the firmware build

Page 37

The Exstreamer Technical Documentation for Firmware Version 08.05


13
14
15
16
17
18
19
20
21
22

Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)

song version major


song version minor
xt version major
xt version minor
Song year only decade
Song month
Song day
XT year only decade
XT month
XT day

See chapter 1.14 Setup for the addresses of the configuration parameters.
Names for the form elements:
If the value is an integer the first character is a B.
If the value is a Netmask the first character is an N.
If the value is a string the first character is an S.
If the value is a long (4 byte) the first character is a D.
If the value is a signed byte the character is a c.
If the value is a word the character is a W.
The following decimal value in the name is the address of the configuration parameter (see 1.14 Setup).
To set a bit in a configuration parameter (ex. Mediaconfig) add the character b followed by the number of the bit (ex. 7 for the 8. bit in the byte) starting at 0.
To define the byte of the Netmask add the character B followed by the byte number (see <id> 2 in the table above).
Examples of names:
B0
first (left) byte of the configuration parameter 'own IP address'
B1
second byte of the configuration parameter 'own IP address'
N8B0
first (left) byte of the Netmask
N8B1
name of the second byte of the Netmask
S255
Exstreamer Name
B277b7
Sonic IP

Page 38

The Exstreamer Technical Documentation for Firmware Version 08.05

1.22 Configuration Logout


The logout is placed in an HTML form and is transferred by the method GET. The form has to contain an element named L with the value for the answer page and
a second element with the name D. This element is the indication for the logout.
<form action=setup.cgi method=get target=_top>
<input type=hidden name=L value=logout.html><input type=hidden name=D><input type=submit value=" Logout ">
</form>
The target of the form could be changed.
The answer after transmitting the form will be the HTML page logout.html. For another HTML page change this value. If this value isn't available only the HTTP
status 200 OK will be sent back.
1.23 Green and Red LED
Application is starting:
First the red goes on and the green LED blinks once.
Then during the startup the green and red LEDs are blinking. During DHCP the red LED is blinking always and the green LED is blinking alternate for five times
and then pause for four times. After SonicIP the red will go off.
If the application is corrupt the red led is on and the green LED blinks five times. After that the device resets itself.
If the network hardware could not be initialized the red led is on and the green LED blinks three times. After that the device resets itself.
If the MAC address is corrupted the red led is on and the green LED blinks three times. After that the device resets itself.
If an IP address conflict occurs the red led is on and the green LED blinks five times. After that the device resets itself.
If on zServer is found the green LED blinks very slowly.
Application is running:
The red LED always is off.
On stop/pause the green LED is on.
During playing the green LED is blinking slowly.
On playing the gong or idle application the green LED is blinking fast with breaks.
As sync slave the green LED blinks slow with green LED is blinking fast with breaks.
On streaming receive the green LED blinks fast.
Serial Configuration is activated:
The red LED is blinking always. The green LED is on for four times blinking of the red LED and then off for four red LED blinks.

Page 39

The Exstreamer Technical Documentation for Firmware Version 08.05

Telnet Configuration is activated:


The red LED is blinking always. The green LED is blinking four times with the red LED and then pause for four red LED blinks.
No Application loaded (only bootloader) or started with hold reset button during power up:
The green LED is on and the red LED is blinking.
Device after production with bootloader but without MAC:
The green and the red LED are blinking alternate. Indicates waiting for the factory test. During the factory test the blinking remains. If the test has been successful
the red LED stops blinking. If the test fails the green LED stops blinking.
Device after production without bootloader:
Red LED
Off
Off
On
Blink
On
Off
Blink
Blink

Green LED
Off
On
Off
On
On
Blink
Blink
Off

Meaning
No power or bootstrap checksum failed
RAM Test in progress, stays on if test failed
Serial port being polled
Serial port load in progress
Serial port load failed
Serial flash load in progress (not used)
Serial flash load failed (not used)
No valid non-volatile storage found, serial port being polled indefinitely.

Page 40

The Exstreamer Technical Documentation for Firmware Version 08.05

2 zServer
2.1 zServer Discovery
After startup the Exstreamer sends every 5 second a UDP broadcast packet to the zServer's listening port 12321 until it receives the zServer's answer. If the
zServer receives this packet it answers with its UDP packet to the Exstreamer's IP address and the Exstreamer's listening port 12320.
The Exstreamer's Broadcast UDP packet is an ASCII string 'Z11' (Z, one, one). The three bytes are (starting with byte number 0): 0x54 0x31 0x31.
The zServer's UDP answer:
Starting in byte number 0 is a null-terminated version string of the zServer. Directly appended to this string ,data structures in the following frame are
concatenated without any gap: <type><length><info>
<type> is a byte and describes the info, <length> is a word (two bytes, low byte first) and includes the length of <info> in bytes and <info> contains the info data.
All the values are starting with the low byte first (Intel byte order). The last frame is always an end of data.
<type>
0x00
0x01
0x02
0x03
0x04
0x06

<length>
0x0001
0x0008
0x0004
0x0004
0x0010
0x0002

<info>
0x00 (end of data)
This is the number of milliseconds since January 1, 1970, 00:00:00 GMT. of the latest changing of any playlist.
This is the number of seconds since midnight local time.
Byte 0: day of month (starting with 1), Byte 1:month (starting with 1), Byte 2/3: year
This is a UUID of the running zServer. Note: only one zServer process per computer.
HTTP serving port of the zServer (normally 8888)

Page 41

The Exstreamer Technical Documentation for Firmware Version 08.05

An example zServer packet (length 60 bytes, all bytes in hexadecimal):


5a
00
04
00

31
00
10
00

2e
02
00
00

34
04
01
06

39
00
20
02

36
e7
ea
00

00
3a
01
b8

01
00
00
22

08
00
00
00

00
03
00
01

c7
04
00
00

73 7e a3 f2 00
00 09 01 d3 07
00 00 00 00 00
00

Explanation:
data
5a 31
01 08
02 04
03 04
04 10

2e
00
00
00
00

34
c7
e7
09
01

39
73
3a
01
20

06 02 00 b8 22
00 01 00 00

36
7e
00
d3
ea

00
a3 f2 00 00 00
00
07
01 00 00 00 00 00 00 00 00 00 00 00 00

type

length

0x01
0x02
0x03
0x04

0x0008
0x0004
0x0004
0x0010

0x06
0x00

0x0002
0x0001

info
Z1.496 this is the null-terminated version-string
0xF2A37E73C7 = 1042125059015 milliseconds
0x0004; <info> 0x3AE7=15079 seconds
0x09=9 days in this month, 0x01= first month, 0x07D3=2003
0x01 0x20 0xEA 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 UUID of the zServer
0x22B8=8888 HTTP port
0x00 end of data

Page 42

The Exstreamer Technical Documentation for Firmware Version 08.05

2.2 zServer.ini file


The zServer.ini file holds up the configuration of the zServer. Important for the user is the section services. Restart the zServer if you change something in this file.
############################################
# section services:
# services are internally managed available to the launched classes
# supported services are:
# playlist
# scanns the given directory for playlists (*.m3u) adds this filenames avoid duplicate file names
# adding a number +. previous to the name
# shoutcast
# creates a buffered stream service on demand. does one download from the internet, clones
# internally saving bandwidth. talks shoutcast protocol for MP3 files. gives recording capabilities.
services{
# playlist;root
# [r] playlist: indicates to add this directory to playlistdirectories
# [r] root: the root directory to scan for playlist files
playlist;c:/CD's/Playlists
# shoutcast;snam;url
# [r] snam: the name of the stream to appear in the playlist, you have to care for it being unique
# [r] url: the url to stream from
shoutcast;groovesalad;http://www.somafm.com/groovesalad.pls
shoutcast;jazzmasterzz;http://www.somafm.com/special.pls
shoutcast;electro;http://www.somafm.com/electro.pls
shoutcast;secretagent;http://www.somafm.com/secretagent.pls
shoutcast;dronezone;http://www.somafm.com/dronezone.pls
shoutcast;squiddown;http://www.somafm.com/squiddowntemp.pls
shoutcast;indiepop;http://www.somafm.com/indiepop.pls
}

Page 43

The Exstreamer Technical Documentation for Firmware Version 08.05

2.3

Playlist Directory

The entry of the playlist directory is done by the configuration tool of the zServer configz.bat. This tool registers the playlist directory in the first part of the
service section. The format of this playlist directory is shown above.
If you have the playlists in more than one directory add a new line (playlists;) for each directory in the zServer.ini under the section services. The zServer
dynamically merges and sorts all playlists together. One exception are the internet radio stations which are always added at the end of the list.
If playlists are removed or added in this directories the zServer detects this and updates his list. Note: the Exstreamer takes over the changed playlists after one
minute.

2.4

Internet Radio Stations

The zServer is also able to serve internet radio stations to the Exstreamer. This feature is undocumented yet, but can be used if you register the radio stations in
the zServer.ini file. The pls playlist format as used from www.shoutcast.com or the direct URL to the radio station is supported. The playlist can be entered in the
format as shown in the example above. You also have to give the radio station a name. This name appears in the playlist frame of the Exstreamer.

2.5 Playlist Generator


With the Exstreamer setup a playlist generator is included. With this playlist generator it's possible to generate playlists from one or more directories and
subdirectories. Unpack the ExstreamerSetup.jar file which was installed in the setup path during execution of the setup with ex. WinZip into an own folder. To
start this command line tool for help, type in the folder where you have extracted this utility: java Dir2M3U
The generator in the setup uses the call: java Dir2M3U -s1 -ps -bn0 <MP3 Path> <M3U Path>

Page 44

The Exstreamer Technical Documentation for Firmware Version 08.05

3 Specification Playlists
The following remarks describe how the Exstreamer handles lists of playlists, playlists and songs. The Exstreamer basically communicates with a web server. This
could either be the Barix zServer (our own local java web server) or a standard web server. The Exstreamer finds its zServer automatically on the network. By
using a standard web server, the server PC has to have a fix IP address, which has to be configured in the Exstreamer's system setup.
To support the Exstreamers playlist functionality, the web server has to serve some certain system files, that give information about the servers playlists.
3.1 List of Playlists
A list of playlists is a file including all names (without a path) of available playlists on the system with or without an extension ("m3u" is used if not defined). See
section 3.2 for supported types. In this file, names are separated with one or more carriage return (cr ASCII 0dh), line feed (lf ASCII 0ah) or zero (ASCII 00h).
Normally the separator is one ASCII 00h. There mustnt be any HTML tags inside.
The Exstreamer shows exactly these names in the playlist frame (without the extension).
The Exstreamer gets the playlist from the server by doing a file request. If the system is using a zServer i.e. on IP 192.168.1.71, the request would point to
http://192.168.2.71:8888/playlist.html.
If the system is using a normal web server i.e. on IP 192.168.2.71, the Exstreamer gets the list of playlist file (playlist.html) on the standard HTTP port 80 (instead
of port 8888 on zServer).
The path to the playlists, the path to playlist.html and other system files can be configured in the Exstreamers setup. Also the IP port for the request of these files
can be configured.

Page 45

The Exstreamer Technical Documentation for Firmware Version 08.05

3.2 Playlist
The Exstreamer basically supports playlists with the extension m3u, "asx", "pls" (WinAMP, Musicmatch, Windows Media Player, etc.).
To get the contents of a playlist i.e. All Saints from the zServer the Exstreamer adds .m3u to the name (if there is no extension already present). It then
requests the file as follows: http://192.168.2.71:8888/All%20Saints.m3u.
If the system is using a common web server, the Exstreamer would request the playlist file on a standard HTTP port 80 (instead of 8888). The Server Path in the
STREAMING tab of the Exstreamer configuration defines the path where this m3u playlists are relative to the web servers root (/playlistdirectory/). Don't forget
the first slash (/) and the slash at the end. They are always needed.
If the zServer is used the path to the songs have to be absolute from the root.
The Exstreamer shows only the name of the file in the song list frame (no paths and no extensions). If the playlist is an "asx" or "pls" then the related title will be
showed.
3.3 Song
To get a song file the Exstreamer uses the complete path out of the playlist i.e. C:\MP3\All Saints\All Saints - Never ever.mp3. The file is requested from
zServers port 8888 with the argument: C:/MP3/All Saints/All%20Saints%20-%20Never%20Ever.mp3. Backslashes are generally replaced by slashes.
If the path is an URL i.e. http://192.168.2.71/All Saints/All Saints - Never ever.mp3, the Exstreamer checks for a zServer on the requested IP address. If the zServer
exists, the Exstreamer requests the file on port 8888. If there is no zServer (system uses standard web server), the Exstreamer requests the file on standard HTTP
port 80 resp. on the configured port in the setup. If there is a port in the URL this port is used to connect to the file.
The MP3 bitstream is expected on a random TCP port between 30000 and 39999, which is generated by the Exstreamer and transmitted in the TCP layer. If the
system uses a common web server the standard HTTP port resp. the configured port in the Exstreamer setup is used for the request. In this case the path until
and with : will be removed from the path.

Page 46

The Exstreamer Technical Documentation for Firmware Version 08.05

4 Hardware and Connectors


4.1

Ethernet

1
2
3
4

TX+
TXRX+
NC

5
6
7
8

NC
RXNC
NC

Yellow LED (right LED): Link ok if on


Green/Orange LED (left LED): green if 10Mbit, orange if 100Mbit

4.2

Serial Port
1
2
3
4
5

NC
RxD
TxD
9VDC
GND

6
7
8
9

NC
RTS
CTS
NC

TxD is short circuit protected.


VRxD +/- 15V
Max. Input Logic Threshold LOW 0.8V Min. Input Logic Threshold HIGH 2.0V
imax (RTS): 10mA
Imax (Exstreamer: 9VDC with supplied 9V power supply, Exstreamer Wireless and
Exstreamer Digital: 12VDC with supplied 12V power supply): 100mA. This pin is
connected directly to the power supply.

Transceiver: SIPEX SP3232E


4.3 RTS State
If the parameter RTS usage is set to 'activate AVR' RTS is set to logic 1 (-12V) during streaming. One minute after the last stream is stopped (not paused) it will be
reset to logic 0 (+12V).
This pin can be used to switch the source and/or power up your AVR for the Exstreamer. Be careful with this output and respect the RS232-C specifications.

Page 47

The Exstreamer Technical Documentation for Firmware Version 08.05

4.4 PIO3 (not for Exstreamer Digital)


PIO3 is the pin 15 on the audio module connector. The GND pin can be found on the pin 2 or 20. Use this pin at your own risk because it's connected direct to a
microprocessor port. The specification is a 5V-tolerant Input with Vmin = 0V, Vmax = 5.6V, Iinmax = 10A. The pin is driven by a weak pullup.

Pin Left
1
3
:

Pin Right
2
4
:

17
19

18
20

4.5 Codec
Built in is a Micronas MAS3509, MAS3519 or MAS3539 with the revision A2 (no S/PDIF support) or B4. For further information see Micronas' datasheets of the
codecs.

Page 48

The Exstreamer Technical Documentation for Firmware Version 08.05

4.6
All

Other Connectors
Exstreamer

Exstreamer Wireless

Exstreamer 100

Exstreamer 200

2
Name
Power
Headphone
LINE OUT left
LINE OUT right
S/PDIF OUT coax.
S/PDIF OUT optic.
IR IN
IR OUT
SPEAKER OUT
SPEAKER OUT

Exstreamer Digital / Gold

4
Nr
1
2
3
4
5
6
7
8
9
10

6
10

3
10

Gold only

4
10

10

Description
Power in, Center +9..24 VDC (Exstreamer +9..12VDC), Ring Ground, Consumption: max. 4 Watt
Headphone output, 3.5 mm Jack, 2Vpp max.
Line output left/right RCA, 4.2Vpp max. level (0 dbFs), SNR>85dbFs (Exstreamer Digital: SNR>90dbFs),
Frequency Response: -0.05dB (20Hz), 1.45dB (20kHz), THDN + N: 0.015% (0dBFs)
coaxial S/PDIF output, 32 kHz, 44.1 kHz, 48 kHz
optical S/PDIF output, 32 kHz, 44.1 kHz, 48 kHz
3.5 mm Jack Infared input for IR receiver
3.5 mm Jack Infared output for IR transmitter
Detacheable screw contact block for speaker cables
4 sockets for speaker banana plugs (4 mm diameter)

4.7 Thermal Characteristics


Working Temperature Range 0-50C Exstreamer Digital, 0-40C for Exstreamer and Exstreamer Gold
Humidity
0-70% relative humidity, noncondensing

Page 49

You might also like