bluetooth: re-emparejar si el dispositivo olvidó la clave

Si los auriculares pierden el emparejamiento (p. ej. al emparejarlos con
otro aparato) el PC sigue viéndolos como Paired: yes y connect falla
siempre con br-connection-key-missing. Ahora, ante ese error, se borra el
dispositivo, se busca, se vuelve a emparejar y se conecta.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Alejandro Guerrero 2026-10-01 17:55:29 +02:00
parent bea3bdbb62
commit 725615f59d
Signed by: alejandrogs73
GPG key ID: 1CFF10953BEE333C

View file

@ -21,13 +21,22 @@ emparejar() {
} }
# conectar MAC: si no está emparejado lo empareja; si no está a la vista, lo # conectar MAC: si no está emparejado lo empareja; si no está a la vista, lo
# busca unos segundos y lo vuelve a intentar. # busca unos segundos y lo vuelve a intentar. Si el dispositivo ha olvidado el
# emparejamiento (br-connection-key-missing), lo borra y lo empareja de nuevo.
conectar() { conectar() {
if ! bluetoothctl info "$1" | grep -q 'Paired: yes'; then if ! bluetoothctl info "$1" | grep -q 'Paired: yes'; then
emparejar "$1" || { buscar 8 && emparejar "$1"; } || return 1 emparejar "$1" || { buscar 8 && emparejar "$1"; } || return 1
fi fi
bluetoothctl connect "$1" >/dev/null || salida=$(bluetoothctl connect "$1" 2>&1) && return 0
{ buscar 8 && bluetoothctl connect "$1" >/dev/null; } case $salida in
*key-missing*)
bluetoothctl remove "$1" >/dev/null
buscar 8 && emparejar "$1" && bluetoothctl connect "$1" >/dev/null
;;
*)
buscar 8 && bluetoothctl connect "$1" >/dev/null
;;
esac
} }
# conectar_y_avisar "Nombre (MAC)" # conectar_y_avisar "Nombre (MAC)"