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 %> <%= 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', placeholder: '', label: 'Tune password', id: 'password-tunePass', password: true}) %> <%- include('_components', {component: 'text', cssClass: 'w-150', 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)' } ] }) %>

Miscellaneous

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', placeholder: '0.0.0.0', label: 'Webserver IP', id: 'webserver-webserverIp'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100', placeholder: '8080', label: 'Webserver port', id: 'webserver-webserverPort'}) %>

Design

Background image

<%- include('_components', {component: 'text', cssClass: '', 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: 'Default' }, { 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', 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', 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', 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', 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', placeholder: '0', label: 'Lower limit', id: 'webserver-tuningLowerLimit'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100', 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', placeholder: '87.5', label: 'Preset 1', id: 'webserver-presets-1'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100', placeholder: '87.5', label: 'Preset 2', id: 'webserver-presets-2'}) %>
<%- include('_components', {component: 'text', cssClass: 'w-100', placeholder: '87.5', label: 'Preset 3', id: 'webserver-presets-3'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100', 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'}) %>

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.

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.

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', label: 'xdrd IP address', id: 'xdrd-xdrdIp'}) %> <%- include('_components', {component: 'text', cssClass: 'w-100', label: 'xdrd port', id: 'xdrd-xdrdPort'}) %> <%- include('_components', {component: 'text', cssClass: 'w-150', 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'}) %>

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: '', placeholder: 'Your e-mail or Discord...', label: 'Owner contact', id: 'identification-contact'}) %> <%- include('_components', {component: 'text', cssClass: '', 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', placeholder: '', label: 'Latitude', id: 'identification-lat'}) %> <%- include('_components', {component: 'text', cssClass: 'w-150', placeholder: '', label: 'Longitude', id: 'identification-lon'}) %>

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', placeholder: '', label: 'OMID', id: 'extras-fmlistOmid'}) %>

Tunnel

When you become a FMDX.org supporter, you can host your webserver without the need of a public IP address.
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', placeholder: '', label: 'Subdomain name', id: 'tunnel-subdomain'}) %>.fmtuner.org
<%- include('_components', {component: 'text', cssClass: 'w-150', placeholder: '', label: 'Username', id: 'tunnel-username'}) %> <%- include('_components', {component: 'text', cssClass: 'w-250', 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) { %> <% }); %>