NAND Foresee en OpenWrt 24.10.3: soporte, firmware, UBI y aspectos a tener en cuenta

NAND Foresee en OpenWrt 24.10.3: soporte, firmware, UBI y aspectos a tener en cuenta

Foresee — es una línea de memorias flash del fabricante Longsys, que se encuentra con frecuencia en routers y dispositivos IoT de gama económica. Estos chips no se publicitan mucho, pero tienen un precio razonable y aparecen por todas partes — desde dispositivos cliente compactos hasta puntos de acceso domésticos. Con la salida de OpenWrt 24.10.3, la principal pregunta para el usuario es simple: ¿habrá soporte adecuado “listo para usar”, qué tan fiable será trabajar con UBI/UBIFS y qué hacer si el sistema empieza a reportar errores ECC. A continuación hay un análisis práctico y directo, sin academicismos aburridos, pero con comandos útiles y escenarios de trabajo.

Hay que decirlo de entrada: NAND es caprichosa. A diferencia de eMMC o NVMe, aquí se trabaja con «bloques» desnudos, tablas de bloques defectuosos, a veces algo de magia del controlador y, obligatoriamente, un particionado MTD correcto. Los chips Foresee no son la excepción. Si todo se hace bien, OpenWrt 24.10.3 se comporta de forma predecible y estable. Si se apresura uno, puede llevarse unas canas y un «ladrillo». Lo veremos paso a paso.

Hardware e identificación: qué Foresee tiene exactamente

Lo primero que nos interesa son los parámetros del NAND concreto. Entre distintas revisiones varían el tamaño de página, el volumen del área OOB, los requisitos de corrección de errores y los modos soportados. No hacemos conjeturas: consultamos los hechos en los registros del kernel y en MTD. Eso evita ensayo y error al flashear y particionar.

Comandos de diagnóstico útiles en OpenWrt 24.10.3. Muestran cómo el kernel ve el chip y qué piensa sobre sus bloques y geometría. Ejecutar vía SSH:

  • dmesg | grep -i -e nand -e mtd — presentación rápida del controlador y del chip detectado.
  • cat /proc/mtd — lista de particiones MTD, su tamaño y propósito.
  • ubinfo -a — si ya usa UBI, aquí se ve el volumen, el número de bloques, wear-leveling, etc.
  • logread -e UBI — útil para analizar el montaje automático de volúmenes y la «psicología» del arranque.

Para orientarse — perfiles típicos con los que los usuarios suelen encontrarse. No son un «estándar absoluto», sino una chuleta útil al iniciar el conocimiento del dispositivo.

Perfil típico Página / OOB ECC (fuerza típica) Comentario
NAND 2 KB 2048 B / 64–128 B BCH 4–8 bits/512 B Se encuentra en routers económicos; sensible al desgaste con reescrituras frecuentes.
NAND 4 KB 4096 B / 224–256 B BCH 8–16 bits/1 KB Variante más moderna, más cómoda para UBI, con menos errores ECC.
NAND 8 KB 8192 B / 448–1024 B BCH 16+ bits/1 KB Rara en routers de consumo, pero agradable en uso.

Otro punto es la tabla de bloques defectuosos (BBT). Tener un par de bloques «rojos» en chips nuevos no es una tragedia. Lo crítico es si aparecen nuevos bloques defectuosos durante escritura activa. Si hay crecimiento, conviene reducir el número de reescrituras y mover logs ruidosos a RAM.

Soporte en OpenWrt 24.10.3: UBI/UBIFS, particionado y proceso de actualización

OpenWrt lleva años trabajando con NAND mediante la combinación MTD + UBI/UBIFS. En 24.10.3 todo es familiar: sysupgrade entiende plataformas NAND, los volúmenes UBI se montan automáticamente y UBIFS se comporta de forma adecuada en chips con distintas geometrías. Lo importante es un particionado correcto en el DTS y prestar atención al gestor de arranque.

El flujo básico es el siguiente. El firmware de fábrica se instala desde la interfaz web del fabricante; después se carga la imagen factory de OpenWrt. Tras el primer arranque en NAND suele existir ya un volumen UBI con la raíz. Las actualizaciones posteriores se hacen con sysupgrade, preferiblemente conservando la configuración si está seguro de la compatibilidad. Para una migración «limpia» use la opción -n, pero no olvide las copias de seguridad.

Errores comunes. Primero: intentar flashear una imagen sysupgrade directamente en una MTD «cruda» sin capa UBI. Segundo: desajuste de la partición OOB respecto a lo que espera el bootloader o el controlador. Tercero: mover configuraciones antiguas que arrastran un fstab/mtab «torcido» y provocan bucles de error al montar.

Para comprobar que realmente trabaja a través de UBI y no sobre particiones «crudas», use mount y ubinfo -a. Si ve ubi0:rootfs y ubifs como sistema raíz, todo va según lo previsto. Si /overlay de pronto es JFFS2 sobre una MTD «cruda», es señal de que hay que ordenar el sistema.

Práctica: comandos, escenarios de migración y pruebas de velocidad

Empecemos por diagnosticar el estado actual. Haga una copia de seguridad de las configuraciones, observe cómo están particionadas las unidades y evalúe la salud del chip. Eso facilita la operación y aclara dónde buscar problemas.

  • Copia de seguridad de configuraciones: sysupgrade -b /tmp/backup.tar.gz y descargue el archivo desde el router.
  • Estado de MTD: cat /proc/mtd, dmesg | grep -i mtd.
  • Información UBI: ubinfo -a, ubihealthd en los registros si está presente.
  • Bloques defectuosos: dmesg | grep -i "bad" y nanddump para diagnóstico avanzado.

