Skip to content

Music Assistant plays to devices through player providers, and there is one for each kind of device or protocol. Start from the sort of thing you want to play on and pick the provider that drives it.

Speakers and hi-fi

Speakers, amplifiers and streamers sold ready to use. Most are found automatically once they are on the same network. If your make is not here, try the AirPlay, Cast and DLNA tiles at the end, which cover almost everything else.

Back to the top

TVs

Televisions, and the boxes and sticks that plug into them. Most smart TVs answer to at least one of AirPlay, Cast or DLNA even when the make is not listed.

Back to the top

Voice

Speakers you can also talk to.

Back to the top

Software players

Software you install yourself, on a Raspberry Pi, a spare computer, a tablet or the Music Assistant server.

Back to the top

Home Assistant

Anything Home Assistant can already play to. Worth reaching for when a device has no provider of its own.

Back to the top

The table below summarises what every player provider can do. Green ticks mark a supported capability. Note that DLNA and Home Assistant players can suffer from poor implementation of the required standards. If one of those does not work well and your device supports another protocol, use the other protocol.

What each player provider supports
Provider Max Sample Rate Hi Res Lossless Perfect Sync Sync Adjust Cross­fade Stereo Pair Device Button Device Voice Player Options
AirPlay 44.1kHz/16 bits No No No
Amplipi 384kHz/32 bits 1 No No No No No
Bluesound 192kHz/24 bits No No No No
Bose SoundTouch 192kHz/24 bits 9 No No No No No
DLNA 192kHz/24 bits No No No No No
Fully Kiosk 48kHz/16 bits No No No No No No No
Google Cast 96kHz/24 bits 1 2 3 4 4 No
HEOS 192kHz/24 bits No No No No
Home Assistant 48kHz/16 bits No No No No No No No
MSX Bridge 48kHz/16 bits No 8 No No No No No No No
Music Player Daemon (MPD) 192kHz/32 bits 1 No No No No No No
MusicCast 192kHz/24 bits No No No
Roku Media Assistant 48kHz/16 bits No No No No No No
Samsung WAM 192kHz/24 bits No No No No
Sendspin 384kHz/32 bits 1 7 6 No
Snapcast 48kHz/16 bits No No No No No No
Sonos S1: 44.1kHz/16 bits S2: 48kHz/24 bits 5 No No No
Squeezelite 384kHz/24 bits No No
WiiM 192kHz/24 bits No No No
Yandex Station 44.1kHz/16 bits No No No No No

Scroll the table sideways to see every column.

  1. Theoretical maximum. Rate limited by individual devices
  2. Not video devices
  3. When grouped using the Google Home App
  4. Accomplished using the Google Home App
  5. Series 2 devices only
  6. Can be controlled by Home Assistant
  7. When bridging other protocols
  8. FLAC streaming works on some TVs
  9. Audio is carried over DLNA, so the capabilities are DLNA's
What the columns mean
Hi Res
Can carry audio above 48kHz or above 16 bits.
Lossless
Can carry audio without lossy compression.
Perfect Sync
Players of this kind can be kept in time with each other when they are grouped.
Sync Adjust
A per-player delay can be applied to pull a player that runs ahead of or behind the rest of its group back into line.
Cross­fade
One track can be faded into the next.
Stereo Pair
Two players can be paired as the left and right channels of one.
Device Button
Buttons on the device itself control Music Assistant playback.
Device Voice
The voice assistant built into the device can control playback.
Player Options
The provider exposes device-specific settings, such as the player's own bass and treble.

If a device supports several protocols they are combined into one player, shown as chips near the player name in the settings. In the Individual Player Settings you can set the default protocol, or disable any you do not use.

The rest of this page covers situations that need more than picking a provider, such as gear you already own, a phone, a browser, or something you have yet to buy.

The native solution is the Local Audio app, which turns the machine it runs on into a Sendspin player.

Alternatively for HA, you can install the squeezelite app which will then allow streaming over an audio connection from the HA host to your speaker or amplifier.

Troubleshooting Steps for this Option

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 app, 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)

Section titled “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

Section titled “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

Section titled ““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.

Streaming to a Squeezelite Compatible Client

Section titled “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.

The native solution for MA is to use Sendspin. The device requires at least 2MB of PSRAM and 4MB of flash memory. Flash the device with ESPHome. A number of more off the shelf items have pre-made software available on RealDeco’s GitHub repository

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.

The Sendspin Bluetooth Bridge is the most direct route. It runs on any Linux machine with a Bluetooth adapter, built in or a USB dongle, and every speaker or set of headphones you pair with it turns up in Music Assistant as a Sendspin player. It can hold several devices at once, and they can be grouped and played together like any other Sendspin player. It installs as a Home Assistant App, in Docker, or in an LXC container, and has been tested on Home Assistant OS, Ubuntu, Proxmox, OpenWrt and the Raspberry Pi 4 and 5. It is a community project rather than part of Music Assistant, so raise anything you need help with on its own repository.

