Re: [pulseaudio-discuss] RAOP2 patch testing result

2015-01-18 Thread Alexander E. Patrakov

19.01.2015 10:24, Arun Raghavan wrote:

On 19 January 2015 at 10:31, Alexander E. Patrakov patra...@gmail.com wrote:

19.01.2015 05:33, Hajime Fujita wrote:

[...]

Also, here's how I launched valgrind. If more detailed options are
necessary please let me know.
   $ valgrind --leak-check=yes ./src/.libs/pulseaudio ...



Well, that differs from the way I tried that:

valgrind --trace-children=yes ./src/pulseaudio

The difference is because our intentions were different: you were focusing
on finding memory leaks, while I was searching for uninitialized variables
and use-after-free errors. And, I was trying to make sure that the
just-compiled libraries are used, and the libtool-generated bash wrapper
knows best how to do that.

Of course, we can combine our flags, and replace --leak-check=yes with
--leak-check=full.

You could also use this to make sure the libs are picked up from the
build directory:

libtool --mode=execute valgrind --leak-check=full --trace-children=yes
./src/pulseaudio


Thanks for the tip.

Anyway, here is what I get with the portable version of libressl 
(installed into a separate prefix in order to avoid conflicts with the 
system-installed openssl, and added to PKG_CONFIG_PATH).


On connection:

==6892== Use of uninitialised value of size 8
==6892==at 0x223831FA: pa_raop_base64_encode (raop-util.c:117)
==6892==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6892==by 0x22178E57: on_connection (rtsp_client.c:342)
==6892==by 0x5D75DC5: do_call (socket-client.c:161)
==6892==by 0x50EF183: dispatch_pollfds (mainloop.c:657)
==6892==by 0x50EF183: pa_mainloop_dispatch (mainloop.c:900)
==6892==by 0x50EF559: pa_mainloop_iterate (mainloop.c:931)
==6892==by 0x50EF5FF: pa_mainloop_run (mainloop.c:946)
==6892==by 0x406DE5: main (main.c:1136)
==6892==
==6892== Use of uninitialised value of size 8
==6892==at 0x22383201: pa_raop_base64_encode (raop-util.c:118)
==6892==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6892==by 0x22178E57: on_connection (rtsp_client.c:342)
==6892==by 0x5D75DC5: do_call (socket-client.c:161)
==6892==by 0x50EF183: dispatch_pollfds (mainloop.c:657)
==6892==by 0x50EF183: pa_mainloop_dispatch (mainloop.c:900)
==6892==by 0x50EF559: pa_mainloop_iterate (mainloop.c:931)
==6892==by 0x50EF5FF: pa_mainloop_run (mainloop.c:946)
==6892==by 0x406DE5: main (main.c:1136)
==6892==
==6892== Use of uninitialised value of size 8
==6892==at 0x22383215: pa_raop_base64_encode (raop-util.c:120)
==6892==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6892==by 0x22178E57: on_connection (rtsp_client.c:342)
==6892==by 0x5D75DC5: do_call (socket-client.c:161)
==6892==by 0x50EF183: dispatch_pollfds (mainloop.c:657)
==6892==by 0x50EF183: pa_mainloop_dispatch (mainloop.c:900)
==6892==by 0x50EF559: pa_mainloop_iterate (mainloop.c:931)
==6892==by 0x50EF5FF: pa_mainloop_run (mainloop.c:946)
==6892==by 0x406DE5: main (main.c:1136)
==6892==
==6892== Use of uninitialised value of size 8
==6892==at 0x2238321C: pa_raop_base64_encode (raop-util.c:119)
==6892==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6892==by 0x22178E57: on_connection (rtsp_client.c:342)
==6892==by 0x5D75DC5: do_call (socket-client.c:161)
==6892==by 0x50EF183: dispatch_pollfds (mainloop.c:657)
==6892==by 0x50EF183: pa_mainloop_dispatch (mainloop.c:900)
==6892==by 0x50EF559: pa_mainloop_iterate (mainloop.c:931)
==6892==by 0x50EF5FF: pa_mainloop_run (mainloop.c:946)
==6892==by 0x406DE5: main (main.c:1136)
==6892==
==6892== Invalid write of size 1
==6892==at 0x22179316: line_callback (rtsp_client.c:241)
==6892==by 0x5D60D26: scan_for_lines (ioline.c:271)
==6892==by 0x5D60D26: do_read (ioline.c:339)
==6892==by 0x5D60D26: do_work (ioline.c:388)
==6892==by 0x50EF183: dispatch_pollfds (mainloop.c:657)
==6892==by 0x50EF183: pa_mainloop_dispatch (mainloop.c:900)
==6892==by 0x50EF559: pa_mainloop_iterate (mainloop.c:931)
==6892==by 0x50EF5FF: pa_mainloop_run (mainloop.c:946)
==6892==by 0x406DE5: main (main.c:1136)
==6892==  Address 0x1baa09f8 is 72 bytes inside a block of size 152 free'd
==6892==at 0x4C2A1AC: free (in 
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==6892==by 0x51039BE: pa_xfree (xmalloc.c:131)
==6892==by 0x2238571B: rtsp_auth_cb (raop-client.c:1305)
==6892==by 0x22179315: headers_read (rtsp_client.c:171)
==6892==by 0x22179315: line_callback (rtsp_client.c:240)
==6892==by 0x5D60D26: scan_for_lines (ioline.c:271)
==6892==by 0x5D60D26: do_read (ioline.c:339)
==6892==by 0x5D60D26: do_work (ioline.c:388)
==6892==by 0x50EF183: dispatch_pollfds (mainloop.c:657)
==6892==by 0x50EF183: pa_mainloop_dispatch (mainloop.c:900)
==6892==by 0x50EF559: pa_mainloop_iterate (mainloop.c:931)
==6892==by 0x50EF5FF: pa_mainloop_run (mainloop.c:946)
==6892==by 0x406DE5: main (main.c:1136)
==6892==

On 

Re: [pulseaudio-discuss] RAOP2 patch testing result

2015-01-18 Thread Arun Raghavan
On 19 January 2015 at 10:31, Alexander E. Patrakov patra...@gmail.com wrote:
 19.01.2015 05:33, Hajime Fujita wrote:
[...]

 Also, here's how I launched valgrind. If more detailed options are
 necessary please let me know.
   $ valgrind --leak-check=yes ./src/.libs/pulseaudio ...



 Well, that differs from the way I tried that:

 valgrind --trace-children=yes ./src/pulseaudio

 The difference is because our intentions were different: you were focusing
 on finding memory leaks, while I was searching for uninitialized variables
 and use-after-free errors. And, I was trying to make sure that the
 just-compiled libraries are used, and the libtool-generated bash wrapper
 knows best how to do that.

 Of course, we can combine our flags, and replace --leak-check=yes with
 --leak-check=full.

You could also use this to make sure the libs are picked up from the
build directory:

libtool --mode=execute valgrind --leak-check=full --trace-children=yes
./src/pulseaudio

-- Arun
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] RAOP2 patch testing result

