Usar la PC como reloj despertador en Linux

25 453
Escrito por Juan

¿Se te queda pegada la almohada en la nuca por la mañana? Esto te puede venir bien:

Como usar tu PC como reloj-alarma, que haga las veces de despertador musical, reproduciendo tu lista de canciones preferidas.

El procedimiento dista bastante de ser complicado pero lamentablemente no es implementable en todos los casos. En laptops por ejemplo en la gran mayoría de los casos el BIOS no dispone de esta funcionalidad. En algunos BIOS modernos he visto también que la posibilidad de encender la PC usando una alarma a desaparecido. Si estás en esta situación, leé al final del artículo.

El proceso consta de 3 pasos:

  • Hacer que el BIOS de tu PC encienda automáticamente a una hora determinada.
  • Arrancar Linux (o windows, pero queda excluído de esta guía).
  • Correr un reproductor de MP3 con el volumen bajo, subir el volumen gradualmente.

¿Como se logra todo lo anterior?

1 – El BIOS:

Necesitas configurar el mismo para que encienda tu PC todos los días a una determinada hora, -como te conozco, se que lo vas a poner a las 10:30 AM-. Entrar al BIOS implica por lo general presionar las teclas F2, F10 o Suprimir/Del durante el POST, dependiendo de cual sea el que te tocó en suerte.

Una vez dentro del BIOS, en la sección “Power Management” del mismo siempre hay una subsección “Advanced Power Management” o “APM Configuration“. Si tu BIOS no dispone de esta posibilidad, estás en problemas, o casi. (leer al final del artículo).

Dentro de la subsección APM, configurar la opción “Power On By Real Time Clock Alarm” para que coincida con la fecha y la hora en que querés intentar infructuosamente despertarte:

Configurando el BIOS para que me despierte a las 8 de la mañana en punto, por que yo si madrugo, no como otros que...

Configurando el BIOS para que me despierte a las 8:00, por que yo si madrugo, no como otros que…


Establecidas ya fecha y hora de nuestro despertador disruptivo, salir guardando los cambios presionando para ello la tecla F10.

Verificando si funcionó:

Una vez en Linux, se puede verificar el estado del Real Time Clock (RTC) tipeando:

cat /proc/driver/rtc

Que debería devolverte algo como esto:

rtc_time    : 12:19:16
rtc_date    : 2011-04-07
alrm_time    : 07:30:00
alrm_date    : ****-**-**
alarm_IRQ    : no
alrm_pending    : no
24hr        : yes
periodic_IRQ    : no
update_IRQ    : no
HPET_emulated    : no
DST_enable    : no
periodic_freq    : 1024
batt_status    : okay

En donde se ve claramente que un poco arrepentido, el cargo de conciencia me impulsó a levantarme todos los días media hora antes, a las 7:30 AM, para no llegar tarde al trabajo.

2 – Bootear Linux:

Bueno, esto es relativamente simple. Si estás leyendo esto es por que ya disponés de una distribución de Linux instalada con anterioridad, lo único que necesitás es hacer que Linux sea tu opción por defecto en el selector de sistemas operativos, si tuvieras mas de uno instalado en la misma PC.

3 – Correr un reproductor de MP3:

Paso 1 – El reproductor de MP3: Aquí es donde se abre un amplio abanico de posibilidades, pero de entre el montón me decantaré por MOC (Music On Console), por que es livianito, por que guarda la lista de reproducción y por que puede funcionar sin haber levantado el entorno gráfico ni iniciado sesión con tu nombre de usuario. El candidato perfecto digamos, aun que lo mismo daría que hubiera usado mplayer por ejemplo, pero es un poco menos flexible e implicaría andar manoseando mucho los scripts, cosa que no es muy conveniente. Si tipeás mal una ruta a un directorio, al otro día te quedás dormido y te pegan una patada en el culo.

