<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>MediaWiki For Hamradio Analog/Digital and Debian v13 software/Raspberry PI v3/4/5 howto  - Recent changes [en]</title>
		<link>https://wiki.sa7aux.se/wiki/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.44.3</generator>
		<lastBuildDate>Fri, 23 Oct 2026 20:51:40 GMT</lastBuildDate>
		<item>
			<title>Hamradio/svxlink node/sv</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/sv&amp;diff=1073&amp;oldid=857</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/sv&amp;diff=1073&amp;oldid=857</guid>
			<description>&lt;p&gt;Updating to match new version of source page&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:15, 18 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-l183&quot;&gt;Line 183:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 183:&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;lt;/div&amp;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;&amp;lt;/div&amp;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; 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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div lang=&quot;en&quot; dir=&quot;ltr&quot; class=&quot;mw-content-ltr&quot;&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;&amp;lt;div style=&quot;border-left:4px solid #5fd38a; background:#12211a; padding:10px 16px; margin:14px 0; border-radius:6px;&quot;&amp;gt;📥 &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vill du ha hela&lt;/ins&gt;?&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ladda ner en komplett, sanerad uppsättning exempel-configar &lt;/ins&gt;— &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;node_info.json&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gpio.conf&amp;lt;/code&amp;gt; och modulfilerna&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;alla hemligheter borttagna&lt;/ins&gt;: [https://sa7aux.se/svxlink&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-config-example&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zip svxlink-config-&lt;/ins&gt;example.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zip&lt;/ins&gt;]. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Packa upp i &lt;/ins&gt;&amp;lt;code&amp;gt;/etc/svxlink/&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;och byt anropssignal&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reflektor-&lt;/ins&gt;host&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;&amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;och position till dina egna&lt;/ins&gt;.&amp;lt;/div&amp;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;&amp;lt;div style=&quot;border-left:4px solid #5fd38a; background:#12211a; padding:10px 16px; margin:14px 0; border-radius:6px;&quot;&amp;gt;📥 &#039;&#039;&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Want the whole file&lt;/del&gt;?&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Download the complete sanitised example config &lt;/del&gt;— &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;all sections&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;secrets blanked&lt;/del&gt;: [https://sa7aux.se/svxlink.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;conf.&lt;/del&gt;example &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;svxlink.conf&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;example&lt;/del&gt;]. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Save it as &lt;/del&gt;&amp;lt;code&amp;gt;/etc/svxlink/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;svxlink.conf&lt;/del&gt;&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and change the callsign&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reflector &lt;/del&gt;host &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;&amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to your own&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;Andra sektioner att titta på:&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;Andra sektioner att titta på:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 18 Oct 2026 16:15:42 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node/sv</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/en&amp;diff=865&amp;oldid=859</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/en&amp;diff=865&amp;oldid=859</guid>
			<description>&lt;p&gt;Updating to match new version of source page&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:08, 18 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-l155&quot;&gt;Line 155:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 155:&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;EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;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;EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;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; 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;div style=&quot;border-left:4px solid #5fd38a; background:#12211a; padding:10px 16px; margin:14px 0; border-radius:6px;&quot;&amp;gt;📥 &#039;&#039;&#039;Want the whole &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;file&lt;/del&gt;?&#039;&#039;&#039; Download &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/del&gt;complete sanitised example &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;config &lt;/del&gt;— all &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sections, &lt;/del&gt;secrets blanked: [https://sa7aux.se/svxlink.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;conf.&lt;/del&gt;example &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;svxlink&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;conf.example&lt;/del&gt;]. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Save it as &lt;/del&gt;&amp;lt;code&amp;gt;/etc/svxlink/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;svxlink.conf&lt;/del&gt;&amp;lt;/code&amp;gt; and change the callsign, reflector host &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;&amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; to your own.&amp;lt;/div&amp;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;&amp;lt;div style=&quot;border-left:4px solid #5fd38a; background:#12211a; padding:10px 16px; margin:14px 0; border-radius:6px;&quot;&amp;gt;📥 &#039;&#039;&#039;Want the whole &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;thing&lt;/ins&gt;?&#039;&#039;&#039; Download &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/ins&gt;complete&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;sanitised &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;set of &lt;/ins&gt;example &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;configs &lt;/ins&gt;— &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;node_info.json&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gpio.conf&amp;lt;/code&amp;gt; and the module files, &lt;/ins&gt;all secrets blanked: [https://sa7aux.se/svxlink&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-config-example&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zip svxlink-config-&lt;/ins&gt;example.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zip&lt;/ins&gt;]. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Unzip into &lt;/ins&gt;&amp;lt;code&amp;gt;/etc/svxlink/&amp;lt;/code&amp;gt; and change the callsign, reflector host&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;&amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and position &lt;/ins&gt;to your own.&amp;lt;/div&amp;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;Other sections to glance at:&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;Other sections to glance at:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 18 Oct 2026 16:08:45 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node/en</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/svxlink_node&amp;amp;oldid=861&quot; title=&quot;Hamradio/svxlink node&quot;&gt;Hamradio/svxlink node&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 16:08:12 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/en&amp;diff=859&amp;oldid=744</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/en&amp;diff=859&amp;oldid=744</guid>
			<description>&lt;p&gt;Updating to match new version of source page&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:04, 18 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-l154&quot;&gt;Line 154:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 154:&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;NODE_INFO_FILE=/etc/svxlink/node_info.json&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;NODE_INFO_FILE=/etc/svxlink/node_info.json&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;EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;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;EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style=&quot;border-left:4px solid #5fd38a; background:#12211a; padding:10px 16px; margin:14px 0; border-radius:6px;&quot;&amp;gt;📥 &#039;&#039;&#039;Want the whole file?&#039;&#039;&#039; Download the complete sanitised example config — all sections, secrets blanked: [https://sa7aux.se/svxlink.conf.example svxlink.conf.example]. Save it as &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; and change the callsign, reflector host and &amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; to your own.&amp;lt;/div&amp;gt;&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;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;Other sections to glance at:&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;Other sections to glance at:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-744:rev-859:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 18 Oct 2026 16:04:53 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node/en</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node/sv</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/sv&amp;diff=857&amp;oldid=787</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/sv&amp;diff=857&amp;oldid=787</guid>
			<description>&lt;p&gt;Updating to match new version of source page&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:04, 18 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-l181&quot;&gt;Line 181:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 181:&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;NODE_INFO_FILE=/etc/svxlink/node_info.json&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;NODE_INFO_FILE=/etc/svxlink/node_info.json&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;EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;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;EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div lang=&quot;en&quot; dir=&quot;ltr&quot; class=&quot;mw-content-ltr&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style=&quot;border-left:4px solid #5fd38a; background:#12211a; padding:10px 16px; margin:14px 0; border-radius:6px;&quot;&amp;gt;📥 &#039;&#039;&#039;Want the whole file?&#039;&#039;&#039; Download the complete sanitised example config — all sections, secrets blanked: [https://sa7aux.se/svxlink.conf.example svxlink.conf.example]. Save it as &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; and change the callsign, reflector host and &amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; to your own.&amp;lt;/div&amp;gt;&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;&amp;lt;/div&amp;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;&amp;lt;/div&amp;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;/table&gt;</description>
			<pubDate>Sun, 18 Oct 2026 16:04:51 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node/sv</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/svxlink_node&amp;amp;oldid=855&quot; title=&quot;Hamradio/svxlink node&quot;&gt;Hamradio/svxlink node&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 16:04:44 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/svxlink_node&amp;amp;oldid=691&quot; title=&quot;Hamradio/svxlink node&quot;&gt;Hamradio/svxlink node&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 16:04:28 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/en&amp;diff=744&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxlink_node/en&amp;diff=744&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:Build a SvxLink node from scratch (Raspberry Pi)}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A complete, hand-held walkthrough: from a blank microSD card to a working &amp;#039;&amp;#039;&amp;#039;SvxLink&amp;#039;&amp;#039;&amp;#039; node on a Raspberry Pi — download the OS, flash it with Wi-Fi and SSH already set, find the Pi on your network, log in, build SvxLink, drop in a config, and add a web dashboard. No prior Linux experience needed. Copy-paste friendly.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;What you&amp;#039;ll end up with:&amp;#039;&amp;#039;&amp;#039; a Raspberry Pi running SvxLink, connected to a &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039;, with Swedish and English voice prompts, that you can see and control from a browser. Allow about an hour (most of it is the Pi compiling by itself).&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Svxlink_node_flow.png|center|frameless|920px|alt=Eight steps: download Raspberry Pi OS, flash with Pi Imager (hostname/SSH/Wi-Fi), boot, find IP, connect over SSH/PuTTY, install SvxLink, edit svxlink.conf, start it and add the dashboard.]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== What you need ==&lt;br /&gt;
&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;Raspberry Pi 3, 4 or 5&amp;#039;&amp;#039;&amp;#039; (a Pi Zero 2 W works but is slow to compile).&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;microSD card&amp;#039;&amp;#039;&amp;#039;, 16 GB or larger, and a card reader on your PC.&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;sound interface&amp;#039;&amp;#039;&amp;#039; for the radio side (USB sound card, a hat like the WM8960, or a DRA/repeater board) — not needed just to get the software running.&lt;br /&gt;
* Your &amp;#039;&amp;#039;&amp;#039;callsign&amp;#039;&amp;#039;&amp;#039; and a &amp;#039;&amp;#039;&amp;#039;reflector login&amp;#039;&amp;#039;&amp;#039; (host + AUTH_KEY) for the SVXReflector you want to join.&lt;br /&gt;
&lt;br /&gt;
== Part 1 — Download Raspberry Pi OS ==&lt;br /&gt;
&lt;br /&gt;
Get the &amp;#039;&amp;#039;&amp;#039;64-bit Lite&amp;#039;&amp;#039;&amp;#039; image of &amp;#039;&amp;#039;&amp;#039;Raspberry Pi OS 13 (Trixie)&amp;#039;&amp;#039;&amp;#039; — &amp;quot;Lite&amp;quot; has no desktop, which is what you want for a node.&lt;br /&gt;
&lt;br /&gt;
* Easiest: install &amp;#039;&amp;#039;&amp;#039;Raspberry Pi Imager&amp;#039;&amp;#039;&amp;#039; (it downloads the OS for you): https://www.raspberrypi.com/software/&lt;br /&gt;
* Imager runs on Windows, macOS and Linux.&lt;br /&gt;
&lt;br /&gt;
== Part 2 — Flash the SD card (with SSH + Wi-Fi pre-set) ==&lt;br /&gt;
&lt;br /&gt;
This is the step that saves you a keyboard and monitor. In &amp;#039;&amp;#039;&amp;#039;Raspberry Pi Imager&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Choose Device:&amp;#039;&amp;#039;&amp;#039; your Pi model.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Choose OS:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Raspberry Pi OS (other)&amp;#039;&amp;#039; → &amp;#039;&amp;#039;&amp;#039;Raspberry Pi OS Lite (64-bit)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Choose Storage:&amp;#039;&amp;#039;&amp;#039; your SD card.&lt;br /&gt;
# Click &amp;#039;&amp;#039;&amp;#039;Next&amp;#039;&amp;#039;&amp;#039; → &amp;#039;&amp;#039;&amp;#039;Edit Settings&amp;#039;&amp;#039;&amp;#039; (the gear / &amp;quot;would you like to apply OS customisation?&amp;quot;). Set:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! What to put&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Hostname&amp;#039;&amp;#039;&amp;#039; || e.g. &amp;lt;code&amp;gt;svxnode&amp;lt;/code&amp;gt; — you&amp;#039;ll reach the Pi as &amp;lt;code&amp;gt;svxnode.local&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Enable SSH&amp;#039;&amp;#039;&amp;#039; || Yes → &amp;quot;Use password authentication&amp;quot; (simplest).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Username / password&amp;#039;&amp;#039;&amp;#039; || pick your own, e.g. user &amp;lt;code&amp;gt;pi&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;Write it down.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Configure wireless LAN&amp;#039;&amp;#039;&amp;#039; || your Wi-Fi SSID + password, and your &amp;#039;&amp;#039;&amp;#039;Wi-Fi country&amp;#039;&amp;#039;&amp;#039; (important or Wi-Fi stays off).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Locale / timezone / keyboard&amp;#039;&amp;#039;&amp;#039; || your country.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Save, then &amp;#039;&amp;#039;&amp;#039;Write&amp;#039;&amp;#039;&amp;#039;. When it finishes, eject the card.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ If you skip the Wi-Fi/SSH customisation, the Pi boots with no way in. Either redo this step, or plug in an Ethernet cable (SSH is still enabled only if you ticked it).&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 3 — Boot the Pi ==&lt;br /&gt;
&lt;br /&gt;
Put the card in the Pi, connect the radio/sound hardware if you have it, and power it on. The first boot takes &amp;#039;&amp;#039;&amp;#039;a minute or two&amp;#039;&amp;#039;&amp;#039; (it expands the filesystem and joins Wi-Fi). Give it time before looking for it.&lt;br /&gt;
&lt;br /&gt;
== Part 4 — Find the Pi&amp;#039;s IP address ==&lt;br /&gt;
&lt;br /&gt;
You need the Pi&amp;#039;s IP (or its &amp;lt;code&amp;gt;.local&amp;lt;/code&amp;gt; name) to log in. Pick whichever works:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hostname (easiest):&amp;#039;&amp;#039;&amp;#039; just use &amp;lt;code&amp;gt;svxnode.local&amp;lt;/code&amp;gt; (the hostname you set + &amp;lt;code&amp;gt;.local&amp;lt;/code&amp;gt;). Works on most home networks.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Your router:&amp;#039;&amp;#039;&amp;#039; open your router&amp;#039;s admin page → the &amp;#039;&amp;#039;&amp;#039;DHCP client / connected devices&amp;#039;&amp;#039;&amp;#039; list → find &amp;lt;code&amp;gt;svxnode&amp;lt;/code&amp;gt; and note its IP (e.g. &amp;lt;code&amp;gt;192.168.1.42&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Scan the network&amp;#039;&amp;#039;&amp;#039; from your PC:&lt;br /&gt;
&amp;lt;pre&amp;gt;ping svxnode.local&lt;br /&gt;
# or scan the subnet (Linux/Mac):   nmap -sn 192.168.1.0/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 5 — Connect over SSH ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows:&amp;#039;&amp;#039;&amp;#039; download and run &amp;#039;&amp;#039;&amp;#039;PuTTY&amp;#039;&amp;#039;&amp;#039; — https://www.putty.org/ . In &amp;#039;&amp;#039;&amp;#039;Host Name&amp;#039;&amp;#039;&amp;#039; type &amp;lt;code&amp;gt;svxnode.local&amp;lt;/code&amp;gt; (or the IP), &amp;#039;&amp;#039;&amp;#039;Port&amp;#039;&amp;#039;&amp;#039; 22, &amp;#039;&amp;#039;&amp;#039;Open&amp;#039;&amp;#039;&amp;#039;. Accept the key warning the first time, then log in with the username/password you set.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;macOS / Linux:&amp;#039;&amp;#039;&amp;#039; just use a terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;ssh pi@svxnode.local&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you&amp;#039;re in, bring the system up to date:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt update &amp;amp;&amp;amp; sudo apt full-upgrade -y&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 6 — Install SvxLink ==&lt;br /&gt;
&lt;br /&gt;
SvxLink isn&amp;#039;t in the Pi&amp;#039;s default repos as a current build, so you compile it (the Pi does the work). This one script installs the build tools, fetches the source from GitHub, builds and installs it, and downloads the &amp;#039;&amp;#039;&amp;#039;Swedish (sv_SE)&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;English (en_US)&amp;#039;&amp;#039;&amp;#039; voice prompts. Paste it into the SSH session:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/bash&lt;br /&gt;
set -e&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p ./projects/svxlink&lt;br /&gt;
cd ./projects/svxlink&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt dist-upgrade -y&lt;br /&gt;
sudo apt autoremove -y&lt;br /&gt;
&lt;br /&gt;
sudo apt install -y \&lt;br /&gt;
  build-essential cmake git wget \&lt;br /&gt;
  libgpiod3 libgpiod-dev \&lt;br /&gt;
  alsa-utils \&lt;br /&gt;
  libsigc++-2.0-dev libgsm1-dev libpopt-dev \&lt;br /&gt;
  tcl8.6-dev \&lt;br /&gt;
  libgcrypt20-dev libspeex-dev libasound2-dev libopus-dev librtlsdr-dev \&lt;br /&gt;
  doxygen groff vorbis-tools curl \&lt;br /&gt;
  qtbase5-dev qttools5-dev-tools qttools5-dev \&lt;br /&gt;
  libjsoncpp-dev libcurl4-gnutls-dev libogg-dev \&lt;br /&gt;
  sox&lt;br /&gt;
&lt;br /&gt;
# system user for svxlink (ignored if it already exists)&lt;br /&gt;
if ! id -u svxlink &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
  sudo useradd -r -G audio,plugdev,dialout svxlink&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# fetch the source&lt;br /&gt;
if [ ! -d svxlink ]; then&lt;br /&gt;
  git clone https://github.com/sm0svx/svxlink.git&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mkdir -p svxlink/src/build&lt;br /&gt;
cd svxlink/src/build&lt;br /&gt;
cmake -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc \&lt;br /&gt;
      -DLOCAL_STATE_DIR=/var -DWITH_SYSTEMD=yes ..&lt;br /&gt;
