Seguridad Wireless - Wifi
Equipos y materiales => Puntos de acceso, routers, switchs y bridges => Openwrt & LEDE => Mensaje iniciado por: raphik en 14-06-2020, 12:08 (Domingo)
-
Es posible utilizar un router OpenWRT como altavoz Bluetooth gracias al proyecto BlueZ-ALSA, que permite recibir audio desde dispositivos bluetooth externos, sin necesidad de instalar PulseAudio. Voy a explicar como hacerlo sin entrar en demasiados detalles.
Como punto de partida necesitamos:
- Un router OpenWRT conectado a Internet que tenga dos puertos USB libres
- Una tarjeta bluetooth USB compatible con Linux (cuidado con esto, que las hay que sólo valen para Windows)
- Una tarjeta sonido USB
- Conocimientos para manejar Openwrt desde un cliente remoto (SSH o PuTTY)
NOTA: El paquete que he compilado soporta únicamente routers mips32, que son estos: https://openwrt.org/docs/techref/instructionset/mips_mips32#devices_with_this_instructionset (https://openwrt.org/docs/techref/instructionset/mips_mips32#devices_with_this_instructionset).
(https://i.imgur.com/rAHejWI.png)
Puedes hacer tu propia compilación (los detalles están aquí (https://foro.seguridadwireless.net/openwrt/der-router-als-bluetooth-lautsprecher/msg369631/#msg369631)) o descargarte alguna de estas:
Altavoz Bluetooth con el HG553 (http://www.mediafire.com/file/f3jbpy7gutz1tyc/openwrt-bcm63xx-generic-huawei_echolife-hg553-squashfs-cfe.bin/file)
Altavoz Bluetooth con el HG556a (https://foro.seguridadwireless.net/openwrt/der-router-als-bluetooth-lautsprecher/msg369640/#msg369640)
Las compilaciones incluyen ALSA, BlueZ y Bluez-Alsa. No se utiliza PulseAudio.
ALSA es un componente del núcleo de Linux diseñado para manejar dispositivos de sonido.
BlueZ es la pila oficial de protocolos Bluetooth para Linux. A partir de la versión 5 dejó de ser compatible con ALSA, en favor de PulseAudio. PulseAudio parece no funcionar en OpenWrt. Afortunadamente existe Bluez-Alsa.
Bluez-Alsa (https://github.com/Arkq/bluez-alsa) permite la integración entre BlueZ y ALSA, actuando como intermediador entre perfiles BT de audio y dispositivos BT de audio. Bluez-Alsa no está incorporado en OpenWrt, pero se puede incorporar haciendo una "compilación a medida".
Cargar la imagen en el router, insertar los pinchos USB de audio y BT y arrancar el router.
EMPAREJAR EL TELÉFONO MÓVIL CON EL ROUTER Y ENVIARLE AUDIO
En el PC, abrir una sesión SSH e invocar la utilidad para configurar conexiones BT "bluetoothctl"
root@OpenWrt:~# bluetoothctl
Agent registered
Desde la utilidad "bluetoothctl", activar el pincho BT del router
power on
discoverable on
pairable on
default-agent
(https://i.imgur.com/LdZrqh6.png)
En el teléfono móvil, activar BT. El dispositivo OpenSpk (el router) aparecerá disponible. Pulsarlo para vincular
(https://i.imgur.com/sA7O6BL.png)
El teléfono móvil pide un PIN. Poner cualquiera, por ejemplo 0000
(https://i.imgur.com/8vfwgjY.png)
La utilidad "bluetoothctl" detecta la solicitud de conexión de un nuevo dispositivo. Confirmar PIN. Poner el mismo que al teléfono móvil
Si pide confirmación para algún servicio determinado, contestar que sí. La conexión queda establecida
(https://i.imgur.com/XTCFbTf.png)
En el teléfono, el dispositivo OpenSpk aparece sincronizado y conectado
(https://i.imgur.com/zdvgCD6.png)
Cerrar la utilidad "bluetoothctl"
quit
En la sesión SSH, teclear
alsamixer -D bluealsa -V capture
Bajar el volumen de captura hasta un discreto 28% aproximadamente, para evitar saturación
(https://i.imgur.com/MZI8cfU.png)
Salir pulsanto la tecla Esc
En la sesión SSH, teclear
bluealsa-aplay -vv 00:00:00:00:00:00
La utilidad bluealsa-aplay recoge el audio del dispositivo BT y lo redirecciona a la tarjeta de sonido
(https://i.imgur.com/laHnlUk.png)
Volver al teléfono móvil y reproducir un audio o un vídeo. ¡El sonido se oirá en los altavoces o auriculares del router!
El volumen del pincho de audio se puede controlar con alsamixer
alsamixer
(https://i.imgur.com/iU8Q3JQ.png)
FICHEROS DE CONFIGURACIÓN
(Incluidos en la compilación)
/etc/bluetooth/audio.conf (Configura el pincho BT para recibir audio)
[General]
Enable=Source
(Parece que lo razonable sería Enable=Sink, pero no. BlueZ es así.)
/etc/bluetooth/main.conf (Se le puede poner un nombre al altavoz BT. No es necesario, pero mola)
[General]
Name=OpenSpk
/etc/init.d/bluealsa (Habilita el servicio bluealsa audio-sink)
#!/bin/sh /etc/rc.common
START=70
USE_PROCD=1
PROG=/usr/bin/bluealsa
start_service() {
procd_open_instance
procd_set_param command "$PROG" -i hci0 -p a2dp-sink
procd_close_instance
}
stop() {
service_stop /usr/bin/bluealsa
}
/etc/dbus-1/system.d/bluealsa.conf (Políticas de seguridad)
<!-- This configuration file specifies the required security policies
for BlueALSA core daemon to work. -->
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- ../system.conf have denied everything, so we just punch some holes -->
<policy user="root">
<allow own_prefix="org.bluealsa"/>
<allow send_destination="org.bluealsa"/>
</policy>
<policy group="audio">
<allow send_destination="org.bluealsa"/>
</policy>
</busconfig>
/etc/asound (Genera el dispositivo PCM virtual bluealsa)
defaults.bluealsa.service "org.bluealsa"
defaults.bluealsa.interface "hci0"
defaults.bluealsa.profile "a2dp"
defaults.bluealsa.delay 10000
Es necesario reiniciar los servicios para activar los cambios
service dbus restart
service bluetoothd restart
service bluealsa restart
O, si se prefiere, hacer un reboot.
-
[...] Asegurarse de que se compilará la versión 19.07.3, actualizar e instalar fuentes [...]
Según la página de openwrt, esa versión da problemas en el arranque del hg556. ¿No será mejor probar con la 19.07.4 que dice que ese asunto ya está arreglado?
Está en los warnings en la página:
https://openwrt.org/toh/huawei/hg556a (https://openwrt.org/toh/huawei/hg556a)
-
Según la página de openwrt, esa versión da problemas en el arranque del hg556. ¿No será mejor probar con la 19.07.4 que dice que ese asunto ya está arreglado?
Está en los warnings en la página:
https://openwrt.org/toh/huawei/hg556a (https://openwrt.org/toh/huawei/hg556a)
Gracias por avisar.
He quitado los enlaces para el HG556a. Los volveré a poner cuando genere nuevas imágenes 19.07.4.
-
Bluez-Alsa no viene "de serie" con OpenWrt. Para incluirlo hay que hacer una compilación a medida.
Descargar la versión SNAPSHOT (19.07.4). BlueZ y Dbus no interactúan bien en versiones anteriores
git clone https://github.com/openwrt/openwrt.git/
Descargar fuentes
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
Descargar fuentes blue-alsa
mkdir -p ./feeds/packages/sound/bluez-alsa
mkdir -p ./feeds/packages/sound/bluez-alsa/files
wget -O ./feeds/packages/sound/bluez-alsa/Makefile https://raw.githubusercontent.com/diizzyy/packages/sound-bluez-alsa/sound/bluez-alsa/Makefile
wget -O ./feeds/packages/sound/bluez-alsa/files/bluealsa.init https://raw.githubusercontent.com/diizzyy/packages/sound-bluez-alsa/sound/bluez-alsa/files/bluealsa.init
Editar el fichero openwrt/feeds/packages/sound/bluez-alsa/Makefile y eliminar la dependencia @LINUX_4_14 (línea 29).
Instalar fuentes blue-alsa
./scripts/feeds update -a
./scripts/feeds install bluez-alsa
Configurar opciones de firmware
make menuconfig
Seleccionar router
Target System ---> (X) Broadcom BCM63xx
Target Profile ---> (X) Huawei EchoLife HG553
Habilitar LuCI y comprobar la wifi (que a veces no está correctamente configurada)
LuCI ---> Collections ---> <*> luci
Kernel modules ---> Wireless Drivers ---> <*> kmod-b43
Network ---> WirelessAPD ---> <*> wpad-basic
Habilitar soporte de AUDIO
Kernel modules ---> Sound Support ---> <*> kmod-sound-core
Kernel modules ---> Sound Support ---> <*> kmod-usb-audio
Sound ---> <*> alsa-utils
Sound ---> <*> mpg123
Habilitar soporte BLUETOOTH
Utilities ---> <*> bluez-daemon
Utilities ---> <*> dbus-utils (para inspeccionar dbus)
Kernel modules ---> Input modules ---> <*> kmod-input-uinput (por si acaso hiciera falta)
Habilitar BLUEALSA
Global build settings ---> (*) Compile with support for patented functionality
# Si no se marca lo que pone en la línea anterior, no se podrá elegir la siguiente
Sound ---> <*> bluez-alsa
# Si no se optimizar el driver fdk-aac para velocidad, dará error al compilar
Sound ---> -*- fdk-aac
Configuration ---> (*) Optimize for speed
Compilar (Mi PC sólo tiene dos núcleos)
make -j3 V=cs
-
Según la página de openwrt, esa versión da problemas en el arranque del hg556. ¿No será mejor probar con la 19.07.4 que dice que ese asunto ya está arreglado?
Está en los warnings en la página:
https://openwrt.org/toh/huawei/hg556a (https://openwrt.org/toh/huawei/hg556a)
He compilado la versión SNAPSHOT (la 19.07.04, actualmente) y las he colgado aquí:
Huawei EchoLife HG556a (version A) (http://www.mediafire.com/file/8qdkw0jnhwlvukt/openwrt-bcm63xx-generic-huawei_echolife-hg556a-a-squashfs-cfe.bin/file)
Huawei EchoLife HG556a (version B) (http://www.mediafire.com/file/0jzcnu62vy0dvok/openwrt-bcm63xx-generic-huawei_echolife-hg556a-b-squashfs-cfe.bin/file)
Huawei EchoLife HG556a (version C) (http://www.mediafire.com/file/242cg25mpykb794/openwrt-bcm63xx-generic-huawei_echolife-hg556a-c-squashfs-cfe.bin/file)
Para compilar hay que modificar el fichero openwrt/feeds/packages/sound/bluez-alsa/Makefile.
https://github.com/diizzyy/packages/blob/sound-bluez-alsa/sound/bluez-alsa/Makefile (https://github.com/diizzyy/packages/blob/sound-bluez-alsa/sound/bluez-alsa/Makefile)
Hay que eliminar la dependencia @LINUX_4_14 de la línea 29 o sustituirla por @LINUX_5_4.
He hecho pruebas con dos HG556a, versiones B y C, y funcionan bien. No tengo ninguno de la versión A.