.titleBar { margin-bottom: 5px!important; }

[gelöst] DAP-1160 (RTL8186) Firmware flash ??

Dieses Thema im Forum "D-Link" wurde erstellt von morpheus80, 3 Nov. 2008.

  1. morpheus80

    morpheus80 Neuer User

    Registriert seit:
    12 März 2008
    Beiträge:
    58
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Linux Consultant
    Ort:
    Tuxhausen
    #1 morpheus80, 3 Nov. 2008
    Zuletzt bearbeitet: 23 Nov. 2008
    High Jungs und Mädels.

    Hab mich vor Kurzem an den Bau einer Firmware für den D-Link DAP-1160, welcher auf dem Realtek 8186 EV Board basiert, gemacht.

    Bei D-Link liegt neben der aktuellen Firmware auch das Buildroot samt Toolchain zum Download bereit. :D
    Siehe http://www.dlink.co.uk/?go=gNTyP9Cn...PL9b0TI+4+jcJgo0eXqtLbpyV6hnDrXbaf5zJPeltrhE=

    Das o.g. Buildroot samt Toolchain (mit ein paar kleinen Anpassungen) stammt vom RTL8186 Evaluation Board, welches D-Link eben beim DAP-1160 verwendet.

    Nun hab ich das Buildroot aus den o.g. Quellen übersetzt, mit ein paar nützlichen Tools versehen (dropbear, utelnetd) und mit Hilfe der Scripte zu einem Image zusammengefügt.
    Dieses setzt sich aus zwei Teilen zusammen, dem D-Link Webinterface Image und dem selbst erstellten Image (Kernel + Ramdisk).

    In der "INSTALL" genannten Anleitung im D-Link Buildroot (welches ja eigentlich vom RTL8186 Board stammt), steht nun man soll: ;)

    Bis Punkt 4 ist alles klar, DAP1160-Board (Pinbelegung des 4poligen UART: 4-3.3V, 3-TXD, 2-RXD, 1-GND) per Lumberg-Kabel mit dem seriellen Port des PC verbinden, beide per LAN-Kabel verbinden.
    IP der PC-NIC auf "192.168.1.1" setzen, dann die Konsole starten ("38400, 8N1 and no flow control").

    Soweit so gut, doch wenn ich dann das Board befeuere, wie in Punk 4 beschrieben, bekomme ich zwar die Ausgaben auf meine Konsole.

    Jedoch komme ich auch nach ständigem Drücken der "ESC" Taste nicht an den oben beschriebenen "<Realtek>" Prompt.

    Statt dessen tut sich gar nichts, der DAP bootet einfach durch, ohne auf meine Eingaben zu reagieren. :confused:

    Ich denke, die Eingabe von "ESC" kann ja nur beim Bootloader oder dann nach dem Laden der Ramdisk erfolgen.

    Hab mir gedacht, vielleicht hat ja D-Link eine andere Taste mit dieser Funktion belegt.
    Jedoch konnte ich bis jetzt nicht herausfinden, welche das sein soll.

    Kann mir auch vorstellen, das D-Link den "Escape", oder allgemein die Eingabe per serieller Konsole unterbunden hat.

    Wie soll ich allerdings dann mein eigenes Image auf den DAP-1160 kriegen?
    Beim WebInterface heisst es immer "Wrong File!!", wenn ich versuche mein eigenes Image hochzuladen. :confused:

    Weiss jemand wie ich mein Image nun auf dem Flash des DAP-1160 bekomme? Der DAP-1160 wird ja ganz gross mit Open Source Firmware beworben von D-Link, deshalb muss es ja auch eine Möglichkeit geben, die eigene Firmware dann auch upzuloaden.

    Schon mal Danke für Eure Hilfe, sollte ich etwas übersehen haben oder wenn Ihr noch mehr Infos braucht, gebt mir Bescheid. Euer morpheus80. ;)
     
  2. morpheus80

    morpheus80 Neuer User

    Registriert seit:
    12 März 2008
    Beiträge:
    58
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Linux Consultant
    Ort:
    Tuxhausen
    Nachdem dieser Beitrag nun eine Zeit brachlag, bin ich selbst zur Lösung gelangt.

    War ein Hardware-Defekt. Das Lumberg-Kabel mit dazugehörigem MAX232 Chip hat wohl am RX Pin den Geist aufgegeben. TX lief aber ganz normal.

    Nach einem Austausch des Kabels reagierte der DAP1160 wieder auf Eingaben auf der seriellen Konsole.

    Mein selbstgebautes Firmware-Image ist allerdings immer noch nicht auf dem Flash des DAP1160 gelandet, da es sich nicht per TFTP-Client hochladen lässt. Der Bootloader ist weder unter der IP 192.168.0.50 noch unter der IP 192.168.1.6 errreichbar.

    morpheus80.
     
  3. hehol

    hehol Mitglied

    Registriert seit:
    22 Feb. 2005
    Beiträge:
    458
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Dortmund
    Hallo morpheus80,

    ich habe auch gerade einen DAP-1160 vor mir und habe ähnliche Probleme. Bist Du schon weiter gekommen?

    Die serielle Schnittstelle funktioniert bei mir problemlos (und bei Dir ja wohl inzwischen auch). Der TFTP Upload ist auch kein Problem. Die IP-Adresse des DAP-1160 ist 192.168.1.6. Aber wenn ich nach dem TFTP-Upload im Bootloader

    Code:
    flw 20000 80300000 xxxxxx
    eingebe, dann kommt nur die Fehlermeldung "Unknown command !". Die Hilfe (Kommando "help") zeigt auch nichts an :-( Das Kommando "flr" zum Auslesen des Flash-Speichers funktioniert aber. Was hat D-Link mit dem Bootloader angestellt???

    Das ging mir zuerst auch so. Das Problem ist allerdings "nur", daß der Firmwareupload nur dann funktioniert, wenn der Pfadname der hochzuladenden Datei an der zweite Stelle einen Doppelpunkt enthält. Im Browser läuft ein Javascript, daß die Datei vor dem Hochladen "überprüft". Der Programmierer kennt offenbar nur Windows :blonk:

    Die Freude über diese Erkenntnis währte allerdings nur kurz, da sich die Datei "web_firm_total_image.bin" trotzdem nicht hochladen läßt. Irgendwas stimmt am Image-Layout nicht, denn der Webserver im DAP-1160 meldet nur "Invalid file format!". Die Meldung kommt aus der Datei .../dap-1160_src/AP/goahead-2.1.1/LINUX/fmmgmt.c, Zeile 596.

    Gruß
    Henning
     
  4. hehol

    hehol Mitglied

    Registriert seit:
    22 Feb. 2005
    Beiträge:
    458
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Dortmund
    #4 hehol, 5 Dez. 2008
    Zuletzt bearbeitet: 9 Dez. 2008
    Update: in meinem DAP-1160 war die Firmwareversion 1.12 installiert, ich habe aber den Sourcecode für Firmware 1.0 benutzt. Offenbar ist das Flashlayout bei beiden Versionen inkompatibel. Ich habe eine Firmware aus dem aktuell verfügbaren Sourcecode 1.10 erstellt und konnte das Image über die Weboberfläche hochladen. Leider funktioniert der Accesspoint nun nicht mehr. Die serielle Konsole sagt:

    Code:
    UART1 output test ok
    Uart init
    mfid=000000c2 devid=000022a8
    Found 1 x 4M flash memory
    ---RealTek(RTL8186)at 2007.07.05-16:20+0800 version 1.4a , CAMEO version v1.00.r06 [16bit](180MHz)
    no sys signature at 00010000!
    no sys signature at 00020000!
    Jump to image start=0x80300000...
    decompressing kernel:
    Uncompressing Linux... done, booting the kernel.
    done decompressing kernel.
    early printk enabled
    Determined physical RAM map:
    memory: 01000000 @ 00000000 (usable)
    Initial ramdisk at: 0x80199000 (1014386 bytes)
    On node 0 totalpages: 4096
    zone(0): 4096 pages.
    zone(1): 0 pages.
    zone(2): 0 pages.
    Kernel command line: root=/dev/ram console=0 ramdisk_start=0 single
    Calibrating delay loop... 178.99 BogoMIPS
    Memory: 13312k/16384k available (1478k kernel code, 3072k reserved, 1080k data, 56k init, 0k highmem)
    Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
    Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
    Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
    Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
    Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
    check_wait... unavailable.
    POSIX conformance testing by UNIFIX
    Linux NET4.0 for Linux 2.4
    Based upon Swansea University Computer Society NET3.039
    Initializing RT netlink socket
    Starting kswapd
    Serial driver version 6.02 (2003-03-12) with no serial options enabled
    ttyS00 at 0x00c3 (irq = 3) is a rtl_uart1
    state->flags=00000000
    Realtek GPIO Driver for Flash Reload Default
    block: 64 slots per queue, batch=16
    RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
    PPP generic driver version 2.4.1
    PPP MPPE Compression module registered
    RealTek E-Flash System Driver. (C) 2002 RealTek Corp.
    Found 1 x 4M Byte MXIC MX29LV320AB at 0xbe000000
    RTL8185 driver version 1.14 (2007-03-15)
    8186NIC Ethernet driver v0.0.8 (Jan 30, 2007)
    eth0: RTL8186-NIC at 0xbd200000, 00:01:02:03:04:05, IRQ 4
    eth1: RTL8186-NIC at 0xbd300000, 04:05:06:07:08:09, IRQ 5
    fast_nat v1.3f
    NET4: Linux TCP/IP 1.0 for NET4.0
    IP Protocols: ICMP, UDP, TCP
    IP: routing cache hash table of 512 buckets, 4Kbytes
    TCP: Hash tables configured (established 1024 bind 2048)
    ip_conntrack version 2.1 (128 buckets, 1024 max) - 312 bytes per conntrack
    PPTP netfilter connection tracking: registered
    PPTP netfilter NAT helper: registered
    ip_tables: (C) 2000-2002 Netfilter core team
    NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
    NET4: Ethernet Bridge 008 for NET4.0
    RAMDISK: Compressed image found at block 0
    Freeing initrd memory: 990k freed
    VFS: Mounted root (ext2 filesystem).
    Freeing unused kernel memory: 56k freed
    mount /proc file system ok!
    do_page_fault() #2: sending SIGSEGV to init for illegal read access from
    2aab0000 (epc == 2aaac240, ra == 2aaab948)
    do_page_fault() #2: sending SIGSEGV to init for illegal read access from
    2aab0000 (epc == 2aaac240, ra == 2aaab948)
    Die letzten beiden Zeilen werden in einer Endlosschleife immer wieder ausgegeben.

    Ich habe eine Supportanfrage an D-Link geschickt. Auf der Packung steht ja groß, daß man die Firmware des Accesspoints selbst anpassen kann. Hoffentlich weiß der Support, wie man den DAP-1160 wieder in einen funktionierenden Zustand bekommt ...

    [UPDATE 2008-12-09] Ich habe eine Antwort von D-Link bekommen: wenn man einen gültiges Firmwareimage per TFTP in den Accesspoint lädt, dann wird das Image automatisch in den Flash-Speicher geschrieben. Das Kommando "flw" ist also gar nicht notwendig.

    Ich konnte damit wieder eine offizielle Firmware in den Accesspoint laden. Ich habe mich dann wieder an meine eigene Firmware gemacht. Leider konnte ich kein Problem im Buildvorgang erkennen. Ich habe dann einen virtuellen PC mit dem in den README-Dateien erwähnten RedHat Linux 9 installiert, die Firmware nochmal compiliert und siehe da: das Image läßt sich sich sowohl über die Weboberfläche als auch über TFTP in den DAP-1160 hochladen und starten. Die eigene Firmware lief sogar fast vollständig auf Anhieb - ich mußte nur das Verzeichnis /var/run zur Ramdisk hinzufügen :buerste:

    Gruß
    Henning
     
  5. morpheus80

    morpheus80 Neuer User

    Registriert seit:
    12 März 2008
    Beiträge:
    58
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Linux Consultant
    Ort:
    Tuxhausen
    Hai hehol !

    Erst mal Danke für deine Posts. Nachdem ja nicht wirklich soviel Feedback kam, dachte ich schon ich bin der Einzige, der sich von den "Source Code for the Linux Community"-Versprechen zum Kauf überreden lies. :lamer:

    Doch eigentlich hat mich das Buildroot von D-Link nicht wirklich überzeugt. Hatte etwas mehr erwartet (z.B. ein Ncurses Interface für die Config). Ausserdem hat sich D-Link nur wenig Mühe gegeben die Anleitung usw. an den DAP-1160 anzupassen. Stattdessen ist das meiste einfach 1:1 vom RTL8186 (Realtek) Evaluation Board übernommen.

    Nach einigen Versuchen mit dem Buildroot des DAP-1160 eine funktionierende Firmware zu basteln, hab ich mich jetzt entschlossen lieber selbst ein Image "from scratch" zu bauen. D.h. ich verwende Teile des Buildroot von D-Link (ftp://ftp.dlink.co.uk/GPL), einen Kernel vom Wive-NG-Projekt (http://sourceforge.net/project/showfiles.php?group_id=239220&package_id=290878) und einige andere Programme wie Telnet, Dropbear und DNSmasq. Die Init Scripten will ich selbst schreiben. Ist halt erst mal viel Arbeit und ich denke, dass dann das WebInterface wohl funktionslos sein dürfte.

    Ich werde hier dann ab und an mal schreiben wie weit ich so gekommen bin mit meinen Image... ;)

    morpheus80.