Archivo

Archivo del autor

Moonlight en una Raspberry Pi 2 modelo B

miércoles, 25 de mayo de 2016 Sin comentarios

Debido a problemas legales, Limelight tuvo que cambiar el nombre por el de Moonlight, una aplicación que permite hacer streaming de juegos de un ordenador a otro dispositivo (un Android o una Raspberry Pi entre otros) aprovechando la tecnología de Nvidia. Hace algún tiempo explicaba cómo instalar y configurar la aplicación en una Raspberry Pi de primera generación y el asunto no ha cambiado mucho.

Editamos el fichero de repositorios añandiendo al fichero «/etc/apt/sources.list» la siguiente nueva línea :

deb http://archive.itimmer.nl/raspbian/moonlight jessie main

Actualizamos el sistema e instalamos la aplicación:

apt-get update

apt-get upgrade

apt-get install moonlight-embedded

Emparejaremos nuestra Raspberry con nuestro ordenador (suponiendo que tenga la IP 192.168.1.5):

moonlight pair 192.168.1.5

El comando anterior nos dará un código que tendremos que poner en el ordenador a través de un diálogo de GeForce Experience.

Una vez emparejados, sólo tendremos que detener Kodi (si es que lo tenemos en marcha) y lanzar Moonlight que, automáticamente, activará el Big Picture de Steam:

sudo systemctl stop mediacenter

moonlight stream -1080 -60fps 192.168.1.5

Para detener el streaming y volver a arrancar Kodi podemos utilizar los siguientes comandos:

moonlight quit

sudo systemctl start mediacenter

Si además tenemos un mando de PS2 conectado por USB (el de la Xbox 360 funciona sin tener que tocar nada) a través de un adaptador, deberemos 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/event5 y el fichero quería que fuese ps2-1.map). Nos irá pidiendo que pulsemos los botones adecuados del mando y lo único a tener en cuenta es que pide un botón más de los que tenemos disponibles debido a que usa el esquema de Xbox 360.

moonlight map -input /dev/input/event5 ps2-1.map

Así que, finalmente, ejecutaremos lo siguiente:

moonlight stream -1080 -60fps -mapping /home/osmc/ps2-1.map 192.168.1.5

Adjunto el contenido de mi fichero .map por si a alguien le resulta de utilidad:

abs_x = 0
abs_y = 0
abs_z = -1
reverse_x = false
reverse_y = true
abs_rx = 5
abs_ry = 2
abs_rz = -1
reverse_rx = false
reverse_ry = true
abs_deadzone = -31824
abs_dpad_x = 16
abs_dpad_y = 17
reverse_dpad_x = false
reverse_dpad_y = false
btn_north = 288
btn_east = 289
btn_south = 290
btn_west = 291
btn_select = 296
btn_start = 297
btn_mode = 296
btn_thumbl = 298
btn_thumbr = 299
btn_tl = 294
btn_tr = 295
btn_tl2 = 292
btn_tr2 = 293
btn_dpad_up = -1
btn_dpad_down = -1
btn_dpad_left = -1
btn_dpad_right = -1

Sobre los resultados obtenidos, cabe destacar que entre el nuevo software y la mejora de la potencia de la Raspberry Pi (de la 1 a la 2 hay un abismo), el resultado a través de cable de red es sobresaliente. Probado con Left4Dead 2 y Grid 2 sin ningún tipo de retardo apreciable en cuanto a la imagen/sonido y el control.

Wifi que no sale de modo ahorro de energía

lunes, 14 de marzo de 2016 Sin comentarios

Un portátil con un adaptador wifi con el chip RTL8723BE que al cabo del rato parece dejar de funcionar, dejando de poder enviar y recibir datos. Parece ser que es debido a que entra en modo de ahorro de energía y no es capaz de recuperarse cuando se le pide de nuevo que entre en funcionamiento.

La solución en este caso, que llevo probando desde hace unos meses gracias a un post en un foro, es lanzar la siguiente orden en un terminal:

echo «options rtl8723be fwlps=N ips=N» | sudo tee /etc/modprobe.d/rtl8723be.conf

Y después reiniciar el módulo:

sudo modprobe -rv rtl8723be
sudo modprobe -v rtl8723be

Con esto ya debería funcionar correctamente sin desconectarse.

Categories: GNU/Linux Tags: ,

Ambilight en la Raspberry Pi 2

jueves, 7 de enero de 2016 Sin comentarios

