Important
DNS redirection REQUIRED - this integration controls your devices by impersonating the cloud server they phone home to. Without redirecting those hostnames at your router, nothing connects.
Local control of Cync / C by GE smart lighting and switches, as a native Home Assistant integration. No cloud round-trip at runtime, no MQTT broker, no Docker.
Home Assistant runs a small TCP/TLS server that your Cync devices connect to instead of Cync's real cloud servers, via a DNS override you configure at your router. From then on every command and state update stays on your LAN.
Note
This top-level README is the overview. For full setup, every
configuration option, all supported entity types, services, example
automations and troubleshooting, see
custom_components/cync_lan/README.md.
There are also two other ways to run this project - see
Repository layout.
Warning
DO NOT contact GE / Savant for troubleshooting while using this project. Open an issue here - this is a fork, so please don't send its bugs upstream to @baudneo.
Warning
It is HIGHLY recommended that you do NOT perform firmware upgrades on Cync devices after running cync-lan. It would be trivial - change one parameter in a constructor - for Savant to disable this method of local control. This caution is inherited from upstream and still stands.
This is a work in progress and may not work for every device. See
docs/known_devices.md. Most battery-powered
devices remain unsupported because cync-lan can only listen to them, not
write to them; the standalone motion sensor and "Wireless Switch"
accessories are the exception, both exposed as occupancy binary sensors.
- DNS redirection of the
xlink.cn-family hostnames to your Home Assistant host, at your router or a local DNS server (Pi-hole, AdGuard Home, dnsmasq). Devices already talking to the real cloud need a power cycle to pick up the change. - At least one mains-powered Wi-Fi ("Direct Connect") Cync device to act as the TCP↔Bluetooth bridge for the rest of the mesh. Battery devices cannot do this.
- A free port on the Home Assistant host for the listener -
23779by default, configurable during setup. - Your Cync account email and password, plus access to that inbox (Cync emails a one-time code during setup).
- Home Assistant 2024.11.0+. That floor is load-bearing, not cautious:
it is where
ConfigFlow._get_reauth_entry()andasync_update_reload_and_abort'sdata_updatesargument landed, both required for reauthentication here.
Note
You still need the official Cync app to add new devices to your account as
you acquire them. This integration controls devices that are already on
the account - it does not replace onboarding. (The core library's
cync-lan-ble-provision CLI is an experimental exception.)
Install through HACS as a custom repository, or copy the component in by hand. Full instructions are in the integration's own README.
Once installed and Home Assistant is restarted, go to Settings → Devices &
Services → Add Integration → "Cync LAN", and enter your account details.
Home Assistant may also surface a discovered "Cync LAN" card on its own -
Cync devices take DHCP leases with a recognisable GE_* hostname pattern.
Native Home Assistant entities - no MQTT anywhere in the path:
- Light - on/off, brightness, color temperature, RGB and effects, according to what each model actually supports.
- Light (group) - one aggregate entity per Cync group/room, opt-in.
- Switch - binary switches, outlets and plugs.
- Fan - fan-controller switches, with percentage and preset speeds.
- Binary sensor - standalone motion/occupancy accessories, plus a secondary motion entity on models with a built-in sensor.
- Select / Number / Switch (config) - indicator-LED mode, color, brightness and blink-on-disconnect. Confirmed on real hardware.
- Sensor (diagnostic) - per-device connection and identity diagnostics, plus native Cync motion-schedule slots where configured.
- Scene / Button - Cync scenes and schedules as real entities, and buttons for identify, hub queries and cleanup actions.
A number of the more speculative capabilities are gated behind an experimental features toggle and are off by default. That is a real warning rather than a formality: most mesh opcodes here were derived from the decompiled Android app and have never been confirmed against hardware. See Known limitations.
Three separately-versioned, separately-released artifacts, each in its own repository. You are in the Home Assistant integration.
| Artifact | Repository | What it is | Distributed via |
|---|---|---|---|
cync-lan |
cync-lan-lib |
Core protocol library - sessions, packet codec, cloud auth, BLE | PyPI |
cync-lan-mqtt |
cync-lan-mqtt |
Standalone Docker/MQTT daemon + HTTP device exporter | PyPI + ghcr.io image |
cync_lan custom_component |
cync-lan (here) |
This: native Home Assistant integration | GitHub Release / HACS |
They used to share this repository, one branch each. That broke HACS, which
resolves an integration's version from the newest release in the list
rather than from the Latest flag, and so kept offering cync-lan-v* tags -
which carry no custom_components/ directory - as this integration's
update. RELEASING.md has the full explanation.
All three need the same DNS redirection; they differ in everything else.
| This integration (HACS) | Home Assistant App (hass-addons) | Docker Compose (cync-lan-mqtt) |
|
|---|---|---|---|
| Requires Docker | No | Yes, Supervisor manages it | Yes, you run it |
| Requires an MQTT broker | No | Yes | Yes |
| Configuration | HA config flow - no YAML | Supervisor Options UI | Environment variables |
| Devices appear as | Native HA entities | MQTT-discovered entities | MQTT-discovered entities |
| Token encryption key | Automatic | You set secret_key |
You set CYNC_SECRET_KEY |
This integration is the newest and least Docker-dependent option, and it installs through HACS like any other custom repository. The App is the least fiddly version of the well-established Docker/MQTT path. Plain Docker Compose gives the most direct control.
The three are versioned independently. RELEASING.md covers
the details, including the rule that decides releases from prereleases: a
plain X.Y.Z version cuts a full release, X.Y.ZbN cuts a prerelease,
and anything else fails the build.
docs/ is mirrored byte-for-byte across all three repositories (canonical
copy in cync-lan-lib), so any
docs/ link resolves in any of them. CI enforces it.
This repository is a fork of
baudneo/cync-lan, which did the
substantial async rewrite this continues from. Upstream stopped receiving
updates at 0.0.6b16; everything from 0.0.6b17 onward exists only here,
including:
- This Home Assistant integration, which does not exist upstream at all.
Not an add-on or an MQTT bridge - a real
custom_componentwith its own config flow, entities and services. - Real motion-sensor support: the standalone accessory and the
battery-powered "Wireless Switch" both appear as
occupancybinary sensors, and models with a built-in sensor get a second entity for it. - 54 previously-unrecognised device types, plus corrected classification (light vs switch, dimmable vs not) for several wired switch types that were simply wrong.
- Real data-loss and crash fixes found via a new unsupported-device debug capture: silently dropped status updates on certain packet variants, a TCP framing bug that discarded an entire read on one misaligned byte, and a crash that could permanently kill MQTT.
- The protocol code split into a reusable
cync-lanlibrary, so all consumers share one implementation instead of vendoring copies that drift. - Substantially expanded protocol documentation in
docs/mesh_opcodes.md, reverse-engineered from the decompiled Android app, with explicit confidence markers. - Test suites and CI where there were none, across all three branches.
See custom_components/cync_lan/CHANGELOG.md
for this integration's history and CHANGELOG.md for the
project's.
Setup guides live in the wiki - DNS redirection (the one hard requirement), installation, Troubleshooting, Tips, debugging setup and firmware versions. They are there rather than here so you can fix them yourself - router UIs change and nobody owns every model.
Protocol research stays in the repository, because it is cited from source comments, mirrored across all three branches by CI, and its claims carry confidence markers worth reviewing in a pull request:
docs/known_devices.md- device types and support status.docs/packet_structure.md- the wire format.docs/mesh_opcodes.md- mesh command opcodes. Read the confidence markers before trusting one.docs/hardware_verification.md- what still needs testing on real devices, in the order worth doing it.docs/cync_automations.md- native Cync schedules and automations.docs/ble_provisioning_protocol.md- BLE provisioning of factory-default devices.
This project is the current link in a chain of earlier work, and none of it would exist without the people below.
- iburistu - cync-lan, the original. The first public demonstration that Cync devices could be controlled locally by impersonating the cloud server. MIT, © 2022 Zachary Linkletter.
- juanboro - cync2mqtt, the original MQTT bridge and cloud-export approach. Apache-2.0. Little of that code survives verbatim at this point, but the attribution stays. Long live OSS.
- baudneo - baudneo/cync-lan, the substantial async rewrite this fork continues from, and the origin of most of the protocol knowledge here.
- @CodeNeedsCoffee - initial work on the Home Assistant App.
Full license texts for all of the above are reproduced in LICENSE-3RD-PARTY.
MIT, same as the original - see LICENSE.