<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=SimTX_API%2FPackets%2FClientHello</id>
	<title>SimTX API/Packets/ClientHello - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=SimTX_API%2FPackets%2FClientHello"/>
	<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;action=history"/>
	<updated>2026-11-04T21:31:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;diff=2406&amp;oldid=prev</id>
		<title>Clanker: Remove development history and server internals</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;diff=2406&amp;oldid=prev"/>
		<updated>2026-10-24T17:16:20Z</updated>

		<summary type="html">&lt;p&gt;Remove development history and server internals&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:16, 24 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l44&quot;&gt;Line 44:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 44:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 6 || &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;repeated string&amp;lt;/code&amp;gt; || Optional behaviours the client understands, from the [[SimTX API/Compatibility and versioning#Feature registry|feature registry]]. Servers ignore names they do not know.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 6 || &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;repeated string&amp;lt;/code&amp;gt; || Optional behaviours the client understands, from the [[SimTX API/Compatibility and versioning#Feature registry|feature registry]]. Servers ignore names they do not know.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 7 || &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int32&amp;lt;/code&amp;gt; || Highest [[SimTX API/Compatibility and versioning#Protocol revisions|protocol revision]] the client implements. Send 1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, the released v25&lt;/del&gt;. 0 (unset): the server leaves out the revision&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-gated behaviours&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 7 || &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int32&amp;lt;/code&amp;gt; || Highest [[SimTX API/Compatibility and versioning#Protocol revisions|protocol revision]] the client implements. Send 1. 0 (unset): the server leaves out the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;behaviours that need &lt;/ins&gt;revision &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Rules ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Rules ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Send it within 5 seconds of connecting &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;through the public gateway (15 seconds on a direct server connection)&lt;/del&gt;, together with the preface.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Send it within 5 seconds of connecting, together with the preface.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The hello frame may be at most 64 KiB. Before the hello the server skips at most 16 unknown or empty frames, and gives up 20 seconds after connecting.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The hello frame may be at most 64 KiB. Before the hello the server skips at most 16 unknown or empty frames, and gives up 20 seconds after connecting.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The role cannot change later on the same connection.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The role cannot change later on the same connection.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; carries the ticket when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt;. An anonymous hello must leave it empty; one that carries a credential is refused&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, so a forgotten &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; never silently drops a ticket&lt;/del&gt;. A ticket is valid for one connection, 60 seconds, one server and one role. See [[SimTX API/Game tickets|Game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; carries the ticket when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt;. An anonymous hello must leave it empty; one that carries a credential is refused. A ticket is valid for one connection, 60 seconds, one server and one role. See [[SimTX API/Game tickets|Game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Send &amp;lt;code&amp;gt;features: &amp;quot;stations.v1&amp;quot;&amp;lt;/code&amp;gt; if the client handles station-bound sessions and [[SimTX API/Data types#BoundStation|BoundStation]], and &amp;lt;code&amp;gt;protocol_revision: 1&amp;lt;/code&amp;gt; if it handles &amp;lt;code&amp;gt;SessionStatus UPDATED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; and station snapshots. See [[SimTX API/Compatibility and versioning|Compatibility and versioning]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Send &amp;lt;code&amp;gt;features: &amp;quot;stations.v1&amp;quot;&amp;lt;/code&amp;gt; if the client handles station-bound sessions and [[SimTX API/Data types#BoundStation|BoundStation]], and &amp;lt;code&amp;gt;protocol_revision: 1&amp;lt;/code&amp;gt; if it handles &amp;lt;code&amp;gt;SessionStatus UPDATED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; and station snapshots. See [[SimTX API/Compatibility and versioning|Compatibility and versioning]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l72&quot;&gt;Line 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Examples ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Examples ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Complete frames, including the varint length prefix&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, from the protocol&#039;s golden test vectors (&amp;lt;code&amp;gt;protocol/simtx/v25/testdata/frames.json&amp;lt;/code&amp;gt;)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Complete frames, including the varint length prefix.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;hello_anonymous_receiver&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (client to server, 37 bytes):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;hello_anonymous_receiver&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (client to server, 37 bytes):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;diff=2353&amp;oldid=prev</id>
		<title>Clanker: Reconcile with the frozen v25 schema</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;diff=2353&amp;oldid=prev"/>
		<updated>2026-10-24T16:52:26Z</updated>

		<summary type="html">&lt;p&gt;Reconcile with the frozen v25 schema&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:52, 24 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l36&quot;&gt;Line 36:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 2 || &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; || [[SimTX API/Data types#AuthKind|AuthKind]] || &amp;lt;code&amp;gt;AUTH_KIND_ANONYMOUS&amp;lt;/code&amp;gt; (0) or &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt; (1).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 2 || &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; || [[SimTX API/Data types#AuthKind|AuthKind]] || &amp;lt;code&amp;gt;AUTH_KIND_ANONYMOUS&amp;lt;/code&amp;gt; (0) or &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt; (1).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 3 || &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || The &amp;lt;code&amp;gt;stx_gt1_&amp;lt;/code&amp;gt; [[SimTX API/Game tickets|game ticket]] when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;GAME_TICKET&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/del&gt;empty when anonymous. At most 512 characters. Never an access or personal credential.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 3 || &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || The &amp;lt;code&amp;gt;stx_gt1_&amp;lt;/code&amp;gt; [[SimTX API/Game tickets|game ticket]] when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;GAME_TICKET&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Must be &lt;/ins&gt;empty when anonymous&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: an anonymous hello with a credential is refused&lt;/ins&gt;. At most 512 characters. Never an access or personal credential.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 4 || &amp;lt;code&amp;gt;client_name&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || Name of the client software, for example &amp;lt;code&amp;gt;Example SDR Client&amp;lt;/code&amp;gt;. Shown to operators.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 4 || &amp;lt;code&amp;gt;client_name&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || Name of the client software, for example &amp;lt;code&amp;gt;Example SDR Client&amp;lt;/code&amp;gt;. Shown to operators.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l44&quot;&gt;Line 44:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 44:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 6 || &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;repeated string&amp;lt;/code&amp;gt; || Optional behaviours the client understands, from the [[SimTX API/Compatibility and versioning#Feature registry|feature registry]]. Servers ignore names they do not know.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 6 || &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;repeated string&amp;lt;/code&amp;gt; || Optional behaviours the client understands, from the [[SimTX API/Compatibility and versioning#Feature registry|feature registry]]. Servers ignore names they do not know.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 7 || &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int32&amp;lt;/code&amp;gt; || Highest [[SimTX API/Compatibility and versioning#Protocol revisions|protocol revision]] the client implements. 0 (unset) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/del&gt;the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;initial v25&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 7 || &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int32&amp;lt;/code&amp;gt; || Highest [[SimTX API/Compatibility and versioning#Protocol revisions|protocol revision]] the client implements&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Send 1, the released v25&lt;/ins&gt;. 0 (unset)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: the server leaves out &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;revision-gated behaviours&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Line 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The hello frame may be at most 64 KiB. Before the hello the server skips at most 16 unknown or empty frames, and gives up 20 seconds after connecting.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The hello frame may be at most 64 KiB. Before the hello the server skips at most 16 unknown or empty frames, and gives up 20 seconds after connecting.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The role cannot change later on the same connection.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The role cannot change later on the same connection.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is only read &lt;/del&gt;when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt;. A ticket is valid for one connection, 60 seconds, one server and one role. See [[SimTX API/Game tickets|Game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;carries the ticket &lt;/ins&gt;when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. An anonymous hello must leave it empty; one that carries a credential is refused, so a forgotten &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; never silently drops a ticket&lt;/ins&gt;. A ticket is valid for one connection, 60 seconds, one server and one role. See [[SimTX API/Game tickets|Game tickets]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Send &amp;lt;code&amp;gt;features: &amp;quot;stations.v1&amp;quot;&amp;lt;/code&amp;gt; if the client handles station-bound sessions and [[SimTX API/Data types#BoundStation|BoundStation]], and &amp;lt;code&amp;gt;protocol_revision: 1&amp;lt;/code&amp;gt; if it handles &amp;lt;code&amp;gt;SessionStatus UPDATED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; and station snapshots. See [[SimTX API/Compatibility and versioning|Compatibility and versioning]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Send &amp;lt;code&amp;gt;features: &amp;quot;stations.v1&amp;quot;&amp;lt;/code&amp;gt; if the client handles station-bound sessions and [[SimTX API/Data types#BoundStation|BoundStation]], and &amp;lt;code&amp;gt;protocol_revision: 1&amp;lt;/code&amp;gt; if it handles &amp;lt;code&amp;gt;SessionStatus UPDATED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; and station snapshots. See [[SimTX API/Compatibility and versioning|Compatibility and versioning]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;diff=2292&amp;oldid=prev</id>
		<title>Clanker: Protocol v25 reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/ClientHello&amp;diff=2292&amp;oldid=prev"/>
		<updated>2026-10-24T16:27:39Z</updated>

		<summary type="html">&lt;p&gt;Protocol v25 reference&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{SimTX API navigation}}&lt;br /&gt;
{{SimTX packet&lt;br /&gt;
| name = ClientHello&lt;br /&gt;
| frame = ClientFrame&lt;br /&gt;
| field = 1&lt;br /&gt;
| member = hello&lt;br /&gt;
| direction = c2s&lt;br /&gt;
| session = [[SimTX API/Connection and handshake|All roles]]&lt;br /&gt;
| roles = All roles. Always the first frame.&lt;br /&gt;
| permission = Depends on the role&lt;br /&gt;
| reply = [[SimTX API/Packets/ServerHello|ServerHello]]&lt;br /&gt;
| group = connection&lt;br /&gt;
| file = frames.proto&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ClientHello&amp;#039;&amp;#039;&amp;#039; opens every game connection. It names the role of the session, carries the game ticket of an authenticated connection, identifies the client software, and states which optional features and protocol revision the client implements. It is the first frame the client sends, immediately after the 8-byte [[SimTX API/Framing#Preface|preface]].&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;protobuf&amp;quot;&amp;gt;&lt;br /&gt;
message ClientHello {&lt;br /&gt;
  Role role = 1;&lt;br /&gt;
  AuthKind auth = 2;&lt;br /&gt;
  string credential = 3;        // stx_gt1_… game ticket; empty when anonymous&lt;br /&gt;
  string client_name = 4;       // e.g. &amp;quot;SimTX Transmitter&amp;quot;&lt;br /&gt;
  string client_version = 5;&lt;br /&gt;
  repeated string features = 6;  // client feature registry (see the top of this file)&lt;br /&gt;
  int32 protocol_revision = 7;    // highest protocol revision this client implements&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fields ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! # !! Field !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt; || [[SimTX API/Data types#Role|Role]] || Session role. Required; &amp;lt;code&amp;gt;ROLE_UNSPECIFIED&amp;lt;/code&amp;gt; or an unknown value is refused.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; || [[SimTX API/Data types#AuthKind|AuthKind]] || &amp;lt;code&amp;gt;AUTH_KIND_ANONYMOUS&amp;lt;/code&amp;gt; (0) or &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt; (1).&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || The &amp;lt;code&amp;gt;stx_gt1_&amp;lt;/code&amp;gt; [[SimTX API/Game tickets|game ticket]] when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;GAME_TICKET&amp;lt;/code&amp;gt;; empty when anonymous. At most 512 characters. Never an access or personal credential.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;lt;code&amp;gt;client_name&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || Name of the client software, for example &amp;lt;code&amp;gt;Example SDR Client&amp;lt;/code&amp;gt;. Shown to operators.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;lt;code&amp;gt;client_version&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || Version of the client software.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || &amp;lt;code&amp;gt;features&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;repeated string&amp;lt;/code&amp;gt; || Optional behaviours the client understands, from the [[SimTX API/Compatibility and versioning#Feature registry|feature registry]]. Servers ignore names they do not know.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int32&amp;lt;/code&amp;gt; || Highest [[SimTX API/Compatibility and versioning#Protocol revisions|protocol revision]] the client implements. 0 (unset) is the initial v25.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
* Send it within 5 seconds of connecting through the public gateway (15 seconds on a direct server connection), together with the preface.&lt;br /&gt;
* The hello frame may be at most 64 KiB. Before the hello the server skips at most 16 unknown or empty frames, and gives up 20 seconds after connecting.&lt;br /&gt;
* The role cannot change later on the same connection.&lt;br /&gt;
* &amp;lt;code&amp;gt;credential&amp;lt;/code&amp;gt; is only read when &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;AUTH_KIND_GAME_TICKET&amp;lt;/code&amp;gt;. A ticket is valid for one connection, 60 seconds, one server and one role. See [[SimTX API/Game tickets|Game tickets]].&lt;br /&gt;
* Send &amp;lt;code&amp;gt;features: &amp;quot;stations.v1&amp;quot;&amp;lt;/code&amp;gt; if the client handles station-bound sessions and [[SimTX API/Data types#BoundStation|BoundStation]], and &amp;lt;code&amp;gt;protocol_revision: 1&amp;lt;/code&amp;gt; if it handles &amp;lt;code&amp;gt;SessionStatus UPDATED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; and station snapshots. See [[SimTX API/Compatibility and versioning|Compatibility and versioning]].&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &amp;lt;code&amp;gt;ROLE_UNSPECIFIED&amp;lt;/code&amp;gt; || Refused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;ROLE_RECEIVER&amp;lt;/code&amp;gt; || [[SimTX API/Receiver session|Receiver]]: an IQ stream. Anonymous for ad-hoc sites; a &amp;lt;code&amp;gt;receiver&amp;lt;/code&amp;gt; ticket for station-bound ones.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;ROLE_TX_AUDIO&amp;lt;/code&amp;gt; || [[SimTX API/Transmitter session|Transmitter]] whose samples the client streams. Ticket &amp;lt;code&amp;gt;tx-audio&amp;lt;/code&amp;gt;, permission &amp;lt;code&amp;gt;game.transmit&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;lt;code&amp;gt;ROLE_TX_GENERATED&amp;lt;/code&amp;gt; || Transmitter whose source the server generates. Ticket &amp;lt;code&amp;gt;tx-generated&amp;lt;/code&amp;gt;, permission &amp;lt;code&amp;gt;game.transmit&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;lt;code&amp;gt;ROLE_CONTROL&amp;lt;/code&amp;gt; || [[SimTX API/Control session|Control]]: station list, maps, health, catalog, ephemeris, passes, own-transmitter monitor. Anonymous, or ticket &amp;lt;code&amp;gt;control&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;lt;code&amp;gt;ROLE_MODERATION&amp;lt;/code&amp;gt; || [[SimTX API/Moderation session|Moderation]]. Ticket &amp;lt;code&amp;gt;moderation&amp;lt;/code&amp;gt;, permission &amp;lt;code&amp;gt;moderation.manage&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Complete frames, including the varint length prefix, from the protocol&amp;#039;s golden test vectors (&amp;lt;code&amp;gt;protocol/simtx/v25/testdata/frames.json&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;hello_anonymous_receiver&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (client to server, 37 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
24                                           frame length 36&lt;br /&gt;
0A 22                                        hello (ClientHello), 34 bytes&lt;br /&gt;
  08 01                                      role = 1 (ROLE_RECEIVER)&lt;br /&gt;
  22 0C 53 69 6D 54 58 20 47 6F 6C 64 65 6E  client_name = &amp;quot;SimTX Golden&amp;quot;&lt;br /&gt;
  2A 06 32 35 2E 30 2E 30                    client_version = &amp;quot;25.0.0&amp;quot;&lt;br /&gt;
  32 08 70 6F 69 6E 74 69 6E 67              features = &amp;quot;pointing&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;hello_ticket_tx_audio&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (client to server, 50 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
31                                 frame length 49&lt;br /&gt;
0A 2F                              hello (ClientHello), 47 bytes&lt;br /&gt;
  08 02                            role = 2 (ROLE_TX_AUDIO)&lt;br /&gt;
  10 01                            auth = 1 (AUTH_KIND_GAME_TICKET)&lt;br /&gt;
  1A 0E 73 74 78 5F 67 74 31 5F …  credential = &amp;quot;stx_gt1_golden&amp;quot;&lt;br /&gt;
  22 11 53 69 6D 54 58 20 54 72 …  client_name = &amp;quot;SimTX Transmitter&amp;quot;&lt;br /&gt;
  2A 06 32 35 2E 30 2E 30          client_version = &amp;quot;25.0.0&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;hello_revision_1_control&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (client to server, 29 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1C                                           frame length 28&lt;br /&gt;
0A 1A                                        hello (ClientHello), 26 bytes&lt;br /&gt;
  08 04                                      role = 4 (ROLE_CONTROL)&lt;br /&gt;
  22 0C 53 69 6D 54 58 20 47 6F 6C 64 65 6E  client_name = &amp;quot;SimTX Golden&amp;quot;&lt;br /&gt;
  2A 06 32 35 2E 31 2E 30                    client_version = &amp;quot;25.1.0&amp;quot;&lt;br /&gt;
  38 01                                      protocol_revision = 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SimTX API/Connection and handshake]]&lt;br /&gt;
* [[SimTX API/Game tickets]]&lt;br /&gt;
* [[SimTX API/Compatibility and versioning]]&lt;br /&gt;
&lt;br /&gt;
{{SimTX API navbox}}&lt;br /&gt;
[[Category:SimTX API]]&lt;/div&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
</feed>