Recientemente he migrado a la Raspberry Pi 2 y he tenido que realizar algunos cambios en cuanto al cableado del ambilight casero que tenía montado utilizando Hyperion.

En la siguiente imagen se puede observar la disposiciones de pines de la antigua Raspberry Pi, donde lo que nos interesaba era el pin GPIO 10 (MOSI), GPIO11 (CLK) y alguno de los GND (ground).

raspberrypirev2pinout

En cambio, se puede apreciar que la posición de dichos pines ha sigo ligeramente alterada en el modelo RaspPi2, donde necesitaremos hacer uso de los pines 9 (GND), 19 (MOSI) y 23 (CLK):

RP2_PinoutAclarar también que necesitaremos activar el SPI en nuestro OSMC como ya describí en una entrada anterior.

NAS ZyXel 325-V2

lunes, 14 de diciembre de 2015 Sin comentarios

El NAS ZyXel 325-V2 se diferencia de la primera versión en un cambio estético de la carcasa de plástico y en una mejora del ventilador posterior que parece hacer menor ruido. A parte de eso dispondremos de un sistema de almacenamiento en red con dos bahías para discos duros SATA de 3’5″ y 2’5″ con soporte para RAID 0, 1 y JBOD, tarjeta de red Gigabit, dos USB 2.0 traseros y uno 3.0 frontal frontal con un consumo eléctrico que varía de entre 15W con dos discos duros en marcha a 7W cuando pasa a modo en reposo.

El panel de administración puede parece bastante simple y no tan completo como los NAS de Synologic, pero la diferencia de precio también es bastante notable. Gracias a la comunidad estas diferencias intentan cubrirses con paquetes de software de terceros.

Como vamos a hacer del NAS un servicio de red fijo, lo que nos va a interesar es darle una IP fija a través de la configuración del servidor de DNS. Para eso se necesita averiguar su dirección MAC de forma fácil con el siguiente comando (sabiendo previamente la IP que se le ha sido asignado previamente o el nombre del equipo):

ping 192.168.1.55 -c 1

arp -a

A través de Samba accederemos a «smb://IP-NAS/admin/zy-pkgs/» y crearemos un fichero «web_prefix» que contendrá la siguiente URL:

http://downloads.zyxel.nas-central.org/Users/Mijzelf/zypkg-repo/

Desde el panel web de administración del NAS iremos a la sección «Firmware/Packages» y, después de actualizar el Firmware si existe alguna versión posterior, le daremos al botón de «Acceder listado desde Internet». Aparecerá un único paquete llamado «MetaRepository» que tendremos que seleccionar e instalar. Tras esto ya podremos instalar FFP (desde el cual podremos instalar repositorios con uwsiteloader), RandomTools, NFS y pyLoad por ejemplo.

Para instalar nuestro software de descargas favorito (MlDonkey), entraremos por SSH al NAS y ejecutaremos lo siguiente:

su

uwsiteloader.sh (seguimos los pasos del asistente)

slacker -U

slacker -i mldonkey

exit

Debido a que queremos tener todo lo relacionado con MlDonkey guardado en disco duro por temas de espacio, lo que haremos es un enlace simbólico de la siguiente forma y lanzaremos el proceso para que genere la estructura de carpetas:

mkdir /mnt/HD_a2/mldonkey

cd /mnt/HD_a2

chmod -R 777 mldonkey/

ln -s /mnt/HD_a2/mldonkey/ .mldonkey

mlnet

Cerraremos el proceso anterior con un simple CTRL+C y empezaremos a configurarlo:

vim .mldonkey/downloads.ini (y editamos las ip’s permitidas añadiendo 192.168.1.0/24)

mkdir /mnt/HD_a2/mldonkey/logs

Generaremos un fichero de configuración en «/mnt/HD_a2/mldonkey/mldonkey-server» con el siguiente contenido:

MLDONKEY_DIR=/mnt/HD_a2/mldonkey
MLDONKEY_USER=admin
MLDONKEY_GROUP=everyone
MLDONKEY_UMASK=0022
LAUNCH_AT_STARTUP=true

Crearemos el script que se encargará de gestionar el servicio «/mnt/HD_a2/mldonkey/mldonkey.sh» con el siguiente contenido:

 

