[Bug] JollaC and SailfishX: car kit connected with bluetooth music works but phone calls do not

asked 2017-09-11 17:56:43 +0300

harry gravatar image

updated 2018-06-27 11:24:18 +0300

When my car kit and my JollaC or my Xperia X auto-connect the car kit connects to pbap. This profile gets an ENOSTR error and then the PBAP profile disconnects. With this the car-kit shows connected with jolla but the Voice Gateway is never connected. I have to manually disconnect the bluetooth connection and then connect it again via the phone's settings menu. After that playing music or any other signal work but during phone calls neither the speaker nor the mic works.

I have logged everything in the attached logfile blue.txt

Imho these are the relevant lines:

Jul 27 21:22:48 Sailfish bluetoothd[1032]: bluetoothd[1032]: src/device.c:device_profile_connected() Phone Book Access Success (0)
Jul 27 21:22:48 Sailfish obexd-wrapper[2320]: obexd[2320]: CONNECT(0x0), (null)(0xffffffff)
Jul 27 21:22:48 Sailfish obexd-wrapper[2320]: obexd[2320]: CONNECT(0x0), (null)(0x0)
Jul 27 21:22:48 Sailfish obexd-wrapper[2320]: obexd[2320]: GET(0x3), (null)(0xffffffff)
Jul 27 21:22:48 Sailfish obexd-wrapper[2320]: obexd[2320]: get_next_header(): Resource temporarily unavailable (11)
Jul 27 21:22:48 Sailfish dbus-daemon[1085]: Activating service name='com.jolla.ObexCallData'
Jul 27 21:22:48 Sailfish obexd-calldata-provider[8929]: [W] unknown:0 - The 'mergePresenceChanges' option has not been configured - presence changes will only be reported via ContactManagerEngine::contactsPresenceChanged()
Jul 27 21:22:48 Sailfish obexd-calldata-provider[8929]: [W] CommHistoryDatabase::open:303 - Opened commhistory database: "/home/nemo/.local/share/commhistory/commhistory.db"
Jul 27 21:22:48 Sailfish dbus-daemon[1085]: Successfully activated service 'com.jolla.ObexCallData'
Jul 27 21:22:48 Sailfish obexd[2320]: GET(0x3), CONTINUE(0x10)
Jul 27 21:22:48 Sailfish obexd[2320]: read(): Device not a stream (60)
Jul 27 21:22:48 Sailfish obexd-wrapper[2320]: obexd[2320]: GET(0x3), CONTINUE(0x10)
Jul 27 21:22:48 Sailfish obexd-wrapper[2320]: obexd[2320]: read(): Device not a stream (60)
Jul 27 21:22:49 Sailfish obexd[2320]: DISCONNECT(0x1), (null)(0xffffffff)
Jul 27 21:22:49 Sailfish obexd[2320]: DISCONNECT(0x1), SUCCESS(0x20)
Jul 27 21:22:49 Sailfish obexd-wrapper[2320]: obexd[2320]: DISCONNECT(0x1), (null)(0xffffffff)
Jul 27 21:22:49 Sailfish obexd-wrapper[2320]: obexd[2320]: DISCONNECT(0x1), SUCCESS(0x20)
Jul 27 21:22:49 Sailfish bluetoothd[1032]: src/profile.c:ext_io_disconnected() Phone Book Access disconnected from 00:12:1C:BB:29:5E

Update 2017-11-22:

It seems the problem is located at the pulseaudio module "module-bluez5-discover".

If my car cit initiates the connection only the profile droid_hfp is available.

Karte #12
Name: bluez_card.00_12_1C_BB_29_5E
Treiber: module-bluez5-device.c
Owner-Modul: 36
Eigenschaften:
    device.description = "Parrot MK6000v1.03a"
    device.string = "00:12:1C:BB:29:5E"
    device.api = "bluez"
    device.class = "sound"
    device.bus = "bluetooth"
    device.form_factor = "hands-free"
    bluez.path = "/org/bluez/hci0/dev_00_12_1C_BB_29_5E"
    bluez.class = "0x240408"
    bluez.alias = "Parrot MK6000v1.03a"
    device.icon_name = "audio-handsfree-bluetooth"
    device.intended_roles = "phone"
    policy.card.typelist = "bta2dp bta2dpforalien bthsp bthspforcall bthspforalien bthfp bthfpforcall bthfpforalien ihfandheadset ihfandheadphone headset headsetforcall headsetforalien headphone headphoneforcall headphoneforalien ihfandtvout earpiece earpieceforcall earpieceforalien ihfforcall ihf ihfforalien"
Profile:
    headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: no)
    a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: no)
    droid_hfp: Droid Headset (HFP) (sinks: 0, sources: 0, priority: 5, available: yes)
    droid_hsp: Droid Headset (HSP) (sinks: 0, sources: 0, priority: 5, available: no)
    off: Aus (sinks: 0, sources: 0, priority: 0, available: yes)
