Gravação com headset Bluetooth no Linux

Se você usa um headset Bluetooth e o Scribossauro não captura o áudio das reuniões, este guia explica por que isso acontece e como resolver com um sink virtual de loopback.

Por que isso acontece?

Dispositivos Bluetooth no modo A2DP (alta qualidade de áudio) funcionam apenas como destino de reprodução — eles não expõem uma porta de captura/monitor no PipeWire. Isso significa que, mesmo que o seu headset esteja tocando o áudio do YouTube ou do Google Meet perfeitamente, o Scribossauro não consegue "ver" esse fluxo de áudio para gravá-lo.

Essa é uma limitação do stack BlueZ/PipeWire, não do Scribossauro. A solução é criar um sink virtual (um dispositivo de áudio fictício) que funciona como intermediário: o sistema toca o áudio através dele, e esse sink expõe um monitor real que o Scribossauro consegue gravar. O áudio é então redirecionado do sink virtual para o seu headset Bluetooth.

Pré-requisitos

  • Ubuntu 22.04+ (ou qualquer distro com PipeWire como servidor de áudio)
  • Pacotes pipewire-pulse e pipewire-audio-client-libraries instalados (já vêm por padrão no Ubuntu 22.04+)
  • Headset Bluetooth pareado e conectado

Passo a passo

1. Descubra o nome do seu dispositivo Bluetooth

Abra um terminal e liste os sinks disponíveis:

pactl list short sinks

Procure uma linha com bluez_output no nome. Vai ser algo como:

bluez_output.AA_BB_CC_DD_EE_FF.1

Anote esse nome — você vai usá-lo no próximo passo.

2. Crie o sink virtual (loopback)

Execute os dois comandos abaixo, substituindo SEU_SINK_BLUETOOTH pelo nome que você anotou:

# Cria o sink virtual
pactl load-module module-null-sink \
  sink_name=scribo_loop \
  sink_properties=device.description="Scribossauro Loop"

# Encaminha o áudio do sink virtual para o Bluetooth
pactl load-module module-loopback \
  source=scribo_loop.monitor \
  sink=SEU_SINK_BLUETOOTH

Cada comando retorna um número (ex: 42). Guarde esses números — eles são os IDs dos módulos, úteis para desfazer a configuração depois.

3. Defina o sink virtual como saída padrão

Abra as Configurações de Som do sistema (ou o mixer do PipeWire que você usa, como pavucontrol) e defina Scribossauro Loop como dispositivo de saída padrão.

Ou, pela linha de comando:

pactl set-default-sink scribo_loop

A partir de agora, todo o áudio do sistema vai passar pelo sink virtual e ser redirecionado automaticamente para o seu headset Bluetooth.

4. Configure o Scribossauro para gravar o monitor

Abra o Scribossauro, vá em Configurações → Dispositivo de áudio e selecione Monitor of Scribossauro Loop (ou similar). Inicie uma gravação — o áudio do sistema deve aparecer no medidor de volume.

5. Desfazer a configuração (quando terminar)

Para remover o sink virtual e restaurar o comportamento normal, use os IDs que você anotou no passo 2:

pactl unload-module ID_DO_LOOPBACK
pactl unload-module ID_DO_NULL_SINK

Ou, para remover todos os módulos de loopback e null-sink de uma vez:

pactl unload-module module-loopback
pactl unload-module module-null-sink

Não se esqueça de restaurar o sink padrão do sistema nas configurações de som.

Tornar a configuração permanente (opcional)

Os módulos carregados com pactl load-module são temporários e desaparecem ao reiniciar o computador. Para automatizar, você pode criar um script de shell e executá-lo ao ligar a máquina (via systemd user service ou autostart do seu ambiente de desktop).

Como essa configuração afeta o roteamento global de áudio do sistema, o Scribossauro não faz isso automaticamente. Recomendamos configurar manualmente antes de cada uso ou criar o script conforme a sua necessidade.

Ainda com problemas?

Entre em contato pelo [email protected] descrevendo sua distro, versão do PipeWire (pipewire --version) e o output do comando pactl list short sinks.