#!/ffp/bin/sh
#
# Original file :
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl
#
#
# This file has been rewritten by Sylvain Le Gall <gildor@debian.org>
# and Samuel Mimram <smimram@debian.org> for the mldonkey package.
#
### BEGIN INIT INFO
# Provides: mldonkey-server
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Server for the mldonkey peer-to-peer downloader.
# Description: Server for the mldonkey peer-to-peer downloader.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mlnet
EXEC=/usr/local/zy-pkgs/ffproot/ffp/bin/$NAME
DESC=»MLDonkey»
CONFIG=/mnt/HD_a2/mldonkey/mldonkey-server
PIDDIR=/var/run/mldonkey
PIDFILE=$PIDDIR/$NAME.pid
LOGFILE=/mnt/HD_a2/mldonkey/logs/mldonkey-server.log
SERVERLOG=/mnt/HD_a2/mldonkey/logs/mlnet.log

test -e $CONFIG || exit 0

set -e

Warn ()

{
echo «$*» >&2
}

Error ()
{
code=$1
shift

echo «.»
Warn «$DESC: $NAME [ERROR] $@»
exit $code
}

StartErrorCheck ()
{
if [ -f «$SERVERLOG» ] && tail -n 2 «$SERVERLOG» | grep -qi ‘aborting’ ; then
Warn «$DESC: $NAME [ERROR] server start error»
tail –verbose $SERVERLOG
exit 1
fi
}

. $CONFIG

# Look for the default locale
if [ -f «/etc/default/locale» ]; then
. /etc/default/locale
export LANG
fi

if [ -n «$MLDONKEY_UMASK» ]; then
umask $MLDONKEY_UMASK
fi
# /var/run might be on tempfs, see #354701.
if [ ! -d /var/run/mldonkey ]; then
mkdir -m 755 /var/run/mldonkey
fi
if [ ! -d /var/log/mldonkey ]; then
mkdir -m 755 /var/log/mldonkey
fi
if [ -n «$MLDONKEY_USER» ] && [ -n «$MLDONKEY_GROUP» ]; then
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /var/run/mldonkey
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /mnt/HD_a2/mldonkey/logs
fi

WRAPPER_OPTIONS=»–iosched idle»

