Dashboard

<%= onlineUsers %>

Online users

<%= memoryUsage %>

Memory usage

<%= processUptime %>

Uptime

Current users

<% if (connectedUsers.length > 0) { %> <% connectedUsers.forEach(user => { %> <% }); %> <% } else { %> <% } %>
IP Address Location Online since
<%= user.ip.replace('::ffff:', '') %> <%= user.location %> <%= user.time %> Kick
No users online

Quick settings

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Public Tuner', id: 'publicTuner'}) %> <%- include('_components', {component: 'checkbox', cssClass: '', label: 'Admin lock', id: 'lockToAdmin'}) %>
<%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '', label: 'Tune password', id: 'password-tunePass', password: true}) %> <%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '', label: 'Admin password', id: 'password-adminPass', password: true}) %>

Console

<% if (consoleOutput && consoleOutput.length > 0) { %>
<% consoleOutput.forEach(function(log) { %>
<%= log %>
<% }); %>
<% } else { %>

No console output available.

<% } %>

Audio settings

Device

Your audio device port.
This is where your tuner is plugged in.

<%- include('_components', { component: 'dropdown', id: 'audioList', inputId: 'audio-audioDevice', label: 'Audio device', cssClass: '', placeholder: 'Choose your audio device', options: [ ...videoDevices.map(device => ({ value: device.name, label: `${device.name}` })), ...audioDevices.map(device => ({ value: device.name, label: `${device.name}` })) ] }) %>

Channels

Audio channel count.
Choose between Mono / Stereo.

<%- include('_components', { component: 'dropdown', id: 'audio-channels-dropdown', inputId: 'audio-audioChannels', label: 'Audio channels', cssClass: '', placeholder: 'Stereo', options: [ { value: '2', label: 'Stereo' }, { value: '1', label: 'Mono' } ] }) %>

Bitrate

The bitrate of the mp3 audio.
Minimum: 64 Kbps • Maximum: 320 Kbps

<%- include('_components', { component: 'dropdown', id: 'audio-quality-dropdown', inputId: 'audio-audioBitrate', label: 'Audio quality', cssClass: '', placeholder: '128kbps (standard)', options: [ { value: '64k', label: '64kbps (lowest quality)' }, { value: '96k', label: '96kbps (low quality)' }, { value: '128k', label: '128kbps (standard)' }, { value: '192k', label: '192kbps (high quality)' }, { value: '256k', label: '256kbps (very high quality)' }, { value: '320k', label: '320kbps (ultra quality)' } ] }) %>

Volume

This option will boost the audio volume globally, recommended for the Headless TEF.

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Audio Boost', id: 'audio-audioBoost'}) %>

Experimental

If you use an USB audio card on Linux, enabling this option might fix your audio issues.

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'ALSA Software mode', id: 'audio-softwareMode'}) %>

Webserver settings

Connection

Leave the IP at 0.0.0.0 unless you explicitly know you have to change it.
Don't enter your public IP here.

<%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '0.0.0.0', label: 'Webserver IP', id: 'webserver-webserverIp'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '8080', label: 'Webserver port', id: 'webserver-webserverPort'}) %>

Design

Background image

<%- include('_components', {component: 'text', cssClass: 'br-15', placeholder: 'Direct image link', label: 'Image link', id: 'webserver-bgImage'}) %>

Themes

<%- include('_components', { component: 'dropdown', id: 'server-theme-selector', inputId: 'webserver-defaultTheme', label: 'Default server theme', cssClass: '', placeholder: 'Default', options: [ { value: 'theme1', label: 'Mint' }, { value: 'theme2', label: 'Cappuccino' }, { value: 'theme3', label: 'Nature' }, { value: 'theme4', label: 'Ocean' }, { value: 'theme5', label: 'Terminal' }, { value: 'theme6', label: 'Nightlife' }, { value: 'theme7', label: 'Blurple' }, { value: 'theme8', label: 'Construction' }, { value: 'theme9', label: 'Amoled' }, ] }) %>

Antennas

<%- include('_components', {component: 'checkbox', cssClass: 'bottom-20', label: 'Antenna switch', id: 'antennas-enabled'}) %>
<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Antenna 1', id: 'antennas-ant1-enabled'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: 'Ant A', label: 'Antenna 1 name', id: 'antennas-ant1-name'}) %>
<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Antenna 2', id: 'antennas-ant2-enabled'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: 'Ant B', label: 'Antenna 2 name', id: 'antennas-ant2-name'}) %>
<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Antenna 3', id: 'antennas-ant3-enabled'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: 'Ant C', label: 'Antenna 3 name', id: 'antennas-ant3-name'}) %>
<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Antenna 4', id: 'antennas-ant4-enabled'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: 'Ant D', label: 'Antenna 4 name', id: 'antennas-ant4-name'}) %>

Tuning options

If you want to limit which frequencies the users can tune to,
you can set the lower and upper limit here.
Enter frequencies in MHz.

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Limit tuning', id: 'webserver-tuningLimit'}) %>
<%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '0', label: 'Lower limit', id: 'webserver-tuningLowerLimit'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '108', label: 'Upper limit', id: 'webserver-tuningUpperLimit'}) %>

Presets

You can set up to 4 presets.
These presets are accessible with the F1-F4 buttons.
Enter frequencies in MHz.

<%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '87.5', label: 'Preset 1', id: 'webserver-presets-1'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '87.5', label: 'Preset 2', id: 'webserver-presets-2'}) %>
<%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '87.5', label: 'Preset 3', id: 'webserver-presets-3'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '87.5', label: 'Preset 4', id: 'webserver-presets-4'}) %>

RDS Mode

You can switch between American (RBDS) / Global (RDS) mode here.

<%- include('_components', {component: 'checkbox', cssClass: 'bottom-20', iconClass: '', label: 'American RDS mode (RBDS)', id: 'webserver-rdsMode'}) %>

Tuner settings

Device type

<%- include('_components', { component: 'dropdown', id: 'device-selector', inputId: 'device', label: 'Device', cssClass: '', placeholder: 'TEF668x / TEA685x', options: [ { value: 'tef', label: 'TEF668x / TEA685x' }, { value: 'xdr', label: 'XDR (F1HD / S10HDiP)' }, { value: 'sdr', label: 'SDR (RTL-SDR / AirSpy)' }, { value: 'other', label: 'Other' } ] }) %>

Connection type

If you want to choose the COM port directly, choose "Direct".
If you use xdrd or your receiver is connected via Wi-Fi, choose TCP/IP.

Device / Server

Choose your desired COM port
 

<%- include('_components', { component: 'dropdown', id: 'deviceList', inputId: 'xdrd-comPort', label: 'USB Device', cssClass: '', placeholder: 'Choose your USB device', options: serialPorts.map(serialPort => ({ value: serialPort.path, label: `${serialPort.path} - ${serialPort.friendlyName}` })) }) %>

If you are connecting your tuner wirelessly, enter the tuner IP.
If you use xdrd, use 127.0.0.1 as your IP.

