OpenWRT en Inventel Livebox DV4210 (Parte 2/3) – Instalación


ATENCIÓN: Los siguientes pasos si no se realizan correctamente podrían dañar por completo tu router (y aun esta por determinar, que aunque lo hagas bien pueda fallar). Úsalo solo como proposito experimental y bajo tu propia responsabilidad. Una cosa que debemos tener clara es que de momento este router no se puede volver a utilizar como router ADSL a no ser que sepas mucho lo que haces.

Me he guiado con el HOW-TO de danitool para instalar OpenWRT en el Livebox y me ha funcionado con autentico éxito. Esta entrada es una traducción con alguna modificación (de experiencia propia) de su post original.

Este HOWTO es una continuacion de la entrada anterior y deberias leerla para aclarar la configuración de red que estamos utilizando.


IP Router: 192.168.1.1
IP Ordenador: 192.168.1.2


Lo primero que necesitamos es tener acceso por Telnet al Livebox. De esto ya hemos hablado en este blog en la entrada OpenWRT en Inventel Livebox DV4210 (Parte 1/3) – Liberación. Tambien necesitamos acceso sobre el puerto serie al Livebox, el cual vamos a explicar aqui como realizarlo. Para avanzar un poco aclarar que es un cable especial (la mayoria de los routers tienen un puerto serie y OpenWRT se carga mendiante comandos escritos por el puerto serie). Yo he usado un MAX3232 (que se puede encontrar en cualquier tienda de electronica por no mucho dinero) aunque se pueden utilizar cables de conexión al telefono movil que tengan un adaptador de USB a serie RS232. Lo mas importante es identificar las patillas TX, RX y GND de ese cable. El software para controlar el router por el puerto serie puede ser el CuteCom de Linux o el Hyperterminal de Windows.

Este es el esquema de nuestro objetivo: SoC BCM6348

SoC BCM 6348

Para conectar este cable tenemos varias opciones.

  • Conseguir un conector MMJ tipo DEC para conectarlo al conector blanco.
  • Desmontar el router y soldar directamente en placa en el conector blanco.

MMJ tipo DEC

Entre medias debemos poner el MAX3232 para adaptar las señales del puerto serie del Router (TTL) a señales que entienda el ordenador (RS232). En la imagen se puede observar el conector blanco con una numeración. Cada patilla corresponde a una cosa distinta.

  1. RX
  2. TX
  3. Boton 2 (no utilizado en este tutorial)
  4. Boton 1 (no utilizado en este tutorial)
  5. +5v
  6. GND

Un esquema del MAX3232 puede ser el siguiente: (hay muchos por internet)

Esquema MAX3232

Los condensadores utilizados son de aproximadamente 1uF y si queremos coger los 5v que el router nos proporciona por el puerto serie, debemos poner dos diodos (o tres) en serie con el catodo apuntando hacia la patilla 16 del MAX3232 para que caiga la tensión a una mas aproximada a 3,3v.

El patillaje de salida es el siguente:

  • EXT21: Alimentación del circuito a 3,3v.
  • EXT13: GND
  • EXT22: Al RX del router.
  • EXT23: Al TX del router.
  • X1: Conector DB9 a enchufar al RS232 del ordenador.
  • X1 – Patilla 2: RX
  • X1 – Patilla 3: TX
  • X1 – Patilla 5: GND

Primero accederemos por Telnet al router para cambiar el cargador Redboot por otro que dos deje parar e introducirnos en la linea de comandos cuando el Livebox arranca.

Este es el Reboot que flahsearemos a la «particion» mtd0:

Descargar Redboot.20040719 y utilidades

Dentro de este archivo puedes encontrar el archivo redboot.20040719 que es para cambiar el cargador a parte de mas archivos que posteriormente nos serviran para compilarnos un propio OpenWRT. El archivo redboot.20040719 lo debemos colocar en el raiz de nuestro servidor FTP para posteriormente descargarlo al Livebox.

Chequea que el archivo reboot.20040719 no este corrupto comparandolo con el de la Web de Andyp o bajandolo directamente desde su pagina Web pulsando aqui. Es muy importante que este archivo este sano ya que sino te podrias cargar el router y hacer un bonito pisapapeles con el. Tengo entendido que hay un metodo para volver a recuperarlo, que es utilizando una conexion JTAG con el ordenador y volver a flashear, pero esto no lo vamos a tratar aqui ya que de momento no se ha dado el caso.

Una vez que estamos dentro del router via Telnet tecleamos los siguientes comandos y cruzamos los dedos, si haces algo mal ROMPERAS TU ROUTER!!!.

# cd /tmp
# wget ftp://192.168.1.2/redboot.20040719

En este punto asegurate que el archivo se ha descargado correctamente a tu router.

# fcp -v redboot.20040719 /dev/mtd0
Erasing blocks: 3/3 (100%)
Writing data: 192k/192k (100%)
Verifying data: 192k/192k (100%)
#
# reboot
Sending SIGTERM to adsld and pppd.

Otra cosa que debemos hacer es instalar un servidor TFTP (distinto al servidor FTP que ya tenemos instalado) en nuestro PC. Busca información por internet al respecto, hay muchos tanto en Linux como en Windows y todos con sus respetivas configuraciones.

Dentro del directorio del TFTP debemos poner la imagen openwrt.cramfs a cargar a nuestro router. Este archivo lo podemos encontrar ya compilado y preparado para su uso en la web de danitool o bajandolo directamente desde aqui.

Una vez que has flasheado tu router con el nuevo Redboot, conecta el router al puerto serie, abre el Hyperterminal o el Cutecom (115200, 8N1) y reinicialo (apaga y enciende de nuevo) y presiona Ctrl+C cuando el Livebox esta arrancando. Entonces deberias ver la linea de comandos de Redboot. Revisa la configuracion.


fconfig -l -n

Ahora vamos a cambiar la IP del cargador de arranque RedBoot y le vamos a decir de que servidor TFTP tiene que coger las imagenes de firmware.


fconfig bootp_my_ip 192.168.1.1
fconfig bootp_server_ip 192.168.1.2

Apagamos el router, lo volvemos a encender, volvemos a pulsar Ctrl+C para entrar en el Redboot y si queremos hacemos un ping a la nueva IP del router (192.168.1.1) para comprobar que tenemos conectividad con el.

Ahora vamos a cargar la imagen ya precompilada de DD-WRT (En el siguiente post explicare como podemos compilar nuestro OpenWRT). Para esto debemos asegurarnos que el archivo que nos hemos bajado antes, lo hemos descomprimido y colocar el archivo openwrt.cramfs en el directorio raiz del servidor TFTP y escribir lo siguiente:

Primero comprobamos la lista de particiones


RedBoot> fis list
Name FLASH addr Mem addr Length Entry point
RedBoot 0xBE400000 0xBE400000 0x00030000 0x00000000
user_fs 0xBE430000 0xBE430000 0x00720000 0x80545FB0
jffs_system 0xBEB50000 0xBEB50000 0x000A0000 0x80545FB0
FIS directory 0xBEBF0000 0xBEBF0000 0x0000F000 0x00000000
RedBoot config 0xBEBFF000 0xBEBFF000 0x00001000 0x00000000

Como puedes observar, tenemos una particion jffs_system con direccion de flash 0xBEB50000 y una longitud 0x000A0000. Entonces borraremos la particion jffs_system.


fis erase -f 0xBEB50000 -l 0x000A0000

Cargamos el firmware nuevo al router, es decir, el archivo openwrt.cramfs.


load -r -v -b 0x80800000 openwrt.cramfs

Y flasheamos el nuevo firmware.


fis create -b 0x80800000 user_fs

Tardara un poco, pero una vez cargado reseteamos el router escribiendo «reset» en la linea de comandos de Redboot y deberiamos ver un arranque correcto del router del estilo a esto:


Linux version 2.6.30.9 (dani@NEXUS) (collect2: ld returned 1 exit status) #17 Thu Nov 19 21:18:34 CET 2009
Detected Broadcom 0x6348 CPU revision b0
CPU frequency is 256000000 Hz
16MB of RAM installed
registering 37 GPIOs
console [early0] enabled
CPU revision is: 00029107 (Broadcom BCM6348)
board_livebox: board name: Livebox
Determined physical RAM map:
memory: 01000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Zone PFN ranges:
Normal 0x00000000 -> 0x00001000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0x00000000 -> 0x00001000
On node 0 totalpages: 4096
free_area_init_node: node 0, pgdat 80283910, node_mem_map 802e7000
Normal zone: 32 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 4064 pages, LIFO batch:0
Built 1 zonelists in Zone order, mobility grouping off. Total pages: 4064
Kernel command line: root=/dev/mtdblock1 rootfstype=cramfs,squashfs init=/etc/preinit console=ttyS0,115200
Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
Primary data cache 8kB, 2-way, VIPT, no aliases, linesize 16 bytes
NR_IRQS:128
PID hash table entries: 64 (order: 6, 256 bytes)
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13268k/16384k available (2088k kernel code, 3116k reserved, 428k data, 124k init, 0k highmem)
Calibrating delay loop... 252.41 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
net_namespace: 332 bytes
NET: Registered protocol family 16
registering PCI controller with io_map_base unset
bio: create slab at 0
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
pci 0000:00:01.0: reg 10 32bit mmio: [0x000000-0x001fff]
Switched to high resolution mode on CPU 0
PCI: Enabling device 0000:00:01.0 (0000 -> 0002)
PCI: Setting latency timer of device 0000:00:01.0 to 64
ssb: Sonics Silicon Backplane found on PCI device 0000:00:01.0
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
NET: Registered protocol family 1
audit: initializing netlink socket (disabled)
type=2000 audit(0.650:1): initialized
squashfs: version 4.0 (2009/01/31) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
msgmni has been set to 25
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered (default)
bcm63xx_uart.0: ttyS0 at MMIO 0xfffe0300 (irq = 10) is a bcm63xx_uart
console handover: boot [early0] -> real [ttyS0]
bcm63xx_enet MII bus: probed
physmap platform flash device: 00800000 at 1e400000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Searching for RedBoot partition table in physmap-flash.0 at offset 0x7f0000
5 RedBoot partitions found on MTD device physmap-flash.0
Creating 5 MTD partitions on "physmap-flash.0":
0x000000000000-0x000000030000 : "RedBoot"
0x000000030000-0x000000750000 : "user_fs"
0x000000750000-0x0000007f0000 : "jffs_system"
0x0000007f0000-0x0000007ff000 : "FIS directory"
0x0000007ff000-0x000000800000 : "RedBoot config"
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
bcm63xx_ohci bcm63xx_ohci.0: BCM63XX integrated OHCI controller
bcm63xx_ohci bcm63xx_ohci.0: new USB bus registered, assigned bus number 1
bcm63xx_ohci bcm63xx_ohci.0: irq 20, io mem 0xfffe1b00
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
bcm63xx_wdt started, timer margin: 30 sec
TCP westwood registered
NET: Registered protocol family 17
VFS: Mounted root (cramfs filesystem) readonly on device 31:1.
Freeing unused kernel memory: 124k freed
Please be patient, while OpenWrt loads ...
mini_fo: using base directory: /jffs/etc-ro
mini_fo: using storage directory: /jffs/etc
bcm63xx_enet bcm63xx_enet.0: attached PHY at address 1 [Broadcom BCM63XX (1)]
device eth0 entered promiscuous mode
eth0: link UP - 100/full - flow control off
br-lan: port 1(eth0) entering forwarding state
eth1: link forced UP - 100/full - flow control off/off
cfg80211: Calling CRDA to update world regulatory domain
SCSI subsystem initialized
b43-phy0: Broadcom 4318 WLAN found (core revision 9)
phy0: Selected rate control algorithm 'minstrel'
Registered led device: b43-phy0::tx
Registered led device: b43-phy0::rx
Registered led device: b43-phy0::radio
Broadcom 43xx driver loaded [ Features: PL, Firmware-ID: FW13 ]
Driver 'sd' needs updating - please use bus_type methods
usbcore: registered new interface driver snd-usb-audio
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
b43 ssb0:0: firmware: requesting b43/ucode5.fw
b43 ssb0:0: firmware: requesting b43/pcm5.fw
b43 ssb0:0: firmware: requesting b43/b0g0initvals5.fw
b43 ssb0:0: firmware: requesting b43/b0g0bsinitvals5.fw
b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
BusyBox v1.14.4 (2009-11-17 12:55:07 CET) built-in shell (ash)
Enter 'help' for a
list of built-in commands.

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
KAMIKAZE (bleeding edge, r18440) ------------------
* 10 oz Vodka Shake well with ice and strain
* 10 oz Triple sec mixture into 10 shot glasses.
* 10 oz lime juice Salute!
---------------------------------------------------
root@OpenWrt:/#

Si no te salen las ultimas lineas da unos cuantos intros para acceder a la consola.

Con estos pasos ya esta OpenWRT instalado, pero sin muchas de las aplicaciones, en el siguiente post, como ya os he dicho, compilaremos nuestro propio OpenWRT con las aplicaciones que deseemos y demas, pero lograr lo que ha conseguido danitool ya es un gran avance para este router. Quizas dentro de poco ya tengamos imagenes creadas por los desarrolladores de OpenWRT para que podamos cargar directamente el firmware al router sin necesidad de tanto jaleo.

Tan solo dar las gracias a danitool y no os olvideis de visitar su blog, ya que este Howto ha sido basado en el suyo.

danitool: http://my.opera.com/danitool

Share
Javier Rodriguez Escrito por:

2 comentarios

  1. 7 de julio de 2010

    ¿En lugar de montar el cacharro ese del max3232 no se puede haceresto?

    Me parece que es mucho mas sencillo y fácil.

  2. 15 de julio de 2010

    No, tienes que adaptar las señales TTL del router -3v y +3v a señales RS232, -12 y +12.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *