OffDarks LED lights alternative firmware (Tasmota/ESPhome...)

Hi, I want to share quick how to flash Tasmota firmware (or any other) to OffDarks LED lights.

EDIT: recent models might NOT have ESP and would require hardware modification and additional hardware to get Tasmota working. See the posts below!!


(60W + 36W version)

I needed some LED lights to house we are renovating. I wanted them to be some better quality ones and I found this brand - OffDarks on Aliexpress. The price looked great, reviews and photos of internals looked fine as well. They have wifi and most importantly the color temperature is configurable.
The models I have is 60W and 36W - full model name is WF-DM-60-420mm and WF-XGP-36-280mm.
Both have the same driver (which has only different current sense resistors due to different power output).

For my current use case I want to use them without any smart functions - only configure them (the color temperature) and forget. So I ordered them, plugged them into AC and…they lights up BLUE? And after a minute they are Full warm white and after another minute full cold white and blue again!

Ok so I opened the “Magic home” app, configured them to white and everything looked OK. When I flipped the regular AC switch OFF and ON again they light up in the previous white state. So far so good.

While I was playing with them I flipped the switch like three times in short timeframe. This caused them to reset to default state. I would understand this but the default state is some demo mode as I saw previously when I plugged them straight out of the box - BLUE, WARM, COLD, BLUE again! I can’t understant what kind of idiot can configure default state like this. I have Yeelight lights and their default state is neutral white. So even if you somehow reset them to default, you still have working light.

This was NOT acceptable as I can imagine that anybody can quickly flip the switch few times (anybody with kids can understand). Also the house I wanted to put them will be leased. So yeah - I can imagine the tennants will call me every time they reset the lights…

After brief look I discovered that the LED driver inside is just regular ESP8285.


(image of the driver)

So I decided to flash Tasmota firmware. I could flash ESPhome but currently I plan to use those lights in offline mode and the tasmota has nice web interface so I can easily configure it after I start wifi hotspot on my mobile phone.

Quick tutorial on how to flash:

  • Disconnect AC 230V line from the light - power to the chip will be provided from the USB-serial converter. Don’t risk flashing it while powered on from AC!
  • Disassemble the light
  • Connect (solder) wires to Tx, Rx, GPIO0, power and ground
  • Connect it with USB-serial converter* or as I used regular ESP8266 development board (nodemcu). I just pulled ENable to ground on this board so the ESP8266 does not interfere with the flashing. In this case you connect RX to RX and TX to TX. And not as you are used to (TX to RX and RX to TX)
  • Connect GPIO0 to GND (flashing mode)
  • Download binary of Tasmota and flasher (tasmotizer).
  • Connect USB-serial converter to PC
  • Open tasmotizer, choose the binary file, COM port and Flash it
  • Desolder everything, assemble the light and power on.
  • Use mobile phone (or anything with wifi) to connect to newly created wifi AP (tasmota_…)
  • Open 192.168.4.1 and configure your home AP’s name and key to connect
  • Configue->configure other and paste this template:
    {"NAME":"Offdarks","GPIO":[0,0,0,0,0,0,0,0,37,38,0,0,0],"FLAG":0,"BASE":18}
  • Check activate and Save

*If you are using some USB-serial adapoter be careful if the converter uses only 3.3V on RX/TX lines. And second warning - you need stable 3.3V with high current capability - not all USB-serial converters can deliver enough current to power the chip! That is why I used Nodemcu board


Other useful settings I configured:
Click “console” and paste folowing commands.
As I will use it in offline mode I sent following commands:

Disable MQTT:
SetOption3 0

Display hostname and IP address in GUI:
SetOption53 1

And most importantly: Device recovery using fast power cycle detection DISABLE!!!
SetOption65 1

This means that nobody can reset this light by fast switching the wall switch.

After this firmware update I am 100% satisifed with those lights. :slight_smile:
As I mentioned earlier if I start wifi network with the correct name, all light will connect and I can configure them using web browser. Here is image of how it looks - the top slider controls light temperature, the bottom one controls the brightness

Those lights have RGB strip at the top but in my use case it makes no sense to use it so I didn’t implement it into the tasmota firmware. But it can be of course added later.
The RGB configuration is following
GPIO14=blue
GPIO4=green
GPIO5=red

EDIT: so I implemented the RGB:
Just use the template
{"NAME":"Offdarks_RGB","GPIO":[255,255,255,255,38,37,255,255,40,41,39,255,255],"FLAG":0,"BASE":18}

By default you can use RGB OR White. If you want to have RGB independent on White (so you can have white light + RGB on top of that) you must input to console following:
SetOption37 128

Another setting I used - to set default state and NOT store any changes made during use:
First set the configuration you want (brightness, RGB color etc)
Hit restart and make sure it went back to what you want it

Then set following:
SaveData 0 (this stops saving changes made to internal flash)


8 Likes

Got one 36W today. great guide and good job!! tryied to follow it but it was impossible to solder GPIO0, rx and tx :confused:

