viernes, 26 de febrero de 2016

Raspberry PI 3 se prepara para el lanzamiento con ¡64 bits!


Una entrada en los foros de la fundación nos dió la pista, más bien el enlace; una nueva versión de la famosa Raspberry Pi está en el horno. Esto no es nada de extrañar ya que sabemos que estos chicos trabajan duro. Poco más podemos saber ya que, como dice la claúsula de confidencialidad, se prohibe a la FCC desvelar datos acerca de los componentes y esquemas de la nueva placa.
A la vista de que la entrada en el foro ha sido eliminada y respetando los objetivos de la fundación, no incluyo mas que una foto en la que se observa la nueva identificación como Raspberry Pi 3 Model B V1.2

Actualizado:
En numerosas entradas se han echo eco de la noticia y parece ser que incluirá WIFI y Bluetooth.
Por lo visto las fotos son públicas así como los resultados de los test que ha pasado satisfactoriamente:

https://fccid.io/pdf.php?id=2912411


Bueno, parece que esta lista y saldrá anunciada en el próximo número de MagPi.
NADA MENOS QUE 64 BITS

lunes, 29 de diciembre de 2014

ESP8266 y Raspberrypi: Actualizar el firmware usando nuestra rpi.

ESP8266 y Raspberrypi: Actualizar el firmware usando nuestra rpi.

Podemos conectar el módulo esp8266 directamente al puerto serie de nuestra raspberrypi e incluso alimentarlo con los 3.3 voltios del conector de raspberrypi sin necesitar nigún adaptador serie a usb, así que ¿como podemos actualizar el software de este módulo aprovechando esto?

En vez de instalar pesadas aplicaciones en nuestro "modesto" raspberry pi y rompernos la cabeza con dependencias, compilaciones, etc. vamos a hacer accesible el puerto serie a través de la red y así poder actualizar el firmware del esp8266 desde otro pc, en este caso, con windows.

El que haya trabajado con este módulo o se haya informado un poco, sabe que para actualizar el firmware hay que encenderlo con un puente entre las patillas GPIO0 y GND. El módulo, entonces configura su conexión serie a 115200 baudios y espera órdenes.

Liberando el puerto serie.

Ni que decir tiene que para usar el puerto serie de nuestro raspberry pi debemos liberarlo de su función como puerto de consola, para ello tendremos que hacer dos cosas; la primera es editar el fichero /etc/inittab y comentar la linea que lanza el getty por el puerto serie añadiendo un carácter "#" al comienzo de la línea y sea tomada como un simple comentario quedando esta así:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


  
la segunda es editar el fichero de arranque /boot/cmdline.txt y anular la salida de información de arranque y consola por el puerto serie que se indica con "console=ttyAMA0,115200 kgdboc=ttyAMA0,115200" por lo tanto borraremos esta información. Por ejemplo, si nuestro fichero contiene:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

lo dejaremos en:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait


Podemos hacer antes una copia del fichero por si queremos tener a mano la versión anterior y no tener que recordar y teclear los parámetros para volver a habilitarlo algún día.
Después de reiniciar, ya tendremos liberado el puerto serie. En el pin 1 de la raspberry encontraremos los 3.3 voltios y en el 6, 8 y 10 respectivamente encontramos GND, TXD y RXD. Si queremos atenernos a las recomendaciones de la fundación Raspberry, no debemos usar esta alimentación de 3.3 voltios pues corremos el riesgo de dejar el raspberrrypi inservible si el consumo es elevado. Yo solo puedo decir que me ha funcionado y que cada cual valore si está dispuesto a asumir este riesgo.
Cutecom es una utilidad en modo gráfico que nos puede ayudar comprobar si hemos hecho bien las conexiones entre el raspberry y el esp8266 y probar algún comando AT antes de proceder al cambio de firmware.

Exportando el puerto serie.

Para "exportar" nuestro puerto serie a la red, nos valdremos de una poderosa herramienta llamada "socat". Es lo único que necesitaremos en nuestro raspberry pi, y lo podemos instalar con toda confianza de los repositorios de raspbian ejecutando:

sudo apt-get install socat

Una vez instalado, procederemos a ejecutar la exportación del puerto serie con:

sudo socat -x OPEN:/dev/ttyAMA0,raw,echo=0,b115200 TCP-LISTEN:27644,fork

La opción -x es opcional pero con ella veremos el tráfico que se genera entre el puerto serie y la red. El primer parámetro OPEN indica que conectar el puerto serie (/dev/ttyAMA0) configurándolo a 115200 baudios, sin hacer ninguna modificación en los datos (raw) y sin devolver un eco (echo=0) al puerto serie con lo que se indica en el siguiente parámetro: el puerto TCP 27644 en modo transparente (fork).

Importando el puerto serie (en el PC)

Para poder "atacar" al puerto serie desde nuestro pc instalaremos el driver gratuito de puerto serie virtual que nos ofrece HWgroup, al que agradecemos el detalle, en su página http://www.hw-group.com/products/hw_vsp/index_en.html y configurarlo de la siguiente manera:



Aquí aparece la dirección 192.168.0.195 como la dirección del raspberrypi y el puerto 27644 que indicamos en el paso anterior al exportar el puerto serie y COM3 como el nuevo puerto creado.

Actualizar el firmware

Ya podemos usar nuestra herramienta favorita para actualizar el firmware del esp8266 como si lo tuviésemos conectado a un puerto serie local (COM3).
¡Que aproveche!


ESP8266 con LUA: lista de ficheros

Con el firmware de nodemcu podemos programar este mini módulo con el lenguaje de programación LUA.
Además podemos guardar los programas y otros ficheros en su eeprom.

Hacer un listado de los ficheros en una sola linea:

for k , v in pairs(file.list()) do print (k.. " ....... " ..v); end

viernes, 25 de abril de 2014

