LINKDUINO: DD-WRT + OPTWARE

.


Para poder realizar este tutorial es necesario que dispongas de alguno de estos recursos:
  • Router con gran memoria flash libre
  • SD/MMC mod.
  • Router con USB. 
(Ampliar información visitando el siguiente link.)

Aqui vamos a explicar cómo hacerlo usando el SD/MMC mod. QUIERO DEJAR CLARO QUE TODA LA INFORMACIÓN ESTÁ EXTRAIDA DEL BLOG MATANDO EL TIEMPO (gracias Edu por tan buen documento).

Primer paso: Instalar SD

Puedes encontrar toda la información en: http://nuwiki.openwrt.org/oldwiki/OpenWrtDocs/Customizing/Hardware/MMC?highlight=%28mmc%29


Video explicativo de Lampi:




Y unas fotos (son las mejores que he encontrado. Extraidas de aquí):





 


Segundo paso: Instalar Optware

Como se detallada en Matando el Tiempo:

1) Firmware: DD-WRT v24 sp2 (10/10/09) con mod SD, una tarjeta reconocida (las modernas, por ejemplo HC, no las reconoce) y lista para usar.
Me ha reconocido una de 1 Gb (velocidad x66).
 





2) Montar la partición en la SD

mkdir /mmc/jffs
mount --bind /mmc/jffs /jffs


3) Instalar Optware

mkdir /jffs/opt
mount -o bind /jffs/opt /opt
mkdir /jffs/tmp
cd /jffs/tmp
wget http://www.wlan-sat.com/boleo/optware/optware-install-ddwrt.sh
./optware-install-ddwrt.sh


Adjunto el código de dicho script de instalación:

#!/bin/sh
# Optware pre-installation script, Leon Kos 2006, 2008
# added -verbose_wget to some lines, MrAlvin 2009

REPOSITORY=http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
TMP=/tmp

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin
unset LD_PRELOAD

unset LD_LIBRARY_PATH

_check_config()
{
    echo "Checking system config ..."
    GATEWAY=$(netstat -rn |
 sed -n 's/^0.0.0.0[ \t]\{1,\}\([0-9.]\{8,\}\).*/\1/p' )

    if [ -n "${GATEWAY}" ]; then
 echo "Using ${GATEWAY} as default gateway."
    else
 echo "Error: No default gateway set!"

 exit 2
    fi
    if [ -s /etc/resolv.conf ]; then
 echo "Using the following nameserver(s):"
 if grep nameserver /etc/resolv.conf ; then
  GATEWAY_SUBNET=$(echo "${GATEWAY}" |

  sed 's/\.[0-9]\{1,3\}\.[0-9]\{1,3\}$//')
     if [ "${GATEWAY_SUBNET}" = "192.168" ]; then
  if grep -q ${GATEWAY} /etc/resolv.conf ; then
      echo "Gateway ${GATEWAY} is also nameserver."

  else
      echo "Warning: local nameserver is different than gateway!"
      echo "Check config or enter:"
      if test -L /etc/resolv.conf ; then
   echo "  sed -i s/192.168.*/${GATEWAY}/ /tmp/resolv.conf"

      else
   echo "  sed -i s/192.168.*/${GATEWAY}/ /etc/resolv.conf"
      fi
      echo "and try again - or wait to see if your download continues anyway."

  fi
     fi
 else
     echo "Error: No nameserver specified in /etc/resolv.conf"
     exit 5
 fi
    else
 echo "Error: Empty or nonexistent /etc/resolv.conf"

 exit 3
    fi

    if mount | grep -q /opt ; then
 [ -d /opt/etc ] && echo "Warning: /opt partition not empty!"

    else
 echo "Error: /opt partition not mounted."
 echo "for running Optware on JFFS (not recommended), Enter"
 echo "    mkdir /jffs/opt"

 echo "    mount -o bind /jffs/opt /opt"
 echo "to correct this."
 exit 4
    fi
}

_install_package()
{
    PACKAGE=$1
    echo "Installing package ${PACKAGE} ..."
 echo "   Some newer versions of DD-WRT does not show download progress bar,"
 echo "   so just be patient - or check STATUS -> BANDWIDTH tab for download"

 echo "   activity in your routers Web-GUI, and then still wait a minute or two."
    wget -O ${TMP}/${PACKAGE} ${REPOSITORY}/${PACKAGE}

    cd  ${TMP}
    tar xzf ${TMP}/${PACKAGE}
    tar xzf ${TMP}/control.tar.gz
    cd /

    if [ -f ${TMP}/preinst ] ; then
 sh ${TMP}/preinst
 rm -f ${TMP}/preints
    fi
    tar xzf ${TMP}/data.tar.gz
    if [ -f ${TMP}/postinst ] ; then
 sh ${TMP}/postinst
 rm -f ${TMP}/postinst
    fi
    rm -f ${TMP}/data.tar.gz
    rm -f ${TMP}/control.tar.gz
    rm -f ${TMP}/control
    rm -f ${TMP}/${PACKAGE}

}

