I was staring at the sdrangel logs today and I noticed that sometimes it wasn't actually taking the sample rate after I set it. I was setting it to the max by scrolling upwards on the first digit in the sample rate until it hit the max value of `61.444Msps`. Doing this produces the following log messages, indicating it's actually running at `32Msps`. Note that when this occurs the GUI will incorrectly show `61.444Msps`. At least this explains the glitches I've seen, where the signal clearly does not match the parameters that I've configured. I find the same issue sometimes occurs with the frequency setting (I can change it and.... nothing happens, still sitting there at the same frequency). I don't see the same issues in gnuradio, so this leads me to believe it's related to how sdrangel handles the configuration.
Logs
##### SET MAX SAMPLE RATE HERE #####
2026-02-13 00:08:09.345 (D) USRPInputGUI::updateHardware
2026-02-13 00:08:09.345 (D) USRPInput::handleMessage: MsgConfigureUSRP
2026-02-13 00:08:09.345 (D) USRPInput::applySettings: preGetStream: false force: false " m_devSampleRate: 61444000"
2026-02-13 00:08:09.563 (D) USRPInput::applySettings: forward change to all buddies
2026-02-13 00:08:09.563 (D) DSPDeviceSourceEngine::handleInputMessages: message: DSPSignalNotification
2026-02-13 00:08:09.563 (D) DSPDeviceSourceEngine::handleInputMessages: DSPSignalNotification: m_sampleRate: 61444000 m_centerFrequency: 435000000
2026-02-13 00:08:09.563 (D) DSPDeviceSourceEngine::handleInputMessages: forward message to SpectrumVis
2026-02-13 00:08:09.563 (D) DSPDeviceSourceEngine::handleInputMessages: DSPSignalNotification: guiMessageQueue: 0x55edb686fdf0
2026-02-13 00:08:09.563 (D) USRPInputGUI::updateFrequencyLimits: delta: 0 min: 50000 max: 6000000
2026-02-13 00:08:09.563 (D) USRPInputGUI::handleInputMessages: DSPSignalNotification: SampleRate: 61444000, CenterFrequency: 435000000
2026-02-13 00:08:09.563 (D) GLSpectrumGUI::handleInputMessages: message: GLSpectrumView::MsgReportSampleRate
2026-02-13 00:08:09.564 (D) SpectrumVis::handleMessage: DSPSignalNotification: centerFrequency: 435000000 sampleRate: 61444000
##### CLICKED PLAY HERE #####
2026-02-13 00:08:10.709 (D) USRPInput::handleMessage: MsgStartStop: start
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::initAcquisition (dummy)
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::startAcquisition
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::handleInputMessages: message: DSPAcquisitionStart
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::gotoIdle
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::gotoInit: m_deviceDescription: USRPInput sampleRate: 61444000 centerFrequency: 435000000
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::gotoInit: initializing SpectrumVis
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::gotoRunning
2026-02-13 00:08:10.709 (D) DSPDeviceSourceEngine::gotoRunning: USRPInput started
2026-02-13 00:08:10.709 (D) USRPInput::suspendRxBuddies (0)
2026-02-13 00:08:10.709 (D) USRPInput::suspendTxBuddies (0)
2026-02-13 00:08:10.709 (D) USRPInput::applySettings: preGetStream: true force: true " m_masterClockRate: -1 m_centerFrequency: 435000000 m_devSampleRate: 61444000 m_loOffset: 0 m_dcBlock: 0 m_iqCorrection: 0 m_log2SoftDecim: 0 m_lpfBW: 1e+07 m_gain: 50 m_antennaPath: TX/RX m_gainMode: 0 m_clockSource: internal m_transverterMode: 0 m_transverterDeltaFrequency: 0 m_replayOffset: 0 m_replayLength: 20 m_replayStep: 5 m_replayLoop: 0 m_gpioDir: 0 m_gpioPins: 0 m_useReverseAPI: 0 m_reverseAPIAddress: 127.0.0.1 m_reverseAPIPort: 8888 m_reverseAPIDeviceIndex: 0"
2026-02-13 00:08:10.710 (D) SpectrumVis::handleMessage: DSPSignalNotification: centerFrequency: 435000000 sampleRate: 61444000
2026-02-13 00:08:10.710 (D) USRPInputGUI::handleInputMessages: DSPSignalNotification: SampleRate: 61444000, CenterFrequency: 435000000
2026-02-13 00:08:10.710 (D) GLSpectrumGUI::handleInputMessages: message: GLSpectrumView::MsgReportSampleRate
2026-02-13 00:08:10.712 (D) USRPInput::applySettings: clock set to "internal"
2026-02-13 00:08:10.712 (D) USRPInput::applySettings: exception: ValueError: Requested sampling rate (61.44 Msps) exceeds maximum tick rate.
[INFO] [B200] Asking for clock rate 32.000000 MHz...
[INFO] [B200] Actually got clock rate 32.000000 MHz.
Display More
Additionally, after seeing the same overruns in GNURADIO I'm now less convinced that the following has anything to do with the problem at hand. I think it's either the transport layer or some buffer in libuhd.
Regarding performance issues
While digging to see if they support `FASTLOCK MODE` I stumbled upon this code here.
https://github.com/f4exb/sdrangel…pinput.cpp#L109
I wonder if this is at all related to the performance issues discussed above? The comment suggests the current FIFO size was based on a max 50Msps, though these devices can actually go higher than that. Perhaps increasing the FIFO size would improve the performance for folks who are running into issues at the full sample rate.