What do you need?

N1MM Rotor Server runs on a small Linux computer that you leave permanently on in your shack. It sits between your rotor controllers and your network, so N1MM Logger can control your antennas from any PC in the house.

A Raspberry Pi is a great choice for this — it's cheap, compact, completely silent, and uses as much power as a phone charger. But any PC or mini-PC running a Debian-based Linux such as Ubuntu or regular Debian works just as well.

One time only. You only need to touch the Linux system during installation. After that, everything is done from your browser — you never need a keyboard or screen on the Linux system again.

Installing

Installation is a one-time job. Copy the package to the Linux system, run one command, and you're done.

Three steps — done in about a minute

1

Get the source onto the Linux system

Clone the repository from GitHub, or download it as a ZIP from the Download page and copy it to your Linux system.

git clone https://github.com/PA5DJ/N1MM-Rotor-Solution.git
2

Run the installer

Go into the cloned folder and run the install script:

cd N1MM-Rotor-Solution/N1MM_Rotor_Server/LINUX/src
sudo bash install.sh

The installer compiles the software, sets everything up, and starts the server automatically. This takes about a minute.

3

Open your browser — done

On any PC, tablet, or phone on your network, open a browser and go to the IP address of the Linux system — for example http://192.168.1.50. The web interface appears immediately.

How do I find the IP address? Log in to your router and look at the list of connected devices. The Linux system will appear there with a name like "raspberrypi" and its IP address next to it. Write it down — you'll use it every time you open the web interface.

What gets installed, and where?

The installer takes care of everything. Here is what it puts on the system, so you know what's running:

Rotor server The main program. It talks to your rotor controllers through the USB cables and sends heading information to N1MM Logger over the network. It starts automatically whenever the Linux system boots, so you never need to start it manually.
Web server A small web server that serves the web interface on port 80 — the standard web port, so you can reach it just by typing the IP address into your browser without any port number. Also starts automatically on boot.
Settings All settings are saved on the Linux system. You never need to edit them by hand — the web interface handles everything.
Log The server keeps a log of everything it does — rotor movements, wind data, storm events. The log is visible in the web interface and automatically keeps the last 24 hours. Older entries are removed automatically.
Wind history 48 hours of wind and weather readings are stored and shown as graphs in the web interface.
Updating to a newer version: Copy the new package to the Linux system and run sudo bash update.sh. All your settings and rotor configurations are kept.

Opening the web interface

Type the IP address of the Linux system into your browser — for example http://192.168.1.50. The Rotors tab opens straight away. On a fresh install a small setup dialog offers to create the first admin account — you can also skip it and keep the interface open to everyone on your network.

N1MM Rotor Server web interface — rotor compass cards with VOACAP propagation overlays

The web interface — one compass card per rotor, with a live heading needle and (optionally) the VOACAP propagation map for the antenna's band under the rose. The STORM badge in the header lights up when storm correction is active.

The interface works on any browser and on any device — desktop, laptop, tablet, or phone. Nothing to install on the device you use to access it — though on a phone you can install it as an app: the dashboard is a PWA, so "Add to home screen" gives it its own icon and a fullscreen window.

Rotors tab

This is the main view. You see a compass card for each of your configured rotors. The needle moves in real time as the antenna turns.

When N1MM Logger sends a heading command — for example when you click a callsign — the compass cards update automatically and the rotors start moving.

Meteo tab

The Meteo tab shows live weather information. This data drives the storm protection: when the wind gets too strong the server automatically parks your antennas.

N1MM Rotor Server — Meteo tab

The Meteo tab with Open-Meteo as source. The Wind Monitor card on the left shows the current reading, source, and storm threshold. The compass rose shows the wind direction. Click any card to see its 48-hour history.

You can see the wind direction, wind force in Beaufort, gust speed, temperature, humidity, air pressure, UV index, and solar radiation — depending on what your chosen weather source provides.

