🎯 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