<%- include('_components', {component: 'text', cssClass: 'w-150 br-15', label: 'xdrd IP address', id: 'xdrd-xdrdIp'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100 br-15', label: 'xdrd port', id: 'xdrd-xdrdPort'}) %> <%- include('_components', {component: 'text', cssClass: 'w-150 br-15', label: 'xdrd password', id: 'xdrd-xdrdPassword', password: true}) %>

Startup

Startup volume


Default frequency

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Default frequency for first client', id: 'enableDefaultFreq'}) %>
<%- include('_components', {component: 'text', cssClass: 'w-100', placeholder: '87.5', label: 'Default frequency', id: 'defaultFreq'}) %>

Miscellaneous

Bandwidth switch

Bandwidth switch allows the user to set the bandwidth manually.

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Bandwidth switch', id: 'bwSwitch'}) %>

Automatic shutdown

Toggling this option will put the tuner to sleep when no clients are connected.

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Auto-shutdown', id: 'autoShutdown'}) %>

Plugins

Plugin list

Any compatible .js plugin, which is in the "plugins" folder, will be listed here.
Click on the individual plugins to enable/disable them.



Download new plugins here!

Plugin settings

No plugin settings are available.

Identification & Map

Basic info

Set your tuner name and description here.
This info will be visible to anyone who tunes in.


Online map

If your location information is filled,
you can add your tuner to a public list.

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Broadcast to map', id: 'identification-broadcastTuner'}) %>
<%- include('_components', {component: 'text', cssClass: 'br-15', placeholder: 'Your e-mail or Discord...', label: 'Owner contact', id: 'identification-contact'}) %> <%- include('_components', {component: 'text', cssClass: 'br-15', label: 'Broadcast address (if using a proxy)', id: 'identification-proxyIp'}) %>

Check your tuner at servers.fmdx.org.

By activating the Broadcast to map option,
you agree to the Terms of Service.

Location

Location info is useful for automatic identification of stations using RDS.

<%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '', label: 'Latitude', id: 'identification-lat'}) %> <%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '', label: 'Longitude', id: 'identification-lon'}) %>

User management

Chat options

<%- include('_components', {component: 'checkbox', cssClass: '', label: 'Chat', id: 'webserver-chatEnabled'}) %>

Banlist

If you have users that don't behave on your server, you can choose to ban them by their IP address.
You can see their IP address by hovering over their nickname. One IP per row.

<% if (banlist.length > 0) { %> <% banlist.forEach(bannedUser => { %> <% if (Array.isArray(bannedUser)) { %> <% } else { %> <% } %> <% }); %> <% } else { %> <% } %>
IP Address Location Ban date Reason
<%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: 'IP address', label: '', id: 'banlist-add-ip'}) %> <%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: 'Ban reason (note)', label: '', id: 'banlist-add-reason'}) %>
<%= bannedUser[0] %> <%= bannedUser[1] %> <%= new Date(parseInt(bannedUser[2])).toLocaleString() %> <%= bannedUser[3] %> <%= bannedUser %> Unknown Unknown Unknown
The banlist is empty.

Extras

FMLIST Integration

FMLIST integration allows you to get potential DXes logged on the FMLIST Visual Logbook.
Your server also needs to have a valid UUID, which is obtained by registering on maps in the Identification & Map tab.

<%- include('_components', {component: 'checkbox', cssClass: 'm-right-10', label: 'FMLIST integration', id: 'extras-fmlistIntegration'}) %>

You can also fill in your OMID from FMLIST.org, if you want the logs to be saved to your account.

<%- include('_components', {component: 'text', cssClass: 'w-100 br-15', placeholder: '', label: 'OMID', id: 'extras-fmlistOmid'}) %>

Tunnel

When you become an FMDX.org supporter, you can host your webserver without the need of a public IP address & port forwarding.
When you become a supporter, you can message the Founders on Discord for your login details.

<%- include('_components', {component: 'checkbox', cssClass: 'm-right-10', label: 'Enable tunnel', id: 'tunnel-enabled'}) %>
<%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '', label: 'Subdomain name', id: 'tunnel-subdomain'}) %>.fmtuner.org
<%- include('_components', {component: 'text', cssClass: 'w-150 br-15', placeholder: '', label: 'Username', id: 'tunnel-username'}) %> <%- include('_components', {component: 'text', cssClass: 'w-250 br-15', password: true, placeholder: '', label: 'Token', id: 'tunnel-token'}) %>

Enabling low latency mode may provide better experience, however it will also use more bandwidth.

<%- include('_components', {component: 'checkbox', cssClass: 'm-right-10', label: 'Low latency mode', id: 'tunnel-lowLatencyMode'}) %>
<% enabledPlugins?.forEach(function(plugin) { %> <% }); %>