Echo Dot como Gateway de Audio

:puzzle_piece: O que estava acontecendo

Quando conectava a Echo Dot no meu Arch Linux, ela aparecia como Gateway, isso significa que o áudio sai do Echo Dot e entra no seu PC, e não o contrário, eu estava ouvindo a “Alexa” na caixa de som do notebook.
Pelo que pesquisei, este é um problema comum de compatibilidade de dispositivos Echo com o PipeWire/WirePlumber atuais.
A solução é forçar o perfil correto (A2DP Sink) usando o MAC Address do dispositivo no arquivo de configuração do WirePlumber.

Como eu resolvi:

:magnifying_glass_tilted_left: Passo 1: Achar o MAC Address da Echo Dot

No GNOME, conecte a Echo Dot via Bluetooth (Definições → Bluetooth).

No terminal, execute:

$ bluetoothctl

(OBS: Caso não tenha instalado, utlize seu gerenciador de pacotes para fazer antes de prosseguir)

Seguindo, dentro do bluetoothctl digite o comando a seguir:

devices

Você verá algo como:

Device XX:XX:XX:XX:XX:XX Echo Dot-XXXX

Anote o MAC da sua Echo Dot.

Para sair digite:

exit

(Caso possua outros dispositivos e queira configurar, anote os MAC dos mesmos, usaremos mais a frente.)

:gear: Passo 2: Configurar o arquivo do WirePlumber (por MAC)

O WirePlumber usa um arquivo para definir como o Bluetooth vai se comportar.
Ele fica em:

ls /etc/wireplumber/wireplumber.conf.d/50-bluetooth.conf

Se o diretório não existir, crie:

sudo mkdir -p /etc/wireplumber/wireplumber.conf.d

Após validar que o arquivo existe abra ele no seu editor favorito:

sudo nano /etc/wireplumber/wireplumber.conf.d/50-bluetooth.conf

Estrutura básica do arquivo

O arquivo usa regras baseadas no MAC Address:

lua

monitor.bluez.rules = [
  -- Regra para a Echo Dot 4 (exemplo)
  {
    matches = [
      { device.name = "~bluez_card.XX:XX:XX:XX:XX:XX " }
    ]
    actions = {
      update-props = {
        bluez5.auto-connect = [ "a2dp_sink" ],
        bluez5.a2dp.sbc.quality = "high",
        bluez5.a2dp.sbc_xq = true,
        bluez5.hfphf.enable = false
      }
    }
  },
  -- Aqui você pode adicionar regras para outros dispositivos, neste caso estou deixando para que os demais dispositivos como fones, alto falantes, já usem o perfil com codecs compatíveis.
  {
    matches = [
      { device.name = "~bluez_card.*" }
    ]
    actions = {
      update-props = {
        bluez5.auto-connect = [ "a2dp_sink", "a2dp_source", "hfp_hf" ],
        bluez5.a2dp.sbc.quality = "high",
        bluez5.a2dp.sbc_xq = true,
        bluez5.enable-msbc = true
      }
    }
  }
]
  • api.bluez5.address = "XX:XX:XX:XX:XX:XX ": MAC da sua Echo Dot.
  • bluez5.auto-connect = [ "a2dp_sink" ]: força o dispositivo a usar A2DP Sink (alto‑falante).
  • bluez5.a2dp.sbc.quality = "high": define qualidade alta do codec SBC.

Salve o arquivo com Ctrl+O e saia do Nano com Ctrl+X.


:counterclockwise_arrows_button: Passo 3: Reiniciar o PipeWire/WirePlumber

Para aplicar a configuração:

sudo systemctl --user restart pipewire{,-pulse,} wireplumber

:light_bulb: A lógica por trás do arquivo

  • O Ubuntu/Pop!_OS/Debian etc. às vezes usam o perfil de gateway por padrão, fazendo o Echo Dot se comportar como um receptor de áudio, e não como caixa de som.
  • No Arch, com WirePlumber, você pode forçar o perfil A2DP por MAC, ignorando o perfil padrão e dizendo ao sistema: “Use esse dispositivo como saída de áudio, não como gateway.”
  • Assim, mesmo que o echo dot apareça antes como gateway, depois da nova configuração ele é reconectado como alto‑falante Bluetooth.

:sparkles: Dicas importantes.

  • Sempre anote o MAC antes de editar o arquivo.
  • Faça backup do arquivo antes de mexer:

Espero que ajude.