δΈ­ζ–‡

Installation Guide

From hardware connection to software configuration, set up a complete remote transceiver control system in 5 minutes

πŸ“¦ Hardware Requirements

Required Hardware

Device Specifications Notes
Transceiver CAT-capable amateur radio IC-7100, FT-991A, IC-R9000, etc.
Computer macOS or Linux 8GB+ RAM recommended, USB ports
USB Sound Card 16kHz sample rate support USB Audio CODEC recommended
Serial Cable USB-to-Serial (RS-232) For transceiver control
Audio Cables 3.5mm audio cables Transceiver audio in/out

Optional Hardware

Device Purpose
ATR-1000 Tuner Automatic tuner, power/SWR monitoring
RTL-SDR Spectrum display
NanoVNA Antenna analysis

Connection Diagram

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      USB Serial      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ Transceiver │◄───────────────────►│ Computer β”‚
    β”‚  (IC-7100)  β”‚      USB Audio       β”‚ (macOS)  β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜β—„β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
           β”‚                                   β”‚
           β”‚ RF                                β”‚ Network
           β”‚                                   β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”                      β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
    β”‚   Antenna   β”‚                      β”‚Mobile/Tabβ”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    

πŸ’» System Requirements

Supported Operating Systems

🍎
macOS

10.15+ (Catalina and later)

Recommended
🐧
Linux

Ubuntu 20.04+, Debian 10+

Supported

Software Dependencies

Software Min Version Purpose Install Command
Python 3.9+ Backend runtime brew install python@3.12
Hamlib 4.0+ Transceiver control brew install hamlib
PyAudio 0.2.11+ Audio capture pip3 install pyaudio
Tornado 6.0+ Web server pip3 install tornado

πŸš€ Installation Steps

1

Clone Repository

git clone https://github.com/cheenle/UHRR_mac.git
cd UHRR_mac
2

Install System Dependencies (macOS)

# Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install dependencies
brew install python@3.12 hamlib portaudio ffmpeg

# Install Python packages
pip3 install pyaudio tornado numpy sounddevice soundfile
3

Install WDSP (Optional, Recommended)

# Download WDSP source
cd /tmp
git clone https://github.com/g0orx/wdsp.git
cd wdsp
make

# Install library
sudo cp libwdsp.dylib /usr/local/lib/

# For Linux
# sudo cp libwdsp.so /usr/local/lib/ && sudo ldconfig

πŸ’‘ WDSP provides professional NR2 spectral noise reduction, significantly improving receive audio quality

4

Configure Transceiver Parameters

Edit MRRC.conf file:

# Transceiver configuration
[HAMLIB]
rig_pathname = /dev/cu.usbserial-230  # Modify as needed
rig_model = IC_M710                   # Transceiver model
rig_rate = 4800                       # Baud rate
stop_bits = 2

# Audio devices
[AUDIO]
outputdevice = USB Audio CODEC
inputdevice = USB Audio CODEC

# Server configuration
[SERVER]
port = 8877
certfile = certs/fullchain.pem
keyfile = certs/radio.vlsc.net.key
5

Start rigctld (Transceiver Control Daemon)

# IC-7100 example
rigctld -m 3070 -r /dev/cu.usbserial-230 -s 4800 -C stop_bits=2

# Or use control script
./mrrc_control.sh start-rigctld

πŸ“Œ Common transceiver model codes: IC-7100=3070, FT-991A=1035, IC-R9000=30003

βš™οΈ Configuration Details

MRRC.conf Complete Configuration

[SERVER]
port = 8877                           # Web server port
certfile = certs/fullchain.pem        # TLS certificate path
keyfile = certs/radio.vlsc.net.key    # TLS private key path
auth = FILE                           # Auth method: FILE/PAM
db_users_file = MRRC_users.db         # User database
debug = False                         # Debug mode

[AUDIO]
outputdevice = USB Audio CODEC        # Audio output device
inputdevice = USB Audio CODEC         # Audio input device
sample_rate = 48000                   # Sample rate
buffer_size = 256                     # Buffer size

[HAMLIB]
rig_pathname = /dev/cu.usbserial-230  # Transceiver serial device
rig_model = IC_M710                   # Transceiver model code
rig_rate = 4800                       # Baud rate
data_bits = 8
stop_bits = 2
serial_handshake = None

[CTRL]
interval_smeter_update = 0.5          # S-meter update interval (seconds)

