[pulseaudio-discuss] PulseAudio+Bluez acting as Bluetooth stereo headset - no sound yet
Burkhard Stubert
burkhard.stubert at googlemail.com
Sat Jan 2 13:51:01 PST 2010
I debugged a bit further
2010/1/2 Burkhard Stubert <burkhard.stubert at googlemail.com>
> Hi Tanu,
>
> Thanks for the detailed analysis and for pointing out the reincarnation of
> the pulseaudio process. In the meantime, I succeeded in running scenario
> with pulseaudio v0.9.21. The result is exactly the same. It fails on the
> same assertion, pulseaudio dies and restarts after about 30 seconds. It
> looks very much like a bug report.
>
> I had a closer look at the log just before the failed assertion (some lines
> before tag ###1). Pulseaudio tells bluetoothd to set the configuration as
> follows:
>
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c: Sending
> BT_REQUEST -> BT_SET_CONFIGURATION
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c: Trying to
> receive message from audio service...
> Dec 31 16:01:11 beee bluetoothd[956]: Audio API: BT_REQUEST <-
> BT_SET_CONFIGURATION
> Dec 31 16:01:11 beee bluetoothd[956]: Media Codec: SBC Channel Modes:
> JointStereo Frequencies: 48Khz * Subbands: 8 Blocks: 16* Bitpool: 2-51
>
> Immediately before tag ###1, pulseaudio shows the configuration it has
> actually set:
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c: SBC
> parameters:
> Dec 31 16:01:11 beee bluetoothd[956]: setup_free(0x2a8f010)
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c:
> #011allocation=0
> Dec 31 16:01:11 beee bluetoothd[956]: avdtp_unref(0x2a84940): ref=3
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c: #011*
> subbands=1*
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c: #011*
> blocks=3*
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c:
> #011bitpool=51
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c:
> Connection to the device configured
> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c: Got the
> stream socket
>
> This looks very suspicious to me. Bluetoothd sends "8 subbands" and "16
> blocks" back to pulseaudio, but pulseaudio receives "1 subband" and "3
> blocks". That looks wrong, doesn't it?
>
> The discrepancy above might not be the real problem. Things are just
encoded in a different way: 16 blocks are encoded as 0x03 and 8 subbands as
0x01.
But, in sbc_get_frame_length() the encoding is decoded again. And now it's
getting interesting. According to the assertion, sbc_get_frame_length()
computes a frame length that is different from the actually received length
in the packet. In the assertion, decoded == 109 and frame_length == 115. On
top of it, the assertion fires the first time the execution runs over it.
So, the assertion is never satisfied. Something is really wrong here. But
what?
Burkhard
>
> 2010/1/2 Tanu Kaskinen <tanuk at iki.fi>
>
> pe, 2010-01-01 kello 16:02 +0100, Burkhard Stubert kirjoitti:
>> > Hi chaps,
>> >
>> > A happy new year to you all.
>> >
>> > I want to turn my Ubuntu-Karmic-based eee-PC into a Bluetooth stereo
>> > headset (eventually, the eee will be replaced by a car infotainment
>> > system). The eee connects via Bluetooth to a mobile phone, which acts
>> > as an audio source for the eee. The music played on the mobile is
>> > transported via Bluetooth to the eee and comes out of the eee's
>> > speakers. That's the theory. In practise, the streaming stops after
>> > 3-5 seconds and there is no sound any way.
>> >
>> > From the syslog messages (see attachment playmusic3.syslog), I see the
>> > following:
>> > * At tag "###1", pulseaudio has successfully created an audio
>> > source "bluez_source.00_25_48_F5_D8_15".
>> > * At tag "###2", the audio stream seems to be set up correctly.
>> > The message is "module-bluetooth-device.c: Stream properly set
>> > up, we're ready to roll!".
>> > * At tag "###3", there are some problems setting rlimit's. I
>> > guess because pulseaudio runs in a per-user session and does
>> > not have the access privileges to change the rlimit's. I
>> > assume that the problem isn't really important.
>>
>> Correctly assumed.
>>
>> > * From tag "###4" to tag "###5", pulseaudio tells alsa-mixer to
>> > look at profiles. It actually finds three supported profiles:
>> > ###4a - output:analog-stereo, ###4b - output:analog-stereo
>> > +input:analog-stereo, ###4c - input:analog-stereo. Question:
>> > What are these ALSA profiles used for?
>>
>> They are for switching the mode in which the sound card is used. Your
>> card can be used in three modes: analog stereo out, analog stereo in,
>> and a combination of them. There could be more on some other sound card;
>> I think the main motivation for the profiles came from the desire to
>> switch between stereo and surround modes.
>>
>> > * At tag "###6", things seem to go wrong with the message
>> > "alsa-mixer.c: Unable to attach to mixer front:0: No such file
>> > or directory". But maybe this problem can be ignored, because
>> > the next line says "alsa-mixer.c: Successfully attached to
>> > mixer 'hw:0'".
>>
>> Yes, it can be ignored. The alsa mixer apparently can't be opened using
>> the "front" device. I'm not sure if this is a bug in the driver, but we
>> can use "hw" as well.
>>
>> > * At tag "###7", pulseaudio seems to fall back to some default
>> > sinks and sources (module-device-restore.c comes into play).
>> > That doesn't look good. Question: What's going wrong here?
>>
>> Nothing is wrong. When sinks and sources are loaded,
>> module-device-restore restores them to the same state that they had when
>> pulseaudio was previously running.
>>
>> > * At tag "###8", things start to repeat and it is the same steps
>> > and message as from tag "###1".
>> > Any ideas what is going wrong in my setup?
>>
>> There are crashes, so apparently nothing is wrong in the setup. The a2dp
>> source is just buggy. Here are notes about each pulseaudio pid change:
>>
>> The log sample starts with some bluetooth activity, apparently the a2dp
>> source is being loaded. Pulseaudio has pid 1518.
>>
>> After ###2 the bluetooth device module fails an assertion:
>>
>> Dec 31 16:01:11 beee pulseaudio[1518]: module-bluetooth-device.c:
>> Assertion '(size_t) decoded == a2dp->frame_length' failed at
>> modules/bluetooth/module-bluetooth-device.c:1367, function
>> a2dp_process_push(). Aborting.
>>
>> A new pulseaudio process is spawned with pid 1772.
>>
>> Here's a mystery:
>>
>> Dec 31 16:01:12 beee pulseaudio[1772]: card.c: Created 1
>> "bluez_card.00_25_48_F5_D8_15"
>> Dec 31 16:01:43 beee pulseaudio[2030]: module-bluetooth-device.c:
>> Connected to the bluetooth audio service
>>
>> What's happening here? During 31 seconds pulseaudio pid changes from
>> 1772 to 2030, but nothing is logged during this change. Then the same
>> assertion failure occurs again:
>>
>> Dec 31 16:01:43 beee pulseaudio[2030]: module-bluetooth-device.c:
>> Assertion '(size_t) decoded == a2dp->frame_length' failed at
>> modules/bluetooth/module-bluetooth-device.c:1367, function
>> a2dp_process_push(). Aborting.
>>
>> After that a new pulseaudio instance is spawned with pid 2060. That
>> stays running until the end of the log sample.
>>
>> You seem to be running pulseaudio 0.9.19. There were some bluetooth
>> fixes in 0.9.20; I recommend updating to 0.9.21. If the bugs are still
>> there, file a new ticket.
>>
>> --
>> Tanu Kaskinen
>>
>> _______________________________________________
>> pulseaudio-discuss mailing list
>> pulseaudio-discuss at mail.0pointer.de
>> https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20100102/b0386e91/attachment.htm>
More information about the pulseaudio-discuss
mailing list