discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] GNU Radio Companion - ALSA


From: Robin A. Jensen
Subject: Re: [Discuss-gnuradio] GNU Radio Companion - ALSA
Date: Mon, 20 Feb 2017 16:31:31 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1

Hello Cinaed

Thank you for your interrest in the proble,

When using GRC i been trying by VNCserver and directly on the pi in GUI
(X11).
This is what ps -ef | grep pulse audio shows
pi         855     1  0 Feb19 ?        00:00:00 /bin/sh
/usr/bin/start-pulseaudio-x11
pi        1203     1  0 Feb19 ?        00:00:00 /bin/sh
/usr/bin/start-pulseaudio-x11
pi        3959  3941  0 16:24 pts/0    00:00:00 grep --color=auto pulse

But still:
When using a signal source directly to the audio sink it will work.
But if i put in Rationel Resampler, there will be no sound or a
RuntimeError, if resampler interpolation is not set to 48K.
So i.e. source = 480k and resampler decimate with 480 (=1000) and
interpolation is set to 48 (=48000), it will create an error.
It's very strange.

Best regards
Robin.


Den 20-02-2017 kl. 01:33 skrev Cinaed Simson:
My guess is you have pulse audio installed but it won't let you use the
audio devices because you're not logged into the console on the pi3.

Type

   ps -ef | grep pulse

which should return entries similar to

   /usr/bin/pulseaudio --start --log-target=syslog
   /bin/sh /usr/bin/start-pulseaudio-x11

Note, if pulse-audio is the problem, then you need to log into the
console and change your audio device to 'pulse' before trying it again.

-- Cinaed


On 02/19/2017 12:17 PM, Robin A. Jensen wrote:
Hello Marcus.

I've haven't copy  pasted!
I made it from a tutorial and it will work on Window 10 machine. :-)

Now i have tried your suggestion and the RuntimeError is till persist.
But you lost min the part, about moving the resampler in front of WBFM.
I did it and the Runtime error is still presentet.

But i'm sure that there is a bug in the debian versin of GNU Radio
Companion 3.7.5 when using Rationel Resampler.
It's making no sense. I have understood the concept of Decimating and
Interpolation.
I now have done some test with exactly the same simple setup on Windows
10 and RPi 3 Jessie.
On Windows:
Souce: resample 480 k Waveform: Cosine, Freq: 1k->
Rationel Resampler: Decimation 480 (= 1000), Interpolation 48 (=48.000) ->
Audio Sink: Sample Rate: 48k

It will produce a tone of 1 KHz.

Doing precise the same on RPi 3:
RuntimeError: audio_alsa_sink
Only when Rationel Resampler is set to: Interpolation 48000,
It will run, but if Decimation is 480 (= 1000 -> 1000 * 48000) it will
sound like a metronome!
If i'll set it as it should be: Decimation: 4800 (=1000) and
Interpolation: 48 (48 * 1000 = 48 KHz)
It will throw RuntimeError: audio_alsa_sink.

I've tried many different settings Rationel Resampler and if
Interpolation is not set to 48000, it will create and RuntimeError.

If i do the test on windows with:
Source: sample rate: 48k -> Rationel Resampler: Interpolation: 1,
Decimation: 1 -> Audio Sink
It will work and procuce 1KHz tone.

Doing the same on RPi 3:
And it throws a RuntimeError.
If I then change Rationel Resampler: Interpolation 48000
It will run without RuntimeError and with no sound!

So i'll think this is not about a copy / paste error.
All block used in these test, are with the same Types float 32.

So i'm quit sure that is something wrong with the Rationel Resampler
block i RPi - Jessie version.

Best regards
Robin.

Den 19-02-2017 kl. 20:39 skrev Marcus Müller:
*high five*, got it to work!

So, why the rational resampler?! makes no sense, especially since both
interpolation and decimation need to be integers; since it doesn't make
sense mathematical, is it possible you did something slightly different
on Windows?

Resamplers are *only* necessary to convert a signal from one sampling
rate to another mathematically, without changing the signal's content.
The rate change is interpolation/decimation. If your original signal is
already at the right sampling rate, adding a resampler in between will
only *break* things.