make -j&amp;quot;$(nproc)&amp;quot;&lt;br /&gt;
make doc&lt;br /&gt;
sudo make install&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
# voice prompts: Swedish + English&lt;br /&gt;
cd ~/projects/svxlink&lt;br /&gt;
cp svxlink/src/svxlink/scripts/filter_sounds.sh ./&lt;br /&gt;
cp svxlink/src/svxlink/scripts/play_sound.sh   ./&lt;br /&gt;
[ -d svxlink-sounds-en_US-heather ] || git clone https://github.com/sm0svx/svxlink-sounds-en_US-heather.git&lt;br /&gt;
[ -d svxlink-sounds-sv_SE-elin ]    || git clone https://github.com/sm0svx/svxlink-sounds-sv_SE-elin.git&lt;br /&gt;
sudo ./filter_sounds.sh svxlink-sounds-en_US-heather en_US&lt;br /&gt;
sudo ./filter_sounds.sh svxlink-sounds-sv_SE-elin   sv_SE&lt;br /&gt;
cd /usr/share/svxlink/sounds&lt;br /&gt;
sudo tar xvjf ~/projects/svxlink/svxlink-sounds-en_US.tar.bz2&lt;br /&gt;
sudo tar xvjf ~/projects/svxlink/svxlink-sounds-sv_SE.tar.bz2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;lt;code&amp;gt;make -j&amp;quot;$(nproc)&amp;quot;&amp;lt;/code&amp;gt; builds on all CPU cores. On a Pi 3 the compile can take 20–40 minutes — that&amp;#039;s normal. Go get a coffee; it&amp;#039;s working.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 7 — Configure svxlink.conf ==&lt;br /&gt;
&lt;br /&gt;
The config lives in &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt;. Edit it:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudoedit /etc/svxlink/svxlink.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The parts you &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; set are the logic sections. The most important is the reflector connection — here is a working &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;[ReflectorLogic]&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (secrets replaced with &amp;lt;code&amp;gt;CHANGE_ME&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[ReflectorLogic]&lt;br /&gt;
TYPE=Reflector&lt;br /&gt;
ID=9&lt;br /&gt;
HOSTS=svx.sa7aux.se          ; your reflector&amp;#039;s hostname&lt;br /&gt;
CALLSIGN=&amp;quot;MYCALL&amp;quot;            ; your callsign&lt;br /&gt;
AUTH_KEY=&amp;quot;CHANGE_ME_long_random_secret&amp;quot;   ; the key your reflector expects&lt;br /&gt;
CERT_EMAIL=you@example.org   ; for the auto TLS certificate&lt;br /&gt;
DEFAULT_TG=0&lt;br /&gt;
MONITOR_TGS=9,240,24016,24020,24021   ; talkgroups you want to hear&lt;br /&gt;
UDP_HEARTBEAT_INTERVAL=5&lt;br /&gt;
NODE_INFO_FILE=/etc/svxlink/node_info.json&lt;br /&gt;
EVENT_HANDLER=/usr/share/svxlink/events.tcl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other sections to glance at:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Section !! What it&amp;#039;s for&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[GLOBAL]&amp;#039;&amp;#039;&amp;#039; || Which logics load (&amp;lt;code&amp;gt;LOGICS=SimplexLogic,ReflectorLogic&amp;lt;/code&amp;gt;), and the sound-prompt language — set &amp;lt;code&amp;gt;LANG=sv_SE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;LANG=en_US&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[SimplexLogic]&amp;#039;&amp;#039;&amp;#039; || Your node&amp;#039;s own callsign ID, DTMF commands, and which reflector logic it links to.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[Rx1] / [Tx1]&amp;#039;&amp;#039;&amp;#039; || The audio devices and PTT/COS for your radio interface (ALSA device, squelch, CTCSS).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[LocationInfo]&amp;#039;&amp;#039;&amp;#039; || Optional APRS beacon (position, frequency) — all commented out by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ &amp;#039;&amp;#039;&amp;#039;Never publish your real &amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt;, passwords or e-mail.&amp;#039;&amp;#039;&amp;#039; The example above is deliberately blanked. Put your own values in, keep the file readable only by root, and don&amp;#039;t paste the real file into forums or chats.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Part 8 — Start it and verify ==&lt;br /&gt;
&lt;br /&gt;
Enable and start the node, then watch the log:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo systemctl enable --now svxlink&lt;br /&gt;
sudo systemctl status svxlink&lt;br /&gt;
sudo journalctl -u svxlink -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the log you should see it connect to the reflector and announce in your chosen language. If someone talks on a monitored talkgroup, you&amp;#039;ll hear it (and see it in the log). &amp;lt;code&amp;gt;Ctrl-C&amp;lt;/code&amp;gt; stops following the log (the service keeps running).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Setting up a &amp;#039;&amp;#039;&amp;#039;reflector&amp;#039;&amp;#039;&amp;#039; instead of a node? The same build also installed &amp;lt;code&amp;gt;svxreflector&amp;lt;/code&amp;gt; — enable that service (&amp;lt;code&amp;gt;sudo systemctl enable --now svxreflector&amp;lt;/code&amp;gt;) and configure &amp;lt;code&amp;gt;/etc/svxlink/svxreflector.conf&amp;lt;/code&amp;gt;.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add the web dashboard ==&lt;br /&gt;
&lt;br /&gt;
Once the node runs, give yourself a browser page to see status and switch talkgroups — install the &amp;#039;&amp;#039;&amp;#039;[[Hamradio/svxspot_dashboard|SvxSpot Dashboard]]&amp;#039;&amp;#039;&amp;#039; on the same Pi. It reads this same &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt; and controls the node for you.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Can&amp;#039;t reach &amp;lt;code&amp;gt;svxnode.local&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; || Use the IP from your router instead. On some networks &amp;lt;code&amp;gt;.local&amp;lt;/code&amp;gt; (mDNS) is blocked.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SSH &amp;quot;connection refused&amp;quot;&amp;#039;&amp;#039;&amp;#039; || SSH wasn&amp;#039;t enabled in Imager, or the Pi isn&amp;#039;t booted yet — wait, or re-flash with SSH ticked.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;No Wi-Fi&amp;#039;&amp;#039;&amp;#039; || Wrong Wi-Fi country in Imager, or wrong SSID/password. Re-flash, or use Ethernet.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; fails&amp;#039;&amp;#039;&amp;#039; || Usually a missing build package — re-run the &amp;lt;code&amp;gt;apt install&amp;lt;/code&amp;gt; line from Part 6, then &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; again.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Won&amp;#039;t connect to the reflector&amp;#039;&amp;#039;&amp;#039; || Wrong &amp;lt;code&amp;gt;HOSTS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CALLSIGN&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;AUTH_KEY&amp;lt;/code&amp;gt; — check with the reflector operator. Watch &amp;lt;code&amp;gt;journalctl -u svxlink -f&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;No audio / no voice prompts&amp;#039;&amp;#039;&amp;#039; || Check &amp;lt;code&amp;gt;LANG&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;[GLOBAL]&amp;lt;/code&amp;gt;, and that the sound tarballs unpacked into &amp;lt;code&amp;gt;/usr/share/svxlink/sounds&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Hamradio/svxspot_dashboard|SvxSpot Dashboard]] — the browser control panel for this node.&lt;br /&gt;
* [[Hamradio/chan_svx|chan_svx]] / [[Hamradio/chan_svx_sat|chan_svx_sat]] — bridge an AllStarLink node to a SVXReflector instead.&lt;br /&gt;
* [[Hamradio]] — the rest of the digital-voice how-tos.&lt;br /&gt;
* Author: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. SvxLink © SM0SVX, GNU GPL.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:54:49 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node/en</comments>
		</item>
		<item>
			<title>Hamradio/svxlink node</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/svxlink_node</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/svxlink_node&amp;amp;oldid=691&quot; title=&quot;Hamradio/svxlink node&quot;&gt;Hamradio/svxlink node&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:54:43 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxlink_node</comments>
		</item>
		<item>
			<title>File:Svxlink node flow.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Svxlink_node_flow.png&amp;diff=689&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Svxlink_node_flow.png&amp;diff=689&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Svxlink_node_flow.png&quot; title=&quot;File:Svxlink node flow.png&quot;&gt;File:Svxlink node flow.png&lt;/a&gt; == Summary == SvxLink node setup flow&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
SvxLink node setup flow&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:52:49 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Svxlink_node_flow.png</comments>
		</item>
		<item>
			<title>User:Sa7aux/svxspot dashboard/sv</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard/sv</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard/sv</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/svxspot_dashboard/sv&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/svxspot dashboard/sv (page does not exist)&quot;&gt;User:Sa7aux/svxspot dashboard/sv&lt;/a&gt; moved to Hamradio / superseded&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:11:38 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/svxspot_dashboard/sv</comments>
		</item>
		<item>
			<title>User:Sa7aux/chan svx</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/chan_svx</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/chan_svx</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/chan_svx&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/chan svx (page does not exist)&quot;&gt;User:Sa7aux/chan svx&lt;/a&gt; moved to Hamradio / superseded&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:11:38 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/chan_svx</comments>
		</item>
		<item>
			<title>User:Sa7aux/chan svx sat</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/chan_svx_sat</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/chan_svx_sat</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/chan_svx_sat&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/chan svx sat (page does not exist)&quot;&gt;User:Sa7aux/chan svx sat&lt;/a&gt; moved to Hamradio / superseded&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:11:38 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/chan_svx_sat</comments>
		</item>
		<item>
			<title>User:Sa7aux/darthvader</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/darthvader</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/darthvader</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/darthvader&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/darthvader (page does not exist)&quot;&gt;User:Sa7aux/darthvader&lt;/a&gt; moved to Hamradio / superseded&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:11:38 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/darthvader</comments>
		</item>
		<item>
			<title>User:Sa7aux/svxspot dashboard</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/svxspot_dashboard&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/svxspot dashboard (page does not exist)&quot;&gt;User:Sa7aux/svxspot dashboard&lt;/a&gt; moved to Hamradio / superseded&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:11:38 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/svxspot_dashboard</comments>
		</item>
		<item>
			<title>User:Sa7aux/reflector dashboard</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/reflector_dashboard</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/reflector_dashboard</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/reflector_dashboard&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/reflector dashboard (page does not exist)&quot;&gt;User:Sa7aux/reflector dashboard&lt;/a&gt; moved to Hamradio / superseded&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:11:38 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/reflector_dashboard</comments>
		</item>
		<item>
			<title>Hamradio/svxspot dashboard/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxspot_dashboard/en&amp;diff=429&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxspot_dashboard/en&amp;diff=429&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:SvxSpot Dashboard — control your SvxLink node from a browser}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A beginner&amp;#039;s guide to &amp;#039;&amp;#039;&amp;#039;SvxSpot Dashboard&amp;#039;&amp;#039;&amp;#039;: a small web page you install on your SvxLink node (a Raspberry Pi hotspot or an FM repeater) that shows what the node is doing and lets you change talkgroup, edit the config, and more — from a phone or PC. One &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; sets up the whole web stack for you.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;In one sentence:&amp;#039;&amp;#039;&amp;#039; install one package on your node and you get a web page at &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;http://svxspot.local/&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; that shows live status / last-heard / current talkgroup and gives you one-click TG switching, a DTMF keypad, and editors for &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;, EchoLink, RF and audio — plus Wi-Fi setup and reboot/shutdown buttons.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Svxspot_dashboard_arch.png|center|frameless|920px|alt=Browser talks HTTP to nginx on the node, which runs php-fpm and the PHP dashboard; it reads svxlink.conf and the log, and writes TG/DTMF to the SvxLink control pipe. An optional MQTT agent lets an external portal switch TG too.]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Do I need this? == &lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You run a SvxLink node&amp;#039;&amp;#039;&amp;#039; — a &amp;quot;SvxSpot&amp;quot; hotspot or an FM repeater — and you want to &amp;#039;&amp;#039;&amp;#039;see and control it from a browser&amp;#039;&amp;#039;&amp;#039; instead of SSH and a text editor.&lt;br /&gt;
* It installs on the &amp;#039;&amp;#039;&amp;#039;same box as SvxLink&amp;#039;&amp;#039;&amp;#039; (a Raspberry Pi or any Debian machine).&lt;br /&gt;
* Optional extra: let an &amp;#039;&amp;#039;&amp;#039;external portal switch your talkgroup over MQTT&amp;#039;&amp;#039;&amp;#039; (handy for a club&amp;#039;s control panel). Off by default — a plain LAN dashboard needs none of it.&lt;br /&gt;
&lt;br /&gt;
== What you need first == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 The dashboard &amp;#039;&amp;#039;&amp;#039;controls&amp;#039;&amp;#039;&amp;#039; SvxLink — it doesn&amp;#039;t replace it. SvxLink must already be installed and running on the node.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A SvxLink node&amp;#039;&amp;#039;&amp;#039; running on Debian 12/13 or Raspberry Pi OS (bookworm/trixie), on a Pi 3/4/5, Pi Zero 2 W, or any Debian box.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SvxLink installed and running&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; (package &amp;lt;code&amp;gt;svxlink-server&amp;lt;/code&amp;gt;).&lt;br /&gt;
* For one-click &amp;#039;&amp;#039;&amp;#039;talkgroup / DTMF control&amp;#039;&amp;#039;&amp;#039; from the web, this line in your logic section of &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;DTMF_CTRL_PTY=/var/lib/svxlink/dtmf_svx&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;(Optional, MQTT only)&amp;#039;&amp;#039;&amp;#039; broker host, port (usually 8883) and a username/password — only if you want remote portal control.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;You do not&amp;#039;&amp;#039;&amp;#039; install nginx or PHP yourself — the package pulls them in and configures them for you.&lt;br /&gt;
&lt;br /&gt;
== Install == &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Easiest — the one-line installer&amp;#039;&amp;#039;&amp;#039; (downloads the newest release and installs it; apt fetches nginx/PHP automatically):&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -fsSL https://git.sa7aux.se/bjorne/svxspot-dashboard/raw/branch/main/install.sh | sudo bash&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Or install a &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; you copied over:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install ./svxspot-dashboard_&amp;lt;version&amp;gt;_all.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Use whatever version the release page shows in the filename (e.g. &amp;lt;code&amp;gt;svxspot-dashboard_1.0.1_all.deb&amp;lt;/code&amp;gt;). The package is architecture-independent (&amp;lt;code&amp;gt;_all&amp;lt;/code&amp;gt;) — the same file works on a Pi and on x86-64.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What the installer asks you === &lt;br /&gt;
&lt;br /&gt;
A normal install pops up a few questions (debconf). Sensible defaults are offered — you can just press Enter:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Question !! What to enter&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Node callsign&amp;#039;&amp;#039;&amp;#039; || Auto-detected from &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;. Accept it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Dashboard admin user&amp;#039;&amp;#039;&amp;#039; || Login name for the control pages. Default &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Admin password&amp;#039;&amp;#039;&amp;#039; || Type one, or leave &amp;#039;&amp;#039;&amp;#039;empty&amp;#039;&amp;#039;&amp;#039; to have a random 16-character password generated and &amp;#039;&amp;#039;&amp;#039;printed once&amp;#039;&amp;#039;&amp;#039; at the end — write it down.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Enable MQTT remote control?&amp;#039;&amp;#039;&amp;#039; || Default &amp;#039;&amp;#039;&amp;#039;no&amp;#039;&amp;#039;&amp;#039;. Say yes only if a portal will control this node; then it asks for broker host / username / password.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== What it sets up for you === &lt;br /&gt;
&lt;br /&gt;
The installer does all the plumbing (and it&amp;#039;s safe to re-run with &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
* installs and configures &amp;#039;&amp;#039;&amp;#039;nginx&amp;#039;&amp;#039;&amp;#039; (a site on port 80) and &amp;#039;&amp;#039;&amp;#039;php-fpm&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* creates the admin login (bcrypt &amp;lt;code&amp;gt;htpasswd&amp;lt;/code&amp;gt;);&lt;br /&gt;
* installs tightly-scoped &amp;#039;&amp;#039;&amp;#039;sudo&amp;#039;&amp;#039;&amp;#039; rules so the web user can save config and restart SvxLink — and nothing else;&lt;br /&gt;
* adds the web user to the &amp;lt;code&amp;gt;audio, tty, dialout, svxlink&amp;lt;/code&amp;gt; groups;&lt;br /&gt;
* stages the optional &amp;#039;&amp;#039;&amp;#039;MQTT agent&amp;#039;&amp;#039;&amp;#039; (a systemd service) — enabled only if you turned MQTT on.&lt;br /&gt;
&lt;br /&gt;
At the end it prints a banner with your &amp;#039;&amp;#039;&amp;#039;dashboard URL, admin user, and (if generated) the password&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Open it == &lt;br /&gt;
&lt;br /&gt;
* In a browser on the same network go to &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;http://svxspot.local/&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (or &amp;lt;code&amp;gt;http://&amp;lt;node-ip&amp;gt;/&amp;lt;/code&amp;gt; if the &amp;lt;code&amp;gt;.local&amp;lt;/code&amp;gt; name doesn&amp;#039;t resolve).&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;status page needs no login.&amp;#039;&amp;#039;&amp;#039; The &amp;#039;&amp;#039;&amp;#039;control pages&amp;#039;&amp;#039;&amp;#039; (TG, config editor, power, Wi-Fi, …) ask for the admin user/password you set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ If you flashed the ready-made &amp;#039;&amp;#039;&amp;#039;SvxSpot SD-card image&amp;#039;&amp;#039;&amp;#039;, the factory logins are SSH &amp;lt;code&amp;gt;svxspot&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;raspberry&amp;lt;/code&amp;gt; and dashboard &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;svxspot&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;Change both immediately&amp;#039;&amp;#039;&amp;#039; (see [[#Change the admin password|below]]).&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What&amp;#039;s on the dashboard == &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Page !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Start / Status&amp;#039;&amp;#039;&amp;#039; || Live status, last-heard stations, current talkgroup, quick-button keypad. (No login.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TG&amp;#039;&amp;#039;&amp;#039; + &amp;#039;&amp;#039;&amp;#039;DTMF keypad&amp;#039;&amp;#039;&amp;#039; || Switch talkgroup with one tap; send raw DTMF.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Config&amp;#039;&amp;#039;&amp;#039; || Edit &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt; in the browser with help text; every save makes a timestamped backup and restarts SvxLink.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;EchoLink&amp;#039;&amp;#039;&amp;#039; · &amp;#039;&amp;#039;&amp;#039;RF&amp;#039;&amp;#039;&amp;#039; (SA818) · &amp;#039;&amp;#039;&amp;#039;Audio&amp;#039;&amp;#039;&amp;#039; || Editors for EchoLink, radio-module frequency/squelch, and audio levels.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Wi-Fi / Network&amp;#039;&amp;#039;&amp;#039; || Join a Wi-Fi network / set networking.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Power&amp;#039;&amp;#039;&amp;#039; || Reboot, shut down, or restart SvxLink.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Remote Control (MQTT)&amp;#039;&amp;#039;&amp;#039; || Turn the optional MQTT agent on/off and set the broker.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Node info&amp;#039;&amp;#039;&amp;#039; · &amp;#039;&amp;#039;&amp;#039;Map&amp;#039;&amp;#039;&amp;#039; · &amp;#039;&amp;#039;&amp;#039;Log&amp;#039;&amp;#039;&amp;#039; || Node metadata, map, and the SvxLink log.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How it controls SvxLink (plain version) == &lt;br /&gt;
&lt;br /&gt;
You don&amp;#039;t need to know this to use it, but it helps when troubleshooting: the dashboard &amp;#039;&amp;#039;&amp;#039;reads&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log/svxlink&amp;lt;/code&amp;gt; to show status, and &amp;#039;&amp;#039;&amp;#039;controls&amp;#039;&amp;#039;&amp;#039; the node by writing DTMF strings (e.g. &amp;lt;code&amp;gt;91&amp;lt;tg&amp;gt;#&amp;lt;/code&amp;gt; to switch TG) to the control pipe &amp;lt;code&amp;gt;/var/lib/svxlink/dtmf_svx&amp;lt;/code&amp;gt;. Config edits are saved and SvxLink is restarted through the narrow &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; rules. That&amp;#039;s it — no database.&lt;br /&gt;
&lt;br /&gt;
== Optional: remote control over MQTT == &lt;br /&gt;
&lt;br /&gt;
If you enabled MQTT, a small systemd agent (&amp;lt;code&amp;gt;svxnode-mqtt&amp;lt;/code&amp;gt;) makes an &amp;#039;&amp;#039;&amp;#039;outbound TLS connection&amp;#039;&amp;#039;&amp;#039; to your broker on port &amp;#039;&amp;#039;&amp;#039;8883&amp;#039;&amp;#039;&amp;#039; (nothing to open in your router). An external portal publishes a talkgroup command, and the agent writes the same &amp;lt;code&amp;gt;91&amp;lt;tg&amp;gt;#&amp;lt;/code&amp;gt; to the DTMF pipe — exactly what the web TG button does. Enable/disable it from the dashboard&amp;#039;s &amp;#039;&amp;#039;&amp;#039;Remote Control&amp;#039;&amp;#039;&amp;#039; page, or re-run &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Change the admin password == &lt;br /&gt;
&lt;br /&gt;
No reconfigure needed — nginx re-reads the file on every request:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo htpasswd -B /etc/nginx/svxspot-dashboard.htpasswd admin&amp;lt;/pre&amp;gt;&lt;br /&gt;
(Add &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; to start a fresh file with only that user.)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting == &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Page won&amp;#039;t load&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;systemctl status nginx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sudo nginx -t&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ls /etc/nginx/sites-enabled/&amp;lt;/code&amp;gt; (should list svxspot-dashboard). Still broken → &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;502 Bad Gateway&amp;#039;&amp;#039;&amp;#039; || php-fpm is down → &amp;lt;code&amp;gt;sudo systemctl restart php*-fpm&amp;lt;/code&amp;gt; (use your actual version, e.g. &amp;lt;code&amp;gt;php8.4-fpm&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Password refused&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;sudo htpasswd -cB /etc/nginx/svxspot-dashboard.htpasswd admin&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; recreates it).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Status page empty / no callsign&amp;#039;&amp;#039;&amp;#039; || SvxLink isn&amp;#039;t running or has no config → &amp;lt;code&amp;gt;systemctl status svxlink&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tail -n 30 /var/log/svxlink&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TG buttons do nothing&amp;#039;&amp;#039;&amp;#039; || Check &amp;lt;code&amp;gt;grep DTMF_CTRL_PTY /etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; and that &amp;lt;code&amp;gt;/var/lib/svxlink/dtmf_svx&amp;lt;/code&amp;gt; exists. Then &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt; and restart php-fpm.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;“Save” permission error&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;sudo visudo -cf /etc/sudoers.d/svxspot-dashboard&amp;lt;/code&amp;gt; must say &amp;quot;parsed OK&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;MQTT stays inactive&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;journalctl -u svxnode-mqtt -n 30 --no-pager&amp;lt;/code&amp;gt; — usually wrong password, wrong host, or port 8883 firewalled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Your installed PHP version isn&amp;#039;t fixed — examples here use &amp;lt;code&amp;gt;php8.4-fpm&amp;lt;/code&amp;gt; but your box might run &amp;lt;code&amp;gt;php8.2-fpm&amp;lt;/code&amp;gt;. Substitute your own: &amp;lt;code&amp;gt;ls /run/php/php*-fpm.sock&amp;lt;/code&amp;gt;.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removing / starting over == &lt;br /&gt;
&lt;br /&gt;
* Keep your settings: &amp;lt;code&amp;gt;sudo apt remove svxspot-dashboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Wipe everything (incl. MQTT credentials): &amp;lt;code&amp;gt;sudo apt purge svxspot-dashboard&amp;lt;/code&amp;gt;, then reinstall.&lt;br /&gt;
&lt;br /&gt;
== See also == &lt;br /&gt;
&lt;br /&gt;
* [[Hamradio]] — SvxLink and the rest of the digital-voice how-tos.&lt;br /&gt;
* Author: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. GPL-3.0-or-later. Based on SVXLink-Dashboard-V2 / Guru-RF.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:10:22 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxspot_dashboard/en</comments>
		</item>
		<item>
			<title>Hamradio/chan svx sat/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/chan_svx_sat/en&amp;diff=388&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/chan_svx_sat/en&amp;diff=388&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:chan_svx_sat — AllStar ↔ SVXReflector, the easy way}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A hand-held, step-by-step guide to bridging an &amp;#039;&amp;#039;&amp;#039;AllStarLink 3&amp;#039;&amp;#039;&amp;#039; node straight to a &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039; with &amp;#039;&amp;#039;&amp;#039;chan_svx_sat&amp;#039;&amp;#039;&amp;#039; — install it, get it connected, and get the audio right. No prior SvxLink knowledge needed. Copy-paste friendly.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;In one sentence:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;chan_svx_sat&amp;lt;/code&amp;gt; is an Asterisk channel driver that lets your AllStar node talk Opus directly to a SVXReflector — so you drop the old &amp;lt;code&amp;gt;chan_usrp&amp;lt;/code&amp;gt; → svxlink hop and the extra vocoder tandem that came with it.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_sat_architecture.png|center|frameless|860px|alt=Before: app_rpt via USRP and svxlink to the reflector. After: app_rpt straight to the reflector over one Opus stream.]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; color:#9aa0a6; font-style:italic; margin:-6px 0 14px;&amp;quot;&amp;gt;One Opus hop instead of two transcodes. Less latency, cleaner audio.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Do I even need this? ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You run an AllStarLink 3 node&amp;#039;&amp;#039;&amp;#039; (on a Raspberry Pi or x86) &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; you want it on a &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039; talkgroup.&lt;br /&gt;