Click on any weather card to open a graph showing the last 48 hours of that value. Use the buttons at the top to zoom in to 30 minutes, 1 hour, 3 hours, 6 hours, or further back.

N1MM Rotor Server — 48-hour wind history graph

The wind history popup. Blue line = direction, orange line = Beaufort force. The regular steps in orange show the rotor being periodically sent back to its safe storm heading.

Map tab

The Map tab shows a live site plan of your antennas. Each rotor is drawn at its real position, with a colored direction line showing where the antenna is pointing right now. The lines move in real time as the rotors turn — a quick glance tells you exactly where every antenna is aimed.

N1MM Rotor Server — Antenna Map in Grid view

Grid view — a clean site plan with a meter grid and north arrow. Each antenna shows its name and current heading, and the direction line follows the rotor live.

There are two views, switchable with the buttons in the top-right corner:

N1MM Rotor Server — Antenna Map in Satellite view

Satellite view — the antennas plotted on aerial imagery of your own QTH. Zoom and pan freely; the direction lines keep their real-world length at every zoom level.

To place your antennas on the map, enter the GPS coordinates (latitude/longitude) of each rotor in Settings → Rotors. You can also set the length of the direction line in kilometers per rotor — handy to tell a long HF beam apart from a small VHF yagi, or to draw a long bearing line towards a distant target. Your view choice (Grid or Satellite) is remembered by the browser.

Settings

Click the gear icon in the top-right corner to open the Settings panel. There are up to seven tabs — Rotors, Server, Meteo, Storm, Web, Accounts, and SMTP — depending on your role (managers see the day-to-day tabs, admins see everything). Make your changes and click Save & restart server. The server restarts in a few seconds and the page reconnects on its own — you don't need to do anything.

Settings — Rotors

This is where you tell the server about your rotor controllers. You add each one with a name, tell the server which USB port it's on, and select the right communication settings for your controller model.

Rotor list in Settings
The rotor overview — all your configured rotors in a list. Click Edit to change a rotor or Delete to remove it. The "+ Add rotor" button at the bottom adds a new one.
Add rotor dialog
Adding a new rotor. Give it a name, choose the USB port (the server finds them automatically), and select the protocol and baud rate for your rotor controller.
Edit rotor dialog

Editing an existing rotor. The USB port dropdown shows which ports are already in use by other rotors, so you can't accidentally assign the same port twice. The rotor name also appears in N1MM Logger — so it must match exactly.

At the bottom of the rotor dialog you find the Storm Monitor settings. These control what happens to this specific rotor when a storm is detected:

The rotor dialog also has Map position fields: the GPS latitude/longitude of the antenna and the length of its direction line in meters. These place the rotor on the Map tab — leave them at 0 if you don't use the map. Below that you tick the bands the antenna covers and the bands for the VOACAP propagation overlay.

Back in the rotor overview, the ▲/▼ arrows next to each rotor set the order of the compass cards on the dashboard. Move the rotors into the order you like, save, and every open dashboard re-arranges itself — no reload needed. At the bottom of the Rotors tab you'll also find the global VOACAP overlay settings (on/off, transmit power, mode, and the propagation server to use).

Settings — Server

These settings control how the server communicates with N1MM Logger and other applications on your network. For most home shack setups the default values work without any changes.

Server settings

Settings → Server. Network ports and timing. The defaults work for the vast majority of setups.

How does the communication work? N1MM Logger sends a heading command to the server ("point rotor X to 270°"). The server moves the rotor and continuously sends the current heading back to N1MM Logger so the display stays up to date. Both directions use UDP — a lightweight network protocol well-suited for this kind of real-time data.

Command port (default: 12040)
The server listens on this port for incoming commands from N1MM Logger. This is the port you enter in N1MM Logger when you configure the rotor connection. You only need to change this if port 12040 is already in use for something else on your network.

Broadcast address
This is how the server sends the current rotor heading back to N1MM Logger — and to any other application that wants to listen. Instead of sending to one specific PC, the server sends a single message to the whole network at once. Every device on the network receives it, and N1MM Logger picks it up automatically.

