Instalar Debian en Asus ZenBook UX31E

Debian

No me gusta el MacBook Air. Es un producto típico de Apple:

  • No tiene puerto VGA, solo un puerto thunderbolt, y se incluye adaptador DVI. Tal y como viene de la caja no me sirve para nada, necesito al menos el cablecito thunderbolt-VGA.
  • No puede reemplazarse la batería. Utiliza tornillos tork de seguridad.
  • No tiene soporte de USB 3.0. Todo al formato propietario de Apple, thunderbolt.
  • Aparte de ser sensiblemente más caro, como mínimo para ser útil necesita: displayport-VGA (30€), displayport-HDMI (40€). Un simple cable thunderbolt son 40€. Un disco thunderbolt de 1TB 430€. ¿Y si quieres poner un disco USB3?
  • Es un producto Apple, con todo lo que eso conlleva. Su ejército de abogados se encargarán de que nunca haya libre competencia.

El Asus UX31 es un Air bien hecho:

  • USB 2.0, USB 3.0, HDMI y VGA. Todo estándar, pero con los conectores más pequeños posible (mini-VGA y mini-HDMI).
  • Incluye lo necesario: Dongle USB Ethernet y cable mini-VGA.
  • Usan tornillos tork, pero no de seguridad, para que puedas abrirlo con normalidad. ¿Cómo si no vas a cambiar el disco SSD o la batería?
  • El sonido 5.1 a través de HDMI es excelente. Puedo usarlo con mi tele sin tener que comprar otro cacharro a Apple.
  • Tiene una pantalla mucho mejor 1600x900, en lugar del extraño 1400x900 de Apple. Nótese que el Asus respeta el factor de forma de HDTV.

Por supuesto tienen ya su demanda de Apple. Todo lo que sea por evitar la competencia.

Preparación

Antes de instalar Debian lee bien toda la receta. Si no realizas los pasos previos puedes acabar teniendo que abrir el ordenador para sacar la batería. Eso es un fastidio por dos razones: primero porque necesitas un destornillador tork pequeñito, que seguro que no tienes a mano. Segundo porque me temo que si lo abres pierdes la garantía.

Actualizar la BIOS

Bajate de Asus la última actualización de la BIOS. Se puede instalar desde el propio menú de la BIOS. Yo la descargué de aquí. Elige OS Others y de ahí descarga la última BIOS (yo descargué la 211). Grábala en una memoria USB.

Arranca el portátil pulsando F2 (o Esc) y una vez en la BIOS ve a las opciones avanzadas y de ahí a Enter Setup. La opción Easy Flash te permite elegir el archivo con la última BIOS para actualizar. Asegurate de que está enchufado a la corriente durante todo el proceso. Te aseguro que no te gustaría que se quedara sin batería en medio de la actuaización.

Baja la Businesscard de Debian testing amd64

Yo bajé mi copia de aquí y la grabé en una memoria USB utilizando unetbootin en otro ordenador con Debian GNU/Linux.

¡Importante! No uses la netinstall de momento, porque actualmente tiene un bug que impide progresar la instalación más allá del sistema base.

Configuración de la BIOS

Desactiva en la BIOS la opción VT-d. Parece que esto evita algún problema, aunque tengo que decir que a mi nunca me pasó nada teniendo activa esa opción.

En el menu de salida de la BIOS puedes elegir la memoria USB como dispositivo de arranque temporal.

Instalar Debian

Instalar Debian no es inmediato porque actualmente el kernel del Debian Installer no soporta el dongle USB Ethernet que se incluye con el Asus. Si te puedes apañar con la WiFi (es una Atheros) no habrá problemas. Si no te puedes apañar te sugiero que pidas prestado durante un rato otro dongle más antiguo.

En la instalación elige lo mínimo (Laptop), ya te ocuparás luego de seguir instalando cuando tengas un kernel más nuevo.

Cuando la instalación termine arrancará con un kernel más decente (3.2). Edita /etc/default/grub y cambia GRUB_CMDLINE_LINUX para que contenga i915.i915_enable_rc6=1 i915.semaphores=1. Actualiza el archivo grub.cfg ejecutando update-grub.

Edita un nievo archivo en /etc/pm/sleep.d/20_zenbook con lo siguiente.

EHCI_BUSES="0000:00:1a.0 0000:00:1d.0"
case "${1}" in
    hibernate|suspend)
        # Switch USB buses off
        for bus in $EHCI_BUSES; do
            echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind
        done
        ;;
    resume|thaw)
        # Switch USB buses back on
        for bus in $EHCI_BUSES; do
            echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind
        done
        ;;
esac

Edita un nuevo archivo en /etc/pm/power.d/zenbook.sh con lo siguiente. Está sacado de la primera referencia pero algunas rutas están cambiadas para reflejar las que tiene un Zenbook UX31e de ahora.

case $1 in
        true)
                echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
                echo auto > /sys/bus/usb/devices/3-1.7/power/level
                echo auto > /sys/bus/usb/devices/3-1.8/power/level
                echo auto > /sys/bus/pci/devices/0000:02:00.0/power/control
                echo auto > /sys/bus/pci/devices/0000:00:1f.2/power/control
                echo auto > /sys/bus/pci/devices/0000:00:1d.0/power/control
                echo auto > /sys/bus/pci/devices/0000:00:00.0/power/control
                echo auto > /sys/bus/pci/devices/0000:00:16.0/power/control
                echo auto > /sys/bus/pci/devices/0000:00:1b.0/power/control
                echo auto > /sys/bus/pci/devices/0000:00:1c.0/power/control
                echo auto > /sys/bus/pci/devices/0000:00:1c.1/power/control
                echo auto > /sys/bus/pci/devices/0000:00:1c.3/power/control
                echo auto > /sys/bus/pci/devices/0000:00:02.0/power/control
                echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
                echo 5 > /sys/bus/pci/devices/0000:00:02.0/backlight/acpi_video0/brightness
                for i in 0 1 2 3; do
                    echo powersave > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor
                done
        ;;
        false)
                echo 9 > /sys/bus/pci/devices/0000:00:02.0/backlight/acpi_video0/brightness
                for i in 0 1 2 3; do
                    echo ondemand > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor
                done
        ;;
esac
exit 0

Dale permisos de ejecución a este último.

Ahora puedes ejecutar tasksel como superusuario para completar la instalación.

Recompilar el kernel

¡Actualización! Ya no es necesario recompilar el kernel. Actualmente, con la versión 3.2.0-3-amd64 y la BIOS 212 me funciona todo y no se apaga. De todas formas dejo la sección para los que utilicen distribuciones más antiguas. Mi BIOS sigue teniendo errores de DSDT, pero no parece que afecten al buen funcionamiento.

Hasta hace poco teníamos que recompilar el kernel para arreglar la DSDT (para que se suspenda correctamente), activar el Bluetooth, y activar el lector de SD. Nada de esto se podía hacer con el kernel por defecto.

Si te aburre todo esto y te fias de mí puedes descargar los paquetes ya compilados desde aquí.

Descargar el kernel

Para descargar y compilar seguí los mismos pasos que en esta página salvo por dos añadidos: la modificación del driver de Bluetooth y la activación del driver del lector SD. Todo eso lo explico a continuación pero debe hacerse justo antes de compilar el kernel.

Arreglar la DSDT

La DSDT de la BIOS 211 (y la 212) tiene los mismos errores que la DSDT de la BIOS 210. Así que seguí exactamente los mismos pasos que en esta página.

Arreglar el módulo para Bluetooth

Cambié los archivos drivers/bluetooth/btusb.c y drivers/bluetooth/ath3k.c según se describe en este página. Increiblemente todavía en el 3.2.9 no lo han añadido.

Si añades este módulo y suspendes el ordenador verás que deja de funcionar. Se recupera fácilmente haciendo un /etc/init.d/bluetooth restart pero es muy molesto si tienes ratón o teclado Bluetooth (por ejemplo cuando lo usas como mediacenter). De momento lo que yo hago es ejecutar eso precisamente en el /etc/pm/sleep.d/20_zenbook que queda finalmente así:

