Script de instalare SDRPlay: Diferență între versiuni

De la YO3ITI
Sari la navigare Sari la căutare
Pagină nouă: Acest script se găsește și pe github la adresa [https://github.com/yo3iti/Dual-SDR-install.git https://github.com/yo3iti/Dual-SDR-install.git] <syntaxhighlight lang="sh"> #!/bin/bash # install_sdr_fixed.sh - Fixed installation script for Raspberry Pi set -e echo "===== SDR Interface Installation (Fixed) =====" # Check if running as root if [ "$EUID" -eq 0 ]; then echo "WARNING: Don't run as root during build. Run specific commands with sudo." echo "Usage: ./in...
 
Fără descriere a modificării
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
Script pentru instalarea tuturor pachetelor necesare pentru utilizarea SDRPlay pe Raspberry Pi.
Acest script se găsește și pe github la adresa [https://github.com/yo3iti/Dual-SDR-install.git https://github.com/yo3iti/Dual-SDR-install.git]
Acest script se găsește și pe github la adresa [https://github.com/yo3iti/Dual-SDR-install.git https://github.com/yo3iti/Dual-SDR-install.git]
Este foarte important să se instaleze înainte [https://www.sdrplay.com/api/ driverele oficiale pentru SDRPlay].


<syntaxhighlight lang="sh">
<syntaxhighlight lang="sh">
Linia 15: Linia 18:
     exit 1
     exit 1
fi
fi
.....
</syntaxhighlight>


# Update system
(restul pe [https://github.com/yo3iti/Dual-SDR-install.git github])
echo "[1/7] Updating system..."
sudo apt-get update
sudo apt-get upgrade -y
 
# Install system dependencies
echo "[2/7] Installing system packages..."
sudo apt-get install -y \
    python3-pip \
    python3-dev \
    build-essential \
    cmake \
    git \
    libusb-1.0-0-dev \
    pkg-config \
    libxml2-dev \
    bison \
    flex \
    libavahi-client-dev \
    libavahi-common-dev \
    libserialport-dev \
    libcdk5-dev \
    libaio-dev \
    libzstd-dev
 
# Create build directory
BUILD_DIR="$HOME/sdr_build"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
 
# ===== STEP 1: Install libiio FIRST (critical!) =====
echo "[3/7] Installing libiio..."
 
if [ -d "libiio" ]; then
    rm -rf libiio
fi
 
git clone https://github.com/analogdevicesinc/libiio.git
cd libiio
git checkout v0.25  # Use stable version
 
mkdir -p build && cd build
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DWITH_SERIAL_BACKEND=ON \
    -DENABLE_IPV6=ON
 
make -j$(nproc)
sudo make install
sudo ldconfig
 
# Verify libiio installation
if ! pkg-config --exists libiio; then
    echo "ERROR: libiio pkg-config not found"
    exit 1
fi
 
echo "libiio installed successfully"
cd "$BUILD_DIR"
 
# ===== STEP 2: Install libad9361 with proper linking =====
echo "[4/7] Installing libad9361..."
 
if [ -d "libad9361-iio" ]; then
    rm -rf libad9361-iio
fi
 
git clone https://github.com/analogdevicesinc/libad9361-iio.git
cd libad9361-iio
 
# Fix CMakeLists.txt to link libiio properly
cat > CMakeLists_fix.patch <<'EOF'
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 2.8.7)
project(ad9361 C)
+# Find libiio
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(LIBIIO REQUIRED libiio)
+
set(LIBAD9361_VERSION_MAJOR 0)
set(LIBAD9361_VERSION_MINOR 2)
set(LIBAD9361_VERSION ${LIBAD9361_VERSION_MAJOR}.${LIBAD9361_VERSION_MINOR})
@@ -32,6 +35,8 @@ add_library(ad9361 SHARED ${LIBAD9361_SOURCES})
set_target_properties(ad9361 PROPERTIES
VERSION ${LIBAD9361_VERSION}
SOVERSION ${LIBAD9361_VERSION_MAJOR}
+ LINK_FLAGS "${LIBIIO_LDFLAGS}"
+ COMPILE_FLAGS "${LIBIIO_CFLAGS}"
)
target_link_libraries(ad9361 LINK_PRIVATE ${LIBIIO_LIBRARIES})
EOF
 
# Apply patch if CMakeLists doesn't already link libiio
if ! grep -q "pkg_check_modules(LIBIIO" CMakeLists.txt; then
    patch -p1 < CMakeLists_fix.patch || true
fi
 
mkdir -p build && cd build
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DLIBIIO_INCLUDEDIR=/usr/local/include \
    -DLIBIIO_LIBDIR=/usr/local/lib
 
make -j$(nproc)
sudo make install
sudo ldconfig
 
echo "libad9361 installed successfully"
cd "$BUILD_DIR"
 
# ===== STEP 3: Install SoapySDR =====
echo "[5/7] Installing SoapySDR..."
 
if [ -d "SoapySDR" ]; then
    rm -rf SoapySDR
fi
 
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
git checkout soapy-sdr-0.8.1  # Stable version
 
mkdir -p build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
 
echo "SoapySDR installed successfully"
cd "$BUILD_DIR"
 
# ===== STEP 4: Install SDRPlay API (if you have SDRPlay) =====
echo "[6/7] SDRPlay setup..."
echo "NOTE: SDRPlay requires manual API installation from https://www.sdrplay.com/downloads/"
echo "After installing SDRPlay API, install SoapySDRPlay3:"
echo ""
 
read -p "Do you have SDRPlay API installed? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    if [ -d "SoapySDRPlay3" ]; then
        rm -rf SoapySDRPlay3
    fi
   
    git clone https://github.com/pothosware/SoapySDRPlay3.git
    cd SoapySDRPlay3
    mkdir -p build && cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
    make -j$(nproc)
    sudo make install
    sudo ldconfig
   
    echo "SoapySDRPlay3 installed successfully"
else
    echo "Skipping SoapySDRPlay3 installation"
fi
 
cd "$BUILD_DIR"
 
# ===== STEP 5: Install Python packages =====
echo "[7/7] Installing Python packages..."
 
# Upgrade pip
pip3 install --upgrade pip
 
# Install basic packages
pip3 install numpy scipy matplotlib pyyaml tqdm
 
# Install pyadi-iio (for PlutoSDR)
pip3 install pyadi-iio
 
# Install SoapySDR Python bindings
cd "$BUILD_DIR/SoapySDR"
cd python
pip3 install .
 
echo ""
echo "===== Installation Complete ====="
echo ""
echo "Installed components:"
echo "  - libiio (for PlutoSDR)"
echo "  - libad9361 (for PlutoSDR)"
echo "  - SoapySDR"
echo "  - Python packages"
echo ""
echo "Testing installations:"
echo ""
 
# Test libiio
echo "Testing libiio..."
if command -v iio_info &> /dev/null; then
    echo "✓ iio_info available"
    iio_info -V
else
    echo "✗ iio_info not found"
fi
 
# Test SoapySDR
echo ""
echo "Testing SoapySDR..."
if command -v SoapySDRUtil &> /dev/null; then
    echo "✓ SoapySDRUtil available"
    SoapySDRUtil --info
else
    echo "✗ SoapySDRUtil not found"
fi
 
# Test Python imports
echo ""
echo "Testing Python imports..."
python3 << EOF
import sys
try:
    import numpy
    print("✓ numpy")
except:
    print("✗ numpy")
   
try:
    import scipy
    print("✓ scipy")
except:
    print("✗ scipy")
   
try:
    import adi
    print("✓ pyadi-iio (PlutoSDR)")
except:
    print("✗ pyadi-iio")
   
try:
    import SoapySDR
    print("✓ SoapySDR")
except:
    print("✗ SoapySDR")
EOF
 
echo ""
echo "Quick start:"
echo ""
echo "For PlutoSDR (USB):"
echo "  iio_info -u ip:192.168.2.1"
echo "  python3 -c 'import adi; sdr=adi.Pluto(\"ip:192.168.2.1\"); print(sdr)'"
echo ""
echo "For SDRPlay:"
echo "  SoapySDRUtil --probe=driver=sdrplay"
echo ""
echo "Clean up build files:"
echo "  rm -rf $BUILD_DIR"
</syntaxhighlight>

Versiunea curentă din 9 aprilie 2026 21:05

Script pentru instalarea tuturor pachetelor necesare pentru utilizarea SDRPlay pe Raspberry Pi. Acest script se găsește și pe github la adresa https://github.com/yo3iti/Dual-SDR-install.git

Este foarte important să se instaleze înainte driverele oficiale pentru SDRPlay.

#!/bin/bash
# install_sdr_fixed.sh - Fixed installation script for Raspberry Pi

set -e

echo "===== SDR Interface Installation (Fixed) ====="

# Check if running as root
if [ "$EUID" -eq 0 ]; then 
    echo "WARNING: Don't run as root during build. Run specific commands with sudo."
    echo "Usage: ./install_sdr_fixed.sh"
    exit 1
fi
.....

(restul pe github)