# Set configuration value, from CONFIG
if [ -n «$MLDONKEY_USER» ] && [ -n «$MLDONKEY_GROUP» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –chuid $MLDONKEY_USER:$MLDONKEY_GROUP»
fi

if [ -n «$MLDONKEY_DIR» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –chdir $MLDONKEY_DIR»
fi

if [ -n «$MLDONKEY_GROUP» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –group $MLDONKEY_GROUP»
fi

if [ -n «$MLDONKEY_UMASK» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –umask $MLDONKEY_UMASK»
fi

if [ -n «$MLDONKEY_NICENESS» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –nicelevel $MLDONKEY_NICENESS»
fi

case «$1» in
start|force-start)
echo -n «Starting $DESC: $NAME»

if [ «x$LAUNCH_AT_STARTUP» != «xtrue» ] && [ «x$1» = «xstart» ]; then
Error 0 «configuration file prevent $NAME to be started (use force-start).»
fi

if [ -z «$MLDONKEY_DIR» ] || [ ! -d «$MLDONKEY_DIR» ]; then
if [ -z «$MLDONKEY_DIR» ]; then
MLDONKEY_DIR=»(unset)»
fi
Error 1 «$MLDONKEY_DIR is not a valid directory.»
fi

if [ ! -f «$MLDONKEY_DIR/downloads.ini» ]; then
Error 1 «$MLDONKEY_DIR/downloads.ini is not a valid file.»
fi

#USER=`/usr/bin/stat –format=»%U» «$MLDONKEY_DIR/downloads.ini»`

USER=»admin»

WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –user $USER»

start-stop-daemon –start $WRAPPER_OPTIONS \
–pidfile $PIDFILE –background –exec $EXEC \
— -log_file $SERVERLOG -pid $PIDDIR 2>&1

StartErrorCheck

echo «.»
;;

stop)
echo -n «Stopping $DESC: $NAME»
start-stop-daemon –stop –oknodo –pidfile $PIDFILE –retry 30
echo «.»
;;

force-reload|restart)
$0 stop
$0 start
;;

*)
Error 1 «Usage: $0 {start|stop|restart|force-reload|force-start}»
;;
esac

exit 0

Le daremos permiso de ejecución:

chmod u+x /mnt/HD_a2/mldonkey/mldonkey.sh

Y finalmente crearemos el script que se encargará de levantar el servicio al inicio en «/ffp/start/mldonkey-start.sh» con el siguiente contenido:

#!/ffp/bin/sh
# PROVIDE: mldonkey
# REQUIRE: LOGIN
/mnt/HD_a2/mldonkey/mldonkey.sh start

Le daremos permiso de ejecución:

chmod u+x /ffp/start/mldonkey-start.sh

Si deseamos que el NAS esté accesible por NFS, el camino rápido sería obtenido el identificador del usuario y del grupo correspondiente:

id -u admin

id -g admin

Editaremos el fichero «/etc/exports» con una línea similar a esta siendo 192.168.1.11 la IP que montará la unidad NFS  501 el id de usuario y grupo:

/mnt/HD_a2 192.168.1.11(rw,all_squash,anonuid=501,anongid=500)

Si intentamos colocar algo así como «192.168.1.0/24» no funcionará.

Reiniciaremos el servicio de NFS con el siguiente comando y ya lo tendremos listo en la red:

/usr/local/zy-pkgs/etc/init.d/NFS restart

En el equipo que queramos hacer uso de la unidad NFS (una Raspberry) tendremos que editar el fichero «/etc/fstab» añadiendo la siguiente línea:

192.168.1.10:/mnt/HD_a2    /mnt/nas nfs nouser,atime,auto,rw,dev,exec,suid 0   0

Prepararemos la carpeta donde estará del siguiente modo:

mkdir /mnt/nas

chown pi:users -R /mnt/nas

chmod 777 -R /mnt/nas

mount -a

 

 

 

 

Enlaces de interés:
http://forum.nas-central.org/viewtopic.php?f=249&t=15731&sid=b252ddb5624aca7cd22055ca774de8f7
http://zyxel.nas-central.org/wiki/3rd_party_zypkgs#MetaRepository
http://zyxel.nas-central.org/wiki/FFP_as_zypkg

OOM-Killer

sábado, 31 de octubre de 2015 Sin comentarios

En servidores con limitaciones importantes de memoria, muchas veces el sistema se queda sin memoria y el señor OOM Killer decide qué proceso tiene que matar para liberar recursos. Esto puede parecer lógico pero, en ocasiones, cuando sucede continuamente y de forma aleatoria supone un serio problema, sobretodo cuando mata el proceso de MySQL, Apache o PHP.

Es por ello que, cuando intentas indagar en la raíz del problema, te encuentras con que el kernel de Linux siempre reserva memoria para las aplicaciones que lo piden sin verificar si dispone de suficiente. Por tanto, las aplicaciones pueden llegar a pedir más memoria de la que realmente existe libre y por ello OOM Killer intentará hacer hueco.

Para cambiar este comportamiento hace falta modificar el fichero «/etc/sysctl.conf», donde añadiremos estos dos parámetros:

vm.overcommit_memory = 2
vm.overcommit_ratio = 80

Con el primer parámetro forzaremos al kernel a no dar más de lo que existe y el segundo define el ratio con el que se calculará cuánto podrá dar a cada una de las aplicaciones.

Para más info podéis consultar la web del kernel de Linux.

Categories: GNU/Linux Tags: ,

Optimizar tablas en MySQL o MariaDB

viernes, 30 de octubre de 2015 Sin comentarios

Tienes un servidor con una gran cantidad de bases de datos y necesitas lanzar un proceso de optimización de tablas. Puedes ir una a una:

OPTIMIZE TABLE miTabla;

O hacerlo de golpe desde un terminal:

mysqlcheck -u username -p –auto-repair –optimize –all-databases

Malware en nuestro servidor web

jueves, 29 de octubre de 2015 Sin comentarios

Existe la posibilidad de que nuestro servidor se vea infectado a través de software web no actualizado o parcheado correctamente. Esto implica que, a través de una vulnerabilidad de nuestro WordPress o Prestashop, por ejemplo, nuestro servidor sea comprometido y perdamos el control sobre qué es lo que ocurre en él.

Dicho software malicioso puede estar oculto en una única línea de código (sin saltos de línea) en uno de nuestro ficheros .php o incluso en un supuesto fichero de imagen del que se hace un «innocuo» include y que es ejecutado por su dueño a través de un simple navegador web.

34yu55e

crypto-php-joomla-wordpress-1024x572

El llamado CryptoPHP que incluye un sofisticado interfaz web de control para su dueño y que encuentra hábilmente escondido puede llegar a ser un verdadero quebradero de cabeza.

¿Cuál es la mejor forma para deshacerse de ello? Pues usando Linux Malware Detect (LMD).

Lo instalamos de la siguiente forma como root:

cd /opt

wget http://www.rfxn.com/downloads/maldetect-current.tar.gz

tar -zxvf maldetect-current.tar.gz

cd maldetect-1.5/

./install.sh

Y ahora toca configurarlo:

vi /usr/local/maldetect/conf.maldet

De ese fichero de configuración quizás queramos cambiar la dirección de email y lo siguiente:

quarantine_hits=»1″

quarantine_clean=»1″

quarantine_suspend_user=»0″

Y ya sólo queda pasarlo con el siguiente comando:

maldet –scan-all /var/www/

Podremos ver el informe (que son almacenados en /usr/local/maldetect/sess/)

maldet –report 151029-0649.24301

Para poner los archivos en cuarentena y limpiarlos usaremos los siguientes comandos:

maldet -q 151029-0649.24301

maldet -n 151029-0649.24301

Y como se queda en «/etc/cron.daily/maldet», podemos dormir un poco más tranquilos.

Categories: GNU/Linux Tags: , , , ,

Problemas de memoria en PHP

miércoles, 28 de octubre de 2015 Sin comentarios

Intentas lanzar un script en PHP y no haces más que obtener un error del siguiente estilo:

Allowed memory size of xxxxx bytes exhausted (tried to allocate xxxxxx bytes)

Has modificado todos los ficheros de la configuración de PHP habidos y por haber:

vi /etc/php5/cgi/php.ini

vi /etc/php5/cli/php.ini

vi /etc/php5/apache2/php.ini

vi /etc/php5/fpm/php.ini

Y siempre tienes puesto que el valor sea «memory_limit = 512MB» y no hay forma de que aquello tire.

Pues tras leer una contestación en la maravillosa web de StackOverflow, resulta que el valor, en vez de ser «512MB», debería ser «536870912». La lectura recomendada del por qué está en la web de documentación de PHP.

Categories: GNU/Linux Tags: , ,

Renombrando

martes, 27 de octubre de 2015 Sin comentarios

Si te ves en la necesidad de cambiar de nombre de dominio sin previo aviso y ves que la base de datos de tu querida web tiene la dirección web antigua por todas partes, vas a tener algo de trabajo, pero no mucho.

Primero, sería bueno echar un vistazo en PhpMyAdmin para encontrar en cuántos sitios se encuentra nuestra antigua dirección utilizando su búsqueda.

phpmyadmin

Luego, tras comprobar la barbaridad que aquello supondría hacerlo a mano, realizaremos una copia de seguridad de la base de datos con las herramientas que proporciona PhpMyAdmin y, como si de un texto cualquiera se tratase, ejecutaremos el siguiente comando:

sed -i ‘s/www.antiguadireccion.com/www.nuevadireccion.es/g’ ./backupbasedatos.sql

Y sólo tendremos que restaurar la base de datos desde ese fichero que hemos tratado con sed.

Para más info sobre el comando sed, podéis consultar la web de Bruno.

FacturaScripts

lunes, 26 de octubre de 2015 Sin comentarios

El encontrar software que se adapte a nuestras necesidades a veces resulta bastante tedioso, sin embargo hay casos que a veces nos sorprende tal búsqueda. Ese es el caso de un programa de facturación y contabilidad gratuito que encontré y que resultó ser además software libre.

Es el caso de FacturaScripts, un software realizado en PHP que nos permite tenerlo instalado en un servidor LAMP ligero tanto en local como en Internet, accesible simplemente desde un navegador web, con lo que podemos consultarlo desde casi cualquier dispositivo.

Una de las cosas que más me gustó fue su desarrollo abierto, donde tienen en cuenta las opiniones y necesidades de los usuarios y que, poco a poco, se van incorporando a la rama principal del proyecto. Pero si esto no te es suficiente, además incluye un sistema de plugins que facilita el desarrollo de nuevas funcionalidades que, gracias a la documentación, resulta relativamente sencillo si ya has tenido oportunidad de hacer cosas en PHP previamente. Y sino, siempre te quedará el catálogo de plugins donde encontrar soporte para WooCommerce y PrestaShop entre otros.

De todos modos, desde mi experiencia con el software de empresa, lo que más me preocupa muchas veces es que su desarrollo se detenga o no haya seriedad o respaldo del creador del proyecto. Por eso me suelo pasear por los foros para comprobar la actividad y tiempos de respuesta que, en este caso, no parece ser un problema, algo que a mi me da algo de seguridad.

Así que, si buscas un programa de contabilidad en el que no tengas que invertir una suma importante (o innecesaria) de dinero y que además quieres poderlo adaptar a tus necesidades sin tener que pasar por el soporte oficial de una empresa, definitivamente merece la pena probarlo.

mac