The broadcast address is always your network address with 255 as the last number. If all your devices have addresses like 192.168.1.x, your broadcast address is 192.168.1.255. The default value 255.255.255.255 is a shorthand that reaches every device on every connected network, which works fine in a typical home setup.

If your shack runs on a separate network from the rest of your home — for example the rotor server is on 192.168.1.x and your PC is on 10.0.0.x — you can enter both broadcast addresses separated by a comma.

Broadcast port (default: 13010)
The port on which position updates are sent out to the network. N1MM Logger listens on this port. Only change this if you have a specific reason to.

Secondary broadcast port
If you run a second application that also needs to receive rotor position updates — for example N1MM Rotator Client running on a second PC in the shack — you can enable a second broadcast port here. The server then sends the same position data on both ports at the same time. Configure the second application to listen on this second port, and both will stay in sync automatically. Leave this at 0 if you only use N1MM Logger.

Poll intervals
The server regularly asks each rotor "what is your current heading?" so it can keep the display up to date. When a rotor is not moving, it checks once per second (1000 ms). When a rotor is moving it checks much more often — every 200 ms — so the compass needle moves smoothly. You don't need to change these.

Settings — Meteo

Choose where the server gets its wind and weather data. The data is used for the storm protection system and displayed on the Meteo tab.

Meteo settings with Ecowitt

Settings → Meteo with Ecowitt selected. The station sends data to the server over the local network. If the station stops sending, the server automatically falls back to an internet source so storm protection keeps working.

Settings — Storm

Storm protection watches the wind continuously. When the wind gets too strong, the server automatically turns all your antennas to a safe position so they don't get damaged. When the wind drops back down, the antennas are released and N1MM Logger can control them again as normal.

Storm settings

Settings → Storm. Here you set the wind strength threshold and the timers that prevent false triggers from short gusts.

You don't need to go into settings to switch storm protection on or off. On the Meteo tab, the Wind Monitor card has a button to enable or disable it instantly, and an Activate button to force it on immediately regardless of the sustain timer.

Settings — Web

General web-interface options: the port the web server runs on (80 by default) and the session idle timeout — how long a login stays valid without activity. Ticking Remember me on the login dialog keeps a login valid for 30 days instead, even across server restarts.

HTTPS from outside your LAN? The included setup_ssl.sh script puts nginx in front of the web server with a free Let's Encrypt certificate (automatic renewal included). Run it once with your domain name and the dashboard is reachable over https://.

Settings — Accounts

By default the web interface is open to anyone on your local network. If you want logins, create accounts here (up to 8) — each with a name, e-mail address, and one of three roles:

Per-role permission checkboxes let you fine-tune this — for example giving managers the power buttons, or taking storm control away from users. When you add an account (or reset its password), the server e-mails a temporary password; the user must pick their own password at first login. There's also a public "Forgot password" link on the login dialog that mails a new temporary password.

N1MM Logger itself connects directly over UDP and is never affected by web logins — it keeps working regardless.

Settings — SMTP mail

To let the server send e-mail — account passwords and event notifications — enter your SMTP provider here: host, port, security (SSL / STARTTLS / none), login, and the From/To addresses. A Send test mail button verifies the settings on the spot.

Pick which events should trigger a notification mail: storm correction start/stop, wind-source failover, a rotor losing or regaining its connection, and server start. The mails are neatly formatted HTML, and when you fill in the Server URL field every mail gets a one-click "Open dashboard" button.

VOACAP propagation overlay

Where is the band open right now? With the VOACAP overlay enabled, every compass card shows the live propagation prediction for that antenna's band, drawn under the rose: your station is at the centre, the edge of the circle is the opposite side of the earth, and the colours show where your signal is predicted to arrive. Point the needle into the bright area and you're pointing at the opening.

