Seguridad Wireless - Wifi

Equipos y materiales => Puntos de acceso, routers, switchs y bridges => Openwrt & LEDE => Mensaje iniciado por: Noltari en 18-05-2017, 15:59 (Jueves)

Título: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 18-05-2017, 15:59 (Jueves)
Buenas!

Aunque hace bastante que no aparezco por el foro por tema de falta de tiempo libre quería compartir lo último que estoy haciendo relacionado con OpenWrt/LEDE.

Como hace poco tenía algo de tiempo decidí ponerme a investigar sobre si sería posible ejecutar U-Boot en routers BCM63xx. Después de varios intentos al final fui capaz de ejecutarlo y ahora mismo estoy portando drivers y haciéndolos compatibles con U-Boot.
Desde el principio he tenido como objetivo conseguir hacer upstreaming de todo lo que consiguiera hacer funcionar de forma estable, y como podréis ver ya han aceptado algunos de los parches que he enviado y también hay más en camino:
Git U-Boot Upstream (https://github.com/Noltari/u-boot/commits/master?author=noltari)
Git U-Boot MIPS (http://git.denx.de/?p=u-boot/u-boot-mips.git)
U-Boot Patchwork (http://patchwork.ozlabs.org/project/uboot/list/?submitter=64520&state=*&archive=both)

¿Por qué pegarse la currada de añadir soporte para BMIPS en U-Boot?
Pues porque como ya he dicho tenía algo de tiempo libre y me apetecía trastear un poco con U-Boot, y más ahora que están migrando todo a la filosofía DT (Device Tree).
También porque veo bastante factible utilizar U-Boot como Second Stage Bootloader en routers BCM63xx con NAND, que como ya sabréis a día de hoy siguen sin ser compatibles con OpenWrt/LEDE debido a la estructura que Broadcom ha decidido utilizar en la flash.

Upstream (http://git.denx.de/?p=u-boot.git;a=search;s=%C3%81lvaro+Fern%C3%A1ndez;st=author)

mips/next (http://git.denx.de/?p=u-boot/u-boot-mips.git;a=shortlog;h=refs/heads/next)

Roadmap

Bugs/Issues

¿Cómo compilar U-Boot?
Código: [Seleccionar]
export STAGING_DIR="/home/noltari/lede/lede-staging/staging_dir/"
export PATH="${STAGING_DIR}host/bin:$PATH:${STAGING_DIR}toolchain-mips_mips32_gcc-5.4.0_musl/bin"
make distclean
make huawei_hg556a_ram_defconfig
make ARCH=mips CROSS_COMPILE=mips-openwrt-linux-

Código: [Seleccionar]
dd if=/dev/zero of=rootfs.bin bs=2M count=1

rm -f u-boot.bin.* u-boot.img
$STAGING_DIR/host/bin/lzma e u-boot.bin -d22 -fb64 -a1 u-boot.bin.lzma
dd if=u-boot.bin.lzma of=u-boot.bin.lzma.cfe bs=5 count=1
dd if=u-boot.bin.lzma of=u-boot.bin.lzma.cfe ibs=13 obs=5 skip=1 seek=1 conv=notrunc

$STAGING_DIR/host/bin/imagetag -i u-boot.bin.lzma.cfe -f rootfs.bin --output u-boot.img --boardid "F@ST1704" --chipid 6338 --entry 0x80010000 --load-addr 0x80010000

Código: [Seleccionar]
$STAGING_DIR/host/bin/hcsmakeimage --magic_bytes=0xa0e7 --rev_maj=0003 --rev_min=0000 --input_file=u-boot.bin --output_file=/tftp/cg3100d --ldaddress=0x80010000
Si alguien se anima a hacer pruebas o a desarrollar algún driver bienvenido es :_).

P.D: sé perfectamente que conseguir reemplazar CFE en estos routers es difícil, pero soñar es gratis ;D.

Saludos!
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: mega-samu en 18-05-2017, 18:26 (Jueves)
Espero no hacer ninguna pregunta estupida, es posible traer este proyecto a otros broadcom como el BCM63168?
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 18-05-2017, 18:42 (Jueves)
Espero no hacer ninguna pregunta estupida, es posible traer este proyecto a otros broadcom como el BCM63168?
Los BCM63168 y los BCM63268 son exactamente lo mismo (de hecho el VR-3032u lleva BCM63168), así que ya está hecho ;).
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Pteridium en 18-05-2017, 20:08 (Jueves)
Como hace poco tenía algo de tiempo decidí ponerme a investigar sobre si sería posible ejecutar U-Boot en routers BCM63xx. Después de varios intentos al final fui capaz de ejecutarlo y ahora mismo estoy portando drivers y haciéndolos compatibles con U-Boot.
¡Flipante!  >:( >:( >:( >:(

Tengo un par de AR-5381, así que este finde a probar.
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: vk496 en 18-05-2017, 22:59 (Jueves)
Tengo un HG556a v. A... Necesitas que haga algo con él para ampliar el soporte? O tiras de Internet para estas cosas?

Por apoyar cuando tenga hueco libre.

Salu2
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 19-05-2017, 08:02 (Viernes)
Buenas!

He solucionado un par de fallos en el driver del uart y ya he enviado los parches para el soporte del SPI.
Lo siguiente será probablemente el driver del HSSPI.

¡Flipante!  >:( >:( >:( >:(

Tengo un par de AR-5381, así que este finde a probar.
Sabes que el feedback siempre será bienvenido :).
A ver si saco un rato este finde y puedo probar el driver del HSSPI y hacer que funcione :P

Tengo un HG556a v. A... Necesitas que haga algo con él para ampliar el soporte? O tiras de Internet para estas cosas?

Por apoyar cuando tenga hueco libre.

Salu2
No es necesario que pruebes nada en concreto porque en estos routers no tengo pensado reemplazar CFE con U-Boot, ya que va bastante bien y no hay ningún problema que haga U-Boot necesario.
Simplemente he añadido soporte para el HG556a por ver que funciona bien el BCM6358 y por tener una plataforma donde probar el driver SPI (gracias a la documentación de danitool empecé a probar el driver SPI en este router conectándolo a una flash externa).
Lo que sí que me gustaría es que la gente trasteara un poco y diese feedback de que los diferentes drivers y las funcionalidades de U-Boot van bien (ayer por ejemplo me di cuenta de que el driver del uart no iba bien con algunos baud rates).
Por otro lado, comentarte que tengas en cuenta que la ver A del HG556a no tiene los mismos LEDs que la ver C, por lo que si lo pruebas lo normal es que los LEDs no te coincidan :).

Saludos!
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Pteridium en 19-05-2017, 12:05 (Viernes)
Buenas!

He solucionado un par de fallos en el driver del uart y ya he enviado los parches para el soporte del SPI.
Lo siguiente será probablemente el driver del HSSPI.

Tengo un HG556a v. A... Necesitas que haga algo con él para ampliar el soporte? O tiras de Internet para estas cosas?

Por apoyar cuando tenga hueco libre.

Salu2
No es necesario que pruebes nada en concreto porque en estos routers no tengo pensado reemplazar CFE con U-Boot, ya que va bastante bien y no hay ningún problema que haga U-Boot necesario.
Bueno, tengo un Vodafone Router Avanzado(SHG2500) (https://wiki.openwrt.org/inbox/vodafone/vodafone_station_revolution) por ahí que creo que no estaría mal para ir haciendo pruebas. Tiene flash NAND así que no me atreví a meterle la zarpa.

Ahora viene la segunda pregunta: ¿como se genera un firm que arranque desde uboot?
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 20-05-2017, 10:15 (Sábado)
Bueno, tengo un Vodafone Router Avanzado(SHG2500) (https://wiki.openwrt.org/inbox/vodafone/vodafone_station_revolution) por ahí que creo que no estaría mal para ir haciendo pruebas. Tiene flash NAND así que no me atreví a meterle la zarpa.

Ahora viene la segunda pregunta: ¿como se genera un firm que arranque desde uboot?
Pues debería de ser bastante sencillo, y aunque no lo he probado bastaría con hacer lo siguiente:
Código: [Seleccionar]
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
Simplemente habría que tener en cuenta que LEDE espera recibir "0x43464531" en el arg3 (registro a3) para que  el arranque no sea detectado como RedBoot, sino como CFE.

Saludos!
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Tki2000 en 21-05-2017, 09:26 (Domingo)
Desaparezco unos días, y al volver me encuentro esto.
Noltari, ¡Eres un máquina!
 >:( >:( >:(
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 23-05-2017, 19:35 (Martes)
Buenas,

Por fin he conseguido que funcione el driver del hsspi:
https://github.com/Noltari/u-boot/commits/bmips-hsspi

También he arreglado un fallo en el driver del uart que hacía que algunos baud rates no funcionaran bien y he conseguido averiguar por qué en el bcm3380 no funciona bien el uart:
- El periph-osc (o pll) que llevan los bcm3380 es de 48MHz, y no de 50MHz, lo que hacía que el baud rate no se calculara correctamente en el driver.
- Por lo que he podido observar, se producen muchos overflows cuando las luces de uplink y downlink están encendidas, lo que me hace pensar que habría que apagar (o al menos dormir) el core del HFC.

Según mis cálculos, estos son los baud rates que deberían soportar los routers con 48 vs 50 MHz:
(https://i.snag.gy/ves1nS.jpg) (https://snag.gy/ves1nS.jpg)

Saludos!
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: BernoO en 28-05-2017, 16:53 (Domingo)
HOla master noltari!

Consulta: Existirá la posibilidad de cargar u-boot en un Technicolor TG789vn v3? Es posible cargar firmware generando un TFTP server en el pc cliente con una IP fija.
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: WiFlash en 29-05-2017, 21:01 (Lunes)
Me gustaría hacer una pregunta, un poco estúpida, pero me inquieta.
¿Qué posibilidades nos da U-boot en los routers?
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: BernoO en 29-05-2017, 22:27 (Lunes)
Me gustaría hacer una pregunta, un poco estúpida, pero me inquieta.
¿Qué posibilidades nos da U-boot en los routers?

Según yo, llevar OpenWRT en dispositivos con memorias NAND y CPU Broadcom. Claro, se puede usar CFE, pero por temas legales CFE no puede ser incluido dentro de una imagen de firmware por problemas legales, y por el hecho de ser (en varios casos) codigo cerrado.

En mi caso, en el dispositivo que estoy consultando yo, Technicolor (o thomson) tiene un CFE custom, que no permite hacer partir OpenWRT ya que no se sabe hacia que sector de la memoria NAND apunta el CFE. Además, como es codigo cerrado, es dificil de modificar.

La idea seria compilar imagenes que ya vengan con el bootloader, y en este caso u-boot es codigo abierto. Ergo, sin problemas legales.

Eso me parece que es.
Título: Re: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: WiFlash en 30-05-2017, 19:45 (Martes)
Me gustaría hacer una pregunta, un poco estúpida, pero me inquieta.
¿Qué posibilidades nos da U-boot en los routers?

Según yo, llevar OpenWRT en dispositivos con memorias NAND y CPU Broadcom. Claro, se puede usar CFE, pero por temas legales CFE no puede ser incluido dentro de una imagen de firmware por problemas legales, y por el hecho de ser (en varios casos) codigo cerrado.

En mi caso, en el dispositivo que estoy consultando yo, Technicolor (o thomson) tiene un CFE custom, que no permite hacer partir OpenWRT ya que no se sabe hacia que sector de la memoria NAND apunta el CFE. Además, como es codigo cerrado, es dificil de modificar.

La idea seria compilar imagenes que ya vengan con el bootloader, y en este caso u-boot es codigo abierto. Ergo, sin problemas legales.

Eso me parece que es.
Osea que el tema de U-boot es todo por el tema legal?

Enviado desde mi Xperia M2 Aqua mediante Tapatalk

Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 31-05-2017, 11:23 (Miércoles)
HOla master noltari!

Consulta: Existirá la posibilidad de cargar u-boot en un Technicolor TG789vn v3? Es posible cargar firmware generando un TFTP server en el pc cliente con una IP fija.
El bootloader de ese router creo que no es CFE, por lo que si como dices se pueden cargar binarios por TFTP entonces sí, se podría.
De todas formas ese dispositivo es un poco peculiar porque no hay muchos BCM6368 con NAND...

Saludos.
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 31-05-2017, 12:01 (Miércoles)
Me gustaría hacer una pregunta, un poco estúpida, pero me inquieta.
¿Qué posibilidades nos da U-boot en los routers?

Según yo, llevar OpenWRT en dispositivos con memorias NAND y CPU Broadcom. Claro, se puede usar CFE, pero por temas legales CFE no puede ser incluido dentro de una imagen de firmware por problemas legales, y por el hecho de ser (en varios casos) codigo cerrado.

En mi caso, en el dispositivo que estoy consultando yo, Technicolor (o thomson) tiene un CFE custom, que no permite hacer partir OpenWRT ya que no se sabe hacia que sector de la memoria NAND apunta el CFE. Además, como es codigo cerrado, es dificil de modificar.

La idea seria compilar imagenes que ya vengan con el bootloader, y en este caso u-boot es codigo abierto. Ergo, sin problemas legales.

Eso me parece que es.
Voy a explicar un poco el principal problema de BCM63xx y la NAND (esta explicación es válida para los BCM63268, puesto que los BCM6328/BCM6368 suelen hacerlo de otras formas):

Como habréis podido deducir, esto implica que para generar imágenes que se puedan almacenar en la NAND de estos dispositvos, necesitamos crear una imagen que consistiría en un sistema de ficheros JFFS2 que contenga el cferam.XXX único del dispositivo, el kernel y el propio sistema de ficheros.
El problema es que incluir el cferam.XXX en una imagen generada desde LEDE/OpenWrt suele conllevar problemas legales
Por otro lado, tendríamos que lidiar con el hecho de utilizar JFFS2 para la NAND, lo que no es nada adecuado ya que acabaría cargándose la NAND a largo plazo (lo recomendable es usar ubifs).

La idea es generar una imagen que únicamente flashearíamos una vez y que contenga únicamente el u-boot.bin camuflado como cferam.XXX, de forma que en lugar de arrancar el kernel de la misma imagen, podría hacerse desde otra partición que ya no tendría que ser JFFS2.

Por último, decir que u-boot también es útil para probar diferentes periféricos del router antes de añadir soporte en LEDE/OpenWrt para el mismo, puesto que se puede alterar fácilmente la memoria y, por tanto, facilitar diferentes procesos como encontrar los gpios del router, los LEDs...

Saludos!
Título: Re: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: WiFlash en 31-05-2017, 15:19 (Miércoles)
Me gustaría hacer una pregunta, un poco estúpida, pero me inquieta.
¿Qué posibilidades nos da U-boot en los routers?

Según yo, llevar OpenWRT en dispositivos con memorias NAND y CPU Broadcom. Claro, se puede usar CFE, pero por temas legales CFE no puede ser incluido dentro de una imagen de firmware por problemas legales, y por el hecho de ser (en varios casos) codigo cerrado.

En mi caso, en el dispositivo que estoy consultando yo, Technicolor (o thomson) tiene un CFE custom, que no permite hacer partir OpenWRT ya que no se sabe hacia que sector de la memoria NAND apunta el CFE. Además, como es codigo cerrado, es dificil de modificar.

La idea seria compilar imagenes que ya vengan con el bootloader, y en este caso u-boot es codigo abierto. Ergo, sin problemas legales.

Eso me parece que es.
Voy a explicar un poco el principal problema de BCM63xx y la NAND (esta explicación es válida para los BCM63268, puesto que los BCM6328/BCM6368 suelen hacerlo de otras formas):
  • El bootrom carga en memoria el primer bloque de la NAND (cferom) y lo ejecuta. Este cferom no es más que un SPL (Secondary Program Loader), que se encarga de decidir si se va a utilizar la primera o la segunda imagen de la NAND.
  • El cferom abre el sistema de ficheros de la imagen escogida y carga en memoria el cferam.XXX ubicado en dicha partición, que sería la parte principal del CFE.
  • cferam se ejecuta esperando una posible interrupción del usuario o bien carga el kernel almacenado en la partición y lo ejecuta.

Como habréis podido deducir, esto implica que para generar imágenes que se puedan almacenar en la NAND de estos dispositvos, necesitamos crear una imagen que consistiría en un sistema de ficheros JFFS2 que contenga el cferam.XXX único del dispositivo, el kernel y el propio sistema de ficheros.
El problema es que incluir el cferam.XXX en una imagen generada desde LEDE/OpenWrt suele conllevar problemas legales
Por otro lado, tendríamos que lidiar con el hecho de utilizar JFFS2 para la NAND, lo que no es nada adecuado ya que acabaría cargándose la NAND a largo plazo (lo recomendable es usar ubifs).

La idea es generar una imagen que únicamente flashearíamos una vez y que contenga únicamente el u-boot.bin camuflado como cferam.XXX, de forma que en lugar de arrancar el kernel de la misma imagen, podría hacerse desde otra partición que ya no tendría que ser JFFS2.

Por último, decir que u-boot también es útil para probar diferentes periféricos del router antes de añadir soporte en LEDE/OpenWrt para el mismo, puesto que se puede alterar fácilmente la memoria y, por tanto, facilitar diferentes procesos como encontrar los gpios del router, los LEDs...

Saludos!
Gracias, saludos

Enviado desde mi Xperia M2 Aqua mediante Tapatalk

Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: BernoO en 31-05-2017, 15:42 (Miércoles)
Me gustaría hacer una pregunta, un poco estúpida, pero me inquieta.
¿Qué posibilidades nos da U-boot en los routers?

Según yo, llevar OpenWRT en dispositivos con memorias NAND y CPU Broadcom. Claro, se puede usar CFE, pero por temas legales CFE no puede ser incluido dentro de una imagen de firmware por problemas legales, y por el hecho de ser (en varios casos) codigo cerrado.

En mi caso, en el dispositivo que estoy consultando yo, Technicolor (o thomson) tiene un CFE custom, que no permite hacer partir OpenWRT ya que no se sabe hacia que sector de la memoria NAND apunta el CFE. Además, como es codigo cerrado, es dificil de modificar.

La idea seria compilar imagenes que ya vengan con el bootloader, y en este caso u-boot es codigo abierto. Ergo, sin problemas legales.

Eso me parece que es.
Voy a explicar un poco el principal problema de BCM63xx y la NAND (esta explicación es válida para los BCM63268, puesto que los BCM6328/BCM6368 suelen hacerlo de otras formas):
  • El bootrom carga en memoria el primer bloque de la NAND (cferom) y lo ejecuta. Este cferom no es más que un SPL (Secondary Program Loader), que se encarga de decidir si se va a utilizar la primera o la segunda imagen de la NAND.
  • El cferom abre el sistema de ficheros de la imagen escogida y carga en memoria el cferam.XXX ubicado en dicha partición, que sería la parte principal del CFE.
  • cferam se ejecuta esperando una posible interrupción del usuario o bien carga el kernel almacenado en la partición y lo ejecuta.

Como habréis podido deducir, esto implica que para generar imágenes que se puedan almacenar en la NAND de estos dispositvos, necesitamos crear una imagen que consistiría en un sistema de ficheros JFFS2 que contenga el cferam.XXX único del dispositivo, el kernel y el propio sistema de ficheros.
El problema es que incluir el cferam.XXX en una imagen generada desde LEDE/OpenWrt suele conllevar problemas legales
Por otro lado, tendríamos que lidiar con el hecho de utilizar JFFS2 para la NAND, lo que no es nada adecuado ya que acabaría cargándose la NAND a largo plazo (lo recomendable es usar ubifs).

La idea es generar una imagen que únicamente flashearíamos una vez y que contenga únicamente el u-boot.bin camuflado como cferam.XXX, de forma que en lugar de arrancar el kernel de la misma imagen, podría hacerse desde otra partición que ya no tendría que ser JFFS2.

Por último, decir que u-boot también es útil para probar diferentes periféricos del router antes de añadir soporte en LEDE/OpenWrt para el mismo, puesto que se puede alterar fácilmente la memoria y, por tanto, facilitar diferentes procesos como encontrar los gpios del router, los LEDs...

Saludos!

Gracias por la excelente explicacion! Lo del tema legal lo habia leido entrecruzando info entre DDWRT y OpenWRT.

Entonces, con u-boot se puede usar squashfs?...me respondo solo:
http://openwrtsummit.org/slides/openwrt-nand-ubi-2016.pdf (http://openwrtsummit.org/slides/openwrt-nand-ubi-2016.pdf)

Lectura corta pero se entiende todo el nuevo proceso que se viene.
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Noltari en 02-06-2017, 08:43 (Viernes)
Buenas,

He actualizado el post principal con el último merge de u-boot/mips al repo principal.
Los drivers del SPI y HSSPI ya están siendo revisados y supongo que no tardarán mucho en aceptarlos.

Por otro lado, supongo que lo siguiente que añadiré será el soporte para BCM6368, ya que es el único SoC que falta de los que tengo para desarrollo.
También estoy trabajando de forma paralela en el driver del ethernet (y DMA), pero no es que sea precisamente fácil y rápido ;)
https://github.com/Noltari/u-boot/commits/bmips-eth-devel

Con respecto al driver de la NAND he encontrado un parche que envió un desarrollador de Broadcom para Cygnus/Iproc, que puede servirme de base y facilitarme mucho el trabajo, pero prefiero esperar a que se añada soporte de verdad en DM para la NAND...

Saludos!
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: ifsnop en 31-08-2017, 10:39 (Jueves)
Buenas,

Por lo que os leo, router como el Vodafone Avanzado va a estar difícil que por el momento estén soportados por openwrt/lede. Dos preguntas

¿Hay algún router con wifi ac al que se le pueda cargar Openwrt?

En la página de donaciones no he visto nada al respecto, pero ¿Vendría bien para acelerar el desarrollo la donación de algún Vodafone Avanzado?

Un saludo!
Título: Re: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: zorrua en 31-08-2017, 11:10 (Jueves)
Buenas,

Por lo que os leo, router como el Vodafone Avanzado va a estar difícil que por el momento estén soportados por openwrt/lede. Dos preguntas

¿Hay algún router con wifi ac al que se le pueda cargar Openwrt?

En la página de donaciones no he visto nada al respecto, pero ¿Vendría bien para acelerar el desarrollo la donación de algún Vodafone Avanzado?

Un saludo!
El router mini de xiaomi tiene wifi AC y funciona con LEDE.

Saludos.
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: Tki2000 en 31-08-2017, 14:12 (Jueves)
Buenas,

Por lo que os leo, router como el Vodafone Avanzado va a estar difícil que por el momento estén soportados por openwrt/lede. Dos preguntas

¿Hay algún router con wifi ac al que se le pueda cargar Openwrt?

En la página de donaciones no he visto nada al respecto, pero ¿Vendría bien para acelerar el desarrollo la donación de algún Vodafone Avanzado?

Un saludo!

TP-Link C7 v2.0, TP-Link C5 v1.x, Sitecom WLR-8100, entre otros...
Título: Re: [Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: ifsnop en 01-09-2017, 10:59 (Viernes)
Gracias! Pensaba más bien en router proporcionados por operadoras.
Un saludo!
Título: Re:[Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: antares en 15-11-2019, 12:52 (Viernes)
Retomo el tema porque he estado probando el u-boot que colgó Noltari y después de unas modificaciones he conseguido que funcione con un AD1018, reconozca la NAND y monte un UBIfs partiendo del defconfig de un ar-5387un.
Ahora voy a ver si consigo hacer un fichero de configuración por defecto para el AD1018 incluyendo las modificaciones del .config


Dejo aquí los comandos que hay que utilizar para montar un UBIfs en u-boot, por si le sirve a alguien:

Código: [Seleccionar]
CFE> r u-boot.elf
0x80010000/601731 Entry at 0x80010000
Closing network.
Disabling Switch ports.
Flushing Receive Buffers...
0 buffers found.
Closing DMA Channels.
Starting program at 0x80010000


U-Boot 2020.01-rc2 (Nov 14 2019 - 18:18:02 +0100)

CPU:   BCM63283B0
Model: Comtrend AR-5387un
DRAM:  128 MiB
NAND:  128 MiB
In:    serial@10000100
Out:   serial@10000100
Err:   serial@10000100
Model: Comtrend AR-5387un
Net:
Warning: ethernet@10e00000 (eth0) using random MAC address - da:db:3d:d3:c0:4a
eth0: ethernet@10e00000

AR-5387un # mtd list
List of MTD devices:
* nand0
  - type: NAND flash
  - block size: 0x20000 bytes
  - min I/O: 0x800 bytes
  - OOB size: 64 bytes
  - OOB available: 51 bytes
  - ECC strength: 15 bits
  - ECC step size: 512 bytes
  - bitflip threshold: 1 bits
  - 0x000000000000-0x000008000000 : "nand0"
* nor0
  - type: NOR flash
  - block size: 0x10000 bytes
  - min I/O: 0x1 bytes
  - 0x000000000000-0x000001000000 : "nor0"

###Montar particion en NAND
AR-5387un # ubi part nand0

AR-5387un # ubi part
Device 0: ubi0, MTD partition nand0

AR-5387un # ubi info
UBI: MTD device name:            "nand0"
UBI: MTD device size:            128 MiB
UBI: physical eraseblock size:   131072 bytes (128 KiB)
UBI: logical eraseblock size:    126976 bytes
UBI: number of good PEBs:        1019
UBI: number of bad PEBs:         5
UBI: smallest flash I/O unit:    2048
UBI: VID header offset:          2048 (aligned 2048)
UBI: data offset:                4096
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     1
UBI: available PEBs:             0
UBI: total number of reserved PEBs: 1019
UBI: number of PEBs reserved for bad PEB handling: 15
UBI: max/mean erase counter: 1/0

###Montar UBI filesystem
AR-5387un # ubifsmount ubi0:data

AR-5387un # ubifsls
           619775  Wed Nov 13 18:11:45 2019  u-boot.bin
          4616320  Wed Nov 13 18:14:22 2019  initramfs7.elf
               56  Sun Nov 03 08:25:29 2019  hello.txt
            25371  Sun Nov 03 08:05:20 2019  logread.txt
            12936  Sun Nov 03 08:05:06 2019  dmesg.txt

AR-5387un # ubifsload 0x80060000 hello.txt
Loading file 'hello.txt' to addr 0x80060000...
Done
AR-5387un # md 0x80060000
80060000: 48656c6c 6f204e61 6e640a2e 2e2e0a2e    Hello Nand......
80060010: 2e2e0a2e 2e2e0a2e 2e2e0a2e 2e2e0a42    ...............B
80060020: 79652c20 62796520 4e616e64 0a2e0a2e    ye, bye Nand....

###Cargar binario en memoria y ejecutarlo
AR-5387un # ubifsload 0x80010000 u-boot.bin
Loading file 'u-boot.bin' to addr 0x80010000...
Done

###Ahora estamos en un u-boot distinto
AR-5387un # go 0x80010000
## Starting application at 0x80010000 ...


U-Boot 2020.01-rc2 (Nov 15 2019 - 08:38:08 +0100)

CPU:   BCM63283B0
Model: Comtrend AR-5387un
DRAM:  128 MiB
NAND:  128 MiB
In:    serial@10000100
Out:   serial@10000100
Err:   serial@10000100
Model: Comtrend AR-5387un
Net:
Warning: ethernet@10e00000 (eth0) using random MAC address - 86:5d:67:17:74:d9
eth0: ethernet@10e00000


###Desmontar UBI filesystem
AR-5387un # ubifsumount
Unmounting UBIFS volume data!


El volumen UBI ya lo tenía creado desde Openwrt de esta forma:

mtdinfo /dev/mtd0
ubiformat /dev/mtd0
ubiattach -p /dev/mtd0
ubimkvol /dev/ubi0 -N data -s 121MiB
mkdir /mnt/data_disk
mount -t ubifs ubi0:data /mnt/data_disk

echo "Hello Nand" > /mnt/data_disk/hello.txt
cat /mnt/data_disk/hello.txt

umount /mnt/data_disk
ubidetach -p /dev/mtd0

Título: Re:[Proyecto] U-Boot para BMIPS (BCM63xx, BCM33xx)
Publicado por: antares en 02-12-2019, 10:04 (Lunes)
Ya tengo el u-boot arrancando desde la memoria nand de un ad1018 con SoC BCM6328.
El cferom.bin, de 16KB, lo he grabado en el bloque 0 de la nand y a un u-boot.bin renombrado como cferam.000 le he añadido 12 bytes de cabecera con la dirección de entrada de memoria.
Este cferam.000 se lo he pasado al mkfs.jffs2 para que creara una imagen JFFS2 y la he grabado en los bloques 1,2,3,4 y 5 (ocupa unos 600KB)
Vamos, lo que se hace con el cferam.bin lo he hecho con el u-boot.bin.
Al u-boot.bin le cambié en el make menuconfig la dirección de entrada (CONFIG_SYS_TEXT_BASE) de 0x80010000 a 0x80600000, porque la primera me machacaba los punteros debido a que un cferam es bastante más pequeño.

Pero no se cómo añadir al cferom.bin los datos por defecto de la NVRAM cuando compilo ¿Alguna idea?


Un saludo

Código: [Seleccionar]
HELO
CPUI
L1CI
DRAM
----
PHYS
ZQDN
PHYE
DINT
LSYN
USYN
MSYN
LMBE
PASS
----
ZBSS
CODE
DATA
L12F
MAIN
NAN0
NAN6
NAN7
BT00
NAN9
NAN3
RFS1
NAN5


U-Boot 2020.01-rc2 (Dec 01 2019 - 21:33:56 +0100)

CPU:   BCM63283B0
Model: Comtrend AR-5387un
DRAM:  128 MiB
NAND:  128 MiB
In:    serial@10000100
Out:   serial@10000100
Err:   serial@10000100
Model: Comtrend AR-5387un
Net:   
Warning: ethernet@10e00000 (eth0) using random MAC address - 82:e0:24:1d:c2:50
eth0: ethernet@10e00000
AR-5387un # help
?         - alias for 'help'
base      - print or set address offset
bdinfo    - print Board Info structure
bootm     - boot application image from memory
bootp     - boot image via network using BOOTP/TFTP protocol
chpart    - change active partition
cmp       - memory compare
coninfo   - print console devices and information
cp        - memory copy
cpu       - display information about CPUs
dm        - Driver model low level access
echo      - echo args to console
env       - environment handling commands
exit      - exit script
false     - do nothing, unsuccessfully
fdt       - flattened device tree utility commands
fstype    - Look up a filesystem type
go        - start application at address 'addr'
help      - print command description/usage
iminfo    - print header information for application image
itest     - return true/false on integer compare
led       - manage LEDs
license   - print GPL license text
ln        - Create a symbolic link
load      - load binary file from a filesystem
loadb     - load binary file over serial line (kermit mode)
loadx     - load binary file over serial line (xmodem mode)
loady     - load binary file over serial line (ymodem mode)
loop      - infinite loop on address range
ls        - list files in a directory (default /)
md        - memory display
meminfo   - display memory information
mii       - MII utility commands
mm        - memory modify (auto-incrementing address)
mtd       - MTD utils
mtdparts  - define flash/nand partitions
mw        - memory write (fill)
nand      - NAND sub-system
nboot     - boot from NAND device
nfs       - boot image via network using NFS protocol
nm        - memory modify (constant address)
ping      - send ICMP ECHO_REQUEST to network host
printenv  - print environment variables
random    - fill memory with random pattern
reset     - Perform RESET of the CPU
run       - run commands in an environment variable
save      - save file to a filesystem
setenv    - set environment variables
setexpr   - set environment variable as the result of eval expression
sf        - SPI flash sub-system
showvar   - print local hushshell variables
size      - determine a file's size
source    - run script from memory
sspi      - SPI utility command
test      - minimal test like /bin/sh
tftpboot  - boot image via network using TFTP protocol
true      - do nothing, successfully
ubi       - ubi commands
ubifsload - load file from an UBIFS filesystem
ubifsls   - list files in a directory
ubifsmount- mount UBIFS volume
ubifsumount- unmount UBIFS volume
version   - print monitor, compiler and linker version
AR-5387un # setenv ipaddr 192.168.3.130
AR-5387un # setenv serverip 192.168.3.40
AR-5387un # printenv
baudrate=115200
bootdelay=2
fdtcontroladdr=87d5b94c
ipaddr=192.168.3.130
serverip=192.168.3.40
stderr=serial@10000100
stdin=serial@10000100
stdout=serial@10000100

Environment size: 164/8188 bytes
AR-5387un # sspi
SF: Detected s25fl129p1 with page size 256 Bytes, erase size 64 KiB, total 16 MiB

AR-5387un # mtd list
List of MTD devices:
* nand0
  - type: NAND flash
  - block size: 0x20000 bytes
  - min I/O: 0x800 bytes
  - OOB size: 64 bytes
  - OOB available: 51 bytes
  - ECC strength: 15 bits
  - ECC step size: 512 bytes
  - bitflip threshold: 1 bits
  - 0x000000000000-0x000008000000 : "nand0"
* nor0
  - type: NOR flash
  - block size: 0x10000 bytes
  - min I/O: 0x1 bytes
  - 0x000000000000-0x000001000000 : "nor0"
AR-5387un # meminfo
DRAM:  128 MiB
AR-5387un # cpu list
  0: cpu@0      BCM63283B0
  1: cpu@1      BCM63283B0
AR-5387un # bdinfo
boot_params = 0x87d65d08
memstart    = 0x80000000
memsize     = 0x08000000
flashstart  = 0x00000000
flashsize   = 0x00000000
flashoffset = 0x00000000
ethaddr     = (not set)
IP addr     = 192.168.3.130
baudrate    = 115200 bps
relocaddr   = 0x87f60000
reloc off   = 0x07960000
AR-5387un # coninfo
List of available devices:
serial@10000100 00000007 IO stdin stdout stderr
serial   00000003 IO
AR-5387un #