{"id":2848,"date":"2026-03-17T19:51:15","date_gmt":"2026-03-17T23:51:15","guid":{"rendered":"https:\/\/wp.w2mmd.org\/wp\/?page_id=2848"},"modified":"2026-03-17T19:51:15","modified_gmt":"2026-03-17T23:51:15","slug":"satellite-station-remote-operation","status":"publish","type":"page","link":"https:\/\/wp.w2mmd.org\/wp\/satellite-station-remote-operation\/","title":{"rendered":"Satellite Station Remote Operation"},"content":{"rendered":"\n<p>Below are notes on an ongoing effort to be able to remotely operate the GCARC satellite station. That&#8217;s based on several functions &#8211; the IC-9700&#8217;s &#8220;Icom Remote Utility&#8221; software which is an extra-cost option that I can&#8217;t post here, plus the nRSP-ST SDR receiver that&#8217;s connected to the antennas and the SDR Connect software that talks remotely to it, the NodeRed-based satellite rotator controller, the Hamlib rigctld library for controlling the 9700, the com0com program for creating virtual COM ports needed to talk to the SDR Connect program, and finally the Skyroof program that controls everything for satellite passes. This is an AI-compiled list of configurations that have worked so far; however getting everything together is still a work in progress. If any readers are interested in this project please contact Jon WB2MNF.<\/p>\n\n\n\n<p><strong>Comprehensive Setup Guide: IC-9700 CAT via Hamlib + Custom Node-RED Rotator + SDRconnect (nRSP-ST) Bridge in SkyRoof<\/strong><\/p>\n\n\n\n<p><strong>1. Overview &amp; Architecture<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Primary Rig (TX\/Uplink &amp; Primary RX)<\/strong>: Icom IC-9700 transceiver (CI-V address 0xA2), controlled via Hamlib rigctld.<\/li>\n\n\n\n<li><strong>CAT for IC-9700<\/strong>: rigctld connects to virtual COM port created by Icom Remote Utility.<\/li>\n\n\n\n<li><strong>SDR RX Bridge (Secondary\/Downlink Monitoring)<\/strong>: nRSP-ST remote via SDRconnect; bridged using SkyCat (skycatd.exe, model -m 2014) for frequency\/mode\/Doppler sync if SkyRoof integrates it.<\/li>\n\n\n\n<li><strong>SkyRoof<\/strong> (VE3NEA satellite tracking software): Handles satellite prediction, Doppler correction, tunes IC-9700 via Hamlib rigctld (TCP 4531), controls rotator via Hamlib interface to Node-RED.<\/li>\n\n\n\n<li><strong>Rotator<\/strong>: Custom Node-RED implementation at 192.168.50.14:1880\/ui (browser\/manual access); SkyRoof uses Hamlib rotctld protocol (TCP to Node-RED&#8217;s listening port, e.g., 4533 or custom).<\/li>\n\n\n\n<li><strong>PTT<\/strong>: Handled by ptt_toggle.py script (likely sends Hamlib PTT command &#8216;T&#8217; to rigctld or toggles virtual line).<\/li>\n\n\n\n<li><strong>Launch Programs<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Rigctl 9700.bat<\/strong>: Starts rigctld for IC-9700.<\/li>\n\n\n\n<li><strong>skycat_SDR.bat<\/strong>: Starts skycatd.exe for SDRconnect bridge.<\/li>\n\n\n\n<li><strong>ptt_toggle.py<\/strong>: Python script for software PTT toggle.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>SkyRoof uses TCP-based external daemons (rigctld\/skycatd) for CAT; no direct serial except via Icom Utility for rigctld input.<\/p>\n\n\n\n<p><strong>2. Prerequisites<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IC-9700: CI-V address 0xA2, baud 115200; Remote Utility (e.g., RS-BA1) running to create virtual COM port.<\/li>\n\n\n\n<li>Hamlib: 4.7+ installed (your path).<\/li>\n\n\n\n<li>SkyCat: v1.6+ (includes skycatd.exe and .json files; -m 2014 for SDRplay\/SDRconnect bridge).<\/li>\n\n\n\n<li>SDRconnect: nRSP-ST remote configured (IP\/port).<\/li>\n\n\n\n<li>SkyRoof: Latest (v1.26+; supports Hamlib rigctld for IC-9700, optional SkyCAT integration).<\/li>\n\n\n\n<li>Node-RED: On 192.168.50.14, with Hamlib rotctld-compatible flow (listens for rotator commands).<\/li>\n\n\n\n<li>com0com: Pair COM9 \u2194 COM10 (for SDR bridge if SkyRoof\/SkyCat uses serial side).<\/li>\n\n\n\n<li>PuTTY: For testing.<\/li>\n\n\n\n<li>Python: Installed for ptt_toggle.py.<\/li>\n\n\n\n<li>Batch files: Rigctl 9700.bat, skycat_SDR.bat (create these with your commands).<\/li>\n<\/ul>\n\n\n\n<p><strong>3. Step-by-Step Configuration<\/strong><\/p>\n\n\n\n<p><strong>Step 1: IC-9700 &amp; Icom Remote Utility<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start Icom Remote Utility.<\/li>\n\n\n\n<li>Note virtual COM port created (e.g., COMx \u2014 check Device Manager or utility window).<\/li>\n\n\n\n<li>IC-9700 menu: CI-V Address A2, Baud 115200, USB Port Unlink from REMOTE.<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 2: Create\/Run Rigctl 9700.bat (for IC-9700)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create batch file (e.g., desktop shortcut: Rigctl 9700.bat) with:<\/li>\n<\/ul>\n\n\n\n<p>text<\/p>\n\n\n\n<p>@echo off<\/p>\n\n\n\n<p>&#8220;C:\\Program Files\\hamlib-w64-4.7.0\\hamlib-w64-4.7.0\\bin\\rigctld.exe&#8221; -m 3081 -r COMx -s 115200 -c 0xA2 -T 0.0.0.0 -t 4531 -vv<\/p>\n\n\n\n<p>pause<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Replace COMx with actual Icom virtual port.<\/li>\n\n\n\n<li>-t 4531: Dedicated TCP port for IC-9700.<\/li>\n\n\n\n<li>Double-click to launch (keep window open).<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 3: Create\/Run skycat_SDR.bat (for SDRconnect Bridge)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create batch file (e.g., skycat_SDR.bat) with:<\/li>\n<\/ul>\n\n\n\n<p>text<\/p>\n\n\n\n<p>@echo off<\/p>\n\n\n\n<p>&#8220;C:\\Users\\Jon Pearce\\Downloads\\SkyCat_1.6\\skycatd.exe&#8221; -m 2014 -s 57600 -t 4531 -vvv -r COM9<\/p>\n\n\n\n<p>pause<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>-m 2014: SDRconnect\/SDRplay bridge model.<\/li>\n\n\n\n<li>-r COM9: One side of com0com pair.<\/li>\n\n\n\n<li>If SkyCat exposes TCP (check SkyCat docs), SkyRoof can point to its port instead of serial.<\/li>\n\n\n\n<li>Double-click to launch (keep open).<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 4: com0com for SDR Bridge<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pair: COM9 (SkyCat) \u2194 COM10 (if SkyRoof needs serial access to bridge).<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 5: Rotator (Custom Node-RED)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Browser access: <a href=\"http:\/\/192.168.50.14:1880\/ui\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/192.168.50.14:1880\/ui<\/a> for manual control.<\/li>\n\n\n\n<li>SkyRoof rotator settings: Hamlib type, host 192.168.50.14, port (e.g., 4533 \u2014 confirm in Node-RED flow for rotctld listener).<\/li>\n\n\n\n<li>Node-RED flow emulates rotctld protocol for azimuth commands.<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 6: SkyRoof Settings<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tools \u2192 Settings:\n<ul class=\"wp-block-list\">\n<li>CAT Control (TX): Host 127.0.0.1, Port 4531 (rigctld for IC-9700), Enabled.<\/li>\n\n\n\n<li>RX CAT: Disable (since waterfall not used; use SDRconnect separate if needed).<\/li>\n\n\n\n<li>Rotator: Hamlib, IP 192.168.50.14, correct port.<\/li>\n\n\n\n<li>Ignore Dial Knob: Optional.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>No SDR waterfall integration in SkyRoof (minimize or disable display).<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 7: PTT<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Run <strong>ptt_toggle.py<\/strong> (double-click desktop Python script).<\/li>\n\n\n\n<li>Integrates with SkyRoof PTT button\/hotkey; sends command to rigctld (IC-9700).<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 8: Startup Sequence<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Launch Icom Remote Utility (creates virtual COM).<\/li>\n\n\n\n<li>Double-click <strong>Rigctl 9700.bat<\/strong> (starts rigctld for IC-9700).<\/li>\n\n\n\n<li>Double-click <strong>skycat_SDR.bat<\/strong> (starts SkyCat for SDR bridge).<\/li>\n\n\n\n<li>Launch SkyRoof \u2192 enable CAT\/Rotator.<\/li>\n\n\n\n<li>Run ptt_toggle.py as needed.<\/li>\n\n\n\n<li>Start SDRconnect \u2192 connect nRSP-ST (separate window for RX if desired).<\/li>\n<\/ol>\n\n\n\n<p><strong>Step 9: Testing<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PuTTY (Telnet):\n<ul class=\"wp-block-list\">\n<li>127.0.0.1 port 4531 \u2192 IC-9700 (commands like f for freq, ? for help).<\/li>\n\n\n\n<li>If secondary NET: Test 4532 or other.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>SkyRoof freq change \u2192 IC-9700 tunes.<\/li>\n\n\n\n<li>Rotator az command \u2192 Node-RED UI updates.<\/li>\n<\/ul>\n\n\n\n<p><strong>4. Troubleshooting<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rigctld: Verify COMx, baud, CI-V; check verbose output.<\/li>\n\n\n\n<li>SkyCat: Confirm -m 2014 works with SDRconnect (check SkyCat GitHub .json files).<\/li>\n\n\n\n<li>Rotator: Test Node-RED Hamlib port independently (e.g., rotctl -m 1 -r 192.168.50.14 -t [port]).<\/li>\n\n\n\n<li>Conflicts: Close other CAT apps; ensure daemons run first.<\/li>\n<\/ul>\n\n\n\n<p><strong>5. Summary Diagram (Text)<\/strong><\/p>\n\n\n\n<p>text<\/p>\n\n\n\n<p>SkyRoof (Satellite Tracking\/Doppler)<\/p>\n\n\n\n<p>&nbsp; \u251c\u2500\u2500 CAT (TX) \u2192 127.0.0.1:4531 \u2192 Rigctl 9700.bat (rigctld -m 3081) \u2192 Icom Remote Utility Virtual COM \u2192 IC-9700<\/p>\n\n\n\n<p>&nbsp; \u251c\u2500\u2500 Rotator \u2192 Hamlib interface \u2192 192.168.50.14:[port] (Node-RED rotctld emulation) \u2192 Physical rotator<\/p>\n\n\n\n<p>&nbsp; \u2514\u2500\u2500 SDR RX Bridge (optional) \u2192 skycat_SDR.bat (skycatd -m 2014, COM9) \u2194 com0com COM10 \u2194 SDRconnect \u2192 nRSP-ST (separate RX)<\/p>\n\n\n\n<p>PTT \u2192 ptt_toggle.py \u2192 rigctld command<\/p>\n\n\n\n<p>Test: PuTTY telnet 127.0.0.1 4531<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Below are notes on an ongoing effort to be able to remotely operate the GCARC satellite station. That&#8217;s based on several functions &#8211; the IC-9700&#8217;s &#8220;Icom Remote Utility&#8221; software which is an extra-cost option that I can&#8217;t post here, plus the nRSP-ST SDR receiver that&#8217;s connected to the antennas and the SDR Connect software that [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2848","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/pages\/2848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/comments?post=2848"}],"version-history":[{"count":1,"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/pages\/2848\/revisions"}],"predecessor-version":[{"id":2851,"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/pages\/2848\/revisions\/2851"}],"wp:attachment":[{"href":"https:\/\/wp.w2mmd.org\/wp\/wp-json\/wp\/v2\/media?parent=2848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}