24 septembre 2007

Fonera+ / Fonera plus - OpenWrt

Tags : , ,

posté dans Embarqué |
Depuis quelques temps, le fon store propose un nouveau routeur : la Fonera+ (plus). Celle-ci possède comme particularité de disposer deux interfaces Ethernet. Ceci ouvre des perspectives très intéressantes comme le fait de transformer ce routeur Wifi communautaire en routeur de filtrage, IPVS, VPN, etc... Bref, une nouvelle interface Ethernet c'est que du bonheur. Mais l'OpenWrt Kamikaze 7.07 peut-il fonctionner sur la Fonera+ ? La réponse est oui, mais il reste un peu de travail. Voici les premiers essais. Je viens tout juste de recevoir ma Fonera+. Avant même un branchement "standard" la voici démontée et inspectée. Côté hardware on retrouve bien des choses déjà présentes dans la classique Fonera. CPU Atheros/MIPS identique, même quantité de mémoire et de Flash, chip Wifi identique... Le layout du circuit a été revu et l'alimentation se fait à présent via un bloc secteur à 7.5 Volts en lieu et place du 5 volts. Rien de fantastique. Un coup d'oeil à la platine et on remarque un contrôleur Ethernet et deux PHY (LFE8505 de DELTA ELECTRONICS). Côté connectique on trouve quatre broches : le connecteur série 3.3V permettant de prendre la mains sur le routeur avec un montage adéquate pour la conversion en RS232. Ca tombe bien, c'est du déjà fait. Après repérage, on obtient la connectique suivante pour ce connecteur marqué JP1 (de gauche à droite) :
  • Masse
  • RX
  • TX
  • +3.3 Volts
On branche donc l'adaptateur et on lance minicom (ou screen) pour voir ce qui se passe :
+Ethernet eth0: MAC address 00:18:84:a0:5b:98
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.254

