I have a Phantom SDR+ installation working perfectly for a couple of days. Then started to crash with the waterfall showing the same line continuously. Restarting the app solve the issue, but after a few minutes starts to do it again. I let the app off for a week, then when trying again to start it, I get the error:
Transfer failed: PollTimeout
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
and only spectrumserver starts.
Hw configuration: i5 1500T, 32GB RAM, 1TB SSD
OS: Ubuntu Linux 22.04
RX888 MKII.
lsusb shows:
Bus 002 Device 004: ID 04b4:00f1 Cypress Semiconductor Corp. RX888mk2
Any hints on how to solve the issue?
Thank you.
Any weird dmesg messages?
Does the stream-driver init the device properly?
How does your toml configured?
Does OpenCL work?
Is the RX888MK2 thermal modified? Else it will die of overheating.
We need a bit more info Dan.
This is from dmesg after ./start-rx888mk2.sh
[158392.272846] usb 2-3.1: USB disconnect, device number 6
[158392.544380] usb 1-6.1: new high-speed USB device number 15 using xhci_hcd
[158392.634704] usb 1-6.1: New USB device found, idVendor=04b4, idProduct=00f3, bcdDevice= 1.00
[158392.634712] usb 1-6.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[158392.634715] usb 1-6.1: Product: WestBridge
[158392.634717] usb 1-6.1: Manufacturer: Cypress
[158392.634719] usb 1-6.1: SerialNumber: 0000000004BE
[158392.877594] usb 1-6.1: USB disconnect, device number 15
[158393.032445] usb 2-3.1: new SuperSpeed USB device number 7 using xhci_hcd
[158393.045158] usb 2-3.1: New USB device found, idVendor=04b4, idProduct=00f1, bcdDevice= 0.00
[158393.045162] usb 2-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[158393.045163] usb 2-3.1: Product: RX888mk2
[158393.045164] usb 2-3.1: Manufacturer: sdr prototypes
[158393.045165] usb 2-3.1: SerialNumber: 0009061C02991024
I'm using opencl, but same message if off.
As stated in my message, everything was working flawlessly for a few days with the same configuration.
The device is not modified, but checked before first run to have the heat transfer pad.
Thank you.
I still seems to switch van USB2 to USB3, that is a good sign.
What do you mean it's not modified? The thermal pad and heatsink ARE the modifications, as the unmodified doesn't have those and dies after a few days.
Then it doesn't switch anymore and stays in USB2 mode or not seen at all.
As for OpenCL, it must be compiled in else it doesn't work. If it's not working or installed during compilation, it will not be compiled in and not used.
You can check if it works with intel_gpu_top
How do you start the websdr? Do you use the fifo-way or straight piping?
Thermal pad was there from the beginning.
Compiled with opencl support (opencl installed, including for fft). Was working perfectly with opencl activated.
I try to start it as in the original script (pipe)or fifo-way, same result.
It may be the result of a Linux kernel upgrade, performed during the week, when I didn't try to start PhantomSDR+. Is installed in a remote location. I waited until I got there before trying again. Now I try to connect it to another USB port, or through a powered USB3 hub, with the same result. WebSDR is running on the same server with 7 receivers (5xRSP1a and 2xRTLSDR) without any issue during the same period. If I stop WebSDR server, still the same error occurs. Spectrumserver is running (does not crash), so the web frontend is working.
Currently I'm running Ubuntu 22.04, kernel 6.8.0-57-generic.
After the crash, with Spectrumserver running, I get:
intel-gpu-top: Intel Rocketlake (Gen12) @ /dev/dri/card1 - 1101/1198 MHz; 10% RC6; 724 irqs/s
IMC reads: 16196 MiB/s
IMC writes: 8848 MiB/s
ENGINES BUSY MI_SEMA MI_WAIT
Render/3D 87.85% |████████████████████████████████████████████████████████████████████████████████████████▊ | 0% 0%
Blitter 0.00% | | 0% 0%
Video 0.00% | | 0% 0%
VideoEnhance 0.00% |
Error in main.rs occur in line 388:52
while !terminate.load(std::sync::atomic::Ordering::Relaxed) {
388 let mut data = transfer_pool.poll(timeout).expect("Transfer failed");
389 if args.randomize {
390 let data_u16: &mut [u16] = cast_slice_mut(&mut data);
391 for i in 0..data_u16.len() {
392 data_u16[i] ^= 0xFFFE * (data_u16[i] & 0x1);
393 }
394 }
395 let _ = output_file.iter_mut().for_each(|file| {
396 let _ = file.write_all(&data);
397 });
398 if args.measure || output_file.is_none() {
399 measurement.add_packet(data.len() / 2);
400 measurement.maybe_display(Duration::from_secs(1));
401 }
402 transfer_pool
403 .submit_bulk(0x81, data)
404 .expect("Failed to resubmit transfer");
405 }
406
Ok OPenCL is running and working.
What happens if you run on the normal stable kernel and not the latest?
Mine uses: Linux Websdr 5.15.0-135-generic
Can you attach the TOML? As polling error can also occur when fft-binsize is too small.
Mine it this one:
[server]
port=80 # Server port
html_root="frontend/dist/" # HTML files to be hosted
otherusers=1 # Send where other users are listening, 0 to disable
threads=2
[websdr]
register_online=true # If the SDR should be registered on https://sdr-list.xyz then put it to true
name="Heppen Wideband Websdr" # Name that is shown on https://sdr-list.xyz
antenna="54m Longwire" # Antenna that is shown on https://sdr-list.xyz
grid_locator="JO21oc" # 4 or 6 length Grid Locatlr shown on https://sdr-list.xyz and for the Distance of FT8 Signals
hostname="http://websdr.heppen.be" # If you use ddns or something to host with a domain enter it here for https://sdr-list.xyz
[limits]
audio=100
waterfall=100
events=100
[input]
sps=60000000 # Input Sample Rate
fft_size=8388608
#fft_size=16777216
fft_threads=2
brightness_offset=0 # Waterfall brightness offset. Reduce to negative if you see black regions in the waterfall
frequency=0 # Baseband frequency
signal="real" # real or iq
accelerator="opencl" # Accelerator: none, cuda, opencl, mkl
audio_sps=12000 # Audio Sample Rate
audio_compression="flac" # flac or opus
waterfall_size=2048
waterfall_compression="zstd" # zstd or av1
smeter_offset=4
[input.driver]
name="stdin" # Driver name
format="s16" # Sample format: u8, s8, u16, s16, u32, s32, f32, f64
[input.defaults]
frequency=3645000 # Default frequency to show user
modulation="LSB" # Default modulation
That is for 30MHz wide. Wrong format maybe? As the stream is s16, not u16.
Except personalization stuff, I have the same config as you.
I even try to run again install on a clean clone of the repository, but nothing changed. I will try to install an older kernel version to see if the issue disappear.
Beware with the Fifo way....if the receiver.fifo isn't build with 'mkfifo receiver.fifo' it's not a fifo and it writes to disk.
As such the 'file' grows into TB's until your disk is filled.
When it's working as fifo, it's not growing, it's only a marker on the disk....but not actually storing samples/data.
Is created with mkfifo, like recommended on this forum. Anyway, the error is the same when using pipe and is in rx888_stream, even if I run it with /dev/null
Does dmesg say anything when the poll-error starts?
Also, have you stopped all other USB traffic to see if that helps?
I'm trying to help you here Dan, but it's hard.
Also, is your Stream-driver the latest? As there where some fixes, where output to STDOUT has been altered.
Show more info, as I can not see what you do...
dmesg result is in my first post from today, there is nothing wrong from what I see.
Regarding if my Stream-driver the latest, rx888_stream is version 0.1.0.
You are talking about something else?
Update last month:
https://github.com/rhgndf/rx888_stream/commit/b699542b8b8d31c64872bf1512c124537ae551f1
But did you run without the other stuff?
It helps if you answer questions.
Installed kernel 5.15.0-97-generic.
Redownload from git
run install.sh without any errors
Restore config toml and start script
Now is even worst, I get more errors when running start script:
thread 'main' panicked at src/main.rs:222:10:
Could not find or open bootloader
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at src/main.rs:211:22:
Could not reset FX3 to bootloader mode: Io
dmesg
1350.313572] usb 1-6.1: new high-speed USB device number 14 using xhci_hcd
[ 1350.414469] usb 1-6.1: New USB device found, idVendor=04b4, idProduct=00f3, bcdDevice= 1.00
[ 1350.414472] usb 1-6.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1350.414473] usb 1-6.1: Product: WestBridge
[ 1350.414475] usb 1-6.1: Manufacturer: Cypress
[ 1350.414476] usb 1-6.1: SerialNumber: 0000000004BE
[ 1355.157706] usb 2-3.1: Disable of device-initiated U1 failed.
[ 1355.171735] usb 2-3.1: Disable of device-initiated U2 failed.
[ 1355.869207] usb 2-3.1: USB disconnect, device number 4
[
lsusb
Bus 001 Device 014: ID 04b4:00f3 Cypress Semiconductor Corp. FX3 micro-controller (DFU mode)
To check if the hardware is defective, I installed SDR Console on Windows, with direct support for RX888 MK2 and is not working.
Is recognized, without errors, but don't work.
Seems that I am another lucky owner of an expensive ... brick. :(
Looks to me the USB Cypress chip has died.
When it can't upload the firmware, it's mostly because of overheated Cypress and it sticks in USB2 mode.
The device is recognized and the firmware is loading, but nothing streamed.
May be the internal clock? I will further investigate the hardware when back home, I don't have the tools to do it here.
Hi Dan,
[ 1355.157706] usb 2-3.1: Disable of device-initiated U1 failed.
[ 1355.171735] usb 2-3.1: Disable of device-initiated U2 failed.
[ 1355.869207] usb 2-3.1: USB disconnect, device number 4
This tells me the device is in USB2 mode (DFU mode - Device Firmware Upload mode) but it doesn't accept it.
Either broken of it's uploading something else then the proper firmware.
Also this is strange:
Could not reset FX3 to bootloader mode: Io
Never seen that message.
A non initialised (firmware uploaded device) will show DFU in lsusb, mine does too.
Standaard connected:
160.612974] usb 1-13: new high-speed USB device number 5 using xhci_hcd
[ 160.739836] usb 1-13: New USB device found, idVendor=04b4, idProduct=00f3, bcdDevice= 1.00
[ 160.739851] usb 1-13: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 160.739858] usb 1-13: Product: WestBridge
[ 160.739864] usb 1-13: Manufacturer: Cypress
[ 160.739869] usb 1-13: SerialNumber: 0000000004BE
When started:
Bus 002 Device 002: ID 04b4:00f1 Cypress Semiconductor Corp. RX888mk2
and then dmesg changes to this:
[ 160.612974] usb 1-13: new high-speed USB device number 5 using xhci_hcd
[ 160.739836] usb 1-13: New USB device found, idVendor=04b4, idProduct=00f3, bcdDevice= 1.00
[ 160.739851] usb 1-13: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 160.739858] usb 1-13: Product: WestBridge
[ 160.739864] usb 1-13: Manufacturer: Cypress
[ 160.739869] usb 1-13: SerialNumber: 0000000004BE
[ 355.165079] usb 1-13: USB disconnect, device number 5
[ 355.448636] usb 2-7: new SuperSpeed USB device number 2 using xhci_hcd
[ 355.461653] usb 2-7: New USB device found, idVendor=04b4, idProduct=00f1, bcdDevice= 0.00
[ 355.461669] usb 2-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 355.461678] usb 2-7: Product: RX888mk2
[ 355.461684] usb 2-7: Manufacturer: sdr prototypes
[ 355.461690] usb 2-7: SerialNumber: 000900270A49140F
This string is used:
rx888_stream/target/release/rx888_stream -f ./rx888_stream/SDDC_FX3.img -s 60000000 -g 30 -a 0 -m high -o - > rx888mk2.fifo
Does your firmware load at all?
This happen with the old 5.x kernel. Returning to the current kernel version, dmesg looks ok, like in initial message:https://www.phantomsdr.fun/index.php?msg=973
The "only" issue is that nothing is streamed.
Dan,
Sorry it's impossible to give more help, as you give no information to work with other then what you see happening.
We do not see your system.
Quote from: yo3ggx on Apr 23, 2025, 03:05 PMThe "only" issue is that nothing is streamed.
This doesn't help.
All I can tell is based on your windows remark, that the device is broken.
Seems that now on Linux even the firmware is no more loaded (I try on different systems), complaining about the Bootloader. On the other side, in SDR Console (Windows), the receiver is detected and firmware loaded, but still no data streamed.
Dan YO3GGX
Either the Cypress or the ADC died.
rx888_mk2_07.jpg
As such it won't stream. Sorry Dan, pretty sure it's dead.
Nothing you can do as the firmware isn't stored but oploaded every single time when you start it.
In SDR Console, firmware is loaded successfully, so most probable the issue is with the ADC. After open it, I saw that the thermal pad was mounted in the wrong place (back of the FX3 chip, not of the ADC).
I sent it to a hardware repair center to see if is possible to be fixed.
73 Dan YO3GGX
The thermalpad should be on the FX-chip, as that is the chip that dies due to overheating.
Not the ADC.
Read this blog:
https://ka7oei.blogspot.com/2023/08/improving-thermal-management-of-rx-888.html
I know the site, but it looks like in my case the issue is with the ADC.
Anyway, thermal design for this receiver is very bad, such a big radiator and such a poor thermal transfer from the chips to the case.
My thermal-pad is very small too.
But it only needs to cool the Cypress FX3 chip, as that's the one that burns.
I suspect your device has poor ADC soldering or the ADC simply died.
And yes, there are many bad manufactured versions on the market. Even without thermal-pads and cooling at all.
Sufficient thermal-pad looks like this:
IMG_20240827_131326_015.jpg
As for the heatsink, it's on the ADC like yours. Mine it running for over a year now, no problems at all.
If the repair will be successful, I will add a pad for the whole back of the PCB and a fan. For the moment I cannot afford to buy a new one.
That will be a good idea.
But Dan, PM me, I will order you a new one.
But then from the person where I got it....as I do want you to develop your app for our websdr.
In short, I buy you one.