By default the predictions come from the free, donation-run Open HamClock Backend. Prefer to be fully independent? Run sudo bash setup_prop.sh once: it builds a complete local VOACAP engine on the same machine (free and open source, no subscriptions) and switches the server over to it. The installer also offers this as an optional extra at the end of a fresh install.

Log viewer

Click the terminal icon in the top-right corner to open the log panel. It shows everything the server has been doing over the last 24 hours and updates live as new events happen. This is useful if something isn't working as expected — you can see exactly what the server did and when.

Log viewer panel

The log panel. Use the coloured filter buttons to show only what you're interested in — for example STORM to see when storm correction activated, or ROTOR to see every heading command that was sent.

A red dot on the terminal button means there are error entries in the log. Click the button to open the log and filter on ERR to see what went wrong.

Connecting N1MM Logger

N1MM Rotor Server — rotor compass cards light mode

When N1MM Logger sends a heading command, the compass cards update immediately and you can watch the needle moving as the antenna turns.

In N1MM Logger+, go to Config → Configure Ports, Mode Control, Winkey… and open the Rotor tab. For each antenna you want to control:

Save the settings in N1MM Logger. From that point on, N1MM Logger will automatically rotate your antennas when you work a new station, and the web interface will show the heading updating in real time.

Something not working?

The web interface doesn't open in my browser
  • Make sure the address starts with http:// and not https:// — out of the box the server uses a plain connection (HTTPS is available via the optional setup_ssl.sh script)
  • Double-check the IP address — look it up in your router's device list again to make sure it hasn't changed
  • Make sure the Linux system is powered on and the network cable is plugged in
  • Try the address from a different device to rule out a browser issue
A rotor shows as disconnected in the web interface

The server can't reach the rotor controller through the USB cable. Check the following:

  • Is the USB adapter plugged into the same physical USB port as when you set it up? The server identifies USB devices by their physical port position, so plugging into a different port looks like a different device.
  • Is the rotor controller powered on?
  • Is the USB cable firmly connected at both ends?

The server tries to reconnect automatically every 5 seconds. Once the connection is restored it picks up again on its own — no restart needed.

N1MM Logger doesn't receive heading updates
  • Check that the rotor name in N1MM Logger matches the name in N1MM Rotor Server exactly — including capital letters. "2m Yagi" and "2m yagi" are treated as different rotors.
  • Make sure the PC running N1MM Logger and the Linux system are on the same network. If they're on different networks, N1MM Logger won't receive the broadcast messages.
  • If you have a more complex network setup with multiple subnets, add the broadcast address for the N1MM Logger PC's subnet in Settings → Server.
Storm protection doesn't activate when the wind is strong
  • First check the Meteo tab — is there live wind data showing? Storm protection can't work without wind data. If the Meteo tab shows no data, go to Settings → Meteo and check that wind monitoring is switched on and a source is configured.
  • Check that each rotor you want protected has "Include in storm" ticked — go to Settings → Rotors and click Edit on each rotor.
  • Remember the sustain timer — the wind needs to be above the threshold for the full "Sustain before on" period before protection activates. If you want to test it right now, use the Activate button on the Wind Monitor card in the Meteo tab to force it on immediately.
No weather data on the Meteo tab
  • Go to Settings → Meteo and confirm that "Enable wind monitor" is switched on
  • If you're using an internet source (Open-Meteo, yr.no, etc.), the Linux system needs access to the internet. Check that it can reach the internet — try opening a browser on it and loading a website.
  • If you're using an Ecowitt station, confirm that the station is set to send data to the IP address of the Linux system on the correct port. See the Ecowitt setup guide in your station's app.
I forgot my password

If SMTP mail is configured, simply use the Forgot password link on the login dialog — a new temporary password is mailed to the address on your account.

Locked out of the only admin account with no mail configured? Log in to the Linux system once (or SSH in) and run:

sudo nano /etc/n1mm_rotor_server/n1mm_rotor_server.conf

Delete the userN_… lines of the account (name/hash/role/email), save, and restart the web service. The first-run setup dialog then lets you create a fresh admin account from the browser.