[pulseaudio-discuss] Hsp profile available but not working

Vimal Babu Vimal.Babu at nestgroup.net
Fri Nov 3 08:11:01 UTC 2017


Hi,

I also faced same issue in HFP,

< SCO data: handle 6 flags 0x00 dlen 48

    0000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

< SCO data: handle 6 flags 0x00 dlen 48

    0000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

< HCI Command: Disconnect (0x01|0x0006) plen 3

    handle 6 reason 0x13

    Reason: Remote User Terminated Connection



What I did is that , I send commands to Bluetooth module, to switch from PCM to UART.


hcitool cmd 0x3F 0x01C 0x01 0x02 0x00 0x01 0x01                  //For routing
After sending this my issue was solved.

Regards,
Vimal Babu

From: pulseaudio-discuss [mailto:pulseaudio-discuss-bounces at lists.freedesktop.org] On Behalf Of Pawel B
Sent: Tuesday, October 31, 2017 6:00 PM
To: pulseaudio-discuss at lists.freedesktop.org
Subject: [pulseaudio-discuss] Hsp profile available but not working

Hi All.

I have a problem with hsp profile.

After connect to Philips WeCall Speaker profile headset_head_unit is available:

Card #2

       Name: bluez_card.0C_A6_94_25_70_DE

       Driver: module-bluez5-device.c

       Owner Module: 25

       Properties:

               device.description = "Philips WeCall Speaker"

               device.string = "0C:A6:94:25:70:DE"

               device.api = "bluez"

               device.class = "sound"

               device.bus = "bluetooth"

               device.form_factor = "headset"

               bluez.path = "/org/bluez/hci1/dev_0C_A6_94_25_70_DE"

               bluez.class = "0x240404"

               bluez.alias = "Philips WeCall Speaker"

               device.icon_name = "audio-headset-bluetooth"

               device.intended_roles = "phone"

       Profiles:

               headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes

               a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)

               device.description = "Philips WeCall Speaker"

               off: Off (sinks: 0, sources: 0, priority: 0, available: yes)

       Active Profile: headset_head_unit

       Ports:

               headset-output: Headset (priority: 0, latency offset: 0 usec)

                       Part of profile(s): headset_head_unit, a2dp_sink

               headset-input: Headset (priority: 0, latency offset: 0 usec)

                       Part of profile(s): headset_head_unit


I set default sink and source.

After run ‘mplayer test.wav’ nothing is happens (there is no sound). In a2dp_sink profile everything works fine, but I need use microphone to record voice, so I need to use headset_head_unit.

I run hcidump:

[root at localhost ~]# hcidump -i hci1 -X

HCI sniffer - Bluetooth packet analyzer ver 2.5

device: hci1 snap_len: 1500 filter: 0xffffffff

< HCI Command: Exit Sniff Mode (0x02|0x0004) plen 2

    handle 13

> HCI Event: Command Status (0x0f) plen 4

    Exit Sniff Mode (0x02|0x0004) status 0x00 ncmd 1

> HCI Event: Mode Change (0x14) plen 6

    status 0x00 handle 13 mode 0x00 interval 0

    Mode: Active

< HCI Command: Setup Synchronous Connection (0x01|0x0028) plen 17

    handle 13 voice setting 0x0060 ptype 0x003f

> HCI Event: Command Status (0x0f) plen 4

    Setup Synchronous Connection (0x01|0x0028) status 0x00 ncmd 1

> HCI Event: Synchronous Connect Complete (0x2c) plen 17

    status 0x00 handle 6 bdaddr 0C:A6:94:25:70:DE type eSCO

    Air mode: CVSD

< SCO data: handle 6 flags 0x00 dlen 48

    0000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

< SCO data: handle 6 flags 0x00 dlen 48

    0000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

    0020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

< HCI Command: Disconnect (0x01|0x0006) plen 3

    handle 6 reason 0x13

    Reason: Remote User Terminated Connection

> HCI Event: Command Status (0x0f) plen 4

    Disconnect (0x01|0x0006) status 0x00 ncmd 1

