Smartskills

'MediaServer' Skill Help


The skill currently supports 122 different spoken commands that address practically everything that can be done with LMS to control music playback and more. See the categorized examples in section  Example Commands or check out the phraseology  Reference A–Z.

On Alexa-enabled devices with screens (such as the Echo Show family), all commands provide visual feedback using Amazon's APL to either display Cover Art and metadata extracted from your music's tags, or to visualize the spoken response:

Importantly, this skill is the only means available today by which you can stream audio from LMS to an Amazon Echo device without having to resort to Bluetooth. LMS transcodes any unsupported codecs, while Echos show up as normal Squeezeboxes in the LMS GUI or iPeng during streaming. Internet-radio stations can be streamed losslessly to the Echo when a https URL is targeted. All your Echos become Squeezeboxes in this manner !

Before you can use the skill (or its sister Smart Home skill LMS-Lite) you will have to take steps to make your LMS server  externally  accessible from the cloud in a  secure manner.

We have a special installer you can download to handle this automatically — it only takes 2 minutes. The how-to is in the Easy Setup tab.

In a word, excellently! A few pointers:

MediaServer uses fuzzy matching extensively in querying LMS, but if your tags are missing, inconsistent, (very) badly-spelled or just plain wrong, there's not much it can do to help. In the end, it's all about your tags !

Not unexpectedly, Alexa has problems with homophones — words that sound the same but are spelled differently. Think of ate/eight, flour/flower, bare/bear, cell/sell, brothers/bros. If you ask to play a song by the 'Knight Sons' and Alexa thinks that's spelled as 'Night Suns', it will never match your library. Shortened words in tags can also be an issue — e.g. a library search for 'Tru Colors' would find 'True Colors', but not vice versa.

If a query for an item doesn't match, trying a shorter version often will. For example, 'Allman Brothers' vs 'The Allman Brothers Band' or 'Alabama' vs 'Sweet Home Alabama'. That's just how LMS works.

The more information Alexa has, the better that matching works. If you ask to play 'Abacab' and it's wrongly spelled as 'Abakab' in your tags, by knowing the artist is Genesis the skill can fuzzy-match through all your Genesis albums and still find it. Without that extra clue, there would never be a match.

During its first run (and also whenever you use the Discover command), the skill retrieves the names of your players from your LMS server(s).

The {Player} slot association in all intents is of the built-in type AMAZON.Room. This biases Alexa towards an understanding of a room name when what you said was not clear enough for outright comprehension. However, this is just a guideline and basically any player name should work.

The skill uses fuzzy matching to map what Alexa thinks she heard as a player name against your known players. If no match is found, you'll be asked to repeat the player name again or to perform a fresh discovery (maybe you added a new player and forgot to tell Alexa). Your discovered players are also declared to Alexa as dynamic entities against which to match. It's always best to assume unwieldy player names so you don't have to mention them each time. Do yourself a favor though and if you notice that Alexa keeps asking you to repeat the name of a certain player, just rename it for simplicity's sake.

Note that you can freely use the word player in your utterances if you like — you can also mix the use of "in the", "on" and "on the". Commands such as Play the album Mylo Xyloto in the 'Kitchen' and Play the album Mylo Xyloto on the 'Kitchen' player are fully interchangeable.

Using the Rename command it's possible to rename players to something other than the name reported by LMS. This only affects the name used in the skill, not the name known to the server or e.g. iPeng/Material. Re-doing player discovery will offer to revert any renamed players back to their LMS original names.

The skill recognizes Group Players if you have that plugin installed and will mention during discovery how many players it found in that category. Note that the name everything is reserved by the skill to assemble synchronization groups with all your players — it's therefore better not to have your own Group Player called "everything".

Finally, any player names ending in an asterisk (e.g. "Reserve*") will be deliberately skipped during discovery.

MediaServer is a so-called custom skill, meaning it has to be invoked using the skill name in your utterance. Given that Alexa herself can play music sourced from e.g. Spotify or Amazon Music directly on an Echo's speaker, you omit the name at your peril !

Some different and freely interchangeable ways of invoking the skill include:

  • Alexa, ask Media Server to play the album Phaedra in the 'Bedroom'
  • Alexa, tell Media Server to play the album Abacab on the 'Bedroom' player
  • Alexa, open Media Server and play some Jazz
  • Alexa, launch Media Server and set the volume to 70
  • Alexa, start Media Server and cancel repeat mode
  • Alexa, next track using Media Server
  • Alexa, get what's playing from Media Server
Commands 3–7 above don't have a player name in the utterance. That's because they use an implicit player which is permanently associated with the Echo in question. You set it up like this:

  • Alexa, tell Media Server to assume the 'Kitchen' player
