Archivo

Entradas Etiquetadas ‘raspberry pi’

Instalar rtorrent + rutorrent en Debian

viernes, 8 de agosto de 2014 Sin comentarios

Rtorrent es un cliente bittorrent por terminal disponible en los repositorios de varias distribuciones de linux, mientras que rutorrent es una aplicación web que se conecta a rtorrent para que se puedan manejar vía navegador los torrents.

image

La versión de los repositorios no cuenta con soporte para ser controlado remotamente, por lo que es necesario descargar el código fuente de rtorrent, libtorrent y xmlrpc-c para compilarlos manualmente y luego instalarlos.

Antes de comenzar debes instalar los programas requeridos para compilar

apt-get install gcc pkg-config libssl-dev g++ make libncurses5-dev libsigc++-2.0-dev libcurl4-openssl-dev subversion screen nano

Primero debes compilar XMLRPC-C

svn co http://svn.code.sf.net/p/xmlrpc-c/code/advanced xmlrpc-c
cd xmlrpc-c
./configure
make
make install

Luego libtorrent

wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.13.3.tar.gz
tar zxvf libtorrent-0.13.3.tar.gz
cd libtorrent-0.13.3
./configure
make
make install

Posteriormente rtorrent, el que se instalará con soporte de xmlrpc-c compilado anteriormente

wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.3.tar.gz
tar zxvf rtorrent-0.9.3.tar.gz
cd rtorrent-0.9.3
./configure –with-xmlrpc-c
make
make install
ldconfig

Ahora se debe configurar rtorrent, crearemos un usuario y las carpetas requeridas

useradd torrent
mkdir –p /home/torrent/rtorrent/{.session,download}
cp rtorrent-0.9.3/doc/rtorrent.rc /home/torrent/.rtorrent.rc
chown –R torrent:torrent /home/torrent/rtorrent

Luego debes editar la configuración

nano /home/torrent/.rtorrent.rc

Y cambiar

directory = /home/torrent/rtorrent/download
session = /home/torrent/rtorrent/.session
scgi_port = localhost:5000

Como servidor web usaré nginx en lugar de apache, por ocupar menos recursos, lo que es más apropiado para el Raspberry PI.

apt-get install nginx php5-fpm apache2-utils

(apache2-utils es para el comando htpasswd mencionado más adelante, no incluye el servidor web)

mkdir /var/www
cd
wget http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz
wget http://dl.bintray.com/novik65/generic/plugins-3.6.tar.gz
tar xvf rutorrent-3.6.tar.gz -C /var/www
tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
chown www-data:www-data -R /var/www/rutorrent
tar xvf rutorrent-3.6.tar.gz -C /var/www
tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
htpasswd -c /var/www/rutorrent/.htpasswd (nombreusuario)
chown www-data:www-data -R /var/www
nano /etc/nginx/sites-available/default

Donde dice nombreusuario reemplaza por el nombre de usuario deseado para ingresar a rutorrent, luego introduce dos veces una contraseña.

En el archivo default edita lo siguiente

root /var/www;
index index.php index.html index.htm;

Descomenta las líneas para activar PHP

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini

        # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Luego de estas líneas agregar

location /RPC2 {
        include scgi_params;
        scgi_pass 127.0.0.1:5000;
}

location /rutorrent {
        auth_basic «Restricted»;
        auth_basic_user_file /var/www/rutorrent/.htpasswd;
}

Si deseas activar HTTPS repite los pasos anteriores en la sección “server { listen 443; …”

Reinicia los servicios

service nginx restart
service php5-fpm restart

Finalmente debes ajustar unos parámetros de la configuración de rutorrent

nano /var/www/rutorrent/conf/config.php

Edita las siguientes líneas para especificar las rutas de curl y stat

«curl» ==> ‘/usr/bin/curl’, // Something like /usr/bin/curl. If empty, will be found in PATH.
«stat» ==> ‘/usr/bin/stat’, // Something like /usr/bin/stat. If empty, will be found in PATH.

Si ingresas a rutorrent aparecerá que no se pudo conectar a rtorrent, porque aún no se ha iniciado. Para iniciarlo inicia sesión como torrent, corre el comando screen y luego rtorrent. El comando screen permitirá cerrar la terminal y dejar rtorrent ejecutándose en segundo plano.

Fuentes:

rtorrent + rutorrent con nginx: http://vassie.me/rtorrent-and-rutorrent-on-ubuntu-server-with-nginx/

rtorrent + rutorrent con apache: http://www.adminsehow.com/2013/11/installing-rtorrentrutorrent-on-debian-7-wheezy/

Permission Denied al montar cifs en Linux Raspberry PI

viernes, 8 de agosto de 2014 1 comentario

Al montar una unidad cifs en el Raspberry PI me salía el error “mount error(13): Permission denied”, siendo que la carpeta compartida no requería autenticación y al ingresar desde un computador lo hacía directamente sin solicitar identificación. La unidad compartida era el puerto USB de un router Dlink DIR-626L (alias rollo de papel confort).

root@mastodon:~# mount.cifs //IP/usb_A1 /mnt -o guest
mount error(13): Permission denied

Al consultar el registro dmesg aparecía esto referente al error de montaje:

[47912.021716] CIFS VFS: cifs_mount failed w/return code = –13

Luego de una búsqueda por internet hallé que era un bug en el proceso de autenticación, el que se resuelve especificando que realice la autenticación por NTLM con el siguiente comando:

mount.cifs //IP/usb_A1 /mnt -o guest,sec=ntlm

Con esto el montaje se realizó correctamente, se puede comprobar al consultar con el comando mount

root@mastodon:~# mount
/dev/root on / type ext4 (rw,noatime,data=ordered)
(…)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
//IP/usb_A1 on /mnt type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,uid=0,noforceuid,gid=0,noforcegid,addr=IP,unix,posixpaths,…)

Para que se monte automáticamente al inicio del sistema agregué esta línea al archivo /etc/fstab

//IP/usb_A1   /mnt    cifs    guest,sec=ntlm,file_mode=0777,dir_mode=0777     0 0

Además del parámetro sec=ntlm agregué los parámetros file_mode y dir_mode para que todos los archivos y carpetas tengan permisos 777.

Agregar soporte MPEG2 al Raspberry Pi

sábado, 28 de diciembre de 2013 3 comentarios

El Raspberry Pi cuenta con aceleración por hardware para varios codecs de video, como H264, VP6, VP8, entre otros. Gracias a esto se puede reproducir videos HD 1080p de forma fluida a pesar de que sólo cuenta con una CPU de 700mhz y 512 MB de RAM.

Por defecto el Raspberry cuenta con el soporte para los codecs MPEG2 y VC1, pero están deshabilitados por defecto ya que deben adquirirse por separado. Esto para disminuir el costo del Raspberry ya que sólo sirven si se va a utilizar para reproducir video.

¿Para que sirve el códec MPEG2?

Principalmente si se van a reproducir DVD’s de video (o los archivos .vob extraídos de ellos) y algunos videos descargados de Internet. Sin el códec al tratar de reproducir un DVD o un archivo codificado con este códec tratará de reproducirse por software en lugar de hardware, que por las características que tiene del Raspberry no será posible, lo que en  XBMC hará que sólo se escuche el audio sin video.

image

¿Como adquirir el códec?

Primero debes obtener el número de serie de la CPU, el código de activación está asocuado a este número.

Para obtenerlo debes entrar por SSH o terminal al Raspberry y ejecutar el comando “cat /proc/cpuinfo”

image

La última línea “Serial: 000000008b6a6de4” contiene la serial de la CPU.

Posteriormente debes visitar http://www.raspberrypi.com/mpeg-2-license-key/, ahí debes ingresar el serial completo obtenido en el paso anterior incluyendo los ceros y poner “Add to cart”, luego debes completar el pago con Paypal.

Una vez confirmado recibirás inmediatamente un email de Paypal y otro del sitio, ambos indicando que el pago fue confirmado y un link de descarga a un pdf con instrucciones de cómo ingresar la licencia cuando la recibas.

Luego de unas horas (en mi caso fue despues de 3 horas aprox) recibí otro correo con la licencia

image

Ahora para ingresarla en la terminal o SSH debes poner “nano /boot/config.txt” y pega la línea “decode_MPG2=0xabcdef01”, luego guardar con CTRL+O y salir con CTRL+X.

image

Luego debes reiniciar poniendo “reboot”.

Una vez reiniciado para verificar la activación del códec puedes reproducir un DVD o un video o poner el comando “vcgencmd codec_enabled MPG2” que debe decir “enabled”

image

Para verificar el estado de todos los códecs puede ejecutar este comando:

for codec in VP8 VP6 H264 MPG2 WVC1 MPG4 MJPG WMV9 ; do echo -e «$codec:\t$(vcgencmd codec_enabled $codec)» ; done

image

Categories: Raspberry Pi Tags: ,

Compilar Kernel para Raspberry Pi

domingo, 19 de mayo de 2013 4 comentarios

Hace unos días tuve que compilar el kernel para el Raspberry Pi ya que necesitaba agregar un módulo del kernel para una impresora térmica (usblp.ko), ya que no viene incluido en raspbian.

Para que necesitas compilar el kernel?

  • Soporte dispositivos o tecnologías no incluidas en raspbian (mi caso)
  • Actualizar a nueva versión
  • Personalizar el kernel removiendo módulos o características que no son necesarias para el uso que le das al equipo.

Requerimientos

  • SD con Raspbian instalado y ejecutándose (aquí sólo compilamos el kernel, igual necesitarás el resto de la distribución).
  • Una distribución linux para compilar, aquí usé Ubuntu Server (que era la que tenía a mano xD).
  • Lector de tarjetas para modificar los archivos (reitero la necesidad de linux, ya que debes acceder a la partición ext3).
  • Un buen procesador, mientras mejor sea la compilación será más rápida.
  • 2 GB de espacio mínimo aprox (mi carpeta pesa 1819 MB, en 71418 archivos)

Proceso

  • Primero debes descargar el código fuente de Linux, aquí usaré la versión 3.6 que corresponde a la rama estable. Puedes clonar el repositorio git, pero como son muchos archivos conviene más descargar el archivo comprimido.

mkdir rpi
cd rpi
wget https://github.com/raspberrypi/linux/archive/rpi-3.6.y.tar.gz
tar xfv rpi-3.6.y.tar.gz

  • Luego debes descargar el cross-compiler, ya que estarás compilando para ARM desde x86/x64, al igual que Linux también puedes clonar el repositorio o descargar el archivo comprimido

wget https://github.com/raspberrypi/tools/archive/master.tar.gz
tar xfv master.tar.gz
apt-get install gcc-arm-linux-gnueabi make ncurses-dev

  • Ejecuta este comando para limpiar la carpeta del kernel

cd rpi-3.6.y
make rproper

  • Luego debes copiar la configuración de kernel, para eso necesitas obtener el archivo .config de un raspbian en ejecución

scp root@raspberryip:/proc/config.gz config.gz
zcat config.gz > .config

  • Debes exportar esta variable que define el path del compilador y el prefijo de los comandos.

export CCPREFIX=/home/usuario/rpi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-

  • Actualizar la configuración

make ARCH=arm CROSS_COMPILE=${CCPREFIX} oldconfig

  • Si deseas agregar o quitar características y módulos al kernel debes entrar al menú de configuración

make ARCH=arm CROSS_COMPILE=${CCPREFIX} menuconfig

  • Compilar el kernel!, esto tardará varios minutos e incluso horas

make ARCH=arm CROSS_COMPILE=${CCPREFIX}
make ARCH=arm CROSS_COMPILE=${CCPREFIX} modules

  • Ahora debes pasar el kernel a la tarjeta SD, si está en ejecución apaga el rPi e inserta la tarjeta en el lector de tu computador (aqui supondré que la SD está en /mnt/sdsys la partición ext3 del sistema y /mnt/sdboot la fat32 de booteo)

mv /mnt/sdboot/kernel.img /mnt/sdboot/kernel-original.img
cp arch/arm/boot/Image /mnt/sdboot/kernel.img

  • Ahora debes copiar los módulos, primero se pondrán todos juntos en una carpeta y luego se copiarán

mkdir /home/usuario/rpi/modules
export MODULES_TEMP=/home/usuario/rpi/modules
make ARCH=arm CROSS_COMPILE=${CCPREFIX} \
INSTALL_MOD_PATH=${MODULES_TEMP} modules_install

mv /mnt/sdsys/lib/modules /mnt/sdsys/lib/modules.old
mv /mnt/sdsys/lib/firmware /mnt/sdsys/lib/firmware.old
cp –rv /home/usuario/rpi/modules/lib/* /mnt/sdsys/lib/

  • Luego se debe actualizar el firmware, se debe descargar y copiar a la SD

cd ..   (para volver a /home/usuario/rpi)
wget https://github.com/raspberrypi/firmware/archive/next.tar.gz
tar xfv next.tar.gz
cd firmware-next
mv /mnt/sdsys/opt/vc /mnt/sdsys/opt/vc.original
cp –rv /opt/vc /mnt/sdsys/opt/
mv /mnt/sdboot/bootcode.bin /mnt/sdboot/bootcode.bin.original
mv /mnt/sdboot/fixup.dat /mnt/sdboot/fixup.dat.original
mv /mnt/sdboot/start.elf /mnt/sdboot/start.elf.original
cp boot/bootcode.bin /mnt/sdboot/
cp boot/fixup.date /mnt/sdboot/
cp boot/startr.elf /mnt/sdboot/

  • Llegó el momento de probar el nuevo kernel. Extrae la SD e insértala en el Raspberry Pi y enciéndelo. Si inicia el SO y llegas al login el kernel se compiló exitosamente.
  • Opcionalmente puedes eliminar todos los archivos que se renombraron para liberar espacio una vez que compruebes que el kernel funcionó correctamente.

Fuente: http://elinux.org/RPi_Kernel_Compilation