Swan proposal

From S1MP3 Wiki
Jump to: navigation, search
This page can only be edited by authorised members of the Development Team.
If you want to join the team please contact us via the mailing list.
We are always recruiting for both technical and non technical roles.

SWAN Firmware for ActionsTM 20xx based Personal Multimedia Devices


When a manufacturer releases a new product, they work with a limited number of staff and to a tight deadline. These limitations in resources are, sadly, reflected in the limitations of the firmware that the manufacturer is able to supply.

With more programmers and unlimited time, a product can always be improved. The s1mp3.org project is set up to achieve just that. Although we all work for free, we are an enthusiastic and organised team with no corporate deadlines to stifle our creativity.

ActionsTM have supplied the world with some incredible technology. The SWAN Firmware will unlock the true power of your ActionsTM based MP3 Player. Think of it as putting finely tuned Formula-1 Engine in your Rolls Royce.


The SWAN Firmware is being developed using the Free-BSD licencing model. That is, all source code, documentation* and development tools will be made available to the public domain. Unlike GPL, Free-BSD allows the licensed work to be incorporated into commercial products with no penalty.

SWAN Firmware Features

The SWAN Firmware will completely replace the default firmware supplied by ActionsTM.

The System Initialisation Code ("Bootstrap" or "Loader") and Operating System Kernel will be stored in ROM and execute automatically when The Player is switched on.

Further control of The Player will be under the direct control of The User and implemented by the use of various "Applications". These Applications reside in the Main Flash Memory and are loaded & executed on demand. For clarity, they are divided in to the following groups:

  1. System Applications
    Features essential to accessing the primary functions offered by The Player. Such as 'Radio Tuner' or 'Voice Recorder'.
  2. User Applications
    Non-essential features such as 'RSS reader' and 'Address book' etc.
  3. Games
    A wide range of games including Playing Card Games, Board Games, Logic Puzzles, Classic Arcade Games, etc.
  4. Plugins
    Applications which add visual or audio functionality to The Player. Such as 'Synchronised Lyrics Display' ('Karaoke Mode') or 'Graphical Visualisations'. Plugins will not be directly executed by The User, but by the Kernel, based upon the data stream being decoded, and the way in which The User has configured The SWAN Firmware to behave.
  5. Utilities
    Applications that do not fall in any of the above categories will be classified as "Utilities". This already includes such Applications as 'Memory Analyser' and 'ROM Dumper'.

Software Development Kit (SDK)

The SDK will be provided, free of charge, in two parts:

  1. Tool Chain
    This will include all compilers, linkers, etc. required to produce executable code for The Players.
    Three Tool Chains will be available. One each for Windows, Linux and Mac.
  2. Source Code
    The Source Code will be supplied by both SVN (for active developers) and Tarball (for 'bedroom coders').

SWAN Firmware Features

The Kernel

  1. Assembler optimised core
    All timing critical functions will be coded in pure Z80 assembler to ensure optimal performance of the OS Kernel.
  2. Multitasking
    When music is playing the user may execute any Application without disturbing playback.
    By example, a user may listen to music while playing a game or reading an e-book.
  3. Kernel Switching
    An Application may be suspended at any time to allow the user to review details of the track playing, or change the playlist. This task switching is handled by The OS Kernel to ensure compatibility with all third-party Applications.
  4. Memory Manager
    A comprehensive Memory Manager will be implemented to allow such things as Memory paging, Dynamically Linked Libraries and Code relocation. This will allow The SWAN Firmware to exceed the 16K ZRAM limitation suggested by the hardware design.
  5. Load-Balancing Flash Algorithm
    To increase the lifetime of The Player, The SWAN Firmware will implement a Load-Balancing Flash Algorithm during writes to the Main Flash Memory.

Programmers' Interface

  1. Open Source 'C' Codebase
    All non-critical code will be written in ANSI 'C' for accessibility and portability.
  2. API Interface
    All Applications will have access to the full SWAN Firmware API, allowing full control over the features offered by the ActionsTM hardware.
  3. Flash Memory (NAND)
    Secure storage and other encryption systems
  4. Buttons/Keyboard
    More research currently needs to be done to find out whether multi-button keystrokes are possible.
  5. USB Port
    More research needs to be done to find out what level of control we have over the USB port, but it is anticipated that The Player can be controlled remotely by the PC; behave as a 'Games-Pad' (HID); USB Sound Card or FM Receiver.
  6. DSP
    At this time, little is known about the DSP, but it is anticipated that alongside Audio and Video CODECs, we may be able to use the DSP as a Tone Generator, Wave Analysis Tool and 3D Graphics Processor (GPU).
  7. Screen'
    A comprehensive graphics library complete with text and sprite handling functions for games and other User Applications. The screen will also be available to the PC as an output device.
  8. I2C ("I squared C")
    Both direct access to the i2c bus, and helpfully-named wrappers will be offered to the programmer.
  9. Hardware Independent API
    The SWAN Firmware is designed to run on any device which uses the ActionsTM 20xx architecture, this implies that keyboard/button input and screen displays will vary from one Player to another. The SWAN Firmware API is designed to work on all registered Players, and flexible enough to seamlessly support new Players as they are developed.
  10. Extensible Design
    Throughout the SWAN Firmware, consideration will always be made to future hardware enhancements (which can be anticipated).
  11. PC Simulator
    The SWAN interface may be simulated on a PC to aid in the efficient production of Applications. Hardware dependant development (such as that which requires access to the DSP) will still require testing on real hardware.

