🎯 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