Archivo

Archivo del autor

Copiando archivos desde un terminal

domingo, 25 de octubre de 2015 Sin comentarios

Cuando estamos haciendo una copia de una carpeta que contiene una cantidad considerable de ficheros y queremos saber con certeza que no ha faltado ningún fichero por copiar, podemos lanzar el siguiente comando que nos mostrará el número de ficheros en la carpeta y subcarpetas del directorio indicado:

ls -R -1 ./micarpeta/ | wc -l

Para más info y posibilidades echad un vistazo en la web de Linux Comando.

Categories: GNU/Linux Tags: ,

Liberando espacio

sábado, 24 de octubre de 2015 Sin comentarios

Cuando un sistema genera una cantidad considerable de log’s y estos no están bien administrados (logrotate), puede que a la larga vayan mermando nuestro espacio en disco. Una buena forma de encontrar cuán grande es nuestro problema es realizando una búsqueda de aquellos ficheros involucrados:

find . -type f -name «*error.log» -exec du -h {} \;

El anterior comando nos mostrará el espacio ocupado por todos aquellos ficheros «error.log» que tan abundantes son en los servidores web. Y para eliminar los ficheros que nos resulten innecesarios (por ejemplo que tengan más de 60 días de antigüedad), usaremos el siguiente comando:

find . -type f -name «*error.log» -mtime +60 -delete

 

Categories: GNU/Linux Tags: , ,

Aumentar el volumen del altavoz de llamadas

jueves, 24 de septiembre de 2015 Sin comentarios

Una de las cosas que mayor incomodidad me producen al recibir una llamada, es no poder escuchar a mi interlocutor con suficiente volumen. Es por ello que, si poseemos un teléfono con Android, podemos amplificar un poco la potencia del altavoz.

A través de un explorador de archivos en modo «root» (Root Browser), accederemos al archivo «/system/etc/mixer_paths.xml» y buscaremos el parámetro «voice-handset» cuyo valor, en mi caso, era de 84 y que pude subir a 94 sin que se produjese distorsión sonora.

No es que se note notablemente pero sí lo suficiente como para dejar de estrujar el móvil contra tu oreja.

Categories: Android Tags: , ,

Problemas con la Wifi con un adaptador RTL8723BE

jueves, 16 de abril de 2015 Sin comentarios

Parece ser que existe un bug en el kernel que provoca una funcionalidad extremadamente lenta o incluso la imposibilidad de establecer conexión a través de la Wifi en ciertos equipos que utilizan el RTL8723BE.

La solución provisional es la de descargar los drivers y compilarlos con dos sencillos comandos:

$ make

$ sudo make install

Categories: GNU/Linux Tags: , ,

¿Te ha desaparecido /dev/spidev0.0?

jueves, 5 de febrero de 2015 2 comentarios

Si tienes una Raspberry Pi, has actualizado el sistema operativo y te han dejado de funcionar las cosas que tenías conectadas en el GPIO es por una sencilla razón: en el kernel 3.18 se ha activado el soporte a Device Tree.

En mi caso me había dejado de funcionar el ambilight casero que tenía y, por ejemplo, boblight me lanzaba lo siguiente por el terminal:

SPI mapped from 0x0x20204000 to 0x0x16c5000

Boblightd 2.0 (optimized version for raspberry) (c) 2013 Speedy1985 and Heven)
(InitLog) start of log /root/.boblight/boblightd.log
(PrintFlags) starting boblightd
(CConfig::LoadConfigFromFile) opening /etc/boblight.conf
(CConfig::CheckConfig) checking config lines
(CConfig::CheckConfig) config lines valid
(CConfig::BuildConfig) building config
(CConfig::BuildConfig) built config successfully
(main) starting devices
(CClientsHandler::Process) opening listening TcpSocket on 127.0.0.1:19333
(CDevice::Process) AmbiLight: starting with output «/dev/spidev0.0»
(CDevice::Process) AmbiLight: setting up
(CDeviceSPI::SetupDevice) ERROR: AmbiLight: Unable to open /dev/spidev0.0: No such file or directory
(CDevice::Process) ERROR: AmbiLight: setting up failed, retrying in 10 seconds

Y efectivamente no existía ningún /dev/spidev0.0. Indagando encontré que en algunas distros (Raspbian) el módulo spidev o spi-bcm2708 no cargaban porque estaban en el fichero «/etc/modprobe.d/raspi-blacklist.conf» y había que comentar dichas líneas. En mi caso yo no tenía ningún módulo bajo el blacklist y me cercioré que mi kernel había sido compilado con las opciones correctas:

zcat /proc/config.gz  | grep -i SPIDEV