* Today you probably bridge it with &amp;lt;code&amp;gt;chan_usrp&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;svxlink&amp;lt;/code&amp;gt;. That works, but it transcodes the audio twice and adds a box to babysit.&lt;br /&gt;
* &amp;lt;code&amp;gt;chan_svx_sat&amp;lt;/code&amp;gt; replaces that whole hop with &amp;#039;&amp;#039;&amp;#039;one&amp;#039;&amp;#039;&amp;#039; driver. The audio path becomes just PCM ↔ Opus, once.&lt;br /&gt;
&lt;br /&gt;
If you are &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; going to a SvxReflector — e.g. you only link AllStar-to-AllStar, or you use DMR/YSF — you don&amp;#039;t need this. See [[Hamradio]] for those.&lt;br /&gt;
&lt;br /&gt;
== Words you&amp;#039;ll see (plain-language glossary) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Term !! What it means here&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;AllStarLink 3 (ASL3)&amp;#039;&amp;#039;&amp;#039; || The VoIP linking system built on Asterisk. Your node runs &amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;app_rpt&amp;#039;&amp;#039;&amp;#039; || The Asterisk application that &amp;#039;&amp;#039;&amp;#039;is&amp;#039;&amp;#039;&amp;#039; your repeater/node controller (COS, PTT, IDs, links).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039; || A server that joins many SvxLink-style clients on shared &amp;#039;&amp;#039;&amp;#039;talkgroups&amp;#039;&amp;#039;&amp;#039;. Your node logs in to it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Talkgroup (TG)&amp;#039;&amp;#039;&amp;#039; || A &amp;quot;channel&amp;quot; on the reflector. You transmit on one TG and hear whoever else is on it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Opus&amp;#039;&amp;#039;&amp;#039; || The audio codec on the wire between your node and the reflector. One transcode, 8&amp;amp;nbsp;kHz, 20&amp;amp;nbsp;ms frames.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Trunk&amp;#039;&amp;#039;&amp;#039; || One TCP connection (login) to the reflector. Several nodes can share one trunk — see [[#Several nodes on one login|below]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Section&amp;#039;&amp;#039;&amp;#039; || A &amp;lt;code&amp;gt;[block]&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;svx_sat.conf&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;One section = one node = one TG.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What you need before you start ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Tick all four. If one is missing, fix it first — the bridge can&amp;#039;t work without them.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;A working AllStarLink 3 node.&amp;#039;&amp;#039;&amp;#039; Check: &amp;lt;code&amp;gt;asterisk -V&amp;lt;/code&amp;gt; shows &amp;lt;code&amp;gt;Asterisk 22.x+asl3-...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;A 64-bit OS.&amp;#039;&amp;#039;&amp;#039; Debian 12 (bookworm) or 13 (trixie), on x86-64 or arm64 (Pi 3/4/5). Check: &amp;lt;code&amp;gt;dpkg --print-architecture&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;. /etc/os-release; echo $VERSION_CODENAME&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;(The Pi Zero 2 W is intentionally not supported — heat + Wi-Fi.)&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;A reflector login of your own&amp;#039;&amp;#039;&amp;#039; — a dedicated login + auth-key, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; shared with svxlink or another node. Sharing one gets the other kicked off. SvxReflector logins are &amp;#039;&amp;#039;&amp;#039;upper-case callsigns&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;The reflector is reachable.&amp;#039;&amp;#039;&amp;#039; Check: &amp;lt;code&amp;gt;nc -vz REFLECTOR_HOST 5300&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The worked example below is a real node: &amp;#039;&amp;#039;&amp;#039;AllStar node 1999&amp;#039;&amp;#039;&amp;#039; bridging to a reflector at &amp;#039;&amp;#039;&amp;#039;172.16.1.1:5300&amp;#039;&amp;#039;&amp;#039;, talkgroup &amp;#039;&amp;#039;&amp;#039;24016&amp;#039;&amp;#039;&amp;#039;. Swap in your own host / login / TG everywhere you see them.&lt;br /&gt;
&lt;br /&gt;
== How it all fits together ==&lt;br /&gt;
&lt;br /&gt;
Two small config files on the node, and one matching &amp;lt;code&amp;gt;SECRET&amp;lt;/code&amp;gt; line on the reflector. That is the entire wiring:&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_sat_topology.png|center|frameless|900px|alt=rpt.conf points at a section in svx_sat.conf, which logs in to the reflector whose SECRET must match.]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; color:#9aa0a6; font-style:italic; margin:-6px 0 14px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;rpt.conf&amp;lt;/code&amp;gt; → a section in &amp;lt;code&amp;gt;svx_sat.conf&amp;lt;/code&amp;gt; → a login the reflector recognises.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Install the package ==&lt;br /&gt;
&lt;br /&gt;
Pick the &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; that matches your OS &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; architecture:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OS / arch !! Package&lt;br /&gt;
|-&lt;br /&gt;
| trixie x86-64 || &amp;lt;code&amp;gt;asl3-chan-svx-sat_&amp;lt;ver&amp;gt;~trixie_amd64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| trixie arm64 (Pi) || &amp;lt;code&amp;gt;asl3-chan-svx-sat_&amp;lt;ver&amp;gt;~trixie_arm64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bookworm x86-64 || &amp;lt;code&amp;gt;asl3-chan-svx-sat_&amp;lt;ver&amp;gt;~bookworm_amd64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bookworm arm64 (Pi) || &amp;lt;code&amp;gt;asl3-chan-svx-sat_&amp;lt;ver&amp;gt;~bookworm_arm64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install ./asl3-chan-svx-sat_&amp;lt;ver&amp;gt;~&amp;lt;os&amp;gt;_&amp;lt;arch&amp;gt;.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dependencies (&amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libopus0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libssl3&amp;lt;/code&amp;gt;) resolve automatically. The package installs the module, a sample config, this kind of documentation under &amp;lt;code&amp;gt;/usr/share/doc/asl3-chan-svx-sat/&amp;lt;/code&amp;gt;, and adds a &amp;#039;&amp;#039;&amp;#039;commented&amp;#039;&amp;#039;&amp;#039; load line to &amp;lt;code&amp;gt;modules.conf&amp;lt;/code&amp;gt; for you to enable in Step 4. &amp;#039;&amp;#039;&amp;#039;Nothing loads or connects yet.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Create the reflector config ==&lt;br /&gt;
&lt;br /&gt;
Copy the sample and open it for editing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo cp /etc/asterisk/svx_sat.conf.sample /etc/asterisk/svx_sat.conf&lt;br /&gt;
sudo chown asterisk:asterisk /etc/asterisk/svx_sat.conf&lt;br /&gt;
sudo chmod 640 /etc/asterisk/svx_sat.conf      # it holds your reflector password&lt;br /&gt;
sudoedit /etc/asterisk/svx_sat.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make it look like this (name the section after the node — tidy and unambiguous):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[1999]&lt;br /&gt;
host     = 172.16.1.1       ; reflector hostname or IP&lt;br /&gt;
port     = 5300             ; reflector port (default 5300)&lt;br /&gt;
login    = SA7AUX-AC        ; your OWN login, UPPER-CASE, not shared&lt;br /&gt;
password = CHANGE_ME        ; your reflector auth-key&lt;br /&gt;
callsign = SA7AUX           ; name shown to the reflector&lt;br /&gt;
tg       = 24016            ; talkgroup to select (TX + primary RX)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;The login + password must match the reflector.&amp;#039;&amp;#039;&amp;#039; On the reflector&amp;#039;s &amp;lt;code&amp;gt;[SATELLITE]&amp;lt;/code&amp;gt; section there must be a line &amp;lt;code&amp;gt;SECRET_SA7AUX-AC=CHANGE_ME&amp;lt;/code&amp;gt; (case-sensitive). If you run the reflector too: add/change the &amp;lt;code&amp;gt;SECRET_&amp;lt;/code&amp;gt; line and &amp;#039;&amp;#039;&amp;#039;restart the reflector&amp;#039;&amp;#039;&amp;#039; — it only reads secrets at startup.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;callsign&amp;lt;/code&amp;gt; is shown as the node&amp;#039;s name &amp;#039;&amp;#039;&amp;#039;if it is free&amp;#039;&amp;#039;&amp;#039; on the reflector right now; on a collision (or if left empty) it falls back to &amp;lt;code&amp;gt;ASL-&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;ASL-1999&amp;lt;/code&amp;gt;), re-checked automatically as names free up.&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Point the node at it ==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;/etc/asterisk/rpt.conf&amp;lt;/code&amp;gt;, in your node&amp;#039;s stanza, &amp;#039;&amp;#039;&amp;#039;comment out the old rxchannel — never delete it&amp;#039;&amp;#039;&amp;#039; — and add the SVX line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[1999](node-main)&lt;br /&gt;
; rxchannel = USRP/127.0.0.1:4001:4002   ; old bridge, kept so you can revert&lt;br /&gt;
rxchannel = SVXSAT/1999                  ; chan_svx_sat -&amp;gt; section [1999]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;Want it to survive package upgrades?&amp;#039;&amp;#039;&amp;#039; Put the node stanza in &amp;lt;code&amp;gt;/etc/asterisk/custom/rpt.conf&amp;lt;/code&amp;gt; instead — ASL3 includes that file and never overwrites it. Use the direct edit above for a quick change; use &amp;lt;code&amp;gt;custom/&amp;lt;/code&amp;gt; if you want your config to survive &amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt; updates cleanly.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Enable the module ==&lt;br /&gt;
&lt;br /&gt;
ASL3 has &amp;lt;code&amp;gt;autoload = no&amp;lt;/code&amp;gt;, so the module must be listed by hand. The package added a &amp;#039;&amp;#039;&amp;#039;commented&amp;#039;&amp;#039;&amp;#039; line — turn it on. &amp;#039;&amp;#039;&amp;#039;It must live inside the &amp;lt;code&amp;gt;[modules]&amp;lt;/code&amp;gt; section&amp;#039;&amp;#039;&amp;#039; (a &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt; line after a later section is silently ignored):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sed -i &amp;#039;s/^; *load = chan_svx_sat.so/load = chan_svx_sat.so/&amp;#039; /etc/asterisk/modules.conf&lt;br /&gt;
grep -n &amp;#039;^load = chan_svx_sat.so&amp;#039; /etc/asterisk/modules.conf     # confirm it&amp;#039;s active&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 5 — Apply and verify ==&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;code&amp;gt;rxchannel&amp;lt;/code&amp;gt; change needs app_rpt to re-init, so restart Asterisk, then check:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo asterisk -rx &amp;quot;core restart now&amp;quot;&lt;br /&gt;
sudo asterisk -rx &amp;quot;svxsat show&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A healthy bridge looks like this — &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;CONNECTED&amp;lt;/code&amp;gt; means you&amp;#039;re done with the basic hookup&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_sat_svxsat_show.png|center|frameless|900px|alt=Annotated svxsat show output explaining CONNECTED, txframes, rxframes, starts/stops, fec and plc.]]&lt;br /&gt;
&lt;br /&gt;
Key up on the node → &amp;lt;code&amp;gt;txframes&amp;lt;/code&amp;gt; climbs and the reflector opens the talker on your TG. When someone else talks on the TG → &amp;lt;code&amp;gt;rxframes&amp;lt;/code&amp;gt; climbs. Done. The rest of this page is tuning and extras.&lt;br /&gt;
&lt;br /&gt;
== Getting the audio right ==&lt;br /&gt;
&lt;br /&gt;
This is where most people get stuck, so take it slow. &amp;#039;&amp;#039;&amp;#039;Only the yellow stages have knobs&amp;#039;&amp;#039;&amp;#039; — everything grey is automatic.&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_sat_audio_path.png|center|frameless|920px|alt=The TX and RX audio chains showing which stages are tunable (gain, AGC, jitter, tx_hold) and which are automatic (limiter, Opus FEC/PLC).]]&lt;br /&gt;
&lt;br /&gt;
All of these live in the node&amp;#039;s section in &amp;lt;code&amp;gt;svx_sat.conf&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;After changing any of them, run &amp;lt;code&amp;gt;sudo asterisk -rx &amp;quot;core restart now&amp;quot;&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== The four audio knobs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tx_gain&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Preamp on TX (node → reflector), in dB. Raise if others say you&amp;#039;re quiet; lower if they say you clip.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rx_gain&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Preamp on RX (reflector → node), in dB. Raise if the reflector audio is too quiet on your repeater.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tx_agc&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;rx_agc&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt; || Automatic gain control. Turn &amp;#039;&amp;#039;&amp;#039;on&amp;#039;&amp;#039;&amp;#039; to even out loud/quiet stations. &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bitrate&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;16000&amp;lt;/code&amp;gt; || Opus bitrate in bit/s. Leave it unless you have a reason.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 A &amp;#039;&amp;#039;&amp;#039;limiter is always on&amp;#039;&amp;#039;&amp;#039; in both directions — it stops the audio clipping even if you raise the gain too far. &amp;#039;&amp;#039;&amp;#039;Opus inband FEC + PLC&amp;#039;&amp;#039;&amp;#039; are always on too: a lost packet is rebuilt from the next one&amp;#039;s FEC, and an underrun is concealed instead of clicking. You don&amp;#039;t configure any of that.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;My audio is X → do Y&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Fix&lt;br /&gt;
|-&lt;br /&gt;
| Others say &amp;#039;&amp;#039;&amp;#039;you&amp;#039;re too quiet&amp;#039;&amp;#039;&amp;#039; || Raise &amp;lt;code&amp;gt;tx_gain&amp;lt;/code&amp;gt; a few dB at a time (e.g. &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| Others say &amp;#039;&amp;#039;&amp;#039;you clip / distort&amp;#039;&amp;#039;&amp;#039; || Lower &amp;lt;code&amp;gt;tx_gain&amp;lt;/code&amp;gt; a notch. The limiter guards the peak, but clean input is better.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reflector audio too quiet&amp;#039;&amp;#039;&amp;#039; on your repeater || Raise &amp;lt;code&amp;gt;rx_gain&amp;lt;/code&amp;gt; a few dB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Loud and quiet stations&amp;#039;&amp;#039;&amp;#039; are wildly uneven || Turn on &amp;lt;code&amp;gt;rx_agc = yes&amp;lt;/code&amp;gt; (and/or &amp;lt;code&amp;gt;tx_agc = yes&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Choppy / chopped&amp;#039;&amp;#039;&amp;#039; audio going out || See [[#The link flaps or chops|the tx_hold fix below]].&lt;br /&gt;
|-&lt;br /&gt;
| Crackle/dropouts coming &amp;#039;&amp;#039;&amp;#039;in&amp;#039;&amp;#039;&amp;#039; on a poor link || Raise &amp;lt;code&amp;gt;jitter&amp;lt;/code&amp;gt; (see below). FEC/PLC already help; this adds headroom.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Two more knobs: tx_hold and jitter ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tx_hold&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;250&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;TalkerStop hold time&amp;#039;&amp;#039;&amp;#039;, in ms. A brief unkey/rekey mid-over (COS flicker, link hangtime) would otherwise close and reopen the reflector talker and chop the audio. The hold keeps it open across the gap. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; = stop immediately on unkey.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jitter&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Jitter-buffer prefill&amp;#039;&amp;#039;&amp;#039;, in ms. Higher = smoother on a poor/long link, but more latency. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; = minimal (fine on a clean LAN). Max 500.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;The link flaps or chops&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If audio going out is chopped:&amp;#039;&amp;#039;&amp;#039; run &amp;lt;code&amp;gt;svxsat show&amp;lt;/code&amp;gt; and watch &amp;lt;code&amp;gt;starts&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;stops&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;One each per over is healthy.&amp;#039;&amp;#039;&amp;#039; Many per over means your key is flapping — raise &amp;lt;code&amp;gt;tx_hold&amp;lt;/code&amp;gt; (try &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Optional: listen to extra talkgroups ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;monitor = 24020, 9990     ; extra TGs you HEAR (RX only); TX still goes to &amp;#039;tg&amp;#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keep it up — forever ==&lt;br /&gt;
&lt;br /&gt;
Two independent things stay up: the &amp;#039;&amp;#039;&amp;#039;reflector link&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;AllStar node-to-node link&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The reflector link is automatic.&amp;#039;&amp;#039;&amp;#039; chan_svx_sat reconnects on its own (TCP + UDP heartbeats, backoff after any drop). Nothing to configure; &amp;lt;code&amp;gt;svxsat show&amp;lt;/code&amp;gt; goes back to &amp;lt;code&amp;gt;CONNECTED&amp;lt;/code&amp;gt; within seconds of any outage.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Keep the AllStar node linked to a hub?&amp;#039;&amp;#039;&amp;#039; Use app_rpt&amp;#039;s permanent connect, which re-establishes itself:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo asterisk -rx &amp;quot;rpt cmd 1999 ilink 13 403870&amp;quot;   # 13 = permanent, transceive&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link automatically at boot&amp;#039;&amp;#039;&amp;#039; via the node stanza:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[1999](node-main)&lt;br /&gt;
rxchannel = SVXSAT/1999&lt;br /&gt;
startup_macro = *3403870     ; auto-connect to 403870 (transceive) on startup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Belt-and-suspenders cron&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;ilink 3&amp;lt;/code&amp;gt; is idempotent — a no-op if already linked):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# keep node 1999 linked to 403870 every 2 minutes&lt;br /&gt;
*/2 * * * * /usr/sbin/asterisk -rx &amp;quot;rpt cmd 1999 ilink 3 403870&amp;quot; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: change talkgroup from the radio (DTMF) ==&lt;br /&gt;
&lt;br /&gt;
You can move the node to another TG live — over RF with DTMF, gated by a PIN — then drop back. Handy for pushing a bulletin/net out on a different TG, then reverting.&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_sat_tg_control.png|center|frameless|900px|alt=DTMF dial pattern star-855 plus PIN plus action digit, with a table of actions and the control flow.]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dial pattern:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;*855&amp;lt;/code&amp;gt; + &amp;#039;&amp;#039;&amp;#039;PIN&amp;#039;&amp;#039;&amp;#039; + action. Put the commands in &amp;lt;code&amp;gt;rpt.conf&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;[functions]&amp;lt;/code&amp;gt; (PIN is the control code — a wrong PIN simply does nothing). Default PIN is &amp;lt;code&amp;gt;0000&amp;lt;/code&amp;gt; — &amp;#039;&amp;#039;&amp;#039;change it before use&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;; /etc/asterisk/rpt.conf  —  base 855, PIN 0000 (CHANGE IT!)&lt;br /&gt;
[functions]&lt;br /&gt;
85500001 = cmd,asterisk -rx &amp;quot;svxsat settg 403872 3149060&amp;quot;   ; *855 0000 1 -&amp;gt; bulletin TG&lt;br /&gt;
85500002 = cmd,asterisk -rx &amp;quot;svxsat settg 403872 3149070&amp;quot;   ; *855 0000 2 -&amp;gt; another TG&lt;br /&gt;
85500000 = cmd,asterisk -rx &amp;quot;svxsat revert 403872&amp;quot;          ; *855 0000 0 -&amp;gt; default TG&lt;br /&gt;
85500009 = cmd,asterisk -rx &amp;quot;svxsat down   403872&amp;quot;          ; *855 0000 9 -&amp;gt; link down&lt;br /&gt;
85500008 = cmd,asterisk -rx &amp;quot;svxsat up     403872&amp;quot;          ; *855 0000 8 -&amp;gt; link up&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the default TG and an auto-revert timeout in &amp;lt;code&amp;gt;svx_sat.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[403872]&lt;br /&gt;
tg         = 3149050     ; the DEFAULT TG (revert/up target)&lt;br /&gt;
tg_timeout = 30          ; minutes on another TG before auto-revert (0 = off)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A temporary TG &amp;#039;&amp;#039;&amp;#039;always&amp;#039;&amp;#039;&amp;#039; drops back to default on a reboot, a reconnect, or after &amp;lt;code&amp;gt;tg_timeout&amp;lt;/code&amp;gt; — so a forgotten switch never strands the node.&lt;br /&gt;
&lt;br /&gt;
== Several nodes on one login ==&lt;br /&gt;
&lt;br /&gt;
Give several sections the &amp;#039;&amp;#039;&amp;#039;same&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;login&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; (and a &amp;lt;code&amp;gt;tg&amp;lt;/code&amp;gt; each) and they multiplex onto &amp;#039;&amp;#039;&amp;#039;one&amp;#039;&amp;#039;&amp;#039; reflector trunk — one handshake, one heartbeat — while each still appears as its own node with its own callsign and TG. Sections with &amp;#039;&amp;#039;&amp;#039;different&amp;#039;&amp;#039;&amp;#039; logins open separate trunks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[403872]&lt;br /&gt;
host = reflector.example.org&lt;br /&gt;
login = SA7AUX-N      ; SAME login  -&amp;gt; shared trunk&lt;br /&gt;
password = CHANGE_ME  ; SAME secret&lt;br /&gt;
callsign = SA7AUX-1&lt;br /&gt;
tg = 24016&lt;br /&gt;
&lt;br /&gt;
[403873]&lt;br /&gt;
host = reflector.example.org&lt;br /&gt;
login = SA7AUX-N      ; SAME login  -&amp;gt; same connection&lt;br /&gt;
password = CHANGE_ME&lt;br /&gt;
callsign = SA7AUX-2&lt;br /&gt;
tg = 24021            ; different TG per node&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;svxsat show&amp;lt;/code&amp;gt; empty / &amp;quot;No such command&amp;quot; / node has no rxchannel || Is &amp;lt;code&amp;gt;load = chan_svx_sat.so&amp;lt;/code&amp;gt; enabled &amp;#039;&amp;#039;&amp;#039;inside &amp;lt;code&amp;gt;[modules]&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;? Did you &amp;lt;code&amp;gt;core restart now&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;down&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;CONNECTED&amp;lt;/code&amp;gt; || Host/port reachable? login/password correct? Watch: &amp;lt;code&amp;gt;sudo tail -f /var/log/asterisk/messages.log &amp;amp;#124; grep -i svx&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth rejected: Invalid callsign&amp;lt;/code&amp;gt; || Login must be a valid &amp;#039;&amp;#039;&amp;#039;upper-case&amp;#039;&amp;#039;&amp;#039; callsign, and the account must exist on the reflector.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth rejected: Access denied&amp;lt;/code&amp;gt; || Wrong password, or the login isn&amp;#039;t registered on the reflector (&amp;lt;code&amp;gt;SECRET_&amp;lt;/code&amp;gt; missing / reflector not restarted).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;txframes&amp;lt;/code&amp;gt; climbs but nobody hears you || Is the &amp;#039;&amp;#039;&amp;#039;listening&amp;#039;&amp;#039;&amp;#039; client actually selecting/monitoring the same TG?&lt;br /&gt;
|-&lt;br /&gt;
| Choppy audio out, &amp;lt;code&amp;gt;starts&amp;lt;/code&amp;gt; climbing many-per-over || Key/unkey flapping → raise &amp;lt;code&amp;gt;tx_hold&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;txbadsize&amp;lt;/code&amp;gt; climbing || app_rpt is feeding non-slin frames — check the node&amp;#039;s audio path.&lt;br /&gt;
|-&lt;br /&gt;
| Loads but refuses (&amp;quot;compile-time options&amp;quot;) || The package must match the installed &amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt; version — install the deb for your exact OS.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Reverting ==&lt;br /&gt;
&lt;br /&gt;
# Restore the old &amp;lt;code&amp;gt;rxchannel&amp;lt;/code&amp;gt; (uncomment it) and comment &amp;lt;code&amp;gt;rxchannel = SVXSAT/...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Comment &amp;lt;code&amp;gt;load = chan_svx_sat.so&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;modules.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo asterisk -rx &amp;quot;core restart now&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Remove entirely: &amp;lt;code&amp;gt;sudo apt remove asl3-chan-svx-sat&amp;lt;/code&amp;gt; (add &amp;lt;code&amp;gt;--purge&amp;lt;/code&amp;gt; to also drop the sample config and the &amp;lt;code&amp;gt;modules.conf&amp;lt;/code&amp;gt; line).&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Hamradio]] — all the digital-voice and gateway how-tos.&lt;br /&gt;
* Author / bug reports: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. GNU GPL v2.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:10:18 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/chan_svx_sat/en</comments>
		</item>
		<item>
			<title>Hamradio/chan svx/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/chan_svx/en&amp;diff=387&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/chan_svx/en&amp;diff=387&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:chan_svx — AllStar ↔ SVXReflector, the easy way}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A hand-held, step-by-step guide to bridging an &amp;#039;&amp;#039;&amp;#039;AllStarLink 3&amp;#039;&amp;#039;&amp;#039; node straight to a &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039; with &amp;#039;&amp;#039;&amp;#039;chan_svx&amp;#039;&amp;#039;&amp;#039; — install it, get it connected, and get the audio right. No prior SvxLink knowledge needed. Copy-paste friendly.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;In one sentence:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;chan_svx&amp;lt;/code&amp;gt; is an Asterisk channel driver that lets your AllStar node talk Opus directly to a SVXReflector — so you drop the old &amp;lt;code&amp;gt;chan_usrp&amp;lt;/code&amp;gt; → svxlink hop and the extra vocoder tandem that came with it.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ &amp;#039;&amp;#039;&amp;#039;Two sister drivers — pick the right one.&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;chan_svx&amp;lt;/code&amp;gt; (this page) joins the reflector as a &amp;#039;&amp;#039;&amp;#039;SvxLink client&amp;#039;&amp;#039;&amp;#039; (one login = one TG). Its sibling &amp;lt;code&amp;gt;chan_svx_sat&amp;lt;/code&amp;gt; joins as a &amp;#039;&amp;#039;&amp;#039;satellite/trunk&amp;#039;&amp;#039;&amp;#039; and can carry &amp;#039;&amp;#039;&amp;#039;several nodes/TGs on one login&amp;#039;&amp;#039;&amp;#039;. If you want the trunk, read [[Hamradio/chan_svx_sat|the chan_svx_sat how-to]] instead.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_architecture.png|center|frameless|860px|alt=Before: app_rpt via USRP and svxlink to the reflector. After: app_rpt straight to the reflector over one Opus stream.]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; color:#9aa0a6; font-style:italic; margin:-6px 0 14px;&amp;quot;&amp;gt;One Opus hop instead of two transcodes. Less latency, cleaner audio.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Do I even need this? ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You run an AllStarLink 3 node&amp;#039;&amp;#039;&amp;#039; (on a Raspberry Pi or x86) &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; you want it on a &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039; talkgroup.&lt;br /&gt;