The RuntimeError has something to do with how you configure the audio
sink. so, you need to use exactly the same config, ie. 2 inputs, hw:0,
sampling rate 48000. It doesn't come from having the wrong kind of
resampling before that. GNU Radio blocks really don't care at all about
what happens upstream. They get a series of numbers they process.

There's no reason for multiple resamplers. Please take this as a
constructive criticism: You must stop using a copy and paste approach,
and go for an understanding-based approach.

So let's work from the ends: We know we have an audio sink that we need
to run at 48000 as sampling rate, and in the end, we'll need to connect
that to a RTL source that gives us 2 MS/s. So in total, from source to
sink, we need a resampling ratio of 2e6/48e3. I'll do it the boring way
here, by using a prime factorization of both, to figure out how we can
group these:

2e6 = 2 · 10⁶ = 2 · (2·5)⁶
= 5⁶ · 2⁶

48e3 = 48 · 10³ = 3 · 16 · (2·5)³ = 3 · 2⁴ · 2³ · 5³
= 5³ · 3 · 2⁷

Let's divide these two numbers so that we know what our overall
resampling ratio is:

2e6/48e3 = (5⁶ · 2⁶)/(5³ · 3 · 2⁷) and cancelling out everything that's
possible to cancel
5³ / (3 · 2)

So what we need is a decimation of 5³ = 125 and an interpolation of 6.
Awesome! Let's make that happen.

We know that we have at least one block that we need to use between RTL
source and Audio sink: the WBFM receive. Let's plug that directly into
the Audio Sink. That means we know its output rate, because it *must* be
the 48k that said audio sink consumes. Ok, let's see, we need to
decimate by 5³ in total, so let's put the "Audio Decimation" to 5 here.
That leaves us with still 5² to decimate, and 6 to interpolate. (we also
can directly calculate that the *input* of the WBFM receive must be 5 ·
48kS/s = 240 kS/s). And since we have two channels on our audio sink,
connect the both Audio sink inputs to the one autput of WBFM receive.

Well, then, let's do that: add a rational resampler that has decimation
= 25 and interpolation = 6. Connect its output directly to WBFM receive,
and its input to the RTL source. Done!


Best regards,

Marcus


On 19.02.2017 19:42, Robin A. Jensen wrote:
Hello again.

Now i've a little test.
Signal Source: sample rate: 48k, Waveform: Cosine, freq: 1k amplitude:
1 ->

Audio Sink: Samp_rate: 48 k, Devicename: hw:0 (with 2 inputs)

And that is a succes! There a sound.
It will only run with 48k as sample rate.
So now we know there are an output for real. :-)

But if i put in Rationel Resampler: Interpolation: 1 / 48k,
Decimation: 1 and Source is 48k.
There is no sound..??
No mather how i fidle around with the values.
I've tried with different settings for the Sampler and also Rationel
Resampler Base, with no change regard to the output.
I find it really strange as the Rationel Resampler is working on a
Windows 10.

