MiLight Controller

with LightFX


Have you ever seen those fancy TV’s that project a color on the wall behind them, based on what it’s playing?
It's a technology called 'Ambilight'. This project started because I wanted that kind of effect on my big projector screen while playing movies. You can get that effect with Philips Hue, probably Lifx lamps and various combinations of Raspberry Pi/ Arduino with LED strips. Most of these methods are probably more expensive or non practical for a non permanent fixture, such as a foldable projector screen. I wanted very cheap hardware. It turns out there are Wifi RGB lamps that don't cost a fortune.You can find them branded as MiLight / LimitlessLED / EasyBulb. A basic setup for example (lamp+wifi bridge) will cost you $30 or less and a few minutes to setup. My software in both free and paid flavors. I'd like to hear how it worked for you. I hope that it will suit most people's needs. Ideas are always welcomed of course. The idea behind this app is pretty simple really. Audio and video is processed by this app while it's playing and colours are calculated based on certain algorithms. Those colours are then passed to the lamps via WiFi. I’ve also ported some of my previous work ,namely a LightFX (aka AlienFX) compatible protocol.

End result looks something like this.


LightFX (also known as AlienFX) is an interesting technology used by some games. It allows the game to set the colour of the lamps directly. So far only a handful of games have adopted this technology. This app incorporates support for this technology.
Note: LightFX is deprecated for V6 since there are not enough game titles to support its development


If you don't use Windows or Android, the Ambilight part of the application has also been ported as a standalone Addon for Kodi/XBMC. This Addon is compatible with all platforms (Windows,Linux,Mac OSX, Android etc) and all CPU types (x86,ARM etc) that are supported by Kodi.
Download and install as zip, configuration is the same as the windows version.
Note: Only Kodi up to v15 and Milight up to v4 are supported


You will need the following stuff in order to take advantage of this app:



for playing the audio /video file


This App

It will process the signals and decide what to do and calculate the colours

    Requirements are:
  • Windows Vista/7/8
  • .NET 4.5
  • VC++ 2013


MiLight / LimitlessLED / EasyBulb WiFi Receiver Bridge (v4 or newer for better results)

This controller is used to bridge the computer and the lamps.
You'll need at least one. Make sure you get the right version of it as older versions (prior to v4) are only able to support one colour instead of four

milight lamp

MiLight / LimitlessLED / EasyBulb Lamps

You need one of the coloured versions of the lamps or LED strips:

  • RGBW warm white
  • RGBW cold white
  • RGB (limited support)
You can get away with only one lamp but you'll get a much better result with 2 or 4 lamps


A more detailed guide is included with the app upon installation. Here are a few basics




The following are common for most effects:
Latency: How often the colors change. Lower latency means faster color change but also higher CPU load
Sequential lights: When checked, lights won’t all be updated together. Instead they will change one at a time


Static color

This is your basic mode. It simply sets a color of your choice to each zone. Clicking on one of the lamps brings out this colorwheel. If you have a v6 bridge and RGBWW/CCT lamps you will also get an extra slider that controls white color temperature

static color effect settings

Audio mode

This mode lets you drive the lights using music.

audio color effect settings

Cycle colors mode

This is your classic mode where colors rotate in pattern. You can also apply a strobe effect.

static color effect settings
You can define your own light sequence by creating a script file. The script files are placed in the folder named “loops” inside your installation directory. The scripts must have the “.mlcc” extension to be recognized by the program. The file itself is a text file, a demo script is this:

<options>fadein,fadeout,randomcolor,randomlamp=4 </options>

The script has 2 parts. First part is the options, this is optional. Here you define how you want your effect to behave, simply by writing the keywords.

The valid options are:

  • fadein     This specifies whether the colors should be faded in
  • fadeout     This specifies whether the colors should be faded out
  • randomcolor     If specified, colors will be played in a random order. If not they will be played sequentially starting from the top
  • randomlamp=XX     If specified, a number of lamps XX must also be specified, eg. randomlamp=2. This tells the application how many lamps to randomly change at any given time. Valid ranges are 1 to 16. If not specified, all lamps will change color together

The second part in a script are the colors. Each color must be written in the form <color>AARRGGBB</color> where AARRGGBB is an ARGB HEX color value:
  • AA: The relative brightness of the color, range 00-FF
  • RR: The amount of red color, range 00-FF
  • GG: The amount of green color, range 00-FF
  • BB: The amount of blue color, range 00-FF

eg. <color>80FF0000</color> for color red, half brightness.
You can define the same color multiple times if you want it to be more common.

Screen color mode

This is the main mode for this app. This mode does all that fancy tricks with movies. It takes some getting used to but it’s worth the effort.

screen color effect settings

Per-Zone control

The Milight WiFi bridge can support sending commands to 4 different lamp groups (called "Zones") simultaneously. The app has support for sending commands only to some of the zones. This enabled you to control only certain zones via this app when you utilize multi-room setups with the same bridge.


