⚡ Performance Optimization Guide

Maximize Your RFS-Portable-BTS Performance

Comprehensive optimization strategies for BladeRF Micro A4 and LimeSDR Mini

🎯 Overview

This guide provides comprehensive optimization strategies to maximize the performance of your RFS-Portable-BTS system with BladeRF Micro A4 or LimeSDR Mini SDR devices. Follow these recommendations to achieve optimal performance for IoT security testing and GSM BTS operations.

✅ Key Benefits

Proper optimization can improve system performance by 30-50%, reduce latency, increase throughput, and enhance stability for continuous operation.

🔧 System-Level Optimizations

💻 CPU Optimization

  • Set CPU governor to performance mode
  • Disable CPU frequency scaling
  • Configure CPU affinity for YateBTS processes
  • Enable CPU turbo boost
  • Optimize interrupt handling
  • Use real-time scheduling

🧠 Memory Optimization

  • Increase buffer sizes for USB operations
  • Optimize virtual memory settings
  • Configure memory overcommit handling
  • Enable huge pages for better performance
  • Optimize swap configuration
  • Monitor memory usage patterns

🔌 USB Optimization

  • Disable USB autosuspend
  • Increase USB buffer sizes
  • Optimize USB transfer modes
  • Configure USB power management
  • Use USB 3.0 ports exclusively
  • Monitor USB bandwidth usage

System Optimization Script

#!/bin/bash
# System Optimization Script for RFS-Portable-BTS

echo "Applying system optimizations..."

# CPU Governor
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# USB Buffer Sizes
echo 1000 | sudo tee /sys/module/usbcore/parameters/usbfs_memory_mb

# Kernel Parameters
cat << 'EOF' | sudo tee -a /etc/sysctl.conf
# RFS-Portable-BTS optimizations
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
kernel.shmmax = 134217728
kernel.shmall = 32768
kernel.sched_rt_runtime_us = -1
kernel.sched_rt_period_us = 1000000
EOF

# Apply kernel parameters
sudo sysctl -p

echo "System optimizations completed"

📡 BladeRF Micro A4 Optimizations

🎛️ RF Performance

  • Optimal gain settings (45dB recommended)
  • Enable DC and IQ correction
  • Configure proper bandwidth (20MHz)
  • Set optimal sample rate (20MSPS)
  • Enable automatic calibration
  • Optimize antenna matching

⚡ USB Performance

  • Use USB 3.0 SuperSpeed mode
  • Increase buffer sizes (16KB)
  • Optimize transfer timeouts
  • Configure bulk transfer sizes
  • Disable power management
  • Monitor USB bandwidth

🔧 Device Settings

  • Internal clock reference (38.4MHz)
  • Optimized GPIO configuration
  • Proper bias tee settings
  • Antenna port configuration
  • Calibration timeout optimization
  • Error correction settings

BladeRF Micro A4 Optimization Script

#!/bin/bash
# BladeRF Micro A4 Optimization Script

echo "Optimizing BladeRF Micro A4..."

# Create optimized configuration
cat << 'EOF' > /opt/yatebts/bladerf-micro-a4-optimized.conf
[transceiver]
type=bladerf
device=bladerf:0
frequency=900000000
bandwidth=20000000
samplerate=20000000
gain=45
tx_gain=45
rx_gain=45
dc_correction=yes
iq_correction=yes
buffer_size=16384
num_buffers=32
stream_timeout=1000
clock_source=internal
clock_ref=38.4M
power_save=no
EOF

# Apply USB optimizations
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2cf0", ATTRS{idProduct}=="5246", ATTR{power/autosuspend}="-1"' | sudo tee -a /etc/udev/rules.d/88-bladerf-optimized.rules

# Reload udev rules
sudo udevadm control --reload-rules
sudo udevadm trigger

echo "BladeRF Micro A4 optimization completed"

📶 LimeSDR Mini Optimizations

🎛️ RF Performance

  • Optimal gain settings (30dB recommended)
  • Configure proper sample rate (13MSPS)
  • Set optimal bandwidth (10MHz)
  • Enable automatic calibration
  • Optimize antenna selection (LNAW)
  • Configure temperature compensation

⚡ SoapySDR Optimization

  • Optimize buffer sizes (8KB)
  • Configure transfer timeouts
  • Enable error correction
  • Optimize thread priorities
  • Configure retry mechanisms
  • Monitor performance metrics

