๐Ÿš€ Installation Script Optimization

Enhanced YateBTS Installation with Advanced Error Handling

Comprehensive optimization of the installation script with progress tracking, error recovery, and system optimization

๐Ÿ”ง Optimization Overview

The installation script has been completely rewritten and optimized for better reliability, user experience, and system performance. This guide covers all the improvements and new features.

โœ… Key Improvements

Enhanced error handling, progress tracking, backup functionality, parallel processing, and comprehensive logging for a professional installation experience.

๐Ÿ“Š Feature Comparison

Feature Original Script Optimized Script Improvement
Error Handling Basic exit on error Comprehensive error recovery NEW
Progress Tracking Simple logging Visual progress bar + steps NEW
Backup System None Automatic configuration backup NEW
Parallel Processing Fixed -j4 Configurable parallel jobs IMPROVED
Logging System Basic file logging Multi-level logging with colors IMPROVED
System Validation Basic checks Comprehensive pre/post validation IMPROVED
Dry Run Mode Not available Full dry run support NEW
Rollback Support None Automatic rollback on failure NEW
Resource Management Basic Advanced memory/CPU optimization OPTIMIZED

๐Ÿ†• New Features

๐Ÿ”„ Enhanced Error Handling

  • Comprehensive error recovery mechanisms
  • Automatic rollback on critical failures
  • Detailed error reporting with context
  • Graceful handling of partial failures
  • Error statistics and reporting

๐Ÿ“Š Progress Tracking

  • Visual progress bar with percentage
  • Step-by-step progress indication
  • Estimated time remaining
  • Real-time status updates
  • Progress persistence across restarts

๐Ÿ’พ Backup System

  • Automatic configuration backup
  • Timestamped backup versions
  • Selective backup restoration
  • Backup integrity verification
  • Space-efficient backup storage

โšก Performance Optimization

  • Configurable parallel processing
  • Memory usage optimization
  • CPU governor management
  • System resource monitoring
  • Device-specific optimizations

๐Ÿ” Advanced Logging

  • Multi-level logging (DEBUG, INFO, WARNING, ERROR)
  • Color-coded console output
  • Structured log format
  • Log rotation and management
  • Debug mode for troubleshooting

๐Ÿงช Testing Features

  • Dry run mode for testing
  • Configuration validation
  • System compatibility checks
  • Installation verification
  • Performance benchmarking

๐Ÿš€ Usage Examples

Basic Installation

# Auto-detect SDR device and install
./install-optimized.sh

# Install for specific SDR device
./install-optimized.sh --bladerf-micro-a4
./install-optimized.sh --limesdr-mini

Advanced Options

# Verbose installation with progress tracking
./install-optimized.sh --verbose --bladerf-micro-a4

# Dry run to see what would be installed
./install-optimized.sh --dry-run --verbose

# Force installation (overwrite existing)
./install-optimized.sh --force --limesdr-mini

# Quiet installation (minimal output)
./install-optimized.sh --quiet --bladerf-micro-a4

# Custom parallel jobs for compilation
./install-optimized.sh --parallel-jobs 8 --bladerf-micro-a4

# Skip dependency installation (for testing)
./install-optimized.sh --skip-dependencies --dry-run

Backup and Recovery

# Install with automatic backup
./install-optimized.sh --bladerf-micro-a4

# Install without backup (faster)
./install-optimized.sh --no-backup --limesdr-mini

