Skip to content

gustavo-ariell/jbl-bluetooth-keepalive-linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔊 JBL KeepAlive (Linux + PipeWire)

License Shell Script Linux Systemd

Evita que tu parlante Bluetooth JBL (u otros) se apague automáticamente por inactividad en Linux, generando audio silencioso solo cuando es necesario.

A diferencia de otras soluciones, este proyecto detecta si hay audio real y no interfiere con tu reproducción.

Ideal para:

  • 🔊 JBL Go, Flip, Charge, etc.
  • 🎧 Dispositivos Bluetooth con auto-sleep
  • 🐧 Usuarios de Linux (PipeWire)

✨ Características

  • ✅ Mantiene el dispositivo Bluetooth activo
  • ✅ Solo genera silencio cuando NO hay audio real
  • ✅ No interfiere con música, videos o llamadas
  • ✅ Consumo mínimo de CPU y RAM
  • ✅ Compatible con PipeWire y PulseAudio
  • ✅ Servicio automático con systemd
  • ✅ Instalación automática (install.sh)
  • ✅ Implementación estable (sin dependencias frágiles de eventos)

📁 Estructura del proyecto

jbl-keepalive/
├── README.md
├── install.sh
├── bin/
│   └── jbl-keepalive.sh
└── systemd/
    └── jbl-keepalive.service

⚙️ Instalación

1. Clonar el repositorio

git clone https://github.com/TU_USUARIO/jbl-bluetooth-keepalive-linux.git
cd jbl-bluetooth-keepalive-linux

2. Ejecutar instalador

chmod +x install.sh
./install.sh

👉 El instalador:

  • Detecta automáticamente tu usuario
  • Intenta detectar la MAC del dispositivo Bluetooth
  • Configura el servicio systemd
  • Activa todo automáticamente

🚀 Uso

Una vez instalado, el servicio se ejecuta automáticamente.

Ver estado del servicio systemctl --user status jbl-keepalive.service Reiniciar servicio systemctl --user restart jbl-keepalive.service Detener servicio systemctl --user stop jbl-keepalive.service

🧠 ¿Cómo funciona?

El script ejecuta un loop liviano cada 2 segundos:

  • Verifica si el dispositivo Bluetooth está conectado (bluetoothctl)
  • Verifica si hay audio reproduciéndose (pactl)
  • Decide si generar silencio o no

🔇 Generación de silencio

Se utiliza pw-cat (PipeWire) con entrada desde /dev/zero:

pw-cat --playback --format s16 --rate 8000 --channels 1 - < /dev/zero

Esto:

  • Genera audio silencioso real
  • Mantiene activo el parlante
  • Consume recursos mínimos

🎯 Lógica inteligente

Estado Acción
JBL conectado + sin audio Genera silencio
JBL conectado + audio real Detiene silencio
JBL desconectado Detiene todo

🔧 Requisitos

  • Linux (probado en Debian / LMDE / Ubuntu)
  • PipeWire (pw-cat)
  • pactl
  • bluetoothctl
  • systemd

Instalar dependencias:

sudo apt install pipewire pipewire-audio-client-libraries pulseaudio-utils bluez

🛠️ Personalización

Podés modificar el script en:

bin/jbl-keepalive.sh

Ejemplos:

  • Cambiar frecuencia (--rate 8000)
  • Ajustar comportamiento del loop
  • Adaptar para otros dispositivos Bluetooth

🐛 Problemas comunes

El servicio no inicia

journalctl --user -u jbl-keepalive.service

No detecta el dispositivo Bluetooth

Verificá conexión:

bluetoothctl info TU_MAC

No aparece pw-cat

pgrep -a pw-cat

Si no aparece, revisar logs:

journalctl --user -u jbl-keepalive.service -f

🤝 Contribuciones

Las contribuciones son bienvenidas:

  1. Fork del proyecto
  2. Crear rama (git checkout -b feature/nueva-feature)
  3. Commit (git commit -m 'Agrega nueva feature')
  4. Push (git push origin feature/nueva-feature)
  5. Pull Request

📄 Licencia

Este proyecto está bajo la licencia MIT. Ver archivo LICENSE para más detalles.

⭐ Soporte

Si te sirvió el proyecto:

  • ⭐ Dale una estrella en GitHub
  • 🐛 Reportá bugs
  • 💡 Proponé mejoras

👨‍💻 Autor

Desarrollado por Gustavo G


About

Prevent Bluetooth speakers (JBL, etc.) from auto-sleep using PipeWire on Linux. Smart silence playback without interfering with real audio.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages