ria-toolkit-oss/docs/source/sdr_guides/thinkrf.rst
M muq a68a325cb4
All checks were successful
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 6m4s
Build Project / Build Project (3.10) (pull_request) Successful in 11m52s
Build Project / Build Project (3.11) (pull_request) Successful in 11m50s
Build Project / Build Project (3.12) (pull_request) Successful in 11m51s
Test with tox / Test with tox (3.11) (pull_request) Successful in 12m10s
Test with tox / Test with tox (3.12) (pull_request) Successful in 6m22s
Test with tox / Test with tox (3.10) (pull_request) Successful in 12m28s
Update SDR guides and fix Sphinx warnings for release
Fix Sphinx build errors:
- Add missing blank lines in rtlsdr.rst code-block directives
- Rename duplicate label in examples/sdr/index.rst
- Fix field list indentation in usrp.py and hackrf.py docstrings

Update SDR setup guides (all guides now cover both pip/venv and Radioconda):
- rtlsdr: switch to rtl-sdr-blog fork (required for rtlsdr_set_dithering
  symbol), add pyrtlsdr==0.3.0 and setuptools==69.5.1 version pinning,
  preserve Radioconda blacklist and udev symlink paths alongside new steps
- pluto: simplify primary path to apt install libiio, add Avahi network
  discovery note, preserve Radioconda udev symlink as alternative
- hackrf: note out-of-box support, preserve Radioconda udev symlink
- blade: note no extra Python packages needed, preserve Radioconda udev symlinks
- usrp: add build-from-source path for pip/venv users with cmake flags,
  Python binding copy step, and version mismatch warning; keep conda install
  as primary option; preserve Radioconda udev symlink
- thinkrf: add lib2to3 install step, Python <=3.12 restriction, and full
  Python 3 patching command to replace internal script reference

Update copyright year to 2026 in conf.py
2026-04-21 12:29:18 -04:00

90 lines
3.3 KiB
ReStructuredText

.. _thinkrf:
ThinkRF
====================
The ThinkRF series of spectrum analyzers and software-defined radio platforms are designed for advanced
RF signal monitoring, analysis, and wireless research. These devices
combine high-performance RF front ends with flexible software interfaces for a wide range of applications,
including spectrum monitoring, signal intelligence, and wireless testing.
ThinkRF devices offer wide frequency coverage, deep dynamic range, and real-time analysis capabilities.
They are built for professional and research-grade environments, offering Ethernet-based connectivity and
software APIs for remote control and integration into automated systems.
Supported Models
----------------
- **ThinkRF R5550**: A real-time spectrum analyzer with frequency coverage from 9 kHz to 27 GHz, 160 MHz real-time bandwidth,
and 100 MHz instantaneous FFT bandwidth.
Key Features
------------
- Frequency Range: 9 kHz to 27 GHz (depending on model).
- Bandwidth: Up to 160 MHz real-time bandwidth.
- Connectivity: Gigabit Ethernet interface for high-throughput streaming and remote control.
- Software Support: Compatible with ThinkRF APIs, GNU Radio, MATLAB, and third-party spectrum analysis software.
- Real-Time Analysis:
- Enables full-band, real-time spectral visibility for dynamic signal environments.
- Supports trigger-based capture and event-driven recording.
- Remote Operation:
- Designed for distributed deployments and networked operation through Ethernet.
- Can be integrated into automated RF monitoring systems or deployed for field data collection.
Limitations
-----------
- Requires external host for processing (no onboard CPU for user applications).
- Dependent on ThinkRF software drivers and API for device control.
- High data rate operation may require optimized network settings or storage systems.
Set up instructions (Linux)
---------------------------------
ThinkRF devices require the ``pyrf`` package, which is written in Python 2 syntax and must be patched
after installation to work with Python 3.
.. note::
``lib2to3`` was fully removed in Python 3.13. ThinkRF support is currently limited to
**Python 3.12 and below**.
1. Install ``lib2to3``:
On some distributions (including Ubuntu 24.04+), ``lib2to3`` is not included by default:
.. code-block:: bash
sudo apt install python3-lib2to3
2. Install ``pyrf``:
.. code-block:: bash
pip install pyrf
3. Patch ``pyrf`` for Python 3:
The ``pyrf`` package contains Python 2 syntax throughout (e.g., ``dict.iteritems()``, ``print``
statements). Run the following to automatically convert the entire package to Python 3:
.. code-block:: bash
python -c "
from lib2to3.refactor import RefactoringTool, get_fixers_from_package
import pyrf, os
pyrf_path = os.path.dirname(pyrf.__file__)
fixers = get_fixers_from_package('lib2to3.fixes')
tool = RefactoringTool(fixers)
tool.refactor_dir(pyrf_path, write=True)
print('Done')
"
.. note::
This patches the entire ``pyrf`` package in place, which is required for the driver to fully load.
Further Information
-------------------
- `ThinkRF Documentation <https://thinkrf.com/resources/>`_
- `ThinkRF Product Page <https://thinkrf.com/products/>`_
- `Pyrf Github Page <https://github.com/pyrf/pyrf>`_