# Restore from backup (manual process)
sudo cp -r /var/backups/yatebts/configs/backup_20241204_143022/* /etc/yate/

โš™๏ธ Configuration Options

๐Ÿ”ง SDR Device Options

  • --sdr-device auto - Auto-detect device
  • --bladerf-micro-a4 - Force BladeRF Micro A4
  • --limesdr-mini - Force LimeSDR Mini

๐Ÿ“Š Output Control

  • --verbose, -v - Enable verbose output
  • --quiet, -q - Suppress non-error output
  • --dry-run - Show what would be installed

๐Ÿ”„ Installation Control

  • --force - Force installation
  • --skip-dependencies - Skip dependency installation
  • --no-backup - Skip configuration backup

โšก Performance Options

  • --parallel-jobs N - Set parallel compilation jobs
  • Automatic CPU core detection
  • Memory usage optimization
  • Device-specific tuning

๐Ÿ› ๏ธ Error Handling and Recovery

Error Types and Handling

โŒ Critical Errors

  • System requirements not met
  • Missing sudo privileges
  • Insufficient disk space
  • Architecture incompatibility
  • Network connectivity issues

โš ๏ธ Recoverable Errors

  • Package installation failures
  • Service startup issues
  • Configuration file errors
  • Permission problems
  • Device detection failures

๐Ÿ”„ Recovery Mechanisms

  • Automatic retry with backoff
  • Alternative installation methods
  • Configuration file repair
  • Service restart attempts
  • Rollback to previous state

Error Recovery Examples

# Example error recovery output
[ERROR] Package installation failed: libbladerf2
[INFO] Attempting alternative installation method...
[INFO] Using apt-get instead of apt...
[SUCCESS] Package installed successfully

[WARNING] Service failed to start: yatebts
[INFO] Checking service configuration...
[INFO] Repairing configuration file...
[INFO] Restarting service...
[SUCCESS] Service started successfully

๐Ÿ“ˆ Performance Optimizations

System-Level Optimizations

# CPU Governor Optimization
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils

# Memory Management
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5

# Network Buffer Optimization
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728

# Real-time Scheduling
kernel.sched_rt_runtime_us = -1
kernel.sched_rt_period_us = 1000000

Device-Specific Optimizations

๐Ÿ”ง BladeRF Micro A4

  • USB buffer size optimization
  • Real-time priority scheduling
  • Power management settings
  • Clock source configuration
  • Buffer size tuning

๐Ÿ”ง LimeSDR Mini

  • SoapySDR optimization
  • LimeSuite configuration
  • USB autosuspend management
  • Temperature compensation
  • Calibration settings

๐Ÿ” Logging and Debugging

Log Levels and Output

# Log levels available
DEBUG   - Detailed debugging information
INFO    - General information messages
WARNING - Warning messages (non-critical)
ERROR   - Error messages (recoverable)
SUCCESS - Success confirmation messages
STEP    - Progress step indicators

Log File Locations

# Main installation log
/var/log/yatebts-install.log

# Configuration backups
/var/backups/yatebts/configs/

# Service logs
sudo journalctl -u yatebts
sudo journalctl -u asterisk

# System logs
/var/log/syslog
/var/log/kern.log

Debug Mode Usage

# Enable debug mode
./install-optimized.sh --verbose --dry-run

# Check specific service logs
sudo journalctl -u yatebts --since "1 hour ago"

# Validate configuration
sudo yatebts -c /etc/yate/ybts.conf --validate

# Test SDR device detection
lsusb | grep -E "(2cf0:5246|1d50:6108|0403:601f)"

๐Ÿ”„ Migration from Original Script

๐Ÿ“‹ Migration Steps

To migrate from the original installation script to the optimized version:

# 1. Backup existing installation
sudo systemctl stop yatebts asterisk
sudo cp -r /etc/yate /var/backups/yatebts-original/
sudo cp -r /etc/asterisk /var/backups/yatebts-original/

# 2. Download optimized script
wget https://raw.githubusercontent.com/TelcoSec/RFS-Portable-BTS/main/install/install-optimized.sh
chmod +x install-optimized.sh

# 3. Run optimized installation
./install-optimized.sh --force --bladerf-micro-a4

# 4. Verify installation
sudo systemctl status yatebts asterisk
./install-optimized.sh --validate

โš ๏ธ Important Notes

The optimized script is backward compatible but includes many new features. Always backup your existing configuration before running the optimized version.

๐Ÿš€ Try the Optimized Installation

Experience the enhanced installation script with better error handling, progress tracking, and system optimization

๐Ÿ“– Getting Started ๐Ÿ”ง Troubleshooting ๐Ÿ’ฌ Community Support