Try to use lot of flux and tin (pre-solder) the pads without any wire first. And only after that try to solder the wires - again with lot of flux so the solder flows nicely and does not form solder bridges to surrounding pads. I have fairly big soldering tip but managed to do this quite easily.
Also proceed from left to right(or vice versa) but don’t try to solder RX (that is now from both sides surrounded by wires) last.

Thank you, man! It’s really work!
If you have a esphome yaml for this (RGBWW light), please post it here.

see this:-

has support for remote control version

[https://github.com/ashp8i/esphome_configs/blob/f4aa5a169320fc9aa15ec89c39104f2eb0f83e1f/Living%20Room%20Light.yaml](Offdarks LXD-XG68)

please help me in copying the effects in esphome and implement colour cycle rainbow

Great guide!!
I just bought the wf-dm-60 but something seems to have changed. I found the gnd and 3.3v but I don’t know where the others gpios are… Can u help me plz?

Can you attempt to reverse engineer it? Find out what pins are power and try to measure each GPIO pins at varying brightness to see what pins correspond to the different PWMs?

Hi guys, like a week ago I needed additional 2 lights so I bought the same models as before - 36W ( WF-XGP-36-280mm) and 60W (WF-DM-60-400mm)
When I received them they look different - the plastics and mounting of the internal power supply is different. Honestly - it looks better and like more mature design (forgot to take internal photos) - the 36W has properly mounted PCB under the LED board and not just driver board in another plastic box mounted where the input wires come from…

Here is 60W version (you can compare it with photos from original post):

And here is 36W version:


BUT - as mentioned by Xan83 they don’t have ESP inside anymore.…or is is like 50:50 chance you get ESP. Mine 60W had ESP and 36W had the unknown chip (BL602)

I decided that I really don’t want the original firmware inside so I decided to replace the small board with ESP. Poor BL602…worked like 5 minutes and then got tossed in the trash can.:japanese_ogre:

It is quite easy as the main driver board have the pins marked as GND, 3V3, RGB and White (cold white), Yellow (warm white).

If you look carefully you can notice the RGB on the driver and small board actually don’t match each other :smiley: but just look at the driver board’s markings and ignore the small board.

I just took the smallest ESP8266 board I had (D1 mini), flashed tasmota inside and soldered wires from the driver board where the small board previously was to the D1 mini. Pin mapping is as follows:
GPIO14=blue
GPIO4=green
GPIO5=red
GPIO12 = COLD (White)
GPIO13 = WARM (Yellow)
(I had bit of a mental excercise to assign those GPIOs to actual Dx pins on the D1 mini board according to the pinout I found :smiley: )
If I am not mistaken the wires should go:

D5=Blue
D2=Green
D1=Red
D6= COLD (White)
D7= WARM (Yellow)
and of course 3V3 to 3V3 and GND to GND

!!!This pin mapping is valid only for D1 mini! If you have another board (Nodemcu…) you should find the pinout and find on which pin the actual GPIO you need is connected!!!

As for mechanicals: There is plenty of space inside. I just superglued the ESP8266’s metal case to the bottom and then took neutral silicone and secured the board further at the edges. Now I am 100% confident the board will stay in place

Also as for the 36W version: there are NOT RGB LEDs but just Red Green and Blue discrete LEDs…so the color mixing is…well…NOT great :smiley: (don’t remember how it looked in the older version)

Hey guys,

just wanted to change a OffDarks WF-XGP-36-280mm to Tasmota and had no D1mini left. I found some old NodeMCU boards in my desk and just soldered it in after removing the non compatible BL602 chip.

As the pinout on both boards is basicly the same (at least GPIO <-> D#) I firs thought there could be a problem with PWM on the NodeMCU, as we need 5 GPIO’s for using all channels available (RGB+CW+WW).

As far as I know, older NodeMCU’s only support PWM on 4 pins.
D2 (GPIO4)
D5 (GPIO14)
D6 (GPIO12)
D8 (GPIO15)

While soldering I was already thinking about what channel I could waive. But after testing i found myself lucky, as it seems that the newer NodeMCU’s support PWM on any GPIO. So you can just use the already known Tasmota template written above or the following one I am using, as I probably will not add aditional sensors or else to the lamp after once installed. So there is no need to define the remaining GPIOs as “User”.

{"NAME":"Offdarks","GPIO":[0,0,0,0,38,37,0,0,40,41,39,0,0],"FLAG":0,"BASE":18}

I hope it helps others deciding to do the same. As the soldering is pretty easy to do here and even beginners should be able to get this done. But please read the article above carefully as there are some important hints, espaccially if your lamp type has a metal case.

So guys, have fun and let’s continue getting devices out of the cloud.

I found a guy that flash bl602 with Tasmota like soft : https://www.elektroda.com/rtvforum/topic3889041.html#19996571

I have tried on my MagicHome LED Strip : ZJ-BWCE-CCT v1.1
All is working great :slight_smile:

Creator make it work on ZJ-BWCE-IR-RGBW v1.2 too