Si desea «resetear» el overlay y desplegar de nuevo la raíz en UBI, proceda con cuidado. El esquema siguiente es para usuarios experimentados y supone acceso físico al dispositivo por si surge una situación no prevista.

  1. Haga copia de seguridad: sysupgrade -b /tmp/backup.tar.gz.
  2. Vaya a una instalación limpia: sysupgrade -n /tmp/openwrt-24.10.3-...-sysupgrade.bin.
  3. Tras reiniciar verifique: mount, debe aparecer ubi0:rootfs/ubifs.
  4. Restaure las configuraciones necesarias de forma selectiva, evitando fstab antiguos y cualquier cosa que toque MTD/UBI.

Pruebas de velocidad y sensaciones. Para una evaluación rápida puede usar dd y fio (este último desde el repositorio, si está disponible para su arquitectura). No espere milagros: NAND es cuestión de previsibilidad y fiabilidad, no de megabytes por segundo.

  • dd if=/dev/zero of=/overlay/test.bin bs=256k count=128 conv=fsync — escritura aproximada de ~32 MB.
  • fio --name=randrw --filename=/overlay/fio.bin --size=32M --rw=randrw --bs=4k --iodepth=1 --direct=1 --numjobs=1 --runtime=30 --time_based — perfil mixto «simulando carga real».

Compresión en UBIFS. Por defecto se usan LZO/Zlib. Si tiene muchos archivos pequeños de configuración, el efecto será visible: lectura algo más rápida y escrituras con menor desgaste. Para rutas «ruidosas» (logs, caché de paquetes opkg) conviene moverlas a RAM mediante tmpfs, para no «consumir» innecesariamente la flash.

Problemas típicos: errores ECC, bloques que «se desmoronan» y gestor de arranque

Los signos de problemas se reconocen fácilmente en los registros. Mensajes como error ECC irrecuperable y UBI: error CRC son señales de alarma. No todos son catastróficos, pero no deben ignorarse. Si aparecen con regularidad en las mismas LEB/PEB, prepárese para «mudar» volúmenes y revisar el particionado.

Medidas sensatas. Primero, liberar espacio para que UBI tenga margen de wear-leveling. Segundo, mover directorios de logs a RAM. Tercero, si hace falta, ejecutar ubiformat sobre la MTD problemática y recrear los volúmenes. En algunos dispositivos es útil actualizar el bootloader si el antiguo usa una partición OOB exótica que entra en conflicto con el kernel.

¿Dónde está el límite entre «reparar» y «cambiar hardware»? Si aparecen nuevos bad-blocks de forma sostenida y los errores ECC se reproducen incluso al leer datos recién escritos, probablemente sea degradación del chip. En routers domésticos económicos esto no es infrecuente. La medida radical es pasar a extroot (USB) o cambiar el dispositivo.

Un consejo práctico. Al trabajar manualmente con particiones «crudas» use parejas nanddump/nandwrite con las opciones OOB correctas para su chip, y antes de experimentar siempre guarde volcados del bootloader y del ENV. Un error en 64 KB puede convertir el equipo en un «ladrillo», y la resucitación por UART puede llevar toda una tarde.

Vida útil y buena higiene de escritura: cómo prolongar la vida de Foresee en OpenWrt

En NAND no sirve esperar milagros. Funcionan reglas sencillas. Menos escrituras = más vida. Carga predecible = menos sorpresas. Bajo OpenWrt 24.10.3 eso se logra con unos pocos pasos.

  • Logs en RAM: mueva /var/log y archivos temporales a tmpfs. Por defecto OpenWrt ya usa agresivamente la RAM para rutas temporales — no lo impida.
  • Caché de opkg: guarde la caché de paquetes en RAM o no la guarde tras la instalación. Menos operaciones pequeñas en la flash es mejor.
  • Monitorice wear-leveling: periódicamente ejecute ubinfo -a y observe la distribución del desgaste. Desviaciones bruscas son motivo para liberar espacio.
  • Evite swap en NAND: si necesita swap, use un medio externo o zram.

Si prevé escenarios exigentes — VPN con logging, descargas frecuentes, proxy y filtrado — considere extroot en un medio USB. Así acelerará puntos sensibles y reducirá la carga sobre Foresee.

¿Conviene comprar dispositivos con Foresee para usar con OpenWrt y a quién le sirve

Si necesita un router económico que sostenga Wi‑Fi de forma estable, gestione un par de VLAN y ejecute algunos servicios, los chips Foresee junto con OpenWrt 24.10.3 funcionan con confianza. Con un particionado correcto, UBI y un uso moderado de la flash, difícilmente notará diferencia frente a otros NAND del mismo segmento.

A quién no le conviene. A quien busque la «antifrágilidad» de eMMC y piense escribir decenas de gigabytes semanales en la flash. Para ese escenario, es mejor optar por dispositivos con eMMC/NVMe o delegar las tareas pesadas a un medio externo.

Y finalmente, sobre la comodidad psicológica. Si no le gusta trastear con MTD, OOB y UBI, elija un modelo con un árbol de dispositivo ya conocido para OpenWrt y con imágenes preparadas. Si por el contrario disfruta ajustando el sistema a su medida, Foresee no será un obstáculo. Con algo de atención, el chip puede servir durante años.

Enlaces oficiales útiles

Alt text