MOC es súmamente versátil, puede hacer prácticamente lo mismo que cualquier otro reproductor de MP3 para entorno gráfico -salvo por la parte en que se muestra un vúmetro o cursilerías afines que no son mas que puras mariconadas- así que si les interesa, pueden ahondar en su principio de funcionamiento ejecutando “moc –help” o presionando la tecla “h” mientras moc está en ejecución.

Para el caso de esta guía, lo único que necesitás saber es que moc cuenta con dos paneles: El panel izquierdo, que es el de navegación por tu disco rígido y el derecho que es el de navegación por tu lista de reproducción. Los temas que quieras escuchar se agregan del panel izquierdo al derecho usando la tecla “a” y se inicia la reproducción con “Enter“.

MOC en acción, en el panel izquierdo el contenido de tu disco rídigo y en el derecho la lista de reproducción cargada.

MOC en acción, en el panel izquierdo el contenido de tu disco rídigo y en el derecho la lista de reproducción cargada

Una vez cargada la lista de reproducción del que será de ahora en mas el mejor intento documentado por despertarte a la mañana que hayas hecho alguna vez en tu vida, se puede salir de moc -pero queda en ejecución como proceso- usando la tecla “q” o salir cerrando también el proceso usando la tecla “Q” (Ojo, moc distingue entre mayúsculas y minúsculas). En el primer caso, se cierra moc pero sigue sonando de fondo. En el segundo se cierra y deja de sonar. En ambos casos la lista de reproducción queda guardada, que es lo que nos interesa.

Moc está siempre disponible en el gestor de paquetes de tu distribución de Linux de cabecera.

Paso 2 – Un script para automatizarlos a todos: Si ya tenés MOC instalado y una lista de reproducción cargada, ahora necesitás un script que sea capaz de ejecutar el reproductor de MP3 cada vez que tu PC inicie. Esta es la versión 0.0.1 Alpha que me he currado en mas o menos 2 minutos y que funciona a la perfección. Lo he llamado “despertador.sh“:

#!/bin/bash

# Despertador 0.0.1 Alpha.

amixer sset Master 10% &>/dev/null   # Baja el volumen del subsistema de audio al 10%
mocp -S                              # Ejecuta MOC en modo proceso invisible (modo server)
mocp -p                              # Comienza la reproducción del playlist desde el primer tema
sleep 150                            # Espera dos minutos y medio
amixer sset Master 25% &>/dev/null   # Sube el volumen al 25%
sleep 150                            # Espera otros dos minutos y medio...
amixer sset Master 50% &>/dev/null   # Y así sucesivamente...
sleep 150
amixer sset Master 75% &>/dev/null
sleep 150
amixer sset Master 100% &>/dev/null

Creá un archivo de texto de nombre “despertador.sh” o como mas te guste, pegá el contenido del script de mas arriba dentro del mismo y salí guardando los cambios. Hacé al archivo ejecutable tipeando:

chmod +x /ruta/al/archivo/despertador.sh

Paso 3 – Automatizar la ejecución de despertador.sh: Nuevamente, se abre otro puto amplio abanico de posibilidades al respecto pero para tratar de hacer esta guía lo mas genérica posible nuevamente abarcaré las opciones mas comunes y que funcionarían prácticamente en cualquier distribución de Linux:

En Debian, Ubuntu y toda la infinidad de derivados y demases etcéteras, podés editar el archivo /etc/rc.local y agregar ahí dentro una línea que diga “despertador.sh” sin las comillas. Eso hará que la música comience a sonar cada vez que tu PC se encienda.

En Gentoo, para el mismo caso el archivo se llama /etc/conf.d/local.start.

En RedHat, Fedora y derivados el archivo se llama /etc/rc.d/rc.local.

Y hasta por ahí nomás llega mi sapiencia pero creo que con eso ya abarco mas o menos el 80% de los casos. Para cada distribución de Linux hay una archivo que se ejecuta automáticamente en el último nivel de ejecución y que te permite ejecutar comandos arbitrariamente. (Google es tu amigo).

En todos los casos, el script se ejecutará como super usuario, como root, por lo cual es necesario cargar tu playlist en MOC como root, si no no habrá nada que reproducir. (MOC guarda una lista de reproducción independiente por cada usuario del sistema). Esto se logra ejecutando el típico:

sudo moc

A su vez, nuestro despertador.sh tiene que estar dentro del path, para poder llamarlo todas las veces que lo necesitemos sin tener que andar recordando dónde fué que lo guardamos. Solucionable facilmente moviendo el archivo a /usr/bin:

mv despertador.sh /usr/bin/

Otra posibilidad es esperar a que el entorno gráfico se inicie y tu usuario incie sesión (suponiendo que tu usuario inicia sesión automáticamente, que hace autologin, que le dicen) y hacer que sea tu entorno de escritorio el que ejecute a despertador.sh. En Gnome por ejemplo:

Haciendo que Gnome ejecute automáticamente despertador.sh al iniciar sesión.

Haciendo que Gnome ejecute automáticamente despertador.sh al iniciar sesión

Lógicamente además de todas las anteriores hay infinidad mas de opciones, pero siempre dependerá de cual es tu distribución de Linux y de cuales tus preferencias durante la instalación así que cualquier sugerencia al respecto desde ya es bienvenida.

¿Tu BIOS no tiene APM?

Para los pobres desahuciados cuyo BIOS no ofrece la posibilidad de configurar APM o RTC Alarm no está todo perdido. Los muchachos de MythTV tienen en su wiki oficial un documento muy bien explicado haciendo referencia a la posibilidad que tiene Linux de meterse con los paŕametros del RTC de tu BIOS inclusive cuando la misma no te ofrece el submenú necesario. La parte que vas a necesitar es la que hace referencia a “Using /sys/class/rtc/rtc0/wakealarm” y que Google gentimente ha traducido al español por mí.

Juan es un cordobés que desde hace algunos años se dedica a la informática y gusta de contar sus desvaríos en malditonerd.com

