Dear Maintainer, When I start the CubicSDR on a Debian/testing system with pipewire (and pipewire-pulse) installed, no audio output device is detected. pactl info reports correctly: $ pactl info Server String: /run/user/1000/pulse/native Library Protocol Version: 35 Server Protocol Version: 35 Is Local: yes Client Index: 73 Tile Size: 65472 User Name: wzab Host Name: wzab Server Name: PulseAudio (on PipeWire 1.2.5) Server Version: 15.0.0 Default Sample Specification: float32le 2ch 48000Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo Default Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor Cookie: c292:dbe5 But CubicSDR displays: $ CubicSDR Loading:: configuration file '/home/wzab/.CubicSDR/config.xml' Loaded 283 rig models via hamlib. RtApi::getDeviceInfo: deviceId argument not found. Audio Device #0 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #1 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #2 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #3 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #4 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #5 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #6 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: RtApi::getDeviceInfo: deviceId argument not found. Audio Device #7 Default Output? No Default Input? No Input channels: 0 Output channels: 0 Duplex channels: 0 Native formats: Supported sample rates: SDR enumerator starting. SoapySDR init.. API Version: v0.8.0 ABI Version: v0.8 Install root: /usr Loading modules... Available vertical sync SwapInterval functions: glxSwapIntervalEXT: Yes DRI2SwapInterval: No glxSwapIntervalMESA: Yes glxSwapIntervalSGI: Yes Using glxSwapIntervalEXT. As the result, listening to the received and demodulated transmission is impossible. The waterfall spectrum display and SDR tuning works correctly.
I have run: ( strace CubicSDR ) > /tmp/strace.dump 2>&1 attached is the result. CubicSDR attempts to access the audio device via pulseaudio, via pipewire and via alsa, but for unknown reason it always fails.
I believe this bug is actually a bug in the soapysdr package. My Ubuntu bug report <https://bugs.launchpad.net/ubuntu/+source/soapysdr/+bug/2098548> . Thanks, Jon Skanes $ SoapySDRUtil --find ###################################################### ## Soapy SDR -- the SDR abstraction library ## ###################################################### [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.7.0.0+ds1-2 ALSA lib control.c:1570:(snd_ctl_open_noupdate) Invalid CTL pulse ALSA lib control.c:1570:(snd_ctl_open_noupdate) Invalid CTL pulse RtApi::getDeviceInfo: deviceId argument not found. RtApi::getDeviceInfo: deviceId argument not found. RtApi::getDeviceInfo: deviceId argument not found. RtApi::getDeviceInfo: deviceId argument not found. RtApi::getDeviceInfo: deviceId argument not found. RtApi::getDeviceInfo: deviceId argument not found. RtApi::getDeviceInfo: deviceId argument not found. Found Rafael Micro R820T tuner Found device 0 driver = rtlsdr label = Generic RTL2832U OEM :: 00000001 manufacturer = Realtek product = RTL2838UHIDIR serial = 00000001 tuner = Rafael Micro R820T
I've attached a patch for the Debian cubicsdr-0.2.7+dfsg package which fixes device enumeration with RTAudio's 6.0 API. Older versions of the RTAudio API referenced audio devices by their enumerated index. Version 6.0.0 completely changed the device enumeration API such that devices are referenced by their integer deviceId instead. Since index and deviceId are both ints, this weirdly didn't change the method signature for getDeviceInfo(), so code continued to compile but didn't actually return valid audio device info. https://caml.music.mcgill.ca/~gary/rtaudio/probe.html The Debian package was patched with `rtaudio6.patch` to deal with error handling API changes, but no patches were applied for device enumeration. Like the other reports for this issue, the out-of-the-box Trixie package failed to enumerate my audio devices, though it knew how many audio devices I had. After rebuilding with this patch, CubicSDR finally enumerates their details, defaults to the default ALSA output device, and actually lets me hear demodulated SDR signals. I've also attached the console output showing that it correctly enumerated six audio devices on my system. Another comment on this issue suggests a SoapySDR issue as cause and referenced Ubuntu bug 2098548, and I confirm that `SoapySDRUtil --find` fails to enumerate audio devices and references this same RTAudio `getDeviceInfo()` API. However I believe CubicSDR uses SoapySDR for SDR enumeration, not audio device enumeration. So it may be that the same bug exists independently in SoapySDR, but it doesn't actually affect CubicSDR. A quick grep through the SoapySDR 0.8 source didn't turn up direct RTAudio use, so I'm not sure how they're connected. Other SoapySDR applications work out of the box on Trixie, including Gqrx. - DR