Skip to content

Cync TCP Packet Format

Kinachi249 edited this page Oct 20, 2025 · 2 revisions

Packet Format

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.

Packet Header

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

Packet Types

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

Clone this wiki locally