EHCI_BUSES="0000:00:1a.0 0000:00:1d.0"
case "${1}" in
    hibernate|suspend)
        /etc/init.d/bluetooth stop
        # Switch USB buses off
        for bus in $EHCI_BUSES; do
            echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind
        done
        ;;
    resume|thaw)
        # Switch USB buses back on
        for bus in $EHCI_BUSES; do
            echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind
        done
        /etc/init.d/bluetooth start
        ;;
esac

Si encuentras una solución mejor dímelo.

Activar el módulo del lector de SD

Hay que añadir el módulo Staging drivers/Realtek RTS5139 que por defecto no se incluye. Puedes añadir al archivo .config la opción siguiente:

CONFIG_RTS5139=m

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Instalar los .deb

Hola como va?
Tengo un par de preguntas sobre todo el el proceso, porque no quiero cagar la maquina jaj
En primer lugar, intente instalar con unetbootin, una imagen de business card de debian, y cuando inicio la maquina saltea el booteo por usb (ya cambie la configuracion del BIOS). Me pasa lo mismo con la imagen netinst, pero no con la imagen "normal". No pasa nada si hago todo con esa imagen?
El segundo lugar, que driver para la placa de red wifi tengo que usar? De todas las que me aparecen en la instalacion, creo que ninguna se corresponde con la Atheros.. (recuerdo haber visto en internet, que tenia que usar la ath9k, puede ser?)
Por ultimo, los .deb con el kernel ya compilado, los tengo que instalar con algun orden en particular? tienen que ser todos? vi que las fechas en que los subiste no son siempre las mismas.. Eso es porque son diferentes versiones?

Bien, creo que eso es todo.. Espero que me puedas dar una respuesta Smiling

Saludos y Gracias!

He seguido tus pasos y he

He seguido tus pasos y he instalado tus paquetes deb con el kernel personalizado. Al bajar la tapa para dejarlo en modo "suspender" se me queda la pantalla en negro en gnome Sad ¿que logs podría mirar para ver que pasa?

Otro fallo que tengo es que el botón derecho del ratón no funciona.

Pues no lo entiendo

La suspensión me funciona bien desde el primer día. ¿Has suspendido alguna vez con un kernel sin corregir la DSDT? Algunos usuarios en el foro de Ubuntu (ver referencias) indican problemas posteriores que les obliga a hacer un reset frio (quitando la batería).

Lo del botón derecho del ratón me desconcierta. ¿Cómo no va a funcionar? Eso no tiene nada que ver con el Asus. Si funciona el ratón, funciona el botón derecho. ¿No te referirás al touchpad?

El touchpad lo configuro como en la receta de Ubuntu. Mi /etc/X11/xorg.conf tiene lo siguiente.

Section "InputClass"
        Identifier      "Touchpad"                      # required
        MatchIsTouchpad "yes"                           # required
        Driver          "synaptics"                     # required
        Option          "MinSpeed"              "0.5"
        Option          "MaxSpeed"              "1.0"
        Option          "AccelFactor"           "0.075"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "2"     # multitouch
        Option          "TapButton3"            "3"     # multitouch
        Option          "VertTwoFingerScroll"   "1"     # multitouch
        Option          "HorizTwoFingerScroll"  "1"     # multitouch
        Option          "VertEdgeScroll"        "1"
        Option          "CoastingSpeed"         "8"
        Option          "CornerCoasting"        "1"
        Option          "CircularScrolling"     "1"
        Option          "CircScrollTrigger"     "7"
        Option          "EdgeMotionUseAlways"   "1"
        Option          "LBCornerButton"        "8"     # browser "back" btn
        Option          "RBCornerButton"        "9"     # browser "forward" btn
EndSection

Por tanto el botón derecho es con dos dedos, y el del medio con tres dedos.

Puedes configurar LBCornerButton y RBCornerButton a 1 y 2 si te resulta más cómodo.