2015-01-18 Thread Alexander E. Patrakov

19.01.2015 05:33, Hajime Fujita wrote:

Hello Alexander,

I think I have fixed the leaks, and pushed the changes to
https://github.com/hfujita/pulseaudio-raop2 (at `hf/raop2-v2-v5.99.2` 
branch -- now it's rebased against RC2).


Could you give it a try?


Just did that. You fixed memory leaks, but not uninitialized/freed 
memory accesses. Here is what I get when loading module-raop-discover 
(using pactl load-module) while HiFi Speaker is running on my phone:


==6761== Use of uninitialised value of size 8
==6761==at 0x223831FA: pa_raop_base64_encode (raop-util.c:117)
==6761==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6761==by 0x22178E47: on_connection (rtsp_client.c:342)
==6761==by 0x5D75DB5: do_call (socket-client.c:161)
==6761==by 0x50EF173: dispatch_pollfds (mainloop.c:657)
==6761==by 0x50EF173: pa_mainloop_dispatch (mainloop.c:900)
==6761==by 0x50EF549: pa_mainloop_iterate (mainloop.c:931)
==6761==by 0x50EF5EF: pa_mainloop_run (mainloop.c:946)
==6761==by 0x406DD5: main (main.c:1136)
==6761==
==6761== Use of uninitialised value of size 8
==6761==at 0x22383201: pa_raop_base64_encode (raop-util.c:118)
==6761==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6761==by 0x22178E47: on_connection (rtsp_client.c:342)
==6761==by 0x5D75DB5: do_call (socket-client.c:161)
==6761==by 0x50EF173: dispatch_pollfds (mainloop.c:657)
==6761==by 0x50EF173: pa_mainloop_dispatch (mainloop.c:900)
==6761==by 0x50EF549: pa_mainloop_iterate (mainloop.c:931)
==6761==by 0x50EF5EF: pa_mainloop_run (mainloop.c:946)
==6761==by 0x406DD5: main (main.c:1136)
==6761==
==6761== Use of uninitialised value of size 8
==6761==at 0x22383215: pa_raop_base64_encode (raop-util.c:120)
==6761==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6761==by 0x22178E47: on_connection (rtsp_client.c:342)
==6761==by 0x5D75DB5: do_call (socket-client.c:161)
==6761==by 0x50EF173: dispatch_pollfds (mainloop.c:657)
==6761==by 0x50EF173: pa_mainloop_dispatch (mainloop.c:900)
==6761==by 0x50EF549: pa_mainloop_iterate (mainloop.c:931)
==6761==by 0x50EF5EF: pa_mainloop_run (mainloop.c:946)
==6761==by 0x406DD5: main (main.c:1136)
==6761==
==6761== Use of uninitialised value of size 8
==6761==at 0x2238321C: pa_raop_base64_encode (raop-util.c:119)
==6761==by 0x223857A7: rtsp_auth_cb (raop-client.c:1208)
==6761==by 0x22178E47: on_connection (rtsp_client.c:342)
==6761==by 0x5D75DB5: do_call (socket-client.c:161)
==6761==by 0x50EF173: dispatch_pollfds (mainloop.c:657)
==6761==by 0x50EF173: pa_mainloop_dispatch (mainloop.c:900)
==6761==by 0x50EF549: pa_mainloop_iterate (mainloop.c:931)
==6761==by 0x50EF5EF: pa_mainloop_run (mainloop.c:946)
==6761==by 0x406DD5: main (main.c:1136)
==6761==
==6761== Invalid write of size 1
==6761==at 0x22179306: line_callback (rtsp_client.c:241)
==6761==by 0x5D60D16: scan_for_lines (ioline.c:271)
==6761==by 0x5D60D16: do_read (ioline.c:339)
==6761==by 0x5D60D16: do_work (ioline.c:388)
==6761==by 0x50EF173: dispatch_pollfds (mainloop.c:657)
==6761==by 0x50EF173: pa_mainloop_dispatch (mainloop.c:900)
==6761==by 0x50EF549: pa_mainloop_iterate (mainloop.c:931)
==6761==by 0x50EF5EF: pa_mainloop_run (mainloop.c:946)
==6761==by 0x406DD5: main (main.c:1136)
==6761==  Address 0x1ba75ee8 is 72 bytes inside a block of size 152 free'd
==6761==at 0x4C2A1AC: free (in 
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==6761==by 0x51039AE: pa_xfree (xmalloc.c:131)
==6761==by 0x2238571B: rtsp_auth_cb (raop-client.c:1305)
==6761==by 0x22179305: headers_read (rtsp_client.c:171)
==6761==by 0x22179305: line_callback (rtsp_client.c:240)
==6761==by 0x5D60D16: scan_for_lines (ioline.c:271)
==6761==by 0x5D60D16: do_read (ioline.c:339)
==6761==by 0x5D60D16: do_work (ioline.c:388)
==6761==by 0x50EF173: dispatch_pollfds (mainloop.c:657)
==6761==by 0x50EF173: pa_mainloop_dispatch (mainloop.c:900)
==6761==by 0x50EF549: pa_mainloop_iterate (mainloop.c:931)
==6761==by 0x50EF5EF: pa_mainloop_run (mainloop.c:946)
==6761==by 0x406DD5: main (main.c:1136)
==6761==

Here is the additional output when I play music with mpv to the sink. 
But note that some (but not all!) of that may be due to OpenSSL 
misfeatures, it may be a good idea to retest with LibreSSL, and I will 
do that later.


==6761== Conditional jump or move depends on uninitialised value(s)
==6761==at 0x22894F39: BN_bin2bn (in /usr/lib64/libcrypto.so.1.0.0)
==6761==by 0x228B5599: ??? (in /usr/lib64/libcrypto.so.1.0.0)
==6761==by 0x22383A93: rsa_encrypt (raop-crypto.c:76)
==6761==by 0x22383A93: pa_raop_secret_get_key (raop-crypto.c:118)
==6761==by 0x2238503C: rtsp_stream_cb (raop-client.c:901)
==6761==by 0x22178E47: on_connection (rtsp_client.c:342)
==6761==by 0x5D75DB5: do_call (socket-client.c:161)
==6761==by 0x50EF173: 

Re: [pulseaudio-discuss] RAOP2 patch testing result

2015-01-18 Thread Hajime Fujita

Hello Alexander,

I think I have fixed the leaks, and pushed the changes to
https://github.com/hfujita/pulseaudio-raop2 (at `hf/raop2-v2-v5.99.2` 
branch -- now it's rebased against RC2).


Could you give it a try?

Also, here's how I launched valgrind. If more detailed options are 
necessary please let me know.

  $ valgrind --leak-check=yes ./src/.libs/pulseaudio ...

Detailed output from valgrind can be found here:
https://github.com/hfujita/pulseaudio-raop2/issues/35


Thank you,
Hajime

Alexander E. Patrakov wrote:

05.01.2015 08:57, Hajime Fujita wrote:

Hello Alexander,



Then I pressed the back arrow to seek back. Result: it froze.

Also tested with VLC, seeking there does not freeze.


We believe we finally figured out the cause and fixed the issue.
Please try the latest patches in
https://github.com/hfujita/pulseaudio-raop2 (at `hf/raop2-v2-v5.99.1`
branch).