Raspberry Pi: Arranque desde USB

Raspberry Pi: Arranque desde USB

O como pasar nuestro arranque a disco USB

He encontrado este tutorial que me parece de lo mas completo e iré traduciéndolo para aquellos de vosotros que no os manejéis bien con el inglés.
En el artículo se habla de una nueva instalación pero nos da las pistas necesarias para pasar los datos de una Pi en la que usamos la SD a un disco USB para arrancar luego desde él con rsync o clonar esa configuración que tenemos tan pulida a otro disco para no tener que repetir tanta actualización y configuración en nuestro segundo, tercero, cuarto... PI.
También muestra como identificar la partición correcta de arranque cuando tenemos varios discos usb conectados al Pi.
Antes de nada, agradezcamos su trabajo al autor visitando su foro en el que encontrareis otras cosas tan interesantes y bien explicadadas como esto. 

root on usb drive

Postby Richard-TX » Wed Apr 16, 2014 7:15 am
Empezaremos con una nueva tarjeta SD y un nuevo disco USB.
El tamaño y velocidad del la Sd no importa, cualquier tarjeta de 2 gigas nos valdrá (tiene que ser de dos gigas porque vamos a cargar un Debian completo en ella).
El tamaño del disco o pincho USB depende de tus aplicaciones, cualquiera de al menos 2 Gb valdrá. La velocidad importa un poco más aquí, pero no vamos a discutirlo ahora, lo dejamos para otra discusión.
En esta descripción usaré una micro SDHC de 4 Gigas clase 10 porque uso las tarjetas para otras aplicaciones así como tampoco me gustan las SD que sobresalen del raspberry (ya he roto un adaptador de SD o zócalo). También uso un micro disco USB de 8 Gb.
Primero de todo necesitas cargar la imagen del Wheezy Raspbian en la SD (yo usé la imagen del 09-02-2013). Hay mas que suficientes procedimientos y tutoriales de como hacerlo. Yo lo hago con win32disimager en mi portátil con W7.
Una vez conseguido, puedes ponerlos en tu Pi y arrancar.
Si usas la conexión de red Ethernet, ya estas listo. Si lo haces con un Pi sin monitor conectado a WIFI deberás configurarlo primero, como dijimos antes, hay muchos modos y tutoriales de como configurar tu cacharro partículas. Yo uso un adaptador EDIMAX. Obviamente, uso ssh, pero eso no importa mucho.

Antes de nada, debes ejecutar raspi-config con:
sudo raspi-config

sudo raspi-config


Pero SOLO configura lo siguiente:

Configurar el teclado (no es necesario si lo haces en remoto)
Cambiar la clave (puedes dejarlo para luego)
Cambiar la configuración del locale para ponerlo en español (más bonito).
Cambiar la zona horaria.
Ajustar el tamaño de memoria que dejaremos a la GPU (para un raspberry que no se va a conectar a ningún monitor, con 16 megas sobra).
No hagas una actualización en este momento (update ni upgrade) para no llenar la SD de basura que ahora nos conviene evitar.

Después de un reinicio se cargan los nuevos parámetro y estamos listos.
Comprueba el sistema de ficheros:


pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          1.8G  1.4G  247M  86% /
/dev/root       1.8G  1.4G  247M  86% /
devtmpfs        235M     0  235M   0% /dev
tmpfs            49M  248K   49M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            98M     0   98M   0% /run/shm
/dev/mmcblk0p1   56M   19M   38M  34% /boot
pi@raspberrypi ~ $

Notarás que aunque use una SD de 8 Gigas, el tamaño por defecto es 1,8 porque no hemos expandido la partición raíz (rootfs).
La entrada /dev/mmcblk0p1 es la partición de arranque en el dispositivo mmcblk0 que es la tarjeta SD.

La partición de arranque será la única parte de la tarjeta SD que usaremos una vez hayamos  terminado el proceso y eso es por el particular proceso que sigue la Pi en el arranque. Y es que es el chip  gráfico el primero que arranca cargando los datos de aquí a la memoria de la CPU y arrancándola para que continúe ejecutando este arranque y tome el control.

Ahora conecta el disco USB si es que aún no lo has hecho (lo llamaré disco a partir de ahora)
Comprueba que lo ha reconocido:


pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 006: ID 8644:800b
pi@raspberrypi ~ $
Device 006 es el adaptador USB. El ID muestra un identificador único del fabricante
También comprueba que el sistema operativo ha reconocido el dispositivo (también puedes hacerlo con dmesg).
 
pi@raspberrypi ~ $ tail /var/log/messages
May 18 11:44:31 raspberrypi kernel: [   64.093866] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 18 11:44:31 raspberrypi kernel: [   64.093883] usb 1-1.3: Product: Intenso Micro Line
May 18 11:44:31 raspberrypi kernel: [   64.093898] usb 1-1.3: Manufacturer: Intenso
May 18 11:44:31 raspberrypi kernel: [   64.093912] usb 1-1.3: SerialNumber: 12390000000004E2
May 18 11:44:31 raspberrypi kernel: [   64.112228] scsi1 : usb-storage 1-1.3:1.0
May 18 11:44:32 raspberrypi kernel: [   65.113335] scsi 1:0:0:0: Direct-Access     Intenso  Micro Line       1.01 PQ: 0 ANSI: 2
May 18 11:44:32 raspberrypi kernel: [   65.114862] sd 1:0:0:0: [sda] 15669248 512-byte logical blocks: (8.02 GB/7.47 GiB)
May 18 11:44:32 raspberrypi kernel: [   65.115607] sd 1:0:0:0: [sda] Write Protect is off
May 18 11:44:32 raspberrypi kernel: [   65.126062]  sda: sda1
May 18 11:44:32 raspberrypi kernel: [   65.129907] sd 1:0:0:0: [sda] Attached SCSI removable disk
pi@raspberrypi ~ $
Si, el disco USB puede identificarse como /dev/sda.

No hay manera de saber que nombre asignará el sistema operativo al añadir discos adicionales. Si eso es lo que quieres, deberás seguir la versión extendida de este procedimiento que se encuentra a continuación de este.

Si lo que vas a usar es un solo disco USB, empieza aquí:

Crea un sistema de ficheros en el disco USB. Usa "p" para listar las particiones

pi@raspberrypi ~ $ sudo fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 8022 MB, 8022654976 bytes
94 heads, 14 sectors/track, 11906 cylinders, total 15669248 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              32    15669247     7834608    b  W95 FAT32

Command (m for help):
Hay una partición formateada para Windows. Necesitamos reformatear el disco para Linux.
Teclea "d" para borrar la(s) partición(es).
Nota
Si solo vas a usar el disco para contener la partición de Debian, adelante. Si tienes un disco grande o un disco duro USB, puedes considerar hacer una partición para Debian y otra u otras para cualquier otra cosa. Esto supera el objetivo de este artículo, pero estoy seguro de que puedes hacerte una idea.
Continuaremos con la solución simple, una partición.

Teclea "n" para crear una nueva partición (será la número 1) y usa toda la capacidad pulsando Enter en respuesta a las opciones hasta que termine.
 
Command (m for help): d
Selected partition 1

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15669247, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15669247, default 15669247):
Using default value 15669247

Command (m for help):
Ahora graba la información en el disco pulsando "w".


Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
pi@raspberrypi ~ $
Listo, así que ahora podemos formatear la partición:
 
pi@raspberrypi ~ $ sudo mke2fs -t ext4 -L rootfs /dev/sda1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=rootfs
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
490560 inodes, 1958652 blocks
97932 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2009071616
60 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

pi@raspberrypi ~ $
Y ahora deberemos montar la partición si queremos usarla y continuar con el procedimiento.
 
pi@raspberrypi ~ $ sudo mount /dev/sda1 /mnt
pi@raspberrypi ~ $
Veamos lo que por fín hemos conseguido:
 
pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          1.8G  1.4G  247M  86% /
/dev/root       1.8G  1.4G  247M  86% /
devtmpfs        235M     0  235M   0% /dev
tmpfs            49M  248K   49M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            98M     0   98M   0% /run/shm
/dev/mmcblk0p1   56M   19M   38M  34% /boot
/dev/sda1       7.4G  145M  6.9G   3% /mnt
pi@raspberrypi ~ $
Hemos hecho accesible /dev/sda1 montándolo en el directorio /mnt, así que ahora podremos usarlo.

Para copiar (calcar) los datos de la partición /dev/root al nuevo disco, podemos usar dd, pero dd hace una copia bit a bit y dado que también copia el espacio vacío de la SD, es muy, muy lento.
La mejor manera es usar rsync. Instalémosla antes:
 
pi@raspberrypi ~ $ sudo apt-get install rsync
...
pi@raspberrypi ~ $
Y pongámosla a funcionar. Aunque es mucho más rápida, aún le llevará algún tiempo crear la imagen de la partición en el disco USB. Vamos a copiar todo desde el directorio principal "/" al nuevo disco montado en el directorio /mnt (que no es ni mas ni menos que /dev/sda1).
 
pi@raspberrypi ~ $ sudo rsync -axv / /mnt
...
En mi equipo tardó cerca de 15 minutos. Aseguraté de que no se interrumpe el proceso.
Si lo deseas, puedes abrir otra sesión ssh y continuar con el procedimiento, así no tendrás que esperar a que rsync termine.

Vamos a decirle a Pi, donde encontrar los nuevos datos cuanto arranque Debian.
El fichero que necesitamos cambiar es /boot/cmdline.txt
Antes de hacerlo vamos a crear una copia de seguridad por si queremos volver a como lo teníamos en caso de encontrar algún problema. Debes ser cuidadoso, si estropeas este fichero muy seguramente conseguirás que tu Pi no arranque y deberás empezar de nuevo recargando la imagen.

sudo cp /boot/cmdline.txt /boot/cmdline.orig
El contenido de este fichero es una línea de comando muy larga y necesitamos reemplazar la referencia a la partición de la SD (root=/dev/mmcblk0p2) a la nueva partición en el disco USB (root=/dev/sda1).

Aquí puedes ver el contenido original del fichero:
 
pi@raspberrypi ~ $ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
pi@raspberrypi ~ $
Para estar seguro, hay un comando más que deberemos añadir. Durante el encendido y arranque, puede que a nuestro disco USB le lleve un poco de tiempo estar listo, algo más de lo que el sistema operativo espera. Si añadimos un retraso de 5 segundos, nuestro disco estará listo cuando se le llame.
Puede que no lo necesites o que con un valor inferior sea suficiente, tu sabrás cuan rápido es tu disco. Cuando mi sistema remoto tiene que reiniciarse, quiero estar seguro de que nada falla, unos pocos segundos de más no importan.

Con tu editor favorito, añade estos dos cambios. Yo usaré nano:
 
sudo nano /boot/cmdline.txt

Deberemos dejarlo como este:
 
pi@raspberrypi ~ $ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait rootdelay=5
pi@raspberrypi ~ $
A continuación tenemos que hacer algunos cambios en fichero /etc/fstab que es la tabla de sistemas de ficheros que se montarán (OJO, en el disco USB, no en la SD).
 
sudo nano /mnt/etc/fstab
Añade la siguiente línea:
     /dev/sda1    /   ext4    defaults,noatime  0       1

Y marca la línea que hace referencia a la SD como un comentario con una almohadilla ("#"):
#/dev/mmcblk0p2  /               ext4    defaults,noatime       0       1

Debería quedarnos algo así:
 
