PolyOS


PolyOS is the operating system we have created from scratch to suit the VoltaStream boards perfectly. No other manufacturer of similar single-board-computers does offer an OS specially designed for audio usage. Thanks to PolyOS the configuration is easy, all hardware features are always perfectly supported and you have actually a contact that cares about your wishes. No large developer community involved and with only the VoltaStream boards in mind new features und updates can be rolled out very quickly.


Streaming Services

The most important aspect of PolyOS is the support of various audio streaming technologies. Thanks to the general open source community all major protocols are available. Instead of just including those bare projects in our OS we care for prefect user experience. Thats the reason we are applying several modifications to them.

Currently integrated technologies:

 

 

Technologies on our roadmap:

 

  • Android and iOS app
    • for even easier setup and usage
  • Webradio
    • listen to internet radio stations all around the world
    • depends on the app for playback control
  • Multiroom
    • distribute your music to other VoltaStream boards
    • depends on the app for easy setup
  • In-room audio distribution
    • useful for wireless right/left speakers
    • part of the multiroom integration
  • Alarm timer
    • depends on the app

 

Audio drivers

The audio drivers for the IC’s we are using on the VoltaStream boards are either written from scratch or modified for prefect integration. Again an advantage that can only have a manufacturer that maintains its own OS for a specific application.

 

VoltaStream ZERO

VoltaStream ZERO includes a TI PCM5121 digital-analog-converter (DAC) with embedded audio processing and volume control. We have not only ported that driver to our custom Linux tree but also modified it slightly. Preventing the DAC from going into power-down mode avoids the outputs becoming high-Z. The default behavior of the upstream codec driver conflicts with several active speaker that have signal-detection and auto on-off switching capabilities. They are starting to hum when playback ends and will never switch off. Thanks to our modified driver no such problems with VoltaStream ZERO!
Currently the audio processing feature is not supported but we have it on our roadmap and will come up with a solution soon.

 

VoltaStream AMP1

Our network amplifier contains a special class-D chip. ISSI IS31AP2121 is a really smart amplifier. It not only offers digital I2S input and completely digital amplification but also an easy to use signal processor (DSP). Thanks to our driver written from scratch, hardware volume and tone control was never easier. Simply use the ALSA interface (e.g. alsamixer) for changing volume, bass, treble and balance. Of course the streaming services are directly using the hardware volume control, too. Later the tone control settings will also be available via our app.
Again a really unique solution that no other SBC offers. With other boards you would have to use complicated software based solutions that are causing headache for many hours and may not work correctly.
Of course there is also an ALSA driver for the PCM1862 analog-digital-converter as well as the TOSLINK input fully integrated.


 

Update Mechanism

A really important point is the delivery of updates. As you might not want remove the SD card to reflash the whole system for an update we had to come up with a clever solution. There are two possibilities for applying updates. Atomic and non-atomic ones. Non-atomic ones are usually based on replacing packages on a single rootFS. That is fine for normal desktop environments but not that optimal for embedded systems. If something goes wrong during the process you might end up with a system in an undefined software state or even completely broken.

This is the reason we have decided to go the atomic way with PolyOS. There are two rootFS partitions and a third one for storing user data. By default the bootloader starts the system from rootFS-A. If there is an update available the updater on rootFS-A downloads and flashes a complete new image to rootFS-B. Afterwards we are modifying a variable in the bootloader to indicate to used rootFS-B next time. Now the board will reboot and rootFS-B is your new OS. If something goes wrong during boot it will be switched over to rootFS-A again. That strategy is really robust.


 

Nice to know

PolyOS is completely open source. It is based on the yocto project and has a custom meta layer. Currently we are using the pyro branch which is the latest stable one. We have chosen using systemd as the initsystem as it’s fast and offers several important features missing in sysvinit. Furthermore conman is used for setting up network connections and all audio is directly sent to ALSA. No need for pulseaudio which relies on resampling.

If you are interested in building your own version of PolyOS just visit out GitHub repository. https://github.com/PolyVection/meta-polyvection