How to Control Yeelight From a Windows PC

Xiaomi has been releasing a steady stream of Smart LED light bulbs, strips, and various other Smart home devices for some time – recently, their Yeelight II series has been growing huge in the Asia region as competitors like Philips Hue and LIFX are a bit expensive.

The cost of a single Yeelight Blue II color bulb currently runs around $20 per bulb, compared to a single Philips Hue bulb which is nearly $80 – not to mention that Yeelight bulbs don’t require any kind of “starter kit”, you just connect them to a socket and find them on the Yeelight mobile app.

While Xiaomi’s Yeelight series is a great, affordable Smart lighting system, particularly the Yeelight Blue II bulbs and strips, the Yeelight mobile app is a little lacking compared to its rivals – but there’s a way to enable developer mode on this Smart light system and control it from your PC, with a whole range of additional features, utilizing the Yeelight Toolbox.

Requirements:

First you should begin by updating each Yeelight bulb to the latest firmware from the Yeelight mobile app, if any new firmware is available.

  1. Next you need to enable “LAN Control” (aka Developer Mode) for each Yeelight device from the Yeelight app on your phone.
  2. Go to My Devices, press the bulb you want to control, and tap the little arrow pointing upwards to open the expanded settings menu.
  3. At the bottom in the expanded settings menu you should see a little lightning bolt that says “LAN Control”. Press this option and turn it on.
  4. Repeat this for all devices you want shown in Yeelight Toolbox for PC.
  5. Now make sure that your Yeelight devices are on the same network (Android hotspot, modem WiFi, router, etc. – it should all be compatible as long as everything is on the same network).

Launch the Yeelight Toolbox app on your PC, and you should see all of your connected Yeelight devices on the left side panel – if not, try hitting the Refresh button.

Now you should be able to control your Yeelight devices through the Yeelight Toolbox interface, including enabling Movie Mode.

ABOUT THE AUTHOR

Kamil Anwar


Kamil is a certified MCITP, CCNA (W), CCNA (S) and a former British Computer Society Member with over 9 years of experience Configuring, Deploying and Managing Switches, Firewalls and Domain Controllers also an old-school still active on FreeNode.

Comments

