Help & Operating Guide
CHANGELOG
- GMRS net type β when creating or editing a net, choose Ham Radio or GMRS. GMRS nets display a GMRS badge in the net list.
- Shared family callsigns β GMRS licences cover an entire family. Multiple stations may check in using the same callsign; use the Name field to identify each operator.
- GMRS callsign lookup β callsigns in the GMRS format (e.g. WSMC512) are resolved against a local copy of the FCC ULS GMRS database rather than ham radio sources. The database is updated daily from the FCC.
- ARES mode and DMR integration are automatically hidden and disabled for GMRS nets (neither applies to GMRS operations).
- Phone-optimised layout at β€480 px (tested on iPhone 12 Pro): check-in form hides Signal and Comments fields, showing only Callsign, Name, Has Traffic, and a full-width Check In button.
- Check-in table on mobile shows only Callsign, Name, Traffic flag, and the remove button β #, Signal, Comments, and Time columns are hidden.
- Sessions list on mobile hides the Ended and Check-ins columns so the Delete button stays reachable without horizontal scrolling.
- Session Complete summary card scrolls within the viewport rather than being clipped on small screens.
- Header branding truncates gracefully with ellipsis when the org name is long.
- Session action buttons (End Session, ICS-205, CSV) go full-width on mobile for easier tapping.
- Registration tab now shows an info banner explaining that new accounts require admin approval before login.
- After submitting a registration, the form is replaced with a confirmation screen showing the submitted callsign and email address β no more silent redirect to the login tab.
- Any action that triggers an email (operator approval, rejection, Net Control assignment) now shows a ⳠSending⦠state on the button so it is clear the system is working.
- Email send errors are now surfaced inline rather than failing silently.
- Admin, API Tokens, Help, and Report / Request are now standalone pages rather than in-app panels β faster to load and bookmarkable.
- Admin panel reorganised into three tabs: Operators (default), Branding, and Email.
- Sessions list is hidden automatically while a live session is active, reducing visual clutter; it reappears when the session ends.
- End Session button promoted to full size (no longer a small button) to reduce accidental misses.
deploy.shscript added β run./deploy.shon the server for a one-command git-pull deployment.
- DMR Last Heard panel β connect your net to a WPSD, Pi-Star, or BrandMeister talk group; see recently heard stations live during the net.
- Heard stations are filterable (NCS callsign auto-excluded) and update every 30 seconds while a session is active.
- Quick Check-In β click any heard callsign to pre-fill the check-in form with their name and region.
- Supports both direct mode (browser fetches your local-network hotspot) and proxy mode (server fetches a publicly accessible URL or BrandMeister).
- Two new check-in fields: Talk Group and Region/State β shown automatically when a net has DMR configured.
- Configure DMR integration in the net Edit form (net owners only); migration SQL in Help β Database Migrations.
- Fixed ICS-205 export returning "Not authenticated" β now fetches with proper auth credentials.
- ICS-205 / Net Log button now available in the live session toolbar (alongside End Session and CSV export) β no need to wait until the net ends.
- Configurable organization branding: set your org name, tagline, website URL, and upload a custom logo from the Admin panel.
- Public live page (/live) β unauthenticated real-time view of active nets and check-in rosters, auto-refreshes every 30 seconds.
- Net Control confirmations now include a .ics calendar attachment β sign up or get assigned and a calendar event lands in your inbox automatically.
- Net owners can now share nets with all users or individual operators via the Edit form.
- Admins can see and open all nets on the system.
- Shared nets appear with a Shared badge and show the owner's callsign.
- New π Report / Request sidebar item β submit bug reports, enhancement requests, and questions directly to the administrator.
- Traffic Message Log panel (ARES nets) β track message numbers, origin, destination, type, and delivery status.
- Station Remarks β persistent per-net notes on any callsign, accessible during lookup.
- Session Summary card shown automatically when a session ends.
- ICS-205 / Net Log printable export added to ended sessions.
- Session clock showing local time, UTC, and elapsed time.
- / keyboard shortcut to jump to callsign input.
- Traffic banner chips now have "called" checkboxes to track handled traffic.
- Admin and database help sections now hidden from non-admin users.
- SMTP configuration hint hidden once email is configured.
- ARES/ACES net mode with per-station evacuation zone tracking and Zone Roster panel.
- Expected Stations list with Check-In and Traffic pre-flag checkboxes.
- Callsign suffix search against local check-in history (replaces decommissioned FCC search).
- Net Control signup scheduling with weekly recurring time slots.
- Net and session management, check-in logging, signal reports, traffic flagging.
- FCC callsign lookup, session history, CSV export.
- User registration with admin approval, email notifications.
QUICK START
1. Create a Net under My Nets β give it a name and frequency.
2. Open the net and click βΆ Start New Session to begin.
3. Use the Check-In form or Expected Stations list to log stations as they call in.
4. Click β End Session when the net closes β a session summary card will appear automatically.
Keyboard shortcut: Press / anywhere on the session page to instantly focus the callsign input.
SESSION CLOCK & TIMER
While a session is live, a clock bar appears showing local time, UTC time, and the elapsed session time. The timer starts from when the session was opened and updates every second.
The clock disappears automatically when the session ends.
CALLSIGN LOOKUP & SEARCH
Full callsign (e.g. W7KOL) β type it in and the system looks up the licensee name, class, state, and grid from the FCC database, auto-filling the Name field.
Suffix search (e.g. KOL) β type letters without a district number and the system searches your net's check-in history for matching callsigns. A dropdown appears sorted by suffix. Click any result to select it and trigger a full FCC lookup.
Suffix search only finds callsigns already in your net's history. For a brand-new station, type their full callsign.
STATION REMARKS
After looking up a callsign, a small π Remark pill appears in the lookup info bar. Click it to add or edit a persistent note about that station (e.g. "portable op", "relay to W7NET", "hearing impaired β use Winlink").
Remarks are saved per net and appear every time that station is looked up during any future session on that net.
MANUAL CHECK-IN FORM
Fill in callsign, name (auto-filled from FCC), signal report, and optional comments. Check Has Traffic before clicking Check In or pressing Enter.
Duplicate callsigns in the same session are automatically rejected.
GMRS NETS
When creating a net, select GMRS as the net type. GMRS nets behave like ham nets with a few differences:
Shared callsigns β a GMRS licence covers an entire family. The same callsign can check in multiple times in a single session. Use the Name field to identify each individual operator (e.g. "Dad", "Mom", "Mobile 1").
Callsign lookup β GMRS callsigns (format: 3β4 letters followed by 3β4 digits, e.g. WSMC512) are looked up in a local copy of the FCC ULS GMRS database. The database is refreshed daily; new licences may take up to 24 hours to appear.
ARES mode and DMR integration are not available for GMRS nets and are hidden automatically.
EXPECTED STATIONS
Click Expected Stations to expand the panel. Set the minimum check-in count and lookback window (weeks), then click Load List.
Each row shows two checkboxes: Check In to log them immediately, and Traffic to pre-flag traffic before they're formally logged. On ARES nets, a π zone badge shows their last known evacuation zone.
Already-checked-in stations are greyed out and the list refreshes automatically.
TRAFFIC MANAGEMENT
When any station has traffic, a red π’ TRAFFIC banner appears listing them as interactive chips. Once you've called a station to pass their traffic, tick the checkbox on their chip β it strikes through and dims to show it's been handled. Unchecked chips remain prominent so nothing gets missed.
Pre-flagged stations from Expected Stations appear with a β³ badge until formally checked in. Their checkbox is disabled until they call in.
In the check-ins table, click the π’ / β button in the Traffic column to toggle the flag on any station.
TRAFFIC MESSAGE LOG
Click π TRAFFIC MESSAGE LOG to expand the panel. Use it to record individual traffic messages handled during the session β message number, origin, destination, type (Formal / Informal / Health & Welfare), and notes.
The Status dropdown on each row lets you track progress: Received β Relayed β Delivered (or Undeliverable). Changes save immediately.
The message log is included in the ICS-205 export.
SESSION SUMMARY & ICS-205
When you end a session, a Session Summary card pops up showing total check-ins, session duration, traffic count, and new stations (first-time visitors to this net).
Click π ICS-205 / Net Log to open a printable net log in a new tab. It includes the ICS-205 header (net name, frequency, NCS callsign, operational period) plus the full check-in roster and traffic message log. Use your browser's Print function to save as PDF.
You can also export the raw check-in data as a CSV for logging or upload to other systems.
ARES/ACES MODE
Enable ARES/ACS Net in the net settings to activate evacuation zone tracking. An Evac Zone field appears in the check-in form β enter the station's zone (e.g. "Zone A") when they check in.
The zone is saved automatically to a per-net zone table. In future sessions, the station's last known zone appears as a π badge in the Expected Stations list and is pre-filled when checking them in.
The Zone Roster panel shows all known zones grouped by zone name with their callsigns, sorted by callsign suffix. The Zone column also appears in the check-in table and the ICS-205 export.
SESSION HISTORY
The History view shows every callsign that has checked into the selected net, with check-in counts for the past 2 weeks, 4 weeks, and all time.
Use the filter dropdown to find: Last Net, Missed Last Net, Active (2 wks), Regular (4 wks, β₯2), Frequent (4 wks, β₯3), or Inactive (4 wks).
Combine the dropdown with the text search box for further filtering. Use β¬ Download CSV to export the current view.
NET SHARING
Net owners can share a net with other registered operators. Open the net's Edit form and expand the π Sharing section at the bottom.
Choose Share with all registered users to give every active account access, or select individual users from the list. Click Save Sharing to apply β this is separate from the main Save button.
Shared nets appear in other operators' net lists with a Shared badge and show the owner's callsign. Shared users can start sessions and add check-ins, but cannot edit the net configuration or manage sharing.
Admins can see and open all nets on the system regardless of sharing settings.
SCHEDULING
In the Schedule tab of a net, add weekly repeating time slots (day, time, timezone). These appear as a calendar of upcoming dates.
Operators can click Sign Up next to any future date to claim the Net Control Operator slot.
ADMIN PANEL
The first user to register automatically becomes admin. Additional registrations require approval before login is permitted.
Admins can approve/deactivate accounts, grant admin privileges, delete accounts, and opt in to email notifications for new registrations using the β/π§ toggle in the Notify column.
Newly approved operators receive an automatic confirmation email if SMTP is configured in .env.
DATABASE MIGRATIONS
Schema migrations are managed by migrate.py in the app directory.
It is safe to re-run at any time β every step uses IF NOT EXISTS.
sudo -u netcontrol python3 /opt/netcontrol/migrate.py
Fresh installs: new tables are created automatically on first startup β no migration needed.
Run migrate.py only when upgrading an existing instance after a code update.
GMRS licence database
Seed the local GMRS callsign database on first install, then let the daily cron keep it current:
# Initial seed (full ~54 MB download) python3 /opt/netcontrol/gmrs_sync.py --mode full # Routine update (runs automatically via cron β daily transaction file) python3 /opt/netcontrol/gmrs_sync.py --mode update