[PANADAPTER]
sample_rate = 960000
center_freq = 68330000
gain = 10

[WDSP]
enabled = True
sample_rate = 48000
buffer_size = 256
nr2_enabled = True                    # Spectral noise reduction
nb_enabled = True                     # Noise blanker
anf_enabled = False                   # Auto notch filter
agc_mode = 3                          # AGC mode
bandpass_low = 300.0                  # Low cut frequency
bandpass_high = 2700.0                # High cut frequency

Find Audio Devices

python3 -c "
import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
    info = p.get_device_info_by_index(i)
    print(f'{i}: {info[\"name\"]} (in:{info[\"maxInputChannels\"]}, out:{info[\"maxOutputChannels\"]})')
p.terminate()
"

▢️ Start Services

Method 1: Use Control Script (Recommended)

# Start all services
./mrrc_control.sh start

# Check status
./mrrc_control.sh status

# View logs
./mrrc_control.sh logs 50

Method 2: Manual Start

# 1. Start rigctld
rigctld -m 3070 -r /dev/cu.usbserial-230 -s 4800

# 2. Start MRRC main service
python3 ./MRRC

# 3. Start ATR-1000 proxy (optional)
./mrrc_control.sh start-atr1000

Configure as System Service (macOS)

# Use install script
./mrrc_setup.sh install

# Or use launchd
launchctl load ~/Library/LaunchAgents/com.user.mrrc.plist
launchctl start com.user.mrrc

Access System

  • Desktop: https://your-server:8877/
  • Mobile: https://your-server:8877/mobile_modern.html
  • NanoVNA: https://your-server:8877/nanovna/NanoVNA/

πŸ”€ Multi-Instance Deployment

MRRC supports running multiple independent instances on a single server, each connecting to different transceivers/sound cards.

Create New Instance

# Create new instance (auto-generates config file)
./mrrc_multi.sh create radio1

# Configure instance parameters
# Edit MRRC.radio1.conf to set audio devices, serial port, etc.

Instance Control Commands

# Start specific instance
./mrrc_multi.sh start radio1

# Stop specific instance
./mrrc_multi.sh stop radio1

# View all instance status
./mrrc_multi.sh status

# View instance logs
./mrrc_multi.sh logs radio1 50

# List all instances
./mrrc_multi.sh list

Port Allocation Rules

Instance Name Web Port rigctld Port Socket Path
radio1 8891 4531 /tmp/mrrc_radio1.sock
radio2 8892 4532 /tmp/mrrc_radio2.sock
radio3 8893 4533 /tmp/mrrc_radio3.sock

πŸ“Œ Each instance has independent ATU learning parameters stored in atr1000_tuner.json

🐳 Docker Deployment

Quick Start

# Build image
docker-compose build

# Start service
docker-compose up -d

# View logs
docker-compose logs -f

Multi-Instance Docker Deployment

# Use multi-instance config
docker-compose -f docker-compose.multi.yml up -d

Notes

  • Map serial devices to container: devices: - /dev/cu.usbserial-230:/dev/ttyUSB0
  • Audio devices require PulseAudio or ALSA configuration
  • Host network mode recommended for best performance

πŸ”§ Troubleshooting

❌ Cannot Connect to WebSocket

Symptom: Page shows "Disconnected"

Solution:

  • Check if firewall allows port 8877
  • Verify TLS certificate path is correct
  • View MRRC logs: ./mrrc_control.sh logs

❌ Transceiver Not Responding

Symptom: Frequency/mode cannot be changed

Solution:

  • Check serial device path: ls /dev/cu.*
  • Verify rigctld is running: ps aux | grep rigctld
  • Test rigctl: rigctl -m 3070 f

❌ No Audio Output

Symptom: Cannot hear receive audio

Solution:

  • Check audio device name is correct
  • Test audio device: ./dev_tools/test_audio.py
  • Check system volume settings

❌ PTT Not Working

Symptom: Press transmit button, no response

Solution:

  • Confirm page power button is ON
  • Check WebSocket connection status
  • View PTT logs: ./mrrc_control.sh logs | grep PTT

Debug Tools

# Test audio
python3 dev_tools/test_audio.py

# Test connection
python3 dev_tools/test_connection.py

# Debug audio page
open dev_tools/debug_audio.html

Need Help?

Check technical documentation or join community discussion