Fixed indeed.


The detailed discussion can be found here:
https://github.com/hfujita/pulseaudio-raop2/issues/31


With Bino, I was able to trigger this assertion failure:

E: [raop-sink-[192.168.1.39]:5000] rtsp_client.c: Assertion 'c-url'
failed at modules/rtp/rtsp_client.c:441, function rtsp_exec(). Aborting.


I could not reproduce this (Bino immediately crashed with any of my
input file), but I believe this has also been fixed in the above branch.
(https://github.com/hfujita/pulseaudio-raop2/issues/9)


Indeed, there is no such crash anymore.


Then I started Airfoil Speakers on Android. Result: PulseAudio does
not
see it, even if module-raop-discover is reloaded.


And Airfoil Speakers is not a RAOP2 server. So not a bug.

Still, we have a lot of valgrind splats during normal usage of the
module, please find them in the attached file.

If your PC is not fast enough by default to valgrind pulseaudio (i.e. if
pulseaudio gets killed on starting a new stream due to exhausting the
realtime budget), this default.pa tweak can help:

load-module module-udev-detect tsched_buffer_size=5



___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] RAOP2 patch testing result

2015-01-04 Thread Hajime Fujita

Hello Alexander,

Alexander E. Patrakov wrote:

13.11.2014 02:13, Martin Blanchard wrote:

