forked from FalconChristmas/fpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ControlProtocol.txt
197 lines (173 loc) · 6.63 KB
/
ControlProtocol.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
FPPD Control Protocol Information
Control Port: UDP 32320
Multicast address: 239.70.80.80 (239.F.P.P)
Packet Types:
0x00 - Legacy Command
0x01 - MultiSync
0x02 - Event
0x03 - Send Blanking Data
0x04 - Ping
0x05 - Plugin
0x06 - FPP Command
Base Packet Format: (All packets start with these 7 bytes plus optional ExtraData
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType
buf[5-6] = ExtraDataLen (may be 0x00 such as for the Send Blanking Data packet)
buf[7+] = ExtraData
=============================================================================
Command Packet Format:
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x00 for Command packet)
buf[5-6] = ExtraDataLen
buf[7+] = Null Terminated string containing command to run. NULL byte included in ExtraDataLen
=============================================================================
MultiSync Packet Format:
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x01 for Sync packet)
buf[5-6] = 10 + filename length + 1 (for null)
buf[7] = Sync Action:
- 0x00 Start
- 0x01 Stop
- 0x02 Sync
- 0x03 Open
buf[8] = Sync Type:
- 0x00 FSEQ
- 0x01 Media
buf[9-12] = frame number
buf[13-16] = seconds elapsed as float
buf[17+] = Null Terminated string containing the filename
=============================================================================
Event Packet Format:
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x02 for Event packet)
buf[5-6] = 6
buf[7-12] = Null Terminated string containing the event name ("MA:MI")
=============================================================================
Send Blanking Data Packet Format:
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x03 for Send Blanking Data)
buf[5-6] = ExtraDataLen (0x00 for Send Blanking Data)
=============================================================================
Ping Packet: (Implemented in FPP v?.??, F16v3/F48 firmware v?.??)
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x04 for Ping)
buf[5-6] = ExtraDataLen (98 for version 0x01 ping packet, 294 for v3 ping)
buf[7] = Ping packet version number (0x01 for initial version with 98 bytes of extra data as bytes 7-104, 0x03 for current)
buf[8] = SubType
- 0x00 - Ping (unsolicited ping or as a response to a discover)
- 0x01 - Discover (signals all remotes to ping back with a 'ping' subtype packet)
NOTE: Discover includes same info as Ping so Remotes know what the master is running)
buf[9] = App/Hardware Type
- 0x00 = Unknown System
- 0x01-0x7F = FPPD
- 0x01 - FPP (undetermined hardware)
- 0x02 - Pi A
- 0x03 - Pi B
- 0x04 - Pi A+
- 0x05 - Pi B+
- 0x06 - Pi 2 B
- 0x07 - Pi 2 BNew
- 0x08 - Pi 3 B
- 0x09 - Pi 3 B+
- 0x10 - Pi Zero
- 0x11 - Pi ZeroW
- 0x12 - Pi 3 A+
- 0x13 - Pi 4
- 0x40 - BeagleBone Black Rev B
- 0x41 - BeagleBone Black Rev C
- 0x42 - BeagleBone Black Wireless
- 0x43 - BeagleBone Green
- 0x44 - BeagleBone Green Wireless
- 0x45 - PocketBeagle
- 0x46 - SanCloud Beaglebone Enhanced
- 0x60 - Armbian
- 0x70 - MacOS
- 0x80-0x8F = Falcon Hardware
- 0x80 - Unknown Falcon Controller
- 0x81 - F16v2-B
- 0x82 - F4v2-64M
- 0x83 - F16v2 (Red)
- 0x84 - F4v2 (Red)
- 0x85 - F16v3
- 0x86 - F4v3
- 0x87 - F48
- 0x88 - F16v4
- 0x89 - F48v4
- 0x8A - F16v5
- 0x8B - F32v5
- 0x8C - F48v5
- 0xA0-0xAF = Experience Lights
- 0xA0 - Genius Pixel 16
- 0xA1 - Genius Pixel 8
- 0xA2 - Genius Long Range
- 0xC0-0xFF = Other systems
- 0xC1 - xSchedule
- 0xC2 - ESPixelStick - ESP8266
- 0xC3 - ESPixelStick - ESP32
- 0xFB - WLED
- 0xFC - DIYLEDExpress
- 0xFD - HinksPix
- 0xFE - AlphaPix
- 0xFF - SanDevices
buf[10-11] = Major version (MSB first, 0x00 0x01 for FPP v1.10, 0x07 0xE2 for xSchedule 2018.4)
buf[12-13] = Minor version (MSB first, 0x00 0x0a for FPP v1.10, 0x00 0x04 for xSchedule 2018.4)
(NOTE: Only Major/Minor allowed here, full version listed in 'string' version below)
buf[14] = (FPP) Operating Mode Flags
- 0x00 - Unknown
- 0x01 - Bridge (also Falcon Controller operating in E1.31/Artnet mode instead of master/remote)
- 0x02 - Player
- 0x04 - Sending Multisync
- 0x08 - Remote
buf[15-18] = IP address (MSB-LSB) (192, 168, 1, 21) (IP address on the network ping was received from)
For a discovery Ping packet sent from a Non-FPP instance that should not be recorded by every
FPP instance, set the IP address to 0.0.0.0.
buf[19-83] = Hostname (NULL terminated, up to 64 byte hostname plus one byte for NULL)
buf[84-124] = Version (NULL terminated, up to 40 bytes plus NULL: "1.10", "1.x-master-487-gfa3896", "2018.4")
Ping type 2 and 3 fields:
buf[125-165] = Hardware Type String (NULL terminated, up to 40 bytes plus NULL: "Raspberry Pi 2 Model B Rev 1.1", "Raspberry Pi 2 Model B Rev 1.2")
Ping type 2:
buf[166-206] = Comma separated list of channel ranges (zero based) ("0-455,512-1024") that this FPP instances is outputing (40 bytes + NULL)
Ping type 3:
buf[166-286] = Comma separated list of channel ranges (zero based) ("0-455,512-1024") that this FPP instances is outputing (120 bytes + NULL)
<<<< End of Ping version 0x02 information
=============================================================================
Plugin
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x05 for Plugin packet)
buf[5-6] = ExtraDataLen
buf[7+] = Null Terminated string containing plugin name
buf[x+] = Data sent by plugin
=============================================================================
FPP Command
buf[0] = 'F'
buf[1] = 'P'
buf[2] = 'P'
buf[3] = 'D'
buf[4] = PacketType (0x06 for FPP Command packet)
buf[5-6] = ExtraDataLen
buf[7] = NumberOfArgs
buf[8+] = Null Terminated string containing target host (likely empty string)
buf[x+] = Null Terminated string containing FPP Command Name
buf[x+] = Null Terminated string containing arg1
buf[x+] = Null Terminated string containing arg2.....