Skip to content

I Want To Stream To

My Local HA Device

Install the squeezelite addon which will then allow streaming over an audio connection from the HA host to your speaker or amplifier.

Troubleshooting

Some problems (listed individually below) may affect this solution and the following settings should avoid all of these issues:

  • Enable “Show unused configuration options” on the SqueezeLite add-on, then set:
    • build: pa (PortAudio) or alsa
    • options: -a 150ms (target latency, experiment to find best value)
  • Ensure that the Output format format in the Music Assistant Advanced Settings for the player is set to anything other than WAV.

Audio too fast or slow on track change (wrong sampling rate)

The PulseAudio version of SqueezeLite has a known issue of playing back audio with the wrong sampling rate on track changes.

If this is encountered, enable “Show unused configuration options” in the SqueezeLite settings and change the build type to pa (PortAudio) or alsa.

Initial audio swallowed or stuttering on track change

The PulseAudio version of SqueezeLite also has known synchronization problems on track changes.

If this is encountered then, as above, change the build type to pa (PortAudio) or alsa.

“Helicopter noises” / chopped off playback

If “helicopter noises” are heard then adjust the target latency to a higher value.

To do so, enable “Show unused configuration options” and add -a 150ms to the options text field while using the ALSA or PA (PortAudio) build. Experimentation with higher or lower values may be required.

Static instead of audio playback on some tracks

This is an issue with Music Assistant and affects all tracks not using the i16 sampling format (such as 24/32-bit audio) when streaming with the WAV Output codec.

When encountering this issue, change the Output format to FLAC (or any other non-WAV format) in the Music Assistant player Advanced Settings.

Alternatively, enabling “Show unused configuration options” and adding -W to the options field of the SqueezeLite add-on also works around this issue.

My Random Connected Device

Streaming to a Squeezelite Compatible Client

Install any Squeezelite compatible application (i.e. a Squeezelite software client, sometimes also refered to as "Squeeze Lite" apps) to your mobile or other devices and then MA should be able to stream to it.

If you have Squeezelite compatible clients on your local network then MA will be able to automatically detect and stream to them, (this works via Squeezelite compatibility without you needing to add any specific configuration or credentials for it). Note that Squeezelite clients usually do not have any user interface of their own and as such must be controlled via Music Assistant.

See here for an example on on how to run squeezelite on Windows

The Music Assistant Companion App can also be configured to run a squeezelite client which will allow playback to the device running it.

My ESP32 Based Device

If the hardware has at least 4MB of flash and 4MB of PSRAM it will be capable of running squeezelite directly. Use the Squeezelite ESP32 firmware. A nice pre-made solution with speaker terminals is the Louder ESP32

If the ESP32 device has other firmware on it that has been discovered by Home Assistant then use the Home Assistant Player Provider to expose the HA media player entitiy to MA. If the exposed player is running ESPHOME then consider changing the Output Codec to MP3 (lossy) (if it isn't already the default) in the player settings as this may be all the player can handle.

There is a Snapclient port which could also be used.

My Bluetooth Speaker

If you have a spare Raspberry Pi (any model) then PiCoreplayer is an excellent solution than can also connect to Bluetooth speakers.

My Browser

easiest label Play to the built-in Sendspin web player.

easiest label Use a Snapserver and the Snapweb option. If you enabled the Snapcast provider in MA then the built in server will be accessible on port 1780 on the IP address of your MA server or you can also use an external server which has been added to MA as a player provider.

My Android Phone

easiest label Play to the built-in Sendspin web player.

intermediate label Use the Snapcast App and the Snapserver Provider

Music Assistant

You could use Darkcast to capture and Icecast to build a solution that will digitize and stream audio from your analog audio equipment like a vinyl record player (turntable/phonograph/gramophone) as a web radio stream (URL) that you could add as a radio station in Music Assistant.

For such a project you need an audio-capture and ADC (analogue-to-digital converter) device that provides audio-input and digitalization. For example, you can use either a USB Audio Device Interface adapter from Behringer or IK Multimedia, or a HiFiBerry board with ADC.

You can find a generic tutorial here, and for those that like step-by-step guides look here and here (the first of which also offers a pre-configured Linux appliance image for Raspberry Pi 3 / Raspberry Pi Zero 2 W).

Web Radio

You can indirectly stream to a device which only accepts a URL such as a Web Radio. In order to do so you will need to be running Home Assistant and do this:

  • Install https://github.com/Poeschl-HomeAssistant-Addons/mpd (this will create an mpd media_player entity)
  • Enable httpd_output in the mpd addon (which allows for web streaming)
  • Use the HA media player plugin in Music Assistant and select mpd as the output

Thanks to Manuel Rüger who showed us here

A device I am yet to purchase!

A summary of the capabilities of the player providers available in Music Assistant is available here.

In general terms the protocols/devices that should give you minimum to no setup difficulty are:

We don’t believe most people can hear the difference in sample rates above CD quality so AirPlay is highly recommended. It has a good sync protocol and is widely implemented in consumer devices. For most people they should consider what they already have and fit in with that (unless it’s DLNA then consider changing due to the quirks of some devices) and their budget.

Note that many Sonos devices can be synced with AirPlay devices which is another plus for AirPlay.

Lastly, if grouping of players is planned and use of the DSP settings is desired then review which protocols support DSP in this circumstance in the DSP Settings description

The following table is a non-exhaustive list of possible solutions:

Device or Software Price# Supported Protocols +Amp^ Pros and Cons
PiCorePlayer* (DIY) $ Squeezelite, AirPlay Y Pros: Cheap, Runs on RPi 1, Streams over Bluetooth
Cons: Requires some technical knowledge to install the free software
WiiM Pro $$ Squeezelite, AirPlay, Google Cast Audio, DLNA Y Pros: Minimal setup, versatile
Cons: Cheaper options available, Cast requires app to have sync’ed group
WiiM Mini $ AirPlay, DLNA Y As per Wiim Pro
FiiO SR 11 $$ AirPlay Y As per Wiim Pro
Louder ESP32 (DIY) $ Squeezelite, AirPlay, Snapcast N Pros: Cheap
Cons: Requires some technical knowledge to install the software
Home Assistant (HA) Voice PE $ Home Assistant Integration Y Pros: All local voice control and playback device, Strong Support
Cons: Requires HA as well
Amplifiers/Receivers + Cast $$$ Google Cast N Pros: Minimal setup, Higher amplification, High Quality Audio
Cons: Expensive, Cast requires app to have sync’ed group
Amplifiers/Receivers + AirPlay $$$ AirPlay N Pros: Minimal setup, Higher amplification, High Quality Audio
Cons: Expensive
Sonos
Ikea Symfonisk
$$ → $$$ Sonos (Many devices also AirPlay) Y/N~ Pros: Minimal setup, High Quality Audio
Cons: Potentially Limited to Sonos ecosystem depending upon device
Bluesound Products $$$ Bluesound, AirPlay Y/N~ Pros: Minimal setup, Exceptional Sound Quality
Cons: Expensive

# Price: $ <100USD; $$ 101-250USD; $$$ >250USD

^ Does the device need a separate amplifier? This will be yes unless the device can drive speakers to fill a room with quality sound.

~ Depends on the product

* If you want better sound quality from your Pi you could add a HiFiBerry or a Raspberry PI Media Center Hat

(DIY) Device requires software installation and/or additional hardware (e.g. powersupply, case)