🔧 Device Settings

  • Internal clock reference
  • Single channel configuration
  • Optimal LNA and PGA gains
  • Temperature monitoring
  • Calibration optimization
  • Power management settings

LimeSDR Mini Optimization Script

#!/bin/bash
# LimeSDR Mini Optimization Script

echo "Optimizing LimeSDR Mini..."

# Create optimized configuration
cat << 'EOF' > /opt/yatebts/limesdr-mini-optimized.conf
[transceiver]
radiodevice=soapy
radio_args=driver=lime,soapy=0
frequency=900000000
tx_attenuation=0
rx_gain=40
clockref=internal

[soapy]
device_args=driver=lime
sample_rate=13000000
bandwidth=10000000
rx_gain=30
tx_gain=30
channels=1
antenna=LNAW
clock_ref=internal
calibration=auto
EOF

# Apply USB optimizations
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6108", ATTR{power/autosuspend}="-1"' | sudo tee -a /etc/udev/rules.d/64-limesdr-optimized.rules

# Reload udev rules
sudo udevadm control --reload-rules
sudo udevadm trigger

echo "LimeSDR Mini optimization completed"

📊 Performance Monitoring

📈 Key Performance Metrics

Monitor these metrics to ensure optimal performance:

  • CPU Usage: Should be 20-40% during active calls
  • Memory Usage: Should be 600-1000MB during operation
  • USB Bandwidth: Monitor for bottlenecks
  • Temperature: Keep below 70°C for sustained operation
  • Error Rates: Should be minimal (<0.1%)
  • Latency: Should be <50ms for real-time operations

Performance Monitoring Script

#!/bin/bash
# Performance Monitoring Script

echo "=== RFS-Portable-BTS Performance Monitor ==="

# CPU Usage
echo "CPU Usage: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)%"

# Memory Usage
echo "Memory Usage: $(free | grep Mem | awk '{printf("%.1f%%", $3/$2 * 100.0)}')"

# Temperature
if [ -f /sys/class/thermal/thermal_zone*/temp ]; then
    temp=$(cat /sys/class/thermal/thermal_zone*/temp | head -1)
    temp_c=$((temp/1000))
    echo "CPU Temperature: ${temp_c}°C"
fi

# USB Device Status
echo "USB Devices:"
lsusb | grep -E "(2cf0:5246|1d50:6108|0403:601f)"

# YateBTS Process Status
echo "YateBTS Status: $(systemctl is-active yatebts)"

# Network Statistics
echo "Network Statistics:"
netstat -i | head -5

echo "=== Performance Monitor Complete ==="

🚀 Advanced Optimizations

🔧 Kernel Tuning

  • Real-time kernel patches
  • CPU isolation for YateBTS
  • Interrupt affinity binding
  • Memory locking optimization
  • I/O scheduler tuning
  • Network buffer optimization

⚡ Hardware Optimizations

  • High-quality power supply
  • Active cooling system
  • Low-latency storage (NVMe)
  • Quality USB cables
  • Professional antennas
  • RF shielding and grounding

🎯 Application Tuning

  • YateBTS process priorities
  • Buffer size optimization
  • Thread pool configuration
  • Memory pool tuning
  • Garbage collection optimization
  • Log level optimization

⚠️ Advanced Optimization Warning

Advanced optimizations may require kernel modifications and can affect system stability. Always test in a development environment first and maintain system backups.

📋 Optimization Checklist

✅ Basic Optimizations

  • Set CPU governor to performance
  • Disable USB autosuspend
  • Increase USB buffer sizes
  • Configure device-specific settings
  • Apply kernel parameter optimizations
  • Monitor system performance

🔧 Intermediate Optimizations

  • Configure real-time priorities
  • Optimize buffer configurations
  • Fine-tune gain settings
  • Enable calibration features
  • Configure error correction
  • Monitor temperature and power

🚀 Advanced Optimizations

  • Kernel real-time patches
  • CPU isolation and affinity
  • Hardware-level optimizations
  • Custom firmware modifications
  • Professional RF setup
  • Continuous monitoring systems

🚀 Optimize Your System Now

Use our automated optimization scripts to maximize your RFS-Portable-BTS performance

📖 Getting Started 🔧 Troubleshooting 💬 Community Support