On Tue, 2014-11-11 at 23:45 +0500, Alexander E. Patrakov wrote:

Hi.


Hello Alexander!


I have cloned the raop2-v2 branch from
https://github.com/colinleroy/pulseaudio


First, thanks for the testings.


The following test was applied.

I have installed the Android HiFi application (also known as HiFi
Speaker), version 1.7 Beta, on my Android phone, and started it.

Link: http://forum.xda-developers.com/showthread.php?p=29986442

Version is important: this one is possibly-buggy in an interesting way.
Also, newer versions require a license for more than 30 minutes of
playback. Note: for some reason, Google Play has removed this app, so
you can only get it from various shady sources such as above.

Then, I ran the following command:

pacmd load-module module-raop-discover

Result: it found the speaker!

Then I started mpv on a music file, and redirected its output to the
HiFi Speaker using pavucontrol. Result: it worked.

Then I pressed the back arrow to seek back. Result: it froze.


I can reproduce that, will try to fix it. You should not experience such
a problem with GStreamer based players, I think. Have you try any other
players?


I had no GStreamer-based players installed, so installed gst123 for a
quick test. Result: same freeze.

Also tested with VLC, seeking there does not freeze.


We believe we finally figured out the cause and fixed the issue.
Please try the latest patches in 
https://github.com/hfujita/pulseaudio-raop2 (at `hf/raop2-v2-v5.99.1` 
branch).


The detailed discussion can be found here:
https://github.com/hfujita/pulseaudio-raop2/issues/31


With Bino, I was able to trigger this assertion failure:

E: [raop-sink-[192.168.1.39]:5000] rtsp_client.c: Assertion 'c-url'
failed at modules/rtp/rtsp_client.c:441, function rtsp_exec(). Aborting.


