27 de octubre de 2013

Apagar el Bluetooth sin apagar el Wi-Fi en un portátil HP Pavilion con Linux

Si estáis pensando en comprar un ordenador y el sistema operativo que vais a usar es Linux, no compréis un HP. Nunca sabremos si es porque Microsoft les ha metido mano, pero dan demasiados problemas cuando intentas instalar algo que no sea Windows. Cuelgues, cosas que no funcionan, drivers que no van bien...

Claro que si sois como yo y no sabíais esto y ya os habéis comprado el ordenador y encima le habéis instalado otro sistema operativo, entonces tenéis dos alternativas. Una es comprarse otro ordenador nuevo, algo que en los tiempos que corren, salvo que seáis ricos no es del todo recomendable, y otra es intentar aguantar lo máximo que se pueda hasta que pueda cambiarse por otro.

Al margen de los muchos fallos que tiene mi HP Pavilion dm1 en Linux (como que el ordenador se cuelgue o que el teclado deje de responder), uno de los fallos que más me molesta es que el Wi-Fi y el Bluetooth estén conectados al mismo controlador. Eso significa que cuando encendamos el ordenador, el Bluetooth estará encendido por defecto, y si nos vamos al menú para intentar apagarlo... ¡oh, sorpresa! Esto apagará también el WiFi.

Para arreglar este comportamiento he descubierto una forma que hace uso del programa rfkill. No sé si es la única que funciona, no sé si es la que funciona siempre, no sé si le funciona a otra persona que no sea yo. Si este procedimiento no funciona en tu ordenador, lo siento, continúa buscando.

  1. Apaga las conexiones inalámbricas pulsando la tecla para apagar el WiFi de tu teclado (en mi HP Pavilion dm1 es F12, o bien Fn+F12 si como yo habéis desactivado las auto-teclas rápidas en el BIOS del ordenador). Con esto se apagaran tanto Bluetooth como WiFi.
  2. Vuelve a pulsar la tecla para encenderlas de nuevo. Esto hará que se encienda el WiFi, pero también el Bluetooth.
  3. Ahora, abre una terminal y escribe el siguiente comando: sudo rfkill list. Deberás escribir tu contraseña. En la pantalla se te mostrará una lista de las distintas conexiones que tiene tu ordenador, tanto LAN, como WiFi, como Bluetooth. Localiza aquella que se llame "hci0", que debería ser la última. Toma nota del número que aparece a la izquierda. Por ejemplo, en mi lista sale "5: hci0: Bluetooth" así que mi número es el 5.
  4. Ahora escribe el comando sudo rfkill block [num], donde [num] es el número de la conexión que tenía asignado hci0. En mi caso, hci0 tenía el número 5 así que yo escribo sudo rfkill block 5.
Notas al respecto:
  • Esto habrá que hacerlo cada vez que apaguemos, suspendamos o volvamos a pulsar la tecla para apagar el WiFi del ordenador.
  • Es importante seguir antes los pasos 1 y 2. De no hacerlos, hci0 tendrá la conexión número 0, pero al intentar ejecutar rkfill block 0 nada ocurrirá.
  • Cada vez que se apagan las conexiones inalámbricas a hci0 se le asigna otro número. Inicialmente se le asigna el 5 porque las conexiones 1 a 4 ya están tomadas, pero si apagas y enciendes otra vez las conexiones tendrás que repetir los pasos indicando que ahora quieres bloquear la conexión 6. Si luego suspendes, tendrás que repetirlo bloqueando la 7, y así sucesivamente.