_check_config
_install_package uclibc-opt_0.9.28-13_mipsel.ipk
_install_package ipkg-opt_0.99.163-10_mipsel.ipk
/opt/sbin/ldconfig
/opt/bin/ipkg -verbose_wget update

/opt/bin/ipkg -force-reinstall -verbose_wget install uclibc-opt
/opt/bin/ipkg -force-reinstall -verbose_wget install ipkg-opt

 




¡ Ya podemos instalar paquetes de Optware en nuestro router! Puedes ver una lista resumen aquí y directamente los paquetes aquí.

Para ello, ahora dispones en /opt/bin de la utilidad ipkg-opt para poder instalar paquetes Optware.

4) Tienes que asegurarte que cada vez que se inice el router, se ejecuten las ordenes:

mount --bind /mmc/jffs /jffs
mount -o bind /jffs/opt /opt


Gracias a estos dos comandos, /jffs y /opt apuntan a directorios de la MMC.
Para ello, en el menu ADMINISTRATION / COMANDS, puedes grabar un script con las ordenes a ejecutar (SAVE STARTUP).


Nota: Sólo he detallado lo mínimo para poder empezar a instalar paquetes. Se puede necesitar ampliar los comandos en el script de inicio, si se desea usar otros servicios, como por ejemplo servidor web con php u otros.

Si quieres probar el ejemplo de CONTROLAR LCD A TRAVÉS DE WEB EMBEBIDA, lo he adaptado a PHP (necesitas instalarte los paquetes php y php-thttpd):


Dispones de 3 archivos:
  • form_lcd.html => Principal. Contiene el formulario a enviar.
  • lcd.jpg => Foto que se muestra en la página principal.
  • script.php => Recoge los datos enviados por POST y los envia por puerto serie.



Ahora puedes dejar el servidor que viene con DD-WRT para servir las páginas de configuración del router escuchando en el puerto 80 y añadir nuevo/s servidor/es con mayor capacidad para tus páginas personales. (Por ejemplo, php-thttpd por el puerto 8080). ¡Puedes usar PHP 5!

A continuación, pongo las fotos que he realizado del proceso:




 







Con esta mod al router, ya sólo queda en tu imaginación las aplicaciones que puedes realizar. Ya no perderás nada cuando tu router se reinicie. Repasa los paquetes Optware que puedes descargar, y seguro que se te van ocurriendo ideas.




Notas adicionales:
Tomato dispone de una versión con drivers para manejar SDHC, la he probado con una tarjeta de 4 Gb y ha funcionado perfectamente. Tengo que ver si se pueden usar los paquetes Optware con dicho firmware, ya que el router parece ir más descargado con dicho firmware.
Link: TOMATO firmware with SDHC mod







.

5 comentarios:

  1. HOla! Oye amigo ya he podido montarme la SD al linksys pero lo que no he entendido bien es donde introducir los comandos? si pudieras hecharme una mano te lo agradeceria mucho.

    ResponderEliminar
  2. Ola! ya he solucionado un poko el problema, lo que pasa es que la direccion que nos das para bajar el optware-install-ddwrt.sh est bn muerta!

    Aquí encontre la siguiente!
    ---------
    wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh
    ----------
    Honor a quien honor merece! estaba en los foros de dd-wrt

    Seguimos avanzando!

    ResponderEliminar
  3. Hola Manuel Antonio,
    Me alegro que lo hayas solucionado!!
    Con el mierdo que el script de instalación se perdiera, si te fijas esta copiado el código en este post. Podías haberlo copiado y usado.
    Pero si ya lo tienes en marcha, perfecto!!!

    Saludos

    ResponderEliminar
  4. si lo que pasa es que estaba bastante verde y no entendia bien que era ese codigo jeje ahora lo se!, Una pregunta he buscados bastante, y digo bastantisimo, peor no encuentro mucho, sabes alguna manera de instalar Mysql, para de esta manera poder guardar los datos de un sensor en una base de datos, Por tu atencion y rapida respuesta GRacias!

    ResponderEliminar
  5. Hola,

    En los paquetes de Optware tienes servidor de mysql.
    http://www.nslu2-linux.org/wiki/Optware/HomePage

    Saludos

    ResponderEliminar