Barix Instrimer
Barix Instrimer
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)
Page 1
Table of Contents
1
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
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
3
3.1
3.2
3.3
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Page 2
1.2
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
1.4
1.5
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
Page 4
1.8
1.9
Page 5
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
c=2
c=3
c=4
c=5
c=6
c=7
c=8
c=9
Page 6
PREVPLAYLIST
FASTFORWARD
FASTREWIND
VOLUMEINC
VOLUMEDEC
BALANCERIGHT
BALANCELEFT
BASSINC
BASSDEC
TREBLEINC
TREBLEDEC
SERIALBIN
LINEIN
MICIN
SHUFFLE
GETPLAYLISTS
c=10
c=11
c=12
c=13
c=14
c=15
c=16
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
L=getplaylists.ack
(old c=31)
L=getplaylists.ack
Page 7
GETACTPLAYLISTNAME
GETSONGPATH
GETSONGNAME
RECSTART
RECSTOP
RECSTATE
FORCEPAUSE
FORCEMUTEON
FORCEMUTEOFF
LOUDNESSINC
LOUDNESSDEC
FLUSHBUF
PRGFEEDBACKON
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
c=47
c=48
c=49
c=50
c=51
c=52
L=getsong.ack
Page 8
PRGFEEDBUDPBYTE
PRGFEEDBSERSEC
PRGFEEDBSERBYTE
PRGFEEDBTCPSEC
PITCHINC
PITCHDEC
SETRTS
RESETRTS
RESETLASTCTS
PRGFEEDBCTCPSEC
c=53
c=54
c=55
c=56
c=57
c=58
c=59
c=60
c=61
c=64
c=65
Page 9
RESETLASTPIO
STATEFEEDBKUDPON
STATEFEEDBKSERON
STATEFEEDBKTCPON
STATEFEEDBKOFF
REPEAT
VOLLOCKTOGGLE
LOUDNESSTOGGLE
DEFAULTS
GETNEWPLAYLISTS
DETECTZSERVER
DEVICERESET
BOOTLOADER
DISCOVER
PASSWORD
c=66
c=69
c=73
c=74
c=75
c=76
c=77
c=78
c=79
c=80
c=97
c=98
c=99
c=100
c=65535
Page 10
BASSM10
BASSM09
--BASSP00
--BASSP09
BASSP10
CONFIG
PITCHP100
PITCHP099
--PITCH000
--PITCHM69
PITCHM70
b=L10
b=L9
--b=L0
--b=R9
b=R10
B=-10
B=-9
--B=+0 or B=0
--B=+9 or B=9
B=+10 or B=10
C=
i=+100 or i=100
i=+99 or i=99
--i=+0 or i=0
--i=-69
i=-70
Page 11
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=
Page 12
GETDYNFILE
PLAYROMSONG
PLAYLISTSCOUNTTO
BUF
PLAYLISTSCHARTO BUF
VIEWPLAYLIST
PLAYPLAYLIST
l=0
l=1
--l=20
L=
m=
n=1
--n=65535
N=A
--N=Z
p=1
--p=65535
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://
Page 13
r=
S=1
--S=999
S=http://
S=udp://
t=-10
t=-9
--t=+0 or t=0
--t=+9 or t=9
t=+10 or t=10
PLAYSONG
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
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=
v=0
v=1
--v=20
Page 15
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
(s=udp:// )
Page 16
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>]&
L=getconfig.ack
(L=getconfig.ack)
Page 17
Page 18
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
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
Length
[Byte]
4 0.0.0.0
1 0
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
1 1
33
2 0
14
Page 20
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
S138
S146
S154
S162
B239
1 1
1 3
2 894
8
4 0.0.0.0
Page 21
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
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
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
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
682 W682
2 0
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
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
Pictures
4to0.gif
active.gif
activei.gif
barix.gif
exstreamer.gif
menu.gif
Settings.gif
view.gif
9
9
9
9
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
9
9
9
Page 26
showed after pressing apply or a reboot of the device is needed until the device has rebooted
9
9
9
9
Remote Control
remote.ini
Java Script
util.js
Page 27
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
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
Page 29
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)
0xFB0000
0xFC0000
0xFD0000
0xFE0000
Page 30
Page 31
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 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
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
Word Value
Function
Function
Fifo Function
10
Function
11
Function
Page 35
Page 36
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
Page 37
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
Byte (integer)
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
Page 39
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
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
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
Page 43
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
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.
Page 44
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
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
Ethernet
1
2
3
4
TX+
TXRX+
NC
5
6
7
8
NC
RXNC
NC
4.2
Serial Port
1
2
3
4
5
NC
RxD
TxD
9VDC
GND
6
7
8
9
NC
RTS
CTS
NC
Page 47
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
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
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)
Page 49