> HCI Event: Disconn Complete (0x05) plen 4

    status 0x00 handle 6 reason 0x16

    Reason: Connection Terminated by Local Host



My controller - is a BCM4354 chip

[bluetooth]# show

Controller C0:97:27:4C:2E:67

       Name: ARTIK10

       Alias: ARTIK10

       Class: 0x0c0408

       Powered: yes

       Discoverable: no

       Pairable: yes

       UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)

       UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)

       UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)

       UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)

       UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)

       UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

       UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)

       UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)

       Modalias: usb:v1D6Bp0246d0524

       Discovering: no



My device:

[Philips WeCall Speaker]# info 0C:A6:94:25:70:DE

Device 0C:A6:94:25:70:DE

       Name: Philips WeCall Speaker

       Alias: Philips WeCall Speaker

       Class: 0x240404

       Icon: audio-card

       Paired: yes

       Trusted: yes

       Blocked: no

       Connected: yes

       LegacyPairing: no

       UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)

       UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)

       UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

       UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)

       UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)

       UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)



pulseaudio log

[root at localhost audio]# journalctl -b 0 | grep -i pulse

Oct 09 16:10:26 localhost systemd[1]: Started pulseaudio service.

Oct 09 16:10:26 localhost systemd[1]: Starting pulseaudio service...

Oct 09 16:10:26 localhost pulseaudio[3416]: W: [pulseaudio] main.c: Running in system mode, but --disallow-module-loading not set!

Oct 09 16:10:26 localhost pulseaudio[3416]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode!

Oct 09 16:10:26 localhost pulseaudio[3416]: W: [pulseaudio] main.c: OK, so you are running PA in system mode. Please note that you most likely shouldn't be doing that.

Oct 09 16:10:26 localhost pulseaudio[3416]: W: [pulseaudio] main.c: If you do it nonetheless then it's your own fault if things don't work as expected.

Oct 09 16:10:26 localhost pulseaudio[3416]: W: [pulseaudio] main.c: Please read http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/ for an explanation why system mode is usually a bad idea.

Oct 09 16:10:27 localhost kernel: [c6] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49

Oct 09 16:10:27 localhost pulseaudio[3416]: W: [pulseaudio] authkey.c: Failed to open cookie file '/var/run/pulse/.config/pulse/cookie': No such file or directory

Oct 09 16:10:27 localhost pulseaudio[3416]: W: [pulseaudio] authkey.c: Failed to load authentication key '/var/run/pulse/.config/pulse/cookie': No such file or directory

Oct 09 16:10:27 localhost pulseaudio[3416]: W: [pulseaudio] authkey.c: Failed to open cookie file '/var/run/pulse/.pulse-cookie': No such file or directory

Oct 09 16:10:27 localhost pulseaudio[3416]: W: [pulseaudio] authkey.c: Failed to load authentication key '/var/run/pulse/.pulse-cookie': No such file or directory


journalctl -b 0 | grep -i blue

Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: Core ver 2.16

Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: HCI device and connection manager initialized

Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: HCI socket layer initialized

Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: L2CAP socket layer initialized

Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: SCO socket layer initialized

Oct 09 16:10:24 localhost kernel: [c5] Bluetooth: Generic Bluetooth SDIO driver ver 0.1

Oct 09 16:10:25 localhost kernel: [c0] bcm4354_bluetooth bluetooth.8: bcm4354_bluetooth_probe.

Oct 09 16:10:25 localhost kernel: [c2] [BT] Bluetooth Power On.

Oct 09 16:10:25 localhost kernel: [c5] bcm4354_bluetooth bluetooth.8: bcm4354_bluetooth_probe End

Oct 09 16:10:25 localhost kernel: [c7] [BT] Bluetooth Power On.

Oct 09 16:10:26 localhost dbus-daemon[3403]: Unknown username "bluealsa" in message bus configuration file

Oct 09 16:10:26 localhost kernel: [c6] [BT] Bluetooth Power On.