This mode allows you to define custom strategies for effects. You can specify what effect the controller will use based on:

  • The applications you have running
  • A time
  • Both
The criteria are hierarchical top-down. Starting from the top, the first criterion that is met will be applied. If you specify a time but no process the application will assume that you want that time to have priority over all other process-based triggers. Multiple process names can be stacked using the “;” symbol. For example firefox;notepad



Presets is basically a save/load function. It allows you to store various different configurations and restore them with the click of a button.



Skinning allows you to customize the app for a more personal look. You can choose one of the included skins or you can make your own. More info is included in the user guide that comes with the app.





Command line usage

You can also launch the app or feed it information during its lifecycle using command line parameters. So far you can only change the effect type but more modes will be implemented as needed. This features is useful if you’re writing a script of your own.

“Milight Controller.exe”<options>
<options> are:

  • -e or –effect or /e or /effect: followed by the effect number:
    • 0 = Off
    • 1 = Audio
    • 2 = Screen Color
    • 3 = Static color
    • 4 = Cycle Colors
    • 5 = Lava Lamp
    • 6 = No effect
    For example: “Milight Controller.exe” –e:0

  • -q or --quit or /q or /quit exits the application

  • -f or --frequency or /f or /frequency:<value> for the effects that have an overall frequency slider
    Valid range is 10-1000, (1000ms = 1 second)

  • -b or --brightness or /b or /brightness:<value> for the effects that have an overall brightness slider
    Valid range is 0-255

  • -c or --color or /c or /color:<ZONE>,<A>,<R>,<G>,<B> for the static color effect only
    Valid ranges are:
    • <ZONE> 1-16. 1-4 refer to first controller, 5-8 the second etc
    • <A> 0-255
    • <R> 0-255
    • <G> 0-255
    • <B> 0-255
    Multiple colors can be stacked on the same command as long as you follow the -c:<ZONE>,<A>,<R>,<G>,<B> convention for each zone you want to paint

  • -gc or –getcolor or /gc or /getcolor: <ZONE>
    <ZONE> 1-16. 1-4 refer to first controller, 5-8 the second etc.Requests color for a zone in static color mode

  • -ze or --zone-enable or /ze or /zone-enable: <ZONE>. Enables zone <ZONE>
    • <ZONE> 1-16. 1-4 refer to first controller, 5-8 the second etc

  • -zd or --zone-disable or /zd or /zone-disable: <ZONE>. Disables zone <ZONE>
    • <ZONE> 1-16. 1-4 refer to first controller, 5-8 the second etc

  • -l or --loop or /l or /loop:<LOOPNAME> for the cycle color effect only. Loads loop named <LOOPNAME>, where <LOOPNAME> is your loop name

A few examples
Switch to custom color mode:
"MiLight Controller.exe" -e:3

Sending this command will change the first 3 zones to Red,Green,Blue with full brightness:
"MiLight Controller.exe" -c:1,255,255,0,0 -c:2,255,0,255,0 -c:3,255,0,0,255

This command will change those 3 zones to white with brightness 100%, 70%, 50%:
"MiLight Controller.exe" -c:1,255,255,255,255 -c:2,178,255,255,255 -c:3,128,255,255,255

Sending commands via Telnet

You can also send the above command line parameters via the network by using a telnet compatible client, for example PuTTY.
You need to establish a connection to the IP of the PC running the controller using the listening port specified in settings (default 8899).
The commands use the same format as the command line arguments with one exception.
At the end of the command you have to add a dot (.).
This signifies the end of the command to the server.
You can see the example below.

screen color effect settings

Sending commands via HTTP

You can also send the above command line parameters via HTTP with a browser.
You need to browse to the IP of the PC running the controller using the HTTP listening port specified in settings (default 8898).
The commands use the same format as the command line arguments.
You can for example access the page on
When sending commands over HTTP the proper format is: http://<ip address>:<port>/?<command>
Don't forget the "/?" part...
for example

Stacked commands must be separated by the symbol ‘&’
for example,255,10,20,15&-c:2,100,0,55,185



Due to lack of free time, the pro version of Milight Controller for Windows will not be available until further notice. If however you need any help with configuring the app please contact me. I'll do my best to help you


Milight Controller for Windows has been upgraded to include all the tweaks from the Android version. Lights should be much faster now but since alot of the code has changed the new version is in beta stage and under testing. Anyone can give it a try and see how it performs. Feedback is most welcomed!


Milight Controller for Android has been released and is available for general use. Find out more here:Milight Controller for Android


We're working on bringing a version of the app for Android. There is a beta version already available for download. Find out more here:Milight Controller for Android


This is the first stable release that adds support for V6 bridges


We're moving to a new server. If you want update checking to work make sure you have installed at least version or


Initial support for the V6 bridges was added. It is still beta so give it a try and let me know how it performs.


