The Windows workbench
The workbench is antennaknobs packaged for Windows: the same program as
pip install "antennaknobs[web]", frozen with its interpreter and its
compiled solver so there is nothing to install. Download, unzip,
double-click.
Setting it up
Section titled “Setting it up”- Download
antennaknobs-workbench-windows.zipfrom the latest release (the direct link is releases/latest/download/antennaknobs-workbench-windows.zip; releases before v0.73.0 shipped the Python package only). The release also carriesantennaknobs-workbench-windows-v<version>.zip: the same file, named with its version so a saved copy says which release it is. The version-less name is what keeps the link above pointing at the newest release, so either download is fine. - Before extracting, right-click the downloaded zip, choose Properties, tick
Unblock and click OK. Windows marks a downloaded file, every file
extracted from a marked zip inherits the mark, and unblocking the one zip
before it becomes several hundred files is the easy moment: the
“Windows protected your PC” screen never appears, and the files keep their
own dates instead of the download’s. Then unzip it anywhere. Keep the
folder together — the two executables need the
_internalruntime beside them, and a lone copied-out.exeis the one way a correct download still fails. - Double-click
antennaknobs-workbench.exe. A console window opens, the server starts on this computer athttp://127.0.0.1:8000, and your browser opens at it.
Keep the console window open while you work; closing it, or Ctrl-C, stops the
server. Nothing is installed, and the only thing written outside the folder
is your own designs folder (below) — delete the workbench folder to remove
the program. The server listens on 127.0.0.1 only, so
nothing on your network can reach it.
The page shows the running version just below the bold “AntennaKNoBs” in the
upper left, so you can always tell which release you launched. To update to
a new release, extract the whole new zip into a fresh folder rather than
copying just the .exe over an old one — the exe runs whatever _internal
sits beside it, so a copied-in .exe next to an old _internal runs the old
code under the new file name, with no sign of that beyond the version shown
on the page and in the console’s startup line. If the console says the new
version and the page still looks like the old one — no version under the
title, a missing view in the rail — the browser has kept a cached copy of the
page for 127.0.0.1:8000: press Ctrl+F5 (Ctrl+Shift+R in Firefox) once, or
open the address in a private window.
First launch takes appreciably longer than the rest: Windows scans the unpacked folder once. Measured on a laptop, the self-test ran 17.7 s cold and 2.2 s warm, and the warm number is the one you live with.
Options, from a PowerShell or Command Prompt window in the folder:
antennaknobs-workbench.exe --port 8123 serve somewhere elseantennaknobs-workbench.exe --no-browser print the URL onlyantennaknobs-workbench.exe --selftest prove the bundle and exitantennaknobs-workbench.exe --nec5-exe PATH use the NEC-5 engine at PATHantennaknobs-workbench.exe --nec2-exe PATH use the NEC-2 engine at PATHantennaknobs-workbench.exe --settings PATH start from this settings.tomlA settings.toml sets where the workbench starts: its switches, which
analyses a pick runs, ground, solver slots and engine paths. See Where the workbench starts.
The port is worth leaving alone. Your browser keeps what it remembers about the workbench — which views are pinned to the rail, rail or grid, light or dark — against the address it visited, and the address is the port. Launching on 8000 every time is what carries those across restarts. If something else on the machine already holds 8000, the workbench takes a free port instead and the console says so; that window starts with the default rail.
--selftest is worth running once if you are unsure the download is intact:
it solves a known antenna and checks the answer against the value the
unfrozen package produces, then exits.
A shortcut for each way you work
Section titled “A shortcut for each way you work”Each settings file is one way of starting, so two shortcuts can start the
workbench two ways. Say one run should leave every engine deck and printout
in a folder with the frequency sweep off, and the other should sweep and
capture nothing. Keep the everyday settings in settings.toml, and write the
other way into a second file beside it, capture.toml:
[switches]freq_sweep = false
[capture]dir = 'C:\ak-captures'Then make a shortcut that starts from it:
- Right-click
antennaknobs-workbench.exeand choose Send to → Desktop (create shortcut). On Windows 11, Send to is under Show more options. - Right-click the new shortcut, choose Properties, and at the end of the
Target box type a space and
--settings "C:\Users\you\.antennaknobs\capture.toml", with your own user folder in place ofyou. - Rename the shortcut to say which it is, such as
antennaknobs (capture).
A second shortcut made the same way, without the flag, starts from
settings.toml. The capture folder is created on the first run, and the
console window’s startup summary names the settings file each shortcut
started from. Save as my defaults writes to that same file, so each shortcut
keeps its own defaults. An [engines] table serves only the file it is in,
while a NEC5_EXE.txt beside the program serves both shortcuts.
Your own designs
Section titled “Your own designs”Your own designs go in your designs folder, not inside the workbench folder:
%USERPROFILE%\.antennaknobs\designsthat is, C:\Users\<your user name>\.antennaknobs\designs. The workbench
creates it when it starts, with a TEMPLATE.py inside that makes a good
starting point: copy it, rename the copy, and edit that. The folder name
starts with a dot, so a file dialog may not offer it; pasting the path into
Explorer’s address bar always works.
- A
.pydesign in it appears in the design picker under Your designs asuser.<file name>. Press the ⟳ button beside Open… to pick up a new file; there is no need to restart. (The hosted app has no designs folder of yours to read, so a.pydesign needs this installed workbench.) - A file in a subfolder is named by its path:
mydesigns\my_dipole.pyisuser.mydesigns.my_dipole, grouped under Your designs / mydesigns. Folders whose names start with_or.are skipped. - A design is a small Python program, so the first time a new one loads the workbench asks whether to allow it. For a file you are writing yourself, choose Allow + my edits; then each save loads without asking again, and ⟳ with your design selected reloads it and re-solves.
.nec,.ez,.maaand.ssnfiles in the folder show up the same way, and never need allowing.
Don’t add files under _internal\antennaknobs\designs: that is the built-in
catalog, read once when the workbench starts, and a new release replaces it.
To keep your designs somewhere else, set the ANTENNAKNOBS_USER_DIR
environment variable to that folder before starting the workbench.
Adding your NEC-5 engine
Section titled “Adding your NEC-5 engine”The workbench solves with momwire out of the box. If you own a licensed NEC-5 engine it can drive that too, as a second engine beside momwire — see NEC-5 as a third engine for what that buys you (the workbench folder carries momwire; the PyNEC engine of the pip install is not in it). antennaknobs never bundles, downloads, or hosts the engine.
Put the engine’s full path on one line in a text file named NEC5_EXE.txt
beside antennaknobs-workbench.exe, then start the workbench again. The
NEC-5 tab appears in the solver panel.
Adding a NEC-2 engine
Section titled “Adding a NEC-2 engine”The same door, for an engine you may already own: put the path to a NEC-2
console binary on one line in NEC2_EXE.txt beside the executable (or start
with --nec2-exe PATH, or set NEC2_EXE), and antennaknobs drives it as a subprocess —
see NEC-2 as an external engine. 4nec2 installs one as
nec2dxs*.exe; nec2c and nec2++ are free. No NEC-2 is bundled on
purpose: nec2++ is GPLv2, and shipping it would change this download’s
licence.
The NEC-2 tab appears in the solver panel the same way the NEC-5 one does, and
--engine nec2 reaches the same engine from the command line.
Adding a NEC-4.2 engine
Section titled “Adding a NEC-4.2 engine”A licensed NEC-4.2 binary of your own is reached the same way: its path on one
line in NEC42_EXE.txt beside the executable, or --nec42-exe PATH, the
NEC42_EXE variable, or nec42_exe under [engines] in settings.toml. The
NEC-4.2 tab appears in the solver panel, and the startup line NEC-4.2: in the
workbench’s window confirms the path. EZNEC Pro+ keeps the one its External
NEC-4.2 slot runs in its Docs folder too (NEC42W64CL.exe). See
NEC-4.2 as an external engine. None is bundled: NEC-4.2 is
licensed per user by LLNL.
If you run EZNEC Pro+, the engine is already on your disk. EZNEC keeps it
in its Docs folder — not under Program Files, where people look first —
and the filename carries a build suffix, so it is NEC5CL_x13.exe rather
than a bare NEC5CL.exe. Look for:
C:\EZNEC 7.0\Docs\NEC5CL_*.exeand copy the name you actually find. If you are not sure which engine EZNEC
is driving, open Docs\LastRun.log — EZNEC records every run there as
Running ext engine <full path>, which is the path to paste.
If you start the workbench from a window rather than by double-clicking, you can name the engine on the command line instead. The flag reads the same in PowerShell and Command Prompt, and wins over the file:
antennaknobs-workbench.exe --nec5-exe "C:\EZNEC 7.0\Docs\NEC5CL_x13.exe"The NEC5_EXE environment variable works too: it wins over the file and
loses to the flag. So does nec5_exe under [engines] in
settings.toml, which loses to the variable and wins over
NEC5_EXE.txt.
The command line
Section titled “The command line”antennaknobs-cli.exe in the same folder is the same program’s command line —
what python -m antennaknobs runs for someone who installed from PyPI, so the
CLI reference is its documentation. Open a PowerShell
window in the folder (Shift+right-click the folder background, “Open
PowerShell window here”) and put .\ in front of the name:
.\antennaknobs-cli.exe --help.\antennaknobs-cli.exe sweep --param nominal_nsegs --builder dipoles.invvee:dipole --engine momwire:bsplineThe second line is a convergence study: one cold solve per segment count, a
table of R, X and the change in reflection coefficient per rung, and a
Richardson-extrapolated Z* under it. With no --fn the chart opens in a
window with the matplotlib toolbar, so the Smith chart zooms and pans; add
--fn out.png to write the picture to a file instead.
It finds NEC-5 and NEC-2 the way the workbench does — the same NEC5_EXE.txt
and NEC2_EXE.txt beside it, the same variables and the same settings.toml
— so an engine set up once is set up for both. It does its work by running
antennaknobs-workbench.exe, which is why the two executables and
_internal have to stay together.
When you want the Python package instead
Section titled “When you want the Python package instead”The workbench is the no-install path. If you want antennaknobs as a library —
to write your own designs or script a sweep — install the package and follow
the Quickstart instead. The two are the same code; only
the packaging differs, and a pip install puts the same antennaknobs command
on PATH.