I could not reproduce this (Bino immediately crashed with any of my 
input file), but I believe this has also been fixed in the above branch.

(https://github.com/hfujita/pulseaudio-raop2/issues/9)


Then I killed the HiFi Speaker application on Android. Result:
PulseAudio unfroze mpv's stream and moved it back to analog headphones.

Then I started Airfoil Speakers on Android. Result: PulseAudio does not
see it, even if module-raop-discover is reloaded.


This may be a module-raop-discover bug (Avahi related). Can you post the
full pulseaudio log?


Sure. And here is what avahi-browse --all prints:

aep@aep-haswell ~/raop/pulseaudio $ avahi-browse --all
+   eno1 IPv6 aep@aep-haswell: Built-in Audio Digital Stereo (HDMI)
_pulse-sink._tcp local
+   eno1 IPv6 aep@aep-haswell: Built-in Audio Analog Stereo
_pulse-sink._tcp local
+   eno1 IPv4 aep@aep-haswell: Built-in Audio Digital Stereo (HDMI)
_pulse-sink._tcp local
+   eno1 IPv4 aep@aep-haswell: Built-in Audio Analog Stereo
_pulse-sink._tcp local
+   eno1 IPv6 aep@aep-haswell _pulse-server._tcp   local
+   eno1 IPv4 aep@aep-haswell _pulse-server._tcp   local
+   eno1 IPv6 aep@aep-haswell: HD Webcam C910 Analog Stereo
_pulse-source._tcp   local
+   eno1 IPv6 aep@aep-haswell: Built-in Audio Analog Stereo
_pulse-source._tcp   local
+   eno1 IPv4 aep@aep-haswell: HD Webcam C910 Analog Stereo
_pulse-source._tcp   local
+   eno1 IPv4 aep@aep-haswell: Built-in Audio Analog Stereo
_pulse-source._tcp   local
+   eno1 IPv6 aep-haswell   _ssh._tcp
  local
+   eno1 IPv4 aep-haswell   _ssh._tcp
  local
+   eno1 IPv6 aep-haswell [94:de:80:6f:9a:d4] _workstation._tcplocal
+   eno1 IPv4 aep-haswell [94:de:80:6f:9a:d4] _workstation._tcplocal
+   eno1 IPv6 aep-haswell _sftp-ssh._tcp   local
+   eno1 IPv4 aep-haswell _sftp-ssh._tcp   local
+   eno1 IPv6 5CF8A18FB95B@Android _airfoilspeaker._tcp local
+   eno1 IPv6 5CF8A18FB95B@Android (2) _airfoilspeaker._tcp local
+   eno1 IPv4 5CF8A18FB95B@Android _airfoilspeaker._tcp local
-   eno1 IPv4 5CF8A18FB95B@Android _airfoilspeaker._tcp local
-   eno1 IPv6 5CF8A18FB95B@Android _airfoilspeaker._tcp local
+   eno1 IPv4 5CF8A18FB95B@Android _airfoilspeaker._tcp local
+   eno1 IPv6 5CF8A18FB95B@Android _airfoilspeaker._tcp local

The relevant part of the pulseaudio log is:

D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream,
connection not established yet...
D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream,
connection not established yet...
D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream,
connection not established yet...
D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream,
connection not established yet...
D: [pulseaudio] socket-client.c: connect(): Connection refused
E: [pulseaudio] rtsp_client.c: Connection failed: Connection refused

So - it is not on port 5000. This connects and pretends to send audio:

pacmd load-module module-raop-sink 'server=[192.168.1.39]:6000'
sink_name=raop_output.Airfoil.local

Re: [pulseaudio-discuss] RAOP2 patch testing result

2014-11-13 Thread Alexander E. Patrakov

13.11.2014 02:13, Martin Blanchard wrote:

On Tue, 2014-11-11 at 23:45 +0500, Alexander E. Patrakov wrote:

Hi.


Hello Alexander!


I have cloned the raop2-v2 branch from
https://github.com/colinleroy/pulseaudio


First, thanks for the testings.


The following test was applied.

I have installed the Android HiFi application (also known as HiFi
Speaker), version 1.7 Beta, on my Android phone, and started it.

Link: http://forum.xda-developers.com/showthread.php?p=29986442

Version is important: this one is possibly-buggy in an interesting way.
Also, newer versions require a license for more than 30 minutes of
playback. Note: for some reason, Google Play has removed this app, so
you can only get it from various shady sources such as above.

Then, I ran the following command:

pacmd load-module module-raop-discover

Result: it found the speaker!

Then I started mpv on a music file, and redirected its output to the
HiFi Speaker using pavucontrol. Result: it worked.

Then I pressed the back arrow to seek back. Result: it froze.


I can reproduce that, will try to fix it. You should not experience such
a problem with GStreamer based players, I think. Have you try any other
players?


I had no GStreamer-based players installed, so installed gst123 for a 
quick test. Result: same freeze.


Also tested with VLC, seeking there does not freeze.

With Bino, I was able to trigger this assertion failure:

E: [raop-sink-[192.168.1.39]:5000] rtsp_client.c: Assertion 'c-url' 
failed at modules/rtp/rtsp_client.c:441, function rtsp_exec(). Aborting.






Then I killed the HiFi Speaker application on Android. Result:
PulseAudio unfroze mpv's stream and moved it back to analog headphones.

Then I started Airfoil Speakers on Android. Result: PulseAudio does not
see it, even if module-raop-discover is reloaded.


This may be a module-raop-discover bug (Avahi related). Can you post the
full pulseaudio log?


Sure. And here is what avahi-browse --all prints:

aep@aep-haswell ~/raop/pulseaudio $ avahi-browse --all
+   eno1 IPv6 aep@aep-haswell: Built-in Audio Digital Stereo (HDMI) 
_pulse-sink._tcp local
+   eno1 IPv6 aep@aep-haswell: Built-in Audio Analog Stereo 
_pulse-sink._tcp local
+   eno1 IPv4 aep@aep-haswell: Built-in Audio Digital Stereo (HDMI) 
_pulse-sink._tcp local
+   eno1 IPv4 aep@aep-haswell: Built-in Audio Analog Stereo 
_pulse-sink._tcp local
+   eno1 IPv6 aep@aep-haswell 
_pulse-server._tcp   local
+   eno1 IPv4 aep@aep-haswell 
_pulse-server._tcp   local
+   eno1 IPv6 aep@aep-haswell: HD Webcam C910 Analog Stereo 
_pulse-source._tcp   local
+   eno1 IPv6 aep@aep-haswell: Built-in Audio Analog Stereo 
_pulse-source._tcp   local
+   eno1 IPv4 aep@aep-haswell: HD Webcam C910 Analog Stereo 
_pulse-source._tcp   local
+   eno1 IPv4 aep@aep-haswell: Built-in Audio Analog Stereo 
_pulse-source._tcp   local
+   eno1 IPv6 aep-haswell   _ssh._tcp 
 local
+   eno1 IPv4 aep-haswell   _ssh._tcp 
 local
+   eno1 IPv6 aep-haswell [94:de:80:6f:9a:d4] 
_workstation._tcplocal
+   eno1 IPv4 aep-haswell [94:de:80:6f:9a:d4] 
_workstation._tcplocal
+   eno1 IPv6 aep-haswell 
_sftp-ssh._tcp   local
+   eno1 IPv4 aep-haswell 
_sftp-ssh._tcp   local
+   eno1 IPv6 5CF8A18FB95B@Android 
_airfoilspeaker._tcp local
+   eno1 IPv6 5CF8A18FB95B@Android (2) 
_airfoilspeaker._tcp local
+   eno1 IPv4 5CF8A18FB95B@Android 
_airfoilspeaker._tcp local
-   eno1 IPv4 5CF8A18FB95B@Android 
_airfoilspeaker._tcp local
-   eno1 IPv6 5CF8A18FB95B@Android 
_airfoilspeaker._tcp local
+   eno1 IPv4 5CF8A18FB95B@Android 
_airfoilspeaker._tcp local
+   eno1 IPv6 5CF8A18FB95B@Android 
_airfoilspeaker._tcp local


The relevant part of the pulseaudio log is:

D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream, 
connection not established yet...
D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream, 
connection not established yet...
D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream, 
connection not established yet...
D: [raop-sink-[192.168.1.39]:5000] raop-client.c: Can't stream, 
connection not established yet...

D: [pulseaudio] socket-client.c: connect(): Connection refused
E: [pulseaudio] rtsp_client.c: Connection failed: Connection refused

So - it is not on port 5000. This connects and pretends to send audio:

pacmd load-module module-raop-sink 'server=[192.168.1.39]:6000' 
sink_name=raop_output.Airfoil.local 
sink_properties='device.description=Airfoil-Speakers' protocol=UDP 
encryption=RSA codec=ALAC channels=2 format=16 rate=44100


protocol=TCP causes Airfoil Speakers to crash.

All the attempts of PulseAudio to speak to Airfoil Speakers have been 
logged and attached.


--
Alexander E. Patrakov


pulse-raop.log.gz
Description: application/gzip
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org

Re: [pulseaudio-discuss] RAOP2 patch testing result

2014-11-12 Thread Martin Blanchard
On Tue, 2014-11-11 at 23:45 +0500, Alexander E. Patrakov wrote:
 Hi.

Hello Alexander!

 I have cloned the raop2-v2 branch from 
 https://github.com/colinleroy/pulseaudio

First, thanks for the testings.

 The following test was applied.
 
 I have installed the Android HiFi application (also known as HiFi 
 Speaker), version 1.7 Beta, on my Android phone, and started it.
 
 Link: http://forum.xda-developers.com/showthread.php?p=29986442
 
 Version is important: this one is possibly-buggy in an interesting way. 
 Also, newer versions require a license for more than 30 minutes of 
 playback. Note: for some reason, Google Play has removed this app, so 
 you can only get it from various shady sources such as above.
 
 Then, I ran the following command:
 
 pacmd load-module module-raop-discover
 
 Result: it found the speaker!
 
 Then I started mpv on a music file, and redirected its output to the 
 HiFi Speaker using pavucontrol. Result: it worked.
 
 Then I pressed the back arrow to seek back. Result: it froze.

I can reproduce that, will try to fix it. You should not experience such
a problem with GStreamer based players, I think. Have you try any other
players?

 Then I killed the HiFi Speaker application on Android. Result: 
 PulseAudio unfroze mpv's stream and moved it back to analog headphones.
 
 Then I started Airfoil Speakers on Android. Result: PulseAudio does not 
 see it, even if module-raop-discover is reloaded.

This may be a module-raop-discover bug (Avahi related). Can you post the
full pulseaudio log?

 I suspected that I could load module-raop-sink manually:
 
 pacmd load-module module-raop-sink server=192.168.1.39 protocol=UDP

 Result: freeze. So it looks like Airfoil Speakers are just incompatible.

Well, specifying protocol only may not be enough. You may want to try
something like this:

pactl load-module module-raop-sink server=[192.168.1.39]:5000
sink_name=raop_output.Airfoil.local
sink_properties='device.description=Airfoil-Speakers' protocol=UDP
encryption=RSA codec=ALAC channels=2 format=16 rate=44100

 Started HiFi Speaker again, now it got autodetected.
 
 So the module should have some more graceful detection of dead or buggy 
 receivers.

Agreed, but the issues you are reporting here are likely to be bugs or
problems in our RAOP client implementation...



signature.asc
Description: This is a digitally signed message part
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


[pulseaudio-discuss] RAOP2 patch testing result

2014-11-11 Thread Alexander E. Patrakov

Hi.

I have cloned the raop2-v2 branch from 
https://github.com/colinleroy/pulseaudio


The following test was applied.

I have installed the Android HiFi application (also known as HiFi 
Speaker), version 1.7 Beta, on my Android phone, and started it.


Link: http://forum.xda-developers.com/showthread.php?p=29986442

Version is important: this one is possibly-buggy in an interesting way. 
Also, newer versions require a license for more than 30 minutes of 
playback. Note: for some reason, Google Play has removed this app, so 
you can only get it from various shady sources such as above.


Then, I ran the following command:

pacmd load-module module-raop-discover

Result: it found the speaker!

Then I started mpv on a music file, and redirected its output to the 
HiFi Speaker using pavucontrol. Result: it worked.


Then I pressed the back arrow to seek back. Result: it froze.

Then I killed the HiFi Speaker application on Android. Result: 
PulseAudio unfroze mpv's stream and moved it back to analog headphones.


Then I started Airfoil Speakers on Android. Result: PulseAudio does not 
see it, even if module-raop-discover is reloaded.


I suspected that I could load module-raop-sink manually:

pacmd load-module module-raop-sink server=192.168.1.39 protocol=UDP

Result: freeze. So it looks like Airfoil Speakers are just incompatible.

Started HiFi Speaker again, now it got autodetected.

So the module should have some more graceful detection of dead or buggy 
receivers.


--
Alexander E. Patrakov
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss