Seguridad Wireless - Wifi

Equipos y materiales => Puntos de acceso, routers, switchs y bridges => Openwrt & LEDE => Mensaje iniciado por: danitool en 09-02-2015, 11:16 (Lunes)

Título: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: danitool en 09-02-2015, 11:16 (Lunes)
Propósito: aumentar el rendimiento en un router con chip BCM6358 (p.ej HG556a) usando el primer core en lugar del segundo

Explicación: en los BCM6358, el segundo core tiene la mitad de caché que el primero, si el router está usando el segundo core, no estamos aprovechando todo el potencial que por ahora nos ofrece la CPU.

Routers que se pueden beneficiar: aquellos que están usando el segundo core por defecto (p.ej HG556a, HG553). Para saber si podemos beneficiarnos del cambio vemos el dmesg:
Citar
[    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
Si vemos eso, entonces podremos beneficiarnos del cambio de core.

Como cambiamos de core: Para el cambio de core he compilado una pequeña utilidad testada en el HG566a. De esto ya se habló en el hilo del HG556a. Donde también se detallaba como hacerlo manualmente. La aplicación la he llamado tp0set, y el binario solo funciona para versiones iguales of inferiores a Barrier Braker. Lo he testeado varias veces sobre un HG556a versión B, y jamás obtuve un brick como resultado, así que la considero totalmente fiable.

Esta es la aplicación empaquetada:
tp0set_1.0-1_brcm63xx.ipk (https://drive.google.com/uc?export=download&id=0B-EMoBe-_OdBREU4TTc2MWZZQVk)

Este paquete se instala con opkg. Ahí va una sesión de instalación, y ejecución. Después de ello hay que reiniciar para que surta efecto.

Código: [Seleccionar]
root@OpenWrt:/tmp# opkg install tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:/tmp# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 20000 bytes
Eraseing Block 0
Writting to /dev/mtd0...
Done!!
root@OpenWrt:/tmp#

para saber si efectivamente surtió efecto podemos comprobar el dmesg
 antes
Citar
[    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
después
Citar
[    0.000000] Primary instruction cache 32kB, VIPT, 2-way, linesize 16 bytes.

para volver de nuevo al core1, ejecutaríamos
Código: [Seleccionar]
tp0set 1
Esta aplicación debería servir para cualquier router con SoC BCM6358, como por ejemplo el HG553 el cual presumiblemente también se ejecuta por defecto el segundo core con menos caché. Tampoco espereis un aumento espectacular de rendimiento, es más bien una minioptimización.

Quiero remarcar que la utilidad solo fue testada sobre un HG556a. Además la utilidad espera que el tamaño de la partición /dev/mtd0 sea de 128KB que es lo que tiene el HG566a, y supongo que también el resto de BCM6358.

El código fuente de la aplicación aquí: tp0set.tar.gz (https://drive.google.com/uc?export=download&id=0B-EMoBe-_OdBWm4wVGF1NVZnOGc)

En resumen lo que hace es cambiar el un byte dentro CFE, el cual CFE lee para saber que core iniciará como principal. Como los cambios se hacen en CFE, estos sobreviven para siempre, da igual el firmware que instalemos posteriormente aunque no sea OpenWrt.

Saludos.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: manuelacantasaetas en 09-02-2015, 16:10 (Lunes)
 >:(
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: jar229 en 10-02-2015, 11:55 (Martes)
Añadido al [Índice] Hilos relevantes de OpenWrt (https://foro.seguridadwireless.net/openwrt/(indice)-hilos-relevantes-de-openwrt/)

Le pongo 'chicheta' unas semanitas  >:( >:( >:(
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: danitool en 10-02-2015, 14:30 (Martes)
Haciendo un test simple de transferencia directa hacia dentro del router. En concreto haciendo esto:
Código: [Seleccionar]
wget -O- ftp://server.cablered/archivo.grande > /dev/null
He calculado que usando el core0 tengo un incremento de rendimiento del de entre el 15% al 20% con respecto a usar el core1, lo cual no está mal.

Saludos
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Tki2000 en 10-02-2015, 19:22 (Martes)
Haciendo un test simple de transferencia directa hacia dentro del router. En concreto haciendo esto:
Código: [Seleccionar]
wget -O- ftp://server.cablered/archivo.grande > /dev/null
He calculado que usando el core0 tengo un incremento de rendimiento del de entre el 15% al 20% con respecto a usar el core1, lo cual no está mal.

Saludos

A mi eso no me parece una "minioptimización"...  ;D ;D ;D

Edito: He bajado el tiempo de arranque en más de 4 segundos, y se ha incrementado en alrededor de un 15% la transferencia wifi grabando a un disco USB/NTFS.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: seny en 12-02-2015, 11:19 (Jueves)
Muy bueno, solo son 16kb caché  pero resulta que es el doble de lo que habia.. se tiene que notar  >:(
La forma de aplicarlo de danitool, genial.
saludos
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: darkvier en 13-03-2015, 20:24 (Viernes)
Funciona a la perfeccion   >:(
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: mitsurugi en 21-03-2015, 15:05 (Sábado)
Lo probe con una backport_10.03.1 y tras reiniciar el router, me funciona correctamente!
Aprovecho para preguntar, ¿sera recomendable actualizar la version de openwrt a la Barrier Braker? o con la que tengo sera mas que suficiente?
Gracias.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: artistaInvitado en 21-03-2015, 20:22 (Sábado)
Genial!!!
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: seny en 25-03-2015, 19:18 (Miércoles)
Lo he instalado desde un pincho usb, pego la sesión que a alguno le será útil ver como hacerlo por esta via:
Citar
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -f /mnt/tp0set_1.0-1_brcm63xx.ipk /tmp
root@OpenWrt:~# opkg install /tmp/tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:~# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 10000 bytes
Eraseing Block 0
Eraseing Block 0x10000
Writting to /dev/mtd0...
Done!!
root@OpenWrt:~#
Aunque no se porque motivo hay una línea con distinto valor,
MTD erase size: 10000 bytes en lugar de 20000.., funcionó igualmente.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Tki2000 en 25-03-2015, 20:59 (Miércoles)
Lo he instalado desde un pincho usb, pego la sesión que a alguno le será útil ver como hacerlo por esta via:
Citar
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -f /mnt/tp0set_1.0-1_brcm63xx.ipk /tmp
root@OpenWrt:~# opkg install /tmp/tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:~# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 10000 bytes
Eraseing Block 0
Eraseing Block 0x10000
Writting to /dev/mtd0...
Done!!
root@OpenWrt:~#
Aunque no se porque motivo hay una línea con distinto valor,
MTD erase size: 10000 bytes en lugar de 20000.., funcionó igualmente.

20000 es el valor total de longitud a borrar
10000 es el valor de longitud de bloque
Por lo tanto borra dos bloques, el 0x00000 y el 0x10000, y después los escribe con los valores nuevos.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: seny en 25-03-2015, 22:39 (Miércoles)
Ok, por lo que veo comparando la sesión de instalación de danitool, su router tiene definido el MTD en un solo bloque de 20000 bytes y el mio tiene 2 bloques de 10000 bytes, esto supongo que se podrá definir porque el router es el mismo.

Hay alguna ventaja con el MTD en un solo bloque? y si es así donde lo definimos?
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Tki2000 en 26-03-2015, 08:30 (Jueves)
Ok, por lo que veo comparando la sesión de instalación de danitool, su router tiene definido el MTD en un solo bloque de 20000 bytes y el mio tiene 2 bloques de 10000 bytes, esto supongo que se podrá definir porque el router es el mismo.

Hay alguna ventaja con el MTD en un solo bloque? y si es así donde lo definimos?

No es nada que se pueda configurar. Depende del chip de memoria que tengas instalado en el router.
Visita la página http://wiki.openwrt.org/toh/huawei/hg556a (http://wiki.openwrt.org/toh/huawei/hg556a) y verás que hay varios chips de memoria para ese router, y que, sus respectivos bloques de borrado, tienen diferentes tamaños.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: seny en 26-03-2015, 16:19 (Jueves)
Pues por lo que veo creo que tengo un submodelo que no está catalogado correctamente en el wiki, lo voy a postear en el hilo del router para ver si algun otro forero lo puede ratificar.
Título: Re: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: venturi en 30-03-2015, 16:57 (Lunes)
Lo he instalado desde un pincho usb, pego la sesión que a alguno le será útil ver como hacerlo por esta via:
Citar
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -f /mnt/tp0set_1.0-1_brcm63xx.ipk /tmp
root@OpenWrt:~# opkg install /tmp/tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:~# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 10000 bytes
Eraseing Block 0
Eraseing Block 0x10000
Writting to /dev/mtd0...
Done!!
root@OpenWrt:~#
Aunque no se porque motivo hay una línea con distinto valor,
MTD erase size: 10000 bytes en lugar de 20000.., funcionó igualmente.
Muchas gracias, me ha venido muy bien;);D
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: theocles en 19-01-2016, 00:45 (Martes)
perdon que diga como instalo este paquete pero no se donde tengo que meter el archivo para que puede instalarlo desde ssh. gracias
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Tki2000 en 19-01-2016, 10:20 (Martes)
perdon que diga como instalo este paquete pero no se donde tengo que meter el archivo para que puede instalarlo desde ssh. gracias

He puesto una sección en las  FAQ  (https://foro.seguridadwireless.net/openwrt/%28faq%29-preguntas-mas-comunes-sobre-openwrt/). Léetela.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: theocles en 19-01-2016, 17:41 (Martes)
perdon que diga como instalo este paquete pero no se donde tengo que meter el archivo para que puede instalarlo desde ssh. gracias

He puesto una sección en las  FAQ  (https://foro.seguridadwireless.net/openwrt/%28faq%29-preguntas-mas-comunes-sobre-openwrt/). Léetela.

Gracias tki2000 por la ayuda, lo he conseguido instalar mediante usb pero cuando hago el dmesg esta linea [    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes. la tengo igual que antes ,sera por la version que tengo instalada?tengo la Chaos Calmer 15.05.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Warryor en 19-01-2016, 18:01 (Martes)
Si es por la versión yo tuve que poner una versión antigua y después volver a CC
Te lo pone en el primer post
Solo funciona para versiones iguales o inferiores a Barrier Braker
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: theocles en 19-01-2016, 19:02 (Martes)
Si es por la versión yo tuve que poner una versión antigua y después volver a CC
Te lo pone en el primer post
Solo funciona para versiones iguales o inferiores a Barrier Braker
si pongo la version de barrier braker y le aplico el ipk y despues actualizo a CC se guardaran los cambios??
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: crislgga en 19-01-2016, 19:20 (Martes)
Si es por la versión yo tuve que poner una versión antigua y después volver a CC
Te lo pone en el primer post
Solo funciona para versiones iguales o inferiores a Barrier Braker
si pongo la version de barrier braker y le aplico el ipk y despues actualizo a CC se guardaran los cambios??
Sin entrar a probar, yo diria que no, ya que lo que guarda son los ficheros de configuracion /etc, es decir, los cambios que has hecho en la red, y varias configuraciones realizadas ya sobre X paquetes, pero los paquetes que has instalado en BB, no se conservarán al alctualizar a CC si no van incluido en el firm a actualizar
saludos
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Warryor en 19-01-2016, 19:59 (Martes)
Si que los guarda, ya que los cambios son en el CFE. Solo decir que para poner el firmware original hay que ponerlo como estaba.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: theocles en 19-01-2016, 20:28 (Martes)
Si que los guarda, ya que los cambios son en el CFE. Solo decir que para poner el firmware original hay que ponerlo como estaba.

pues te agradeceria que me los explicaras que as hecho
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Warryor en 19-01-2016, 22:02 (Martes)
Pues mi router es un HG556, e bajado la version Barrier Breaker de https://wiki.openwrt.org/toh/huawei/hg556a (https://wiki.openwrt.org/toh/huawei/hg556a)
Instale el paquete desde un usb y lo ejecute
E instale un firmware que yo e compilado
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: Tki2000 en 19-01-2016, 22:39 (Martes)
Si es por la versión yo tuve que poner una versión antigua y después volver a CC
Te lo pone en el primer post
Solo funciona para versiones iguales o inferiores a Barrier Braker
si pongo la version de barrier braker y le aplico el ipk y despues actualizo a CC se guardaran los cambios??

Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: seny en 09-09-2016, 20:39 (Viernes)
Tengo un HG556 Ver.A de los primeros (S.N.:30462.......) con 16kB en ambos cores, si alguien más se ha encontrado con lo mismo se podría ratificar y si alguien quiere más datos de la singularidad..  :-\puedo hacer las comprobaciones que hagan falta.
Saludos
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: drotha2 en 11-09-2016, 21:48 (Domingo)
hola,

Yo estoy con un HG556a Ver.B, estoy testando Lede, sabéis si se puede realizar esto con ese firmware?

Muchas gracias.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: danitool en 11-09-2016, 22:04 (Domingo)
hola,

Yo estoy con un HG556a Ver.B, estoy testando Lede, sabéis si se puede realizar esto con ese firmware?

Muchas gracias.
En principio no ya que la partición de CFE es de solo lectura, y por tanto la utilidad no podrá escribir los cambios oportunos ahí. Habría que recompilar el firmware con lo cambios pertinentes en el código fuente para permitir escritura en la partición CFE.

Ha de hacerse en Openwrt con versiones Barrier Breaker o inferiores.
Título: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: seny en 12-09-2016, 18:40 (Lunes)
hola,

Yo estoy con un HG556a Ver.B, estoy testando Lede, sabéis si se puede realizar esto con ese firmware?

Muchas gracias.
En principio no ya que la partición de CFE es de solo lectura, y por tanto la utilidad no podrá escribir los cambios oportunos ahí. Habría que recompilar el firmware con lo cambios pertinentes en el código fuente para permitir escritura en la partición CFE.

Ha de hacerse en Openwrt con versiones Barrier Breaker o inferiores.
Perdonadme.. no recordaba esto que dices, creo que ya se había comentado, yo lo estaba haciendo sobre Chaos Calmer y claro.. aunque el proceso no daba error el cambio no se realizaba, he puesto el Barrier Breaker y lo ha realizado, luego he vuelto al Chaos Calmer y como ya habias comentado también, el cambio perdura.
Saludos
Título: Re:BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: peperfus en 24-01-2020, 10:39 (Viernes)
Otros 2 optimizados OK sin problemas.
Genial. Muchas gracias.

Sólo comentar que me costó un poco encontrar el firmware Barrier Breaker, al no estar accesible desde la web principal oficial de openwrt. Creo que deberían incluír links a todos los firmwares disponibles, no sólo a los últimos.

https://wiki.openwrt.org/toh/huawei/hg556a
Título: Re:BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: raphik en 24-01-2020, 13:51 (Viernes)
...
Sólo comentar que me costó un poco encontrar el firmware Barrier Breaker, al no estar accesible desde la web principal oficial de openwrt. Creo que deberían incluír links a todos los firmwares disponibles, no sólo a los últimos...

Hay un histórico en: https://downloads.openwrt.org/

(https://i.imgur.com/DTGKDS6.png)

Saludos.

Título: Re:BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: danitool en 24-01-2020, 17:01 (Viernes)
Otros 2 optimizados OK sin problemas.
Genial. Muchas gracias.

Sólo comentar que me costó un poco encontrar el firmware Barrier Breaker, al no estar accesible desde la web principal oficial de openwrt. Creo que deberían incluír links a todos los firmwares disponibles, no sólo a los últimos.

https://wiki.openwrt.org/toh/huawei/hg556a

En la web actual del propio router están los links:
https://openwrt.org/toh/huawei/hg556a#old_firmwares
Título: Re:BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
Publicado por: peperfus en 24-01-2020, 18:11 (Viernes)
Touché   :P

Si las flechas son más grandes, me pillan  ;D
Espero no tener pesadillas con ellas

Gracas, cracks !  >:(