Lab043: add hardware diagnostics and HackRF comparison tools

This commit is contained in:
LittleSam129
2026-08-21 17:33:57 +03:00
parent f0fa7e8a46
commit 42b0120eea
42 changed files with 8763 additions and 6 deletions

View File

@@ -41,12 +41,31 @@ class CapturedPrbsAnalysis:
modes: dict[str, lab043.PrbsModeMetrics]
def preflight_pluto() -> dict:
def discover_pluto_usb_uri() -> str:
"""Найти единственный Pluto+ через прямой USB-IIO без изменения сети."""
import iio
contexts = iio.scan_contexts()
candidates = sorted(
uri
for uri, description in contexts.items()
if uri.startswith("usb:") and "PlutoSDR" in description
)
if len(candidates) != 1:
raise RuntimeError(
"Ожидался ровно один USB-IIO контекст PlutoSDR, "
f"получено {len(candidates)}: {candidates}"
)
return candidates[0]
def preflight_pluto(uri: str = PLUTO_URI) -> dict:
"""Подтвердить IIO-контекст, PHY и первый TX-канал без передачи."""
import iio
context = iio.Context(PLUTO_URI)
context = iio.Context(uri)
phy = context.find_device("ad9361-phy")
tx_device = context.find_device("cf-ad9361-dds-core-lpc")
tx_channel = tx_device.find_channel("voltage0", True) if tx_device is not None else None
@@ -55,7 +74,7 @@ def preflight_pluto() -> dict:
if tx_device is None or tx_channel is None:
raise RuntimeError("IIO-контекст открыт, но первый TX-канал недоступен")
return {
"uri": PLUTO_URI,
"uri": uri,
"context_opened": True,
"phy_name": str(phy.name),
"tx_device_name": str(tx_device.name),
@@ -100,16 +119,17 @@ def preflight_rtlsdr() -> dict:
sdr.close()
def configure_pluto() -> tuple[object, dict]:
def configure_pluto(uri: str = PLUTO_URI) -> tuple[object, dict]:
import adi
device = adi.Pluto(uri=PLUTO_URI)
device = adi.Pluto(uri=uri)
device.sample_rate = int(lab043.SAMPLE_RATE_HZ)
device.tx_lo = int(lab043.CARRIER_HZ)
device.tx_rf_bandwidth = int(RF_BANDWIDTH_HZ)
device.tx_hardwaregain_chan0 = float(TX_GAIN_DB)
device.tx_cyclic_buffer = False
return device, {
"uri": uri,
"requested_center_frequency_hz": int(lab043.CARRIER_HZ),
"actual_center_frequency_hz": int(device.tx_lo),
"requested_sample_rate_hz": int(lab043.SAMPLE_RATE_HZ),