Oct 09 16:10:26 localhost systemd[1]: Starting BCM4354 Bluetooth firmware service...

Oct 09 16:10:27 localhost fwdown.sh[3423]: /etc/bluetooth /

Oct 09 16:10:27 localhost dbus[3403]: [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service'

Oct 09 16:10:27 localhost systemd[1]: Started BCM4354 Bluetooth firmware service.

Oct 09 16:10:27 localhost systemd[1]: Starting Bluetooth service...

Oct 09 16:10:27 localhost bluetoothd[3555]: Bluetooth daemon 5.36

Oct 09 16:10:27 localhost dbus[3403]: [system] Successfully activated service 'org.bluez'

Oct 09 16:10:27 localhost bluetoothd[3555]: Starting SDP server

Oct 09 16:10:27 localhost systemd[1]: Started Bluetooth service.

Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: BNEP (Ethernet Emulation) ver 1.3

Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: BNEP filters: protocol multicast

Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: BNEP socket layer initialized

Oct 09 16:10:27 localhost bluetoothd[3555]: Bluetooth management interface 1.3 initialized

Oct 09 16:10:27 localhost connmand[3419]: Method "ListAdapters" with signature "" on interface "org.bluez.Manager" doesn't exist

Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI UART driver ver 2.2

Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI H4 protocol initialized

Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI BCSP protocol initialized

Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCILL protocol initialized

Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCIATH3K protocol initialized

Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI Three-wire UART (H5) protocol initialized

Oct 09 16:10:27 localhost bluetoothd[3555]: Failed to obtain handles for "Service Changed" characteristic

Oct 09 16:10:27 localhost systemd[1]: Reached target Bluetooth.

Oct 09 16:10:27 localhost systemd[1]: Starting Bluetooth.

Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: RFCOMM TTY layer initialized

Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: RFCOMM socket layer initialized

Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: RFCOMM ver 1.11

Oct 09 16:10:27 localhost bluetoothd[3555]: hci1 Load Connection Parameters failed: Unknown Command (0x01)

Oct 09 16:10:28 localhost bluetoothd[3555]: Endpoint registered: sender=:1.5 path=/MediaEndpoint/A2DPSource

Oct 09 16:10:28 localhost bluetoothd[3555]: Endpoint registered: sender=:1.5 path=/MediaEndpoint/A2DPSink


[root at localhost audio]# pulseaudio --version

pulseaudio 6.0

[root at localhost audio]# bluetoothctl --version

5.36

I checked many different configuration. The last one is:

--

[root at localhost audio]# cat /etc/bluetooth/audio.conf

# Configuration file for the audio service


# This section contains options which are not specific to any

# particular interface

[General]


# Switch to master role for incoming connections (defaults to true)

Master=true


# If we want to disable support for specific services

# Defaults to supporting all implemented services

#Disable=Gateway,Source,Socket

#Disable=Gateway

#Enable=Headset

#Enable=Gateway,Source,Socket

Enable=Source,Sink,Media,Socket,Headset

#Enable=Source

# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)

# Defaults to HCI

#SCORouting=PCM


# Automatically connect both A2DP and HFP/HSP profiles for incoming

# connections. Some headsets that support both profiles will only connect the

# other one automatically so the default setting of true is usually a good

# idea.

AutoConnect=true


# Headset interface specific options (i.e. options which affect how the audio

# service interacts with remote headset devices)

[Headset]


# Set to true to support HFP, false means only HSP is supported

# Defaults to true

HFP=false


# Maximum number of connected HSP/HFP devices per adapter. Defaults to 1

MaxConnected=1


# Set to true to enable use of fast connectable mode (faster page scanning)

# for HFP when incoming call starts. Default settings are restored after

# call is answered or rejected. Page scan interval is much shorter and page

# scan type changed to interlaced. Such allows faster connection initiated

# by a headset.

FastConnectable=true


# Just an example of potential config options for the other interfaces

[A2DP]

SBCSources=1

MPEG12Sources=0

--

[root at localhost audio]# cat /etc/pulse/system.pa<http://system.pa>

#!/usr/bin/pulseaudio -nF

#

# This file is part of PulseAudio.

#

# PulseAudio is free software; you can redistribute it and/or modify it

# under the terms of the GNU Lesser General Public License as published by

# the Free Software Foundation; either version 2 of the License, or

# (at your option) any later version.

#

# PulseAudio is distributed in the hope that it will be useful, but

# WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

# General Public License for more details.

#

# You should have received a copy of the GNU Lesser General Public License

# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started per-user

# (i.e. not in system mode)

.nofail

### Load something into the sample cache

#load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/bell.oga

#load-sample-lazy pulse-hotplug /usr/share/sounds/freedesktop/stereo/device-added.oga

#load-sample-lazy pulse-coldplug /usr/share/sounds/freedesktop/stereo/device-added.oga

#load-sample-lazy pulse-access /usr/share/sounds/freedesktop/stereo/message.oga

.fail

### Automatically restore the volume of streams and devices

load-module module-device-restore

load-module module-stream-restore

load-module module-card-restore

### Automatically augment property information from .desktop files

### stored in /usr/share/application

load-module module-augment-properties

### Should be after module-*-restore but before module-*-detect

load-module module-switch-on-port-available

### Load audio drivers statically

### (it's probably better to not load these drivers manually, but instead

### use module-udev-detect -- see below -- for doing this automatically)

#load-module module-alsa-sink

#load-module module-alsa-source device=hw:1,0

#load-module module-null-sink

#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available

.ifexists module-udev-detect.so

load-module module-udev-detect tsched=0

.else

### Use the static hardware detection module (for systems that lack udev support)

load-module module-detect

.endif

### Automatically connect sink and source if JACK server is present

.ifexists module-jackdbus-detect.so

.nofail

load-module module-jackdbus-detect channels=2

.fail

.endif

### Automatically load driver modules for Bluetooth hardware

.ifexists module-bluetooth-policy.so

load-module module-bluetooth-policy

.endif

.ifexists module-bluetooth-discover.so

load-module module-bluetooth-discover

##headset=native

.endif

### Load several protocols

.ifexists module-esound-protocol-unix.so

load-module module-esound-protocol-unix

.endif

load-module module-native-protocol-unix

### Network access (may be configured with paprefs, so leave this commented

### here if you plan to use paprefs)

#load-module module-esound-protocol-tcp

#load-module module-native-protocol-tcp

#load-module module-zeroconf-publish

### Load the RTP receiver module (also configured via paprefs, see above)

#load-module module-rtp-recv

### Load the RTP sender module (also configured via paprefs, see above)

#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"

#load-module module-rtp-send source=rtp.monitor

### Load additional modules from GConf settings. This can be configured with the paprefs tool.

### Please keep in mind that the modules configured by paprefs might conflict with manually

### loaded modules.

.ifexists module-gconf.so

.nofail

load-module module-gconf

.fail

.endif

### Automatically restore the default sink/source when changed by the user

### during runtime

### NOTE: This should be loaded as early as possible so that subsequent modules

### that look up the default sink/source get the right value

load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are

### connected to dies, similar for sources

load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.

load-module module-always-sink

### Honour intended role device property

load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long

load-module module-suspend-on-idle

### If autoexit on idle is enabled we want to make sure we only quit

How to fix this issue?

________________________________

Confidentiality Statement / Disclaimer : This message and any attachments is intended for the sole use of the intended recipient. It may contain confidential information. Any unauthorized use, dissemination or modification is strictly prohibited. If you are not the intended recipient, please notify the sender immediately then delete it from all your systems, and do not copy, use or print. Internet communications are not secure and it is the responsibility of the recipient to make sure that it is virus/malicious code exempt.

The company/sender cannot be responsible for any unauthorized alterations or modifications made to the contents. If you require any form of confirmation of the contents, please contact the company/sender. The company/sender is not liable for any errors or omissions in the content of this message.

________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20171103/518c0d04/attachment-0001.html>


More information about the pulseaudio-discuss mailing list