I then whent back to my WBFM setup and remove the resampler and run it
direcly from WBFM to Auduo Sink,
and then the RuntimeError came back :-(

Best regard
Robin.


Den 19-02-2017 kl. 18:06 skrev Marcus Müller:
Hi Robin,

Progress! (and you really don't have to try anything in lower- AND
uppercase. the names are simply case-sensitive, so use them **exactly**
like aplay -L lists them. Everything else can't work. There's really no
magic involved here! Stop googling stuff that you copy and paste.
You've
got a discrete problem on *your* machine, and you can solve it, so copy
and pasting device strings that work on other people's computer's is
really not that helpful.)

It returns: check topology failed on on audio_alsa_sink(8) using
ninputs=1, noutputs=0
Now that means you're using a device it can find. so: yeah, we're doing
something right. I'd really recommend you stick with "pulse", as that
will make sure of mixing all the audio streams other programs produce
together with yours and you'll not compete for exclusive access to the
audio device. It *should* give you at least the same check_topology
error. Can you please confirm that?

Best regards,

Marcus



On 19.02.2017 16:42, Robin A. Jensen wrote:
Hey Marcus.

Have tried that.
In documentation for the block:
pulse , hw:0,0 , plughw:0,0 , surround51 , /dev/dsp

I've tried every single one of them with lowercase and upper case.

If i use: hw:0,0
It returns: check topology failed on on audio_alsa_sink(8) using
ninputs=1, noutputs=0
If I use: HW:0,0
It returns: RuntimeError: audio_alsa_sink.

I've also tried with: HW:0,1 , HW:1,0 , HW:0.1 , HW:1.0 also in lower
case.
I've been tried to google with different search terms with no luck.
That's why I ended up on this mailing list.

GNU Radio is downloaded from rpi Jessie repository with apt-get
install gnuradio.

Best regards
Robin.

Den 19-02-2017 kl. 16:25 skrev Marcus Müller:
Hm, that looks like there's no HW in the list, so that would be an
initial debugging success!

So, the easiest is probably if you just use "pulse" in the Device
Name
field.

Best regards,

Marcus


On 19.02.2017 16:15, Robin A. Jensen wrote:
Yes of course.
Here we go:

aplay -L

null
        Discard all samples (playback) or generate zero samples
(capture)

pulse
        PulseAudio Sound Server
sysdefault:CARD=ALSA
        bcm2835 ALSA, bcm2835 ALSA
        Default Audio Device

dmix:CARD=ALSA,DEV=0
        bcm2835 ALSA, bcm2835 ALSA
        Direct sample mixing device

dmix:CARD=ALSA,DEV=1
        bcm2835 ALSA, bcm2835 IEC958/HDMI
        Direct sample mixing device

dsnoop:CARD=ALSA,DEV=0
        bcm2835 ALSA, bcm2835 ALSA
        Direct sample snooping device

dsnoop:CARD=ALSA,DEV=1
        bcm2835 ALSA, bcm2835 IEC958/HDMI
        Direct sample snooping device

hw:CARD=ALSA,DEV=0
        bcm2835 ALSA, bcm2835 ALSA
        Direct hardware device without any conversions

hw:CARD=ALSA,DEV=1
        bcm2835 ALSA, bcm2835 IEC958/HDMI
        Direct hardware device without any conversions

plughw:CARD=ALSA,DEV=0
        bcm2835 ALSA, bcm2835 ALSA
        Hardware device with all software conversions

plughw:CARD=ALSA,DEV=1
        bcm2835 ALSA, bcm2835 IEC958/HDMI
        Hardware device with all software conversions

If i use @: speaker-test -f 800 -t sinus -r 48000 -c 1-s 1
I'll get a fine sinus tone.
So there are sound through the system.

Best regards
Robin.


Den 19-02-2017 kl. 15:48 skrev Marcus Müller:
You're right, we should tackle this more systematically.

My problem is that I don't have a RPi3 to play around with at hand,
so I
have to trust you on the "HW:0,0"; it's not a very typical string,
through, as most alsa device names are lowercase. Could you share
the
output of "aplay -L" with us?

Best regards,
Marcus

On 19.02.2017 15:16, Robin A. Jensen wrote:
Hello Marcus.

Thanks for your reply and your welcomming to the community.

I've made the changes as suggested.
Also i've made a setup on a Windows 10 machine, to ensure the
script
runs.
With the changes the sound is much better! :-)

But when i run the same setup on RPi 3 / Jessie-distro i've end up
with the same result, no matter what I do with the Audio sink.
I'm using Gnu Radio Companion 3.7.5
The error code is still:

ALSA libpcm.c2239:)snd_pcm_open_noupdate) Unknown PCM HW:0,0
<-- 10
times this line
gr::log :ERROR: audio_alsa_sink0 - [HW:0,0]: No such file or
directory.
File "/home/pi/radio/top_block.py", line133, in <module>
      tb= top_block()
File "/home/pi/radio/top_block.py", line82, in __init__
self.audio_sink_0 = audio.sink(48000, "HW:0,0", True)
File
"/usr/lib/python2.7/dist-packages/gnuradio/audio/audio_swig.py",
line 195, in make
return _ausio_swig.sink_make(*args, **kwargs)
RuntimeError: audio_alsa_sink