It seems there's a new version of the bridge, V6. It looks like they may have changed a few things that may break compatibility with the app. Until the app has been thoroughly tested with V6 bridges avoid using the app with a v6 bridge.


I've been asked many times to add the possiblity for users to create their own color sequences. Today's relase is all about that. You can read how that works in detail both on this page and in the user manual. Basically all you need is a text editor and some time to read the guide.


Today's release sees the addition of skinning support so you can customize how the application looks.
You can choose one of the already available skins or you can make your own by following the simple guide included in the application manual.


A new release today… This release sees the addition of a custom trigger algorithm. You can now specify what effect the controller will use based on the applications you have running. For example you can set the controller to switch to “screen color” when your favorite media player is running or “audio mode” when your audio application is running. Take a look at the guide to get more info.
Also, I want to thank everyone for their initial, overwhelming, support. I also want to thank the couple of odd trolls who took it upon themselves to sent me hate mails about my decision. They convinced me that my decision was the right one.


It seems that the people who sell those things aren't interested in helping out. Too bad


I've added some preliminary support for older bridges as well as RGB lamps/LED strips but there's a catch. You can only send one color per bridge. You'll need to provide feedback on how they work.


I've had reports that some antivirus programs think this app is a virus. It is a false alarm. I've already asked the antivirus makers to address that issue.


In an effort to provide better compatibility, I have reached out to the companies that make /sell these products in order to provide me with some test samples.
Their initial reaction has been positive.


You need to have some basic knowledge of how to configure the MiLight Wifi bridge and how to pair the lamps to each zone. Read the manuals that came with those products, they explain the whole process

Lights aren't changing
You either have an old bridge (only version 4 and on bridges are supported) or you have misconfigured the app. Make sure you know the IP address(es) of your MiLight bridge(es). Also configure the correct port. Make sure (by pinging for example) that you can reach your bridge(es) from your computer. This application requires access to your local network so if you have a firewall make sure you configure it accordingly to allow access. LightFX games require access to your local network too.

Configuration is correct but lights still aren't changing
You may have paired the lamps to the bridge in an incorrect manner.
The correct procedure is this:
1) Switch off all lamps
2) Switch on the lamp you want to pair to the first zone of the bridge
3) At the same time press the "ON" button of the corresponding zone from your phone app.*NOT* the "ON" button for all the zones.
4) Repeat for the rest of the lamps/zones

If for some reason the phone app isn't working for you, you can also use this app to do the same:
1) Switch off all lamps
2) Load the app and switch to "Static color" mode
3) Switch on the lamp you want to pair to the first zone of the bridge
4) At the same time, from the app, click the lamp icon of the zone you want to assign the lamp to and choose a random color
5) Repeat for the rest of the lamps/zones

Lights stop working after a while but the app is still functioning
There is a problem communicating with the MiLight bridge. Remember that this is a network app. Any problems you may have on your local wireless network (such as poor connection) will cause problems with this app too. Try pinging it. If it doesn't respond try rebooting both your router and the MiLight bridge. You can also try adding a static route from your computer the bridge.

Screen colour mode isn't working with games
If you want to have this effect within games, you have to run the game in either Windowed or Borderless mode. The reasons for that are technical and have to do with the way a full screen game is handled by Windows.

The app is crashing
Write down the error. Exactly what it says on the crash window and email it to me

Compatibility matrix
This is based on user observations and is not official in any way.
Bridge/ Controller versionLamp version

Everything is configured correctly but the lights are not working with a V6 bridge
This can happen. MrJoki007 has written a nice HOWTO about it:
  • First open the official milight app on your phone.
  • Then open the link/unlink settings.
  • Unlink all your milight devices from the bridge. (Make sure all zones are cleared)
  • Now take something like a pen and press the RST (reset) button 10 secounds on your bridge while its plugged in.
  • Now open the officical milight app and remove the old bridge.
  • Add a new bridge select the Smart Link mode and type your wifi name and password in and click start.
  • After few secounds it should say configured.
  • Now find out the ip of the bridge and open its web gui.
  • Make sure its set to UDP and port 5987 on other settings and click save and restart.
  • Now open the milight app again and select your bridge.
  • Now link all the devices in the zones you like.
  • Now open the app settings and make your the ip of your bridge and port 5987 are set correctly.
Read more here


Please read the news section

Changelog:     27/9/2018
  • [bugfix]various bugfixes

Free vs Pro (Unavailable at the moment)

Updates yy
Effects yy
Support n y
Controllers supported 1 4
Per-zone Contol n y
Presets(Configuration import/export) n y
Triggers(Effect auto-switching based on running applications) n y
Custom color sequences(Make your own custom color loops) n y
Skins(Customize how the application looks) n y
Tablet Mode n y
Advanced Effect Tweaking n y
LightFX Support n y
Minimize to Tray n y


Send me a Message:

Created by BLACKTIE.CO