cariboulabs / cariboulite

CaribouLite turns any 40-pin Raspberry-Pi into a Tx/Rx 6GHz SDR
1.1k stars 104 forks source link

SIGSEGV: memory access violation #185

Open ImDroided opened 9 months ago

ImDroided commented 9 months ago

Has anyone figured this out yet? I cant open any apps. I was able to open CubicSDR the other day but not now QGRX crashes instantly

ubuntu@ubuntu:~$ sudo CubicSDR Loaded 262 rig models via hamlib.

RtApiPulse::DeviceInfo pa_context_connect() failed: Connection refused

RtApiAlsa::getDeviceInfo: snd_pcm_open error for device (default), No such file or directory.

Audio Device #0 default Default Output? No Default Input? No Input channels: 0 Output channels: 10000 Duplex channels: 0 Native formats: 8-bit signed integer. 16-bit signed integer. 24-bit signed integer. 32-bit signed integer. 32-bit float normalized between plus/minus 1.0. 64-bit float normalized between plus/minus 1.0. Supported sample rates: 4000hz 5512hz 8000hz 9600hz 11025hz 16000hz 22050hz 32000hz 44100hz 48000hz 88200hz 96000hz 176400hz 192000hz

Audio Device #1 hw:bcm2835 HDMI 1,0 Default Output? No Default Input? No Input channels: 0 Output channels: 8 Duplex channels: 0 Native formats: 16-bit signed integer. Supported sample rates: 8000hz 9600hz 11025hz 16000hz 22050hz 32000hz 44100hz 48000hz 88200hz 96000hz 176400hz 192000hz

Audio Device #2 hw:bcm2835 HDMI 1,1 Default Output? No Default Input? No Input channels: 0 Output channels: 2 Duplex channels: 0 Native formats: 16-bit signed integer. Supported sample rates: 44100hz 48000hz

Audio Device #3 hw:bcm2835 Headphones,0 Default Output? No Default Input? No Input channels: 0 Output channels: 8 Duplex channels: 0 Native formats: 16-bit signed integer. Supported sample rates: 8000hz 9600hz 11025hz 16000hz 22050hz 32000hz 44100hz 48000hz 88200hz 96000hz 176400hz 192000hz