Bluetooth adds a delay of its own, so a Bluetooth speaker can still be heard a little behind the rest. If the player offers a Static playback delay (ms) setting you can use it to shift the audio back into line, though it corrects a steady delay rather than one that drifts, so it may not cure the problem entirely.

Alternatively, if you have a spare Raspberry Pi (any model) then PiCorePlayer can also connect to Bluetooth speakers. To stream to your Bluetooth device using piCorePlayer, follow these best practices to ensure high-fidelity audio and a stable connection:

  • It is highly recommended to use a wired Ethernet connection for your Raspberry Pi rather than Wi-Fi. On most Raspberry Pi models, the Bluetooth and Wi-Fi radios share the same chip and antenna; using both simultaneously often leads to significant audio “stumbles,” dropouts, and reduced range. By using Ethernet, you eliminate this radio frequency interference, providing a dedicated, clean pipeline for your music data to reach your Bluetooth transmitter without interruption.

  • While using the Raspberry Pi’s inbuilt Bluetooth adapter or a basic USB dongle will work, these options come with several pitfalls. Standard adapters rely entirely on the Pi’s software to encode audio, which may limit you to lower-quality codecs like SBC or standard aptX. Furthermore, the processing overhead on older Pi models can cause latency (audio delay), and internal antennas are notoriously weak, especially if the Pi is housed in a metal or thick plastic case which can severely degrade signal strength.

  • The best option for high-performance audio is to use a specialized Bluetooth Audio Transmitter such as the Sennheiser BTD 700 or Creative BT-W6. These devices function as a “driverless” external USB sound card, offloading the heavy lifting of audio encoding, specifically high-definition codecs like aptX Adaptive and aptX HD, to the dongle’s own dedicated processor. This allows even an older Raspberry Pi 1 to deliver modern, high-resolution wireless audio that matches the capabilities of premium headphones, all while providing a much more stable connection and a physical pairing button for a simplified setup.

If using a USB dongle with piCorePlayer then some settings on the Squeezelite Settings page need to be adjusted. Set the Audio Output to USB Audio and save. After any necessary restarting, navigate back to that settings page and click on Card Control and then in the Raspberry Pi Built-in Audio section disable the built-in audio by unticking the box.

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.

easiest label

Play to the built-in Sendspin web player.

intermediate label

Play to the built-in Sendspin web player.

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).

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:

Thanks to Manuel Rüger who showed us here

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. Music Assistant also has a Sendspin bridge for AirPlay which means AirPlay devices will play in sync with other Sendspin devices. Additionally, many Sonos devices can also be synced with AirPlay devices which is another plus.

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.

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 Digital Signal Processing overview

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

Device or SoftwarePrice#Supported Protocols+Amp^Pros and Cons
PiCorePlayer* (DIY)$Squeezelite, AirPlayYPros: 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, DLNAYPros: Minimal setup, versatile
Cons: Cheaper options available, Cast requires app to have sync’ed group
WiiM Mini$AirPlay, DLNAYAs per Wiim Pro
FiiO SR 11$$AirPlayYAs per Wiim Pro
Louder ESP32 (DIY)$Squeezelite, AirPlay, SnapcastNPros: Cheap
Cons: Requires some technical knowledge to install the software
Home Assistant (HA) Voice PE$Home Assistant IntegrationYPros: All local voice control and playback device, Strong Support
Cons: Requires HA as well
Amplifiers/Receivers + Cast$$$Google CastNPros: Minimal setup, Higher amplification, High Quality Audio
Cons: Expensive, Cast requires app to have sync’ed group
Amplifiers/Receivers + AirPlay$$$AirPlayNPros: 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, AirPlayY/N~Pros: Minimal setup, Exceptional Sound Quality
Cons: Expensive
Guition Silver Puck v2 (DIY)$Sendspin native (ESPhome)YPros: Small device to add Sendspin to any existing unit with Audio In.
Cons: Requires some technical knowledge to install the software.

DIY: Requires USB-C power and a 3.5mm stereo cable.
Guition Knob v2 (DIY)$Sendspin native (ESPhome)Y (small speaker built-in)Pros: As above, additionally has full metal encoder ring and its own battery and small speaker.
Cons: Requires some technical knowledge to install the software.
DIY: Requires USB-C power and a 3.5mm stereo cable.
RaspiAudio Luxe 2 (DIY)$Sendspin native (ESPhome)NPros: Battery backed, can also be used as Voice assistant.
Cons: Sensitive to noisy WiFi, requires some technical knowledge to install the software.
FutureProof Homes Satellite 1$$Sendspin native (ESPhome)NPro: Bookshelf ready version available; alternately kit parts.

# 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)

This website uses privacy-first analytics to help us improve the site. You can view all data in our public dashboard.