Aktive Profile: off
Profile:
    handsfree-output: Handsfree (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit, a2dp_sink
    handsfree-input: Handsfree (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit

If connection is initiated by phone

Karte #13
Name: bluez_card.00_12_1C_BB_29_5E
Treiber: module-bluez5-device.c
Owner-Modul: 37
Eigenschaften:
    device.description = "Parrot MK6000v1.03a"
    device.string = "00:12:1C:BB:29:5E"
    device.api = "bluez"
    device.class = "sound"
    device.bus = "bluetooth"
    device.form_factor = "hands-free"
    bluez.path = "/org/bluez/hci0/dev_00_12_1C_BB_29_5E"
    bluez.class = "0x240408"
    bluez.alias = "Parrot MK6000v1.03a"
    device.icon_name = "audio-handsfree-bluetooth"
    device.intended_roles = "phone"
    policy.card.typelist = "bta2dp bta2dpforalien bthsp bthspforcall bthspforalien bthfp bthfpforcall bthfpforalien ihfandheadset ihfandheadphone headset headsetforcall headsetforalien headphone headphoneforcall headphoneforalien ihfandtvout earpiece earpieceforcall earpieceforalien ihfforcall ihf ihfforalien"
Profile:
    headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: no)
    a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
    droid_hfp: Droid Headset (HFP) (sinks: 0, sources: 0, priority: 5, available: no)
    droid_hsp: Droid Headset (HSP) (sinks: 0, sources: 0, priority: 5, available: no)
    off: Aus (sinks: 0, sources: 0, priority: 0, available: yes)
Aktive Profile: a2dp_sink
Profile:
    handsfree-output: Handsfree (priority: 0, latency offset: 0 usec)
        Part of profile(s): headset_head_unit, a2dp_sink
    handsfree-input: Handsfree (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit

There only profile a2dp_sink is available.

So the main question is why is only one profile available?

You can get this information with terminal command "pactl list cards"

Update 2017-12-01:

In my opinion the real bug is that pulseaudio cannot switch between the profile for phoning (HFP/HSP) and the profile for playing music/sound (a2dp).

I submitted a patch to pulseaudio which was improved and merged today: https://git.merproject.org/mer-core/pulseaudio/commit/3dd77ef90820809073ee81732fe78276dc50a685

If someone could build it on mer OBS I would be keen to try it out.

Update 2018-06-27:

There is a patch in bluez which might be related: https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=477ecca127c529611adbc53f08039cefaf86305d

The discussion that lead to this patch is on the bluez dev mailing list https://marc.info/?l=linux-bluetooth&m=153003271530993&w=2

edit retag flag offensive close delete

Comments

1

I didn't check the log, but I observe a similar behaviour on my phone since 2.1.1.23. The latest bug fix release did not solve the problem.

Phone connects to the car via bluetooth without any problem, however, audio is not routed during a call. In my case, I don't have to reconnect BT- it's enough if I swap the audio output once on the UI. Of course, this is not really a solution, especially while driving.

This problem makes the phone almost unusable in the car.

  • Any plans from Jolla to fix this?
  • Will the same bug exist in the Sailfish image for Sony Xperia X?
onurati ( 2017-09-17 13:49:29 +0300 )edit

on my Jolla 1, the situation is the other way around. If my phone has been connected to the car via BT (possibly only if I had a call via BT), then after leaving the car, the phone does not restore the audio route unless I disable BT. (I have not tried to select audio source/sink via GUI.)

quatrox ( 2017-09-28 22:25:50 +0300 )edit
1

Using 2.1.2.3, audio is still not routed via BT to the car speakers during a call. I need to manually switch to phone speaker and then back to car speaker on the phone UI, in order to be able to hear the counterpart.

onurati ( 2017-10-08 12:08:25 +0300 )edit

@quatrox Do you have the same car audio system?

Direc ( 2017-10-31 19:32:06 +0300 )edit

As far I am concerned, I was able to connect my Intex Aqua Fish to my car but not succed with my Xperia ..:( I lost a big feature !

Cube ( 2017-11-22 14:22:20 +0300 )edit

@Cube: Same here and discussed in another thread. It turned out AquaFish is bluez4 and Sailfish X is bluez5. So bluez5 is the issue. The fact is that with bluez5 the HFT was moved to ofono and is provided via plugin to pulseaudio. In that case connection/pairing is not possible. There is a discussion regarding this issue on the developers list. I hope for a solution soon, as phone lays around pretty useless.

deloptes ( 2017-11-22 21:01:32 +0300 )edit

Is the log data from Sailfish X or Jolla - to me it looks like Jolla - please confirm

Look here

Also my investigation shows that probably the hfp_ag_bluez5 is not enabled in droid-config-f5121 and needs recompile too.

Please edit your post and provide information for which bluez4 or bluez5 your information is.

regards

deloptes ( 2017-12-01 14:00:21 +0300 )edit

The logs are from SailsfishX provided by Jolla but the logs look similar for my JollaC device.

Your investigations are wrong and I will post a HowTo that shows how you can enable ofono debugging and have more exact investigations ;)

harry ( 2017-12-01 14:46:00 +0300 )edit

This will be great to have some howto and be able to debug deeper, however it is not clear what you mean "SailsfishX provided by Jolla"

anyway - my time is limited and what I did was some surface snoop - no profile - no fun - no time for further investigation

Looked into the droid-config-f5121 - no HFT AG enabled there - no knowledge how to compile - missing device-configs.inc etc - I gave up!

It would be glad to have fix, but also knowledge, so please when you have time write the howto and let me have it.

Appreciated in advance

regards

deloptes ( 2017-12-01 18:02:30 +0300 )edit

SalifishX provided by Jolla is this: https://together.jolla.com/question/168541/release-notes-213-kymijoki-for-sony-xperia-x/

HFP AG for bluez5 is enabled in 2.1.3.

harry ( 2017-12-02 21:38:40 +0300 )edit

I added AG in my mido port, and it sort-of works ... however....it seems to only work once, after that, no call audio goes to the car ... and, after the first call, there is lots of crackling heard from the car kit, even when no call is happening. This only happens after the first call is made.

pigg ( 2017-12-02 21:41:01 +0300 )edit