* Today you probably bridge it with &amp;lt;code&amp;gt;chan_usrp&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;svxlink&amp;lt;/code&amp;gt;. That works, but it transcodes the audio twice and adds a box to babysit.&lt;br /&gt;
* &amp;lt;code&amp;gt;chan_svx&amp;lt;/code&amp;gt; replaces that whole hop with &amp;#039;&amp;#039;&amp;#039;one&amp;#039;&amp;#039;&amp;#039; driver. The audio path becomes just PCM ↔ Opus, once.&lt;br /&gt;
&lt;br /&gt;
If you are &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; going to a SvxReflector — e.g. you only link AllStar-to-AllStar, or you use DMR/YSF — you don&amp;#039;t need this. See [[Hamradio]] for those.&lt;br /&gt;
&lt;br /&gt;
== Words you&amp;#039;ll see (plain-language glossary) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Term !! What it means here&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;AllStarLink 3 (ASL3)&amp;#039;&amp;#039;&amp;#039; || The VoIP linking system built on Asterisk. Your node runs &amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;app_rpt&amp;#039;&amp;#039;&amp;#039; || The Asterisk application that &amp;#039;&amp;#039;&amp;#039;is&amp;#039;&amp;#039;&amp;#039; your repeater/node controller (COS, PTT, IDs, links).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SVXReflector&amp;#039;&amp;#039;&amp;#039; || A server that joins many SvxLink-style clients on shared &amp;#039;&amp;#039;&amp;#039;talkgroups&amp;#039;&amp;#039;&amp;#039;. Your node logs in to it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Talkgroup (TG)&amp;#039;&amp;#039;&amp;#039; || A &amp;quot;channel&amp;quot; on the reflector. You transmit on one TG and hear whoever else is on it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Opus&amp;#039;&amp;#039;&amp;#039; || The audio codec on the wire between your node and the reflector. One transcode, 8&amp;amp;nbsp;kHz, 20&amp;amp;nbsp;ms frames.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Client&amp;#039;&amp;#039;&amp;#039; || chan_svx joins the reflector as a normal SvxLink &amp;#039;&amp;#039;&amp;#039;client&amp;#039;&amp;#039;&amp;#039; — one login, one TG, one stream.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Section&amp;#039;&amp;#039;&amp;#039; || A &amp;lt;code&amp;gt;[block]&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;svx.conf&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;One section = one node = one TG.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What you need before you start ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Tick all four. If one is missing, fix it first — the bridge can&amp;#039;t work without them.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;A working AllStarLink 3 node.&amp;#039;&amp;#039;&amp;#039; Check: &amp;lt;code&amp;gt;asterisk -V&amp;lt;/code&amp;gt; shows &amp;lt;code&amp;gt;Asterisk 22.x+asl3-...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;A 64-bit OS.&amp;#039;&amp;#039;&amp;#039; Debian 12 (bookworm) or 13 (trixie), on x86-64 or arm64 (Pi 3/4/5). Check: &amp;lt;code&amp;gt;dpkg --print-architecture&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;. /etc/os-release; echo $VERSION_CODENAME&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;(The Pi Zero 2 W is intentionally not supported — heat + Wi-Fi.)&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;A reflector login of your own&amp;#039;&amp;#039;&amp;#039; — a dedicated login + auth-key, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; shared with svxlink or another node. Sharing one gets the other kicked off. SvxReflector logins are &amp;#039;&amp;#039;&amp;#039;upper-case callsigns&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;The reflector is reachable.&amp;#039;&amp;#039;&amp;#039; Check: &amp;lt;code&amp;gt;nc -vz REFLECTOR_HOST 5300&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The worked example below is a real node: &amp;#039;&amp;#039;&amp;#039;AllStar node 1999&amp;#039;&amp;#039;&amp;#039; bridging to a reflector at &amp;#039;&amp;#039;&amp;#039;172.16.1.1:5300&amp;#039;&amp;#039;&amp;#039;, talkgroup &amp;#039;&amp;#039;&amp;#039;24016&amp;#039;&amp;#039;&amp;#039;. Swap in your own host / login / TG everywhere you see them.&lt;br /&gt;
&lt;br /&gt;
== How it all fits together ==&lt;br /&gt;
&lt;br /&gt;
Two small config files on the node, and a login the reflector recognises. That is the entire wiring:&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_topology.png|center|frameless|900px|alt=rpt.conf points at a section in svx.conf, which logs in to the reflector as a client.]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; color:#9aa0a6; font-style:italic; margin:-6px 0 14px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;rpt.conf&amp;lt;/code&amp;gt; → a section in &amp;lt;code&amp;gt;svx.conf&amp;lt;/code&amp;gt; → a login the reflector recognises.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Install the package ==&lt;br /&gt;
&lt;br /&gt;
Pick the &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; that matches your OS &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; architecture:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OS / arch !! Package&lt;br /&gt;
|-&lt;br /&gt;
| trixie x86-64 || &amp;lt;code&amp;gt;asl3-chan-svx_&amp;lt;ver&amp;gt;~trixie_amd64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| trixie arm64 (Pi) || &amp;lt;code&amp;gt;asl3-chan-svx_&amp;lt;ver&amp;gt;~trixie_arm64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bookworm x86-64 || &amp;lt;code&amp;gt;asl3-chan-svx_&amp;lt;ver&amp;gt;~bookworm_amd64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bookworm arm64 (Pi) || &amp;lt;code&amp;gt;asl3-chan-svx_&amp;lt;ver&amp;gt;~bookworm_arm64.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install ./asl3-chan-svx_&amp;lt;ver&amp;gt;~&amp;lt;os&amp;gt;_&amp;lt;arch&amp;gt;.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dependencies (&amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libopus0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libssl3&amp;lt;/code&amp;gt;) resolve automatically. The package installs the module, a sample config, this kind of documentation under &amp;lt;code&amp;gt;/usr/share/doc/asl3-chan-svx/&amp;lt;/code&amp;gt;, and adds a &amp;#039;&amp;#039;&amp;#039;commented&amp;#039;&amp;#039;&amp;#039; load line to &amp;lt;code&amp;gt;modules.conf&amp;lt;/code&amp;gt; for you to enable in Step 4. &amp;#039;&amp;#039;&amp;#039;Nothing loads or connects yet.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Create the reflector config ==&lt;br /&gt;
&lt;br /&gt;
Copy the sample and open it for editing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo cp /etc/asterisk/svx.conf.sample /etc/asterisk/svx.conf&lt;br /&gt;
sudo chown asterisk:asterisk /etc/asterisk/svx.conf&lt;br /&gt;
sudo chmod 640 /etc/asterisk/svx.conf      # it holds your reflector password&lt;br /&gt;
sudoedit /etc/asterisk/svx.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make it look like this (name the section after the node — tidy and unambiguous):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[1999]&lt;br /&gt;
host     = 172.16.1.1       ; reflector hostname or IP&lt;br /&gt;
port     = 5300             ; reflector port (default 5300)&lt;br /&gt;
login    = SA7AUX-AC        ; your OWN login, UPPER-CASE, not shared&lt;br /&gt;
password = CHANGE_ME        ; your reflector auth-key&lt;br /&gt;
callsign = SA7AUX           ; name shown to the reflector&lt;br /&gt;
tg       = 24016            ; talkgroup to select (TX + primary RX)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;The login + password must match what the reflector expects for this login.&amp;#039;&amp;#039;&amp;#039; Use a &amp;#039;&amp;#039;&amp;#039;dedicated&amp;#039;&amp;#039;&amp;#039; login — an upper-case callsign — that no other client (svxlink, another node) already uses; sharing one gets the other kicked off.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;callsign&amp;lt;/code&amp;gt; is shown as the node&amp;#039;s name &amp;#039;&amp;#039;&amp;#039;if it is free&amp;#039;&amp;#039;&amp;#039; on the reflector right now; on a collision (or if left empty) it falls back to &amp;lt;code&amp;gt;ASL-&amp;lt;section&amp;gt;&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;ASL-1999&amp;lt;/code&amp;gt;), re-checked automatically as names free up.&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Point the node at it ==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;/etc/asterisk/rpt.conf&amp;lt;/code&amp;gt;, in your node&amp;#039;s stanza, &amp;#039;&amp;#039;&amp;#039;comment out the old rxchannel — never delete it&amp;#039;&amp;#039;&amp;#039; — and add the SVX line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[1999](node-main)&lt;br /&gt;
; rxchannel = USRP/127.0.0.1:4001:4002   ; old bridge, kept so you can revert&lt;br /&gt;
rxchannel = SVX/1999                  ; chan_svx -&amp;gt; section [1999]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;Want it to survive package upgrades?&amp;#039;&amp;#039;&amp;#039; Put the node stanza in &amp;lt;code&amp;gt;/etc/asterisk/custom/rpt.conf&amp;lt;/code&amp;gt; instead — ASL3 includes that file and never overwrites it. Use the direct edit above for a quick change; use &amp;lt;code&amp;gt;custom/&amp;lt;/code&amp;gt; if you want your config to survive &amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt; updates cleanly.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Enable the module ==&lt;br /&gt;
&lt;br /&gt;
ASL3 has &amp;lt;code&amp;gt;autoload = no&amp;lt;/code&amp;gt;, so the module must be listed by hand. The package added a &amp;#039;&amp;#039;&amp;#039;commented&amp;#039;&amp;#039;&amp;#039; line — turn it on. &amp;#039;&amp;#039;&amp;#039;It must live inside the &amp;lt;code&amp;gt;[modules]&amp;lt;/code&amp;gt; section&amp;#039;&amp;#039;&amp;#039; (a &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt; line after a later section is silently ignored):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sed -i &amp;#039;s/^; *load = chan_svx.so/load = chan_svx.so/&amp;#039; /etc/asterisk/modules.conf&lt;br /&gt;
grep -n &amp;#039;^load = chan_svx.so&amp;#039; /etc/asterisk/modules.conf     # confirm it&amp;#039;s active&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 5 — Apply and verify ==&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;code&amp;gt;rxchannel&amp;lt;/code&amp;gt; change needs app_rpt to re-init, so restart Asterisk, then check:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo asterisk -rx &amp;quot;core restart now&amp;quot;&lt;br /&gt;
sudo asterisk -rx &amp;quot;svx show&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A healthy bridge looks like this — &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;CONNECTED&amp;lt;/code&amp;gt; means you&amp;#039;re done with the basic hookup&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_svx_show.png|center|frameless|900px|alt=Annotated svx show output explaining CONNECTED, txframes, rxframes, starts/stops, fec and plc.]]&lt;br /&gt;
&lt;br /&gt;
Key up on the node → &amp;lt;code&amp;gt;txframes&amp;lt;/code&amp;gt; climbs and the reflector opens the talker on your TG. When someone else talks on the TG → &amp;lt;code&amp;gt;rxframes&amp;lt;/code&amp;gt; climbs. Done. The rest of this page is tuning and extras.&lt;br /&gt;
&lt;br /&gt;
== Getting the audio right ==&lt;br /&gt;
&lt;br /&gt;
This is where most people get stuck, so take it slow. &amp;#039;&amp;#039;&amp;#039;Only the yellow stages have knobs&amp;#039;&amp;#039;&amp;#039; — everything grey is automatic.&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_sat_audio_path.png|center|frameless|920px|alt=The TX and RX audio chains showing which stages are tunable (gain, AGC, jitter, tx_hold) and which are automatic (limiter, Opus FEC/PLC).]]&lt;br /&gt;
&lt;br /&gt;
All of these live in the node&amp;#039;s section in &amp;lt;code&amp;gt;svx.conf&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;After changing any of them, run &amp;lt;code&amp;gt;sudo asterisk -rx &amp;quot;core restart now&amp;quot;&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== The four audio knobs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tx_gain&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Preamp on TX (node → reflector), in dB. Raise if others say you&amp;#039;re quiet; lower if they say you clip.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rx_gain&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Preamp on RX (reflector → node), in dB. Raise if the reflector audio is too quiet on your repeater.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tx_agc&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;rx_agc&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt; || Automatic gain control. Turn &amp;#039;&amp;#039;&amp;#039;on&amp;#039;&amp;#039;&amp;#039; to even out loud/quiet stations. &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bitrate&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;16000&amp;lt;/code&amp;gt; || Opus bitrate in bit/s. Leave it unless you have a reason.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 A &amp;#039;&amp;#039;&amp;#039;limiter is always on&amp;#039;&amp;#039;&amp;#039; in both directions — it stops the audio clipping even if you raise the gain too far. &amp;#039;&amp;#039;&amp;#039;Opus inband FEC + PLC&amp;#039;&amp;#039;&amp;#039; are always on too: a lost packet is rebuilt from the next one&amp;#039;s FEC, and an underrun is concealed instead of clicking. You don&amp;#039;t configure any of that.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;My audio is X → do Y&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Fix&lt;br /&gt;
|-&lt;br /&gt;
| Others say &amp;#039;&amp;#039;&amp;#039;you&amp;#039;re too quiet&amp;#039;&amp;#039;&amp;#039; || Raise &amp;lt;code&amp;gt;tx_gain&amp;lt;/code&amp;gt; a few dB at a time (e.g. &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| Others say &amp;#039;&amp;#039;&amp;#039;you clip / distort&amp;#039;&amp;#039;&amp;#039; || Lower &amp;lt;code&amp;gt;tx_gain&amp;lt;/code&amp;gt; a notch. The limiter guards the peak, but clean input is better.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reflector audio too quiet&amp;#039;&amp;#039;&amp;#039; on your repeater || Raise &amp;lt;code&amp;gt;rx_gain&amp;lt;/code&amp;gt; a few dB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Loud and quiet stations&amp;#039;&amp;#039;&amp;#039; are wildly uneven || Turn on &amp;lt;code&amp;gt;rx_agc = yes&amp;lt;/code&amp;gt; (and/or &amp;lt;code&amp;gt;tx_agc = yes&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Choppy / chopped&amp;#039;&amp;#039;&amp;#039; audio going out || See [[#The link flaps or chops|the tx_hold fix below]].&lt;br /&gt;
|-&lt;br /&gt;
| Crackle/dropouts coming &amp;#039;&amp;#039;&amp;#039;in&amp;#039;&amp;#039;&amp;#039; on a poor link || Raise &amp;lt;code&amp;gt;jitter&amp;lt;/code&amp;gt; (see below). FEC/PLC already help; this adds headroom.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Two more knobs: tx_hold and jitter ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Default !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tx_hold&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;250&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;TalkerStop hold time&amp;#039;&amp;#039;&amp;#039;, in ms. A brief unkey/rekey mid-over (COS flicker, link hangtime) would otherwise close and reopen the reflector talker and chop the audio. The hold keeps it open across the gap. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; = stop immediately on unkey.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jitter&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Jitter-buffer prefill&amp;#039;&amp;#039;&amp;#039;, in ms. Higher = smoother on a poor/long link, but more latency. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; = minimal (fine on a clean LAN). Max 500.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;The link flaps or chops&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If audio going out is chopped:&amp;#039;&amp;#039;&amp;#039; run &amp;lt;code&amp;gt;svx show&amp;lt;/code&amp;gt; and watch &amp;lt;code&amp;gt;starts&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;stops&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;One each per over is healthy.&amp;#039;&amp;#039;&amp;#039; Many per over means your key is flapping — raise &amp;lt;code&amp;gt;tx_hold&amp;lt;/code&amp;gt; (try &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Optional: listen to extra talkgroups ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;monitor = 24020, 9990     ; extra TGs you HEAR (RX only); TX still goes to &amp;#039;tg&amp;#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keep it up — forever ==&lt;br /&gt;
&lt;br /&gt;
Two independent things stay up: the &amp;#039;&amp;#039;&amp;#039;reflector link&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;AllStar node-to-node link&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The reflector link is automatic.&amp;#039;&amp;#039;&amp;#039; chan_svx reconnects on its own (TCP + UDP heartbeats, backoff after any drop). Nothing to configure; &amp;lt;code&amp;gt;svx show&amp;lt;/code&amp;gt; goes back to &amp;lt;code&amp;gt;CONNECTED&amp;lt;/code&amp;gt; within seconds of any outage.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Keep the AllStar node linked to a hub?&amp;#039;&amp;#039;&amp;#039; Use app_rpt&amp;#039;s permanent connect, which re-establishes itself:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo asterisk -rx &amp;quot;rpt cmd 1999 ilink 13 403870&amp;quot;   # 13 = permanent, transceive&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link automatically at boot&amp;#039;&amp;#039;&amp;#039; via the node stanza:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[1999](node-main)&lt;br /&gt;
rxchannel = SVX/1999&lt;br /&gt;
startup_macro = *3403870     ; auto-connect to 403870 (transceive) on startup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Belt-and-suspenders cron&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;ilink 3&amp;lt;/code&amp;gt; is idempotent — a no-op if already linked):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# keep node 1999 linked to 403870 every 2 minutes&lt;br /&gt;
*/2 * * * * /usr/sbin/asterisk -rx &amp;quot;rpt cmd 1999 ilink 3 403870&amp;quot; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: change talkgroup from the radio (DTMF) ==&lt;br /&gt;
&lt;br /&gt;
You can move the node to another TG live — over RF with DTMF, gated by a PIN — then drop back. Handy for pushing a bulletin/net out on a different TG, then reverting.&lt;br /&gt;
&lt;br /&gt;
[[File:Chan_svx_tg_control.png|center|frameless|900px|alt=DTMF dial pattern star-855 plus PIN plus action digit, with a table of actions and the control flow.]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dial pattern:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;*855&amp;lt;/code&amp;gt; + &amp;#039;&amp;#039;&amp;#039;PIN&amp;#039;&amp;#039;&amp;#039; + action. Put the commands in &amp;lt;code&amp;gt;rpt.conf&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;[functions]&amp;lt;/code&amp;gt; (PIN is the control code — a wrong PIN simply does nothing). Default PIN is &amp;lt;code&amp;gt;0000&amp;lt;/code&amp;gt; — &amp;#039;&amp;#039;&amp;#039;change it before use&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;; /etc/asterisk/rpt.conf  —  base 855, PIN 0000 (CHANGE IT!)&lt;br /&gt;
[functions]&lt;br /&gt;
85500001 = cmd,asterisk -rx &amp;quot;svx settg 403872 3149060&amp;quot;   ; *855 0000 1 -&amp;gt; bulletin TG&lt;br /&gt;
85500002 = cmd,asterisk -rx &amp;quot;svx settg 403872 3149070&amp;quot;   ; *855 0000 2 -&amp;gt; another TG&lt;br /&gt;
85500000 = cmd,asterisk -rx &amp;quot;svx revert 403872&amp;quot;          ; *855 0000 0 -&amp;gt; default TG&lt;br /&gt;
85500009 = cmd,asterisk -rx &amp;quot;svx down   403872&amp;quot;          ; *855 0000 9 -&amp;gt; link down&lt;br /&gt;
85500008 = cmd,asterisk -rx &amp;quot;svx up     403872&amp;quot;          ; *855 0000 8 -&amp;gt; link up&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the default TG and an auto-revert timeout in &amp;lt;code&amp;gt;svx.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[403872]&lt;br /&gt;
tg         = 3149050     ; the DEFAULT TG (revert/up target)&lt;br /&gt;
tg_timeout = 30          ; minutes on another TG before auto-revert (0 = off)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A temporary TG &amp;#039;&amp;#039;&amp;#039;always&amp;#039;&amp;#039;&amp;#039; drops back to default on a reboot, a reconnect, or after &amp;lt;code&amp;gt;tg_timeout&amp;lt;/code&amp;gt; — so a forgotten switch never strands the node.&lt;br /&gt;
&lt;br /&gt;
== Several nodes or TGs? Use chan_svx_sat ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chan_svx&amp;lt;/code&amp;gt; is &amp;#039;&amp;#039;&amp;#039;one login = one TG = one stream&amp;#039;&amp;#039;&amp;#039; — one reflector client per section. If you need &amp;#039;&amp;#039;&amp;#039;several nodes / talkgroups over a single reflector login&amp;#039;&amp;#039;&amp;#039; (a shared &amp;#039;&amp;#039;&amp;#039;trunk&amp;#039;&amp;#039;&amp;#039;), that is exactly what the sister driver &amp;#039;&amp;#039;&amp;#039;chan_svx_sat&amp;#039;&amp;#039;&amp;#039; does — it joins as a reflector &amp;#039;&amp;#039;satellite/trunk&amp;#039;&amp;#039; instead of a client. See the [[Hamradio/chan_svx_sat|chan_svx_sat how-to]].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;svx show&amp;lt;/code&amp;gt; empty / &amp;quot;No such command&amp;quot; / node has no rxchannel || Is &amp;lt;code&amp;gt;load = chan_svx.so&amp;lt;/code&amp;gt; enabled &amp;#039;&amp;#039;&amp;#039;inside &amp;lt;code&amp;gt;[modules]&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;? Did you &amp;lt;code&amp;gt;core restart now&amp;lt;/code&amp;gt;?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;down&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;CONNECTED&amp;lt;/code&amp;gt; || Host/port reachable? login/password correct? Watch: &amp;lt;code&amp;gt;sudo tail -f /var/log/asterisk/messages.log &amp;amp;#124; grep -i svx&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth rejected: Invalid callsign&amp;lt;/code&amp;gt; || Login must be a valid &amp;#039;&amp;#039;&amp;#039;upper-case&amp;#039;&amp;#039;&amp;#039; callsign, and the account must exist on the reflector.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth rejected: Access denied&amp;lt;/code&amp;gt; || Wrong password, or the login isn&amp;#039;t registered on the reflector.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;txframes&amp;lt;/code&amp;gt; climbs but nobody hears you || Is the &amp;#039;&amp;#039;&amp;#039;listening&amp;#039;&amp;#039;&amp;#039; client actually selecting/monitoring the same TG?&lt;br /&gt;
|-&lt;br /&gt;
| Choppy audio out, &amp;lt;code&amp;gt;starts&amp;lt;/code&amp;gt; climbing many-per-over || Key/unkey flapping → raise &amp;lt;code&amp;gt;tx_hold&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;txbadsize&amp;lt;/code&amp;gt; climbing || app_rpt is feeding non-slin frames — check the node&amp;#039;s audio path.&lt;br /&gt;
|-&lt;br /&gt;
| Loads but refuses (&amp;quot;compile-time options&amp;quot;) || The package must match the installed &amp;lt;code&amp;gt;asl3-asterisk&amp;lt;/code&amp;gt; version — install the deb for your exact OS.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Reverting ==&lt;br /&gt;
&lt;br /&gt;
# Restore the old &amp;lt;code&amp;gt;rxchannel&amp;lt;/code&amp;gt; (uncomment it) and comment &amp;lt;code&amp;gt;rxchannel = SVX/...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Comment &amp;lt;code&amp;gt;load = chan_svx.so&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;modules.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo asterisk -rx &amp;quot;core restart now&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Remove entirely: &amp;lt;code&amp;gt;sudo apt remove asl3-chan-svx&amp;lt;/code&amp;gt; (add &amp;lt;code&amp;gt;--purge&amp;lt;/code&amp;gt; to also drop the sample config and the &amp;lt;code&amp;gt;modules.conf&amp;lt;/code&amp;gt; line).&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Hamradio]] — all the digital-voice and gateway how-tos.&lt;br /&gt;
* Author / bug reports: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. GNU GPL v2.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:10:18 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/chan_svx/en</comments>
		</item>
		<item>
			<title>Hamradio/reflector dashboard/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/reflector_dashboard/en&amp;diff=222&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/reflector_dashboard/en&amp;diff=222&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:R.A.D.A.R. — a live dashboard for your SvxReflector}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A guide to setting up &amp;#039;&amp;#039;&amp;#039;R.A.D.A.R.&amp;#039;&amp;#039;&amp;#039; (Reflector Activity Dashboard And Reporting): a web dashboard that shows, live, who is connected to your &amp;#039;&amp;#039;&amp;#039;SvxReflector&amp;#039;&amp;#039;&amp;#039;, who is talking, and how the network is wired — with user accounts, talkgroup lists and admin tools.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;In one sentence:&amp;#039;&amp;#039;&amp;#039; R.A.D.A.R. runs on the &amp;#039;&amp;#039;&amp;#039;same server as your SvxReflector&amp;#039;&amp;#039;&amp;#039;, polls the reflector&amp;#039;s status, and serves a live web page (nodes, last-heard, talkgroups, topology, CTCSS) with a sign-up/login account system.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Radar_arch.png|center|frameless|940px|alt=The reflector&amp;#039;s /status on port 8099 is polled by svxdr proxy (8090), then svxdr nodelist (8098), served through nginx over HTTPS to the browser; PHP-FPM handles accounts in Redis.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ &amp;#039;&amp;#039;&amp;#039;This one is for reflector operators, not beginners.&amp;#039;&amp;#039;&amp;#039; Unlike the node dashboard, R.A.D.A.R. is a server install: nginx + PHP + Redis + a Go daemon + a real TLS certificate. If you just run a node, you don&amp;#039;t need this — you want the [[Hamradio/svxspot_dashboard|SvxSpot Dashboard]] instead. The authoritative step-by-step is the repo&amp;#039;s &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;INSTALL.md&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;; this page is the friendly overview.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Do I need this? ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You run a SvxReflector&amp;#039;&amp;#039;&amp;#039; (specifically a &amp;#039;&amp;#039;&amp;#039;GeuReflector&amp;#039;&amp;#039;&amp;#039; build, which adds reflector-to-reflector trunking) and want a public/at-a-glance &amp;#039;&amp;#039;&amp;#039;activity dashboard&amp;#039;&amp;#039;&amp;#039; for it.&lt;br /&gt;