proc            /proc           proc    defaults          0       0
/dev/sda1       /               ext4    defaults,noatime  0       1
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

Esto es todo para la versión sencilla del procedimiento, ahora ya puedes reiniciar el sistema:
sudo reboot
Observa que ahora ya no verás mucha actividad en el LED ACT. Este LED solo indica la actividad de lectura y escritura sobre la SD.
Una vez que el Pi ha arrancado, comprueba el sistema de ficheros:
 
pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          7.4G  1.6G  5.5G  22% /
/dev/root       7.4G  1.6G  5.5G  22% /
devtmpfs        235M     0  235M   0% /dev
tmpfs            49M  248K   49M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            98M     0   98M   0% /run/shm
/dev/mmcblk0p1   56M   19M   38M  34% /boot
pi@raspberrypi ~ $
Ahora la raíz "/" está en la partición del disco, fíjate en el tamaño de 7,5 Gigas.




Cambiando el tamaño de la partición SWAP

¿Queréis que siga traduciendo? ¿Os ha quedado claro hasta aquí?

No hay necesidad de enredarse  con las particiones swap en la Pi, están implementadas dirente a otros Linux. Raspbian usa dphys-swapfile, que es un sistema de de swap basado en fichero en vez de en particiones que es lo estandar en otras distribuciones. También resulta más facil cambiar su  tamaño sin tener que reparticionar el disco
There is no need to mess with swap partitions on the Pi, this is implemented differently from other Linux systems. Raspbian uses dphys-swapfile, which is a swap-file based solution instead of the "standard" swap-partition solution. It is also much easier to change the size of the swap.

Si necesitas cambiar el tamaño, hazlo así:
If you need to change the swap file size, proceed as follows:

Busca primero los datos de swap usando el comando:
Look at the swap data first by using the top command:
pi@raspberrypi ~ $ top
top - 13:28:20 up 3 min,  1 user,  load average: 0.18, 0.37, 0.18
Tasks:  66 total,   1 running,  65 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.0 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:    497544 total,    55700 used,   441844 free,     5432 buffers
KiB Swap:   102396 total,        0 used,   102396 free,    27592 cached

102396 is 100MB of swap space

El fichero de configuración es: /etc/dphys.swapfile
The configuration file for the swap space is: /etc/dphys-swapfile

Su contenido es muy sencillo. Por defecto Raspbian tiene 100MB de espacio swap.
The content is very simple. By default Raspbian has 100MB of swap space:
 
pi@raspberrypi ~ $ cat /etc/dphys-swapfile
CONF_SWAPSIZE=100
pi@raspberrypi ~ $
Si quieres cambiar su tamaño, necesitas modificar el número y redimensionar y reiniciar  el servicio (demónio en linux) dphys-swapfile:
If you want to change the size, you need to modify the number and then resize and restart the dphys-swapfile:

 
pi@raspberrypi ~ $ sudo nano /etc/dphys-swapfile
pi@raspberrypi ~ $
Yo cambié el tamaño de 100 a 512MB, el tamaño total de mi RAM.
Despues de cambiar el tamaño en el ficherro ejecuta:
I changed the size from 100 MB to 512MB, the full amount of RAM.
After the parameter in the file has been changed run:
 
pi@raspberrypi ~ $ sudo dphys-swapfile setup
want /var/swap=512MByte, checking existing: deleting wrong size file (104857600), generating  swapfile ... of 512MBytes
pi@raspberrypi ~ $
Para cargar el nuevo tamaño, necesitamos parar el proceso swapfile:
To load the new size, we need to stop the swapfile process:
 
pi@raspberrypi ~ $ sudo /etc/init.d/dphys-swapfile stop
Stopping dphys-swapfile swapfile setup ..., done.
pi@raspberrypi ~ $
Y volverlo a iniciar:
And restart it:
 
pi@raspberrypi ~ $ sudo /etc/init.d/dphys-swapfile start
Starting dphys-swapfile swapfile setup ...
want /var/swap=512MByte, checking existing: keeping it
done.
pi@raspberrypi ~ $
Y ahora podemos volver a ver y comprobar que los cambios con top:
And now we can check it again with top:
 
top - 13:37:22 up 12 min,  1 user,  load average: 0.01, 0.08, 0.12
Tasks:  64 total,   1 running,  63 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    497544 total,    57016 used,   440528 free,     5556 buffers
KiB Swap:   524284 total,        0 used,   524284 free,    28604 cached
Hecho!
Ahora que todo funciona en el disco USB, es hora de actualizar Debian (mejor dicho Raspbian ;)):
Done!
Now that you have everything running on the USB stick, it's time to update and upgrade Debian:
 
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get autoremove
Y ya está...
And off you go...

Deshaciendo el camino, volver a usar la tarjeta SD.
Si alguna vez tienes problemas arrancando desde el disco USB, pueder volver a la configuración original del fichero /boot/cmdline.txt poniendo la tarjeta en otro pc, usando el explorador de ficheros para copiar el actual con otro nombre (por ejemplo: /boot/cmdline.usb) y copiando el fichero que guardamos en los pasos anteriores: /boot/cmdline.orgi a /boot/cmdline.txt (atención, cópialo, así tendrás siempre un original y asegurate de que a la copia la renombras como cmdline.txt y windows no hace una de las suyas llamándolo cmdline.txt.txt)
Si tu sistema aún arranca con el disco USB, tambíén puedes montar la partición de arranque de la SD y hacer los cambios desde Debian.
Changing the process back to the SD card
If you ever run into problems booting from the USB stick, you can try to move the original /boot/cmdline.txt back by putting the SD card back into your PC, and use the Filemanager to copy the file /boot/cmdline.txt to something else (/boot/cmdline.usb) and copy the name of /boot/cmdline.orig to /boot/cmdline.txt. (watch out: do not use rename, because Windows may rename the file called cmdline.txt to cmdline.txt.txt !)
If your system still works with the USB stick, you can also mount the windows partition on the SD card and make the changes to the cmdline files from within Debian.

De todas formas, recuerda que hemos modificado el fichero /etc/fstab en la SD y luego movido al disco USB. Necesitamos devolverlo a su estado original  antes de  reiniciar con la SD.
Si seguiste el procedimiento anterior, haz lo siguiente:
Before you do that however, remember that we modified the /etc/fstab file on the SD card and then moved it to the USB stick. We need to change the contends back on the SD card to the original settings before we can easily change the filesystem back to the SD card.
If you followed the procedure above, do the following:
 
pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          7.4G  2.5G  4.6G  36% /
/dev/root       7.4G  2.5G  4.6G  36% /
devtmpfs        235M     0  235M   0% /dev
tmpfs            49M  240K   49M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            98M     0   98M   0% /run/shm
/dev/mmcblk0p1   56M   19M   38M  33% /boot
Usa el nombre del dispositivo sin la partición (mmcblk0 sin p1)
Use the device name without the partition (p1)
 
pi@raspberrypi ~ $ sudo fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 4035 MB, 4035969024 bytes
4 heads, 16 sectors/track, 123168 cylinders, total 7882752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014d34

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     7882751     3879936   83  Linux

Command (m for help): q
Ahora que sabemos cual es la partición de Linux, podemos montarla.
So now that we know what the Linux file system partition is (p2), we can mount it.
 
pi@raspberrypi ~ $ sudo mount /dev/mmcblk0p2 /mnt
Y comprobarlo
And check it
 
pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          7.4G  2.5G  4.6G  36% /
/dev/root       7.4G  2.5G  4.6G  36% /
devtmpfs        235M     0  235M   0% /dev
tmpfs            49M  240K   49M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            98M     0   98M   0% /run/shm
/dev/mmcblk0p1   56M   19M   38M  33% /boot
/dev/mmcblk0p2  3.7G  1.7G  1.9G  47% /mnt
Vale, ahora podemos editar el fichero fstab de la SD para que aparezca de nuevo como la original.
OK, now we can edit the fstab file on the SD card so it looks like the original version again.
 
pi@raspberrypi ~ $ sudo nano /mnt/etc/fstab
Guardamos y comprobamos.
And check it.
 
pi@raspberrypi ~ $ sudo cat /mnt/etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that
#filesystem on USB stick

pi@raspberrypi ~ $

Con un poco de suerte, simplemente haciendo una copia del fichero /boot/cmdline apropiado de la SD deberías ser capaz de arrancar desde la SD o desde el disco USB, si no, hay suficiente información aquí para ayudarte, espero ;)
With a bit of luck, by just doing a copy of the right /boot/cmdline version on the Windows partition of the SD card, you will be able to change the booting process from the SD card. If not, there is enough information in this procedure to help you out I hope. ;)


Procedimiento extendido (¿?) JUGANDO A SER UNOS PROFESIONALES
Como necesitamos forzar a Debian a que arranque del disco USB correcto en el caso de tener conectados varios discos, necesitamos asignarles un identificador único antes que fiarnos de los nombres que el sistema les dá cómo /dev/sda o /dev/sdb.

Extended procedure:
Because we must force Debian to boot from the right USB device, we need to assign unique identifiers for the partition and the filesystem, rather than the names the system gives to the USB devices, like /dev/sda.

Asumo que después de leer lo anterior nos podemos poner un poco mas ¿tersos? (jajajaja, digamos serios, profesionales, arremangarnos, echarnos la manta a la cabeza, echar "pá lante" o como queráis).
En vez de usar la utilidad normal de fdisk, usaremos una versión más moderna: gdisk
Podemos instalarla con:
I'm assuming that after reading the above, we can be a little more terse.
Instead of using the standard fdisk command, we will use the more modern version gdisk.
We can install gdisk with:
 
sudo apt-get install gdisk
Empezamos a particionar con:
We start the partitioning with:
 
sudo gdisk /dev/sda
Y usamos la misma secuencia que con fdisk. Primero "d" para borrar, luego "n" para nueva y "w" para escribir. De nuevo aceptamos los parametros por defecto. Si quieres más particiones, este es el momento.
And we actually use the same sequence as with fdisk. First "d" for delete, then "n" for new and "w" to write it all out. Again use the defaults by hitting return. If you want more partitions, now is the time.

Cuando usas el comando "i" (de información), puedes ver los siguientes detalles:
When you use the "i" command (information), you can see the following details:
 
pi@raspberrypi ~ $ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): i
Using 1
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: 2C7FD5E5-5CC4-434C-BFF6-F45336F7140B
First sector: 2048 (at 1024.0 KiB)
Last sector: 15669214 (at 7.5 GiB)
Partition size: 15667167 sectors (7.5 GiB)
Attribute flags: 0000000000000000
Partition name: 'Linux filesystem'

Command (? for help):

Eso es lo que necesitamos: Partition unique GUID: 2C7FD5E5-5CC4-434C-BFF6-F45336F7140B
Esta información (PARTUUID)  se debe poner en el fichero /boot/cmdline.txt like para que quede así:
And this is what we need: Partition unique GUID: 2C7FD5E5-5CC4-434C-BFF6-F45336F7140B
This information (PARTUUID) goes into the /boot/cmdline.txt like so:
 
pi@raspberrypi ~ $ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=PARTUUID=2C7FD5E5-5CC4-434C-BFF6-F45336F7140B rootfstype=ext4 elevator=deadline rootwait rootdelay=5
pi@raspberrypi ~ $
¡No olvides poner el rootdelay! (algunos discos, especialmente los clasicos discos duros tardan unos segundos en estar listos para su uso después de proveerles de alimentación)
Don't forget to add the rootdelay!

Ahora continuamos con el formateo, montaje, instalación de rsync y duplicado:
We now continue with formatting, mounting, installing rsync and the mirroring:
 
sudo mke2fs -t ext4 -L rootfs /dev/sda1
sudo mount /dev/sda1 /mnt
sudo apt-get install rsync
sudo rsync -axv / /mnt
Ahora obtenemos el identificador único para el fichero fstab de la inforamación del disco:
Now we need to get a unique identifier for the fstab drive information:
 
pi@raspberrypi ~ $ sudo tune2fs -l /dev/sda1
tune2fs 1.42.5 (29-Jul-2012)
Filesystem volume name:   rootfs
Last mounted on:          /
Filesystem UUID:          3d2cb3c9-7e2b-4255-ac63-863bd3ad7993
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
...
pi@raspberrypi ~ $
Ahí esta lo que necesitamos:  Filesystem UUID: 3d2cb3c9-7e2b-4255-ac63-863bd3ad7993
And this is what we need: Filesystem UUID: 3d2cb3c9-7e2b-4255-ac63-863bd3ad7993

El siguienta paso es añadir esta información en el fichero con la lista de particiones que se monotarán cuando arranquemos de este disco, así que modificaremos el fichero /etc/fstab que está en el disco USB. Añade la siguiente línea:
Next we can enter the information into the filesystem table, /etc/fstab (on the stick, not the SD card). Add the following line:
 
/dev/disk/by-uuid/3d2cb3c9-7e2b-4255-ac63-863bd3ad7993    /   ext4    defaults,noatime  0       1
Y pon un comentario delante de la linea que se refería a la partición de la SD:
And put a comment in front of the reference on the SD card:
 
#/dev/mmcblk0p2  /               ext4    defaults,noatime       0       1
Y ya está. Si has revisado todos los cambios (no confiundas el identificador único de la partición o GUID con el identificador único del sistema de ficheros.
And that's it. If you are done checking everything (don't mix up the partition GUID and the filesystem UUID!!!) , you can reboot now and check if all is well.
A divertitse
Have fun! :)

martes, 21 de mayo de 2013

RASPBERRY PI - MI SERVIDOR VPN

RASPBERRY PI - MI SERVIDOR VPN

El propósito de esta entrada será la traducción de este artículo
http://www.superfecta.ca/?p=59
Bueno, más bien traducir y comentar los resultados de intentar aplicar lo que aprenda acerca de como instalar openvpn y n2n. Hay ciertos aspectos sobre el manejo de los certificados que tengo que pulir hasta dominarlos y así no hacer una gran chapuza a la hora de configurar openvpn. 
La vpn con n2n parece atractiva, lo malo es la debilidad de su seguridad pues se basa en una simple contraseña.
Para los que no se quieran liar mucho a la hora de montar una vpn en casa les recomiendo echar un vistazo al esplendido trabajo realizado por neorouter.com que ofrece una versión gratuita de su producto pero con alguna limitación.

Aunque aún no haya traducido nada os he dado unas buenas pistas de por donde empezar.

martes, 26 de marzo de 2013

Rapberry Pi: Grabar y emitir TV


He visto en http://misapuntesde.com/post.php?id=108 el siguiente artículo:
En esta revista nos enseñan varios trucos, aplicaciones y como hacer stream y grabar canales de TV a través de nuestra Raspberry Pi. También nos enseña varias distribuciones para elegir la que más nos guste.

PD: Animo a la gente que pueda, compre la revista o mejor se suscriba a ella.
Descarga: Artículo Linux Format UK Abril 2013 https://jumpshare.com/b/Ex4hAsWYhdYlbEQulCL3
Suscripción: Linux Format UK http://www.myfavouritemagazines.co.uk/content/lp/linuxformat/

y he decidido intentar traducirlo, aquí os lo dejo:
(Ojo, traducción libre, a mi manera, aún no lo he probado)

Después de años batallando con MythTV, Graham Morrison ha descubierto, gracias a Tvheadend, una solución mucho mejor.


   Muchos de esos cacharritos que tenemos bajo los televisores ya utilizan Linux. Y a pesar de su poca potencia son mas que capaces de grabar y reproducir muchos canales al mismo tiempo, como también son capaces de emitir su contenido usando nuestra red local. Nuestro Raspberry Pi está perfectamente capacitado para hacerlo también, y con el hardware apropiado puede convertirse en un potente y barato grabador dotado de posibilidad de emisión en streaming, programación y pausa inteligente (time shift).
   El elejir bien el hardware es la clave en lo dicho y nos ahorrará mas de un quebradero de cabeza. Afortunadamente, el kernel de Linux soporta muchos de estos dispositivos que funcionarán sin modificarlo. Hemos dividido el tutorial en 10 pasos, de manera que las instrucciones seán lo más claro posible ypodamos seguirlas fácilmente. Al final de este proyecto, se encontrará con una potente plataforma capaz de grabar múltiples programas de varias fuentes, todo ello desde nuestro humilde Raspberry Pi, el perfecto complemento para nuestro recién estrenado XBMC al que podremos acceder desde cualquier equipo conectado a nuestra red.

Nuestro hardware

  Se han probado y configurado dos receptores USB, uno para TDT (dvb-t) y otro para satélite (dvb-s). Hemos incluido instrucciones para ambos. Para la recepción TDT hemos usado el Sundtek Sky TV Ultimate, la  última versión incluye un adaptador de 12 voltios que debemos conectar. Pero hay un dispositivo muy importante para conectarlos a nuestra Raspberry Pi, deben conectarse a través de un hub USB: Perdimos dos días intentando configurar el sistema, primero sin un hub USB y después con otro incompatible. En ambos casos todo parecía ir bien, sin embargo eran incapaces de sintonizar canal alguno. Después de cambiar a un hub USB de los que tienen un alimentador de corriente, conseguimos solventarlo así que debemos poner énfasis en este punto. (comentario propio) Si este hub alimentado tiene la suficiente potencia (recomiendo uno de 2 amperios o más, yo lo encontré) podremos utilizarlo para alimentar, no solo a los receptores USB, también al R-Pi. Mi sistema quedó algo así:


R-Pi------------- Hub alimentado ------------ receptor USB ---- antena (no te olvides de ella)
 |________________|              |
                                           Alimentador ---- (enchufe, por supuesto :) )

Almacenamiento externo

   Asumimos que dispones de tu R-pi  con la distribución Raspbian instalada y actualizada. También asumimos que esta conectado a Internet y que tecleas los comandos directamente es su consola o a través de una sesión SSH. Nuestra siguiente consideración es donde guardar las grabaciones. Recomendamos usar un disco duro USB externo para no agotar las capacidades de lectura/escritura de la tarjeta SD, tanto en espacio como los ciclos soportados por estos dispositivos y que al paercer son finitos. Simplemente conéctalo a un puerto libre USB y comprueba que está ahí echando un vistazo a los log del sistema ejecutando la orden tail /var/log/messages . Verás una linea similar a esto "usb-1-1.3.4.2:New USB device", fíjate en el identificador del dispositivo que será algo así como sda:sda1. sda es el disco en sí y sda1 la partición. Tecléa  sudo mkdir /mnt/storage para crear un punto de montaje y sudo mount /dev/sda1 /mnt/storage/ para conectar a tu dispositivo externo.

Instalar los controladores

   Dependiendo del sintonizador que estés usando, este paso puede no ser necesario. Si tu dispositivo es compatible con Linux y no requiere de drivers adicionales, entonces solo necesitas conectarlo y pasar al punto siguiente. Para nuestro adaptador Sundtek, necesitamos descargar e instalar el controlador. Es fácil, teclea:
wget http://www.sundtek.de/media/sundtek_netinst.sh
chmod 777 sindtek_netinst.sh
sudo ./sundtek_netinst.sh
   La última línea ejecutará el script que descargaste en la primera. Detectará el sistema que estas usando e instalará la última versión de los drivers. Los controladores quedarán configurados y funcionando en el arranque. Los usuarios con la versión terrestre (TDT o DVB-T)  necesitarán ejecutar este comando:
/opt/bin/mediaclient --setdtvmode=DVBT
   Con ello nos aseguramos de que se configure para la recepción de TDT en vez de por cable, de lo que también es capaz.

Instalar Tvheadend

   El software o programa que vamos a usar para grabar y emitir la señal de televisión digital se llama Tvheadend. Hay un plugin para la última versión XBMC que convertirá este sorprendente media player en un completo grabador con Tvheadend haciendo el trabajo en la sala de máquinas de nuestro R-pi. Tvheadend esta constantemente cambiando así que aquí hemos usado la versión en desarrollo pero si quieres omitir este paso, siempre puedes usar la distribución OpenElec en vez de Raspbian. Afortunadamente podemos compilarlo facilmente. Primero instala las herramientas de desarrollo y DVB:
sudo apt-get update
sudo apt-get install unzip libcurl4-openssl-dev pkg-config git build-essential dvb-apps gcc-4.7
   El último paso es descargar la última versión de Tvheadend desde el repositorio del proyecto usando git y compilarlo con la ayuda de  ./configure make y sudo make install
CC=gcc-4.7 ./configure; make; sudo make install


Configurando Tvheadend

La interfaz de usuario de Tvheadend es accesible a través de un navegador web, pero primero es necesario iniciarlo. Como es la primera vez, ejecutaremos el servicio en modo configuración y como todo demonio, lo cual significa que se ejecutará en sengundo plano. Para hacer esto teclea:
tvheadend -C -d
Ahora abre tu navegador, preferiblemente desde otra máguina en la red y vete a la siguiente dirección: http://ip_del_Rpi:9981/extjs.html. donde ip_del_Rpi es la dirección IP de tu Raspberry la cual podemos conocer ejecutando el comando ifconfig. El navegador mostrará la interfaz predeterminada de Tvheadend. Aquí es donde puedes ver todos lo datos del programa y ver y configurar grabaciones. Necesitamos decirle como usar el sintonizador que hemos conectado. Haz click en Configuration > TV Adapters y selecciona tu dispositivo de la lista. El siguiente paso dependerá de si estas sintonizando una señal satélite o terrestre, vamos a separarlo en los siguientes pasos. Para la recepción terrestre sáltate el siguiente paso.


Recepción por satélite

 (no me preguntes sobre esto pues no tengo practicamente ni idea ni dispongo de tal adaptador, si hay algún amable lector que me pueda corregir, será de agradecer por todos los lectores)

La recepción por satélite es la más sencilla de configurar. Con el adaptador selecionado, la página General mostrará un resumen de la configuración. Primero marque la casilla Enable seguido de Save para guardar el cambio. Queremos añadir alguna información de canal, esto se hace  buscando el satélite y los multiplexores de los que dispone y después buscando los canales que podemos recibir a través de estos multiplexores. Tvheadend incluye los datos para la localización de satélites, así que simplemente necesitas hacer click en Add DVB Network by location (botón que esta a la izquierda). Esto nos abrirá una ventana conteniendo una lista de satélites. Para el Reino Unido y norte de Europa , la mejor opción es Astra_28_2E.
Después de seleccionar el satélite. Tvheadend añadira una lista de multiplexores asiciados. Estos serán ahora escaneados en busca de canales, proceso del cual puedes ver su progreso en la sección Capabilities que está a la derecha de la página General. Si todo funciona bien, podremos ver una lista de servicios (canales) detectados y añadidos en la página Services. Para el Astra_28_2E hemos detectado 970 servicios de 98 muxores. A menos que también quieras configurar el sistema también para la recepción terrestre, sáltate el punto siguiente.



