SIR80 software v1.2, 21 September 21 2011 (latest version)
Software compatible only with 'new' SIR80 (also SIR80EV) hardware, which has 'MMC SD SDHC' text next to the card connector.
[V1.12] --- (21 November 2011)
- Fixed: Buffer administration was not initialized if connection to stream did not succeed the first time.
- Fixed: Playerstatus history updated properly.
[V1.10] --- (27 September 2011)
- Major update! Code review/update and optimization. Integrated many changes/fixes implemented for the cej project (SIR100/SIR120(PRO)/SIR150 devices).
- Fixed memory leak that would occurr when proxy was used.
- Added restart and pw commands, which can be used to reset and power the device on/off from command line.
- Improved flow in SIR80 for EV functionality; solves an issue with sIKN-type streams.
- Fixed: There was an issue with using more than 18 playlists on the card.
- Fixed: Issue with parsing a port from the URL for ports higher than 32767.
- Reduced maximum size of playlist and configuration file to 3000 bytes.
- If an issue is detected with the external flash, the device is blocked, but it is still possible to communicate with the device from the command line.
- Changed default platform name and URL to device portal (was ChannelService).
- Fixed: out of boundary issue; few strings were being written to arrays which were not large enough.
- Don't enable VS-interrupt again in VsPlayerStop() after stopping!
- Selftest of serial flash now also tests that reading and writing is successful.
- Error log message is printed if reading of writing to the serial flash fails
- Processing of config file is stopped with and error if a serial flash issue is detected.
- Fixed: issues in eeprom reset; would try to write to addresses outside the EEPROM boundary.
- Improved parsing of parameters/values and response for the command line.
- Improved streaming algorithm; buffer management and reconnect strategy during read timeouts.
- Reduced start-buffer size to 128kB. Reduced the start-play time to 5 seconds (if start-buffer was not yet reached).
- The buffer level indicated in the logs, would not be updated properly when device would not get any data.
- Sometimes the device would enter a state in which it would not play but continuously buffer. This is now detected and the device is reset.
- Improved recovery procedure used in case of issues with the audio being played (e.g. invalid audio). The same is used for both streamer and card (reset buffer administration, reset VS hardware and software).
- Resort to fallback from card, only when a card is present and there is at least one playlist available on the card.
- Improved the menu handling for the keylock implementation.
[V1.8] --- (21 June 2010)
- Solved issue for SIR80EV - device would not re-connect to a stream in case the stream was of type playlist.
- Fixed issue in the DHCP implementation (Nut/OS 4.3.3.2 (Streamit)).
- Added extra logs to the card driver - CID is read after mounting the card.
[V1.6] --- (09 October 2009)
- Small fix in URL parsing; the '@' character only indicates credentials when not part of the path.
[V1.5.1] --- (11 September 2009)
- Added support for proxy (basic, username:password) authentication.
- Solved bug: URL parsing; for some URL constructions the host address, port and path were not properly extracted.
- Solved bug: Mp3Selftest - beep not audible.
[V1.4] --- (08 September 2009)
- Playlists shorter than 100 bytes are now supported.
[V1.03 B03] --- (31 August 2009)
- The time required to open a playlist (CARD) is now much shorter.
[V1.03 B02] --- (10 August 2009)
- Changed re-connect strategy for SIR80EV.
[V1.03 B01] --- (06 August 2009)
- Do not sent Range header in the request for SIR80EV.
[V1.02] --- (24 March 2009)
- Compiled with Nut/OS 4.3.3.2 (Streamit)
- Some code cleanup and small modification to the card (mounting) routines.
[Known Issues]
- Some problems were noticed with (mounting) 2GB SD and 8GB SDHC.
[V1.01 B02] --- (10 March 2009)
- Compiled with modified NutOS (see solved bugs below DHCP & Timer)
- Major change of the flow, based on 'cej' software for SIR100/SIR120(PRO)
- Removed stream encryption support for SIR80.
- Software update URL can be changed from database now: IspUdUrl="url"
- Software update can be enabled/disabled from database now: SwUdEnable=0 (off) SwUdEnable=1 (on)
- No database update will take place when switching between Card/iNet.
- When playing from card, the last played song is saved when powering the device off or when switching from card to iNet.
- When powering the SIR on or pressing the ALT key to start playing from the card, the "Last-Played-Song+1" from the "Last-Played-Playlist" with start (when valid).
- When internet is gone, SIR will try to reconnect once before it falls back to card.
- In case the internet stream is gone and the SIR is forced into the fallback situation, the playlist that is choosen to play
from should be the of same genre as the internet stream. This means that the SIR must use the playlist on the card that has the
same ID as the station that was played. In case the playlist with the particular ID doesn't exist on the card, the SIR
will start playing from playlist 1.
- In case of fallback, we start with a random song...
- The SIR will not fallback to or switch to card (ALT-key) in case no card is present.
- The SIR will not switch to iNet when no stations are available.
- Improved read performance. Bitrates up to 224kbps are now supported properly.
- Added implementation for CustomerZero (password protecting the settings of the device).
- Improved some log messages
- Fixed: Persisting text "connecting" on display when no card or no playlists are present
- Fixed: When there are no channels in the device, the behaviour should be improved
- Solved bug: Wrong track title was shown in case a track was skipped (e.g. bad audio).
- Solved bug: SIR would enter the configuration wizard when updated to a release version.
- Solved bug: DHCP lease time was not being renewed.
- Solved bug: Timer bug in NutOs was solved.
[V1.01 B01] --- (18 September 2008)
- Keylock works now
- Software update strategy improved. On the Streamit update server, only released software versions will be placed.
- In previous versions, the wizard started after every software update. Now the wizard only will start if necessary.
Release history:
[V0.05 B15] --- (14 May 2008)
- changed password for basic authentication to "admin".
- Changed WMA parser, padding length is now written in 1 byte.
- "Content-Type: "audio/x-ms-asf" is also considered as an asx playlist.
- Using a new version of the wma patch (SIR100 only).
- Reduced the maximum number of retries when getting bad responses to 3 (was 5).
- Removed some "too technical" log messages.
- Added HTTP proxy support. Only possible to configure via STPv2.0.2 or higher.
- Added OggVorbis (merged CP/Ogg) patch (SIR120/SIR120PRO only).
- VS patches are now loaded with VsPlayerReset() and not with VsPlayerKick().
[V0.05 B14] --- (25 March 2008)
- Solved bug introduced in version 00.05.13 (@ ProcessLCF - IspDbUrl would change the IspName)
- Maximum channel URL is now 254 characters for all modes...(was 255 only for mode 3, now 254 for all 3 modes).
- Increased stack size of UART thread to 1024.
- Updated ChannelService URL.
- !!! Only Applicable for Mode 1 - Use settings from the device's firmware: After your SIR device is updated to this version, please perform a reset of your device from the service menu.
[V0.05 B13] --- (13 March 2008)
- Added ASX playlist support. Only supported in SIR100/SIR120(PRO)
- Split request Pragmas from Useragent. Changed the progmas.
- Added File/Stream types for AAC+ and OggVorbis. Updated StreamValid() for OggVorbis.
- Increased maximum request length to 512 bytes.
- !!! Channels are now saved in Flash not eeprom anymore - If you use your device in mode 3, please program the channels one more time.!!!
- Maximum channel URL length increased to 256 characters.
- Long playlist supported for card (Number of entries is "unlimited" - maximum 65535)
- The tag 'NumberOfEntries=n' (card playlist) needs to be placed BEHIND all entries
- Maximum filename length for card is now 50 characters.
- Added cuepoint patch for VS1053
- Changed the ALT key function when in "Insert Card" state...will go to Select channel state, not play channel.
- Solved bug introduced in process audio with wma.
- Solved bug - SettingsSetNumberOfChannels() will stop counting when it finds an empty channel name.
- Solved bug in Streamit's encryption algorithm.
- Solved bug - inf file name was not defined for SIR120.
[V0.05 B11] --- (16 January 2008)
- Increased maximum number of channels to 32. As a result channel URLs are limited to a maximum of 90 characters.
- Firmware update can be forced from the Service menu
- Encrypted streaming support
- Improved switching between card / internet
- Improved encryption key upload
- Bug solved in HTTP authentication
- Scrolling text support with playing from card
[V0.05 B10] --- (03 December 2007)
- Display Title when playing from card
- Support Winamp generated playlists (no need to modify the file)
- Solved some hanging problem
- Pressing preset buttons (1-5) will directly switch to the corresponding channel
- Added command for Netmask (SIR-STP)
[V0.05 B09] --- (02 November 2007)
-Added defines for SIR120_PROD
-Added support for wma files (not valid for SIR80)
-Added support for wma streams ('http' and 'mms-over-http'- not valid for SIR80)
-Changed the structure or http request (see example of new request - not valid for SIR80)
[GET /Skyradio HTTP/1.0
From: SIR100/00.05.09 s/n:1234A
User-Agent: NSPlayer/4.0
Pragma: xPlayStrm=1
Host: 81.23.249.10
Accept: */*
Icy-MetaData:1
]
Known Issues:
-Not all mms streams are supported (please send comments about your test results at sirsupport@streamit.eu)
-No metadata supported for wma yet
[V0.05 B08] --- (23 October 2007)
- Fallback to card major improvements, including menu messages
- Interval between 2 internet reconnects reduced from 45 seconds to 15 seconds
- VS10xx startup improved, to solve some 'Invalid Audio' message problems
- Solved problem when inserting Card during internet playback
- SIR120 added (this device also supports Ogg Vorbis & AAC+ decoding)
[V0.05 B07] --- (28 September 2007)
- Sir80 - BASS/TREBLE settings removed
- Fallback to card major improvements
- Encryption key upload major improvements
[V0.05 B06] --- (14 September 2007)
- Sir100 streaming works without distortion now
- First version of fallback to card implemented
- SPI speed improved for card and flash memory
[V0.05 B05] --- (07 September 2007)
-Fixed IP bug has been resolved
-The (already buffered) last part of the file is now played.
-Added functionality for playing/working with playlists; non-existing songs are skipped.
-Switch between Card/iNET now works fine.
-Added vs1053 support and code for wma broadcast support.
-SPI speed has been improved.
-Added support for playing encrypted files from Card.
-Fixed bug: Noise when reconnecting after timeout.
[V0.05 B04] --- (10 August 2007)
-Removed AUDIOserver from list of provider.
-Default provider (Streamit) was renamed to ChannelService.
-Removed redundant ISP settings (Username,Number and Password)
-We do not erase the channel database when performing database update (Mode1/Mode2).
-Added "passw.h" file to store developer/installer passwords.
-3 languages support was re-enabled.
-Small fixing of messages shown in the logging.
[V0.05 B03] --- (4 July 2007)
-This is a temporary release for "cei" products.
-The authentication string was set back to SIR80+ID.
-The retry timeout was brought back to 45seconds.
[V0.04 B01] --- (23 May 2007)
- New STP interface through new command module.
- Selftest major rewrite.
- Audio levels limited to stay within range.
- Handle constant empty string more efficiently.
- Display module cleanup.
- Display animations removed.
- Removed MMC parts from Keyboard module.
- Improved IO init at bootup.
- Display VS type at bootup.
- Remote control can be en/disabled.
- cleaned up log module.
- InetOpenRequest now returns proper error codes again.
- MMC module nicely split up into internal & external part.
- Fixed range checks on channels and songs in many modules.
- Update will now only show update failed if it actually did.
[V0.03 B08] --- (2 May 2007)
- Update URL for Audioserver added.
[V0.03 B07] --- (17 April 2007)
- Added German language.
- Minor fixes in NL language.
- HTTP authentication fixed.
- WatchdogStart simplified.
- Player did not always fall back to card when it should, fixed.
[V0.03 B06] --- (11 April 2007)
- Remote firmware fixed.
- Streamer errors are now always handled properly in menu.
- Setup menu: now displays the current settings when entering the Language, Provider or Network settings.
[V0.03 B05] --- (4 April 2007)
- Streamer: now returns an error if it cannot get a URL for a channel.
- Settings: bUdEnable is no longer written with incorrect method.
- Settings: In mode 3 channels are no longer erased when resetting to factory defaults.
- Fixed situation when no channel was chosen or no channels to choose from.
- Fixed when pressing Esc in the language menu the language is not changed.
- Menu no longer assumes DHCP when the IP address is 0, it now uses the settings flag.
- Fixed some minor display texts.
[V0.03 B04] --- (21 March 2007)
- Update now takes into account the Beta number when checking for updates.
- New cea tool to generate the .inf files.
- Version number now displayed as Major.Minor.Beta.
- Player module now is the controlling module for playing audio.
- Player and menu no longer share the currentchannel and max.
- Fill empty strings by copying to first position.
- ALT key functionality updated.
- Selftest from menu no longer causes watchdog reset.
- Streamer retries and waiting times reduced to speedup error recovery.
[V0.03 B03] --- (8 March 2007)
- Fixed playlist functionality.
- Added 'powering off' display message.
- cleanup of fat module.
- Many small fixes for using constant strings.
- Increased watchdog timeout to 2 seconds.
- Fix empty display lines when playing a channel automatically after powering up.
- Removed limitation of number of songs on a memory card.
- Use Sir80 in dhcp and http requests.
- Number of built-in providers now limited to Streamit and Audioserver.
- Vs10xx module now uses chipselect.
[V0.03 B02] --- (27 February 2007)
- Cleanup of display module.
- More use of PGM_P. Still not finished!
- fix metadata in case a ' was in the name.
- Remove 'connecting' from first line if no meta data.
[V00.03 B01] --- (15 February 2007)
- MMC-driver and FAT module added (mmcdrv.c/h, fat.c/h, fatdrv.h
- Makefile: add new modules using a macro-condition
- display.c: > use GCC method for storing strings
> use prog_char for User defined char table
- keyboard.c: > make start for cleaning driver
> remove 'KbSignakey()'
- main.c: > beeps removed
> treat Backlight different to avoid flickering
> cleanup code for productcode selection
- menu.c: > rename Menu-states for better readability and testing
> remove LED-behaviour for Keylock-unlock state
> move STATUS_POWER updates to 'SysPowerOff()'
> several small readability improvements
- mmc.c: > add hooks for new MMC/FAT driver (temporary)
> call 'VSPlayerInit()' in 'MMCStopVsCardSession()' to kill song
- player.c: > move STATUS_POWER updates to 'SysPowerOff()'
> remove non-call to 'NutSleep(500)'
- settings.c: > remove AudioServer and Solcon ISP's
- update.c: > move STATUS_POWER updates to 'SysPowerOff()'
> remove calls to NutDelay(255) (avoid busy-waiting)
- vs10xx.c: > remove SPI-mode code and busy-waiting parts
> put internal VS-application codebytes only in ROM, not in RAM
> remove debug code
- selftest.c: > use prog_char for User defined char test tables
- watchdog.c: > now works for Mega256 as well.
- typedefs.h: > include NutOS typedefs as well
- Metadata support
- When 'Idling' the SIR now stays on and displays a countdown timer and status.
- Fixed watchdog reset after wizard.
- Fixed watchdog reset during selftest.
- Makefile: Introduced new macro to check for operating system version in the firmware.
- Makefile: From now on the flag DEBUG should be turned off when building a release.
- Added DHCP flag to the settings.
- Saved 4K of RAM.
- TCP connections use a bigger (like before) receive window to give better skip protection.
- Added CUstomer ID to the settings.
WARNING: This version will only play if you never loaded a previous software version!!!
(this means: clear your EEPROM contents if upgrading from a previous version
since the EEPROM layout is modified in this release)
[V00.02 B02] --- (09 February 2007)
- Register read bug VS10XX solved
- Debug Logging turned off
- communication & protocol module removed (comman.c/.h and protocol.c/.h)
[V00.02 B01] --- (02 February 2007)
- DREQ bug VS10XX solved
- low bitrates bug solved
- text of 'Keylock' screens changed
- communication & protocol module added (comman.c/.h and protocol.c/.h)
[V00.01] ------- (25 January 2007)
- First Release.
- Remote Update: disabled updates on beta versions for easier testing and maintenance.
- When the Sir80 is turned on, it will keep playing a channel indefinitely until the user
presses the power button to turn it off.
[V00.01 B11]
>> Michel comments:
- Main.c en Menu.c: aanroepen naar SystemMelody(OFF) uitgezet omdat deze een keiharde vastloper veroorzaken.
- Main.c: Test toegevoegd die laat zien of het een bedoelde reset of een watchdog reset was.
- Main.c: Syspoweroff heb ik SystemMelody afgezet omdat daardoor de reset source altijd de watchdog wasÖ
- Main.c: Syspoweroff heb ik verbeterd en reset source toegevoegd.
- Selftest.c: gebruik settingsset zodat wd werkt.
- Settings.c: watchdog tijdens schrijven naar EEPROM.
- Settings.c: fix voor bUdEnable in SettingsToDefaults.
- Streamer.c: indent goed gezet.
- Watchdog.c: small improvements.
[V00.01 B10]
- added EV-functionality (Michel)
- problem with re-starting the one-shot timer seems fixed (keylock)
- attempt to get a consistent UI when starting and switching between channels
[V00.01 B09]
- Keylock completed. Implicit reboot no longer causes the Keylock to get active again. LED will flash during the
30 seconds that the keylock is disabled after entering a valid PIN. Disabling the Keylock works OK now.
LCD second line is cleared after the exiting the PIN-editor.
- Re-starting a single shot timer seems not to work in NutOS. So restarting the 30 seconds after each new keypress
is removed from the code. Re-starting was done by stopping-starting the timer, but that has no effect (only that
a final stop of the timer doesn't work anymore). We have to figure out how to re-start a running single-shot timer.
- Makefile: now make use of $(NUTBASEPATH) and $(TOOLPATH) MACRO to make code more portable between Streamit
and PragmaLab
[V00.01 B08]
- Keylock added in Setup and normal application (menu.c). Keylock results in asking the user to enter a 4-digit
PIN when pressing a key. Only [1..5] can be used in a PIN-code. After the user entered his PIN, the keylock is
disabled for 30 seconds, then the keylock will get active again.
When a keypress would imply a (implicit) reboot, the keylock is activated again right after the reboot, not
after the 30 seconds. During the time the Keylock is inactive because the user has entered the PIN, each
keypress will give another 30 seconds
There is always a Master PIN (1242) to de-activate the Keylock or the enable the keys
tested Enabling and Disabling the keylock in the Wizzard mode and in the Setup mode. Tested active keylock in
application and tested the timeout procedure. Works OK, except for the situation in which the user wants to
deactivate the Keylock in case it was activated..... needs to be fixed. Also the second line on the LCD is not
always cleared. Needs to be fixed in Beta 09..
- Makefile simplified: enable one of three productypes (sir80, sir100 or sir100pro) and the appropriate macro'
are auto-set
[V00.01 B07]
- remote update enabled. Some small modifications made to be compatible with GCC & ICc. Tested with the
ceb_sir80.hex bootloader (bb.6) on local and remote server. we have some 5KB codespace left at this moment for
the Mega128 (sir80).
Testing the remote update for the Mega256 platform (sir100 & sir100pro) fails when uploading new binary
in segmented RAM. For now we blame the 'not-so-stable' 256 platform for this.
- Makefile now generates 'update_sir80.inf', 'update_sir100.inf' and 'update_sir100_pro.inf'
Note that 'cea' still generates a 'update.inf' like before and this one is renamed by a
copy-action in this Makefile
- in 'update.c' we need to look for a specific 'update_sirxxx.inf' file now iso the standard 'update.inf'
- in 'update.c' a filesize-check for Mega256 is introduced (was only for Mega128)
[V00.01 B06]
- 'ver' command modified: now reports version of appliation, bootloader and NutOS
and reports product codes of application (ceh) and bootloader (ceb for 128, cee for 256)
- version.c modified to be able to report the new versionnumbers
Note that the 'ver' command also reports the product-type for application and bootloader. This is the
type that de SW was build for, not the type that was detected runtime
[V00.01 B05]
- Selftest ('e' on LTP) now generates 3 beeps when testing the VS100X. L, R and L+R
- modified logging at startup to distinguish between SIR80 and SIR100
- #SIR80_PROD, #SIR100_PROD and #SIR100_PRO_PROD defines introduced in Makefile and code
Note that still the producttype is autodetected at startup, but we need a mechanism to match build-time
and runtime results. For that we use these new #defines, only in 'main.c'. Everywhere else, the EEPROM
variable 'GenPurByte' should be used.
[V00.01 B04]
- added 'PROD' specifier in Makefile (sir80, sir100 or sir100_pro)
- modifications done for productiontest:
- start LCD-test by holding '1' for > 2 secs (in OFF-state).
Note that keys in this case are detected by the Background handler (menu)
which will result in a bit slower respons then when starting the LCD-test
using LTP with 'e' (which uses the foreground handler).
- Balanced output test now sets 1 KHz to L+R as well, so has 3 states now (was 2)
- LCD-test shows LCD-patterns only once now and more slow (900 msecs/pattern, was
300 msecs/patern)
- [OK] key now recognized in OFF state as well during LCD-test (bug solved)
- after running selftest ('e') and LCD/keyboard-test ('l'), ceh will
go to the OFF-state)
- start 'Setup/Service' with [OK] + [ESC] (was: [OK] + [POWER])
- pressing [ESC] in 'Setup' or 'Service' brings SIR to OFF-state (was: reset)
- use special 'Log' routine to show start-up-messages at start-up
- detect Product code ('SIR80', 'SIR100', etc) at startup and show in logging
- validate 'General Purpose Byte' at startup
- !!!! EEPROM LAYOUT CHANGED !!!!. in case you load ceh in a device that previously
contained an earlier version (or other sw-product like cec), make sure you erase
EEPROM contents completely (set 4096 bytes to 0xFF) . JTAG-programmer can do this....
- added 'productcodes.h' to the project (should be the same file as used with the
bootloader)