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

morpheus80

Neuer User
Mitglied seit
12 Mrz 2008
Beiträge
58
Punkte für Reaktionen
0
Punkte
0
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=gNTyP9CnptFMIC4AStFCF834mptYIe5XTNvhLPG3yV3oWIl8g6ltbNlwaaRp7ytsRWm5kC9PiO52eLCGv9yUQC5gx5/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: ;)

--> Download image to Realtek EV (evaluation) board for testing
*************************************************

1. Use a RS232 cable to connect COM port between a LINUX PC and EV board.
2. Connect LINUX PC Ethernet port to the LAN port of EV board. Set PC IP address to 192.168.1.x (e.g., type 'ifconfig eth0 192.168.1.1').
3. Start a COM port console (e.g., minicom), and set COM port setting to 38400, 8N1 and no flow control.
4. Power on EV board, and press 'ESC' key in COM port console to escape the booting process. If ok, you may see "<RealTek>" prompt in the console.
5. Start a TFTP client in LINUX PC, and connect to 192.168.1.6. Set file type to binary mode, and put boot file (boot) to TFTP server of EV board.
6. After TFTP upload is completed, you may see a message in COM port console as "**TFTP Client Upload File Size = 00xxxxxx Bytes at 80300000". "00xxxxxx" and "80300000" indicate the hex value of upload file size and memory address stored image respectively (NOTE).
7. Type command in COM port console as "flw 20000 80300000 xxxxxx" to write upload image to flash address "20000" from SDRAM address 80300000" with size "xxxxxx" in hex (NOTE).
8. Then that, you may see a message shown in COM port console as: "Flash Program from 80300000 to 00020000 with 00xxxxxx bytes?
(Y)es, (N)o->". Type 'y' to confirm the writing. After the updated is completed, you could power off/on the EV board, and the new linux image will be effective (NOTE).
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. ;)
 
Zuletzt bearbeitet:

morpheus80

Neuer User
Mitglied seit
12 Mrz 2008
Beiträge
58
Punkte für Reaktionen
0
Punkte
0
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.
 

hehol

Mitglied
Mitglied seit
22 Feb 2005
Beiträge
458
Punkte für Reaktionen
0
Punkte
16
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???

Beim WebInterface heisst es immer "Wrong File!!", wenn ich versuche mein eigenes Image hochzuladen.
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
 

hehol

Mitglied
Mitglied seit
22 Feb 2005
Beiträge
458
Punkte für Reaktionen
0
Punkte
16
hehol schrieb:
"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.
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
 
Zuletzt bearbeitet:

morpheus80

Neuer User
Mitglied seit
12 Mrz 2008
Beiträge
58
Punkte für Reaktionen
0
Punkte
0
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.
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,905
Beiträge
2,028,023
Mitglieder
351,049
Neuestes Mitglied
LtdLathara