SDR enumerator starting. SoapySDR init.. API Version: v0.8.0 ABI Version: v0.8 Install root: /usr Loading modules... [INFO] SoapyCaribouliteSession, sessionCount: 0 02-07 20:15:17.086 8009 8047 I FPGA caribou_fpga_program_to_fpga@caribou_fpga.c:209 FPGA already operational - not programming (use 'force_prog=true' to force update)
02-07 20:15:17.086 8009 8047 E CARIBOU_SMI caribou_smi_init@caribou_smi.c:539 couldn't open smi driver file '/dev/smi' (No such file or directory)
02-07 20:15:17.086 8009 8047 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:288 Error setting up smi submodule
02-07 20:15:17.088 8009 8047 I CARIBOU_PROG caribou_prog_release@caribou_prog.c:122 device release completed
02-07 20:15:17.088 8009 8047 E FPGA caribou_fpga_close@caribou_fpga.c:246 caribou_fpga_close: dev not initialized
[ERROR] cariboulite_init_driver() failed
Available factories...Cariboulite, airspy, airspyhf, bladerf, hackrf, lime, miri, null, osmosdr, plutosdr, redpitaya, remote, rfspace, rtlsdr, sdrplay, uhd Printing 'findCariboulite' Request: shm_open: No such file or directory [ERROR] sdrplay_api_Open() Error: sdrplay_api_Fail [ERROR] Please check the sdrplay_api service to make sure it is up. If it is up, please restart it. [INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.1.0.5-0-unknown Available vertical sync SwapInterval functions: glxSwapIntervalEXT: Yes DRI2SwapInterval: No glxSwapIntervalMESA: Yes glxSwapIntervalSGI: Yes Using glxSwapIntervalEXT.

Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono12_0.png', parsed 255 characters. Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono16_0.png', parsed 255 characters. Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono18_0.png', parsed 255 characters. [ERROR] SoapySDR::Device::enumerate(sdrplay) sdrplay_api_Open() failed channel = S1G device_id = 0 driver = Cariboulite label = CaribouLite S1G[ef655c0e] name = CaribouLite RPI Hat serial = ef655c0e uuid = 52ab1103-0240-4f80-a759-7516817371f7 vendor = CaribouLabs LTD version = 0x0001 Make device 0 Printing 'findCariboulite' Request: {channel: S1G} {device_id: 0} {driver: Cariboulite} {label: CaribouLite S1G[ef655c0e]} {name: CaribouLite RPI Hat} {serial: ef655c0e} {uuid: 52ab1103-0240-4f80-a759-7516817371f7} {vendor: CaribouLabs LTD} {version: 0x0001} [INFO] Initializing DeviceID: 0, Label: CaribouLite S1G[ef655c0e], ChannelType: S1G soapy_sighandler caught SIGSEGV [INFO] soapy_sighandler killing soapy_cariboulite (cariboulite_release_driver) 02-07 20:15:18.443 8009 8047 E FPGA caribou_fpga_close@caribou_fpga.c:246 caribou_fpga_close: dev not initialized 02-07 20:15:18.443 8009 8047 E CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:465 FPGA communication release failed (-1)
02-07 20:15:18.444 8009 8047 E IO_UTILS_SPI io_utils_spi_close@io_utils_spi.c:340 closing uninitialized device
CaribouLite: Signal [11] received from pid=[968]
Signal [11] caught, with the following information:
signal errno = 0
signal process pid = 968
signal process uid = 0
signal status = 0
signal errno / SIGSEGV / the process access invalid region of memory
SIGSEGV: memory access violation
soapy_sighandler caught SIGSEGV
[INFO] soapy_sighandler killing soapy_cariboulite (cariboulite_release_driver)
CaribouLite: Signal [11] received from pid=[-1993413121]
Signal [11] caught, with the following information:
signal errno = 0
signal process pid = -1993413121
signal process uid = 65536
signal status = 0
signal errno / SIGSEGV / the process access invalid region of memory
SIGSEGV: memory access violation
ubuntu@ubuntu:~$ sudo nano /boot/firmware/config.txt
ubuntu@ubuntu:~$ sudo nano /etc/rc.local ubuntu@ubuntu:~$ gqrx gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.10.3.0 built-in source types: file fcd rtl rtl_tcp uhd hackrf bladerf rfspace airspy airspyhf soapy redpitaya rx_nb_cc :info: set_min_output_buffer on block 10 to 32768 Resampling audio 96000 -> 48000 BandPlanFile is /home/ubuntu/.config/gqrx/bandplan.csv BookmarksFile is /home/ubuntu/.config/gqrx/bookmarks.csv [INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.1.0.5-0-unknown [INFO] SoapyCaribouliteSession, sessionCount: 0 CaribouLite: Signal [11] received from pid=[16] Signal [11] caught, with the following information: signal errno = 0 signal process pid = 16 signal process uid = 0 signal status = 0 signal errno / SIGSEGV / the process access invalid region of memory SIGSEGV: memory access violation ubuntu@ubuntu:~$

unixpunk commented 9 months ago

@ImDroided can't use sudo, not sure it solves it anyway, sudo breaks pulseaudio unless you run it for the whole system, which isn't default.

this issue is: 02-07 20:15:17.086 8009 8047 E CARIBOU_SMI caribou_smi_init@caribou_smi.c:539 couldn't open smi driver file '/dev/smi' (No such file or directory) 02-07 20:15:17.086 8009 8047 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:288 Error setting up smi submodule

try putting in config.txt these lines after the rest of them and reboot: dtoverlay=smi dtoverlay=smi-dev

ImDroided commented 9 months ago

didnt work

ubuntu@ubuntu:~$ CubicSDR Loading:: configuration file '/home/ubuntu/.CubicSDR/config.xml' Loaded 262 rig models via hamlib.

Audio Device #0 Built-in Audio Stereo Default Output? Yes Default Input? No Input channels: 0 Output channels: 2 Duplex channels: 0 Native formats: 16-bit signed integer. 24-bit signed integer. 32-bit signed integer. 32-bit float normalized between plus/minus 1.0. Supported sample rates: 8000hz 16000hz 22050hz 32000hz 44100hz 48000hz 96000hz 192000hz

Audio Device #1 Monitor of Built-in Audio Stereo Default Output? No Default Input? Yes Input channels: 2 Output channels: 0 Duplex channels: 0 Native formats: 16-bit signed integer. 24-bit signed integer. 32-bit signed integer. 32-bit float normalized between plus/minus 1.0. Supported sample rates: 8000hz 16000hz 22050hz 32000hz 44100hz 48000hz 96000hz 192000hz

SDR enumerator starting. SoapySDR init.. API Version: v0.8.0 ABI Version: v0.8 Install root: /usr Loading modules... [INFO] SoapyCaribouliteSession, sessionCount: 0 02-07 21:04:59.903 3565 3594 I CARIBOU_PROG caribou_prog_configure_from_buffer@caribou_prog.c:260 Sending bitstream of size 32220
02-07 21:05:01.539 3565 3594 I CARIBOU_PROG caribou_prog_configure_from_buffer@caribou_prog.c:292 FPGA programming - Success!

02-07 21:05:01.640 3565 3594 E CARIBOU_SMI caribou_smi_init@caribou_smi.c:539 couldn't open smi driver file '/dev/smi' (No such file or directory)
02-07 21:05:01.640 3565 3594 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:288 Error setting up smi submodule
02-07 21:05:01.642 3565 3594 I CARIBOU_PROG caribou_prog_release@caribou_prog.c:122 device release completed
02-07 21:05:01.642 3565 3594 E FPGA caribou_fpga_close@caribou_fpga.c:246 caribou_fpga_close: dev not initialized
[ERROR] cariboulite_init_driver() failed
Available factories...Cariboulite, airspy, airspyhf, bladerf, hackrf, lime, miri, null, osmosdr, plutosdr, redpitaya, remote, rfspace, rtlsdr, sdrplay, uhd Printing 'findCariboulite' Request: shm_open: No such file or directory [ERROR] sdrplay_api_Open() Error: sdrplay_api_Fail [ERROR] Please check the sdrplay_api service to make sure it is up. If it is up, please restart it. [INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.1.0.5-0-unknown Available vertical sync SwapInterval functions: glxSwapIntervalEXT: Yes DRI2SwapInterval: No glxSwapIntervalMESA: Yes glxSwapIntervalSGI: Yes Using glxSwapIntervalEXT.

Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono12_0.png', parsed 255 characters. Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono16_0.png', parsed 255 characters. Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono18_0.png', parsed 255 characters. Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono24_0.png', parsed 255 characters. Loaded font 'Bitstream Vera Sans Mono' from '/usr/share/cubicsdr/fonts/vera_sans_mono27_0.png', parsed 255 characters. [ERROR] SoapySDR::Device::enumerate(sdrplay) sdrplay_api_Open() failed channel = S1G device_id = 0 driver = Cariboulite label = CaribouLite S1G[ef655c0e] name = CaribouLite RPI Hat serial = ef655c0e uuid = 52ab1103-0240-4f80-a759-7516817371f7 vendor = CaribouLabs LTD version = 0x0001 Make device 0 Printing 'findCariboulite' Request: {channel: S1G} {device_id: 0} {driver: Cariboulite} {label: CaribouLite S1G[ef655c0e]} {name: CaribouLite RPI Hat} {serial: ef655c0e} {uuid: 52ab1103-0240-4f80-a759-7516817371f7} {vendor: CaribouLabs LTD} {version: 0x0001} [INFO] Initializing DeviceID: 0, Label: CaribouLite S1G[ef655c0e], ChannelType: S1G soapy_sighandler caught SIGSEGV [INFO] soapy_sighandler killing soapy_cariboulite (cariboulite_release_driver) 02-07 21:05:03.385 3565 3594 E FPGA caribou_fpga_close@caribou_fpga.c:246 caribou_fpga_close: dev not initialized 02-07 21:05:03.385 3565 3594 E CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:465 FPGA communication release failed (-1)
02-07 21:05:03.385 3565 3594 E IO_UTILS_SPI io_utils_spi_close@io_utils_spi.c:340 closing uninitialized device
CaribouLite: Signal [11] received from pid=[968]
Signal [11] caught, with the following information:
signal errno = 0
signal process pid = 968
signal process uid = 0
signal status = 0
signal errno / SIGSEGV / the process access invalid region of memory
SIGSEGV: memory access violation
LLVM ERROR: Do not know how to expand the result of this operator!
soapy_sighandler caught SIGABRT
[INFO] soapy_sighandler killing soapy_cariboulite (cariboulite_release_driver)
CaribouLite: Signal [6] received from pid=[3565]
Signal [6] caught, with the following information:
signal errno = 0
signal process pid = 3565
signal process uid = 1000
signal status = 0
signal errno / tkill / tgkill sent the signal
SIGABRT: sent by abort() command
ubuntu@ubuntu:~$ gqrx
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.10.3.0 built-in source types: file fcd rtl rtl_tcp uhd hackrf bladerf rfspace airspy airspyhf soapy redpitaya rx_nb_cc :info: set_min_output_buffer on block 10 to 32768 Resampling audio 96000 -> 48000 BandPlanFile is /home/ubuntu/.config/gqrx/bandplan.csv BookmarksFile is /home/ubuntu/.config/gqrx/bookmarks.csv [INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.1.0.5-0-unknown [INFO] SoapyCaribouliteSession, sessionCount: 0 CaribouLite: Signal [11] received from pid=[16] Signal [11] caught, with the following information: signal errno = 0 signal process pid = 16 signal process uid = 0 signal status = 0 signal errno / SIGSEGV / the process access invalid region of memory SIGSEGV: memory access violation ubuntu@ubuntu:~$

ImDroided commented 9 months ago

config.txt

[all]
kernel=vmlinuz
cmdline=cmdline.txt
initramfs initrd.img followkernel

[pi4]
max_framebuffers=2
arm_boost=1

[all]
# Enable the audio output, I2C and SPI interfaces on the GPIO header. As these
# parameters related to the base device-tree they must appear *before* any
# other dtoverlay= specification
dtparam=audio=on
dtparam=i2c_arm=off
dtparam=spi=off
dtparam=i2c_vc=on
dtoverlay=spi1-3cs
dtoverlay=smi
dtoverlay=smi-dev

# Comment out the following line if the edges of the desktop appear outside
# the edges of your display
disable_overscan=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# If you have issues with audio, you may try uncommenting the following line
# which forces the HDMI output into HDMI mode instead of DVI (which doesn't
# support audio output)
#hdmi_drive=2
hdmi_force_hotplug=1

#Next is for headless usage only (no HDMI connected) and 1080P resolution
hdmi_force_mode=1
hdmi_group=2
hdmi_mode=82

[cm4]
# Enable the USB2 outputs on the IO board (assuming your CM4 is plugged into
# such a board)
dtoverlay=dwc2,dr_mode=host

[all]

# Enable the KMS ("full" KMS) graphics overlay, leaving GPU memory as the
# default (the kernel is in control of graphics memory with full KMS)
#Comment the below line for headless usage
#dtoverlay=vc4-kms-v3d

# Autoload overlays for any recognized cameras or displays that are attached
# to the CSI/DSI ports. Please note this is for libcamera support, *not* for
# the legacy camera stack
camera_auto_detect=1
display_auto_detect=1
# Config settings specific to arm64
arm_64bit=1
dtoverlay=dwc2

# Enable the PCIe External connector.
dtparam=pciex1
# This line is an alias for above (you can use either/or to enable the port).
dtparam=nvme
#dtparam=pciex1_gen=3
ImDroided commented 9 months ago

Dont know why but fresh install with normal config.txt edit and THIS_MODULE delete CubicSDR now works but gqrx is still a mem access error.

unixpunk commented 9 months ago

@ImDroided i see the same, even though adding those overlays gives me /dev/shm, so i dont see that file doesn't exist error, but the software is still causing the cairboulite driver to access invalid memory. wonder if we need a new udev rule or something, like the mem access is getting blocked because its done differently than CubicSDR (which still works fine).

ImDroided commented 9 months ago

So after letting CubicSDR run overnight and all day on a FM radio station I closed CubisSDR and could not open it again until after a reboot. Same mem access error.

great9 commented 9 months ago

on my rpi 3b with 512 mb ram it spins up 2 reader threads an 2 writer threads with immediate 400% Load on SDRPlusPlus. This makes all communication choppy, with or without compression enabled. When I kill the smi threads an rmmod the smi_stream_dev , it crashes with mem error and it's not possible to use it again until reboot.

@ImDroided when yours works, it at least works.

unixpunk commented 9 months ago

@great9 pi 3b is only good for SoapyRemote / SoapySDRServer scenarios, it can't do all that extra work processing the fft and demodulating audio, etc - BUT if you just run sudo SoapySDRServer --bind and then use sdrpp or cubicsdr, etc on a more capable machine, the audio will work fine. Side note - use TCP, not UDP when selecting the remote Caribou sdr in the chosen app.

If you want to see the fft and hear non-choppy audio, you'll need a pi 4.

ignat-mihai commented 9 months ago

Hello, all. I have the same issue with the /dev/smi missing when trying to use the Caribou and I am at the edge of my patience... I have this config on DragonOS, fresh install, on a RPI4 8GB... config.txt

I am getting the missing /dev/smi message whenever I want to do something with the caribou and I can see the following output for sudo dmesg: ubuntu@ubuntu:~$ sudo dmesg | grep smi [sudo] password for ubuntu: [ 6.581459] pinctrl-bcm2835 fe200000.gpio: pin gpio16 already requested by fe215080.spi; cannot claim for fe600000.smi [ 6.581528] pinctrl-bcm2835 fe200000.gpio: pin-16 (fe600000.smi) status -22 [ 6.581595] smi-bcm2835 fe600000.smi: Error applying setting, reverse things back [ 6.606318] smi_stream_dev: loading out-of-tree module taints kernel. [ 6.606344] smi_stream_dev: module verification failed: signature and/or required key missing - tainting kernel [ 6.607034] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 7.803572] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 7.896288] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 7.953755] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 7.955999] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 7.982013] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.212845] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.274481] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.292913] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.329299] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.494281] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.516432] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.519442] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.520295] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.520735] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.521160] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.522078] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.657397] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.697743] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 8.786369] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 9.127903] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 19.167625] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 19.167755] platform soc:smi_dev: deferred probe pending [ 676.293907] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 676.298168] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 676.361852] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 1064.092049] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 1064.098142] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) [ 1064.164067] smi-stream-dev: smi_stream_dev_probe (fifo_mtu_multiplier=2, addr_dir_offset=2, addr_ch_offset=3) ubuntu@ubuntu:~$ Does anyone have any ideas? Thanks. BR, Mihai

alphafox02 commented 8 months ago

Should look like this

dtparam=audio=on

dtparam=i2c_arm=on

dtparam=spi_vc=on

dtparam=i2c_vc=on dtoverlay=spi1-3cs enable_uart=0

Comment out the following line if the edges of the desktop appear outside

the edges of your display

disable_overscan=1

alphafox02 commented 8 months ago

You'll also need a sudo chmod g+rw /dev/gpiomem each time you boot or put it in the /etc/rc.local