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
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
90 lines
3.3 KiB
ReStructuredText
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>`_
|