Noticias

Asus UX32VD con LinuxMint Debian Edition 1204

Introducción

Aquí dejaré la historia de mi experiencia con un Asus UX32VD con la rolling release LMDE incluyendo enlaces (casi todos) externos a ajustes y códigos.

Anticipo que ahora mismo estoy encantado con este equipo: rápido, silencionso, ligero, cool... y con la LMDE: es muy estable aún siendo una Debian Testing, rolling release (lo que configuro e instalo permanece) y me ha evitado múltiples personalizaciones iniciales dado que LinuxMint ya lo ha hecho por mí.

Instalando LMDE y la catástrofe

Instalar LMDE en sí fue trivial, muy fácil tras unos ajustes en la BIOS. ¿Por qué una catástrofe? Básicamente porque metí la pata hasta el fondo invirtiendo un proceso que debería comenzar por actualizar la BIOS y luego instalar LMDE incluso eliminando las particiones EFI y Unallocated. Lo detallo en mi pastebin LMDE en Zenbook UX32VD.

Durante la instalación borré las particiones afectadas por este nuevo peaje de M$ conocido como UEFI o EFI. Pero no ha sido ese el error en sí, sino actualizar la BIOS después de esa instalación. ¿Por qué decidí actualizar la BIOS? Por no entender mínimamente el funcionamiento de la nVidia Optimus Geforce GT 620M junto con Bumblebee, el proyecto libre para la activación de esta tarjeta gráfica.

Resulta que esta tarjeta gráfica sólo funciona a petición del usuario y se desactiva automáticamente. Además, para observar su funcionamiento con el controlador privativo hay que ejecutar

$ optirun nvidia-settings -c :8

Es decir, no es suficiente con nvidia-settings; ¡no se verá ninguna actividad con ese comando aislado!

Eso, unido a que inicialmente lo intenté sin éxito con el controlador libre 'nouveau', que no logré activarla y a que estaba disponible una nueva versión de mi BIOS... pues eso, me llevó a una catástrofe.

Para esto de la BIOS seguí instrucciones descritas en la documentación de Ubuntu para AsusZenbookPrime. Posteriormente, volví a consultar esta fuente para, por ejemplo, optimizar el rendimiento general.

¿Qué pasó tras la nueva BIOS?

Pues que, por supuesto, no me reconocía la LMDE instalada, ni siquiera los USB sin firma UEFI como es el caso de la LMDE. Claro, había borrado las particiones EFI y Unallocated. Sólo me reconocía el USB con Ubuntu pues este contiene las necesarias firmas digitales EFI. Aún instalando la Ubuntu no podría instalar la LMDE... a menos que preparase un arranque GRUB con la imagen de la LMDE.iso. Menudo lío... ¡pero funcionó!

Así que me armé de paciencia, busqué información sobre cómo preparar una entrada en el GRUB para arrancar una ISO y me puse a hacerlo.

Instalé en disco Boot-repair-disk como paso intermedio, aunque imprescinidible, para tener la LMDE. Durante su instalación es posible crear esas particiones Unallocated de 1MB y EFI de 200MB. Para personalizar el GRUB más fácilmente descargué y compilé Grub-customizer. Todo el proceso así como la activación de una entrada en el GRUB con la imagen LMDE.iso la describo en grub-customizer en LMDE-201204 64bit.

Instalando definitivamente LMDE

Con el GRUB personalizado y el USB insertado, la instalación de LMDE fue nuevamente trivial e inmediata. Dejo mi /etc/fstab:

# /etc/fstab: static file system information. 
# # <file system> <mount point> <type> <options> <dump> <pass> 
proc /proc proc defaults 0 0 
# EFI en /dev/sdb2 
UUID=76CC-C002 fat32 defaults 0 0 
# swap en /dev/sdb3 
UUID=4a4fdd6f-ed4b-44c7-9aa2-dad4da93aafd swap swap sw 0 0 
# root en /dev/sdb4 
UUID=bc0261de-cb74-4085-9c9b-a5124904232b / ext4 rw,errors=remount-ro,discard,noatime,nodiratime 0 1 
UUID=76CC-C002 /boot/efi vfat defaults 0 1 
## /home en /dev/sda1 
UUID=3816bbc7-a06d-44c0-861d-3e63312155c3 /home ext4 defaults 0 2 
# /var movido a /dev/sda2 
UUID=2d33afdf-d654-4052-951d-ca72960237c8 /var ext4 defaults 0 2 
### # How to Tweak Your SSD in Ubuntu for Better Performance 
# http://www.howtogeek.com/62761/how-to-tweak-your-ssd-in-ubuntu-for-better-performance/ 
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 
# https://github.com/awilliam/asus-switcheroo/ 
# debugfs /sys/kernel/debug debugfs defaults 0 0

Observa que tengo /home y /var en el disco SATA, root y swap en el SSD. También hay una mejora para la durabilidad y rendimiento del SSD gracias a Howtogeek.

Personalizando mi LMDE

Para tener casi todo funcionando sin mensajes de advertencia o error recomiendo instalar uno de los kernels actuales (¡gracias Cosme!). Para esto añado a /etc/apt/sources.list:

deb http://ftp.debian.org/debian experimental main contrib non-free #kernel trunk
deb-src http://ftp.debian.org/debian experimental main contrib non-free #kernel trunk source

$ sudo aptitude update
$ sudo aptitude install linux-headers-3.8-trunk-all linux-headers-3.8-trunk-all-amd64 \
linux-headers-3.8-trunk-amd64 linux-headers-3.8-trunk-common linux-image-3.8-trunk-amd64 \ 
linux-modules-3.8-trunk-amd64 linux-support-3.8-trunk linux-kbuild-3.8

Observa que es necesario 'kbuild' para construir 'bbswitch' mediante 'dkms'. 'bbswitch' es la interfaz que usa 'bumblebee' para activar las tarjetas nVidia Optimus. Tras esta instalación no olvides comentar esas mismas líneas del repositorio expermental.

Describo algunos ajustes debidos a la otra tarjeta gráfica intel i915. ¡Gracias Guille!

Otros ajustes

Roberto Brenlla
Logo TEGNIX pequeno

Raspberry Pi como servidor de impresión... ¿con XBMC para tv? (y III)

Índice

Configurando XBMC con TV

El objetivo ahora es instalar XMBC y conectarlo a un dispositivo usb para ver y grabar TV.

Recuerdo que la RaspberryPi viene sin códecs MPEG y VC-1 necesarios para ver la televisión o vídeos con determinados formatos privativos.Raspberry Pi En Introducción, instalación en usb y primer arranque
expliqué donde comprarlos y como instalarlos.
 
Se recomienda antes de instalar xbmc, tener python-qt3:
$ sudo su
# apt-get update
# apt-get install python-qt3
# apt-get install xbmc

Confirmo en que el usuario 'pi' está incluido en los grupos
audio video input dialout plugdev

$ groups pi
pi : pi adm dialout cdrom sudo audio video plugdev
games users netdev input lpadmin indiecity

Igualmente, confirmo

# cat /etc/udev/rules.d/99-input.rules
SUBSYSTEM=="input", GROUP="input", MODE="0660"

Para que arranque el XBMC siempre

# nano /etc/default/xbmc
# Set this to 1 to enable startup
ENABLED=1
# useradd xbmc

Edito el servicio XBMC para que se active en el arranque

# nano /etc/init.d/xbmc
ENABLED=1
# reboot

(...)

Sin embargo no arranca automáticamente, así que lo dejo como tarea. Arranco xbmc (la primera vez tarda bastante, conviene dejarlo bastante tiempo):

$ xbmc-standalone

Las primeras impresiones dentro de XBMC es que funciona bastante lento aunque relativamente bien.

Instalando el driver de mi dvb-usb

Comprubeo si se cargan los controladores (drivers) de mi tarjeta dvb-usb:

$ dmesg | grep dvb
dvb-usb: found a 'Pinnacle PCTV 73e' in cold state, will try to load a firmware
dvb-usb: did not find the firmware file. (dvb-usb-dib0700-1.20.fw) 
Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2)
usbcore: registered new interface driver dvb_usb_dib0700
$ sudo su
# lsusb
Bus 001 Device 008: ID 2304:0237 Pinnacle Systems, Inc. PCTV 73e [DiBcom DiB7000PC]
# cd /lib/firmware

No está el driver para mi dvb-usb, debería ser dvb-usb-dib0700-1.20.fw

$ sudo su
# cd /lib/frimware
# wget http://www.linuxtv.org/downloads/firmware/dvb-usb-dib0700-1.20.fw
# reboot

Al reiniciar compruebo que la luz del dvb-usb se enciende y que 'dmesg' lo muestra activado:

$ dmesg | grep dvb
...
dvb-usb: Pinnacle PCTV 73e successfully initialized and connected.
...

Configurando la TV con tvheadend

Preparando la instalación de tvheadend:

# aptitude install git openssl libssl-dev libavcodec-extra-53 \
 libavcodec-dev libavformat-extra-53 libavformat53 libavformat-dev \
 libavahi-client-dev libcurl3-dev libdvbcsa1 libdvbcsa-dev
# exit
$ cd /tmp
$ git clone https://github.com/tvheadend/tvheadend
$ cd tvheadend
$ ./configure --enable-dvbcsa
$ make
$ sudo make install

(hay conflictos de dependencias, se elimina libavcodec53)

Sigo de cerca esta entrada de Coder36:

$ sudo groupadd tvheadend
$ sudo useradd -g tvheadend -G video -m tvheadend
$ sudo nano /etc/init.d/tvheadend 

en donde incluyo como contenido:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          Servicio tvheadend
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Para servir streamings de una DVB-T
# Description:    Televisión, radio.
#
### END INIT INFO
 
TVHNAME="tvheadend"
TVHBIN="/usr/local/bin/tvheadend"
TVHUSER="tvheadend"
TVHGROUP="tvheadend"
 
case "$1" in
  start)
    echo "Starting tvheadend"
    start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
                -u ${TVHUSER} -g ${TVHGROUP} -f -C
  ;;
  stop)
    echo "Stopping tvheadend"
    start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
  ;;
  restart)
    echo "Restarting tvheadend"
 
    start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
 
 
    start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
                -u ${TVHUSER} -g ${TVHGROUP} -f -C
 
  ;;
  *)
    echo "Usage: tvheadend {start|stop|restart}"
    exit 1
esac
exit 0

Lo hago ejecutable:

$ sudo chmod 755 /etc/init.d/tvheadend

Activo su arranque

$ sudo update-rc.d tvheadend defaults
$ sudo update-rc.d xbmc defaults 
Reinicio y...
$ sudo service xbmc start
$ xbmxc-standalone  (demora un tiempo)

En XBMC

  1. Sistema > Ajustes hago ajustes generales, especialmente los de internacionalización, sistemas-video, sistemas-audio
  2. Sistema > Ajustes > TV en directo > General: selecciono 'Activado'. Saldrá un popup avisando que no hay ningún PVR activado. Ok. Elijo TVHeadend HTSP Client. 
  3. Configuración -  TVHeadend HTSP Client
  4. IP (pongo la IP fija que le asigné en mi red, p.ej., 192.168.1.20), creo un usuario., le pongo contraseña. Ok.
  5. Activar TVHeadend HTSP Client (he de hacerlo un par de veces porque cuesta activarse...)
  6. En remoto abro un navegador con la url: http://192.168.1.20:9981

En el navegador sigo configurando la TV para XBMC con las detalladas instrucciones de este foro en raspberrypi.org (punto 14º) o gráficamente lo que se señala en el foro de Ztreambox.