RedBoot(tm) bootstrap and debug environment [ROMRAM]
OpenWrt certified release, version 1.1 - built 22:32:28, May  7 2007

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: FON 2201
RAM: 0x80000000-0x81000000, [0x80040290-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
RedBoot attend 2s pour un ^C et recevoir des directives, c'est bon signe. On attend et le chargement continu :
RedBoot> fis load -b 0x80100000 loader
RedBoot>  go 0x80100000
Failsafe loader v0.2

Looking for board config data... found at offset 0xa87f0000
Reset button GPIO: 6
Reading flash from 0xa8040000 to 0xa825b989... done.
Verifying CRC... OK - 0xa7a3c6df
Uncompressing Linux... Ok, booting the kernel.
[sighandler]: No more events to be processed, quitting.
[cleanup]: Waiting for children.
[cleanup]: All children terminated.
Unlocking rootfs ...
Could not open mtd device: rootfs
switching to jffs2
init started:  BusyBox v1.4.1 (2007-06-08 12:11:45 UTC) multi-call binary
: ifconfig: SIOCSIFADDR: No such device

: ifconfig: SIOCSIFADDR: No such device

: udhcpc (v1.4.1) started

: route: fscanf

: Sending discover...

: Sending discover...

: Sending discover...
Catastrophe ! Pas de console série. Nous n'avons pas la main sur le routeur. Après tout, ce n'est pas grave, le firmware de Fon ne nous intéresse pas vraiment. On reset et on regarde ce que raconte RedBoot :
== Executing boot script in 2.000 seconds - enter ^C to abort
^C
RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0x80040400  0x00030000  0xA8000000
loader            0xA8030000  0x80100000  0x00010000  0x80100000
image             0xA8040000  0x80040400  0x00230004  0x80040400
image2            0xA8660000  0xA8660000  0x00140000  0x80040400
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000
Et puis :
RedBoot> fconfig -l -n
boot_script: true
boot_script_data:
.. fis load -b 0x80100000 loader
..  go 0x80100000

boot_script_timeout: 2
bootp: false
bootp_my_gateway_ip: 0.0.0.0
bootp_my_ip: 192.168.1.1
bootp_my_ip_mask: 255.255.255.0
bootp_server_ip: 192.168.1.254
console_baud_rate: 9600
gdb_port: 9000
info_console_force: false
net_debug: false
Le script de démarrage charge un second bootloader. Il faut y prendre garde. Nettoyons tout cela :
RedBoot> fconfig
Run script at boot: true
Boot script:
.. fis load -b 0x80100000 loader
..  go 0x80100000
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>>
Boot script timeout (1000ms resolution): 2
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address: 192.168.1.1
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.1.254
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)?yy
Il ne reste plus qu'à charger notre OpenWrt Kamikaze 7.07 déjà compilé pour l'ancienne Fonera :
RedBoot> ip_address -l 192.168.0.12/24 -h 192.168.0.1
IP: 192.168.0.12/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.0.1
RedBoot> fis init -f
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xa8030000-0xa87e0000: ...........................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0xA8000000  0x00030000  0x00000000
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000
RedBoot> load -r -b 0x80041000 openwrt-atheros-2.6-root.jffs2-64k
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x801e0fff, assumed entry at 0x80041000
RedBoot> fis create -b 0x80041000 -f 0xA8030000 -l 0x006F0000 -e 0x00000000 rootfs
... Erase from 0xa8030000-0xa8720000: ................................
... Program from 0x80041000-0x80731000 at 0xa8030000: .......................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> load -r -b 0x80041000 openwrt-atheros-2.6-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x80100fff, assumed entry at 0x80041000
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
... Erase from 0xa8720000-0xa87e0000: ............
... Program from 0x80041000-0x80101000 at 0xa8720000: ............
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> reset
Résultat :
 == Executing boot script in 2.000 seconds - enter ^C to abort
 RedBoot> fis load -l vmlinux.bin.l7
 Image loaded from 0x80041000-0x80290086
 RedBoot> exec
 Now booting linux kernel:
  Base address 0x80030000 Entry 0x80041000
  Cmdline :
 Linux version 2.6.21.5 (denis@morgane) (gcc version 4.1.2) #9 Fri Sep 14 12:02:43 CEST 2007
 CPU revision is: 00019064
 Determined physical RAM map:
  memory: 01000000 @ 00000000 (usable)
 Initrd not found or empty - disabling initrd
 Built 1 zonelists.  Total pages: 4064
 Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2 init=/etc/preinit
 Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes.
 Primary data cache 16kB, 4-way, linesize 16 bytes.
 Synthesized TLB refill handler (20 instructions).
 Synthesized TLB load handler fastpath (32 instructions).
 Synthesized TLB store handler fastpath (32 instructions).
 Synthesized TLB modify handler fastpath (31 instructions).
 PID hash table entries: 64 (order: 6, 256 bytes)
 Using 92.000 MHz high precision timer.
 Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
 Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
 Memory: 13504k/16384k available (1955k kernel code, 2880k reserved,
    292k data, 116k init, 0k highmem)
 Mount-cache hash table entries: 512
 NET: Registered protocol family 16
 Radio config found at offset 0xf8(0x1f8)
 Time: MIPS clocksource has been installed.
 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
 squashfs: version 3.0 (2006/03/15) Phillip Lougher
 Registering mini_fo version $Id$
 JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
 io scheduler noop registered
 io scheduler deadline registered (default)
 Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled
 serial8250: ttyS0 at MMIO 0xb1100003 (irq = 37) is a 16550A
 eth0: Dropping NETIF_F_SG since no checksum feature.
 eth0: Atheros AR231x: 00:18:84:a0:5b:98, irq 4
 cmdlinepart partition parsing not available
 Searching for RedBoot partition table in spiflash at offset 0x7d0000
 Searching for RedBoot partition table in spiflash at offset 0x7e0000
 5 RedBoot partitions found on MTD device spiflash
 Creating 5 MTD partitions on "spiflash":
 0x00000000-0x00030000 : "RedBoot"
 0x00030000-0x00720000 : "rootfs"
 0x00720000-0x007e0000 : "vmlinux.bin.l7"
 0x007e0000-0x007ef000 : "FIS directory"
 0x007ef000-0x007f0000 : "RedBoot config"
 nf_conntrack version 0.5.0 (128 buckets, 1024 max)
 ip_tables: (C) 2000-2006 Netfilter Core Team
 TCP vegas registered
 NET: Registered protocol family 1
 NET: Registered protocol family 17
 802.1Q VLAN Support v1.8 Ben Greear 
 All bugs added by David S. Miller 
 eth0: Configuring MAC for full duplex
 jffs2_scan_eraseblock(): End of filesystem marker found at 0x180000
 jffs2_build_filesystem(): unlocking the mtd device... done.
 jffs2_build_filesystem(): erasing all blocks after the end marker... done.
 VFS: Mounted root (jffs2 filesystem) readonly.
 Freeing unused kernel memory: 116k freed
 Warning: unable to open an initial console.
 Algorithmics/MIPS FPU Emulator v1.5
 - preinit -
 - init -
 init started:  BusyBox v1.4.2 (2007-09-05 17:39:32 CEST) multi-call binary

 Please press Enter to activate this console. device eth0 entered promiscuous mode
 br-lan: port 1(eth0) entering learning state
 br-lan: topology change detected, propagating
 br-lan: port 1(eth0) entering forwarding state
 PPP generic driver version 2.4.2
 wlan: 0.8.4.2 (svn r2568)
 ath_hal: module license 'Proprietary' taints kernel.
 ath_hal: 0.9.30.13 (AR5212, AR5312, RF2316, TX_DESC_SWAP)
 ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (svn r2568)
 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
 wlan: mac acl policy registered
 ath_ahb: 0.9.4.5 (svn r2568)
 ath_pci: switching rfkill capability off
 ath_pci: switching per-packet transmit power control off
 wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
 wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps
      12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
 wifi0: H/W encryption support: WEP AES AES_CCM TKIP
 wifi0: mac 11.0 phy 4.8 radio 7.0
 wifi0: Use hw queue 1 for WME_AC_BE traffic
 wifi0: Use hw queue 0 for WME_AC_BK traffic
 wifi0: Use hw queue 2 for WME_AC_VI traffic
 wifi0: Use hw queue 3 for WME_AC_VO traffic
 wifi0: Use hw queue 8 for CAB traffic
 wifi0: Use hw queue 9 for beacons
 wifi0: Atheros 2315 WiSoC: mem=0xb0000000, irq=3

 BusyBox v1.4.2 (2007-09-05 17:39:32 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 (7.07) -----------------------------------
   * 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:/#
Ca marche ! Ou presque. Une seule interface est détectée (eth0) et il reste à regarder du côté des GPIO. Pour l'heure OpenWrt 7.07 est fonctionnel mais n'utilise pas pleinement le matériel à disposition et en particulier la seconde interface Ethernet. Il s'agit sans doute d'un problème pilote. La suite plus tard, après quelques recherches...
Article posté on Lundi, 24 septembre 2007 à 21:32 dans Embarqué. Vous pouvez suivre les commentaires sur cet article via un feed RSS 2.0. Vous pouvez laisser un commentaire. Le Ping n'est actuellement pas autorisé.

Il y a actuellement 4 réponses pour “Fonera+ / Fonera plus - OpenWrt”

  1. 1 Le 11 octobre 2007, Bunyman à écrit :

    Salut,

    L’interface Wifi est-elle pleinement reconnu ? Est-ce la même chipset que sur la fonera classique ?

    En fait j’ai envi de m’acheter une fonera mais si la fonera+ fait exactement la même chose que la fonera (Wifi atheros, etc..) le second port ethernet étant bien entendu désactivé, je prendrais cella la dans l’espoir que le second port soit fonctionnel dans les prochaines versions.

    Peut-tu me confirmer que le wifi et une des deux cartes ethernet sont pleinement fonctionel?

  2. 2 Le 11 octobre 2007, Lefinnois à écrit :

    Non, je n’arrive pas à faire fonctionner le Wifi. Pourtant le chip semble identique. Le problème doit être le même que pour les l’interfaces ether. La fonera+ est un routeur très spécial. Le bootloader stage2 utilise un bloc le 65K de flash placé après la configuration de RedBoot (le genre à effacer facilement par accident). Il s’agit de la configuration matérielle (adresse MAC, etc). Sans ce bootloader rien ne marche… Les pilotes madwifi sont aussi bricolés par Fon… c’est très… étrange. Je passe sur les commentaires dans le drivers de l’interface ether.

    Donc, non, je ne recommande absolument pas l’achat de ce nouveau routeur pour servir de plateforme OpenWrt. Le firmware semble être un gros bricolage et les développeurs OpenWrt vont avoir bien du mal à intégrer cela dans Kamikaze.

    Ca fait bien trop de boulot pour simplement gagner une autre interface ethernet…

  3. 3 Le 27 avril 2008, phil à écrit :

    Je suis à la recherche d’un petite carte avec ethernet et j’ai cru
    comprendre que l’on pouvait installer un linux sur fonera+.
    Quel site je dois visiter pour tout savoir ? J’ai lu que ce n’était
    plus possible de le faire sur les nouvelles machines ? Est-ce que
    c’est toujours achetable sur le net ?

    Merci d’avance pour votre aide, Philippe.

  4. 4 Le 27 avril 2008, Lefinnois à écrit :

    Les fonera actuellement vendu par Fon semblent maintenant être que des Fonera+. On peut encore trouver des Fonera (pas +) sur ebay par exemple.
    La fonera fonctionne déjà sous GNU/Linux, un système appelé OpenWrt.

Laisser un commentaire

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous
Anti-Spam Image