Kef ls50 Wireless

Awesome awesome awesome. I can change sub volume when watching films vs listening to music!

1 Like

@basnijholt thanks for this great integration. Using it daily in my home office

I was hoping the new Equalizer settings would be exposed in the Media Player details page. It seems you have to crate your own “expandable” card with this for now. Any chance this can be added to the Media Player card as well?

Does anyone use the KEF integration with a LSX?

I have them but every now and then they become Unavailable until I restart HA. Does any else observe this problem and has an idea?

I have tried a LOT. It gets here but then gets an exception forever.

I have a pair of KEF LSX, but I seem to need to power cycle my speakers to get them back once they become Unavailable. When they show up as Unavailable in Home Assistant, they are also not accessible via KEF Control. I do still however have the ability to stream to them using Spotify Connect, and control volume (through Spotify), and the physical remote control works. I also have access to their basic interface on port 80, where you can change some WIFI settings etc. It’s only the control interface that has crashed.

I raised this ticket:

I seem to have another issue with my KEF LSX, which is that they don’t remember the mode/DSP settings after wake-up from stand-by. They are back at default. If I send the “correct” DSP settings, settings which the speakers think they should already have, then they are still not applied. I have to change to a different DSP value, and then back to the desired value.

Both of these issues I have raised with KEF support, but so far they haven’t been very helpful.

My speakers are running firmware p20.4101909240.105243422.

1 Like

Hi @logan893, thanks for looking into this as well. I have struggled with this problem for some months. I can now verify that when disabling DSP settings updating, this speaker does not become unavailable.

Maybe it is because of some specific DSP setting, so I am iterating over all settings to find out whether there is a single culprit.

HA / 0.117 - one small issue I noticed is that if I restart HA and the LS50W are off, and I turn them on a while later, my .yaml configuration information (with the static IP address and other configuration options) gets ignored, and the KEF integration somehow auto-discovers the speakers again later assigning them a new name (kef_ls50w_2), hence breaking my front end configuration (media card)

In my setup, auto-discovery is off (I commented out the “Discovery:” entry. So not sure how is it possible that the KEF integration is ignoring this and auto-adding newly discovered speakers.

I think this has been going on since the first release of the KEF integration.

Every time this happens, I can see in the Entities browser that the entity name I defined in yaml (kef_ls50w) shows up in “not available” state (and the button to “Remove”/Delete it is enabled), and a second, new entity (kef_ls50w_2) is also listed and this one is active. Every time I have to delete the original entity, and then rename the new entity to mach the name I used in my lovelace UI yaml so my view work.

I wonder if this issue is related to the fact that my speakers are first-generation and their WiFi connection does NOT stay on while the speakers are off (hence I can’t do remote turn-on).

@basnijholt it seems that during initialization, this integration assumes that the KEF’s are always- reachable even while off, hence the first-gen speakers need to be on while HA is initializing, otherwise the KEF integration gets confused as per the above. Can you please add support for first-gen speaker intialization, so that the integration waits for as long as needed (e.g. a week or a month or forever) for the speakers to be turned on, before giving up and erroring out?

I have exactly the same problem!

Hi All
My LS50s have a serial number that is post the serial for which wake on lan should work (and have the latest firmeware), but it doesn’t. I’ve tried WOL via HA and my via my router, and media_player.turn_on doesn’t work either. All other funcitonality appears to work.

The only thing I can think of as being an issue is that when I first got the speakers and uploaded the latest firmware, I bricked them somehow. The service agent by memory said they had to change the network card to resolve the issue.
Any advice on how to test further?

And another question, what does this attribute mean: supported_features: 19901
Cheers

@ariel, @chimpy, I am also experiencing those problems. Unfortunately, I don’t have the bandwidth currently. I will look at it as soon as I can!

I don’t have any suggestions unfortunately.

Using that number HA can figure out what kinds of operations the media_player supports, which is:

    SUPPORT_NEXT_TRACK,
    SUPPORT_PAUSE,
    SUPPORT_PLAY,
    SUPPORT_PREVIOUS_TRACK,
    SUPPORT_SELECT_SOURCE,
    SUPPORT_TURN_OFF,
    SUPPORT_TURN_ON,
    SUPPORT_VOLUME_MUTE,
    SUPPORT_VOLUME_SET,
    SUPPORT_VOLUME_STEP

Thanks for your responses. I’ve shamelessly borrowed a fair bit (all) of your yaml code for the LS50s. I haven’t attempted serious troubleshooting yet, but the DSP code isn’t working. With supported_features: 19901, will I be able to control/sync the DSP settings?

I have searched this topic, but didn’t find anything about it.
I’ve been playing with the Kef integration, and it’s great, but I was missing the ‘current playing’ information. So I’ve been playing with a packet monitoring tool, and it’s possible to get this information, using port 10100. When sending a TCP package with a hex value of 0, it will return the information like this:

<view id="play">
  <text id="scrid">100</text>
  <text id="cbId">1000</text>
  <text id="title">Now Playing</text>
  <text id="artist"></text>
  <text id="otrknum"></text>
  <text id="rating">0</text>
  <text id="album">Angus &amp; Julia Stone (Deluxe)</text>
  <text id="track">All This Love</text>
  <text id="albart">yes</text>
  <text id="Favorite">yes</text>
  <text id="mimtype">Spotify</text>
  <icon id="aart" url="https://i.scdn.co/image/ab67616d0000b2738a4409496dc76a5637e40840">aart</icon>
  <text id="bitrate">1411 kbps</text>
  <icon id="wicon">infra</icon>
  <value id="buflvl" min="0" max="100">100</value>
  <value id="wilvl" min="0" max="100"></value>
  <value id="timep" min="0" max="65535">85</value>
  <value id="timet" min="0" max="65535">245</value>
  <value id="timec" min="0" max="99999">0</value>
  <value id="date" min="0" max="99999999">0</value>
</view><view id="status">
  <icon id="play">play:1000</icon>
  <icon id="shuffle" text="Tracks">shuffle</icon>
  <icon id="repeat">empty</icon>
  <value id="busy" min="0" max="1">0</value>
</view>

I’m not really experienced with Python development, but I might try to build something myself. But I had to share it, maybe someone else can use this info as well.

Similar to @tomroeleveld, i’ve done a bit of exporing and installed the UPnP Availability integration.

It’s pulled the UPnP xml on http://192.168.11.8:8080/description.xml, but only <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType> is visible (the UPnP Availability integration can see more device types for my TV)

Whether it’s the way the component works in HA, or whether the speakers are still visibile, I don’t know, but when turning off the speakers the binary sensor is still visible with attributes, rather than becoming unavailable.

May be of use to someone who knows more than I do about this sort of stuff (which isn’t hard).

<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:ms="urn:microsoft-com:wmc-1-0" xmlns:smsc="www.smsc.com" xmlns:qq="http://www.tencent.com" xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11" xmlns:df="http://schemas.microsoft.com/windows/2008/09/devicefoundation">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device ms:X_MS_SupportsWMDRM="true">
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.51</dlna:X_DLNADOC>
<pnpx:X_compatibleId>MS_DigitalMediaDeviceClass_DMR_V001</pnpx:X_compatibleId>
<pnpx:X_deviceCategory>MediaDevices</pnpx:X_deviceCategory>
<pnpx:X_hardwareId>MicrochipCE2CY920_0xBD VEN_14E7&DEV_0001&REV_01</pnpx:X_hardwareId>
<df:X_deviceCategory>Multimedia.DMR</df:X_deviceCategory>
<qq:X_QPlay_SoftwareCapability>QPlay:2.1</qq:X_QPlay_SoftwareCapability>
<smsc:ProductCap>SeekOnPaused</smsc:ProductCap>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>KEFLS50w</friendlyName>
<manufacturer>KEF</manufacturer>
<manufacturerURL>http://www.kef.com/</manufacturerURL>
<modelDescription>LS50 Wireless</modelDescription>
<modelName>SP3903</modelName>
<modelNumber>03</modelNumber>
<modelURL>http://www.kef.com/</modelURL>
<serialNumber>84171500C537</serialNumber>
<UDN>uuid:5f9ec1b3-ed59-1900-4530-84171500c537</UDN>
<UPC>123810928305</UPC>
<iconList>
<icon>
<mimetype>image/jpeg</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/BCO_device_sm_icon.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/BCO_device_lrg_icon.jpg</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/BCO_device_sm_icon.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/BCO_device_lrg_icon.png</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/RenderingControl/desc.xml</SCPDURL>
<controlURL>/RenderingControl/ctrl</controlURL>
<eventSubURL>/RenderingControl/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/ConnectionManager/desc.xml</SCPDURL>
<controlURL>/ConnectionManager/ctrl</controlURL>
<eventSubURL>/ConnectionManager/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/AVTransport/desc.xml</SCPDURL>
<controlURL>/AVTransport/ctrl</controlURL>
<eventSubURL>/AVTransport/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-tencent-com:service:QPlay:1</serviceType>
<serviceId>urn:tencent-com:serviceId:QPlay</serviceId>
<SCPDURL>/QPlay/desc.xml</SCPDURL>
<controlURL>/QPlay/ctrl</controlURL>
<eventSubURL/>
</service>
</serviceList>
<presentationURL>http://192.168.11.8</presentationURL>
</device>
</root>

Offtopic-ish as I don’t know anything about kef integration – the UPnP availability sensor is explicitly designed only to track whether a device is online or not (based on what it broadcasts), so that is not solution for anything else besides having a binary_sensor reporting that.

Has anyone found some info for the version II of the LS50 wireless ?

+1, this doesn’t seem to work with the LS50W II, I suppose implementation is different.

I found a python script regarding the Wireless II version, but i don’t have the knowledge to implement them in Home Asssistant.

I own an old LS50 Wireless, one of those without the Wake-On-Lan support, so the only way I have to turn it on it by using the IR remote.

I’d like to use the Broadlink integration to turn it on, but the IR code I can “learn” from the Kef remote is a just a “power toggle” command, not a discrete “power on” command.

Was anybody able to get the discrete IR codes working with a Broadlink remote?
See the second page on this PDF: https://assets.kef.com/pdf_doc/ls50w/LS50Wireless-IRcode-INT.pdf

Thanks.

In case anybody else was interested, I was able to generate all of the Kef LS50 Wireless Broadlink IR codes: both the original ones (available on the standard remote) and the “secret” ones (discrete commands). You can find them here:

Would it be possible to modify the current Kef integration so that the supports_on would have a third possible value, let’s say via_IR?

1 Like

Another +1 for LS50 Wireless II support. I replaced my old denon receiver and speakers with a new ls50 Wireless II - now I am very much missing Home Assistant integration which I used to change input and keep track of power-on state