SoCo 0.13 release notes

SoCo 0.13 is a new version of the SoCo library. This release adds new features and fixes several bugs.

SoCo (Sonos Controller) is a simple Python class that allows you to programmatically control Sonos speakers.

New Features and Improvements

  • The IP address used by the events listener can be configured (#444)
  • Add support for night mode (#421) and dialog mode (#422) on devices supporting the respective feature.
  • Add queue-able data structures for the music service items (#455)
  • Add a method for queueing multiple items with a single request (#470)
  • Add methods to get and set the uri(s) of a DidlObject. (#482)
  • Add support for line in from other speakers (#460)
  • Enhance add_to_queue() to with optional position argument (#471)
  • Added by_name function to discovery to be able to get a device by player_name (#487)
  • allow choice of how to play streams in play_uri (override Sonos default with force_radio=True) (#491)
  • Added ramp_to_volume() method to smoothly change the volume (#506)
  • Added FAQ, documentation and two examples to explain using SoCo’s Snapshot function (#493)
  • Update documentation for add_uri_to_queue (#503)
  • Added a FAQ section to the docs with play_uri and play local files answers (#481)
  • A few queue related micro examples was added to the examples page in the docs (#484)
  • Further documentation updates (#435, #436, #459, #476, #489, #496, #522)


  • Fixes an issue where restarting an application that had subscribed to events sometimes causes an error when the events are delivered to the new instance (#437)
  • Fixes an issue where multiple threads trying to subscribe to events in parallel would sometimes cause SoCo to attempt to create multiple event listener servers and fail on socket.bind(). (#437)
  • Fixes an issue where SoCo would not recognize object.container.playlistContainer.sonos-favorite when receiving events (#438).
  • Fixes a bug in play_uri where it would not play a http or https prefixed radio stream due to a change in the Sonos API (issue #434). This change fixes it by replacing the two http type prefixes with Sonos’ x-rincon-mp3radio:// prefix (#434, #443)
  • Fixes an exception being raised on Windows with discover. The error was caused by socket.getsockname raising an exception on Windows with and unconnected unbound socket. Fixed by now simply logging the sockets. (#445)
  • Change to use SoCo method to determine coordinator in Snapshot (#529, #519)
  • Prevent error when queue started from Alexa and using snapshot. Currently there is no was to restart a cloud queue from SoCo, this PR just prevents Snapshot causing an error. (#530, #521)
  • Fix add_multiple_to_queue fails with too many items (#488)
  • Fixed log level (#534)

Backwards Compatability

  • Dropped support for Python 2.6 (#325, #526) and added support for 3.6 (#528)