Hi all.
I am using WL1831 bluetooth module on a custom board, whose main processor has to send audio to heasets through bluetooth. The board I am working on has just UART connection, since the main processor lacks PCM controller. So, I want audio to go through HCI.
My setup is the following:
- bluez 5.31
- pulseaudio 6.0 with bluez5 module support
- ti wl18xx driver and firmware 8.5R, TIInit_11.8.32.bts file
I am able to pair and connect to headsets, so I think driver + bluetooth stack is fine. After connection, pulseaudio creates bluetooth source (thorugh module-bluez5-device), but no sink device, the one I need for my streaming application.
* Question: why isn't pulseaudio creating sink device and how can I create it manually (i.e. thorugh pactl or pacmd)?
Please consider module-udev-detect is not loaded (only module-detect) because my linux distributions lacks udev support. So no hoytplug support is present.
Please find below my current PA configuration:
Module #0
Name: module-device-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore the volume/mute state of devices"
module.version = "6.0"
Module #1
Name: module-stream-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore the volume/mute/device state of streams"
module.version = "6.0"
Module #2
Name: module-card-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore profile of cards"
module.version = "6.0"
Module #3
Name: module-augment-properties
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Augment the property sets of streams with additional static information"
module.version = "6.0"
Module #4
Name: module-switch-on-port-available
Argument:
Usage counter: n/a
Properties:
Module #5
Name: module-null-sink
Argument:
Usage counter: 1
Properties:
module.author = "Lennart Poettering"
module.description = "Clocked NULL sink"
module.version = "6.0"
Module #7
Name: module-bluetooth-policy
Argument:
Usage counter: n/a
Properties:
module.author = "Fr�éd�éric Dalleau"
module.description = "When a bluetooth sink or source is added, load module-loopback"
module.version = "6.0"
Module #8
Name: module-bluetooth-discover
Argument:
Usage counter: n/a
Properties:
module.author = "Jo�ão Paulo Rechi Vita"
module.description = "Detect available Bluetooth daemon and load the corresponding discovery module"
module.version = "6.0"
Module #9
Name: module-bluez5-discover
Argument:
Usage counter: n/a
Properties:
module.author = "Jo�ão Paulo Rechi Vita"
module.description = "Detect available BlueZ 5 Bluetooth audio devices and load BlueZ 5 Bluetooth audio drivers"
module.version = "6.0"
Module #10
Name: module-native-protocol-unix
Argument: auth-cookie=/var/run/pulse/cookie
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Native protocol (UNIX sockets)"
module.version = "6.0"
Module #11
Name: module-default-device-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore the default sink and source"
module.version = "6.0"
Module #12
Name: module-rescue-streams
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "When a sink/source is removed, try to move its streams to the default sink/source"
module.version = "6.0"
Module #13
Name: module-always-sink
Argument:
Usage counter: n/a
Properties:
module.author = "Colin Guthrie"
module.description = "Always keeps at least one sink loaded even if it's a null one"
module.version = "6.0"
Module #14
Name: module-intended-roles
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically set device of streams based on intended roles of devices"
module.version = "6.0"
Module #15
Name: module-suspend-on-idle
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "When a sink/source is idle for too long, suspend it"
module.version = "6.0"
Module #16
Name: module-position-event-sounds
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Position event sounds between L and R depending on the position on screen of the widget triggering them."
module.version = "6.0"
Module #17
Name: module-role-cork
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Mute & cork streams with certain roles while others exist"
module.version = "6.0"
Module #18
Name: module-filter-heuristics
Argument:
Usage counter: n/a
Properties:
module.author = "Colin Guthrie"
module.description = "Detect when various filters are desirable"
module.version = "6.0"
Module #19
Name: module-filter-apply
Argument:
Usage counter: n/a
Properties:
module.author = "Colin Guthrie"
module.description = "Load filter sinks automatically when needed"
module.version = "6.0"
Module #20
Name: module-bluez5-device
Argument: path=/org/bluez/hci0/dev_D8_90_E8_5A_7B_AE
Usage counter: 1
Properties:
module.author = "Jo�ão Paulo Rechi Vita"
module.description = "BlueZ 5 Bluetooth audio sink and source"
module.version = "6.0"
Module #21
Name: module-loopback
Argument: source="bluez_source.D8_90_E8_5A_7B_AE" source_dont_move="true" sink_input_properties="media.role=music"
Usage counter: n/a
Properties:
module.author = "Pierre-Louis Bossart"
module.description = "Loopback from source to sink"
module.version = "6.0"
Sink #0
State: SUSPENDED
Name: null
Description: Null Output
Driver: module-null-sink.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 5
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: null.monitor
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.description = "Null Output"
device.class = "abstract"
device.icon_name = "audio-card"
Formats:
pcm
Source #0
State: SUSPENDED
Name: null.monitor
Description: Monitor of Null Output
Driver: module-null-sink.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 5
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: null
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.description = "Monitor of Null Output"
device.class = "monitor"
device.icon_name = "audio-input-microphone"
Formats:
pcm
Source #1
State: SUSPENDED
Name: bluez_source.D8_90_E8_5A_7B_AE
Description: Federico Wegher (Galax
Driver: module-bluez5-device.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 20
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: n/a
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
bluetooth.protocol = "a2dp_source"
device.description = "Federico Wegher (Galax"
device.string = "D8:90:E8:5A:7B:AE"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "phone"
bluez.path = "/org/bluez/hci0/dev_D8_90_E8_5A_7B_AE"
bluez.class = "0x5a020c"
bluez.alias = "Federico Wegher (Galax"
device.icon_name = "audio-card-bluetooth"
Ports:
phone-input: Phone (priority: 0)
Active Port: phone-input
Formats:
pcm
Sink Input #0
Driver: module-loopback.c
Owner Module: 21
Client: n/a
Sink: 0
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"s16le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: yes
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Sink Latency: 0 usec
Resample method: trivial
Properties:
media.role = "music"
module-stream-restore.id = "sink-input-by-media-role:music"
media.name = "Loopback from Federico Wegher (Galax"
media.icon_name = "audio-card-bluetooth"
Source Output #0
Driver: module-loopback.c
Owner Module: 21
Client: n/a
Source: 1
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"s16le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: yes
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Source Latency: 0 usec
Resample method: n/a
Properties:
media.role = "abstract"
module-stream-restore.id = "source-output-by-media-role:abstract"
media.name = "Loopback to Null Output"
media.icon_name = "audio-card"
Client #0
Driver: protocol-native.c
Owner Module: 10
Properties:
application.name = "pactl"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "30"
application.process.id = "1439"
application.process.user = "root"
application.process.host = "freescale"
application.process.binary = "pactl"
application.language = "C"
application.process.machine_id = "9b4bfdf4c569212bccf1963400000003"
Card #0
Name: bluez_card.D8_90_E8_5A_7B_AE
Driver: module-bluez5-device.c
Owner Module: 20
Properties:
device.description = "Federico Wegher (Galax"
device.string = "D8:90:E8:5A:7B:AE"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "phone"
bluez.path = "/org/bluez/hci0/dev_D8_90_E8_5A_7B_AE"
bluez.class = "0x5a020c"
bluez.alias = "Federico Wegher (Galax"
device.icon_name = "audio-card-bluetooth"
Profiles:
a2dp_source: High Fidelity Capture (A2DP Source) (sinks: 0, sources: 1, priority: 10, available: yes)
headset_audio_gateway: Headset Audio Gateway (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: no)
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: a2dp_source
Ports:
phone-output: Phone (priority: 0, latency offset: 0 usec, not available)
Part of profile(s): headset_audio_gateway
phone-input: Phone (priority: 0, latency offset: 0 usec)
Part of profile(s): a2dp_source, headset_audio_gateway
Thanks for kind reply.