Beta testers for LOCAL control of Cync by GE devices (must have 1 wifi device)

I have been having a hell of a time trying to get reliable and local only control of Cync by GE smart devices. I took it upon myself to fork and port a local lan controller node app to python and add MQTT control and Hass autodiscovery.

There are some caveats:

  • This requires DNS redirection. You will need to redirect 1 or all Cync wifi devices from the Cync cloud server to a local IP that is running the cync-lan python app or docker container.
  • You must still add/remove devices from your Cync cloud account before a device can be used with this local controller. I dont know how to pair and initilize these bulbs (yet).
  • When you add a new device, you must re-export the device list from the cloud.
  • To add a device, make sure your phone is not having its DNS redirected. If you have cync-lan setup and need to add a device. Disable the DNS redirection, power cycle the new device and restart the cync app on your phone, add the device to your cloud account, re-enable DNS redirection, power cycle the new device and let it connect to cync-lan.

This requires that you have at least 1 mains powered wifi device to act as a bridge to the BTLE mesh. Mains powered, BTLE only bulbs can be controlled by cync-lan. Battery powered Cync devices are BTLE only and are not supported by cync-lan.

You will have to export devices from the Cync cloud before running the script/docker container, see the README for detailed instructions and examples.

Please test, enjoy and open issues!

1 Like

The DNS redirect is clever, is this a common technique to gain local control of smart devices? It would kinda be cool to have a home assistant plugin that was based around this entirely, with a database of known smart device servers that you could add to essentially a local dns hosts list to convert any non local device to being locally controlled. Are there any reasons that that wouldn’t work universally? (I would imagine a lot of devices require some sort of encryption or https, so I’m guessing that would get in the way of some compatibility).

Either way I’ll take a look at this, I’ve got a couple of GE Cync lights in the house.

Yes and no. Like you said, most devices use HTTPS, as well as cync. The thing is, cync doesn’t verify the cert, which allows us to MITM traffic to study the binary protocol. If a device does verify certs, there isn’t anything we can do.

A generic DNS redirected server wouldn’t be realistic. Each company has their own binary protocol and such. Not a lot of people take the time to reverse engineer these IoT devices.

Just wanted to let you know that I tried your script with wired Cync toggle switches and it works great!

1 Like

Nice, ATM there is a known bug where the devices go out of sync. They may show a diff state in Hass than they do physically. I think I know the fix, just need to implement it properly. Hopefully fix it this evening.

If you notice your devices displaying incorrect state, restarting cync-lan will get things back in sync.

Do your wired switches have the motion and ambient light sensors? If so and you’re willing, if you can get me some socat debug logs, I may be able to add support for those sensors.

Unfortunately not. They are all just basic on/off toggle switches: https://www.gelighting.com/led-lights/bulbs/ge-cync-smart-light-switch-onoff-toggle-style-neutral-wire-required-bluetooth-0

Ah, no worries, I’m glad that the code is working properly for that device.

I have 2x of the Dimmer + Motion Smart switches PN → CSWDMOCBWF1/ST1P - It would be really great to be able to control the color via HA. I am looking for alternatives due to how annoying this actually is LOL. Where do I get you Scat Debug logs?

This doc may explain it: cync-lan/docs/debugging_setup.md at 3db94f1f9d246a2840eb4bbf8cf9da51001cbbcc · baudneo/cync-lan · GitHub

The best way to get debugging info:

  • use unbound as DNS server and its custom config to configure views: which will allow you to control the DNS redirection for each individual IP address.
  • Set statis DHCP addresses for your phone, one of the wired switches and 2 VM’s / LXC’s you can use to run socat
  • Setup the unbound views to DNS redirect your phone to 1 server running socat and the wired switch to dns redirect to another server running socat.

The reason we need 2 seperate hosts that runb socat is because we wont be able to tell which device is sending/receiving if more than 1 device connects to a socat server. By having 2 socat servers, you can redirect your phone cync app to one session so it only logs the connection between the original cync-lan server and your phone and the other socat server will log the connection between the original cync server and the wired switch.

Start each session and start sending commands from the cync app. That way we can see what the cycn app sends to the server anmd then what the server sends to the wired switch.

So, if you setup the sessions and then go and walk by it, we should see the motion data and/or the ambient light data. End the sessions, name the output files app.motion.socat.txt for the app ↔ original cync server and motion-switch.socat.txt for the wired switch ↔ original cync server.

Restart the sessions and then go and do a different action, name the file after that action. That way I can study the binary data and try and extract values from it.

I may be over simplifying things, let me know if the doc and this post didnt clear things up.

I am curious as I would like to be a beta tester. I currently have 2 warm dimmer bulb and 4 RGB bulbs and finally 1 LED strips. Would that be ok for me to try your integration?

Yes, the only device that you have that may not work initially is the LED strip, but it also may work if the commands are the same as the LED bulbs.

I just released v0.0.1 and would like to see if it works well for others.

1 Like

I added support for led light strips recently. It seems they had a few differences in their binary protocol compared to other cync lights.

I can confirm that the led light strips work reliably now.

I don’t know if I should laugh or cry. On the one hand it’s great that a local redirect is possible. On the other hand, this sort of vulnerability (on what is probably many thousands of cync devices out there) is precisely the reason we cannot trust non-local cloud dependencies dangling out there. Mind blowing.