<div dir="ltr"><div>Hi All.<br><br>I have a problem with hsp profile.<br><br>After connect to Philips WeCall Speaker profile headset_head_unit is available:<br><br>Card #2<br><br>       Name: bluez_card.0C_A6_94_25_70_DE<br><br>       Driver: module-bluez5-device.c<br><br>       Owner Module: 25<br><br>       Properties:<br><br>               device.description = "Philips WeCall Speaker"<br><br>               device.string = "0C:A6:94:25:70:DE"<br><br>               device.api = "bluez"<br><br>               device.class = "sound"<br><br>               device.bus = "bluetooth"<br><br>               device.form_factor = "headset"<br><br>               bluez.path = "/org/bluez/hci1/dev_0C_A6_94_25_70_DE"<br><br>               bluez.class = "0x240404"<br><br>               bluez.alias = "Philips WeCall Speaker"<br><br>               device.icon_name = "audio-headset-bluetooth"<br><br>               device.intended_roles = "phone"<br><br>       Profiles:<br><br>              <b> headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes</b><br><br>               a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)<br><br>               device.description = "Philips WeCall Speaker"<br><br>               off: Off (sinks: 0, sources: 0, priority: 0, available: yes)<br><br>       Active Profile: headset_head_unit<br><br>       Ports:<br><br>               headset-output: Headset (priority: 0, latency offset: 0 usec)<br><br>                       Part of profile(s): headset_head_unit, a2dp_sink<br><br>               headset-input: Headset (priority: 0, latency offset: 0 usec)<br><br>                       Part of profile(s): headset_head_unit<br><br><br>I set default sink and source.<br><br>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.<br><br>I run hcidump:<br><br>[root@localhost ~]# hcidump -i hci1 -X<br><br>HCI sniffer - Bluetooth packet analyzer ver 2.5<br><br>device: hci1 snap_len: 1500 filter: 0xffffffff<br><br>< HCI Command: Exit Sniff Mode (0x02|0x0004) plen 2<br><br>    handle 13<br><br>> HCI Event: Command Status (0x0f) plen 4<br><br>    Exit Sniff Mode (0x02|0x0004) status 0x00 ncmd 1<br><br>> HCI Event: Mode Change (0x14) plen 6<br><br>    status 0x00 handle 13 mode 0x00 interval 0<br><br>    Mode: Active<br><br>< HCI Command: Setup Synchronous Connection (0x01|0x0028) plen 17<br><br>    handle 13 voice setting 0x0060 ptype 0x003f<br><br>> HCI Event: Command Status (0x0f) plen 4<br><br>    Setup Synchronous Connection (0x01|0x0028) status 0x00 ncmd 1<br><br>> HCI Event: Synchronous Connect Complete (0x2c) plen 17<br><br>    status 0x00 handle 6 bdaddr 0C:A6:94:25:70:DE type eSCO<br><br>    Air mode: CVSD<br><br><b>< SCO data: handle 6 flags 0x00 dlen 48<br><br>    0000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................<br><br>    0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................<br><br>    0020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................<br><br>< SCO data: handle 6 flags 0x00 dlen 48<br><br>    0000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................<br><br>    0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................<br><br>    0020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................</b><br><br>< HCI Command: Disconnect (0x01|0x0006) plen 3<br><br>    handle 6 reason 0x13<br><br>    Reason: Remote User Terminated Connection<br><br>> HCI Event: Command Status (0x0f) plen 4<br><br>    Disconnect (0x01|0x0006) status 0x00 ncmd 1<br><br>> HCI Event: Disconn Complete (0x05) plen 4<br><br>    status 0x00 handle 6 reason 0x16<br><br>    Reason: Connection Terminated by Local Host<br><br><br><br>My controller - is a BCM4354 chip<br><br>[bluetooth]# show<br><br>Controller C0:97:27:4C:2E:67<br><br>       Name: ARTIK10<br><br>       Alias: ARTIK10<br><br>       Class: 0x0c0408<br><br>       Powered: yes<br><br>       Discoverable: no<br><br>       Pairable: yes<br><br>       UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)<br><br>       UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)<br><br>       UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)<br><br>       UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)<br><br>       Modalias: usb:v1D6Bp0246d0524<br><br>       Discovering: no<br><br><br><br>My device:<br><br>[Philips WeCall Speaker]# info 0C:A6:94:25:70:DE<br><br>Device 0C:A6:94:25:70:DE<br><br>       Name: Philips WeCall Speaker<br><br>       Alias: Philips WeCall Speaker<br><br>       Class: 0x240404<br><br>       Icon: audio-card<br><br>       Paired: yes<br><br>       Trusted: yes<br><br>       Blocked: no<br><br>       Connected: yes<br><br>       LegacyPairing: no<br><br>       UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)<br><br>       UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)<br><br>       UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)<br><br>       UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)<br><br><br><br><u>pulseaudio log</u><br><br>[root@localhost audio]# journalctl -b 0 | grep -i pulse<br><br>Oct 09 16:10:26 localhost systemd[1]: Started pulseaudio service.<br><br>Oct 09 16:10:26 localhost systemd[1]: Starting pulseaudio service...<br><br>Oct 09 16:10:26 localhost pulseaudio[3416]: W: [pulseaudio] main.c: Running in system mode, but --disallow-module-loading not set!<br><br>Oct 09 16:10:26 localhost pulseaudio[3416]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode!<br><br>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.<br><br>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.<br><br>Oct 09 16:10:26 localhost pulseaudio[3416]: W: [pulseaudio] main.c: Please read <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/">http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/</a> for an explanation why system mode is usually a bad idea.<br><br>Oct 09 16:10:27 localhost kernel: [c6] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>Oct 09 16:10:27 localhost kernel: [c1] lpass_set_sched: [pulseaudio] pid = 3416, prio = 49<br><br>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<br><br>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<br><br>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<br><br>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<br><br><br><u>journalctl -b 0 | grep -i blue</u><br><br>Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: Core ver 2.16<br><br>Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: HCI device and connection manager initialized<br><br>Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: HCI socket layer initialized<br><br>Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: L2CAP socket layer initialized<br><br>Oct 09 16:10:24 localhost kernel: [c6] Bluetooth: SCO socket layer initialized<br><br>Oct 09 16:10:24 localhost kernel: [c5] Bluetooth: Generic Bluetooth SDIO driver ver 0.1<br><br>Oct 09 16:10:25 localhost kernel: [c0] bcm4354_bluetooth bluetooth.8: bcm4354_bluetooth_probe.<br><br>Oct 09 16:10:25 localhost kernel: [c2] [BT] Bluetooth Power On.<br><br>Oct 09 16:10:25 localhost kernel: [c5] bcm4354_bluetooth bluetooth.8: bcm4354_bluetooth_probe End<br><br>Oct 09 16:10:25 localhost kernel: [c7] [BT] Bluetooth Power On.<br><br>Oct 09 16:10:26 localhost dbus-daemon[3403]: Unknown username "bluealsa" in message bus configuration file<br><br>Oct 09 16:10:26 localhost kernel: [c6] [BT] Bluetooth Power On.<br><br>Oct 09 16:10:26 localhost systemd[1]: Starting BCM4354 Bluetooth firmware service...<br><br>Oct 09 16:10:27 localhost fwdown.sh[3423]: /etc/bluetooth /<br><br>Oct 09 16:10:27 localhost dbus[3403]: [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service'<br><br>Oct 09 16:10:27 localhost systemd[1]: Started BCM4354 Bluetooth firmware service.<br><br>Oct 09 16:10:27 localhost systemd[1]: Starting Bluetooth service...<br><br>Oct 09 16:10:27 localhost bluetoothd[3555]: Bluetooth daemon 5.36<br><br>Oct 09 16:10:27 localhost dbus[3403]: [system] Successfully activated service 'org.bluez'<br><br>Oct 09 16:10:27 localhost bluetoothd[3555]: Starting SDP server<br><br>Oct 09 16:10:27 localhost systemd[1]: Started Bluetooth service.<br><br>Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: BNEP (Ethernet Emulation) ver 1.3<br><br>Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: BNEP filters: protocol multicast<br><br>Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: BNEP socket layer initialized<br><br>Oct 09 16:10:27 localhost bluetoothd[3555]: Bluetooth management interface 1.3 initialized<br><br>Oct 09 16:10:27 localhost connmand[3419]: Method "ListAdapters" with signature "" on interface "org.bluez.Manager" doesn't exist<br><br>Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI UART driver ver 2.2<br><br>Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI H4 protocol initialized<br><br>Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI BCSP protocol initialized<br><br>Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCILL protocol initialized<br><br>Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCIATH3K protocol initialized<br><br>Oct 09 16:10:27 localhost kernel: [c3] Bluetooth: HCI Three-wire UART (H5) protocol initialized<br><br>Oct 09 16:10:27 localhost bluetoothd[3555]: Failed to obtain handles for "Service Changed" characteristic<br><br>Oct 09 16:10:27 localhost systemd[1]: Reached target Bluetooth.<br><br>Oct 09 16:10:27 localhost systemd[1]: Starting Bluetooth.<br><br>Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: RFCOMM TTY layer initialized<br><br>Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: RFCOMM socket layer initialized<br><br>Oct 09 16:10:27 localhost kernel: [c0] Bluetooth: RFCOMM ver 1.11<br><br>Oct 09 16:10:27 localhost bluetoothd[3555]: hci1 Load Connection Parameters failed: Unknown Command (0x01)<br><br>Oct 09 16:10:28 localhost bluetoothd[3555]: Endpoint registered: sender=:1.5 path=/MediaEndpoint/A2DPSource<br><br>Oct 09 16:10:28 localhost bluetoothd[3555]: Endpoint registered: sender=:1.5 path=/MediaEndpoint/A2DPSink<br><br><br>[root@localhost audio]# <u>pulseaudio --version</u><br><br>pulseaudio 6.0<br><br>[root@localhost audio]# <u>bluetoothctl --version</u><br><br>5.36<br><br>I checked many different configuration. The last one is:<br><br>--<br><br>[root@localhost audio]# cat /etc/bluetooth/audio.conf<br><br># Configuration file for the audio service<br><br><br># This section contains options which are not specific to any<br><br># particular interface<br><br>[General]<br><br><br># Switch to master role for incoming connections (defaults to true)<br><br>Master=true<br><br><br># If we want to disable support for specific services<br><br># Defaults to supporting all implemented services<br><br>#Disable=Gateway,Source,Socket<br><br>#Disable=Gateway<br><br>#Enable=Headset<br><br>#Enable=Gateway,Source,Socket<br><br>Enable=Source,Sink,Media,Socket,Headset<br><br>#Enable=Source<br><br># SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)<br><br># Defaults to HCI<br><br>#SCORouting=PCM<br><br><br># Automatically connect both A2DP and HFP/HSP profiles for incoming<br><br># connections. Some headsets that support both profiles will only connect the<br><br># other one automatically so the default setting of true is usually a good<br><br># idea.<br><br>AutoConnect=true<br><br><br># Headset interface specific options (i.e. options which affect how the audio<br><br># service interacts with remote headset devices)<br><br>[Headset]<br><br><br># Set to true to support HFP, false means only HSP is supported<br><br># Defaults to true<br><br>HFP=false<br><br><br># Maximum number of connected HSP/HFP devices per adapter. Defaults to 1<br><br>MaxConnected=1<br><br><br># Set to true to enable use of fast connectable mode (faster page scanning)<br><br># for HFP when incoming call starts. Default settings are restored after<br><br># call is answered or rejected. Page scan interval is much shorter and page<br><br># scan type changed to interlaced. Such allows faster connection initiated<br><br># by a headset.<br><br>FastConnectable=true<br><br><br># Just an example of potential config options for the other interfaces<br><br>[A2DP]<br><br>SBCSources=1<br><br>MPEG12Sources=0<br><br>--<br><br>[root@localhost audio]# cat /etc/pulse/<a href="http://system.pa">system.pa</a><br><br>#!/usr/bin/pulseaudio -nF<br><br>#<br><br># This file is part of PulseAudio.<br><br>#<br><br># PulseAudio is free software; you can redistribute it and/or modify it<br><br># under the terms of the GNU Lesser General Public License as published by<br><br># the Free Software Foundation; either version 2 of the License, or<br><br># (at your option) any later version.<br><br>#<br><br># PulseAudio is distributed in the hope that it will be useful, but<br><br># WITHOUT ANY WARRANTY; without even the implied warranty of<br><br># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br><br># General Public License for more details.<br><br>#<br><br># You should have received a copy of the GNU Lesser General Public License<br><br># along with PulseAudio; if not, see <<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>>.<br><br># This startup script is used only if PulseAudio is started per-user<br><br># (i.e. not in system mode)<br><br>.nofail<br><br>### Load something into the sample cache<br><br>#load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/bell.oga<br><br>#load-sample-lazy pulse-hotplug /usr/share/sounds/freedesktop/stereo/device-added.oga<br><br>#load-sample-lazy pulse-coldplug /usr/share/sounds/freedesktop/stereo/device-added.oga<br><br>#load-sample-lazy pulse-access /usr/share/sounds/freedesktop/stereo/message.oga<br><br>.fail<br><br>### Automatically restore the volume of streams and devices<br><br>load-module module-device-restore<br><br>load-module module-stream-restore<br><br>load-module module-card-restore<br><br>### Automatically augment property information from .desktop files<br><br>### stored in /usr/share/application<br><br>load-module module-augment-properties<br><br>### Should be after module-*-restore but before module-*-detect<br><br>load-module module-switch-on-port-available<br><br>### Load audio drivers statically<br><br>### (it's probably better to not load these drivers manually, but instead<br><br>### use module-udev-detect -- see below -- for doing this automatically)<br><br>#load-module module-alsa-sink<br><br>#load-module module-alsa-source device=hw:1,0<br><br>#load-module module-null-sink<br><br>#load-module module-pipe-sink<br><br>### Automatically load driver modules depending on the hardware available<br><br>.ifexists module-udev-detect.so<br><br>load-module module-udev-detect tsched=0<br><br>.else<br><br>### Use the static hardware detection module (for systems that lack udev support)<br><br>load-module module-detect<br><br>.endif<br><br>### Automatically connect sink and source if JACK server is present<br><br>.ifexists module-jackdbus-detect.so<br><br>.nofail<br><br>load-module module-jackdbus-detect channels=2<br><br>.fail<br><br>.endif<br><br>### Automatically load driver modules for Bluetooth hardware<br><br>.ifexists module-bluetooth-policy.so<br><br>load-module module-bluetooth-policy<br><br>.endif<br><br>.ifexists module-bluetooth-discover.so<br><br>load-module module-bluetooth-discover<br><br>##headset=native<br><br>.endif<br><br>### Load several protocols<br><br>.ifexists module-esound-protocol-unix.so<br><br>load-module module-esound-protocol-unix<br><br>.endif<br><br>load-module module-native-protocol-unix<br><br>### Network access (may be configured with paprefs, so leave this commented<br><br>### here if you plan to use paprefs)<br><br>#load-module module-esound-protocol-tcp<br><br>#load-module module-native-protocol-tcp<br><br>#load-module module-zeroconf-publish<br><br>### Load the RTP receiver module (also configured via paprefs, see above)<br><br>#load-module module-rtp-recv<br><br>### Load the RTP sender module (also configured via paprefs, see above)<br><br>#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"<br><br>#load-module module-rtp-send source=rtp.monitor<br><br>### Load additional modules from GConf settings. This can be configured with the paprefs tool.<br><br>### Please keep in mind that the modules configured by paprefs might conflict with manually<br><br>### loaded modules.<br><br>.ifexists module-gconf.so<br><br>.nofail<br><br>load-module module-gconf<br><br>.fail<br><br>.endif<br><br>### Automatically restore the default sink/source when changed by the user<br><br>### during runtime<br><br>### NOTE: This should be loaded as early as possible so that subsequent modules<br><br>### that look up the default sink/source get the right value<br><br>load-module module-default-device-restore<br><br>### Automatically move streams to the default sink if the sink they are<br><br>### connected to dies, similar for sources<br><br>load-module module-rescue-streams<br><br>### Make sure we always have a sink around, even if it is a null sink.<br><br>load-module module-always-sink<br><br>### Honour intended role device property<br><br>load-module module-intended-roles<br><br>### Automatically suspend sinks/sources that become idle for too long<br><br>load-module module-suspend-on-idle<br><br>### If autoexit on idle is enabled we want to make sure we only quit<br><br><br></div>How to fix this issue?<br><br><br></div>