Fala, pessoas!
Tenho uma caixa de som JBL Go 2 e ao conectar via Bluetooth ao meu notebook o som saía com péssima qualidade, parecendo o som transmitido via ligações telefônicas.
Identificando o problema
Para identificar o problema fui verificar a saída do comando pactl list sources
:
Source #18
State: SUSPENDED
Name: bluez_sink.70_99_1C_04_9F_F0.headset_head_unit
Description: JBL GO 2
Driver: module-bluez5-device.c
Sample Specification: s16le 1ch 8000Hz
Channel Map: mono
Owner Module: 37
Mute: no
Volume: mono: 58982 / 90%
balance 0.00
Base Volume: 65536 / 100%
Monitor Source: bluez_sink.70_99_1C_04_9F_F0.headset_head_unit.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_VOLUME_CTRL LATENCY
Properties:
bluetooth.protocol = "headset_head_unit"
device.intended_roles = "phone"
device.description = "JBL GO 2"
device.string = "70:99:1C:04:9F:F0"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "speaker"
bluez.path = "/org/bluez/hci0/dev_70_99_1C_04_9F_F0"
bluez.class = "0x200414"
bluez.alias = "JBL GO 2"
device.icon_name = "audio-speakers-bluetooth"
Ports:
speaker-output: Speaker (priority: 0)
Active Port: speaker-output
Formats:
pcm
Percebi que não estava sendo utilizado o perfil a2dp_sink, mas o headset_head_unit. O Advanced Audio Distribution Profile (A2DP), segundo o Wikipedia, é um perfil que define o áudio como alta qualidade (estéreo ou mono), e torna possível sua transmissão em tempo real de um dispositivo para o outro, através de uma conexão Bluetooth. Por exemplo, músicas podem ser transferidas de um telefone celular para um fone de ouvido sem fio.
O Hands-Free Profile (HFP) e o Headset Profile (HSP) são bastante parecidos, servindo basicamente para suportar os headsets e fones de ouvido Bluetooth para serem utilizados com telefones celulares.
Para identificar os perfis disponíveis, utilizei o pactl list cards
:
Card #9
Name: bluez_card.70_99_1C_04_9F_F0
Driver: module-bluez5-device.c
Owner Module: 38
Properties:
device.description = "JBL GO 2"
device.string = "70:99:1C:04:9F:F0"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "speaker"
bluez.path = "/org/bluez/hci0/dev_70_99_1C_04_9F_F0"
bluez.class = "0x200414"
bluez.alias = "JBL GO 2"
device.icon_name = "audio-speakers-bluetooth"
Profiles:
headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: headset_head_unit
Ports:
speaker-output: Speaker (priority: 0, latency offset: 0 usec)
Part of profile(s): headset_head_unit, a2dp_sink
speaker-input: Bluetooth Input (priority: 0, latency offset: 0 usec)
Part of profile(s): headset_head_unit
Com a lista de perfis disponíveis podemos solucionar o problema.
Solução:
No terminal, executei o comando pactl set-card-profile bluez_card.70_99_1C_04_9F_F0 a2dp_sink
Ao listar os sources novamente com pactl list sources
, obtive a seguinte saída:
Source #19
State: SUSPENDED
Name: bluez_sink.70_99_1C_04_9F_F0.a2dp_sink.monitor
Description: Monitor of JBL GO 2
Driver: module-bluez5-device.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 38
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: bluez_sink.70_99_1C_04_9F_F0.a2dp_sink
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.description = "Monitor of JBL GO 2"
device.class = "monitor"
device.string = "70:99:1C:04:9F:F0"
device.api = "bluez"
device.bus = "bluetooth"
device.form_factor = "speaker"
bluez.path = "/org/bluez/hci0/dev_70_99_1C_04_9F_F0"
bluez.class = "0x200414"
bluez.alias = "JBL GO 2"
device.icon_name = "audio-speakers-bluetooth"
Formats:
pcm
Desta forma consegui fazer com que o áudio da caixa de som bluetooth saísse com a qualidade normal.