CONFIG_BCM2708_SPIDEV=y
CONFIG_SPI_SPIDEV=y

Pero la solución a mi problema fue añadir la siguiente línea al fichero «/boot/config.txt»:

dtparam=spi=on

Reiniciar y listo.

Categories: Raspbian, Raspbmc Tags: ,

Raspberry Pi y Limelight

miércoles, 4 de febrero de 2015 Sin comentarios

Limelight es un proyecto que trata de aprovechar la tecnología de streaming de las tarjetas gráficas de Nvidia para permitir jugar desde cualquier dispositivo. Entre ese «cualquier dispositivo» también entran las Rasperry Pi y, en mi caso, con Raspbmc.

Lo primero de todo será instalar la última versión disponible de Java (la versión de Oracle) ya que Limelight es un bonito jar. Para ello modificaremos los fuentes de APT para agregar los de Debian:

sudo vi /etc/apt/sources.list

Agregaremos esta línea

deb http://archive.raspberrypi.org/debian/ wheezy main

Haremos la importación de la clave, actualizaremos e instalaremos la versión 8 de java.

wget «http://archive.raspberrypi.org/debian/raspberrypi.gpg.key»

sudo apt-key add raspberrypi.gpg.key

sudo apt-get update

sudo apt-get install oracle-java8-jdk libopus-dev

Tras esto sólo nos queda descargar la última versión de Limelight de su Github.

wget –no-check-certificate «https://github.com/irtimmer/limelight-pi/releases/download/v1.2.1/limelight.jar»

Teniendo en cuenta que necesitamos un equipo que ejecute GeForce Experience 2.2.2 o superior (a parte de necesitar una gráfica Nvidia compatible), realizaremos el emparejamiento entre ambos dispositivos con el siguiente comando.

sudo java -jar limelight.jar pair 192.168.x.x

Y ya podremos lanzar Limelight desde nuestra Raspberry. Habrá que tener en cuenta que necesitaremos cerrar Xmbc/Kobi y cargar el módulo de sonido.

service kobi stop

modprobe snd_bcm2835

sudo java -jar limelight-pi.jar  stream 192.168.x.x

Si además tenemos un mando con el que queramos jugar tendremos primero que realizar un mapeado del mismo. En primer lugar tendremos que identificar dónde está nuestro mando y si ha sido reconocido correctamente. Para tal fin podremos utilizar evtest:

sudo apt-get install evtest
sudo evtest

Una vez localizada la ruta, realizaremos el mapeado del mismo y lo almacenaremos en un fichero (en mi caso el mando estaba en /dev/input/event2 y el fichero quería que fuese ps2-1.map).

sudo java -jar limelight.jar map -input /dev/input/event2 ps2-1.map

Así que, finalmente, ejecutaremos lo siguiente:

sudo java -jar limelight.jar -mapping /home/pi/ps2-1.map stream 192.168.x.x

Una última consideración a tener en cuenta es que deberemos tener Steam cerrado antes de lanzar Limelight y que, a pesar de que el rendimiento de vídeo a través de cable de red es muy bueno, el sonido a mi me ha estado dando problemas.

Categories: Raspberry Pi, Raspbmc Tags: ,

Ejecutar Wine en un sandbox

miércoles, 4 de febrero de 2015 Sin comentarios

Cuando ejecutamos una aplicación a través de Wine, ésta tiene normalmente acceso a nuestro home, con lo que nos podemos llevar un buen susto si dicha aplicación le da por hacer maldades. Para evitar esta problemática, podemos optar por diversas soluciones, ejecutar Wine con otro usuario distinto al nuestro o hacer uso de un sandbox (algo así como un entorno aislado).

Sólo necesitamos ejecutar una orden con winetricks para hacer que todo aquello que se ejecute después con Wine lo haga en un sandbox.

winetricks sandbox

De todos modos, si queréis más seguridad os recomiendo la lectura de Securing Wine.

Categories: GNU/Linux Tags: ,

Opera

jueves, 22 de enero de 2015 Sin comentarios

Tras el brusco cambio de rumbo en el desarrollo del navegador web Opera, donde se adoptó el motor de Chrome debido a la dificultad de mantener el suyo propio, perdió todo su atractivo al perder con ello todas las características que lo hacían especial.

No obstante, el desarrollo no se ha parado y continúan integrando todo aquello que se quedó por el camino, algo que podemos consultar desde su blog. Desde éste podremos descargar la versión para la plataforma en la que estemos y, para aquellos que tengan distro basada en RPM, alguien tuvo el buen gusto de publicar un script (rpm4opera) que lo genera a partir del DEB.

Categories: GNU/Linux, Software Tags: , ,