Recepción terrestre (TDT o DVB-T)

(Mi receptor con chip Afatech está pidiendo a gritos que lo pruebe, cuando lo haga os lo comento, mientras tanto disculpad si no respondo a las preguntas)

Primero, habilita el receptor en la página general. El programa (estoy harto de escribir Tvheadend) incluye una amplia lista de transmisores preconfigurados con los detalles de cada multiplexor. Necesitas conocer a que centro emisor está apuntando la antena tu antena. En el Reino Unido el  mejor modo de saber dónde están y cuál es el mejor para cada zona en consultando los datos de digitaluk.co.uk donde podemos encontrar los centros emisores (ejemplo para londres: http://www.digitaluk.co.uk/coveragechecker/main/display/alternative/E1+6PX/NA/0 ) y los canales que emiten desde ellos (ej.: http://www.digitaluk.co.uk/coveragechecker/main/display/detailed/E1+6PX/NA/0 ). En nuestro caso deberemos añadirlos manualmente en la pestaña Multiplexes del adaptador, haciendo clic en Add mux(es). En la ventana que aparecerá deberemos indicar la frecuencia, el ancho de banda (8mhz en España) y la "constellation" (¿?) de cada multiplexor dejando el resto de opciones en Auto. Deberás repetir el proceso por cada multiplexor que emita en tu zona. Tvheadend escaneará estas frecuencias para encontrar los canales que emitan cada multiplexor y añadirlas a la configuración.


Añadiendo canales 

Con suerte habrás conseguido una buena lista de servicios extraídos de los multiplexores. El siguiente paso es permitir a Tvheadend que adivine los canales de TV. Nos vamos a la pestaña General haciendo clic en el botón "Map DVB Services to Channels". Con suerte obtendrás una lista de canalaes que aparecerán en la página de canales. Deberemos cambiar el lugar predeterminado en donde se guardarán las grabaciones en la página "Digital Video Recorder", modificando la ruta en "Recording system path" y guardar los cambios para que tengan efecto. También tendermos que configurar la EPG (guía electrónica de programas) Algunos canales nos permiten saber lo que se está emitiendo ahora y otras nos dan mucha más información (varios días). Podemos habilitarlo seleccionando cada servicio de la sección "Over the Air Grabbers" en la página "EPG Grabbers. No olvides guardar los cambios ("Save Configuration").


Grabar un programa

Después de un rato notarás que la página de la Guía Electrónica de Programas (EPG) comienza a rellenarse sola con la programación de los canales que puedes ver o grabar. Haciendo clic en cualquier programa se abrirá otra ventana permitiéndote programar su grabación. Una segunda opción llamada Autorec es aún más interesante. Se establece una búsqueda basada en los datos del programa de manera que puedas programar la grabación de series completas.


Dependiendo del número de canales y la cantidad de información de la EPG, la lista se puede alargar enormemente. Para solventarlo, puedes filtrar la información a mostrar usando las opciones de columnas que están en la parte superior de la lista. Puedes buscar una cadena de texto en el título del programa o restringirlo a un canal. Con Create Aurorec puedes decirle que grabe todo lo que se ajuste a un filtro dado. Para eliminar una programación, haz clic en la pestaña Digital Video Recorder. Las grabaciones programadas pueden anularse en la primera página, las que están basadas en filtros en la última y en la del medio aparecerán las grabaciones ya realizadas para que desde ahí puedas visualizarlas, borrarlas o ver por qué no ha sido posible realizarlas.




Ver los programas grabados y la tele en directo

Si instalas el plugin de VLC en tu navegador, puedes ver los programas grabados y los canales en directo en tu navegador. Solo hemos probado esto con Firefox, pero cuando haces click en un programa que esta siendo emitido, tienes la opción de reproducirlo (PLAY). Si no está instlado el plugin de VLC, se te preguntará si quieres instalarlo. Con el plugin instalado aparecerá una ventana en el navegador, con los controles que están sobre la ventana puedes verlo en pantalla completa o pausar la reproducción. De igual manera puedes ver los programas que has grabado en la página "Digital Video Recorder". Si no quieres usar el navegador, copia la url del enlace para decirle al VLC que la abra directamente en esa u otra máquina conectada a la red. Sin embargo, en nuestra opinión, la mejor manera de aprovechar nuetro Tvheadend es usando la nueva versión de XBMC. Esta, incluye un plugin que puede hablar directamente con el, descargando la guía EPG desde tu Rasberry Pi, permitiéndote ver canales y grabaciones y  programar esa grabación de tu programa favorito. Es fácil instalarlo. Visita la página del plugin PVR de XBMC.
A continuación en este estupendo artículo nos dicen que se han impuesto como taréa, para el ejemplar del mes siguiente, cubrir XBMC con 'plenitud de detalle'.


Escritorio remoto con Raspberry Pi (fácil)

Meiante vnc podemos conectarnos al escritorio remoto de nuestro raspberry pi sin tener que conectar monitor, teclado o ratón

Podemos habilitarlo instalando el paquete thightvnc
sudo apt-get install tightvncserver           


A continuación arrancamos el servidor. Por ser la primera vez se nos pedirá la contraseña para poder conectarnos

tightvncserver

y si queremos crear una contraseña que solo permita visualizar la pantalla sin permiso para poder interactuar. En mi caso digo que no quiero crearla.

Would you like to enter a view-only password (y/n)? n
New 'X' desktop is raspberrypi:1
Creating default startup script .vnc/xstartup
Starting applications specified in .vnc/xstartup
Log file is .vnc/raspberrypi:1.log


Listo, basta con descargarnos nuestro cliente VNC preferido en nuestro pc y conectar con el raspberry pi, solo necesitamos la dirección ip del raspberrypi y el "desktop" que nos ha creado (por ejemplo 192.168.1.51:1)