Otros

Escalado de frecuencia

El procesador G4 con el que cuenta el iBook puede funcionar a 606MHz y a 799MHz. La principal ventaja que supone esto es el incremento de la autonomía de la batería que proporciona; debido a que, a menos frecuencia menos consumo. Para que funcione, el primer requisito será proporcionarle soporte en el kernel. Veamos las opciones relevantes:
  • [*] CPU Frequency scaling
  • Default CPUFreq governor (userspace)
  • <*> 'performance' governor
  • <*> 'powersave' governor
  • [*] Support for Apple PowerBooks
Una vez que tengamos este soporte en el kernel, podremos ver que el procesador está funcionando a 606MHz:
  • grep clock /proc/cpuinfo
  • clock : 606MHz
Ahora necesitamos un daemon que se encargue de subir y bajar la frecuencia del procesador según sea necesario. De los que he probado, el único que me ha funcionado ha sido cpudyn. Podemos instalar tecleando:
  • emerge cpudyn
Para iniciarlo ejecutamos:
  • Iniciando cpudyn
  • /etc/init.d/cpudyn start
Y así tendremos el escalado de frecuencia funcionando. Podemos ver como varía observando /proc/cpuinfo. Si queremos que se inicie siempre al arrancar el sistema, podemos hacerlo tecleando:
  • rc-update add cpudyn default

Pbbuttonsd

Pbbuttonsd es el demonio que se encarga de controlar los botones del brillo, el volumen y extracción del cd. Es muy útil, además de sencillo de configurar. Para instalarlo tecleamos:
  • Instalando pbbuttonsd
  • emerge pbbuttonsd
Para su configuración recomiendo usar powerprefs, ya que nos permitirá hacerlo todo gráficamente de una forma muy cómoda. No obstante, yo me he creado un pbbuttonsd.conf a mano y lo he dejado disponible.

Emulación de los botones 2 y 3 del ratón

El touchpad del iBook solo tiene un botón, por lo que si queremos usar los botones 2 y 3 del ratón sin conectar uno externo, tendremos que emularlos usando ciertas teclas. El único requisito para que esto funcione es tener una configuración del kernel adecuada. En primer lugar, tenemos que decidir que teclas vamos a asignar a los botones, ya que perderemos la funcionalidad de dichas teclas. Yo he optado por Comando (la tecla de la manzana) y Function+Comando. Ahora tenemos que averiguar sus keycodes; para ello usaremos showkey desde una consola (desde las X no funciona):
  • Ejecutamos showkey
  • showkey
  • La salida será algo así
  • keycode 125 press
  • keycode 125 release
Una vez que tenemos estos números, ejecutamos:
  • Activando la emulación
  • echo 1 > /proc/sys/dev/mac_hid/mouse_button_emulation
  • Asignando el keycode 126 al botón 2
  • echo 126 > /proc/sys/dev/mac_hid/mouse_button2_keycode
  • Asignando el keycode 125 al botón 3
  • echo 125 > /proc/sys/dev/mac_hid/mouse_button3_keycode
Ahora dichas teclas se comportarán como los botones del ratón que le hemos asignado. Si queremos que este comportamiendo se aplique cada vez que iniciemos la máquina, debemos de añadir las siguientes líneas a /etc/sysctl.conf:
  • dev.mac_hid.mouse_button_emulation = 1
  • dev.mac_hid.mouse_button2_keycode = 126
  • dev.mac_hid.mouse_button3_keycode = 125

Bluetooth

El dispositivo bluetooth integrado del iBook es prácticamente análogo a un dispositivo bluetooth basado en USB. Comenzaremos dando soporte en el kernel para dispositivos bluetooth USB:
  • Sección Networking Support
  • <M> Bluetooth subsystem support
  • Sección Bluetooth subsystem support
  • <M> L2CAP protocol support
  • <M> RFCOMM protocol support
  • <M> BNEP protocol support
  • [*] Multicast filter support
  • [*] Protocol filter support
  • Sección Bluetooth device drivers
  • <M> HCI USB driver
Una vez compilados y cargados estos módulos, necesitamos las herramientas en espacio de usuario:
  • Instalando bluez-utils
  • emerge bluez-utils