You can query the current association by saying Alexa, get the assumed player from Media Server.

You can also tell e.g. the Kitchen Echo I'm within earshot of the Livingroom Echo. Subsequently, when you issue a command in the open area between your Livingroom and Kitchen Echos, you don't have to worry which Echo actually hears you and assumes the player to target. The skill will check which of the two players is actually playing a song and react accordingly. If both players happen to be playing, normal 1:1 association applies.

There are two basic ways to invoke any custom skill: one-shot and session.

With a so-called one-shot, the skill handles a single intent and exits upon completion. An example would be "Alexa, ask MediaServer to play the album Abacab on the 'Basement' player". Alexa will tell you the title of the first track that started playing and the skill exits. Great for issuing a single command with no fuss.

A session is started by issuing a so-called LaunchRequest to fire up the skill in an interactive mode. For example, "Alexa, open MediaServer" or "Alexa, start MediaServer". Alexa will now repeatedly ask for intents by answering you with: "… say a MediaServer command". You could request "Help" or "What's playing?" or ask to "Assume the 'Squeezelite' player". Whatever the intent may be, when it completes, Alexa will continually ask a variant of "… what else?". This means you can issue as many back-to-back commands as you like until you terminate the session by saying one of no, stop, cancel, shut-up, never mind, forget it, or that's it. You can also simply ignore her until she beeps and the blue ring goes off. An example volley might be:

 Alexa, open MediaServer
 Say a MediaServer command
 Play the album Abacab
 The album Abacab, by Genesis, is now playing on the KITCHEN player.What else?
 Increase the volume by 20
 Volume is now 65.Anything else?
 Disable shuffle by song
 OK.Anything further?
 Goto track 5
 Now playing track 5 of 9 total. It's called "Another Record", by Genesis.Anything else?
 No
 Goodbye

Note that you can interrupt Alexa's response during a session (e.g. because the answer is rather long) by just saying "Alexa..." and then issuing a new MediaServer command immediately, such as "..what's playing?" or "cancel". This will break in on her current speech but keep the session open for a new MediaServer command (unless you said "Cancel" or "Exit").

Important: Whenever APL is being displayed on the screen of an Echo Show, the session is prolonged for 30 seconds, even if you actually issued a one-shot command. This results in something of a 'hybrid' state akin to a session but with the microphone closed. To issue a follow-up one-shot while the APL is still showing on the screen, you can omit the invocation name and just start the command with "Alexa, …" to open the microphone. The rest of the command can mimic what you would say within a session because you are actually in one, thanks to the APL. To close this session, say either "Exit" or "Home Screen". For the avoidance of doubt, APL does not affect true sessions started with a LaunchRequest

Observe that 'Stream' intents do not prolong the open session as it does not make sense to continually interrupt playback on the Echo with a volley of commands.

The stream commands in the skill are made possible by the inclusion of the audioplayer interface which natively supports a number of built-in intents. What this means is that any of Play, Resume, Pause, Stop, StartOver, Cancel, Next, Previous, Shuffle, Shuffle Off, Loop, Loop Off can be used without using the skill's invocation name of 'MediaServer'. In other words, you can just say "Alexa, pause" instead of having to say "Alexa, tell MediaServer to pause". Quite convenient. However, these intents are standalone by nature so specifying an attendant player is unsupported. That is not always convenient.

