This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Missing bluetooth sink audio in pulseaudio 6 with wl1831 + bluez 5

Other Parts Discussed in Thread: WL1831

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.