Repository navigation
Cync TCP Packet Format
Kinachi249 edited this page Oct 20, 2025
·
2 revisions
When communicating with the Cync server, commands / requests are sent and received using raw bytes in TCP packets. These packets follow a general protocol in their formats that contain the necessary information to communicate information or perform actions on Cync devices.
Each packet sent in the protocol starts with a series of header bytes, to give information on the structure of the packet. The header is constructed as follows, and uses big endian:
| Byte Index Range | Description | Notes | Example |
|---|---|---|---|
| 0 | Header Init | This byte contains 3 sections of information. - The most significant 4 bits are the packet type, explained in the section below. - The next bit is an "isResponse" boolean. 1 indicates a response packet, 0 indicates a request packet. - The least significant 3 bits indicate the version. Outbound messages seem to use 3, but inbound messages sometimes use zero and sometimes use 3, but it doesn't seem to affect parsing. |
0xC3 (1100 0011) Message type 12 (0xC), is a request, version 3. |
| 1 - 4 | Packet length in bytes | The length of the data packet in bytes, not including these 5 header bytes | 0x00 00 02 3D Length of 573 bytes |
The packet type parsed from the first header byte indicates how to parse the remainder of the data packet. The following list contains the known packet types, however not all types have been fully reverse engineered yet. Each type has its own page with further instructions on parsing it.
| Packet Type ID | Description | Notes | Link to Packet Type Info |
|---|---|---|---|
| 1 | Login | Sent when initializing connection | TODO |
| 2 | Handshake | Handshake for a device connection. More info needed. | TODO |
| 4 | Sync | Sent to sync device state between client/server. Typically sent from server when a device's state changes. | TODO |
| 7 | Pipe | This is the main packet type used to send device commands, or other requests such as device queries. | TODO |
| 8 | Pipe Sync | Needs more research, not currently used in PyCync. | TODO |
| 10 | Probe | Used to probe specific devices, to see if they respond. | TODO |
| 13 | Ping | Basic ping packet. Used as a heartbeat by the client to maintain connection aliveness. | TODO |
| 14 | Disconnect | Used as a packet to signify the connection is being terminated. | TODO |