Installation and Updates

  1. Automated Installation Process
    To remove any risk during the installation or upgrade, the process will be controlled and monitored by a user-friendly and intelligent PC utility. This means that no matter which player the user owns, he always downloads the same SWAN Firmware Installation Program.
  2. Easy Updates
    New Applications may be added by simply dropping the Application into the system folder on The Player.

Users' Interface

  1. The Main Application (AppMain)
    This special application is loaded by the Kernel when it finishes initialising the hardware. It is the gateway program to the features of The Player, and offers such options as 'Configuration', 'Music Player', 'Application Loader', etc.
    1. Skinnable
      AppMain will be fully skinnable and configurable by means of a plain text configuration file.
    2. Customisable
      AppMain may be completely replaced by the user if desired without updating The Kernel. This means that the user is not tied-down to the default SWAN interface.
  2. Speech Interface
    It will be possible to enable speech-guided Menu and Music navigation. This is especially useful for in-car entertainment or to offer accessibility to blind users.
  3. Player Customisation
    All basic behaviours of The Player will be controllable from a plain text file on The Player. This will include such options as: Startup Application (AppMain); Default Play Mode; Language; Screen Contrast; Power-on Volume; etc.
  4. Scripting Language
    The SWAN Firmware will offer an user-friendly Scripting Language. This will allow The User to write simple Applications without learning 'C' or Z80 Assembler.

Audio & Video Support

  1. Audio File Formats
    We will support as many audio formats as possible. The list will depend on a number of factors. At present we expect to include full support for the following list: WAV; ADPCM; MOD; XM; S3M; FAR; MP3 Layer 2 & 3; WMA; OGG Vorbis; more...
    The SWAN Firmware will track the play position of Audio Books, Albums and M3U playlists. It will also offer the option to "Resume Play On Boot".
  3. While Playing Screen (WPS)
    When an audio file is being played, a screen displaying details about the track will be displayed. This screen is user configurable and can display information such as: Tag information from ID3v1, ID3v2, APEv2; bitrate; channel information; time elapsed; peak meter; etc.
  4. Lyrics
    All popular lyrics formats will be supported including ID3v2 Lyrics and the CD+G (Karaoke-CD) file format [.CDG]
  5. M3U Playlist Support
    Full M3U playlist support will be offered.
  6. Recording
    Recordings may be made from either a Microphone or FM Receiver if The Player offers such features.Work is currently underway to write a document on how to modify the hardware of a Player which does not come with these features as standard.
  7. Video File Formats
    For The Players with video support, we will support as many video formats as possible. The list will depend on a number of factors. At present we expect to include full support for the following list: AMV; MTV; more...


» Registered System Applications

  1. Text Reader
    For plain-text files
  2. Image Viewer
    This may be limited by the screen fitted to the The Player. Supported file format include: BMP; JPG; GIF; PNG
  3. Voice/FM Recorder
    Offering features such as 'Record Ahead', so record may be pressed AFTER the song has started without missing the start of the song!
    Note: Not all Players offer these features

» Proposed Applications

  1. Address Book
  2. DTMF tone generator / Autodialer
  3. Offline RSS Reader
  4. Offline EMaiL Reader
  5. Tetris (clone)
  6. Othello (clone)
  7. Klondike Solitaire
  8. Metronome
  9. Guitar tunner
  10. Many more...

Glossary of Terms

  • ActionsTM
    The manufacturer of the ATJ 20xx series All-In-One Multimedia IC's
  • A Player / The Player
    Any retail player which is built around the ATJ 20xx architecture.
  • A User / The User
    Any person who uses A Player.
  • (The) SWAN Firmware
    The new firmware for Actions(tm) based Players
  • Non-Disclosure Agreement (NDA)
    An agreement the information will be awarded to specific individuals. These wards are restricted from releasing the information, but may offer advice and help based upon the information.
  • The System Initialisation Code
    Often referred to as a "Bootstrap" or a "Loader" this portion of a firmware prepares the hardware for use when power is first applied.
  • Kernel
    This portion of the firmware mediates the interaction between Applications and either hardware or other Applications.
  • ROM
    In the ActionsTM chips this is technically EEPROM (Electrically Erasable and Programmable Read Only Memory). Any code or data which exists in this portion of memory may ONLY be modified during a Firmware Upgrade Process.
  • Main Flash Memory (NAND)
    This memory is the main storage memory for The Player. It is used to store music and video files as well as SWAN Applications.