12
    DS
    Daniel Sunaryo Dec 6, 2018

    Wow thanks a lot.

    EQ
    Evechuy Quevedo May 2, 2019

    wow that was insane!!!
    no setup no nothing. Opened the app and it straight change my bulb color
    I thought it was a virus tbh

    PB
    Pierre Buirette Sep 25, 2019

    thanks just perfect 😀

    JO
    Joosl Jul 4, 2020

    Dont know, it doesn’t work for me. Started it and got an error:

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize —> System.Configuration.ConfigurationErrorsException: ‘.’, hexadecimal value 0x00, is an invalid character. Line 9, position 1. (C:UsersMyNameLolAppDataLocalJGRyeelight_toolbox_3.1.0.ex_StrongName_m0mo3gfgoc5pkx0ocafozu1uofsw1c0w3.0.3.0user.config line 9) —> System.Xml.XmlException: ‘.’, hexadecimal value 0x00, is an invalid character. Line 9, position 1.
    at System.Xml.XmlTextReaderImpl.Throw(Exception e)
    at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
    at System.Xml.XmlTextReaderImpl.ParseText()
    at System.Xml.XmlTextReaderImpl.ParseElementContent()
    at System.Configuration.XmlUtil.StrictReadToNextElement(ExceptionAction action)
    at System.Configuration.BaseConfigurationRecord.ScanSectionsRecursive(XmlUtil xmlUtil, String parentConfigKey, Boolean inLocation, String locationSubPath, OverrideModeSetting overrideMode, Boolean skipInChildApps)
    at System.Configuration.BaseConfigurationRecord.ScanSectionsRecursive(XmlUtil xmlUtil, String parentConfigKey, Boolean inLocation, String locationSubPath, OverrideModeSetting overrideMode, Boolean skipInChildApps)
    at System.Configuration.BaseConfigurationRecord.ScanSections(XmlUtil xmlUtil)
    at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
    — End of inner exception stack trace —
    at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
    at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
    at System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e)
    — End of inner exception stack trace —
    at System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e)
    at System.Configuration.Internal.InternalConfigRoot.OnConfigRemoved(InternalConfigEventArgs e)
    at System.Configuration.Internal.InternalConfigRoot.RemoveConfigImpl(String configPath, BaseConfigurationRecord configRecord)
    at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
    at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
    at System.Configuration.ConfigurationManager.GetSection(String sectionName)
    at System.Configuration.ClientSettingsStore.ReadSettings(String sectionName, Boolean isUserScoped)
    at System.Configuration.LocalFileSettingsProvider.GetPropertyValues(SettingsContext context, SettingsPropertyCollection properties)
    at System.Configuration.SettingsBase.GetPropertiesFromProvider(SettingsProvider provider)
    at System.Configuration.SettingsBase.GetPropertyValueByName(String propertyName)
    at System.Configuration.SettingsBase.get_Item(String propertyName)
    at System.Configuration.ApplicationSettingsBase.GetPropertyValue(String propertyName)
    at System.Configuration.ApplicationSettingsBase.get_Item(String propertyName)
    at Yeelight_Toolbox.Properties.Settings.get_upgradeRequired()
    at Yeelight_Toolbox.Utils.upgradeSettings()
    at Yeelight_Toolbox.FrmMain.FrmMain_Load(Object sender, EventArgs e)
    at System.Windows.Forms.Form.OnLoad(EventArgs e)
    at System.Windows.Forms.Form.OnCreateControl()
    at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
    at System.Windows.Forms.Control.CreateControl()
    at System.Windows.Forms.Control.WmShowWindow(Message& m)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.Form.WmShowWindow(Message& m)
    at Yeelight_Toolbox.FrmMain.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
    —————————————-
    yeelight_toolbox
    Assembly Version: 3.0.3.0
    Win32 Version: 3.0.3
    CodeBase: file:///C:/Users/MyNameLol/Downloads/yeelight_toolbox_3.1.0.exe
    —————————————-
    System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4150.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    —————————————-
    System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4001.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    —————————————-
    System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    —————————————-
    System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    —————————————-
    System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4180.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    —————————————-
    System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    —————————————-

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:



    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

    Would be nice, I just want to control my light with my PC

      TC
      Tony Celentano Aug 27, 2020

      Strange – can you try Jeelight, an alternative software to Yeelight Toolbox, and see if that works better for you?

      Reply
    KM
    Kamrul Hasan Monju Jul 30, 2020

    perfect bro. thanks a lot

    EP
    Eric Payad Aug 15, 2020

    This was amazing work man!
    I didn’t buy my light strip hoping for this functionality but you’ve created it! Super stoked

      TC
      Tony Celentano Aug 27, 2020

      Glad it worked! I also recommend checking out Jeelight, I like it a little better than Yeelight Toolbox but they both do the same thing.

    ZN
    zeeshan nasir Aug 25, 2020

    Works great Kamil.I wonder if you can help me with a problem. I am not able to update the firmware from from 1.4.1_48 to 1.4.2_0076. I have other bulbs which were earlier upgraded to the latest firmware. I just got a new one and it wont upgrade. Earlier Bulbs upgraded easily i guess because they were connected to a recently released firmware.
    It either keeps failing or goes to 99% and is stuck there.
    Since I can’t update I can’t change the settings of the bulb as it says I need to update first and then I cant make any changes. I have 6 more bulbs on my hands and I can’t do anything with them
    If I try the through the android version its stuck at 1% and not moving forward.
    I tried resetting it and it did not work.
    I tried creating hotspots and it did not work.
    I tried using different routers and it did not work.
    I tried using the Mi Home app to update and it didn’t work and something with yeelight app
    Is there anyway I can upgrade to a firmware which was lower than 1.4.2_0076 and than upgrade from that firmware to 1.4.2_0076
    I am on the Singapore server
    Please help desperate,

      TC
      Tony Celentano Aug 27, 2020

      Hi Zeeshan, glad the guide worked for you. Its a bit outdated so I recommend also looking at Jeelight for Windows, and decide if you like Jeelight or Yeelight Toolbox better.As for your firmware problem with your bulbs, thats tricky. I also sometimes have problems with the Yeelight app, such as when adding new bulbs, it gets stuck at 60% and then gives a time-out error. After several tries it will finally work.The best recommendation I can give is removing the problematic lights from your Yeelight app, and try clearing the Yeelight app cache in your Android settings.Also try a different regional server.If that fails, I would address your problem to the official Yeelight forums, they are pretty responsive:
      https://forum.yeelight.com/

      Reply
        ZN
        zeeshan nasir Aug 27, 2020

        Thanks tony. I solved my problem by switching servers updating the firmware and then reverting back to the original server where the setup is.
        Yeelight customer service is lousy and they just dont bother reverting back.

        Reply
    Túllio Apr 30, 2021

    you are my angel