In order to use stream commands, a user has to be subscribed. The skill checks this and reserves the built-ins to address controlling the Echo you are speaking to. Rather than 'waste' the niceties of the built-ins for unsubscribed users, they are 'hijacked' to address the assumed player instead (because there's no need to specify it). Quite convenient. However, it can bring a surprise for a non-subscribed user who discovers after subscribing that a side-effect of the ability to stream is a modified behaviour of the built-in functions as previously experienced.

In addition to the native audioplayer commands, the skill's own voice model maintains a shadow set of very similarly-worded commands that do allow a player name to be included as part of the intent (see Reference A–Z for syntax). These can be used by subscribed users to address any player in their setup or by non-subscribers to address anything other than the assumed player. These commands always require that you use the skill's invocation name in the command, i.e. the "Alexa, tell MediaServer to pause [the 'Kitchen' Player]" construct. Remember, these directives will always work as expected and are not context-dependent.

Some confusion can occur if you have both MediaServer and the LMS-lite skill installed, as Smart Home skills always omit an invocation name but do allow a target device name to be specified. The playbackcontroller interface in the Smart Home paradigm gives us many of the exact same commands that audioplayer gives us in a Custom skill (like MediaServer). Smart Home skills also have the ability to persist a device, meaning if you first say "Alexa, next track on the 'Kitchen' Player", you can subsequently just say "Alexa, next track" to continually target that player when using LMS-lite (that is, until you deliberately target a different device).

What happens if a user of both skills says "Alexa, next track"?

Is this a persisted targeting of the 'Kitchen' Player device via LMS-lite, is it a non-subscribed MediaServer user targeting the assumed 'Bedroom' Player, or is it a subscribed MediaServer user targeting the Echo itself because it is/was streaming from LMS? In all 3 cases there is no skill invocation name and no device specified. The answer will depend on the recent history of commands issued to the Echo in question, and sometimes what Alexa does may not be what you expected — particularly if you are unaware of this history because a different user in your household was the last to issue a command. Context is everything ! Just so you know …

If you'd prefer bare-bones setup instructions without explanation, see here.

Because LMS is not accessible from outside your LAN, we need to install a so-called proxy to enable secure access to your server from the Amazon cloud.

Our easy-setup[1] procedure deploys a proxy called ngrok to open up a persistent tunnel resulting in a password-protected URL like https://70c663eee228.eu.ngrok.io for your LMS.

Since initializing the tunnel is an outward process originating in your LAN, there's no need to open any ports in your router  — ngrok also takes care of a valid certificate for SSL.

Alexa [443/https] proxy [9000/http] LMS

The skill communicates with your proxy and it is the proxy (perched on the LAN side of your firewall on your local network at home) that actually interacts with LMS.

With this approach, cloud control is password-protected while local control within your LAN remains completely unrestricted. You should therefore not set a password in the LMS settings when using our skills.

There are actually two components to ngrok — a cloud service and an executable running on one of your computers. The ngrok cloud service provides the internet-facing URL that Alexa or a browser 'sees'. Incoming requests to this service are sent down the secure tunnel to your local executable which is always 'listening'. It 'knows' to relay all incoming requests onwards to your LMS server because it's configured accordingly. Responses from LMS simply follow the reverse path back up to the internet-facing ngrok cloud service where Alexa or the browser receives them. It's all lightning fast and adds no perceivable delay to your enjoyment of the skill(s).


[1] You don't have to use this procedure to link the skills. If your LMS is reachable via https due to an existing reverse-proxy running via e.g. nginx or apache in your setup, this can be used as-is. Should you prefer manual setup, see here.

Visit the ngrok.com website (no affiliation) for an explanation of how it works and what plans are available. The free plan[1] works just fine for our purposes so go ahead and Sign Up.

To subsequently authenticate you towards ngrok, you should make a note of your personal authtoken which resides at https://dashboard.ngrok.com/auth/your-authtoken. It will look something like 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p.

Please ignore any download/setup instructions at the ngrok website as they are geared towards setting up access to a web-server on 80 rather than a media server like LMS on 9000. Our installer will automatically download ngrok for you and configure it for LMS.


[1] The easy-setup installer ensures that the skill(s) are updated with the changed tunnel URL whenever you restart ngrok or reboot your machine.

Screenshot of the configurator landing page form

Visit our secure[1] configurator landing page to download your personalized easy-install script. You can do this on any platform and it does not have to be the machine LMS or ngrok runs on.

Please stay within a single browser tab during the entire setup process, as your browser's localStorage does not share/update data between open tabs of the same website.

On the form, provide the following 7 pieces of information:

  •  Target platform / operating system under which ngrok will run.
  •  Region. To minimize latency, ngrok will use a cloud server physically near you. You can choose one of us eu ap au sa jp in.
  •  Authtoken. Paste the personal authtoken you copied after ngrok sign-up (e.g. 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p) or else use the yellow button to visit your ngrok account and retrieve it.
  •  A username to associate with your tunnel to prevent unauthorized access to LMS. It must be at least 4 characters and may not contain spaces or |.
  •  A password to associate with your tunnel to prevent unauthorized access to LMS. It must be at least 8 characters and may not contain spaces or |.
  •  The local fixed IP address used to access LMS inside your LAN. For example, http://192.168.1.10:9000. You may omit the http part but not the 9000.
  •  A nickname[2] by which to refer to the tunnel — defaults to lmstunnel if left blank.

When all the entries are completed, press the yellow Download Script button and the script file will be saved by your browser.

Your browser may warn that script files sourced from the internet are potentially harmful — it does this based on the .sh or .ps1 file extension, not the actual contents. Some browsers may even change the extension of the saved file to .txt to render it 'harmless'. If that happens you will need to manually rename with the correct extension before running it.


[1] All sensitive data is transported over SSL and AES-256 encrypted at rest. The resulting file is built in RAM on our webserver — it is never saved to the filesystem.

[2] You should only need to specify a non-default nickname if you have multiple LMS servers and therefore multiple tunnels.

First follow the appropriate instructions for your platform or operating system — pCP, Linux, MacOS, or Windows 10. Then perform account-linking as explained in the bottom paragraph.


piCorePlayer
Make sure that the LMS server under pCP is already installed and running when you attempt this.

  • Open a terminal. Place[1] the downloaded file setup.sh in your /home/tc directory.
  • Run it using sh setup.sh

Installs ngrok as a persistent tcz package and adds it to onboot.lst. It also builds a file called ~/.ngrok2/ngrok.yml with your configuration details. An entry in /opt/bootlocal.sh ensures ngrok_startup.sh runs at system boot to continually refresh your tunnel details when you reboot.


Debian Linuxes
Applies to any Debian-based distro which supports systemd services and bash scripting. Examples include Max2Play, Raspberry Pi OS, Ubuntu and Debian.

  • Open a terminal. Place[1] the downloaded file setup.sh in your home directory, e.g. /home/pi.
  • Run it using sudo bash setup.sh

Installs ngrok to /usr/local/bin/ngrok and creates a service file /etc/systemd/system/ngrok.service to run ngrok as a daemon at boot. It also builds a file called ~/.ngrok2/ngrok.yml with your configuration. Finally, it creates the ~/ngrok_updater.sh auto-updater file that refreshes your tunnel details when you reboot.


MacOS
Place the downloaded setup.sh script in your normal Downloadsfolder.

  • In the Finder, open the Applications folder and then Utilities. Double-click on Terminal to pop open a terminal.
  • Inside the terminal window, typecd ~/Downloads
  • Run the installer using sudo /bin/bash setup.sh (you will need to type your Mac password to authorize).

Installs ngrok to /usr/local/bin/ngrok and creates a launchd file /Library/LaunchDaemons/com.ngrok.onstartup.plist to run ngrok as a daemon at boot. It also builds a file called /usr/local/bin/.ngrok2/ngrok.yml with your configuration. Finally, it creates the /usr/local/bin/ngrok_updater.sh auto-updater file that refreshes your tunnel details when you reboot.


Windows 10

  • Right-click on the downloaded PowerShell file setup.ps1 in your downloads folder and select the option to Run with PowerShell. If that is not allowed on your PC, see the comments in the file for a simple fix.

Installs ngrok to c:\ngrok and creates a config file called c:\ngrok\ngrok_config.yml. In the same directory, you'll see ngrok_autostart.ps1 and a wrapper ngrok_autostart.cmd. A shortcut to ngrok_autostart.cmd is added to Windows' startup apps folder.


Account Linking

When the setup script finishes, you will be told[2] that ngrok is now running a tunnel through a URL like https://70c663eee228.eu.ngrok.io[3]

  • Enable/Link the skill(s) from here: [ → MediaServer | LMS-lite | Playground | Squeeze ][4]. You will be redirected to log in to your Amazon account and authorize/allow Alexa access to the skill in question. The correct language version for your locale will be automatically selected.
  • If you prefer to link the skill(s) manually from the Alexa portal, in the field you will enter the assigned ngrok URL, adding your credentials in the and fields. See here.
If you installed LMS-lite, you can now say "Alexa, discover devices". In the case of MediaServer, say "Alexa, open MediaServer". That's it — enjoy the skill(s)!


[1] If the target system is headless, use ssh or scp via e.g. filezilla, winscp or putty to transfer the script file across.

[2] On the free plan, ngrok can only be run on a single machine in your local LAN so if it's already running you will receive an error. If you run ngrok with the same authtoken in a different (remote) LAN, you must select a different region code for the second instance or it won't work. If you need multiple tunnels in the same LAN, up to 4 can all be run from the same proxying-machine by adding extra tunnel entries to the .yml file. Do it this way rather than trying to run multiple instances of ngrok itself. The legacy help has an example.

[3] If you like, you can verify that the tunnel works by visiting this URL from a browser (enter your chosen credentials in the popup). You'll see the familiar 9000 LMS GUI (notice the ).

[4] If you get a message that you first need to run the installer script before these links will work — and you did already run it successfully — try forced-refreshing the page (hit ctrl-F5 in Chrome). Alternatively, close the browser and then re-open it. The links should then be active.

localStorage

Setup help for MediaServer and LMS-lite is available at different subdomains of the smartskills.tech website. Because your uuid is stored in the browser's localStorage and that is always (sub)domain-specific, you may be told that you have not yet set things up if you alternate between help-file source locations on our server. If this happens, switch to the help subdomain you originally used and your localStorage should still be there. Same is true if you use different browsers or alternate between incognito and regular browsing.


During setup: ngrok errors

If you get a 108 error during setup, it's because ngrok is already running (in the background / on some other machine?) using your authtoken — you can only run one instance on a free account. For a full list of ngrok errors, see here.


monitor ngrok

From any machine in your local network, you can watch what the background ngrok process is doing by browsing to the IP address of the ngrok host machine on port 4040, e.g. http://192.168.1.8:4040 or http://localhost:4040. The status tab there will show you the ngrok subdomain assigned to your tunnel.

Alternatively, you can login to your ngrok online dashboard and see your assigned tunnel at https://dashboard.ngrok.com/status/tunnels.


Alexa says: ngrok tunnel invalid

The golden rule is — think before you re-link! It's almost never necessary.

If Alexa tells you your ngrok tunnel no longer exists, manually running the updater script from a terminal should get you back online again immediately.

  • On pCP, sh ~/ngrok_startup.sh
  • On Debian, /bin/bash ~/ngrok_updater.sh
  • On MacOS, /bin/bash /usr/local/bin/ngrok_updater.sh
  • On Windows, double-click on C:\ngrok\ngrok_autostart.cmd
If it happens regularly, consider using Ethernet rather than WiFi or move the machine closer to your router. Remember, ngrok can run on any machine in your network and happily proxy to LMS on a different machine. If you're running e.g. pCP on a wireless-pi, you can run ngrok on a different/wired machine no problem.


Alexa says: ngrok authorization failure

Unless you deliberately changed the username and password in your .yml file, the only plausible explanation for this is that you dropped a tunnel without running the updater script. In the meanwhile, your old URL was randomly allocated to some other ngrok user (by ngrok, not us) who of course has different credentials to you. So the previously-known tunnel 'exists' but the authorization fails (for you). The cure is to manually restart ngrok on your machine — that way, you will get a new URL without conflict. If you really did change your .yml credentials then you have no option other than to re-link the skill(s). The tunnel credentials are immutable in the Alexa cloud and not pushed as part of updating (for security reasons).


uuid reset

If for whatever reason you want to reset your uuid to start an install with a clean slate, click on the tiny symbol in the info-banner on the configuration page.

When Amazon confirms that your skill was successfully linked, launch it by saying "Alexa, open Media Server". The skill will automatically attempt to connect to your server(s) and discover your Squeezebox players. If that fails, check that ngrok is running correctly by checking its 4040 status page.

If the discovery was successful, Alexa will tell you what players she found. Congrats! The first thing you should try out is creating an assumed player for each of your Echos. Go around to each Echo in your house and say "Alexa, tell Media Server to assume the Name-of-nearest-Squeezebox player". If you only have one player, it will always be automatically assumed for all commands, even if you have multiple Echos. If you have many players but only one Echo, still assign a nearest-player as assumed for the Echo. Note that if you link the skill to multiple LMS servers then you must assign assumed players. Otherwise, Alexa does not know which of your servers the command applies to.

Supposing you have a Squeezebox called e.g. Livingroom, try saying "Alexa, get the 'Livingroom' player status using Media Server" to any Echo. If all is well, she'll tell you several things about what state that player is currently in. Next, try saying "Alexa, ask MediaServer what's playing?" without saying the player name and verify that the response reflects the assumed player's activity.

The skill implements 122 command categories, 74 of which are free to use with 48 requiring a subscription. The Command Reference section denotes premium commands with an asterisk after the name. The activation is handled as an In-Skill Purchase (ISP) which is managed entirely by voice. Ask "Alexa, how do I enable voice purchasing" for help.

To access premium commands, just say "Alexa, tell Media Server I want a subscription". She'll explain the applicable pricing structure for your regional Amazon account and ask for a verbal yes/no confirmation (plus your voice PIN code if you enabled that) so you can safely experiment with the ISP process without actually committing. First-time subscribers can access a free 7-day trial. Thereafter, the credit card associated with your Amazon account will be billed monthly but you can cancel at any time. Just say "Alexa, tell Media Server I want to cancel my subscription".

If you delete the skill while a subscription is currently active, re-enabling the skill either now or later will continue your subscription without having to sign up again. Your assumed players will also be retained.

On Echos with screens, this summary is shown when you say "Alexa, ask MediaServer for Help"

Album
  • Play the album 'Phaedra'
  • Play the album 'Ghost Stories' by Coldplay
  • Play the compilation[1] 'American Road Trip'
  • Play the single[2] 'Flight 643 (CDM)'
  • Play the single[2] 'Sunny Days' by Armin van Buuren
  • Play a random album by Steve Winwood
  • Play a random single[2] by Madonna
  • What Paul Young albums do I have?
  • What Sheryl Crow singles[2] do I have?
  • List my new albums [latest 10 in library]
  • Search[3] new albums for ZZ Top [→ option to play]
  • Play my most recent Pearl Jam album
  • Tee up[4] the album 'Erotica' by Madonna
  • What albums contain 'Roxanne' by The Police?
Song
  • Play the song[5] 'Dancing in the Dark'
  • Play the song[5] 'Chasing Cars' by Snow Patrol
  • Play the track[5] 'Sussudio' by Phil Collins
  • Play the tune[5] 'Nine Tonight' by Bob Seger
  • Play the track 'Run Like Hell' from the album 'Pulse'
  • Play the 'Live & Dangerous' rendition of 'The Boys are Back in Town'
  • Play something by The Corrs
  • Play songs by The Cure
  • Play songs about 'Girls'
  • Play songs featuring Eddie Vedder
  • Play index 3 from 'The Wall'
  • Append[6] 'Solsbury Hill' by Peter Gabriel
  • Add[6] 'Mr. Blue Sky' by ELO
  • Insert[7] 'Cradle of Love' from the album 'Charmed Life'
  • Append[6] 'High Hopes' from the album 'The Division Bell'
  • Add[6] 'Legs' from the album 'Eliminator'
  • List the songs on 'The Wall' by Pink Floyd
Genre
  • Play some Classic Rock
  • Play some Christmas music
  • Play some Jazz tracks
  • Give me some Oldies
  • What genres do I have?
Playlist
  • Play my 'Supperclub' playlist
  • Play a playlist on the 'Kitchen' player [→ Which Playlist?]
  • Play a random playlist
  • Load the 'Oldies' playlist
  • Add this track to my 'Fitness' playlist
  • Bookmark this track
  • Blacklist this song
  • Clear the current playlist
  • Fetch[8] my 'Christmas Songs' playlist
  • Fetch[8] the 'Joe Rogan Experience' podcast
  • What playlists do I have?
Favorites
  • Play favorite 'JAZZ FM'
  • List my favorites
  • List level 2 favorites
  • List the favorites in folder 'Podcasts'
  • Play favorite number 3
  • Play my fourth favorite
  • Play favorite 'Podcasts' item 7
  • Play favorite folder 'Audiobooks' item 12
  • Play a favorite on the 'Bedroom' player [→ Which Favorite?]
  • Play favorite 3 . 2 . 5 [dot]
Query
  • What's playing?
  • What's coming next?
  • What's the duration of this song?
  • What's the 'Bedroom' player status?
  • List my new albums [latest 10 in library]
  • Search[3] new items for Alanis Morissette [→ option to play]
  • Do I have 'Dark Side of the Moon'?
  • Do I have 'Giants' by Chicane?
  • Check if I have '101 Driving Songs'
  • What players do I have?
  • List known sync groups
  • List my playlists
  • List known genres
  • List my Chris Rea albums
  • List any singles[2] by Roxette
  • List the songs on 'Rumors' by Fleetwood Mac
  • Which albums contain 'Roxanne' by The Police?
Follow Me
  • Follow me to the 'Lounge'
  • Transfer playback from 'Livingroom' to 'Study'
  • Transpose 'Kitchen' player and 'Garage' player
Synchronize/Groups
  • Synchronize the 'Bedroom', 'Bathroom', 'Office' and 'Nursery' players
  • Synchronize everything
  • Include the 'Guestroom' player in the group
  • Remove 'Library' player from the group
  • Unsynchronize my players
  • List known sync groups
Sleep
  • Sleep the 'Bedroom' player in 8 mins 30 seconds
  • Sleep this player after the current song
  • Cancel sleep mode for the 'Livingroom' player
Alarms
  • What alarms do I have on the 'Bedroom' player?
  • Enable my 7 AM alarm
  • Cancel my 7:30 AM alarm
  • Change my 7 AM alarm to 8:30 AM
Player Control
  • Start playback in the 'Bedroom'
  • Resume 'Kitchen'
  • Pause 'Bedroom'
  • Stop 'Livingroom'
  • Skip / Next Track
  • Previous Track
  • Goto track 12
  • Skip ahead 2 minutes
  • Skip back 44 seconds
  • Seek directly to 17 minutes and 12 seconds
  • Set the volume to 60
  • Increase the volume by 10
  • Decrease the volume by 25
  • Mute the 'Livingroom' player
  • Unmute the 'Kitchen'
  • Turn On the 'Library' player
  • Power Off 'Bedroom'
  • Power Down everything
  • Turn On shuffle
  • Shuffle again
  • Enable shuffle-by-album on the 'Kitchen' player
  • Enable shuffle-by-song for the 'Bedroom' player
  • Deactivate shuffle
  • Enable / Disable Repeat
  • Turn On repeat-playlist mode
  • Enable repeat-song mode
  • Deactivate repeat for the 'Basement' player
  • Rename 'Touch' player 'Bedroom' player
  • Discover my players
  • Assume the 'Livingroom' player
  • I'm within earshot of 'Diningroom'
  • Enable / Disable artwork display
Play Music on Echo (Stream)[9]
  • Stream the album 'Listen Without Prejudice'
  • Stream the album 'Parachutes' by Coldplay
  • Stream the compilation[1] '101 Running Songs'
  • Stream the single[2] 'Generate (CDM)'
  • Stream the single[2] 'Alone Tonight' by Above & Beyond
  • Stream my newest album by Peter Gabriel
  • Stream the song[5] 'Rosalie'
  • Stream the song[5] 'Chocolate' by Snow Patrol
  • Stream the track 'Sledgehammer' from the album 'So'
  • Stream the 'Plastic Letters' rendition of 'Denis'
  • Stream something by The Police
  • Stream songs about 'Alabama'
  • Stream songs featuring ATB
  • Stream index 7 from 'Musique' by Daft Punk
  • Stream a random album by Pink Floyd
  • Stream a random single[2] by Shakira
  • Stream some Alternative Rock [genre]
  • Stream favorite number 7
  • Stream favorite 'FUNK FM'
  • Stream my 'Ambient' playlist
  • Stream a random playlist
  • Stream favorite 'Podcasts' item 3
  • Stream favorite folder 'Audiobooks' item 4
  • Stream favorite 2 . 4 . 2 [dot]
  • No invocation-name required for: Resume, Continue, Pause, Stop, Cancel, StartOver, Restart, Start Again, Next, Skip, Skip Forward, Previous, Go Back, Back Up, Skip Back, Shuffle, Shuffle Off, Stop Shuffling, Loop, Loop Off
General
  • Help
  • Repeat
  • Say that Again
  • Never Mind
  • Forget It
  • Exit
  • Yes
  • No
  • No Thanks
  • What's new?


[1] A compilation is defined as an album with the albumartist or band tag being one of Various, Various Artists, VA or V.A. (case-insensitive).

[2] A single is any album with the term CDS or CDM in the Album tag (brackets are ok).

[3] If the search item is found, Alexa will offer to play it for you. If more than one item matches, you get to choose one.

[4] The Tee Up syntax is used to append an entire album to the end of the now-playing playlist.

[5] This will queue up one each of all the uniquely-named versions of that song from all albums that contain it. To limit playback to a specific version of the song from a named album, use the rendition or the from-the-album variant of the command instead.

[6] The item is added to the end of the currently-playing playlist.

[7] The item is inserted into the current playlist and will play next, pushing other tracks down the list.

[8] Fetch targets a Spotify playlist or podcast specifically (when e.g. you have a local playlist with the same name but want the Spotify one).

[9] Note that your Echo devices will not show in the LMS GUI until you first start a stream by voice. They will also disappear again from the GUI when the stream ends. While available in the GUI, if you change the now-playing track other than by voice, saying "Alexa, Resume" will immediately activate the new track. If you don't say this, you will have to wait for the Echo's buffer to empty before the change will take effect.

With LMS-lite enabled, your Squeezeboxes become part of Amazon's smart home paradigm and show up as a device in the Alexa app, meaning they can be included in a group with other smart home devices and used in a routine to do clever things like switch an amplifier on/off together with a Squeezebox or automatically start music playback whenever you enter a room.

Once you account link the skill successfully, you just say "Alexa, discover devices" (this should also be done any time you add, delete or change a player name in LMS). Because of how smart home skills work, you may not be told if any devices were found — rest assured they will nevertheless show up in the Alexa app when opened.

During discovery, your player names are untouched by the skill and reported as-is to Alexa (except for removing disallowed characters). If you have unwieldy names like Onkyo-XTR672VMK, you might want to edit/change them in the Alexa app because you cannot abbreviate player names much when issuing commands.

Once a player name has been mentioned in any of the commands, it persists until a different player is mentioned (or some other music-playing skill is launched) from that particular Echo. This means you can omit the name in the next command(s) addressing the same player. Each Echo has its own persisted Squeezebox too, so remember that fact if you move to another room and issue a name-free command there. If in doubt, always mention the player name in the command.

The available categories of command, with invocation examples are:

Power
  • Alexa, power ON 'Livingroom'
  • Alexa, power OFF the 'Bedroom' Player
  • Alexa, turn ON the 'Touch'
  • Alexa, turn OFF the 'Library' Player
Volume
  • Alexa, set Kitchen volume to 70
  • Alexa, volume 20 on Touch
  • Alexa, increase the 'Bedroom' Player volume by 10
  • Alexa, pump up the volume
  • Alexa, pump it up
  • Alexa, louder
  • Alexa, make it louder
  • Alexa, louder please
  • Alexa, quieter
  • Alexa, tone it down
  • Alexa, lower the volume
  • Alexa, decrease the volume by 20
  • Alexa, mute the Livingroom Player
  • Alexa, unmute Livingroom
Transport
  • Alexa, next track on 'Lounge' Player
  • Alexa, next
  • Alexa, skip this
  • Alexa, previous track on 'Touch'
  • Alexa, previous
  • Alexa, go back
  • Alexa, play on the 'Office' Player
  • Alexa, resume 'Bedroom' Player
  • Alexa, pause
  • Alexa, stop
  • Alexa, rewind[-60 sec]
  • Alexa, fast-forward [+60 sec]
Track Index
  • Alexa, start-over [ → track 1]
  • Alexa, track 7 on 'Kitchen' Player
  • Alexa, song 9 on 'Touch'
  • Alexa, what track is the 'Touch' at?
  • Alexa, what track is the 'Bedroom' Player on?
Favorite/Preset
  • Alexa, favorite 3 on 'Touch'
  • Alexa, preset 1 on the 'Office' Player
Looping [repeat-playlist]
  • Alexa, turn ON 'loop' on 'Kitchen'
  • Alexa, activate 'loop' on 'Bedroom' Player
  • Alexa, turn OFF 'loop' on 'Office' Player
  • Alexa, deactivate 'loop' on 'Squeezeplay'
  • Alexa, is 'loop' ON, on 'PiCorePlayer3'?
Shuffle Play [shuffle-by-song]
  • Alexa, turn ON 'shuffle play' on 'Kitchen'
  • Alexa, activate 'shuffle play' on 'Bedroom' Player
  • Alexa, turn OFF 'shuffle play' on 'Office' Player
  • Alexa, deactivate 'shuffle play' on 'Squeezeplay'
  • Alexa, is 'shuffle play' ON, on 'PiCorePlayer3'?
Repeat Mode
  • Alexa, set 'repeat mode' on 'Livingroom' to 'OFF'
  • Alexa, set 'repeat mode' on 'Kitchen' to 'song'
  • Alexa, set 'repeat mode' on 'Office' Player to 'playlist'
  • Alexa, set 'repeat mode' on 'Bedroom' to 'album'
  • Alexa, what is the repeat mode on 'Bathroom' Player?
Shuffle Mode
  • Alexa, set 'shuffle mode' on 'Kitchen' to 'OFF'
  • Alexa, set 'shuffle mode' on 'Bathroom' to 'song'
  • Alexa, set 'shuffle mode' on 'Study' to 'playlist'
  • Alexa, set 'shuffle mode' on 'Library' to 'album'
  • Alexa, what is the shuffle mode on 'PiCorePlayer3'?

With an Alexa routine, you can have a single trigger send a volley of commands to a player — much like a smart-home 'scene'. A trigger can be a self-defined voice command, time of day, or input from a sensor such as motion/contact/illuminance. Any combination of player Power (on/off), Favorite (#), Loop (on/off), Player Volume (0-100), Preset (#), Repeat Mode (off/song/album), Shuffle Mode (off/song/album), Shuffle Play (on/off) and Track (#) can be assigned to a single trigger. Players can respond differently to multiple triggers.

To control a player in a routine, in the Alexa app select routines and under at the top right, select the add action option. Then, under add new select the  smart home trigger. Under all devices you should see your players distributed alphabetically among all the other devices. If you select one of your players, you will see the options for Power, Favorite, Loop, Player Volume, Repeat Mode, Shuffle Mode, Shuffle Play, Track. Under each of those will be options like on/off or off/track/album, and, for favorite/track/volume, a slider to set a value from 1 to max. You can specify more than one category of these commands and have them all triggered at once when that action runs.

Note that if you have no recognized event triggering devices such as door contacts or motion sensors among the gadgets in your Amazon account, you may not see any devices under actions. In that case, you can still add the players to groups so they at least power on/off with the other devices in the group, although you then have less settings options than in routines.