ARCH R

Bluetooth

Pareamento de fones e controles, e o que o hardware realmente faz

Você provavelmente vai precisar de um adaptador USB

Entre as placas RK3326 que o ArchR suporta, só o GameForce Chi declara um rádio Bluetooth na device tree, e a própria device tree traz um comentário dizendo que esse rádio não funciona por falta de firmware. O R36S e todas as outras placas suportadas não têm chip Bluetooth nenhum.

Na prática, então, Bluetooth no ArchR significa espetar um adaptador Bluetooth USB. O kernel compila o driver HCI USB junto com os auxiliares Broadcom, Intel e Realtek, então a maioria dos adaptadores comuns é reconhecida sem trabalho extra.


A pilha de software

O ArchR usa BlueZ 5.83 com o PipeWire como backend de áudio. Não há bluealsa. O PipeWire é compilado com SBC, AAC, aptX e LDAC.

Os backends HSP e HFP estão desativados na compilação, o que tem uma consequência que vale saber antes de comprar qualquer coisa: um headset Bluetooth funciona só como saída estéreo. O microfone dele não aparece como dispositivo de entrada.


Pareamento

O Bluetooth vem desligado de fábrica (controllers.bluetooth.enabled=0).

Ligue o Bluetooth

ES → Controller & Bluetooth Settings → Enable Bluetooth. Isso inicia o bluetooth.service e o agente de pareamento, o que leva alguns segundos.

Coloque o dispositivo em modo de pareamento

Isso varia. A maioria dos controles tem um botão pequeno perto da porta USB, a maioria dos fones quer o botão de ligar segurado até o LED piscar rápido.

Procure o dispositivo

No mesmo menu, Pair Bluetooth pads automatically encontra controles sozinho. Pair a Bluetooth device manually mostra tudo o que ele enxerga, inclusive fones, e deixa você escolher.

Direcione o áudio

Para um fone, vá em ES → System Settings → Audio output e selecione ele ali. O áudio não muda sozinho.

Bluetooth device list, no mesmo menu, mostra o que está pareado e permite conectar, desconectar ou esquecer um dispositivo.


Onde os pareamentos ficam guardados

Os dispositivos pareados ficam em /storage/.cache/bluetooth. O ArchR arquiva essa pasta em /storage/roms/backups/bluetooth.tar toda vez que você pareia ou remove um dispositivo, e desempacota o arquivo de novo toda vez que o serviço Bluetooth inicia. Você pode fazer as duas coisas à mão por SSH:

archr-bluetooth save
archr-bluetooth restore

O mesmo comando faz tudo o que o menu faz. archr-bluetooth list imprime os dispositivos pareados, e trust, remove, connect e disconnect recebem um endereço MAC. Executar sem argumento nenhum imprime a lista de comandos.


O que acontece quando você abre um jogo

O runemu.sh mata o agente de pareamento antes de iniciar um emulador e o levanta de novo quando você volta. Dispositivos já conectados continuam conectados, você só não consegue parear nada novo enquanto um jogo está rodando.

Syncthing, Tailscale, ZeroTier e o servidor HTTP simples são parados durante o jogo, o que também libera espectro se você estiver usando um dongle WiFi USB ao mesmo tempo.


Mapeamento de controles

O EmulationStation grava o mapeamento que aprende com você em /storage/.config/emulationstation/es_input.cfg. Esse arquivo é do próprio EmulationStation, e é o que os menus usam.

Jogos e emuladores usam o SDL, e o SDL lê o banco de mapeamentos de /storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt. Esse caminho é um link simbólico para /usr/config, que fica na partição de sistema montada como somente leitura, então não dá para acrescentar linhas nele. Para incluir a sua, apague o link, copie o arquivo real para o lugar dele e edite a cópia:

cd /storage/.config/SDL-GameControllerDB
rm gamecontrollerdb.txt
cp /usr/config/SDL-GameControllerDB/gamecontrollerdb.txt .

A partir daí o arquivo é seu e as atualizações do sistema não o renovam mais, então você perde os mapeamentos novos que vierem de cima. O link simbólico só volta se você resetar a configuração, porque o script que o cria roda uma vez, no primeiro boot.


Quando o áudio para de funcionar

Desligar um fone sem desconectar antes às vezes deixa o PipeWire segurando um sink morto, e você fica no silêncio até os serviços reiniciarem. O PipeWire roda como serviço de sistema no ArchR, não de usuário:

systemctl restart pipewire pipewire-pulse wireplumber

Se o adaptador em si parar de responder, desligue e ligue o Bluetooth pelo menu, o que equivale a:

archr-bluetooth disable
archr-bluetooth enable

On this page