[Bug] JollaC and SailfishX: car kit connected with bluetooth music works but phone calls do not
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
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 +0200 )editon 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 +0200 )editUsing 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 +0200 )edit@quatrox Do you have the same car audio system?
Direc ( 2017-10-31 19:32:06 +0200 )editAs 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 +0200 )edit