Básicamente consiste en:

  1. Configuration > General, cambio el idioma y guardo los cambios.
  2. Configuration > TV Adapters, selecciono mi dvb-usb
  3. Asegúrate que estén activados "Autodetect muxes" y "Idle scanning"
  4. Introducir manualmente las frecuencias porque buscando por localizaciones no me funionó :-/
  5. Instalo w-scan
# aptitude install w-scan

Escaneo frecuencias con servicios

$ mkdir ~/soft/tv
$ cd ~/soft/tv
$ w_scan -a 0 -f t -t 2 -x -c ES

=== Nota ===
Para formato me-tv, xine... sería:

$ w_scan -a 0 -f t -t 2 -X -c ES > channels.conf

=== fin Nota ==

...
dumping lists (57 services)
...

Copio su salida a un fichero externo, observo las frecuencias con servicios para pasarlas luego a la interfaz web de TVHeadend. Y sigo,

  • Configuration > TV Adapters, selecciono mi dvb-usb
  • Configuration > TV Adapters > pestaña Multiplexes

En Frequency (kHz): 554000  
En Bandwidth: 8 Mhz
Todo lo demás va como 'Auto'.
Añado esa frecuencia pulsando en 'Add'.

¡Sin cerrar! repito lo mismo para todas las demás frecuencias con canales.
Importante: guarda los cambios en esta pestaña antes de abandonarla.

  • Paso a la siguiente pestaña "Services" para confiramr que están allí todos los canales y emisoras de radio (servicios).
  • Paso a la primera pestaña "General" y en el recuadro "Tools" añado los servicios a los canales "Map DVB Services to channels". Guardo en el recuadro central, "Save".
  • En Configuration > Channels están ahora todos los canales. Se pueden ir editando tanto sus nombre como su número para ordenarlos.
  • Ahora sí, en XBMC > Sistema > Ajustes > TV en directo > General: selecciono 'Activado'.
  • En esa misma parte, más abajo selecciono "Reiniciar la base de datos de PVR".

Y, ¡por fin!, en el menú principal de XBMC ya se puede ver la TV :)

Conclusiones

Mi rp (el hostname que he seleccionado para la Raspberry Pi) va bien como servidor de impresión e incluso para ver videos desde dispositivos conectados por usb pero para ver la TV... como que no. Se queda muy corta.

La versión rasbmc pensada para Raspberry Pi + XBMC es aún muy inestable y para ver TV aún más.

Por tanto, mi rp se queda de momento como servidor de impresión. Ya lleva más de un mes, fiable y dejándome todo bajo control.

Roberto Brenlla
Logo TEGNIX pequeno

 

Raspberry Pi como servidor de impresión... ¿con XBMC para tv? (II)

Índice

Configurando mi servidor de impresión

El objetivo es tener un servidor de impresión doméstico accesible fácilmente para los equipos, incluso su configuración remota. Y, sí, mi RaspberryPi también sirve como servidor de impresora, desde luego.

RaspberryPi cuesta muy poco y la sirven en un par de días pero, atención, viene sin códecs MPEG y VC-1 necesarios para ver la televisión o vídeos con determinados formatos privativos.Raspberry Pi
 


Conecto en el hub usb mi HP_Color_LaserJet_3600 y sigo instrucciones de la wiki de Debian:

 

# aptitude install mdns-scan cups-bsd hplip 
# usermod -a -G lpadmin pi
# nano /etc/cups/cupsd.conf

Comento líneas y modifico para darles permisos de administración remota.

# Only listen for connections from the local machine.
#Listen localhost:631
Listen *:49631
Listen /var/run/cups/cups.sock
(...)
# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 192.168.1.*
</Location>
# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow 192.168.1.*
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
#  Require user @SYSTEM
  Allow 192.168.1.*
  Order allow,deny
</Location>

Guardo, salgo y reinicio servidor de impresión:

/etc/init.d/cups restart

Desde navegador en equipo remoto:

https://IP_de_servidor:49631/

En la pestaña "Administración"

  • Mostrar impresoras compartidas por otros sistemas => retiro la selección (porque la impresora está en la RaspberryPi)
  • Compartir impresoras conectadas a este sistema => selecciono
  • Pulso sobre "Cambiar configuración" y un popup me pide usuario/contraseña; pongo 'pi' y su contraseña.
  • En la pestaña "Administración" selecciono "Encontrar nuevas impresoras". Elijo entre las que encuentra, modifico su nombre a 'HP' y pongo 'rp' en ubicación (podría poner cualquier nombre).
  • Selecciono "Compartir esta impresora".
  • Pulso en "Siguiente".
  • Después elijo "Marca" y pulso en "Siguiente" (sin elegir aún el driver). A seguir selecciono la combinación de Modelo/plugin y finalmente "Agregar impresora".

Desde la pestaña "Impresoras" puedo configrar más detalles como, por ejemplo, hacerla predeterminada del equipo.

En consola hago un último reinicio del servicio:

# /etc/init.d/cups restart

En los equipos remotos es conveniente disponer de los paquetes: mdns-scan cups-bsd hplip

La URI que han de poner los equipos remotos (si es que no es autodectada ya) sería:

ipp://IP_servidor:49631/printers/HP

En mi caso fue detectada automáticamente con el URI:

hp:/usb/HP_Color_LaserJet_3600?serial=00DP38493

Errores típicos

El primero y más frecuente es retocar manualmente  el archivo de configuración /etc/cups/cupsd.conf y no reiniciar después el servicio cups:

$ sudo service cups restart

Si el error "Getting printer information failed", "Falló la obtención de la información de la impresora", edita o crea en ese equipo cliente:

$ sudo nano /etc/cups/client.conf ServerName 
IP_servidor:49631

$ sudo service cups restart

El día a día

Suficiente. La Raspberry Pi para servidor de impresión es adecuada, suficiente para el tráfico doméstico. Ya no es necesario destinar un equipo concreto ni comprar un dispositivo que, entre otras características, seguro que será cerrado y de precio igual o mayor.

La configuración del servidor tan permisiva también la veo adecuada, me facilita la asistencia en cada equipo. Claro, se puede configurar más y mejor...

Roberto Brenlla
Logo TEGNIX pequeno

 

Raspberry Pi como servidor de impresión... ¿con XBMC para tv? (I)

Índice

Introducción

Puedes pasar al punto siguiente si lo tuyo es la técnica... 

RaspberryPi cuesta muy poco y la sirven en un par de días pero, atención, viene sin códecs MPEG y VC-1 necesarios para ver la televisión o vídeos con determinados formatos privativos.Raspberry Pi
 
Puedes comprar la RaspberryPi en Farnell. Lo hecho incluyendo una caja transparente y una SD con raspbian (una Debian especial para Raspberry Pi) con este desglose
Subtotal: 44,89 €
Portes: 9,00 €
IVA:    11,32 €
Total:  65,21 €
 
Para comprar los códecs antes necesitas haber instalado algún sistema y después ir a RaspberryPi.com para comprarlos ofreciendo la salida del comando
$ cat /proc/cpuinfo
porque los códecs están sujetos a cada placa en particular.
Agrega pues otros 4,46€ al presupuesto.
 
Elijo la raspbian como distro para tener un XBMC con capacidad de ver tv. Actualmente la distro rasbmc viene con todo preparado para disponer directamente de xbmc pero, a mi entender, es muy inestable.

Instalación de Raspbian

Descargo raspbian desde raspberrypi.org y la ubico en un directorio de trabajo, por ejemplo, raspbian. En su interior guardo el zip descargado (unos 508 MB).
 
Inserto la SD fomateada previamente como fat32, se monta automáticamente así que la desmonto (también en entorno gráfico).
 
Abro terminal, me sitúo en el directorio de trabajo (raspbian) y ejecuto:
$ sha1sum 2012-12-16-wheezy-raspbian.zip
La salida ha de coincidir con la línea SHA-1 que figura en raspberrypi.org
$ unzip 2012-12-16-wheezy-raspbian.zip (para
$ dmesg | tail
(...)
[ 1496.465121] mmcblk0: mmc0:43fb SD01G 982 MiB
[ 1496.467584]  mmcblk0: p1
(...)
Por lo tanto, mi SD es el dispositivo 'mmcblk0'
$ sudo dcfldd bs=4M if=2012-12-16-wheezy-raspbian.img 
of=/dev/mmcblk0
El comando 'dcfldd' ofrece más información sobre el progreso de esta copia que el habitual 'dd'. Pretendo instalar todo el sistema en un usb excepto el directorio /boot pues es imprescindible para la RaspberryPi.
 
Para finalizar esta parte ejecuto
$ sudo sync
Inserto el usb y formateo:
  • una partición swap de 1GB
  • resto ext4
Lo monto.Retiro la SD y la vuelvo a insertar. Me sitúo en la partición ext4 en la SD y muevo todo su contenido al usb como 'root'
$ sudo su
# cd /media/particón_ext4_de_SD/
# mv * /media/donde_se_haya_montado_usb/
mv: falló el movimiento entre distintos dispositivos: 
de «lost+found» a «../donde_se_haya_montado_usb/lost+found»;
no se puede borrar el objetivo: Es un directorio
(Obvio ese error)
# sync
Edito en la partición fat32 el archivo 'cmdline.txt' para que figure así:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 
console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait
Si has comprado códecs, insértalos al inicio de 'config.txt' en la SD. Recuerda que son exclusivos para cada placa (abajo va un ejemplo):
decode_MPG2=0x12345678 
decode_WVC1=0x12345678 
Edito su /etc/fstab (en el usb) para que apunte a /rpiboot como señalan en raspbian.org,quedando mi fstab como sigue:
$ cat /etc/fstab
proc            /proc           proc    default                 0       0
/dev/mmcblk0p1  /rpiboot        vfat    defaults                0       2
/dev/sda1       /               ext4    defaults,noatime        0       1
/dev/sda2       swap            swap    sw                      0       0
Es esencial que la RaspberryPi esté alimentada por red porque puede que no sea suficiente con pilas o conectada a otro equipo por usb.
 
El primer arranque sigue hasta aparecer la herramienta 'rpi-config'. En ella selecciono ajustes:
  • overscan deseable_overscan lo pongo en 'Enabled'
  • configure_keyboard para dejarlo con Generic-105 y español
  • configure-locales para dejarlo en es_ES.UTF-8 UTF-8
  • change_timezone para Europe/Madrid
  • ssh para activar el servidor openssh
  • boot_behavior para que no arranque las X
  • finish para acabr con estas configuraciones
  • reboot (acepto)
Usando otro equipo accedo por ssh:
$ ssh -l pi 192.168.1.20
password: raspberry  
$ sudo su
En el reboot debería cambiar automáticamente /rpiboot por /boot pero conviene revisarlo porque he tenido que hacerlo manualmente.
# nano /etc/fstab
Decido cambiar el nombre de la máquina y la clave:
# nano /etc/hostname
rp 
(se guarda y sale con Ctrl-O, intro, Ctrl-X)
# nano /etc/hosts
Sustituyo todo donde aparecía 'raspberry' por 'rp'
# /etc/init.d/hostname.sh start
# reboot
Confirmo que tengo una consola del tipo
pi@rp:~$
Si tu deseo es cambiar a una contraseña muy simple, algo nada recomendable, tendrás que hacerlo como root:
$ sudo su
# passwd pi

Actualizando todo el sistema

$ sudo su
# raspi-config
Elijo 'update' para actualizar el propio programa 'raspi-config'.
# aptitude update && aptitude upgrade -y
...para actualizar todo el software instalado, como en cualquier Debian ;)

Roberto Brenlla
Logo TEGNIX pequeno