Solución errores Transmission en DNS-320L

Si habéis seguido el post donde se indicaba cómo sustituir el cliente torrent por Transmission, bastante más versátil y actual que el que el NAS lleva instalado.

Tras poner el daemon en funcionamiento es casi seguro que éste no irá todo lo fino que debería. Esto es debido a unos bugs que lleva el firmware de este modelo en concreto. Sin dar muchas vueltas a por qué no funciona bien paso a describir una solución que me funcionó a la perfección. La fuente de los pasos que se describen vienen de este foro.

Si accedemos al archivo /mnt/HD/HD_a2/.transmission/transimission-daemon.log y vemos cientos de errores del estilo de:

[bash]
[00:07:47.201] UDP Please add the line "net.core.rmem_max = 4194304" to /etc/sysctl.conf (tr-udp.c:83)
[00:07:47.201] UDP Failed to set send buffer: requested 1048576, got 225280 (tr-udp.c:89)
[00:07:47.202] UDP Please add the line "net.core.wmem_max = 1048576" to /etc/sysctl.conf (tr-udp.c:94)
[00:08:25.579] tr_crypto error:24064064:lib(36):func(100):reason(100) (crypto.c:115)
[00:08:25.580] tr_crypto error:24064064:lib(36):func(100):reason(100) (crypto.c:115)
[00:08:25.580] tr_crypto error:24064064:lib(36):func(100):reason(100) (crypto.c:115)
[00:08:25.580] tr_crypto error:24064064:lib(36):func(100):reason(100) (crypto.c:115)
[00:08:25.580] tr_crypto error:24064064:lib(36):func(100):reason(100) (crypto.c:115)
[00:08:25.580] tr_crypto error:24064064:lib(36):func(100):reason(100) (crypto.c:115)[/bash]

Es posible que el arhcivo en cuestión llegue a ocupar cientos de megas, por lo que es casi seguro que tengamos estos errores. Para los errores de las 3 primeras línes escribimos desde telnet en nuestro NAS:

[bash]
echo 4194304 >/proc/sys/net/core/rmem_max
echo 1048576 >/proc/sys/net/core/wmem_max
[/bash]

Para los errores restantes hemos de escribir en la misma ventana de telnet:

[bash]
chmod 664 /dev/random
chmod 775 /dev/urandom
[/bash]

Estos cambios se pierden al reiniciar el NAS, por lo que sería conveniente añadirlo al archivo /ffp/start/transmission.sh
Mi archivo bash quedaría tal que así:

[bash]</pre>
#!/ffp/bin/sh

# PROVIDE: Transmission

. /ffp/etc/ffp.subr

if [ -d /mnt/HD/HD_a2 ]; then
TRANSMISSION_HOME=/mnt/HD/HD_a2/.transmission-daemon
else
TRANSMISSION_HOME=/mnt/HD_a2/.transmission-daemon
fi

name="transmission-daemon"
command="/ffp/bin/$name"
start_cmd="transmission_start"
stop_cmd="transmission_stop"
status_cmd="transmission_status"
user=nobody
su_cmd="/ffp/bin/su"

transmission_start()
{
if [ ! -d ${TRANSMISSION_HOME} ]; then
$su_cmd $user -c "mkdir ${TRANSMISSION_HOME}"
fi
echo "Starting $name"
chmod 664 /dev/random
chmod 775 /dev/urandom
echo 4194304 >/proc/sys/net/core/rmem_max
echo 1048576 >/proc/sys/net/core/wmem_max
$su_cmd $user -c "$command -g ${TRANSMISSION_HOME} -e ${TRANSMISSION_HOME}/$name.log"
}

transmission_stop()
{
echo "Stopping $name"
/ffp/bin/killall -SIGINT $name
}

transmission_status()
{
_pids=$(pidof $name)
if test -n "$_pids"; then
echo "$name is running"
else
echo "$name not running"
fi
}

run_rc_command "$1"
<pre>[/bash]

Con esto debería de funcionar correctamente siempre y cuando tengamos las opciones correctamente configuradas.