Restore mcbladerf from 2026-02-08 working copy
Recovered from editor file-history snapshots; the original directory was never committed and has since been removed.
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# mcbladerf
|
||||
|
||||
MCP server for Nuand BladeRF SDR control via SoapySDR.
|
||||
|
||||
## Overview
|
||||
|
||||
mcbladerf provides Model Context Protocol (MCP) tools for controlling Nuand BladeRF software-defined radios. It enables AI assistants to configure RF parameters, capture IQ samples, and perform spectrum analysis through a simple tool-based interface.
|
||||
|
||||
## Features
|
||||
|
||||
- **Device Management**: Enumerate, connect, and disconnect BladeRF devices
|
||||
- **RF Configuration**: Set/get frequency, sample rate, bandwidth, and gain stages
|
||||
- **IQ Capture**: Stream samples to files in CF32 or CS16 format
|
||||
- **Spectrum Analysis**: Capture and compute FFT power spectra
|
||||
- **Advanced Operations**: FPGA loading, firmware flashing, DC calibration
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.14+ (must match system SoapySDR installation)
|
||||
- SoapySDR with BladeRF support (system packages)
|
||||
- bladeRF CLI tools (for advanced operations)
|
||||
- BladeRF 1.0 or 2.0 hardware
|
||||
|
||||
### System Dependencies (Arch Linux)
|
||||
|
||||
```bash
|
||||
sudo pacman -S soapysdr soapysdr-bladerf bladerf
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
SoapySDR is a C++ library with Python bindings that must be installed system-wide. The venv needs access to system site-packages:
|
||||
|
||||
```bash
|
||||
cd mcbladerf
|
||||
|
||||
# One-time setup (creates venv with system site-packages access)
|
||||
make setup
|
||||
|
||||
# Or manually:
|
||||
uv venv --system-site-packages --python 3.14
|
||||
uv pip install -e .
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
```bash
|
||||
# After setup, run with:
|
||||
uv run mcbladerf
|
||||
|
||||
# Or via make:
|
||||
make run
|
||||
```
|
||||
|
||||
## Usage with Claude Code
|
||||
|
||||
```bash
|
||||
# Add to Claude Code (with full path)
|
||||
claude mcp add mcbladerf -- uv run --directory /path/to/mcbladerf mcbladerf
|
||||
```
|
||||
|
||||
The `.mcp.json` is already configured for local use:
|
||||
```bash
|
||||
claude -p "show bladerf status" --mcp-config .mcp.json --allowedTools "mcp__mcbladerf__*"
|
||||
```
|
||||
|
||||
## Available Tools
|
||||
|
||||
### Device Management
|
||||
- `bladerf_status` - Get comprehensive device status
|
||||
- `bladerf_list_devices` - Enumerate connected devices
|
||||
- `bladerf_connect` - Connect to a device by serial or index
|
||||
- `bladerf_disconnect` - Close the current connection
|
||||
|
||||
### RF Configuration
|
||||
- `bladerf_get_frequency` / `bladerf_set_frequency` - Center frequency
|
||||
- `bladerf_get_sample_rate` / `bladerf_set_sample_rate` - Sample rate
|
||||
- `bladerf_get_bandwidth` / `bladerf_set_bandwidth` - Analog bandwidth
|
||||
- `bladerf_get_gain` / `bladerf_set_gain` - Individual gain stages
|
||||
- `bladerf_list_gains` - Enumerate available gain stages
|
||||
- `bladerf_get_frequency_range` / `bladerf_get_sample_rate_range` - Hardware limits
|
||||
|
||||
### IQ Capture
|
||||
- `bladerf_capture_iq` - Stream samples to file (CF32/CS16)
|
||||
- `bladerf_capture_spectrum` - Capture and compute FFT
|
||||
- `bladerf_stream_status` - Check capture progress
|
||||
- `bladerf_stop_capture` - Abort running capture
|
||||
|
||||
### Advanced
|
||||
- `bladerf_load_fpga` - Load FPGA bitstream (RAM)
|
||||
- `bladerf_flash_firmware` - Flash FX3 firmware
|
||||
- `bladerf_calibrate_dc` - Run DC offset calibration
|
||||
- `bladerf_get_hardware_info` - Detailed hardware info
|
||||
- `bladerf_set_loopback` - Configure loopback mode
|
||||
- `bladerf_probe` - Device diagnostics
|
||||
|
||||
## Example Session
|
||||
|
||||
```
|
||||
> Connect to my BladeRF and show status
|
||||
[Uses bladerf_connect and bladerf_status]
|
||||
|
||||
> Set frequency to 915 MHz with 2 MHz sample rate
|
||||
[Uses bladerf_set_frequency and bladerf_set_sample_rate]
|
||||
|
||||
> Capture 1 second of IQ data to /tmp/capture.cf32
|
||||
[Uses bladerf_capture_iq]
|
||||
|
||||
> Show me the spectrum around 100 MHz
|
||||
[Uses bladerf_capture_spectrum]
|
||||
```
|
||||
|
||||
## BladeRF 1.0 x40 Specifications
|
||||
|
||||
- Frequency: 237.5 MHz - 3.8 GHz
|
||||
- Sample rates: 80 Ksps - 40 Msps
|
||||
- RX Gain stages: lna (0/3/6 dB), rxvga1 (5-30 dB), rxvga2 (0-30 dB)
|
||||
- TX Gain stages: txvga1 (-35 to -4 dB), txvga2 (0-25 dB)
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user