DNS dinámicas con DigitalOcean y su API v2.0

lunes, 7 de julio de 2014 Sin comentarios

Si queremos tener accesible nuestra Raspberry a través de una conexión a Internet que nos provee una IP dinámica, podemos hacer uso de la API de DigitalOcean para configurar un subdominio que vaya cambiando su IP a la par que la nuestra.

Para ello deberemos crear un nuevo token desde el panel de administración de DigitalOcean, algo parecido a una especie de hash.

Después crearemos un nuevo registro de tipo A en el gestor de DNS que podemos llamar «home», con lo que nuestro dominio dinámico será algo así como «home.midominio.com».

Después haremos un script en nuestra Raspberry que tenga el siguiente aspecto:

!/bin/bash
var_token=»nuestroToken»
var_domain=»midominio.com»
var_record_id=»elIDdeHome»
var_ip=$(curl -s icanhazip.com)

## Devuelve las últimas acciones realizadas ##
#curl -X GET «https://api.digitalocean.com/v2/actions» \
# -H «Authorization: Bearer $var_token»
## Devuelve la información sobre el dominio ##
#curl -X GET «https://api.digitalocean.com/v2/domains/$var_domain/records» \
# -H «Authorization: Bearer $var_token»

## Cambia la IP del dominio ##
curl -X PUT «https://api.digitalocean.com/v2/domains/$var_domain/records/$var_record_id» \
-d'{«data»:»‘$var_ip'»}’ \
-H «Authorization: Bearer $var_token» \
-H «Content-Type: application/json»

Los únicos valores que tendremos que cambiar serán var_token (el token que hemos generado en el paso anterior), var_domain (el dominio que nos interesa modificar) y el var_record_id (un valor que deberemos recuperar).

Entonces, nuestra IP external la obtendremos gracias al servicio de «icanhzip.com» que soporta IPv4 e IPv6. El siguiente valor que nos interesa recuperar será el identificador del registro A de «home», que se obtiene ejecutando el siguiente script:

!/bin/bash
var_token=»nuestroToken»
var_domain=»midominio.com»

curl -X GET «https://api.digitalocean.com/v2/domains/$var_domain/records» \

-H «Authorization: Bearer $var_token»

Una vez editado el script con toda ésta información sólo nos quedará programarlo en Cron. Para ello ejecutaremos como root el siguiente comando:

crontab -e

Añadiremos la ruta hasta nuestro script y la información para que se ejecute todos los días cada 5 horas:

# Actualiza la IP en DigitalOcean
* */5 * * * /opt/dynamicDNS/dns-digitalocean.sh > /dev/null 2>&1 | logger «Digital Ocean – Updating IP»

 

No olvidar instalar Curl en Raspbmc si no lo tenéis ya:

apt-get install curl

 

 

Direcciones de interés:

Información relativa a la API v2 de DigitalOcean

Manual Básico de Cron

 

 

MLDonkey 3.1.3 en Raspbmc

domingo, 15 de diciembre de 2013 5 comentarios

Si somos poseedores de una Raspberry Pi con Raspbmc de S.O., posiblemente echemos de menos poder utilizar la última versión de MLDonkey que provee de soporte para enlaces magnet.

Para ello será tan fácil como descargar el código fuente de MLDonkey y compilarlo con mucha paciencia en nuestra Raspberry.

Primero actualizaremos todos los paquetes de nuestro sistema e instalaremos la versión de MLDonkey que hay en los repositorios con los siguientes comando:

# sudo apt-get update

# sudo apt-get upgrade

# sudo apt-get install mldonkey

Luego descargaremos las utilidades necesarias para la compilación:

# sudo apt-get -y install gcc make bc

Descargaremos el código fuente de MLDonkey (hay que buscar en las descargas el enlace al «Source»), los descomprimiremos e iniciaremos la compilación:

# wget http://downloads.sourceforge.net/project/mldonkey/mldonkey/3.1.3/mldonkey-3.1.3.tar.bz2

# tar xvjf mldonkey-3.1.3.tar.bz2

# ./configure –enable-batch

# make mlnet.static

La compilación puede haber tardado unas horas, pero al final tendremos un fichero llamado «mlnet.static» que deberemos copiar con el siguiente comando, pero no sin antes hacer una copia de seguridad de la versión anterior por precaución:

# sudo mv /usr/bin/mlnet /usr/bin/mlnet.backup

# sudo cp mlnet.static /usr/bin/mlnet

Para vuestra comodidad os dejo el tarball que contiene el ejecutable ya compilado para ARM:

mldonkey-3.1.3.static.arm-Linux_glibc-2.13.tar