I know is alwayes is eassy to blame the software, but could it
be a
bug?
As i said. i've tried with all the suggested lines from
documentation
of the block.

Best regards
Robin.

Den 18-02-2017 kl. 18:17 skrev Marcus Müller:
Hi Robin,

first of all: Welcome to the GNU Radio community!


On 02/18/2017 05:29 PM, Robin A. Jensen wrote:
Hello all of you.

I've just recieved my RTL-SDR dongle and is all new to this
sdr-stuff,
so please bear over with me, if i'm at the wrong place.
I'm using GNU Radio Companion on a RPi 3 and no mather what i'll
do, i
can't get the sound to work.
If a'im using rtl_fm and aplay, i'll get sound but it won't
set on
the
radiostation.
aha, so that's good, the sound system as it does work.
You'll probably want to use "aplay -L" to find the possible ALSA
device
names that you can use in the GNU Radio Audio sink.
I'll take on that later.
I've createt a small FM Reciever in GNU Radio companion and
everytime
i'll execute the script i'll get an error:

RuntimeError.audio.alsa.sink
Hm, I've never seen a GNU Radio error being printed like this;
but
that
might just be me. However, I can't reproduce this error printing
shape
as hard as I try.
I've been all over the internet to find a solution but with no
luck.
So now i'm have a hope that this mailling list can help me?

My suspicion is that your audio device doesn't like the sampling
rate
your trying to use, or you need to specify a device name (or
both).
Can
you make things work on the PC you use to design these flow
graphs?

I'd start with a signal source (sampling rate == the sampling
rate
that
you set in your Audio sink), configured to produce a "float"
output
sine
of 1 kHz, directly connected to an Audio sink. If that works,
move on.

--------------------------------------------------------------------------------






What I say about the flow graph in the following has, as far as I
can
tell, nothing to do with the error you're getting. Still, there's
mistakes in the flow graph that would make it impossible to
successfully
run it, and thus I'd like to avoid frustration later on by
pointing
them
out know:


So, the main issue with your flow graph is that the sampling rate
at the
audio sink must be what you configured your audio sink for (48
kHz).
But: that rate is the result of your SDR's sampling rate (2MS/s),
multiplied with all interpolations, divided by all decimations in
the
path between.

My setup is:
RTL-SDR Source: samplerate:  2M, frequency 96.5 MHz ->
Rationel Sampler: Interpolation 4, Decimation: 1 ->
Uh, that means that you have now 8MS/s. That seems unnecessary,
since to
capture a <100 kHz wide FM channel, you wouldn't even need the
2MS/s
you get
Low Pass Filter: Sample rate: 2M, Cutoff freq: 100K, Transition
Width:
100k ->
Which contradicts the 2MS/s used here, so you're actually getting
400kHz
passband width, 400kHz transition width. Also, this feels like a
prime
candidate for including decimation in the filter (because the
resulting
bandwidth is 200 kHz (if you overlap the two transition widths),
and for
that you'd only need 200 kS/s of complex digital signal).
WBFM Recive: Quadrature: 500K, Audio Decimation: 1 ->
This is now off by a factor of 16; are you sure you should be
using
"interpolation=4,decimation=1" instead of the inverse?
Rationel Sampler: Interpolation: 500
Certainly not :) 8 MS/s · 500 = 4 GS/s
Decimation: 48
Aside from that not even having greatest common denominator of 1
with
500 (you can't know that this is important, not blaming you),
this
would
give you an output sampling rate of 4GS/s/48 = 1 GS/s / 12 =
83.333
MS/s. Which isn't even a multiple of 48 kHz, which you use in the
audio
sink:
->
Audio Sink: Sample Rate: 48 KHz, Device Name: HW:0,0

I've found that recipie on a Hack5 video and there it's working
I think there's some error in the way you configured these
resamplers. I
don't know the Video you're referring to, but the amount of
rational
resamplers used here alone, paired with the fact that you don't
decimate
in the WBFM receiver makes me kind of suspicious this might not
have
been the optimal video to take reference designs from!

--------------------------------------------------------------------------------






Best regards,
Marcus
With best regards
Robin.


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



reply via email to

[Prev in Thread] Current Thread [Next in Thread]