* You&amp;#039;re comfortable setting up a web server with HTTPS. This is a multi-service install on a Debian box.&lt;br /&gt;
* If you only run a &amp;#039;&amp;#039;&amp;#039;node&amp;#039;&amp;#039;&amp;#039; (hotspot/repeater), stop here — use [[Hamradio/svxspot_dashboard|SvxSpot Dashboard]].&lt;br /&gt;
&lt;br /&gt;
== What you need first ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Thing !! Why&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;A running SvxReflector (GeuReflector)&amp;#039;&amp;#039;&amp;#039; on the same box || R.A.D.A.R. reads its &amp;lt;code&amp;gt;/status&amp;lt;/code&amp;gt; endpoint (example port &amp;#039;&amp;#039;&amp;#039;8099&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;A domain name + TLS certificate&amp;#039;&amp;#039;&amp;#039; (Let&amp;#039;s Encrypt) || Login uses a &amp;lt;code&amp;gt;Secure&amp;lt;/code&amp;gt; cookie — &amp;#039;&amp;#039;&amp;#039;it does not work over plain HTTP.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;nginx&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;PHP 8.4 + FPM&amp;#039;&amp;#039;&amp;#039; (redis, mbstring, openssl, json), &amp;#039;&amp;#039;&amp;#039;Redis 6+&amp;#039;&amp;#039;&amp;#039; || web server, account backend, and account/session store.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;An MTA or SMTP relay&amp;#039;&amp;#039;&amp;#039; || sign-up verification and password-reset e-mail.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Go 1.24+&amp;#039;&amp;#039;&amp;#039; || to compile the &amp;lt;code&amp;gt;svxdr&amp;lt;/code&amp;gt; live-data daemon.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Install the packages (Debian 13 / Ubuntu 24.04):&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install nginx php8.4-fpm php8.4-redis php8.4-mbstring php8.4-cli \&lt;br /&gt;
                 redis-server certbot openssl rsync curl python3 sudo golang-go&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Debian 12 ships PHP 8.2; R.A.D.A.R. is developed on &amp;#039;&amp;#039;&amp;#039;8.4&amp;#039;&amp;#039;&amp;#039;. Use Debian 13, or the sury.org PHP repo, and substitute your real version everywhere you see &amp;lt;code&amp;gt;8.4&amp;lt;/code&amp;gt;.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How the data flows (so the ports make sense) ==&lt;br /&gt;
&lt;br /&gt;
The single most common setup mistake is a &amp;#039;&amp;#039;&amp;#039;mismatched port chain&amp;#039;&amp;#039;&amp;#039;. Data flows:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;reflector &amp;lt;code&amp;gt;/status&amp;lt;/code&amp;gt; :8099&amp;#039;&amp;#039;&amp;#039; → &amp;#039;&amp;#039;&amp;#039;svxdr proxy :8090&amp;#039;&amp;#039;&amp;#039; (caches, enriches) → &amp;#039;&amp;#039;&amp;#039;svxdr nodelist :8098&amp;#039;&amp;#039;&amp;#039; (builds the API + live SSE stream, reads Redis for node events) → &amp;#039;&amp;#039;&amp;#039;nginx&amp;#039;&amp;#039;&amp;#039; (HTTPS, reverse-proxies &amp;lt;code&amp;gt;/svxportal/api/&amp;lt;/code&amp;gt; to :8098) → &amp;#039;&amp;#039;&amp;#039;your browser&amp;#039;&amp;#039;&amp;#039;. Accounts live in &amp;#039;&amp;#039;&amp;#039;Redis&amp;#039;&amp;#039;&amp;#039;; the PHP backend (&amp;lt;code&amp;gt;auth/*.php&amp;lt;/code&amp;gt;) talks to it.&lt;br /&gt;
&lt;br /&gt;
Keep those numbers lined up and most of the install &amp;quot;just works&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Install (overview) ==&lt;br /&gt;
&lt;br /&gt;
Clone the repo and follow its &amp;lt;code&amp;gt;INSTALL.md&amp;lt;/code&amp;gt; steps 0–11; the key moves are:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Get the code:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Deploy the web files&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;/var/www/html/svxportal&amp;lt;/code&amp;gt; (owned by &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt;).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Set up a dedicated Redis&amp;#039;&amp;#039;&amp;#039; instance on a unix socket, with a password; add &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;redis&amp;lt;/code&amp;gt; group.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Add a second PHP-FPM pool&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;svxadmin&amp;lt;/code&amp;gt;) used only by the reflector-admin API.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Create the talkgroup-list file&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;/etc/svxlink/tglist.json&amp;lt;/code&amp;gt; (via the shipped tmpfiles rule).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;nginx + TLS:&amp;#039;&amp;#039;&amp;#039; install the site template, run &amp;lt;code&amp;gt;certbot&amp;lt;/code&amp;gt; for your hostname, enable the site.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Build and run &amp;lt;code&amp;gt;svxdr&amp;lt;/code&amp;gt;:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;cd svxdr &amp;amp;&amp;amp; CGO_ENABLED=0 go build -trimpath -o svxdr . &amp;amp;&amp;amp; cd ..&lt;br /&gt;
sudo install -m0755 svxdr/svxdr /usr/local/bin/svxdr&lt;br /&gt;
sudo cp install/svxdr.json.example /etc/svxlink/svxdr.json   # then edit it&lt;br /&gt;
sudo cp install/systemd/svxdr.service /etc/systemd/system/svxdr.service&lt;br /&gt;
sudo systemctl daemon-reload &amp;amp;&amp;amp; sudo systemctl enable --now svxdr&lt;br /&gt;
curl -s http://127.0.0.1:8098/healthz        # -&amp;gt; ok&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two config files hold the settings: &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;auth/config.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (web backend — Redis password, mail, &amp;lt;code&amp;gt;base_url&amp;lt;/code&amp;gt;, MQTT) and &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;/etc/svxlink/svxdr.json&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (the daemon — Redis, the three ports, federation seeds). Copy each from its &amp;lt;code&amp;gt;.example&amp;lt;/code&amp;gt; and edit.&lt;br /&gt;
&lt;br /&gt;
== Create the first admin ==&lt;br /&gt;
&lt;br /&gt;
A bundled CLI makes the first account (and marks its e-mail verified):&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /var/www/html/svxportal&lt;br /&gt;
sudo -u www-data php svx-mkadmin.php&amp;lt;/pre&amp;gt;&lt;br /&gt;
It asks for callsign, name, e-mail, location, &amp;#039;&amp;#039;&amp;#039;admin level&amp;#039;&amp;#039;&amp;#039; and a password. Levels: &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; = normal user, &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; = admin (accounts, nodes, certificates, talkgroups), &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; = super admin (also reflector/MQTT secrets and managing other admins). Everyone else &amp;#039;&amp;#039;&amp;#039;self-registers&amp;#039;&amp;#039;&amp;#039; on the site and verifies by e-mail.&lt;br /&gt;
&lt;br /&gt;
== Using it ==&lt;br /&gt;
&lt;br /&gt;
Open &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;https://YOUR.HOST.NAME/&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;. The top navigation has:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! View !! Shows&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Nodes&amp;#039;&amp;#039;&amp;#039; || Connected nodes, with a pop-up when someone is talking.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reflector clients&amp;#039;&amp;#039;&amp;#039; || Searchable list of all connected clients.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Monitor → Nodes / Trunks / Topology&amp;#039;&amp;#039;&amp;#039; || Live monitor; &amp;#039;&amp;#039;&amp;#039;Topology&amp;#039;&amp;#039;&amp;#039; draws the whole network — your reflector in the centre, other reflectors in a ring, trunk links between them.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TG Monitor&amp;#039;&amp;#039;&amp;#039; || Who&amp;#039;s on each talkgroup (SVX side and DMR side).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Lastheard&amp;#039;&amp;#039;&amp;#039; || Recent activity.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;CTCSS Table&amp;#039;&amp;#039;&amp;#039; || Per-node TX/RX tones, 2 m vs UHF.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Changelog&amp;#039;&amp;#039;&amp;#039; || Project changelog.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A built-in &amp;#039;&amp;#039;&amp;#039;Help&amp;#039;&amp;#039;&amp;#039; page (&amp;lt;code&amp;gt;/help.html&amp;lt;/code&amp;gt;) has tabs for the Portal, SvxLink, SvxReflector, GeuReflector, AllStar and more.&lt;br /&gt;
&lt;br /&gt;
== Good to know / honest caveats ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ &amp;#039;&amp;#039;&amp;#039;The reflector-admin pages need helper scripts you write yourself.&amp;#039;&amp;#039;&amp;#039; The Admin → Reflector / Certificates / Node-control / MQTT pages call root-owned &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; helpers in &amp;lt;code&amp;gt;/usr/local/sbin/&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;svxreflector-pty&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;svxreflector-systemctl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;svxreflector-users&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;svx-mqtt-provision&amp;lt;/code&amp;gt;) that are &amp;#039;&amp;#039;&amp;#039;not shipped&amp;#039;&amp;#039;&amp;#039; — they&amp;#039;re specific to your box. Everything else works without them.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Login lost after one page?&amp;#039;&amp;#039;&amp;#039; You&amp;#039;re not on HTTPS (the cookie is &amp;lt;code&amp;gt;Secure&amp;lt;/code&amp;gt;) or &amp;lt;code&amp;gt;base_url&amp;lt;/code&amp;gt; is wrong.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Live views empty?&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;svxdr&amp;lt;/code&amp;gt; isn&amp;#039;t running — check &amp;lt;code&amp;gt;systemctl status svxdr&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl http://127.0.0.1:8098/healthz&amp;lt;/code&amp;gt;. The reflector itself keeps working regardless.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;No verification e-mail?&amp;#039;&amp;#039;&amp;#039; PHP &amp;lt;code&amp;gt;mail()&amp;lt;/code&amp;gt; fails silently without an MTA — configure an SMTP relay.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Admin API says “exec disabled”?&amp;#039;&amp;#039;&amp;#039; Never add &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt; to PHP&amp;#039;s &amp;lt;code&amp;gt;disable_functions&amp;lt;/code&amp;gt;; the portal needs it.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;500 on any &amp;lt;code&amp;gt;auth/*.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/var/log/nginx/svxportal-error.log&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;journalctl -u php8.4-fpm&amp;lt;/code&amp;gt; — usually Redis password wrong, &amp;lt;code&amp;gt;php-redis&amp;lt;/code&amp;gt; missing, or &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt; not in group &amp;lt;code&amp;gt;redis&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;&amp;quot;Not connected&amp;quot; / empty views&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;svxdr&amp;lt;/code&amp;gt; down → nothing on &amp;lt;code&amp;gt;127.0.0.1:8098&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Ports&amp;#039;&amp;#039;&amp;#039; || Confirm the chain &amp;#039;&amp;#039;&amp;#039;8099 → 8090 → 8098 → nginx&amp;#039;&amp;#039;&amp;#039; in &amp;lt;code&amp;gt;/etc/svxlink/svxdr.json&amp;lt;/code&amp;gt; and the nginx site.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Hamradio/svxspot_dashboard|SvxSpot Dashboard]] — the dashboard for a single node (much simpler).&lt;br /&gt;
* [[Hamradio]] — SvxReflector and the rest of the digital-voice how-tos.&lt;br /&gt;
* Author: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. AGPL-3.0-or-later.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:10:05 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/reflector_dashboard/en</comments>
		</item>
		<item>
			<title>Hamradio/darthvader/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/darthvader/en&amp;diff=188&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/darthvader/en&amp;diff=188&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:darthvader — the all-modes digital voice app}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A beginner&amp;#039;s guide to installing and running &amp;#039;&amp;#039;&amp;#039;darthvader&amp;#039;&amp;#039;&amp;#039; — one desktop program that puts every ham digital-voice network (DMR, YSF, D-STAR, NXDN, P25, M17, EchoLink, AllStar, SvxLink, APRS, POCSAG) in a single window, on Windows or Linux. Download, install, go.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;In one sentence:&amp;#039;&amp;#039;&amp;#039; darthvader is a &amp;#039;&amp;#039;&amp;#039;desktop app for your PC&amp;#039;&amp;#039;&amp;#039; that connects to the digital-voice networks you&amp;#039;d otherwise need a hotspot or several programs for. The AMBE vocoder can be a USB stick (&amp;#039;&amp;#039;&amp;#039;DV3000/ThumbDV&amp;#039;&amp;#039;&amp;#039;), a remote &amp;#039;&amp;#039;&amp;#039;AMBEserver&amp;#039;&amp;#039;&amp;#039;, or &amp;#039;&amp;#039;&amp;#039;software&amp;#039;&amp;#039;&amp;#039; (no extra hardware).&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Darthvader_hub.png|center|frameless|900px|alt=darthvader at the center of your PC, connecting out to DMR, D-STAR, YSF, NXDN, P25, M17 on one side and EchoLink, AllStar, SvxLink, APRS, DAPNET on the other, with a vocoder bar underneath.]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Do I need this? ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You want to operate digital voice from a computer&amp;#039;&amp;#039;&amp;#039; — key up and listen on DMR / YSF / D-STAR / NXDN / P25 / M17, link via EchoLink / AllStar / SvxLink, or send APRS / pager (POCSAG) messages — &amp;#039;&amp;#039;&amp;#039;without&amp;#039;&amp;#039;&amp;#039; building a separate hotspot for each.&lt;br /&gt;
* It runs on a normal &amp;#039;&amp;#039;&amp;#039;Windows 10/11&amp;#039;&amp;#039;&amp;#039; PC or a &amp;#039;&amp;#039;&amp;#039;Linux&amp;#039;&amp;#039;&amp;#039; box (Debian/Ubuntu/Raspberry Pi OS).&lt;br /&gt;
* You do &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; need to install Qt, codecs or anything else first — everything is bundled in the package.&lt;br /&gt;
&lt;br /&gt;
The only thing you might add is an &amp;#039;&amp;#039;&amp;#039;AMBE vocoder&amp;#039;&amp;#039;&amp;#039; for the modes that need one (see [[#Choosing a vocoder|below]]) — but there&amp;#039;s a software option, so you can start with nothing extra.&lt;br /&gt;
&lt;br /&gt;
== Get it ==&lt;br /&gt;
&lt;br /&gt;
Everything is published on the release page:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;https://git.sa7aux.se/bjorne/darthvader-dist/releases&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Grab the file for your system, then follow the matching section below.&lt;br /&gt;
&lt;br /&gt;
[[File:Darthvader_install.png|center|frameless|920px|alt=Two install paths: Windows via .msi or portable .zip; Debian/Linux via a single .deb or the apt repo.]]&lt;br /&gt;
&lt;br /&gt;
== Install — Windows 10 / 11 ==&lt;br /&gt;
&lt;br /&gt;
# Download &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;darthvader-&amp;lt;version&amp;gt;-win64.msi&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Double-click it&amp;#039;&amp;#039;&amp;#039; and follow the installer — you get a Start-menu and desktop shortcut.&lt;br /&gt;
# The first time you run it, Windows &amp;#039;&amp;#039;&amp;#039;SmartScreen&amp;#039;&amp;#039;&amp;#039; may show a blue warning (the build isn&amp;#039;t code-signed). Click &amp;#039;&amp;#039;&amp;#039;“More info” → “Run anyway.”&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ &amp;#039;&amp;#039;&amp;#039;It is not a virus.&amp;#039;&amp;#039;&amp;#039; Unsigned apps always trip SmartScreen, and a couple of antivirus engines flag unknown programs on reputation alone. If you want to be sure, verify the download against the published &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;SHA256SUMS&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (see [[#Verify your download|below]]).&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Prefer no installer?&amp;#039;&amp;#039;&amp;#039; Download the &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;…-win64.zip&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;, unzip it anywhere, and run &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;bin\darthvader.exe&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — fully portable, nothing written to the system.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rolling it out to many PCs (silent install):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;msiexec /i darthvader-&amp;lt;version&amp;gt;-win64.msi /qn&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install — Debian / Ubuntu / Raspberry Pi ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Option A — just install the one file:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install ./darthvader_&amp;lt;version&amp;gt;_amd64.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
apt pulls in any dependencies automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Option B — add the apt repo once, then get updates with normal &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt;:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -fsSL https://debrepo.sa7aux.se/setup.sh | sudo bash&lt;br /&gt;
sudo apt install darthvader&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Today the Linux package is built for &amp;#039;&amp;#039;&amp;#039;Debian 13 (trixie), x86-64&amp;#039;&amp;#039;&amp;#039;. &amp;#039;&amp;#039;&amp;#039;bookworm&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;arm64 (Raspberry Pi)&amp;#039;&amp;#039;&amp;#039; are planned — if there&amp;#039;s no package for your Pi yet, use a Windows or x86-64 Linux box for now.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verify your download ==&lt;br /&gt;
&lt;br /&gt;
Each release ships a &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;SHA256SUMS&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; file. To check a download is intact and genuine:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum -c SHA256SUMS      # Linux/macOS&lt;br /&gt;
# Windows (PowerShell):  Get-FileHash .\darthvader-&amp;lt;version&amp;gt;-win64.msi -Algorithm SHA256&amp;lt;/pre&amp;gt;&lt;br /&gt;
The printed hash must match the line in &amp;lt;code&amp;gt;SHA256SUMS&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Choosing a vocoder ==&lt;br /&gt;
&lt;br /&gt;
Several digital modes use the &amp;#039;&amp;#039;&amp;#039;AMBE+2&amp;#039;&amp;#039;&amp;#039; voice codec. darthvader gives you three ways to provide it — pick &amp;#039;&amp;#039;&amp;#039;one&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Vocoder !! What you need !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DV3000 / ThumbDV / DVstick&amp;#039;&amp;#039;&amp;#039; (USB stick) || plug it into a USB port || Appears as a serial/COM port (FTDI) and is auto-detected. Best quality, cheapest hardware route.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Remote AMBEserver&amp;#039;&amp;#039;&amp;#039; || a reachable AMBEserver over the network (UDP) || Use a shared/remote dongle — no local hardware.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Software vocoder&amp;#039;&amp;#039;&amp;#039; || nothing extra || Works with no chip. P25 has a full software IMBE; other modes can use the MD380-firmware software vocoder (see the note below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ The MD380-firmware software vocoder needs the files &amp;lt;code&amp;gt;md380fw.img&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;md380ram.img&amp;lt;/code&amp;gt; placed in &amp;lt;code&amp;gt;share/darthvader/vocoder_fw&amp;lt;/code&amp;gt;. Those are Tytera&amp;#039;s firmware and are &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; shipped with darthvader — you supply them. A DV3000 stick or a remote AMBEserver needs none of this.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== First run ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 A full first-launch walkthrough isn&amp;#039;t in the download package yet. In general: open &amp;#039;&amp;#039;&amp;#039;Settings&amp;#039;&amp;#039;&amp;#039;, add your account/server for each mode you use (DMR master such as BrandMeister/TGIF, a D-STAR/YSF/NXDN/P25/M17 reflector, EchoLink, AllStar nodes, SvxLink reflectors, APRS/DAPNET), pick your &amp;#039;&amp;#039;&amp;#039;vocoder&amp;#039;&amp;#039;&amp;#039;, set your &amp;#039;&amp;#039;&amp;#039;audio&amp;#039;&amp;#039;&amp;#039; devices, then connect. The status bar shows a coloured dot per mode, and the title bar / About shows the exact build.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For mode-specific details (talkgroups, reflector names, access rights) follow that network&amp;#039;s own documentation — see [[Hamradio]].&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
&lt;br /&gt;
darthvader has a per-direction audio chain — &amp;#039;&amp;#039;&amp;#039;preamp → 7-band EQ → LADSPA → AGC → limiter&amp;#039;&amp;#039;&amp;#039; — configurable per mode/peer, with bundled LADSPA plugins, so a chain you set up on Linux works unchanged on Windows. Start with the defaults; only touch it if others report your audio is too quiet, too loud, or uneven.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Fix&lt;br /&gt;
|-&lt;br /&gt;
| Windows &amp;#039;&amp;#039;&amp;#039;SmartScreen&amp;#039;&amp;#039;&amp;#039; / antivirus warning on first run || Expected for an unsigned app → &amp;#039;&amp;#039;&amp;#039;“More info” → “Run anyway.”&amp;#039;&amp;#039;&amp;#039; Verify with &amp;lt;code&amp;gt;SHA256SUMS&amp;lt;/code&amp;gt; if unsure.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DV3000 audio stutters&amp;#039;&amp;#039;&amp;#039; || Lower the stick&amp;#039;s &amp;#039;&amp;#039;&amp;#039;Latency Timer to 1–2 ms&amp;#039;&amp;#039;&amp;#039; (Windows: Device Manager → the COM port → Port Settings → Advanced).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Software vocoder won&amp;#039;t start&amp;#039;&amp;#039;&amp;#039; || The MD380 firmware images aren&amp;#039;t present — add &amp;lt;code&amp;gt;md380fw.img&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;md380ram.img&amp;lt;/code&amp;gt;, or use a DV3000 stick / AMBEserver instead.&lt;br /&gt;
|-&lt;br /&gt;
| No &amp;#039;&amp;#039;&amp;#039;.deb&amp;#039;&amp;#039;&amp;#039; for my Raspberry Pi || arm64 builds are &amp;quot;to follow&amp;quot; — not available yet. Use x86-64 Linux or Windows meanwhile.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Windows:&amp;#039;&amp;#039;&amp;#039; download the newer &amp;lt;code&amp;gt;.msi&amp;lt;/code&amp;gt; and install over the top (or replace the portable folder).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Linux (apt repo):&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Linux (one &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt;):&amp;#039;&amp;#039;&amp;#039; download the new &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sudo apt install ./…&amp;lt;/code&amp;gt; again.&lt;br /&gt;
&lt;br /&gt;
The version is shown as &amp;lt;code&amp;gt;&amp;lt;number&amp;gt;-&amp;lt;git-hash&amp;gt;&amp;lt;/code&amp;gt; in the title bar and About dialog.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Hamradio]] — the digital-voice modes darthvader speaks, each in depth.&lt;br /&gt;
* Author: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. GNU GPL v2 or later.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:10:02 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/darthvader/en</comments>
		</item>
		<item>
			<title>Hamradio/reflector dashboard</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/reflector_dashboard</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/reflector_dashboard</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/reflector_dashboard&amp;amp;oldid=148&quot; title=&quot;Hamradio/reflector dashboard&quot;&gt;Hamradio/reflector dashboard&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:09:59 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/reflector_dashboard</comments>
		</item>
		<item>
			<title>Hamradio/svxspot dashboard</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/svxspot_dashboard&amp;diff=147&amp;oldid=142</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/svxspot_dashboard&amp;diff=147&amp;oldid=142</guid>
			<description>&lt;p&gt;Marked this version for translation&lt;/p&gt;
&lt;a href=&quot;https://wiki.sa7aux.se/index.php?title=Hamradio/svxspot_dashboard&amp;amp;diff=147&amp;amp;oldid=142&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:09:58 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxspot_dashboard</comments>
		</item>
		<item>
			<title>Hamradio/reflector dashboard</title>
			<link>https://wiki.sa7aux.se/index.php?title=Hamradio/reflector_dashboard&amp;diff=148&amp;oldid=143</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=Hamradio/reflector_dashboard&amp;diff=148&amp;oldid=143</guid>
			<description>&lt;p&gt;Marked this version for translation&lt;/p&gt;
&lt;a href=&quot;https://wiki.sa7aux.se/index.php?title=Hamradio/reflector_dashboard&amp;amp;diff=148&amp;amp;oldid=143&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Sun, 18 Oct 2026 15:09:58 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/reflector_dashboard</comments>
		</item>
		<item>
			<title>Hamradio/svxspot dashboard</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/svxspot_dashboard</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/svxspot_dashboard</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/svxspot_dashboard&amp;amp;oldid=147&quot; title=&quot;Hamradio/svxspot dashboard&quot;&gt;Hamradio/svxspot dashboard&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:09:58 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/svxspot_dashboard</comments>
		</item>
		<item>
			<title>Hamradio/darthvader</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/darthvader</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/darthvader</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/darthvader&amp;amp;oldid=146&quot; title=&quot;Hamradio/darthvader&quot;&gt;Hamradio/darthvader&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:09:57 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/darthvader</comments>
		</item>
		<item>
			<title>Hamradio/chan svx sat</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/chan_svx_sat</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/chan_svx_sat</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/chan_svx_sat&amp;amp;oldid=145&quot; title=&quot;Hamradio/chan svx sat&quot;&gt;Hamradio/chan svx sat&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:09:57 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/chan_svx_sat</comments>
		</item>
		<item>
			<title>Hamradio/chan svx</title>
			<link>https://wiki.sa7aux.se/wiki/Hamradio/chan_svx</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/Hamradio/chan_svx</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=Hamradio/chan_svx&amp;amp;oldid=144&quot; title=&quot;Hamradio/chan svx&quot;&gt;Hamradio/chan svx&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 15:09:56 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/Talk:Hamradio/chan_svx</comments>
		</item>
		<item>
			<title>User:Sa7aux/svxspot dashboard</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=User:Sa7aux/svxspot_dashboard&amp;amp;oldid=56&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/svxspot dashboard (page does not exist)&quot;&gt;User:Sa7aux/svxspot dashboard&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 14:48:28 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/svxspot_dashboard</comments>
		</item>
		<item>
			<title>User:Sa7aux/svxspot dashboard/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=User:Sa7aux/svxspot_dashboard/en&amp;diff=97&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=User:Sa7aux/svxspot_dashboard/en&amp;diff=97&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:SvxSpot Dashboard — control your SvxLink node from a browser}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;A beginner&amp;#039;s guide to &amp;#039;&amp;#039;&amp;#039;SvxSpot Dashboard&amp;#039;&amp;#039;&amp;#039;: a small web page you install on your SvxLink node (a Raspberry Pi hotspot or an FM repeater) that shows what the node is doing and lets you change talkgroup, edit the config, and more — from a phone or PC. One &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; sets up the whole web stack for you.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 &amp;#039;&amp;#039;&amp;#039;In one sentence:&amp;#039;&amp;#039;&amp;#039; install one package on your node and you get a web page at &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;http://svxspot.local/&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; that shows live status / last-heard / current talkgroup and gives you one-click TG switching, a DTMF keypad, and editors for &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;, EchoLink, RF and audio — plus Wi-Fi setup and reboot/shutdown buttons.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Svxspot_dashboard_arch.png|center|frameless|920px|alt=Browser talks HTTP to nginx on the node, which runs php-fpm and the PHP dashboard; it reads svxlink.conf and the log, and writes TG/DTMF to the SvxLink control pipe. An optional MQTT agent lets an external portal switch TG too.]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Do I need this? ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You run a SvxLink node&amp;#039;&amp;#039;&amp;#039; — a &amp;quot;SvxSpot&amp;quot; hotspot or an FM repeater — and you want to &amp;#039;&amp;#039;&amp;#039;see and control it from a browser&amp;#039;&amp;#039;&amp;#039; instead of SSH and a text editor.&lt;br /&gt;
* It installs on the &amp;#039;&amp;#039;&amp;#039;same box as SvxLink&amp;#039;&amp;#039;&amp;#039; (a Raspberry Pi or any Debian machine).&lt;br /&gt;
* Optional extra: let an &amp;#039;&amp;#039;&amp;#039;external portal switch your talkgroup over MQTT&amp;#039;&amp;#039;&amp;#039; (handy for a club&amp;#039;s control panel). Off by default — a plain LAN dashboard needs none of it.&lt;br /&gt;
&lt;br /&gt;
== What you need first ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 The dashboard &amp;#039;&amp;#039;&amp;#039;controls&amp;#039;&amp;#039;&amp;#039; SvxLink — it doesn&amp;#039;t replace it. SvxLink must already be installed and running on the node.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A SvxLink node&amp;#039;&amp;#039;&amp;#039; running on Debian 12/13 or Raspberry Pi OS (bookworm/trixie), on a Pi 3/4/5, Pi Zero 2 W, or any Debian box.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SvxLink installed and running&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; (package &amp;lt;code&amp;gt;svxlink-server&amp;lt;/code&amp;gt;).&lt;br /&gt;
* For one-click &amp;#039;&amp;#039;&amp;#039;talkgroup / DTMF control&amp;#039;&amp;#039;&amp;#039; from the web, this line in your logic section of &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;DTMF_CTRL_PTY=/var/lib/svxlink/dtmf_svx&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;(Optional, MQTT only)&amp;#039;&amp;#039;&amp;#039; broker host, port (usually 8883) and a username/password — only if you want remote portal control.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;You do not&amp;#039;&amp;#039;&amp;#039; install nginx or PHP yourself — the package pulls them in and configures them for you.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Easiest — the one-line installer&amp;#039;&amp;#039;&amp;#039; (downloads the newest release and installs it; apt fetches nginx/PHP automatically):&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -fsSL https://git.sa7aux.se/bjorne/svxspot-dashboard/raw/branch/main/install.sh | sudo bash&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Or install a &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; you copied over:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install ./svxspot-dashboard_&amp;lt;version&amp;gt;_all.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Use whatever version the release page shows in the filename (e.g. &amp;lt;code&amp;gt;svxspot-dashboard_1.0.1_all.deb&amp;lt;/code&amp;gt;). The package is architecture-independent (&amp;lt;code&amp;gt;_all&amp;lt;/code&amp;gt;) — the same file works on a Pi and on x86-64.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What the installer asks you ===&lt;br /&gt;
&lt;br /&gt;
A normal install pops up a few questions (debconf). Sensible defaults are offered — you can just press Enter:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Question !! What to enter&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Node callsign&amp;#039;&amp;#039;&amp;#039; || Auto-detected from &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt;. Accept it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Dashboard admin user&amp;#039;&amp;#039;&amp;#039; || Login name for the control pages. Default &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Admin password&amp;#039;&amp;#039;&amp;#039; || Type one, or leave &amp;#039;&amp;#039;&amp;#039;empty&amp;#039;&amp;#039;&amp;#039; to have a random 16-character password generated and &amp;#039;&amp;#039;&amp;#039;printed once&amp;#039;&amp;#039;&amp;#039; at the end — write it down.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Enable MQTT remote control?&amp;#039;&amp;#039;&amp;#039; || Default &amp;#039;&amp;#039;&amp;#039;no&amp;#039;&amp;#039;&amp;#039;. Say yes only if a portal will control this node; then it asks for broker host / username / password.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== What it sets up for you ===&lt;br /&gt;
&lt;br /&gt;
The installer does all the plumbing (and it&amp;#039;s safe to re-run with &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
* installs and configures &amp;#039;&amp;#039;&amp;#039;nginx&amp;#039;&amp;#039;&amp;#039; (a site on port 80) and &amp;#039;&amp;#039;&amp;#039;php-fpm&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* creates the admin login (bcrypt &amp;lt;code&amp;gt;htpasswd&amp;lt;/code&amp;gt;);&lt;br /&gt;
* installs tightly-scoped &amp;#039;&amp;#039;&amp;#039;sudo&amp;#039;&amp;#039;&amp;#039; rules so the web user can save config and restart SvxLink — and nothing else;&lt;br /&gt;
* adds the web user to the &amp;lt;code&amp;gt;audio, tty, dialout, svxlink&amp;lt;/code&amp;gt; groups;&lt;br /&gt;
* stages the optional &amp;#039;&amp;#039;&amp;#039;MQTT agent&amp;#039;&amp;#039;&amp;#039; (a systemd service) — enabled only if you turned MQTT on.&lt;br /&gt;
&lt;br /&gt;
At the end it prints a banner with your &amp;#039;&amp;#039;&amp;#039;dashboard URL, admin user, and (if generated) the password&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Open it ==&lt;br /&gt;
&lt;br /&gt;
* In a browser on the same network go to &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;http://svxspot.local/&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (or &amp;lt;code&amp;gt;http://&amp;lt;node-ip&amp;gt;/&amp;lt;/code&amp;gt; if the &amp;lt;code&amp;gt;.local&amp;lt;/code&amp;gt; name doesn&amp;#039;t resolve).&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;status page needs no login.&amp;#039;&amp;#039;&amp;#039; The &amp;#039;&amp;#039;&amp;#039;control pages&amp;#039;&amp;#039;&amp;#039; (TG, config editor, power, Wi-Fi, …) ask for the admin user/password you set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e0b33a; background:#2a2208; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;⚠ If you flashed the ready-made &amp;#039;&amp;#039;&amp;#039;SvxSpot SD-card image&amp;#039;&amp;#039;&amp;#039;, the factory logins are SSH &amp;lt;code&amp;gt;svxspot&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;raspberry&amp;lt;/code&amp;gt; and dashboard &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;svxspot&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;Change both immediately&amp;#039;&amp;#039;&amp;#039; (see [[#Change the admin password|below]]).&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What&amp;#039;s on the dashboard ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Page !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Start / Status&amp;#039;&amp;#039;&amp;#039; || Live status, last-heard stations, current talkgroup, quick-button keypad. (No login.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TG&amp;#039;&amp;#039;&amp;#039; + &amp;#039;&amp;#039;&amp;#039;DTMF keypad&amp;#039;&amp;#039;&amp;#039; || Switch talkgroup with one tap; send raw DTMF.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Config&amp;#039;&amp;#039;&amp;#039; || Edit &amp;lt;code&amp;gt;svxlink.conf&amp;lt;/code&amp;gt; in the browser with help text; every save makes a timestamped backup and restarts SvxLink.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;EchoLink&amp;#039;&amp;#039;&amp;#039; · &amp;#039;&amp;#039;&amp;#039;RF&amp;#039;&amp;#039;&amp;#039; (SA818) · &amp;#039;&amp;#039;&amp;#039;Audio&amp;#039;&amp;#039;&amp;#039; || Editors for EchoLink, radio-module frequency/squelch, and audio levels.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Wi-Fi / Network&amp;#039;&amp;#039;&amp;#039; || Join a Wi-Fi network / set networking.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Power&amp;#039;&amp;#039;&amp;#039; || Reboot, shut down, or restart SvxLink.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Remote Control (MQTT)&amp;#039;&amp;#039;&amp;#039; || Turn the optional MQTT agent on/off and set the broker.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Node info&amp;#039;&amp;#039;&amp;#039; · &amp;#039;&amp;#039;&amp;#039;Map&amp;#039;&amp;#039;&amp;#039; · &amp;#039;&amp;#039;&amp;#039;Log&amp;#039;&amp;#039;&amp;#039; || Node metadata, map, and the SvxLink log.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How it controls SvxLink (plain version) ==&lt;br /&gt;
&lt;br /&gt;
You don&amp;#039;t need to know this to use it, but it helps when troubleshooting: the dashboard &amp;#039;&amp;#039;&amp;#039;reads&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;/etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log/svxlink&amp;lt;/code&amp;gt; to show status, and &amp;#039;&amp;#039;&amp;#039;controls&amp;#039;&amp;#039;&amp;#039; the node by writing DTMF strings (e.g. &amp;lt;code&amp;gt;91&amp;lt;tg&amp;gt;#&amp;lt;/code&amp;gt; to switch TG) to the control pipe &amp;lt;code&amp;gt;/var/lib/svxlink/dtmf_svx&amp;lt;/code&amp;gt;. Config edits are saved and SvxLink is restarted through the narrow &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; rules. That&amp;#039;s it — no database.&lt;br /&gt;
&lt;br /&gt;
== Optional: remote control over MQTT ==&lt;br /&gt;
&lt;br /&gt;
If you enabled MQTT, a small systemd agent (&amp;lt;code&amp;gt;svxnode-mqtt&amp;lt;/code&amp;gt;) makes an &amp;#039;&amp;#039;&amp;#039;outbound TLS connection&amp;#039;&amp;#039;&amp;#039; to your broker on port &amp;#039;&amp;#039;&amp;#039;8883&amp;#039;&amp;#039;&amp;#039; (nothing to open in your router). An external portal publishes a talkgroup command, and the agent writes the same &amp;lt;code&amp;gt;91&amp;lt;tg&amp;gt;#&amp;lt;/code&amp;gt; to the DTMF pipe — exactly what the web TG button does. Enable/disable it from the dashboard&amp;#039;s &amp;#039;&amp;#039;&amp;#039;Remote Control&amp;#039;&amp;#039;&amp;#039; page, or re-run &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Change the admin password ==&lt;br /&gt;
&lt;br /&gt;
No reconfigure needed — nginx re-reads the file on every request:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo htpasswd -B /etc/nginx/svxspot-dashboard.htpasswd admin&amp;lt;/pre&amp;gt;&lt;br /&gt;
(Add &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; to start a fresh file with only that user.)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symptom !! Check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Page won&amp;#039;t load&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;systemctl status nginx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sudo nginx -t&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ls /etc/nginx/sites-enabled/&amp;lt;/code&amp;gt; (should list svxspot-dashboard). Still broken → &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;502 Bad Gateway&amp;#039;&amp;#039;&amp;#039; || php-fpm is down → &amp;lt;code&amp;gt;sudo systemctl restart php*-fpm&amp;lt;/code&amp;gt; (use your actual version, e.g. &amp;lt;code&amp;gt;php8.4-fpm&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Password refused&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;sudo htpasswd -cB /etc/nginx/svxspot-dashboard.htpasswd admin&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; recreates it).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Status page empty / no callsign&amp;#039;&amp;#039;&amp;#039; || SvxLink isn&amp;#039;t running or has no config → &amp;lt;code&amp;gt;systemctl status svxlink&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tail -n 30 /var/log/svxlink&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TG buttons do nothing&amp;#039;&amp;#039;&amp;#039; || Check &amp;lt;code&amp;gt;grep DTMF_CTRL_PTY /etc/svxlink/svxlink.conf&amp;lt;/code&amp;gt; and that &amp;lt;code&amp;gt;/var/lib/svxlink/dtmf_svx&amp;lt;/code&amp;gt; exists. Then &amp;lt;code&amp;gt;sudo dpkg-reconfigure svxspot-dashboard&amp;lt;/code&amp;gt; and restart php-fpm.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;“Save” permission error&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;sudo visudo -cf /etc/sudoers.d/svxspot-dashboard&amp;lt;/code&amp;gt; must say &amp;quot;parsed OK&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;MQTT stays inactive&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;journalctl -u svxnode-mqtt -n 30 --no-pager&amp;lt;/code&amp;gt; — usually wrong password, wrong host, or port 8883 firewalled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #4da3ff; background:#13233a; padding:10px 16px; margin:14px 0; border-radius:6px;&amp;quot;&amp;gt;💡 Your installed PHP version isn&amp;#039;t fixed — examples here use &amp;lt;code&amp;gt;php8.4-fpm&amp;lt;/code&amp;gt; but your box might run &amp;lt;code&amp;gt;php8.2-fpm&amp;lt;/code&amp;gt;. Substitute your own: &amp;lt;code&amp;gt;ls /run/php/php*-fpm.sock&amp;lt;/code&amp;gt;.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removing / starting over ==&lt;br /&gt;
&lt;br /&gt;
* Keep your settings: &amp;lt;code&amp;gt;sudo apt remove svxspot-dashboard&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Wipe everything (incl. MQTT credentials): &amp;lt;code&amp;gt;sudo apt purge svxspot-dashboard&amp;lt;/code&amp;gt;, then reinstall.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Hamradio]] — SvxLink and the rest of the digital-voice how-tos.&lt;br /&gt;
* Author: &amp;#039;&amp;#039;&amp;#039;SA7AUX&amp;#039;&amp;#039;&amp;#039; &amp;amp;lt;bjorne@sa7aux.se&amp;amp;gt;. GPL-3.0-or-later. Based on SVXLink-Dashboard-V2 / Guru-RF.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 14:38:53 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/svxspot_dashboard/en</comments>
		</item>
		<item>
			<title>User:Sa7aux/svxspot dashboard</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=User:Sa7aux/svxspot_dashboard&amp;amp;oldid=56&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/svxspot dashboard (page does not exist)&quot;&gt;User:Sa7aux/svxspot dashboard&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 14:35:54 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/svxspot_dashboard</comments>
		</item>
		<item>
			<title>User:Sa7aux/svxspot dashboard/sv</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard/sv</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/svxspot_dashboard/sv</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/svxspot_dashboard/sv&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/svxspot dashboard/sv (page does not exist)&quot;&gt;User:Sa7aux/svxspot dashboard/sv&lt;/a&gt; replaced by Translate bilingual&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 14:35:53 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/svxspot_dashboard/sv</comments>
		</item>
		<item>
			<title>User:Sa7aux/ltest/sv</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/ltest/sv</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/ltest/sv</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/ltest/sv&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/ltest/sv (page does not exist)&quot;&gt;User:Sa7aux/ltest/sv&lt;/a&gt; cleanup translate test&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 14:34:34 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/ltest/sv</comments>
		</item>
		<item>
			<title>User:Sa7aux/ltest</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/ltest</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/ltest</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Delete_page_script&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Delete page script (page does not exist)&quot;&gt;&lt;bdi&gt;Delete page script&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=User:Sa7aux/ltest&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/ltest (page does not exist)&quot;&gt;User:Sa7aux/ltest&lt;/a&gt; cleanup translate test&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 14:34:33 GMT</pubDate>
			<dc:creator>Delete page script</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/ltest</comments>
		</item>
		<item>
			<title>User:Sa7aux/ltest/en</title>
			<link>https://wiki.sa7aux.se/index.php?title=User:Sa7aux/ltest/en&amp;diff=53&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=User:Sa7aux/ltest/en&amp;diff=53&amp;oldid=0</guid>
			<description>&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
Hello, this is a bilingual test page.&lt;br /&gt;
&lt;br /&gt;
It has two short paragraphs so we can see the language switcher.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ham radio]]&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 14:33:21 GMT</pubDate>
			<dc:creator>FuzzyBot</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/ltest/en</comments>
		</item>
		<item>
			<title>User:Sa7aux/ltest</title>
			<link>https://wiki.sa7aux.se/wiki/User:Sa7aux/ltest</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/wiki/User:Sa7aux/ltest</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; marked &lt;a href=&quot;/index.php?title=User:Sa7aux/ltest&amp;amp;oldid=46&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Sa7aux/ltest (page does not exist)&quot;&gt;User:Sa7aux/ltest&lt;/a&gt; for translation&lt;/p&gt;
</description>
			<pubDate>Sun, 18 Oct 2026 14:32:32 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/User_talk:Sa7aux/ltest</comments>
		</item>
		<item>
			<title>File:Darthvader install.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Darthvader_install.png&amp;diff=38&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Darthvader_install.png&amp;diff=38&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Darthvader_install.png&quot; title=&quot;File:Darthvader install.png&quot;&gt;File:Darthvader install.png&lt;/a&gt; == Summary == How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 14:10:28 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Darthvader_install.png</comments>
		</item>
		<item>
			<title>File:Radar arch.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Radar_arch.png&amp;diff=37&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Radar_arch.png&amp;diff=37&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Radar_arch.png&quot; title=&quot;File:Radar arch.png&quot;&gt;File:Radar arch.png&lt;/a&gt; == Summary == How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 14:10:28 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Radar_arch.png</comments>
		</item>
		<item>
			<title>File:Darthvader hub.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Darthvader_hub.png&amp;diff=36&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Darthvader_hub.png&amp;diff=36&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Darthvader_hub.png&quot; title=&quot;File:Darthvader hub.png&quot;&gt;File:Darthvader hub.png&lt;/a&gt; == Summary == How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 14:10:28 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Darthvader_hub.png</comments>
		</item>
		<item>
			<title>File:Svxspot dashboard arch.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Svxspot_dashboard_arch.png&amp;diff=35&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Svxspot_dashboard_arch.png&amp;diff=35&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Svxspot_dashboard_arch.png&quot; title=&quot;File:Svxspot dashboard arch.png&quot;&gt;File:Svxspot dashboard arch.png&lt;/a&gt; == Summary == How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
How-to diagrams: darthvader, svxspot, R.A.D.A.R.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 14:10:28 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Svxspot_dashboard_arch.png</comments>
		</item>
		<item>
			<title>File:Chan svx tg control.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Chan_svx_tg_control.png&amp;diff=32&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Chan_svx_tg_control.png&amp;diff=32&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Chan_svx_tg_control.png&quot; title=&quot;File:Chan svx tg control.png&quot;&gt;File:Chan svx tg control.png&lt;/a&gt; == Summary == chan_svx / chan_svx_sat how-to diagrams&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
chan_svx / chan_svx_sat how-to diagrams&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 13:15:14 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Chan_svx_tg_control.png</comments>
		</item>
		<item>
			<title>File:Chan svx sat topology.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Chan_svx_sat_topology.png&amp;diff=31&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Chan_svx_sat_topology.png&amp;diff=31&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded a new version of &lt;a href=&quot;/wiki/File:Chan_svx_sat_topology.png&quot; title=&quot;File:Chan svx sat topology.png&quot;&gt;File:Chan svx sat topology.png&lt;/a&gt; == Summary == chan_svx / chan_svx_sat how-to diagrams&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
chan_svx_sat how-to diagrams (SA7AUX)&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 13:15:14 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Chan_svx_sat_topology.png</comments>
		</item>
		<item>
			<title>File:Chan svx topology.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Chan_svx_topology.png&amp;diff=30&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Chan_svx_topology.png&amp;diff=30&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Chan_svx_topology.png&quot; title=&quot;File:Chan svx topology.png&quot;&gt;File:Chan svx topology.png&lt;/a&gt; == Summary == chan_svx / chan_svx_sat how-to diagrams&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
chan_svx / chan_svx_sat how-to diagrams&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 13:15:14 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Chan_svx_topology.png</comments>
		</item>
		<item>
			<title>File:Chan svx architecture.png</title>
			<link>https://wiki.sa7aux.se/index.php?title=File:Chan_svx_architecture.png&amp;diff=29&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.sa7aux.se/index.php?title=File:Chan_svx_architecture.png&amp;diff=29&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Sa7aux&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Sa7aux (page does not exist)&quot;&gt;&lt;bdi&gt;Sa7aux&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/wiki/File:Chan_svx_architecture.png&quot; title=&quot;File:Chan svx architecture.png&quot;&gt;File:Chan svx architecture.png&lt;/a&gt; == Summary == chan_svx / chan_svx_sat how-to diagrams&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
chan_svx / chan_svx_sat how-to diagrams&lt;/div&gt;</description>
			<pubDate>Sun, 18 Oct 2026 13:15:14 GMT</pubDate>
			<dc:creator>Sa7aux</dc:creator>
			<comments>https://wiki.sa7aux.se/wiki/File_talk:Chan_svx_architecture.png</comments>
		</item>
</channel></rss>