Router de muy interesantes
especificaciones: bandas 2.4 y 5 ghz, y 2 puertos USB 2.0. No hay casi soporte para routers de esta marca en OpenWrt, aunque tienen buenos precios y buenas prestaciones gracias al SoC BRCM4718.
En la Web encontramos ya soportados modelos inferiores como el F7D3301 o el F7D4301 (igual al F7D4401 pero sin módem adsl), en dd-wrt o tomato-usb, pero con parches mantenidos fuera del trunk de OpenWrt.
Este parche que permite arrancar el OpenWrt está basado en el trabajo de
Manoj para adaptar los firmwares a la cabecera específica de Belkin y su adaptación al F7D3301 de los parches de
George Kashperko para el F7D4301 y Asus RT-N16.
La modificación para que el CFE reconozca el firmware es mínima, y consiste únicamente en cambiar el número mágico de la cabecera TRX del firmware al específico del F7D4401 en el parche de Manoj.
Así se añade, en lugar del TRX_MAGIC estándar,
#define TRX_MAGIC 0x30524448
o de otros modelos Belkin basados en el mismo SoC:
#define TRX_MAGIC_F7D3301 0x20100322
#define TRX_MAGIC_F7D3302 0x20090928
#define TRX_MAGIC_F7D4302 0x20091006
se añade el específico del F7D4401:
#define TRX_MAGIC_F7D4401 0x00018517
Queda por ir añadiendo soporte a la placa, leds, gpio, etc. OpenWrt no soporta el wifi en la banda de 5 ghz y tampoco el módel ADSL.
Código del parche:
https://github.com/gmtii/openwrt-f7d4401/blob/master/f7d4401-r36141.patch
El log de arranque en la primera versión funcional es el siguiente:
[ 0.000000] Linux version 3.6.11 (ebensan@ubuntu) (gcc version
4.6.4 20121210 (prerelease) (Linaro GCC 4.6-2012.12) ) #13
[ 0.000000] CPU revision is: 00019740 (MIPS 74Kc)
[ 0.000000] bcm47xx: using bcma bus
[ 0.000000] bcma: bus0: Found chip with id 0x4716, rev 0x01 and package 0x0A
[ 0.000000] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id
0x800, rev 0x1F, class 0x0)
[ 0.000000] bcma: bus0: Core 3 found: MIPS 74K (manuf 0x4A7, id
0x82C, rev 0x01, class 0x0)
[ 0.000000] bcma: bus0: Found rev 5 PMU (capabilities 0x11242C05)
[ 0.000000] bcma: bus0: Found parallel flash
[ 0.000000] bcma: bus0: Early bus registered
[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 04000000 @ 00000000 (usable)
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x00000000-0x03ffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00000000-0x03ffffff]
[ 0.000000] On node 0 totalpages: 16384
[ 0.000000] free_area_init_node: node 0, pgdat 802de970,
node_mem_map 81000000
[ 0.000000] Normal zone: 128 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 16256 pages, LIFO batch:3
[ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases,
linesize 32 bytes
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on.
Total pages: 16256
[ 0.000000] Kernel command line: root=/dev/mtdblock2
rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200
[ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] __ex_table already sorted, skipping sort
[ 0.000000] Writing ErrCtl register=00000000
[ 0.000000] Readback ErrCtl register=00000000
[ 0.000000] Memory: 61572k/65536k available (2416k kernel code,
3964k reserved, 520k data, 164k init, 0k highmem)
[ 0.000000] NR_IRQS:128
[ 0.032000] Calibrating delay loop... 225.02 BogoMIPS (lpj=450048)
[ 0.036000] pid_max: default: 32768 minimum: 301
[ 0.036000] Mount-cache hash table entries: 512
[ 0.036000] NET: Registered protocol family 16
[ 0.056000] bio: create slab <bio-0> at 0
[ 0.060000] Switching to clocksource MIPS
[ 0.072000] NET: Registered protocol family 2
[ 0.072000] TCP established hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.072000] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.072000] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.072000] TCP: reno registered
[ 0.072000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.072000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.072000] NET: Registered protocol family 1
[ 0.072000] PCI: CLS 0 bytes, default 32
[ 0.076000] bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id
0x812, rev 0x11, class 0x0)
[ 0.076000] bcma: bus0: Core 2 found: GBit MAC (manuf 0x4BF, id
0x82D, rev 0x00, class 0x0)
[ 0.076000] bcma: bus0: Core 4 found: USB 2.0 Host (manuf 0x4BF, id
0x819, rev 0x04, class 0x0)
[ 0.076000] bcma: bus0: Core 5 found: PCIe (manuf 0x4BF, id 0x820,
rev 0x0E, class 0x0)
[ 0.076000] bcma: bus0: Core 6 found: DDR1/DDR2 Memory Controller
(manuf 0x4BF, id 0x82E, rev 0x01, class 0x0)
[ 0.076000] bcma: bus0: Core 7 found: Internal Memory (manuf 0x4BF,
id 0x80E, rev 0x07, class 0x0)
[ 0.076000] bcma: bus0: Core 8 found: I2S (manuf 0x4BF, id 0x834,
rev 0x00, class 0x0)
[ 0.340000] bcma: bus0: Using SPROM revision 8 provided by platform.
[ 0.340000] bcma: bus0: PMU resource config unknown or not needed
for device 0x4716
[ 0.340000] bcma: bus0: Workarounds unknown or not needed for device 0x4716
[ 0.340000] bcma: bus0: Initializing MIPS core...
[ 0.340000] bcma: bus0: Moved i2s interrupt to oob line 7 instead of 8
[ 0.340000] bcma: bus0: set_irq: core 0x0812, irq 3 => 3
[ 0.340000] bcma: bus0: set_irq: core 0x082d, irq 4 => 4
[ 0.340000] bcma: bus0: set_irq: core 0x0819, irq 5 => 5
[ 0.340000] bcma: bus0: set_irq: core 0x0820, irq 6 => 6
[ 0.340000] bcma: bus0: set_irq: core 0x0800, irq 2 => 2
[ 0.340000] bcma: bus0: set_irq: core 0x0834, irq 0 => 2
[ 0.340000] bcma: bus0: IRQ reconfiguration done
[ 0.340000] bcma: core 0x0800, irq : 2(S)* 3 4 5 6 D I
[ 0.340000] bcma: core 0x082c, irq : 2(S) 3 4 5 6 D I*
[ 0.340000] bcma: core 0x0812, irq : 2(S) 3* 4 5 6 D I
[ 0.340000] bcma: core 0x082d, irq : 2(S) 3 4* 5 6 D I
[ 0.344000] bcma: core 0x0819, irq : 2(S) 3 4 5* 6 D I
[ 0.344000] bcma: core 0x0820, irq : 2(S) 3 4 5 6* D I
[ 0.344000] bcma: core 0x082e, irq : 2(S) 3 4 5 6 D* I
[ 0.344000] bcma: core 0x080e, irq : 2(S) 3 4 5 6 D I*
[ 0.344000] bcma: core 0x0834, irq : 2(S)* 3 4 5 6 D I
[ 0.344000] bcma: bus0: PCIEcore in host mode found
[ 0.520000] PCI host bridge to bus 0000:00
[ 0.520000] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0bffffff]
[ 0.520000] pci_bus 0000:00: root bus resource [io 0x0100-0x07ff]
[ 0.520000] pci_bus 0000:00: No busn resource found for root bus,
will use [bus 00-ff]
[ 0.520000] pci_bus 0000:00: busn_res: [bus 00-ff] is inserted
under domain [bus 00-ff]
[ 0.520000] pci 0000:00:00.0: [14e4:4716] type 00 class 0x060000
[ 0.520000] bcma: PCI: Fixing up bridge 0000:00:00.0
[ 0.520000] bcma: PCI: Fixing up device 0000:00:00.0
[ 0.520000] pci 0000:00:00.0: reg 10: [mem 0x00000000-0x00003fff 64bit]
[ 0.520000] pci 0000:00:00.0: reg 18: [mem 0x00000000-0x07ffffff 64bit]
[ 0.520000] pci 0000:00:00.0: supports D1 D2
[ 0.520000] pci 0000:00:00.1: [14e4:0000] type 00 class 0x060000
[ 0.520000] bcma: PCI: Fixing up bridge 0000:00:00.1
[ 0.520000] bcma: PCI: Fixing up device 0000:00:00.1
[ 0.520000] pci 0000:00:00.1: reg 10: [mem 0x00000000-0x00003fff 64bit]
[ 0.520000] pci 0000:00:00.1: reg 18: [mem 0x00000000-0x07ffffff 64bit]
[ 0.520000] pci 0000:00:00.1: supports D1 D2
[ 0.520000] pci 0000:00:01.0: [14e4:a8d8] type 00 class 0x028000
[ 0.520000] pci 0000:00:01.0: reg 10: [mem 0x00000000-0x00003fff 64bit]
[ 0.520000] bcma: PCI: Fixing up addresses 0000:00:01.0
[ 0.520000] pci 0000:00:01.0: BAR 0: assigned [mem
0x08000000-0x08003fff 64bit]
[ 0.520000] pci 0000:00:01.0: supports D1 D2
[ 0.520000] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[ 0.524000] PCI: Enabling device 0000:00:01.0 (0000 -> 0002)
[ 0.524000] bcma: PCI: Fixing up device 0000:00:01.0
[ 0.524000] bcma: bus1: Found chip with id 0xA8D8, rev 0x01 and package 0x08
[ 0.524000] bcma: bus1: Core 0 found: ChipCommon (manuf 0x4BF, id
0x800, rev 0x22, class 0x0)
[ 0.524000] bcma: bus1: Core 1 found: IEEE 802.11 (manuf 0x4BF, id
0x812, rev 0x17, class 0x0)
[ 0.524000] bcma: bus1: Core 2 found: PCIe (manuf 0x4BF, id 0x820,
rev 0x0F, class 0x0)
[ 0.524000] bcma: bus1: Found rev 6 PMU (capabilities 0x108C2606)
[ 0.532000] can not parse nvram name pci/1/1/ledbh1(null) with
value 0xffff got -34
[ 0.532000] can not parse nvram name pci/1/1/ledbh2(null) with
value 0xffff got -34
[ 0.532000] can not parse nvram name pci/1/1/ledbh3(null) with
value 0xffff got -34
[ 0.664000] bcma: bus1: Using SPROM revision 8 provided by platform.
[ 0.664000] bcma: bus1: PMU resource config unknown or not needed
for device 0xA8D8
[ 0.676000] bcma: bus1: Bus registered
[ 0.680000] bcma: bus0: Bus registered
[ 0.684000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.684000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME)
(CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.684000] msgmni has been set to 120
[ 0.684000] io scheduler noop registered
[ 0.684000] io scheduler deadline registered (default)
[ 0.684000] Serial: 8250/16550 driver, 2 ports, IRQ sharing enabled
[ 0.708000] serial8250.0: ttyS0 at MMIO 0xb8000300 (irq = 2) is a U6_16550A
[ 1.196000] console [ttyS0] enabled
[ 1.204000] bcm47xx_pflash: flash init: 0x1c000000 0x02000000
[ 1.208000] Physically mapped flash: Found 1 x16 devices at 0x0 in
8-bit bank. Manufacturer ID 0x00007f Chip ID 0x0000cb
[ 1.220000] Physically mapped flash: Found an alias at 0x800000 for
the chip at 0x0
[ 1.220000] Physically mapped flash: Found an alias at 0x1000000
for the chip at 0x0
[ 1.220000] Physically mapped flash: Found an alias at 0x1800000
for the chip at 0x0
[ 1.220000] Amd/Fujitsu Extended Query Table at 0x0040
[ 1.224000] Amd/Fujitsu Extended Query version 1.1.
[ 1.232000] number of CFI chips: 1
[ 1.232000] bcm47xx_pflash: Flash device: 0x2000000 at 0x1fc00000
[ 1.240000] bcm47xx_part: Found Belkin_F7D4401 header:cfe
[ 1.248000] bcm47xx_part: bootloader size: 196608
[ 1.256000] bcm47xx_part: Looking for dual image
[ 1.264000] bcm47xx_part: Found Belkin_F7D4401 header:root
[ 1.268000] bcm47xx_part: TRX offset : 0
[ 1.712000] bcm47xx_part: Updating TRX offsets and length:
[ 1.716000] bcm47xx_part: old trx = [0x0000001c, 0x00000968,
0x000f7c00], len=0x002b1000 crc32=0x12d3d501
[ 1.728000] bcm47xx_part: new trx = [0x0000001c, 0x00000968,
0x000f7c00], len=0x000f7c00 crc32=0x262c72d6
[ 3.608000] bcm47xx_part: Done
[ 3.608000] 4 bcm47xx partitions found on MTD device Physically mapped flash
[ 3.616000] Creating 4 MTD partitions on "Physically mapped flash":
[ 3.624000] 0x000000000000-0x000000030000 : "cfe"
[ 3.632000] 0x000000030000-0x0000007f0000 : "linux"
[ 3.640000] 0x000000127c00-0x0000007f0000 : "rootfs"
[ 3.644000] mtd: partition "rootfs" must either start or end on
erase block boundary or be smaller than an erase block -y
[ 3.660000] mtd: partition "rootfs" set to be root filesystem
[ 3.668000] mtd: partition "rootfs_data" created automatically,
ofs=2A0000, len=550000
[ 3.676000] 0x0000002a0000-0x0000007f0000 : "rootfs_data"
[ 3.684000] 0x0000007f0000-0x000000800000 : "nvram"
[ 3.696000] bcm47xx-wdt bcm47xx-wdt.0: BCM47xx Watchdog Timer
enabled (30 seconds)
[ 3.704000] TCP: cubic registered
[ 3.708000] NET: Registered protocol family 17
[ 3.712000] 8021q: 802.1Q VLAN Support v1.8
[ 3.724000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
[ 3.732000] Freeing unused kernel memory: 164k freed
[ 5.424000] manoj: boardnum= 12345 : boardtype : 0xd4cf
[ 5.428000] diag: Detected 'Belkin PlayMax F7D4401'
[ 5.436000] diag: led:power
[ 5.436000] diag: led:warn
[ 5.440000] diag: led:wlan
[ 5.444000] diag: led:led0
[ 5.444000] diag: led:led1
[ 5.528000] bgmac bcma0:1: Found PHY addr: 30 (NOREGS)
[ 5.536000] bgmac bcma0:1: Support for Roboswitch not implemented
[ 5.564000] bgmac: Broadcom 47xx GBit MAC driver loaded
[ 5.764000] roboswitch: Probing device 'eth0'
[ 5.768000] roboswitch: found a 53115! It's a 5350. at eth0
[ 16.360000] wl: module license 'unspecified' taints kernel.
[ 16.364000] Disabling lock debugging due to kernel taint
[ 16.508000] wl0: Broadcom BCM4329 802.11 Wireless Controller 5.10.56.27
[ 16.516000] SSB/BCMA glue driver successfully attached
[ 16.552000] PPP generic driver version 2.4.2
[ 16.720000] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 16.860000] NET: Registered protocol family 24
[ 16.888000] nf_conntrack version 0.5.0 (964 buckets, 3856 max)
[ 20.924000] device eth0.0 entered promiscuous mode
[ 20.928000] device eth0 entered promiscuous mode
[ 20.932000] br-lan: port 1(eth0.0) entered forwarding state
[ 20.940000] br-lan: port 1(eth0.0) entered forwarding state
[ 22.944000] br-lan: port 1(eth0.0) entered forwarding state
[ 35.740000] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[ 35.752000] jffs2_build_filesystem(): unlocking the mtd device... done.
[ 69.688000] Found board: "Unknown Board"
[ 35.756000] jffs2_build_filesystem(): erasing all blocks after the
end marker... done.
[ 81.492000] jffs2: notice: (930) jffs2_build_xattr_subsystem:
complete building xattr subsystem, 0 of xdatum (0 unchecke.
[ 574.368000] br-lan: port 1(eth0.0) entered disabled state
[ 574.384000] device eth0.0 left promiscuous mode
[ 574.388000] device eth0 left promiscuous mode
[ 574.392000] br-lan: port 1(eth0.0) entered disabled state
[ 577.080000] device eth0.0 entered promiscuous mode
[ 577.084000] device eth0 entered promiscuous mode
[ 577.092000] br-lan: port 1(eth0.0) entered forwarding state
[ 577.096000] br-lan: port 1(eth0.0) entered forwarding state
[ 579.100000] br-lan: port 1(eth0.0) entered forwarding state
[ 582.408000] nas calls setitimer() with new_value NULL pointer.
Misfeature support will be removed
Saludos.