No son necesarios más paquetes. Lás ultimas versiones de bluez-utils contienen sdpd, hcid, pand y dund.
El dispositivo bluetooth del iBook funciona por defecto en modo HID. Para la mayoría de las tareas, es necesario que funcione en modo HCI. Este comportamiento se modifica ejecutando hid2hci. En Gentoo podemos configurar el script de inicio de bluetooth para que lo ejecute automáticamente. Editamos la siguiente opción en /etc/conf.d/bluetooth:
  • HID2HCI_ENABLE=true
Ahora al ejecutar /etc/init.d/bluetooth start tendremos bluetooth funcionando. Si queremos que se inicie siempre al iniciar la máquina podemos ejecutar:
  • Añadiendo bluetooth al inicio
  • rc-update add bluetooth default
En cuanto a configuraciones específicas de bluetooth, a medida que vaya probando cosas nuevas iré añadiéndolas aquí.

Red TCP/IP sobre bluetooth

Uno de los problemas que existen actualmente con los iBook G4 bajo Linux es que el Airport Extreme carece de soporte. Esto obliga a utilizar un dispositivo externo en caso de querer acceder a redes inalámbricas. Como es bastante incómodo y mi iBook tiene el bluetooth integrado, opté por adquirir un dispositivo bluetooth USB para el servidor y montar un NAP (Network Access Point). Aunque bluetooth no tiene el alcance ni la velocidad de 802.11, creo que es una solución bastante buena (y cómoda) para casa.
Comenzaremos configurando el servidor. En primer lugar, necesitaremos exactamente los mismos módulos del kernel y los mismos paquetes que para el iBook. Una vez tengamos esto listo, editamos /etc/conf.d/bluetooth. Las opciones relevantes son:
  • Lanzar hcid
  • HCID_ENABLE=true
  • Lanzar sdpd
  • SDPD_ENABLE=true
  • No ejecutar hid2hci
  • HID2HCI_ENABLE=false
  • No lanzar dund
  • DUND_ENABLE=false
  • No activar rfcomm
  • RFCOMM_ENABLE=false
  • Lanzar pand
  • PAND_ENABLE=true
  • Configurar pand como NAP
  • PAND_OPTIONS="--listen --role NAP"
Mi dispositivo bluetooth USB funciona por defecto en modo HCI y no requiere la ejecución de hid2hci. Otros dispositivos podrían necesitarla.
El único que paso que resta es ejecutar /etc/init.d/bluetooth start. Con esto tendríamos nuestro NAP bluetooth funcionando. Si deseamos que se active al iniciar la máquina:
  • Añadiendo la activación del NAP al inicio
  • rc-update add bluetooth default
En el lado del cliente la configuración también es bastante sencilla. Las opciones son todas idénticas a las del servidor, excepto una:
  • Configurar pand para que busque un NAP
  • PAND_OPTIONS="--persist --search --service NAP"
Una vez hayamos configurado tanto el cliente como el servidor, hayamos ejecutado /etc/init.d/bluetooth start y estos se encuentren a una distancia desde la que bluetooth tenga alcance, se asociarán. Podremos ver unos mensajes similares a estos:
  • Mensaje en el servidor
  • Oct 10 12:32:24 [pand] New connection from 00:0D:93:03:63:8E bnep0
  • Mensaje en el cliente
  • 08:Oct 10 12:32:05 [pand] bnep0 connected
A partir de ese momento tendremos una nueva interfaz de red en cada máquina, bnep0. Si les asignamos direcciones de la misma red, las dos máquinas ya podrán comunicarse.
Es posible automatizar el proceso de configuración de las interfaces una vez se ha establecido la conexión. Para ello se utiliza el script /etc/bluetooth/pan/dev-up, que se ejecutará cada vez que se produzca un enlace pasándole el nombre de la interfaz como primer argumento y la dirección BD del otro extremo del enlace como segundo argumento. Una explicación en profundidad de la configuración de la red (con enrutamiento, enmascarado, bridging y otras técnicas) a partir de estos scripts se sale del ámbito de este documento. No obstante, he dejado disponibles a modo de ejemplo tanto el script que uso en el servidor como el que uso en el cliente.
Estos scripts funcionan en mi red, pero no tienen por qué funcionar en otras configuraciones.
¡Validar XHTML! ¡Validar CSS!