Buenas,
Recientemente me he comprado un Netgear r7800. Necesitaba renovar mi hardware de red y lo encontre a un precio de escandalo en ebay. Quería tener una máquina de bajo consumo con todas las funcionalidades que yo necesito y realmente esta máquina pertenece al grupo TOP de routers wifi. Así pues voy a describir lo que he hecho por recordarlo para la próxima y para ayudar a quien corresponda.
Esta es la máquina
https://www.netgear.com/support/product/R7800.aspxBuscando en google por
r7800 x4s review español
sale información interesante
Me basado en el trabajo de hnyman, descrito aquí:
https://forum.lede-project.org/t/build-for-netgear-r7800/316/39Aunque de momento no hay soporte oficial de openwrt, si que se puede compilar para esta arquitectura (kernel 4.9.96) y así lo he hecho. Además he modificado el particionado de la flash interna ya que por defecto viene una configuración estándar de openwrt, obteniendo un total de 78M de espacio para aplicaciones.
Yo quería un router para usar simplemente como punto de acceso, pero con funcionales extendidas como:
- joe
- midnight commander (con todas sus funcionalidades)
- php7
- lighttp
- mariadb-server
- minidlna
- Samba
- e2fsprogs
- fdisk
- Soporte para cámaras usb
- Bacula (Copias de seguridad)
Y otras muchas cosas (aircrack, kismet,..). Es como un PC, pero con un consumo mucho más reducido. De momento todo lo que he probado funciona correctamente.
He puesto el repositorio de todo lo que he compilado en el mismo r7800. Qué mejor prueba de que va bien

Aviso importante:
Dado que he cambiado el particionado, la primera vez no se puede flasear desde la web original. El router se quedaria en un bucle de arranque briqueado, aunque es recuperable con el procedimiento que se explica en enlace siguiente. Es de esta forma, como se debe de flasear la primera vez, con el fichero .img
https://kb.netgear.com/22688/How-to-upload-firmware-to-a-NETGEAR-router-using-TFTPRepito, no pasa nada si te equivocas, porque las cosas que se modifican de particionado son posteriores a las zonas críticas de recuperación. Y tras el primer flaseo con el img, si se quiere volver a flasear desde la web del openwrt se pueden usar tranquilamente el .bin, u otros posteriores de otras compilaciones.
Obtemos 78M! de espacio para cacharreo.
Lo primero es configurar el repositorio con los archivos. El repositorio de momento lo he puesto en mi propio r7800.
Si alguien lo quiere probar hay que hacer en System->Software->Configuration->Distribution Feeds es:
1) Borrar las fuentes actuales
2) Poner nuestras fuentes
src/gz openwrt_core http://sergiotas.ddns.net:8088/r7800/core
src/gz openwrt_base http://sergiotas.ddns.net:8088/r7800/base
src/gz openwrt_luci http://sergiotas.ddns.net:8088/r7800/luci
src/gz openwrt_packages http://sergiotas.ddns.net:8088/r7800/packages
src/gz openwrt_routing http://sergiotas.ddns.net:8088/r7800/routing
src/gz openwrt_telephony http://sergiotas.ddns.net:8088/r7800/telephony
Despues de lo anterior un update desde el interfaz web o desde línea de comandos
opkg update
He formateado un disco en ext4 para poner la base de datos, y para eso me he instalado el fdisk y unas utilidades en e2fsprogs
opkg install fdisk e2fsprogs
Me he creado dos particiones, una de swap y otra de datos. La de swap de momento no la uso. La partición ext4 con datos será la /dev/sda2 que me la monta automáticamente en /mnt/sda2.
Para evitar líos posteriores con el mariadb conviene hacer esto:
cd /mnt
ln -s sda2 data
mkdir /mnt/data/mysql
mkdir /mnt/data/tmp
Para el minidlna.
mkdir /mnt/sda2/minidlna/
Para la web con lighttpd
mkdir /mnt/sda2/html/
mkdir /mnt/sda2/html/r7800 # repositorio de paquetes
Instalar aplicaciones:
opkg install mc
opkg install joe
opkg install minidlna
opkg install samba36-server
opkg install zoneinfo-core # para timezone
opkg install php7-cgi php7-cli php7-mod-mysqli php7-mod-gd php7-mod-curl php7-mod-sqlite3
opkg install lighttpd lighttpd-mod-fastcgi
opkg install mariadb-server
Configuro el samba.
En /etc/config/samba
config samba
option 'name' 'OpenWrt'
option 'workgroup' 'WORKGROUP'
option 'description' 'OpenWrt'
option 'charset' 'UTF-8'
option 'homes' '0'
option 'interface' 'loopback lan'
option 'security' 'share'
config 'sambashare'
option 'name' 'repositorio_r7800'
option 'path' '/mnt/data/html/r7800'
option 'guest_ok' 'yes'
option 'create_mask' '0700'
option 'dir_mask' '0700'
option 'read_only' 'yes'
config 'sambashare'
option 'name' 'minidlna'
option 'path' '/mnt/data/minidlna'
option 'guest_ok' 'yes'
option 'create_mask' '0700'
option 'dir_mask' '0700'
option 'read_only' 'no'
En /etc/samba/smb.conf.template cambio el parámetro security a share.
...
security = share
...
Es un uso casero y este tipo de seguridad me vale. En /mnt/data/minidlna creo una carpeta y doy permisos de escritura a cualquiera
mkdir /mnt/sda2/minidlna/series
chmod o+w /mnt/sda2/minidlna/series/
/etc/init.d/samba restart # reiniciar servicio
Configuro el minidlna
En /etc/config/minidlna
config minidlna config
option 'enabled' '1'
option port '8200'
option interface 'br-lan'
option friendly_name 'OpenWrt DLNA Server'
option db_dir '/var/run/minidlna'
option log_dir '/var/log'
option inotify '1'
option enable_tivo '0'
option wide_links '0'
option strict_dlna '0'
option presentation_url ''
option notify_interval '900'
option serial '12345678'
option model_number '1'
option root_container '.'
list media_dir '/mnt/data/minidlna'
option album_art_names 'Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg'
Y reiniciar el servicio
/etc/init.d/minidlna restart
Para configurar lighttpd
En el php.ini se puede poner la variable doc_root="/mnt/data/html". Aunque si no se hace tambien funciona,
En /etc/lighttpd/lighttpd.conf
server.document-root = "/mnt/data/html/"
server.upload-dirs = ( "/tmp" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "http"
server.groupname = "www-data"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
)
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.port = 8088
#dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
include "/etc/lighttpd/mime.conf"
include "/etc/lighttpd/conf.d/*.conf"
fastcgi.server = (
".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket"
))
)
Reinicio el servicio:
/etc/init.d/lighttpd restart
Lo de las camaras usb lo dejo para más adelante porque no tengo. He visto camaras en los chinos por 4 o 5€. He compilado en el kernel todo lo necesario para darle soporte, pero me falta probarlo.
Lo del bacula lo he compilado tambien, pero no es un paquete dentro del openwrt. Me falta probarlo y seguro que lo tengo que recompilar alguna vez más para dar soperte a alguna funcionalidad más.
Pues de momento esto es todo.
Saludos



