Remote ham radio from a Mac — complete setup guide.
By the end of this guide you can sit at your Mac and operate your transceiver as if you were at the radio — control, audio, CW, and digital modes — whether the radio is in the next room or a remote shack. The path here is the one RigPlane is designed around: a native macOS app, direct radio control with no vendor application in the loop.
What you will need
Pick the path that matches your radio and your network — every item below is referenced somewhere in the steps that follow.
- A supported transceiver. Production-grade backends today: Icom IC-7610, IC-7300, IC-705, IC-9700, Yaesu FTX-1, Xiegu X6100, and Lab599 TX-500. The IC-7610 and IC-7300 are the daily-driver radios for development. See the IC-7610 page for radio-specific notes.
- A connection between the radio and the network. LAN over the radio's built-in Ethernet (IC-7610, IC-705, IC-9700), or USB CI-V plus USB audio (IC-7300, IC-7610). The IC-7300 does not have a network port — it is USB only.
- A Mac on macOS 13 or later. Apple Silicon or Intel both work. RigPlane Pro is a native macOS app, signed and notarized through the normal Apple developer channel.
- RigPlane Pro for macOS. Available from the downloads page. The open-core Python package
rigplaneis also an option if you prefer a headless engine with a browser UI — see RigPlane on Mac for the trade-off. - Digital-mode software (optional). WSJT-X, JS8Call, or fldigi for FT8/FT4/JS8 and other modes. RigPlane presents itself to these apps as a normal soundcard and as a Hamlib NET rigctl server, so the integration is the standard one.
- A VPN tool (optional). Tailscale or self-hosted WireGuard if you want to reach the station from outside the home network without opening router ports.
What you do not need: an RS-BA1 license, a Windows VM, a hamlib install, a third-party virtual audio cable, or a cloud relay. RigPlane talks to the radio directly and the audio bridge ships in the macOS installer.
Connect your radio to the network
Pick the connection method your radio supports. LAN-capable Icom rigs like the IC-7610, IC-705, and IC-9700 expose a network control interface with a username and password configured in the radio menu; assign a static IP so it does not move after DHCP lease changes. The IC-7300 does not have an Ethernet jack — for that radio you connect over USB serial CI-V and USB audio.
LAN-capable Icom radios (IC-7610, IC-705, IC-9700)
The path is roughly the same for each model — the menu wording varies. On the IC-7610, the network configuration lives at Menu → Set → Network, where you set the IP address (static recommended), enable Remote Control, and create a Network User. Default port is 50001. The IC-705 uses WLAN Set to join WiFi first, then the same Remote Control and Network User flow. Make sure radio and Mac are on the same subnet, and that UDP ports 50001–50003 are not blocked between them.
USB serial radios (IC-7300, IC-7610 over USB)
For USB CI-V control on the IC-7610, set Menu → Set → Connectors → CI-V → CI-V USB Port to Link to [CI-V] (not [REMOTE] — [REMOTE] is for RS-BA1 and blocks serial CI-V). Set the USB baud rate to 115200 if you want scope and waterfall. Connect the rear-panel USB-B port to the Mac. Detailed notes — hardware-validated against a real radio — live in the IC-7610 USB setup guide on rigplane.dev.
Static IP and firewall check
If the radio's IP changes after a DHCP lease renewal, every saved profile in RigPlane points at the wrong address. Assign a static IP from outside your router's DHCP pool, then confirm reachability:
ping 192.168.1.100
nc -u -z 192.168.1.100 50001
Discovery uses UDP broadcast, so on a VLAN-segmented network you will need to use a static address rather than discovery.
Install RigPlane Pro on your Mac
RigPlane Pro is a native macOS application — not an Electron shell, not a Wine wrapper, not a Parallels VM. The build is signed and notarized through the normal Apple developer channel, so Gatekeeper does not surprise you at first launch.
- Open the RigPlane downloads page and grab the latest macOS build for your architecture (Apple Silicon or Intel — there is a universal build).
- Open the downloaded
.dmgand drag RigPlane.app into/Applications. - Launch the app from
/Applications. macOS Gatekeeper may show the standard first-launch confirmation; allow it. - After first launch, open Settings → Audio in RigPlane Pro and click Install BlackHole 2ch. The macOS
.dmgbundles the signed BlackHole 2ch.pkg, so this is a single admin-password prompt with no separate download. See the audio routing for digital modes guide and RigPlane on Mac for the wider context.
If you would rather run the open-core Python library, pip install rigplane on macOS gives you the headless engine plus the Web UI; audio device listing, CI-V control, and the rigctld server are all in the core install since v0.19. That path is documented in the rigplane.dev installation guide; this guide focuses on the packaged Pro app.
Configure audio and CW on macOS
The audio path is the part most ham-radio control software gets wrong on macOS. RigPlane Pro targets Core Audio directly and bundles the signed BlackHole 2ch installer inside the macOS .dmg, so a single click in Settings → Audio → Install BlackHole 2ch provisions the virtual audio device. No separate download from Existential Audio, no Homebrew install required.
For listening and CW inside the RigPlane app, the defaults are correct out of the box: RX plays through your normal output device, TX is captured from your normal input. You do not need to touch macOS Audio MIDI Setup for the basic case.
For digital-mode apps to see RigPlane as a normal soundcard, the setup uses a single virtual device:
- RX path: Radio RX → RigPlane →
BlackHole 2ch→ WSJT-X input. WSJT-X decodes FT8/FT4 from that virtual input as if it were a real soundcard. - TX path: WSJT-X output →
BlackHole 2ch→ RigPlane → Radio TX. RigPlane Pro's bridge runs opposite WSJT-X across the loopback, so a single BlackHole 2ch device is enough — neither side reads its own output.
One device, not two. Older write-ups (and the rigplane.dev WSJT-X setup guide for the manual pip install rigplane path) describe a two-device topology — BlackHole 2ch for RX, BlackHole 16ch for TX — to avoid a feedback loop when the user-launched bridge and WSJT-X both run through Core Audio. RigPlane Pro's bundled bridge runs on the other side of the loopback from WSJT-X, so a single BlackHole 2ch device is enough; the audio routing for digital modes guide and the WSJT-X on the IC-7610 guide use the same one-device recipe. RigPlane Pro bundles only the BlackHole 2ch installer; the 16ch device is not installed by Pro.
macOS Audio MIDI Setup is awkward today — the UI hides aggregate devices behind a separate panel and renaming devices does not always survive a reboot — so RigPlane avoids forcing you into it. To inspect or override the audio routing, the audio recipes on rigplane.dev cover the options.
Audio MIDI Setup.app with BlackHole 2ch visible in the device list after RigPlane Pro's bundled installer has run, demonstrating that no Homebrew install or separate download is required.Connect to your radio
On first run, RigPlane Pro shows the list of detected radios. For LAN-connected Icom rigs the app discovers the radio over UDP broadcast on the local network; for USB-connected rigs it lists serial devices that match a known radio profile. Pick your radio from the list.
For a LAN radio, enter the network username and password you configured in the radio menu. For a USB radio, the baud rate and CI-V address come from the radio profile — leave them at the defaults unless you changed them on the radio side. Confirm. The smoke test once connected:
- Look for the panadapter to start rendering — that confirms the CI-V control channel is live and the scope traffic is flowing.
- Confirm RX audio at a normal volume. If you hear band noise on your Mac's output device, the audio path is working end to end.
- Tune the radio's main VFO from the RigPlane UI by a few kHz, then confirm the change on the radio's physical display. This proves command flow in both directions.
- Open the in-app diagnostics panel and confirm there are no UDP errors or CI-V timeouts in the log.
If discovery does not find the radio, add it manually by entering the network address in the connect dialog — UDP broadcast does not cross subnets, so a manual address is the right move on a segmented network. See the FAQ if the smoke test stalls partway through.
Operate remotely
There are two reasonable ways to reach the radio from outside the home network, and they have different security trade-offs.
Option A: a private overlay network (recommended)
For local operation on the same LAN, no port forwarding is needed — the rig and the computer just need to see each other on the local network. To reach the station from outside the home network, prefer a private overlay network like Tailscale or a self-hosted WireGuard tunnel over opening ports on the home router. With Tailscale, install the client on the Mac and on a small always-on machine in the shack (a Mac mini, a Raspberry Pi, a NAS); both machines appear on the same private network with stable addresses regardless of your ISP's WAN behavior. WireGuard is the same idea, self-hosted.
Both Tailscale and WireGuard need setup. Tailscale is closer to "install and log in" but you still authorize each device against your Tailnet. WireGuard requires generating a keypair on each end and a config file. Neither is fully "just works," but both are significantly safer than exposing UDP 50001–50003 to the public internet — which the radio's network interface assumes is not the case.
One quirk to know: LAN audio over a VPN tunnel sometimes shows IP fragmentation issues on high-rate PCM streams, particularly the IC-7610 48 kHz stereo mode. If audio is choppy but control is fine, drop the radio-native sample rate as a workaround:
export ICOM_AUDIO_SAMPLE_RATE=16000
The full MTU runbook is on the troubleshooting page on rigplane.dev. Control and CI-V always work even when audio is constrained.
Option B: port forwarding (only with care)
You can forward UDP ports 50001–50003 on your home router to the radio's static IP, and reach it directly from outside. This exposes the radio's network interface to the public internet — the threat surface is the radio's own firmware, which is not firmware you would trust against arbitrary internet traffic. If you do this, restrict the firewall rule to a single source IP, change the network username and password from the defaults, and treat it as temporary. The FAQ entry on port forwarding says it directly: not required for normal local operation, only relevant for outside-the-home access.
Digital modes from the Mac
RigPlane speaks the rigctld wire protocol natively, so in WSJT-X, JS8Call, or fldigi you point the radio at "Hamlib NET rigctl" on localhost:4532 and it just works — no hamlib dependency on either side. Audio appears as a normal soundcard to your digital-mode software. The radio control side of the integration is short:
- Rig: Hamlib NET rigctl.
- Network Server:
127.0.0.1:4532. - PTT Method: CAT.
- Mode: Data/Pkt.
- Split Operation: Fake It.
127.0.0.1:4532, PTT Method set to CAT, Mode set to Data/Pkt, Split Operation set to Fake It, and the Test CAT button shown in its green success state.Press Test CAT in WSJT-X — the button should turn green. Press Test PTT — the radio should key up briefly, then release. The audio side uses the single BlackHole 2ch device the RigPlane installer provisioned: set both Soundcard Input and Soundcard Output to BlackHole 2ch in WSJT-X's Settings → Audio. The same one-device recipe is documented in the audio routing for digital modes guide.
BlackHole 2ch — the single-device recipe RigPlane Pro's bundled bridge supports, no BlackHole 16ch in the picker.If the first PTT after launching WSJT-X has a 15–20 second delay, that is the well-known USB → PKTUSB first-TX transition; the workaround is to pre-warm DATA mode on connect. The WSJT-X setup guide on rigplane.dev covers the full configuration including the --wsjtx-compat flag and the IC-7610 MOD Level adjustment.
CW from the Mac
RigPlane Pro ships a native CW console with a decoder. CW keying uses the radio's native CW interface; external paddle and keyer support depend on the specific radio and operator workflow rather than on RigPlane providing a USB keyer of its own. You set keyer speed and weighting inside the console; the radio's own CW shaping does the actual keying. For external paddle input, the path is radio-specific: some Icom rigs accept a paddle on the back-panel keyer jack, other workflows route paddle input through a separate USB keyer. The per-radio CW notes on the rigplane.dev docs cover the realistic options.
Troubleshooting
The most common first-run problems are network/discovery, authentication, audio device naming, and the WSJT-X first-TX delay when switching from plain USB to packet mode. Each has a specific fix documented on rigplane.dev.
- "Radio did not respond to discovery." Wrong IP, radio not on the network, UDP 50001–50003 blocked by a firewall, or the two devices are on different subnets (broadcast discovery does not cross subnets). Verify with
pingandnc -u -z, and confirm "Network Control" is enabled in the radio menu. - "Authentication failed." Username or password mismatch with the radio's Network User settings, or too many concurrent connections — disconnect any other clients (RS-BA1, wfview) that may be holding a session against the radio.
- "CI-V USB Port must be set to CI-V, not REMOTE." The IC-7610's
CI-V USB Portmenu setting must beLink to [CI-V], not[REMOTE].[REMOTE]is for RS-BA1 and blocks serial CI-V commands. Set toLink to [CI-V]and re-plug the USB cable. - WSJT-X first-TX delay (15–20 seconds). Caused by the USB → PKTUSB mode transition on connect. Use the
--wsjtx-compatflag if running headless rigctld, or manually pre-set the radio to USB-D1 before launching WSJT-X. Subsequent TX cycles do not have the delay. - TX audio is silent or weak on macOS. Usually the Opus codec library failing to load on macOS, with logs showing
TX transcoder unavailable (opus codec missing?). The fix isbrew install opusand re-running the macOS opuslib patch — full notes on the rigplane.dev troubleshooting page.
The canonical reference for every error message and its fix is the troubleshooting guide on rigplane.dev. If something is not listed there, email [email protected] with the radio model, macOS version, and the relevant log lines.
Ready to set it up?
Start a free trial of RigPlane Pro and walk through the steps above on your own hardware. If you prefer to read the comparison context first, the RigPlane vs wfview page and the Mac software page are the right next stops.
Last reviewed 2026-05-19. Found a mistake? File an issue at github.com/rigplane/rigplane-www/issues. Icom, IC-7610, IC-7300, IC-705, and IC-9700 are trademarks of Icom Inc. Yaesu and FTX-1 are trademarks of Yaesu Musen Co., Ltd. Apple, Mac, and macOS are trademarks of Apple Inc. Tailscale and WireGuard are trademarks of their respective owners. RigPlane is an independent project and is not affiliated with, endorsed by, or sponsored by Icom Inc., Yaesu Musen Co., Ltd., or Apple Inc.