25 COMENTARIOS

  1. La música está bárbara. Pero, esto es un problema.
    Yo pondría algo bien molesto, onda Shakira o Emanuel Wirtz como para levantarme furioso a recagar a palos a la computadora!

  2. Y si prendo la pc en otro horario igual va a saltar la musica ??

    habria q configurar un boton que lo detenga como cualquier despertador, para no fumarse la playlist entera.

    muy poco practico lo veo la verdad.

    • la gracia es que te obliga a levantarte para que lo stopees, generalmente con una sola tecla (todos los reproductores tienen un atajo de teclado para “stop”).

      No le veo lo poco práctico.

    • Me cuesta muchísimo salir de la cama, ir hasta la PC, encender el monitor, ingresar la contraseña para desbloquear el salvapantallas, abrir una consola, ejecutar mocp y detener la reproducción.

      Cuando llegué a ese punto ya me desperté. Es mas o menos como ese despertador sobre ruedas que te obliga a salir corriendo tras el para poder apagarlo, jeje.

      ¡Saludos!

  3. Y yo le agregaría un:
    date +%u%H | grep [1-5]07 || exit 1
    al principio así sólo corre lo días de semana (%u del 1 al 5, lunes a viernes) y a la hora (%H) que corresponde. No quiero prender la PC a la noche y que suene el despertador.

    Yo uso una version recortada de B.Y.O.B. por System of a Down. Es genial como despertador, te da 40 segundos para apagarlo antes de que te de una bofetada sonora. :P
    http://noentendi.com.ar/BYOB-alarm.ogg [2,1 MB 110kbps OGG Vorbis)

    • EL que sabe sabe, no hay nada que hacerle. Lo mío en Bash es de puro corajudo. Si tuviera que sumar 2 +2 no sabría ni por donde empezar. No me gusta la programación.

      El dato, buenísimo. Cualquier otra idea para mejorarlo bienvenida.

      Gracias.

      • Sumar en bash… (con enteros solamente): echo $(( 2 + 2 ))

        Y algo muy útil para todo linuxero macho: O’Reilly bash Cookbook Es un libro estúpidamente útil.
        Y no me pidas mejoras porque tengo featuritis, lo convertiría en un demonio-despertador con cientos de opciones, y todo escrito en bash. No tengo tanto tiempo.

        • Lo tengo. Hay otro en formato chm que también me gusta por la forma de explicar las cosas (simpleza), es más viejo:
          Learning the bash Shell, Second Edition
          By Cameron Newham, Bill Rosenblatt
          O’Reilly – January 1998
          ISBN 1-56592-347-2

        • Hay varias cosas nuevas en bash v4 que no estan en ninguno de esos libros, y son muy útiles http://wiki.bash-hackers.org/bash4
          En especial ${variable,,} o ${variable^^} que devuelve el contenido de $variable todo en mayúsculas o en minúsculas, respectivamente, o el terminador ;;& para case que continua probando los patrones que están después de una coincidencia y coproc, para interactuar con subshells.
          Además con shopt -s globstar Tenés un nuevo comodín que es recursivo. Por ejemplo:
          $ ls ~/**/01.*
          /home/agustin/Documentos/Mi música/65daysofstatic/One Time for All Time/01. Drove Through Ghosts to Get Here.flac
          /home/agustin/Documentos/Mi música/65daysofstatic/The Fall of Math/01. Another Code Against the Gone.flac
          /home/agustin/Documentos/Mi música/Aphex Twin/Windowlicker/01. Windowlicker.flac
          /home/agustin/Documentos/Mi música/Árbol/Guau!/01. Trenes, camiones y tractores.mp3
          /home/agustin/Documentos/Mi música/Arcade Fire/The Suburbs/01. The Suburbs.flac
          /home/agustin/Documentos/Mi música/Arctic Monkeys/Favourite Worst Nightmare/01. Brianstorm.flac
          … etc

  4. ¡Sos demasiado pro Juan!

    Mi humilde técnica es usar Kalarm, que ejecuta “amarok -p” los días especificados a la hora especificada (requiere login automático a KDE). Eso está bueno por que en vez de empezar una lista desde cero (lo que haría que escuches las mismas canciones en el mismo orden todos los días), simplemente la noche que te acostás dejás para empezar el tema que quieras y listo, al otro día empieza por ese (incluso los que usan Amarok saben que pueden poner en la lista radios o podcast, para armar un radiodespertador si quieren).

    El tema de la canción distinta es elemental, por que (lo digo por esperiencia) escuchar lo mismo produce acostumbramiento y al poco tiempo nuestro cerebro lo toma como parte del sueño. Y también, como dijeron arriba, ayuda dejar música desagradable.

    Si hay algo en lo que tengo experiencia, es en la interminable lucha que algunos tenemos contra la almohada. Es una debilidad tremenda que tengo… así que cualquier info que haya de estos temas me encanta.

    Saludos.

    • Pro es lo de Nitsuga, yo apenas si doy lástima. No se me ocurrió buscar pero debería haberlo hecho, seguro que me encontraba con Kalarm o aplicaciones similares y este artículo nunca veía la luz. :D

      ¡Saludos!

      • Sinceramente, yo ni en pedo me ponía a armar el despertador por mi cuenta como hiciste vos. ¡Ese es el espíritu!
        Yo hubiera usado algo tipo kalarm. Más cuando mi “desktop manager” es startx (a.k.a. me logea automáticamente hasta cuando cierro sesión)

  5. Me subi a la onda ecologica!
    En el pino del fondo de casa hay zorzal que indefectiblemente canta cada día… (CADA PUTO DIA!)… empieza desde las casi las 6 hasta que me voy (8 aprox)…

  6. Yo utilizaba el script solo coordinado con las tareas de mantenimientos de linux, y asi dejaba la pc prendida todo el dia, “le tengo cagaso a tocar la bios” ademas no tiene esa opcion es una notebook.

Deja un respuesta