Hi,
On my debian-unstable machine (with the latest alsa-bluetooth package), I was able to pair and stream audio to my Jabra BT8010 bluetooth headset using a2dpd.
However, each second the sound is chopped and I see this in a2dpd log:
A2DPD[22:37:01.398]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
A2DPD[22:37:01.495]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
A2DPD[22:37:01.595]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
A2DPD[22:37:01.676]: retrieve_data_from: Underrun: len=0 hw=98304 app=98304
A2DPD[22:37:01.766]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
A2DPD[22:37:01.853]: retrieve_data_from: Underrun: len=0 hw=98304 app=98304
A2DPD[22:37:01.938]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
A2DPD[22:37:02.000]: a2dp_state_machine: Too many answer for AVDTP_CLOSE
A2DPD[22:37:02.000]: a2dp_state_machine: State AVDTP_STATEX_DISCONNECTING
A2DPD[22:37:02.000]: a2dp_disconnect:
A2DPD[22:37:02.000]: a2dp_stream_stop: Closing stream socket 10
A2DPD[22:37:02.000]: a2dp_stream_stop: Closed
A2DPD[22:37:02.000]: a2dp_stream_stop: State AVDTP_STATE_IDLE
A2DPD[22:37:02.000]: a2dp_disconnect: Closing ctl socket 9
A2DPD[22:37:02.000]: a2dp_disconnect: Closed
A2DPD[22:37:02.000]: a2dp_disconnect: State AVDTP_STATE_DISCONNECTED
A2DPD[22:37:02.000]: a2dpd_signal_state: Disconnected
A2DPD[22:37:02.860]: a2dp_state_connect: State AVDTP_STATEX_SDP_CONNECTING
A2DPD[22:37:02.861]: a2dp_state_machine: Role is INITIATOR
A2DPD[22:37:02.861]: a2dp_state_machine: (errno=115:Operation now in progress)SDP connection on socket 9
A2DPD[22:37:02.861]: a2dp_state_machine: State AVDTP_STATEX_SDP_CONNECTING_WAIT
A2DPD[22:37:02.861]: a2dpd_signal_state: Connecting 00:1A:45:1C:4D:79
A2DPD[22:37:02.919]: a2dp_state_machine: SDP connection terminated
A2DPD[22:37:03.017]: get_avdtp_psm: Parsing results
A2DPD[22:37:03.017]: get_avdtp_psm: Record
A2DPD[22:37:03.017]: get_avdtp_psm: Service Search OK
A2DPD[22:37:03.075]: get_avdtp_psm: Checking non spec audio
A2DPD[22:37:03.075]: a2dp_state_machine: Found psm 25
A2DPD[22:37:03.075]: a2dp_state_machine: State AVDTP_STATEX_CTL_CONNECTING
A2DPD[22:37:03.076]: a2dp_state_machine: Socket is 9
A2DPD[22:37:03.076]: a2dp_state_machine: (errno=115:Operation now in progress)State AVDTP_STATEX_CTL_CONNECTING_WAIT
A2DPD[22:37:03.310]: a2dp_state_machine: State AVDTP_STATE_IDLE
A2DPD[22:37:03.312]: a2dp_state_machine: State AVDTP_STATEX_DISCOVERING
A2DPD[22:37:03.312]: a2dp_state_machine: State AVDTP_STATEX_DISCOVERING_RESP
A2DPD[22:37:03.389]: a2dp_handle_avdtp_message: Read non command packet (msgtype=MESSAGE_TYPE_ACCEPT,signal=AVDTP_DISCOVER)
A2DPD[22:37:03.389]: a2dp_state_machine: AVDTP_DISCOVER success
A2DPD[22:37:03.389]: a2dp_state_machine: State AVDTP_STATEX_GETTING_CAPABILITIES
A2DPD[22:37:03.389]: a2dp_state_machine: Getting capabilities for SEID=1
A2DPD[22:37:03.389]: a2dp_state_machine: State AVDTP_STATEX_GETTING_CAPABILITIES_RESP
A2DPD[22:37:03.397]: retrieve_data_from: Underrun: len=0 hw=229376 app=229376
A2DPD[22:37:03.454]: a2dp_handle_avdtp_message: Read non command packet (msgtype=MESSAGE_TYPE_ACCEPT,signal=AVDTP_GET_CAPABILITIES)
A2DPD[22:37:03.454]: a2dp_state_machine: AVDTP_GET_CAPABILITIES success for seid 1
A2DPD[22:37:03.454]: a2dp_state_machine: servcap_cap=1, servcap_len=0,
A2DPD[22:37:03.454]: a2dp_state_machine: cap_type=7, length=6
A2DPD[22:37:03.454]: a2dp_state_machine: media_type=0, codec=0
A2DPD[22:37:03.454]: a2dp_state_machine: A2DPD Prefered bitpool 32
A2DPD[22:37:03.454]: a2dp_state_machine: Device Prefered bitpool 2 -> 50
A2DPD[22:37:03.454]: a2dp_state_machine: A2DPD Selected bitpool 32
A2DPD[22:37:03.454]: a2dp_state_machine: State AVDTP_STATEX_SETTING_CONFIGURATION
A2DPD[22:37:03.454]: a2dp_state_machine: State AVDTP_STATEX_SETTING_CONFIGURATION_RESP
A2DPD[22:37:03.522]: a2dp_handle_avdtp_message: Read non command packet (msgtype=MESSAGE_TYPE_ACCEPT,signal=AVDTP_SET_CONFIGURATION)
A2DPD[22:37:03.522]: a2dp_state_machine: AVDTP_SET_CONFIGURATION success
A2DPD[22:37:03.522]: a2dp_state_machine: State AVDTP_STATEX_STREAM_OPENING
A2DPD[22:37:03.522]: a2dp_state_machine: State AVDTP_STATEX_STREAM_OPENING_RESP
A2DPD[22:37:03.539]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
A2DPD[22:37:03.595]: a2dp_handle_avdtp_message: Read non command packet (msgtype=MESSAGE_TYPE_ACCEPT,signal=AVDTP_OPEN)
A2DPD[22:37:03.595]: a2dp_state_machine: AVDTP_OPEN success
A2DPD[22:37:03.595]: a2dp_state_machine: State AVDTP_STATE_CONFIGURED
A2DPD[22:37:03.596]: a2dp_state_machine: State AVDTP_STATEX_STREAM_CONNECTING
A2DPD[22:37:03.596]: a2dp_state_machine: Socket is 10
A2DPD[22:37:03.596]: a2dp_state_machine: (errno=115:Operation now in progress)State AVDTP_STATEX_STREAM_CONNECTING_WAIT
A2DPD[22:37:03.866]: a2dp_state_machine: Stream connected
A2DPD[22:37:03.866]: get_socket_omtu: Socket 10 imtu=672, omtu=895, flush_to=65535
A2DPD[22:37:03.866]: a2dp_state_machine: State AVDTP_STATE_OPEN_START_STREAMING
A2DPD[22:37:03.867]: a2dp_state_machine: State AVDTP_STATEX_STREAM_STARTING
A2DPD[22:37:03.867]: a2dpd_signal_state: Connected 00:1A:45:1C:4D:79
A2DPD[22:37:03.868]: a2dp_state_machine: State AVDTP_STATEX_STREAM_STARTING_WAIT
A2DPD[22:37:03.966]: retrieve_data_from: Underrun: len=0 hw=163840 app=163840
A2DPD[22:37:03.980]: a2dp_handle_avdtp_message: Read non command packet (msgtype=MESSAGE_TYPE_ACCEPT,signal=AVDTP_START)
A2DPD[22:37:03.980]: a2dp_state_machine: AVDTP_START success
A2DPD[22:37:03.980]: a2dp_state_machine: State AVDTP_STATE_STREAMING
A2DPD[22:37:04.378]: a2dp_transfer_raw: Wrote -1 not 621 bytes (sbc.len=76)
A2DPD[22:37:04.378]: transfer_outgoing_packets: Error in transfer (transfer=-1)
A2DPD[22:37:04.379]: a2dp_state_disconnect: State AVDTP_STATEX_STREAM_CLOSING
A2DPD[22:37:04.379]: a2dp_state_machine: State AVDTP_STATEX_STREAM_CLOSING_WAIT
A2DPD[22:37:04.379]: a2dpd_signal_state: Connecting 00:1A:45:1C:4D:79
A2DPD[22:37:04.445]: retrieve_data_from: Underrun: len=0 hw=589824 app=589824
A2DPD[22:37:04.537]: retrieve_data_from: Underrun: len=0 hw=131072 app=131072
I am using the latest jabra bt8010 firmware (1.36). Is it a buggy implementation on their side?
Logged In: NO
I've compiled my own version, with two changes in a2dpd_output_a2dp.c:
1. Increasing MAXMESSAGETIME from 3 to 5 (line 64)
2. Comment out the set_state in line 1795 and changing the debug message.
I haven't seen my modified debug message, so I assume that increasing the timeout did the trick.
It now works.