Re: Tips on interfacing I/Q data into quisk?
FWIW I use a Teensy 4 with the SGTL5000 codec module piggybacked on in my SDR project.? I created a custom USB type with 2 serial and 1 audio.? They have lots of predefined types like Serial+MIDI+Audio.? Audio default sample rate is 44.1KHz
but it is possible to modify the library code to make it work at 48KHz.? ???I plug my SDR USB into a PC and run WSJTX on it with audio and CAT. The 2nd USB serial is open for debug still.? Or just keep and maybe use the MIDI which Quisk and other
SDR apps can use.? Has several hardware UARTs as well.?? Handles all this along with hi res graphics.
?
The Teensy keyer has most of what you want already I think.? ??Hardware is nearing production if you want one prebuilt with a different codec an controls, MIDI enabled.?? O just use a bare T4.0 and Codec.
?
?
?
?
toggle quoted message
Show quoted text
From: [email protected] < [email protected]> On Behalf Of
Ben Cahill
Sent: Tuesday, December 19, 2023 2:16 PM
To: [email protected]
Subject: Re: [n2adr-sdr] Tips on interfacing I/Q data into quisk?
?
How about PCM2906C chip from TI, with stereo codec and USB built-in?
?
It looks to be in the $10 price range from Mouser, so maybe pricier than you hoped, but it might save a heck of a lot of learning curve regarding USB audio ... I've been working on a project using USB audio, and it took me a *long time* to ramp up.
?
There may be other similar chips out there.
?
-- Ben, AC2YD --
?
On 12/19/23 16:51, Rob Frohne (KL7NA) wrote:
Yes, this would be a nice way to do it, where the difficulty was on the MCU end.? I thought about it a bit and did a little research.? My major problem is that I
was planning to use the UART to control the SDR and have that all working with Quisk using the UART.? I'm not even sure it is possible to get the Raspberry Pi Pico I'm using to simultaneously use the USB UART and be a USB soundcard. Do you have a good solution
for this problem of control and audio simultaneously?
Thanks for the warning on the UART glitches.? If I pursue this, I need to make sure they don't happen for me before pursuing it.? I also do not like the non-standard
interface to SDR software.? Another way I am considering doing it is to write a ?using the UART approach.? ? ?That overcomes the nonstandard problem, but might not be as easy as a simple hack to inject the sound data into Quisk.
|
Vendor and platform neutral SDR support library. Contribute to pothosware/SoapySDR development by creating an account on GitHub.
|
CAUTION: This email originated from outside the Walla Walla University email system.
?
It might be wise to try having the Pico emulate a USB audio device and send its samples that way. Then no modification on the user's part need be done. There are a few examples of this. The work is not trivial:
USB Audio device emulation for a "USB microphone":
USB HID emulation examples:
?
A design to look at is the FUNCube Dongle series of SDRs, which emulated a stereo-input USB audio interface for the I/Q samples and a USB Human Interface Device for controlling the tuner, amplifiers, etc using a PIC32MX. Bandwidth limitations
of USB 1.x were worked around by dropping the least-significant-byte of 24-bit samples so they are 16-bit. They turned out to work well. The Pico may be up to such a task.
What you are proposing is only different from a soundcard by name, with a proprietary communication format which will require modification of /every/ piece of software to use it directly, or at the least would require installation of supplementary
software on the user's machine to make it compatible with existing SDR software. I've noticed odd irregularities in data rate when transferring constant data streams over UART, even when wrapped in USB.
The complexity of creating a stream format in UART, then modifying existing software to work with it, will likely exceed writing USB firmware on the pico. From an educational POV, learning how to make a USB device could prove quite valuable.
The Pico also has onboard ADCs which have 12 bits resolution. If that's good enough, that's another part removed from the schematic. Supposedly it takes 96 cycles to process each sample:
There are tricks with 4x oversampling, lowpass filtering, and decimating to add 1 ENOB to the resolution (repeat for more) but it is unclear if the pico can muscle it and juggle USB traffic at the same time. I wouldn't bother with that,
because the bandwidth-limiting filters used in SDR software perform something mathematically similar to this task anyway.
On Mon, Dec 18, 2023 at 6:52?PM Nigel Johnson MIEEE via <nw.johnson=[email protected]> wrote:
I can completely identify with your problem.? Before I retired from teaching 6 years ago, I was faced with admin people who believed the sales critters more than the professors they were working
for.
?
After succinctly specifying stereo input for the laptops, I got the 'they are stereo' feedback from admin and faculty laptops, together with the min spec for students, came with mono - but they had
a handy numeric keypad for data entry - one of which I am still using having bought it off-lease.
?
My Communications systems 1 course was then equipped with a no-name USB sound card which worked well with a class set of Softrock 40s until I handed it over to another professor - one day I got an
urgent call to go to the lab because the experiment was not working.
?
After explaining what the 'RIAA Equalisation' switch was for to the young professor who had taken over the course, I went back to experimenting with my Behringer UFO202 at my desk, which I still
use to play with such stuff.
?
I have also had some results with their Line 2 USB for a compact box, but haven;t been able to get rid of the mountain at the zero beat point part of the spectrum while using it on a raspberry pi
- I suspect that is a driver problem contoured for audiophiles and for which I have no access to support!
?
regards,
Nigel
?
Nigel Johnson, MSc., MIEEE, MCSE VE3ID/G4AJQ/VA3MCU
Amateur Radio, the origin of the open-source concept!
Skype:? TILBURY2591
?
?
On 2023-12-18 18:26, Rob Frohne (KL7NA) wrote:
I am working on the software for my Electronics II class project for next quarter.? In the past, my students designed QSD based software defined receivers that we
used to connect to Quisk via soundcard.? The problem is lately laptops do not come with stereo sound inputs and so a USB soundcard is needed.? Those are always a pain to purchase, because what was available last year is not this, or they have changed the specs
to be mono input, or something so they don't work as well as the old ones we used to be able to get.? Every time you buy a USB soundcard, you take a risk.? I have lost that bet in the past.? This year I want to have the students grab the analog signals from
for I and Q with their own ADC and send them to the host using the USB UART.? I will still have them add a 3.5 mm jack, but hopefully only for debugging.? We will be having JLCPCB build their boards and JLCPCB has a couple interesting audio ADCs that are a
lot less expensive than a sound card.? The 24-bit one I'm using (PCM1808) is only fifty cents and the specs are better than the cheap soundcards I used before.? It will be nice to get rid of the 3.5 mm audio cable between the laptop and the SDR.? In the future,
I might want to use an MCU with WIFI like the Raspberry Pi Pico W and send the same data over UDP so the SDR could be more remote to the host PC.? ?I think using the USB UART is a good first step in that direction, so at this point I am first pursuing that
first.? ?I have done tests and can get 5.9 Mbps pretty easily over the?to a Linux host.? I want a 48 kHz sample rate and for this the bandwidth I need 3. Mbps to send 64 bits for each IQ pair (only 48 are needed, but we can use the extra 16 bits for each pair to send acknowledgements of commands or synchronizing data
).? I might even be able to get a 96 kHz sample rate in the 5.9 Mbps available.?
oThe thing I would very much like to know is where in Quisk I should inject this I/Q sound data that is not coming from a soundcard.?
I have the hardware.py file figured out for controlling the SDR, but I'm looking for how the I/Q data connects to Quisk.? It almost looked like Hermes Lite data went directly into quisk.c, but I'm hoping there is something easier
to interface to, than the main c program, which is daunting just to read.?
??
I have one other puzzling issue.? The actual sample rate (due to the Raspberry Pi Pico limitations)? is 48.0460 kHz, so I will need to discard samples or something
to get the data rate to match the more accurate soundcard sample rate.? How close do I need to get it for Quisk to work properly?? You have a lot more experience with sample rate matching than I do, so any tips you have there would be appreciated.? I have
some theoretical ideas that first reconstruct the analog signals from the sampled ones, then resample them at the correct rate, but I suspect that is not the best option and suspect just randomly discarding samples at the right rate might be better.?
The first sentence of the Quisk Docs says,? "This is Quisk, a Software Defined
Radio (SDR). You supply an antenna and a complex (I/Q) mixer to convert the radio spectrum to a low IF. Then send that IF to your computer using the sound card, Ethernet or USB."?
That is exactly what I want my students to do, and I need to minimize the software they have to worry about, because their learning objectives are more hardware oriented, though these days, you cannot skip the software altogether.
?
|
Re: Tips on interfacing I/Q data into quisk?
How about PCM2906C chip from TI, with stereo codec and USB
built-in?
It looks to be in the $10 price range from Mouser, so maybe
pricier than you hoped, but it might save a heck of a lot of
learning curve regarding USB audio ... I've been working on a
project using USB audio, and it took me a *long time* to ramp up.
There may be other similar chips out there.
-- Ben, AC2YD --
On 12/19/23 16:51, Rob Frohne (KL7NA)
wrote:
toggle quoted message
Show quoted text
Hi Chuck,
Yes, this would be a nice way to do it, where the difficulty was
on the MCU end.? I thought about it a bit and did a little
research.? My major problem is that I was planning to use the
UART to control the SDR and have that all working with Quisk
using the UART.? I'm not even sure it is possible to get the
Raspberry Pi Pico I'm using to simultaneously use the USB UART
and be a USB soundcard. Do you have a good solution for this
problem of control and audio simultaneously?
Thanks for the warning on the UART glitches.? If I pursue this,
I need to make sure they don't happen for me before pursuing
it.? I also do not like the non-standard interface to SDR
software.? Another way I am considering doing it is to write a
?using the UART approach.? ? ?That
overcomes the nonstandard problem, but might not be as easy as a
simple hack to inject the sound data into Quisk.
|
Vendor and platform neutral SDR support library.
Contribute to pothosware/SoapySDR development by
creating an account on GitHub.
github.com
|
?73,
Rob
CAUTION:
This email originated from outside the Walla Walla University
email system.
It might be wise to try having the Pico
emulate a USB audio device and send its samples that way.
Then no modification on the user's part need be done.
There are a few examples of this. The work is not trivial:
USB Audio device emulation for a "USB microphone":
USB HID emulation examples:
A design to look at is the FUNCube Dongle series of
SDRs, which emulated a stereo-input USB audio interface
for the I/Q samples and a USB Human Interface Device for
controlling the tuner, amplifiers, etc using a PIC32MX.
Bandwidth limitations of USB 1.x were worked around by
dropping the least-significant-byte of 24-bit samples so
they are 16-bit. They turned out to work well. The Pico
may be up to such a task.
What you are proposing is only different from a
soundcard by name, with a proprietary communication format
which will require modification of /every/ piece of
software to use it directly, or at the least would require
installation of supplementary software on the user's
machine to make it compatible with existing SDR software.
I've noticed odd irregularities in data rate when
transferring constant data streams over UART, even when
wrapped in USB.
The complexity of creating a stream format in UART,
then modifying existing software to work with it, will
likely exceed writing USB firmware on the pico. From an
educational POV, learning how to make a USB device could
prove quite valuable.
The Pico also has onboard ADCs which have 12 bits
resolution. If that's good enough, that's another part
removed from the schematic. Supposedly it takes 96 cycles
to process each sample:
There are tricks with 4x oversampling, lowpass
filtering, and decimating to add 1 ENOB to the resolution
(repeat for more) but it is unclear if the pico can muscle
it and juggle USB traffic at the same time. I wouldn't
bother with that, because the bandwidth-limiting filters
used in SDR software perform something mathematically
similar to this task anyway.
On Mon, Dec 18, 2023
at 6:52?PM Nigel Johnson MIEEE via
<nw.johnson= [email protected]>
wrote:
I can
completely identify with your problem.? Before I
retired from teaching 6 years ago, I was faced
with admin people who believed the sales critters
more than the professors they were working for.
After
succinctly specifying stereo input for the
laptops, I got the 'they are stereo' feedback from
admin and faculty laptops, together with the min
spec for students, came with mono - but they had a
handy numeric keypad for data entry - one of which
I am still using having bought it off-lease.
My
Communications systems 1 course was then equipped
with a no-name USB sound card which worked well
with a class set of Softrock 40s until I handed it
over to another professor - one day I got an
urgent call to go to the lab because the
experiment was not working.
After
explaining what the 'RIAA Equalisation' switch was
for to the young professor who had taken over the
course, I went back to experimenting with my
Behringer UFO202 at my desk, which I still use to
play with such stuff.
I have also
had some results with their Line 2 USB for a
compact box, but haven;t been able to get rid of
the mountain at the zero beat point part of the
spectrum while using it on a raspberry pi - I
suspect that is a driver problem contoured for
audiophiles and for which I have no access to
support!
regards,
Nigel
Nigel Johnson, MSc., MIEEE, MCSE VE3ID/G4AJQ/VA3MCU
Amateur Radio, the origin of the open-source concept!
Skype: TILBURY2591
On 2023-12-18 18:26, Rob Frohne (KL7NA) wrote:
Hi Jim, et. al.,
I
am working on the software for my Electronics II
class project for next quarter.? In the past, my
students designed QSD based software defined
receivers that we used to connect to Quisk via
soundcard.? The problem is lately laptops do not
come with stereo sound inputs and so a USB
soundcard is needed.? Those are always a pain to
purchase, because what was available last year
is not this, or they have changed the specs to
be mono input, or something so they don't work
as well as the old ones we used to be able to
get.? Every time you buy a USB soundcard, you
take a risk.? I have lost that bet in the past.?
This year I want to have the students grab the
analog signals from for I and Q with their own
ADC and send them to the host using the USB
UART.? I will still have them add a 3.5 mm jack,
but hopefully only for debugging.? We will be
having JLCPCB build their boards and JLCPCB has
a couple interesting audio ADCs that are a lot
less expensive than a sound card.? The 24-bit
one I'm using (PCM1808) is only fifty cents and
the specs are better than the cheap soundcards I
used before.? It will be nice to get rid of the
3.5 mm audio cable between the laptop and the
SDR.? In the future, I might want to use an MCU
with WIFI like the Raspberry Pi Pico W and send
the same data over UDP so the SDR could be more
remote to the host PC.? ?I think using the USB
UART is a good first step in that direction, so
at this point I am first pursuing that first.?
?I have done tests and can get 5.9 Mbps pretty
easily over the?to a
Linux host.? I want a 48 kHz sample rate and for
this the bandwidth I need 3. Mbps to send 64
bits for each IQ pair (only 48 are needed, but
we can use the extra 16 bits for each pair to
send acknowledgements of commands or
synchronizing data ).? I might even be able to
get a 96 kHz sample rate in the 5.9 Mbps
available.?
oThe
thing I would very much like to know is where in
Quisk I should inject this I/Q sound data that
is not coming from a soundcard.? I
have the hardware.py file figured out for
controlling the SDR, but I'm looking for how the
I/Q data connects to Quisk.? It almost looked
like Hermes Lite data went directly into
quisk.c, but I'm hoping there is something
easier to interface to, than the main c program,
which is daunting just to read.? ??
I
have one other puzzling issue.? The actual
sample rate (due to the Raspberry Pi Pico
limitations)? is 48.0460 kHz, so I will need to
discard samples or something to get the data
rate to match the more accurate soundcard sample
rate.? How close do I need to get it for Quisk
to work properly?? You have a lot more
experience with sample rate matching than I do,
so any tips you have there would be
appreciated.? I have some theoretical ideas that
first reconstruct the analog signals from the
sampled ones, then resample them at the correct
rate, but I suspect that is not the best option
and suspect just randomly discarding samples at
the right rate might be better.?
The
first sentence of the Quisk Docs says,? "This
is Quisk, a Software Defined Radio (SDR). You
supply an antenna and a complex (I/Q) mixer to
convert the radio spectrum to a low IF. Then
send that IF to your computer using the sound
card, Ethernet or USB."?
That is exactly what I want my students to do,
and I need to minimize the software they have to
worry about, because their learning objectives
are more hardware oriented, though these days,
you cannot skip the software altogether. ?
TNX & 73,
Rob
|
Re: Tips on interfacing I/Q data into quisk?
Hi Chuck,
Yes, this would be a nice way to do it, where the difficulty was on the MCU end.? I thought about it a bit and did a little research.? My major problem is that I was planning to use the UART to control the SDR and have that all working with Quisk using the
UART.? I'm not even sure it is possible to get the Raspberry Pi Pico I'm using to simultaneously use the USB UART and be a USB soundcard. Do you have a good solution for this problem of control and audio simultaneously?
Thanks for the warning on the UART glitches.? If I pursue this, I need to make sure they don't happen for me before pursuing it.? I also do not like the non-standard interface to SDR software.? Another way I am considering doing it is to write a
?using the UART approach.? ? ?That overcomes the nonstandard problem, but might not be as easy as a simple hack to inject the sound data into Quisk.
|
Vendor and platform neutral SDR support library. Contribute to pothosware/SoapySDR development by creating an account on GitHub.
github.com
|
?73,
Rob
toggle quoted message
Show quoted text
CAUTION: This email originated from outside the Walla Walla University email system.
It might be wise to try having the Pico emulate a USB audio device and send its samples that way. Then no modification on the user's part need be done. There are a few examples of this. The work is not trivial:
USB Audio device emulation for a "USB microphone":
USB HID emulation examples:
A design to look at is the FUNCube Dongle series of SDRs, which emulated a stereo-input USB audio interface for the I/Q samples and a USB Human Interface Device for controlling the tuner, amplifiers, etc using a PIC32MX. Bandwidth limitations of USB 1.x
were worked around by dropping the least-significant-byte of 24-bit samples so they are 16-bit. They turned out to work well. The Pico may be up to such a task.
What you are proposing is only different from a soundcard by name, with a proprietary communication format which will require modification of /every/ piece of software to use it directly, or at the least would require installation of supplementary software
on the user's machine to make it compatible with existing SDR software. I've noticed odd irregularities in data rate when transferring constant data streams over UART, even when wrapped in USB.
The complexity of creating a stream format in UART, then modifying existing software to work with it, will likely exceed writing USB firmware on the pico. From an educational POV, learning how to make a USB device could prove quite valuable.
The Pico also has onboard ADCs which have 12 bits resolution. If that's good enough, that's another part removed from the schematic. Supposedly it takes 96 cycles to process each sample:
There are tricks with 4x oversampling, lowpass filtering, and decimating to add 1 ENOB to the resolution (repeat for more) but it is unclear if the pico can muscle it and juggle USB traffic at the same time. I wouldn't bother with that, because the bandwidth-limiting
filters used in SDR software perform something mathematically similar to this task anyway.
On Mon, Dec 18, 2023 at 6:52?PM Nigel Johnson MIEEE via
<nw.johnson= [email protected]> wrote:
I can completely identify with your problem.? Before I retired from teaching 6 years ago, I was faced with admin people who believed the sales critters more than the professors they were working for.
After succinctly specifying stereo input for the laptops, I got the 'they are stereo' feedback from admin and faculty laptops, together with the min spec for students, came with mono - but they had a handy numeric keypad
for data entry - one of which I am still using having bought it off-lease.
My Communications systems 1 course was then equipped with a no-name USB sound card which worked well with a class set of Softrock 40s until I handed it over to another professor - one day I got an urgent call to go to
the lab because the experiment was not working.
After explaining what the 'RIAA Equalisation' switch was for to the young professor who had taken over the course, I went back to experimenting with my Behringer UFO202 at my desk, which I still use to play with such
stuff.
I have also had some results with their Line 2 USB for a compact box, but haven;t been able to get rid of the mountain at the zero beat point part of the spectrum while using it on a raspberry pi - I suspect that is
a driver problem contoured for audiophiles and for which I have no access to support!
regards,
Nigel
Nigel Johnson, MSc., MIEEE, MCSE VE3ID/G4AJQ/VA3MCU
Amateur Radio, the origin of the open-source concept!
Skype: TILBURY2591
On 2023-12-18 18:26, Rob Frohne (KL7NA) wrote:
Hi Jim, et. al.,
I am working on the software for my Electronics II class project for next quarter.? In the past, my students designed
QSD based software defined receivers that we used to connect to Quisk via soundcard.? The problem is lately laptops do not come with stereo sound inputs and so a USB soundcard is needed.? Those are always a pain to purchase, because what was available last
year is not this, or they have changed the specs to be mono input, or something so they don't work as well as the old ones we used to be able to get.? Every time you buy a USB soundcard, you take a risk.? I have lost that bet in the past.? This year I want
to have the students grab the analog signals from for I and Q with their own ADC and send them to the host using the USB UART.? I will still have them add a 3.5 mm jack, but hopefully only for debugging.? We will be having JLCPCB build their boards and JLCPCB
has a couple interesting audio ADCs that are a lot less expensive than a sound card.? The 24-bit one I'm using (PCM1808) is only fifty cents and the specs are better than the cheap soundcards I used before.? It will be nice to get rid of the 3.5 mm audio cable
between the laptop and the SDR.? In the future, I might want to use an MCU with WIFI like the Raspberry Pi Pico W and send the same data over UDP so the SDR could be more remote to the host PC.? ?I think using the USB UART is a good first step in that direction,
so at this point I am first pursuing that first.? ?I have done tests and can get 5.9 Mbps pretty easily over the?to a Linux host.? I want a 48 kHz sample rate and for this the bandwidth I need 3. Mbps to send 64 bits for each IQ pair (only 48 are needed, but we can use the extra 16 bits for each pair to send acknowledgements
of commands or synchronizing data ).? I might even be able to get a 96 kHz sample rate in the 5.9 Mbps available.?
oThe thing I would very much like to know is where in Quisk I should inject this I/Q sound data that is not coming from
a soundcard.? I have the hardware.py file
figured out for controlling the SDR, but I'm looking for how the I/Q data connects to Quisk.? It almost looked like Hermes Lite data went directly into quisk.c, but I'm hoping there is something easier to interface to, than the main c program, which is daunting
just to read.? ??
I have one other puzzling issue.? The actual sample rate (due to the Raspberry Pi Pico limitations)? is 48.0460 kHz, so
I will need to discard samples or something to get the data rate to match the more accurate soundcard sample rate.? How close do I need to get it for Quisk to work properly?? You have a lot more experience with sample rate matching than I do, so any tips you
have there would be appreciated.? I have some theoretical ideas that first reconstruct the analog signals from the sampled ones, then resample them at the correct rate, but I suspect that is not the best option and suspect just randomly discarding samples
at the right rate might be better.?
The first sentence of the Quisk Docs says,? "This
is Quisk, a Software Defined Radio (SDR). You supply an antenna and a complex (I/Q) mixer to convert the radio spectrum to a low IF. Then send that IF to your computer using the sound card, Ethernet or USB."?
That is exactly what I want my students to do, and I need to minimize the software they have to worry about, because their learning objectives are more hardware oriented, though these days, you cannot skip the software altogether. ?
TNX & 73,
Rob
|
Re: Tips on interfacing I/Q data into quisk?
It might be wise to try having the Pico emulate a USB audio device and send its samples that way. Then no modification on the user's part need be done. There are a few examples of this. The work is not trivial:
USB Audio device emulation for a "USB microphone": USB HID emulation examples:
A design to look at is the FUNCube Dongle series of SDRs, which emulated a stereo-input USB audio interface for the I/Q samples and a USB Human Interface Device for controlling the tuner, amplifiers, etc using a PIC32MX. Bandwidth limitations of USB 1.x were worked around by dropping the least-significant-byte of 24-bit samples so they are 16-bit. They turned out to work well. The Pico may be up to such a task.
What you are proposing is only different from a soundcard by name, with a proprietary communication format which will require modification of /every/ piece of software to use it directly, or at the least would require installation of supplementary software on the user's machine to make it compatible with existing SDR software. I've noticed odd irregularities in data rate when transferring constant data streams over UART, even when wrapped in USB.
The complexity of creating a stream format in UART, then modifying existing software to work with it, will likely exceed writing USB firmware on the pico. From an educational POV, learning how to make a USB device could prove quite valuable.
The Pico also has onboard ADCs which have 12 bits resolution. If that's good enough, that's another part removed from the schematic. Supposedly it takes 96 cycles to process each sample:
There are tricks with 4x oversampling, lowpass filtering, and decimating to add 1 ENOB to the resolution (repeat for more) but it is unclear if the pico can muscle it and juggle USB traffic at the same time. I wouldn't bother with that, because the bandwidth-limiting filters used in SDR software perform something mathematically similar to this task anyway.
toggle quoted message
Show quoted text
On Mon, Dec 18, 2023 at 6:52?PM Nigel Johnson MIEEE via <nw.johnson= [email protected]> wrote:
I can completely identify
with your problem.? Before I retired from teaching 6 years ago,
I was faced with admin people who believed the sales critters
more than the professors they were working for.
After succinctly specifying
stereo input for the laptops, I got the 'they are stereo'
feedback from admin and faculty laptops, together with the min
spec for students, came with mono - but they had a handy numeric
keypad for data entry - one of which I am still using having
bought it off-lease.
My Communications systems 1
course was then equipped with a no-name USB sound card which
worked well with a class set of Softrock 40s until I handed it
over to another professor - one day I got an urgent call to go
to the lab because the experiment was not working.
After explaining what the
'RIAA Equalisation' switch was for to the young professor who
had taken over the course, I went back to experimenting with my
Behringer UFO202 at my desk, which I still use to play with such
stuff.
I have also had some
results with their Line 2 USB for a compact box, but haven;t
been able to get rid of the mountain at the zero beat point part
of the spectrum while using it on a raspberry pi - I suspect
that is a driver problem contoured for audiophiles and for which
I have no access to support!
regards,
Nigel
Nigel Johnson, MSc., MIEEE, MCSE VE3ID/G4AJQ/VA3MCU
Amateur Radio, the origin of the open-source concept!
Skype: TILBURY2591
On 2023-12-18 18:26, Rob Frohne (KL7NA)
wrote:
Hi Jim, et. al.,
I
am working on the software for my Electronics II class project
for next quarter.? In the past, my students designed QSD based
software defined receivers that we used to connect to Quisk
via soundcard.? The problem is lately laptops do not come with
stereo sound inputs and so a USB soundcard is needed.? Those
are always a pain to purchase, because what was available last
year is not this, or they have changed the specs to be mono
input, or something so they don't work as well as the old ones
we used to be able to get.? Every time you buy a USB
soundcard, you take a risk.? I have lost that bet in the
past.? This year I want to have the students grab the analog
signals from for I and Q with their own ADC and send them to
the host using the USB UART.? I will still have them add a 3.5
mm jack, but hopefully only for debugging.? We will be having
JLCPCB build their boards and JLCPCB has a couple interesting
audio ADCs that are a lot less expensive than a sound card.?
The 24-bit one I'm using (PCM1808) is only fifty cents and the
specs are better than the cheap soundcards I used before.? It
will be nice to get rid of the 3.5 mm audio cable between the
laptop and the SDR.? In the future, I might want to use an MCU
with WIFI like the Raspberry Pi Pico W and send the same data
over UDP so the SDR could be more remote to the host PC.? ?I
think using the USB UART is a good first step in that
direction, so at this point I am first pursuing that first.?
?I have done tests and can get 5.9 Mbps pretty easily over the?to a Linux host.? I want a 48 kHz sample rate and
for this the bandwidth I need 3. Mbps to send 64 bits for each
IQ pair (only 48 are needed, but we can use the extra 16 bits
for each pair to send acknowledgements of commands or
synchronizing data ).? I might even be able to get a 96 kHz
sample rate in the 5.9 Mbps available.?
oThe
thing I would very much like to know is where in Quisk I
should inject this I/Q sound data that is not coming from a
soundcard.? I
have the hardware.py file figured out for controlling the SDR,
but I'm looking for how the I/Q data connects to Quisk.? It
almost looked like Hermes Lite data went directly into
quisk.c, but I'm hoping there is something easier to interface
to, than the main c program, which is daunting just to read.?
??
I
have one other puzzling issue.? The actual sample rate (due to
the Raspberry Pi Pico limitations)? is 48.0460 kHz, so I will
need to discard samples or something to get the data rate to
match the more accurate soundcard sample rate.? How close do I
need to get it for Quisk to work properly?? You have a lot
more experience with sample rate matching than I do, so any
tips you have there would be appreciated.? I have some
theoretical ideas that first reconstruct the analog signals
from the sampled ones, then resample them at the correct rate,
but I suspect that is not the best option and suspect just
randomly discarding samples at the right rate might be
better.?
The
first sentence of the Quisk Docs says,? "This
is Quisk, a Software Defined Radio (SDR). You supply an
antenna and a complex (I/Q) mixer to convert the radio
spectrum to a low IF. Then send that IF to your computer using
the sound card, Ethernet or USB."?
That is exactly what I want my students to do, and I need to
minimize the software they have to worry about, because their
learning objectives are more hardware oriented, though these
days, you cannot skip the software altogether. ?
TNX & 73,
Rob
|
Re: Tips on interfacing I/Q data into quisk?
I can completely identify
with your problem.? Before I retired from teaching 6 years ago,
I was faced with admin people who believed the sales critters
more than the professors they were working for.
After succinctly specifying
stereo input for the laptops, I got the 'they are stereo'
feedback from admin and faculty laptops, together with the min
spec for students, came with mono - but they had a handy numeric
keypad for data entry - one of which I am still using having
bought it off-lease.
My Communications systems 1
course was then equipped with a no-name USB sound card which
worked well with a class set of Softrock 40s until I handed it
over to another professor - one day I got an urgent call to go
to the lab because the experiment was not working.
After explaining what the
'RIAA Equalisation' switch was for to the young professor who
had taken over the course, I went back to experimenting with my
Behringer UFO202 at my desk, which I still use to play with such
stuff.
I have also had some
results with their Line 2 USB for a compact box, but haven;t
been able to get rid of the mountain at the zero beat point part
of the spectrum while using it on a raspberry pi - I suspect
that is a driver problem contoured for audiophiles and for which
I have no access to support!
regards,
Nigel
Nigel Johnson, MSc., MIEEE, MCSE VE3ID/G4AJQ/VA3MCU
Amateur Radio, the origin of the open-source concept!
Skype: TILBURY2591
On 2023-12-18 18:26, Rob Frohne (KL7NA)
wrote:
toggle quoted message
Show quoted text
Hi Jim, et. al.,
I
am working on the software for my Electronics II class project
for next quarter.? In the past, my students designed QSD based
software defined receivers that we used to connect to Quisk
via soundcard.? The problem is lately laptops do not come with
stereo sound inputs and so a USB soundcard is needed.? Those
are always a pain to purchase, because what was available last
year is not this, or they have changed the specs to be mono
input, or something so they don't work as well as the old ones
we used to be able to get.? Every time you buy a USB
soundcard, you take a risk.? I have lost that bet in the
past.? This year I want to have the students grab the analog
signals from for I and Q with their own ADC and send them to
the host using the USB UART.? I will still have them add a 3.5
mm jack, but hopefully only for debugging.? We will be having
JLCPCB build their boards and JLCPCB has a couple interesting
audio ADCs that are a lot less expensive than a sound card.?
The 24-bit one I'm using (PCM1808) is only fifty cents and the
specs are better than the cheap soundcards I used before.? It
will be nice to get rid of the 3.5 mm audio cable between the
laptop and the SDR.? In the future, I might want to use an MCU
with WIFI like the Raspberry Pi Pico W and send the same data
over UDP so the SDR could be more remote to the host PC.? ?I
think using the USB UART is a good first step in that
direction, so at this point I am first pursuing that first.?
?I have done tests and can get 5.9 Mbps pretty easily over the?to a Linux host.? I want a 48 kHz sample rate and
for this the bandwidth I need 3. Mbps to send 64 bits for each
IQ pair (only 48 are needed, but we can use the extra 16 bits
for each pair to send acknowledgements of commands or
synchronizing data ).? I might even be able to get a 96 kHz
sample rate in the 5.9 Mbps available.?
oThe
thing I would very much like to know is where in Quisk I
should inject this I/Q sound data that is not coming from a
soundcard.? I
have the hardware.py file figured out for controlling the SDR,
but I'm looking for how the I/Q data connects to Quisk.? It
almost looked like Hermes Lite data went directly into
quisk.c, but I'm hoping there is something easier to interface
to, than the main c program, which is daunting just to read.?
??
I
have one other puzzling issue.? The actual sample rate (due to
the Raspberry Pi Pico limitations)? is 48.0460 kHz, so I will
need to discard samples or something to get the data rate to
match the more accurate soundcard sample rate.? How close do I
need to get it for Quisk to work properly?? You have a lot
more experience with sample rate matching than I do, so any
tips you have there would be appreciated.? I have some
theoretical ideas that first reconstruct the analog signals
from the sampled ones, then resample them at the correct rate,
but I suspect that is not the best option and suspect just
randomly discarding samples at the right rate might be
better.?
The
first sentence of the Quisk Docs says,? "This
is Quisk, a Software Defined Radio (SDR). You supply an
antenna and a complex (I/Q) mixer to convert the radio
spectrum to a low IF. Then send that IF to your computer using
the sound card, Ethernet or USB."?
That is exactly what I want my students to do, and I need to
minimize the software they have to worry about, because their
learning objectives are more hardware oriented, though these
days, you cannot skip the software altogether. ?
TNX & 73,
Rob
|
Tips on interfacing I/Q data into quisk?
Hi Jim, et. al.,
I am working on the software for my Electronics II class project for next quarter.?
In the past, my students designed QSD based software defined receivers that we used to connect to Quisk via soundcard.? The problem is lately laptops do not come with stereo sound inputs and so a USB soundcard is needed.? Those are always a pain to purchase,
because what was available last year is not this, or they have changed the specs to be mono input, or something so they don't work as well as the old ones we used to be able to get.? Every time you buy a USB soundcard, you take a risk.? I have lost that bet
in the past.? This year I want to have the students grab the analog signals from for I and Q with their own ADC and send them to the host using the USB UART.? I will still have them add a 3.5 mm jack, but hopefully only for debugging.? We will be having JLCPCB
build their boards and JLCPCB has a couple interesting audio ADCs that are a lot less expensive than a sound card.? The 24-bit one I'm using (PCM1808) is only fifty cents and the specs are better than the cheap soundcards I used before.? It will be nice to
get rid of the 3.5 mm audio cable between the laptop and the SDR.? In the future, I might want to use an MCU with WIFI like the Raspberry Pi Pico W and send the same data over UDP so the SDR could be more remote to the host PC.? ?I think using the USB UART
is a good first step in that direction, so at this point I am first pursuing that first.? ?I have done tests and can get 5.9 Mbps pretty easily over the?to a Linux host.? I want a 48 kHz sample rate and for this the bandwidth I need 3. Mbps to send 64 bits for each IQ pair (only 48 are needed, but we can use the extra 16 bits for each pair to send acknowledgements
of commands or synchronizing data ).? I might even be able to get a 96 kHz sample rate in the 5.9 Mbps available.?
The thing I would very much like to know is where in Quisk I should inject this I/Q
sound data that is not coming from a soundcard.? I
have the hardware.py file figured out for controlling the SDR, but I'm looking for how the I/Q data connects to Quisk.? It almost looked like Hermes Lite data went directly into quisk.c, but I'm hoping there is something easier to interface to, than the main
c program, which is daunting just to read.? ??
I have one other puzzling issue.? The actual sample rate (due to the Raspberry Pi Pico
limitations)? is 48.0460 kHz, so I will need to discard samples or something to get the data rate to match the more accurate soundcard sample rate.? How close do I need to get it for Quisk to work properly?? You have a lot more experience with sample rate
matching than I do, so any tips you have there would be appreciated.? I have some theoretical ideas that first reconstruct the analog signals from the sampled ones, then resample them at the correct rate, but I suspect that is not the best option and suspect
just randomly discarding samples at the right rate might be better.?
The first sentence of the Quisk Docs says,? "This
is Quisk, a Software Defined Radio (SDR). You supply an antenna and a complex (I/Q) mixer to convert the radio spectrum to a low IF. Then send that IF to your computer using the sound card, Ethernet or USB."?
That is exactly what I want my students to do, and I need to minimize the software they have to worry about, because their learning objectives are more hardware oriented, though these days, you cannot skip the software altogether. ?
TNX & 73,
Rob
|
Hi Jim,
On Ubuntu, they did the same thing for 23.04.? I played around with the virtual environment, pipx, etc., and
it was not satisfactory to me, so I used the --break-system-packages option for pip3.? You can also put a file in /etc somewhere to escape having to type this every time you use pip.? I haven't noticed any problems yet, but someday it may lead to them.? I
use pip for more than just Quisk though, and so far, (since last April) it has not caused me issues I noticed any more than before they introduced this new way.? I do not use sudo when installing things from pip3, though, and can login as a new user to know
if something I did to my account broke things.
73,
Rob
KL7NA
--
Rob Frohne, PhD PE
School of Engineering
Walla Walla University
100 SW 4th St
College Place, WA 99324
(509) 527-2075
toggle quoted message
Show quoted text
CAUTION: This email originated from outside the Walla Walla University email system.
I am also old school and have suffered through several iterations of Python's idea of how to distribute software. Then there was the change from 32-bit to 64-bit (incompatible), the change to UTF (incompatible) and now Python doesn't want me to call setup.py
anymore. And each new Python 3 is binary incompatible with the last. And a virtual environment??? Is that really necessary??? Surely there is a simpler way.
I will figure out something. I will play around with pipx a while longer, but maybe it is better to just let users clone a github Quisk, compile it and run it.?
Jim
N2ADR
|
Quisk Version 4.2.28 December 2023
This version includes a patch from Jon, AB8WU, to build Quisk on FreeBSD. Thanks Jon! I fixed a bug in setting the AF level in Hamlib.
Jim N2ADR
|
Re: Default Quisk config file path change
Thanks! This is exactly what I was looking for.
Dne ne 17. 12. 2023 21:46 u?ivatel jimahlstrom < jahlstr@...> napsal:
toggle quoted message
Show quoted text
The configuration file is ~/.quisk_conf.py and is invisible. Or do you mean the files quisk_init.json, quisk_settings.json and others? If so, create a configuration file ~/.quisk_conf.py with these lines:
favorites_file_path = "/home/jim/pub/quisk_favorites.txt"
settings_file_path? = "/home/jim/pub/quisk_settings.json"
Of course, change the path. After you create the new path, you can copy the quisk files to the new location.
Jim N2ADR
|
I am also old school and have suffered through several iterations of Python's idea of how to distribute software. Then there was the change from 32-bit to 64-bit (incompatible), the change to UTF (incompatible) and now Python doesn't want me to call setup.py anymore. And each new Python 3 is binary incompatible with the last. And a virtual environment??? Is that really necessary??? Surely there is a simpler way.
I will figure out something. I will play around with pipx a while longer, but maybe it is better to just let users clone a github Quisk, compile it and run it.?
Jim N2ADR
|
Re: Default Quisk config file path change
The configuration file is ~/.quisk_conf.py and is invisible. Or do you mean the files quisk_init.json, quisk_settings.json and others? If so, create a configuration file ~/.quisk_conf.py with these lines:
favorites_file_path = "/home/jim/pub/quisk_favorites.txt"
settings_file_path? = "/home/jim/pub/quisk_settings.json"
Of course, change the path. After you create the new path, you can copy the quisk files to the new location.
Jim N2ADR
|
I will fix this in the next release.
Jim N2ADR
|
Default Quisk config file path change
Hello!
Is there any way to change the default config file path for Quisk (on Linux)? The ~/ path is not ideal and creates a mess in my home directory.
Thanks!
Regards, Daniel OK2VLK
|
Glad to see I'm not the only one who's confused!
Pipx seems to be what the raspbian foundation people are recommending, but they're very hard to pin down on the subject.
I'm afraid I don't know the details of how the virtual environment installers like pipx interact with all the dependencies. This has all become way too complicated and there are far too many fingers tampering with build option settings along the way. I'm just an old school programmer from the days when life was simpler trying to keep up.
I did several clean installs on Pi of Bookworm, on both Pi4 b and the Pi 5b I just received using the procedure I listed before and they seem to work for now. I believe this is because the dependencies I install in the first step using APT are system wide and are adequate for quisk's needs. I think that only items from the quisk packaging are being installed in the virtual environment. Unfortunately I don't really know what pipx does and it's yet another thing to track down with no reliable documentation. It can take a very long time to run, sometimes. The Bookworm release also has renoved all the old directory structures and debugging tools with logs being particularly hard to locate.
I haven't yet fiigured out how to install from the local debug builds I'm using without breaking something. I'm guessing one has to either completely understand what pipX does with regard to environment variables or build a package and then install it as if it came from a repository like the pipx authors are assuming.
I'm of the opinion that once these system wide packages needed for common dependencies get diluted by out-of-repository bug fixes and subsequent installations that Debian doesn't track we're back to the same old dependency hell.
One may need to build private copies of each dependency and install them into each virtual environment.
I think static packaging or complete sandboxing is the only long term solution and Gnu and other licensing often conflicts with that and require more cooperation from the OS than Debian is currently providing. Trying to fake them this way is doomed.
hope this helps (but a lot of it is just opinion)...
M
|
Using pipx seems like a good idea, but I must be missing something. I am trying to run Quisk from the virtual environment VENV created by pipx, but Quisk?complains that module wx is missing. The wx module is also known as wxPython and as?python3-wxgtk4.0.
The wx module is available in the system Python, but the system wx is not available from within the VENV. I could install wx directly into the VENV, but the normal way is to use apt-get and that does not install to the VENV. Or I could install wx from PyPi, but that will try to build wx from source, and that fails unless I install a dozen *-dev packages.?
How did you make wx available within the VENV?
Jim N2ADR
|
All,
OK this was fixed by changing line 360 of quisk_widgets.py from :
? self.slider.SetValue(value)
to : ? self.slider.SetValue(int(value))
|
If you have this code in quisk_widgets.py
? ? value = int(value + 0.5) ? ? self.SetValue(value)
Change it to ? ? value = int(value + 0.5) ? ? self.SetValue(int(value))
See if that fixes the problem.
Mike W9MDB
On Wednesday, December 13, 2023 at 03:21:52 PM CST, David Jones via groups.io <dgjonesy@...> wrote:
Mike,
?I've verified that the files mentioned in the traceback (/usr/local/lib/python3.10/dist-packages/quisk/quisk.py and /usr/local/lib/python3.10/dist-packages/quisk/quisk_widgets.py) are identical to those in the quisk 4.2.25 source distribution? tarfile so? I don't think an old quisk.py is a problem.
Am I the only one having this problem with a HL2 radio ?
|
Mike,
?I've verified that the files mentioned in the traceback (/usr/local/lib/python3.10/dist-packages/quisk/quisk.py and /usr/local/lib/python3.10/dist-packages/quisk/quisk_widgets.py) are identical to those in the quisk 4.2.25 source distribution? tarfile so? I don't think an old quisk.py is a problem.
Am I the only one having this problem with a HL2 radio ?
|
Double-check the SetLevel function in quisk.py. You can see below the "AF" parameter expects a float. Maybe you have an old quisk.py hanging around?
? def SetLevel(self): ? ? name, value = self.GetNameValue() ? ? if name == '?': # send back supported parameters ? ? ? self.Reply('? Value', 'AGC AF', 0) ? ? elif name == 'AGC': ? ? ? try: ? ? ? ? value = int(value) ? ? ? except: ? ? ? ? self.ErrParam() ? ? ? else: ? ? ? ? self.Reply(0) ? ? ? ? if value: ? ? ? ? ? self.app.BtnAGC.SetValue(1, True) ? ? ? ? else: ? ? ? ? ? self.app.BtnAGC.SetValue(0, True) ? ? elif name == 'AF': ? ? ? try: ? ? ? ? value = float(value) ? ? ? except: ? ? ? ? self.ErrParam() ? ? ? else: ? ? ? ? self.Reply(0) ? ? ? ? v = 1000.0 * math.log10(49.0 * value + 1) / math.log10(50) ? ? ? ? self.app.sliderVol.SetValue(v) ? ? ? ? self.app.ChangeVolume() ? ? else: ? ? ? self.ErrParam()
On Wednesday, December 13, 2023 at 12:45:14 PM CST, David Jones via groups.io <dgjonesy@...> wrote:
Hello,
I'm testing quisk hamlib control and have run into an issue. Not sure I'm do this correctly :
rigctl -m 2 -r localhost:4575
Rig command: _ Info: Quisk version 4.2.25
Rig command: l Level: AF Level Value: 0.123900
Rig command: L Level: AF Level Value: 0.5
Rig command:
When trying the L command for AF I get the following error :
Traceback (most recent call last): ? File "/usr/lib/python3/dist-packages/wx/core.py", line 3282, in <lambda> ??? lambda event: event.callable(*event.args, **event.kw) ) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6479, in OnReadSound ??? self.HamlibPoll() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6254, in HamlibPoll ??? if not client.Process():??? ??? # False return indicates a closed connection; remove the handler for this client ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 970, in Process ??? self.Handlers.get(self.command, self.UnImplemented)() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 1189, in SetLevel ??? self.app.sliderVol.SetValue(v) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk_widgets.py", line 360, in SetValue ??? self.slider.SetValue(value) TypeError: Slider.SetValue(): argument 1 has unexpected type 'float' Traceback (most recent call last): ? File "/usr/lib/python3/dist-packages/wx/core.py", line 3282, in <lambda> ??? lambda event: event.callable(*event.args, **event.kw) ) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6479, in OnReadSound ??? self.HamlibPoll() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6254, in HamlibPoll ??? if not client.Process():??? ??? # False return indicates a closed connection; remove the handler for this client ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 970, in Process ??? self.Handlers.get(self.command, self.UnImplemented)() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 1189, in SetLevel ??? self.app.sliderVol.SetValue(v) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk_widgets.py", line 360, in SetValue ??? self.slider.SetValue(value) TypeError: Slider.SetValue(): argument 1 has unexpected type 'float'
|
Hello,
I'm testing quisk hamlib control and have run into an issue. Not sure I'm do this correctly :
rigctl -m 2 -r localhost:4575
Rig command: _ Info: Quisk version 4.2.25
Rig command: l Level: AF Level Value: 0.123900
Rig command: L Level: AF Level Value: 0.5
Rig command:
When trying the L command for AF I get the following error :
Traceback (most recent call last): ? File "/usr/lib/python3/dist-packages/wx/core.py", line 3282, in <lambda> ??? lambda event: event.callable(*event.args, **event.kw) ) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6479, in OnReadSound ??? self.HamlibPoll() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6254, in HamlibPoll ??? if not client.Process():??? ??? # False return indicates a closed connection; remove the handler for this client ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 970, in Process ??? self.Handlers.get(self.command, self.UnImplemented)() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 1189, in SetLevel ??? self.app.sliderVol.SetValue(v) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk_widgets.py", line 360, in SetValue ??? self.slider.SetValue(value) TypeError: Slider.SetValue(): argument 1 has unexpected type 'float' Traceback (most recent call last): ? File "/usr/lib/python3/dist-packages/wx/core.py", line 3282, in <lambda> ??? lambda event: event.callable(*event.args, **event.kw) ) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6479, in OnReadSound ??? self.HamlibPoll() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 6254, in HamlibPoll ??? if not client.Process():??? ??? # False return indicates a closed connection; remove the handler for this client ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 970, in Process ??? self.Handlers.get(self.command, self.UnImplemented)() ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk.py", line 1189, in SetLevel ??? self.app.sliderVol.SetValue(v) ? File "/usr/local/lib/python3.10/dist-packages/quisk/quisk_widgets.py", line 360, in SetValue ??? self.slider.SetValue(value) TypeError: Slider.SetValue(): argument 1 has unexpected type 'float'
|