Continuous playback
-
- Posts: 799
- Joined: Sat May 23, 2015 5:22 pm
Re: Continuous playback
I didn't know that the operating system on your computer is Windows.
GNU Radio for Windows doesn't work with wideband SDR transceiver.
GNU Radio for Windows doesn't work with wideband SDR transceiver.
-
- Posts: 799
- Joined: Sat May 23, 2015 5:22 pm
Re: Continuous playback
I've just added two Python scripts that can be used to record and playback the spectrum without GNU Radio:
https://github.com/pavel-demin/red-pita ... ide/client
https://github.com/pavel-demin/red-pita ... ide/client
-
- Posts: 14
- Joined: Sun Mar 28, 2021 8:04 am
Re: Continuous playback
Many thanks, I will try that.
-
- Posts: 14
- Joined: Sun Mar 28, 2021 8:04 am
Re: Continuous playback
Hi Pavel,
Trying to get started with with your py-scripts. Now I am uncertain if I should use the normal RP ecosystem or an SD-card with the image zip file 'red-pitaya-alpine-3.12-armv7-20210326'. When I try the latter, it seems that there is no operating system starting when powering up the RP and I expect that an OS is always required. I have used a new SD card formatted with exFAT. You mentioned FAT32 in one of your last posts, so might that be the reason ? What is the right installation procedure ?
Trying to get started with with your py-scripts. Now I am uncertain if I should use the normal RP ecosystem or an SD-card with the image zip file 'red-pitaya-alpine-3.12-armv7-20210326'. When I try the latter, it seems that there is no operating system starting when powering up the RP and I expect that an OS is always required. I have used a new SD card formatted with exFAT. You mentioned FAT32 in one of your last posts, so might that be the reason ? What is the right installation procedure ?
-
- Posts: 14
- Joined: Sun Mar 28, 2021 8:04 am
Re: Continuous playback
Hi Pavel,
Forget my previous mail, I just copied the sources to the classical RP ecosystem as usual, compiled them and could start the sdr-wideband-transceiver. I could also start your py-scripts successfully.
One question: The max. sampling rate in the record.py seems to be 2.5 MS/s. Could that one be easily increased to something like 4MS/s or 5MS/s ?
Best
Hermann
Forget my previous mail, I just copied the sources to the classical RP ecosystem as usual, compiled them and could start the sdr-wideband-transceiver. I could also start your py-scripts successfully.
One question: The max. sampling rate in the record.py seems to be 2.5 MS/s. Could that one be easily increased to something like 4MS/s or 5MS/s ?
Best
Hermann
-
- Posts: 799
- Joined: Sat May 23, 2015 5:22 pm
Re: Continuous playback
Not easily.Could that one be easily increased to something like 4MS/s or 5MS/s ?
2.5 MS/s is the sample rate of I/Q samples. The usable bandwidth in this case is 2 MHz. It's more than 1.5 MHz that you had with rpsa_client. Do you really need a bandwidth of 4-5 MHz?
-
- Posts: 14
- Joined: Sun Mar 28, 2021 8:04 am
Re: Continuous playback
Hi Pavel,
However, when I play back these recordings with your 'dac_player', then frequencies above 900MHz are not reproduced any more. So do you refer to the 'dac_player' when mentioning the 1.5 MS/s ?
Your remarks lead me to another (maybe stupid) question: 'record.py' and 'playback.py' expect as input the parameter 'freq' which I set to 0 at the moment. When I want to record another RF band centered at say 4 MHz with an analog bandwidth of say 1 MHz could I then set freq=4000000, rate=2500000 and also correctly reproduce the signal ? In other words is 'freq' just the local oscillator frequency of the synchronous demodulator ?
Thanks for your help and best regards
Hermann
Sorry for asking stupid questions. Obviously I have not yet understood very well the SDR principle. Does that mean that Nyquist is fulfilled up to 2 MHz even with an IQ-Samplingrate of 2.5 MS/s ? Is this because the CIC yields up to 5 MS/s and I do not have to care about the FIR downsampling ? This then would of course solve my problem, in fact I need no more than 1.7 MHz bandwidth.
This puzzles me a bit . When I run the streamingserver on the RP and receive the data with the rpsa_client.exe from the command line, then I can definitely sample with 5MS/s and even more (maybe with a small fraction of lost data, but that does not matter so much because the AM-band signals are lousy anyway). When analyzing the spectrum of the records with MATLAB everything is correct up to 2.5 MHz and I could also demodulate individual broadcasting stations up to 1.7 MHz without problems. The only limitation I have is the 4GB file size.
However, when I play back these recordings with your 'dac_player', then frequencies above 900MHz are not reproduced any more. So do you refer to the 'dac_player' when mentioning the 1.5 MS/s ?
Your remarks lead me to another (maybe stupid) question: 'record.py' and 'playback.py' expect as input the parameter 'freq' which I set to 0 at the moment. When I want to record another RF band centered at say 4 MHz with an analog bandwidth of say 1 MHz could I then set freq=4000000, rate=2500000 and also correctly reproduce the signal ? In other words is 'freq' just the local oscillator frequency of the synchronous demodulator ?
Thanks for your help and best regards
Hermann
-
- Posts: 799
- Joined: Sat May 23, 2015 5:22 pm
Re: Continuous playback
The 2.5 MSPS is sample rate of the I and Q samples separately. The total sample rate (I sample rate + Q sample rate) is 5 MSPS.
I'd suggest setting the 'freq' parameter to the center of the frequency range you want to record, not to zero.
For example, if you want to record the frequency range from 500 to 1500 kHz, the center frequency should be set to 1000 kHz and the sample rate should be set to 1250 kSPS.
No. I refer to your very first comment in this thread.So do you refer to the 'dac_player' when mentioning the 1.5 MS/s ?
The 'freq' parameter is the local oscillator frequency. There is no synchronization. All the elements of the signal processing chain are shown in the diagram in my notes at this link.In other words is 'freq' just the local oscillator frequency of the synchronous demodulator ?
I'd suggest setting the 'freq' parameter to the center of the frequency range you want to record, not to zero.
For example, if you want to record the frequency range from 500 to 1500 kHz, the center frequency should be set to 1000 kHz and the sample rate should be set to 1250 kSPS.
-
- Posts: 14
- Joined: Sun Mar 28, 2021 8:04 am
Re: Continuous playback
Hi Pavel,
You are a GENIUS ! Yesterday I could record a 30' dataset with the full mediumwave-band when setting LO to 1MS/s and Rate to 1,25 MS/s. I can perfectly play back the full spectrum and tune through it with my AM-radio. The signal quality is perfect! Thank you, you have solved a 10 years old problem of mine.
Just one remaining question: The file for 30' recording is nearly 18 GB. I guess that rate=1,25 MS/s produce effectively 2,5 MS/s data, then this filesize would result from writing 4 B per data point (i.e. int32), because of 2,5*4*60*30=18000. Is there a reason for using int32 because of writing complex data or just because this is the Python standard ? If int16 would also suffice, could one change that easily in the python script so as to save file size ?
Best regards and many thanks
Hermann
You are a GENIUS ! Yesterday I could record a 30' dataset with the full mediumwave-band when setting LO to 1MS/s and Rate to 1,25 MS/s. I can perfectly play back the full spectrum and tune through it with my AM-radio. The signal quality is perfect! Thank you, you have solved a 10 years old problem of mine.
Just one remaining question: The file for 30' recording is nearly 18 GB. I guess that rate=1,25 MS/s produce effectively 2,5 MS/s data, then this filesize would result from writing 4 B per data point (i.e. int32), because of 2,5*4*60*30=18000. Is there a reason for using int32 because of writing complex data or just because this is the Python standard ? If int16 would also suffice, could one change that easily in the python script so as to save file size ?
Best regards and many thanks
Hermann
-
- Posts: 799
- Joined: Sat May 23, 2015 5:22 pm
Re: Continuous playback
I'm glad that the solution with the wideband SDR transceiver works well for you.
Since I/Q samples are complex values, the data type is 64-bit complex (a pair of 32-bit floating point values). This representation of complex numbers is used in C, FORTRAN and probably some other languages and libraries. In Python, 32-bit floating point values can be converted to 16-bit integer values using numpy:
Since I/Q samples are complex values, the data type is 64-bit complex (a pair of 32-bit floating point values). This representation of complex numbers is used in C, FORTRAN and probably some other languages and libraries. In Python, 32-bit floating point values can be converted to 16-bit integer values using numpy:
Code: Select all
import numpy as np
data = np.empty(1024, dtype = np.float32)
size = data_sock.recv_into(data)
while size > 0 and not interrupted:
f.write((data[0:size//4] * 32767).astype(np.int16))
size = data_sock.recv_into(data)
Code: Select all
import numpy as np
data = np.empty(1024, dtype = np.int16)
size = f.readinto(data)
while size > 0 and not interrupted:
data_sock.send(data[0:size//2].astype(np.float32) / 32767)
size = f.readinto(data)
jadalnie klasyczne ekskluzywne meble wypoczynkowe do salonu ekskluzywne meble tapicerowane ekskluzywne meble do sypialni ekskluzywne meble włoskie
Who is online
Users browsing this forum: No registered users and 3 guests