Note: B2 appears to only be different in labeling. The default firmware claims B1 and even /proc/cpuinfo claim to be B1 revisions even though the packaging and the sticker say B2.Update!!! D1/E1 revision could be supported. You can find some useful information on the forumWARNING: The DIR-825 series is prone to hardware failure of the Ethernet ports. There are numerous reports of this model developing problems with its LAN + WAN ports.

Hardware Highlights

HW Rev

CPU

Ram

Flash

Network

Gigabit

USB

Serial

JTag

A1

Ubicom IP5170U@?

16MB

?

4×1

Yes

Yes

?

?

B1/B2

Atheros AR7161@680MHz

64MB

8MB

4×1

Yes

Yes

Yes

Yes

C1

Atheros AR9344@560MHz

128MB

16MB

4×1

Yes

Yes

Yes

Yes

D1

Realtek RTL8197D@?

64MB

8MB

4×1

Yes

Yes

?

?

E1

Realtek RTL8197DN@660MHz

64MB

8MB

4×1

Yes

Yes

Yes

?

Note: More info about hardware in E1 revision is available at wikidevi

There are two ways of installing firmware, either by using normal D-Link firmware update web-interface or by using firmware recovery mode.

Installation using firmware update page

Note: Since original Firmware 2.05WW Build: 05Beta01 it is not possible to flash OpenWrt via the firmware update page.
(worked on a B2 revision with Ubuntu's Firefox in 2.05NA and 2.06NA)
It looks like Firmware 2.01EU behaves the same way. Please use the firmware recovery mode instead.

firmware 2.02EU should still be available on ftp.dlink.de and it doesn't require IE, nor Mac.

2.05EUB09_7 can't be downgraded to 2.04 but fortunately can be downgraded to 2.02EU

I had to disable both avahi, cups and IPv6 to get it working. (B2 FW ver 2.01EU)

If you are running MacOS you can use Google Chrome Opera

FW version 2.05EU seems very difficult to flash, there may be timing issues (that's just a guess). After downgrading to 2.04EU (get it from ftp.dlink.de) it worked the first time, using IE7 on a virtualbox Win XP “guest”. YMMV.

Phase 2: General steps

While powering up the router, press and hold the reset button until the power LED starts blinking orange (usually takes around 45 (forty-five) seconds )

Set a static IP on your PC to 192.168.0.100/24

connect to http://192.168.0.1, mind the quirks!

Click “Browse” and select your OpenWrt image file (openwrt-ar71xx-dir-825-b1-squashfs-factory.bin, this binary image is available in the Backfire 10.03.1rc1 download directory and above)

Click “Update” and let router flash the image (don't worry if it reboots before it reaches 100%). The page should display “Device is Upgrading the Firmware” in blue letters with the current percentage in red (with an incompatible Browser it doesn't). Look at the screenshot at the end of this section.

The router's power LED should blink orange during bootup, as soon as it stops flashing, you can connect to it

Tip! Note that default DHCP will allocate on 192.168.1.x, which is different subnet to the address you allocated above. This is why you can't connect until you change your IP address.

JTAG

LEDs

The DIR-825 has 11 blue and 2 orange LEDs: The four LAN LEDs are controlled by the switch chip. By default they show link and blink for activity. They are LED Bank 0. To configure the RealTek RTL8366S, you can use swconfig, e.g.

swconfig dev rtl8366s port 0 set led 2

LED name

LED symbol

Internal name blue

Internal name orange

unknown

D-Link

unknown

n/a

Power

Power

dir825b1:blue:power

dir825b1:orange:power

Planet

Planet

dir825b1:blue:planet

dir825b1:orange:planet

Wireless LAN 2.4 GHz

Waves (2.4GHz)

ath9k-phy0::phy0tpt

n/a

Wireless LAN 5 GHz

Waves (5GHz)

ath9k-phy1::phy0tpt

n/a

LAN Port 1

PC (1)

n/a

n/a

LAN Port 2

PC (2)

n/a

n/a

LAN Port 3

PC (3)

n/a

n/a

LAN Port 4

PC (4)

n/a

n/a

Universal Serial Bus

USB

dir825b1:blue:usb

n/a

WPS

Two arrows

dir825b1:blue:powersave

n/a

Repair LEDs after flashing OpenWrt

If you want to see the BLUE POWER ON and the BLUE GLOBE ( planet ) blinking when it receives information, then do the following setup:

For UCI configuration of the LEDs use this set of commands:

uci set system.led_wan_orange=led
uci set system.led_wan_orange.sysfs=d-link:orange:planet
uci set system.led_wan_orange.default=1
uci set system.led_wan_blue=led
uci set system.led_wan_blue.default=1
uci set system.led_wan_blue.sysfs=d-link:blue:planet
uci set system.led_wan_blue.trigger=netdev
uci set system.led_wan_blue.dev=eth1
uci set system.led_wan_blue.mode=link tx rx
uci set system.led_power_orange=led
uci set system.led_power_orange.sysfs=d-link:orange:power
uci set system.led_power_orange.default=0
uci set system.led_power_blue=led
uci set system.led_power_blue.sysfs=d-link:blue:power
uci set system.led_power_blue.default=1
uci commit system

After rebooting the device this setup becomes active.

Buttons

The WPS (WiFi Protected Setup) button is located at the right side (or the top when standing) and can be easily pressed with a finger. Also the WPS LED is integrated into the Button. For some unknown reason this control is named powersave in various places.

The Reset button is located at the back and cannot be pressed with a finger, you need a small item to push it in.

Switch Ports

Numbers 0-3 are Ports 4 to 1 as labeled on the unit, 5 is the internal connection to the router itself.

Port

Switch port

CPU (eth0)

5

No port

4

LAN 1

3

LAN 2

2

LAN 3

1

LAN 4

0

Hardware Mods

Second USB port

It was reported that in order to enable second USB port it is sufficient to solder in two straight bridges in place of L66 (take a look to the corresponding photo in the “Photos” section). After that you will need to solder in second USB header or - easier way - to solder in short-tailed female USB type A connector (sample photo is also available in the “Photos” section).

In the stock firmware, after you have soldered the bridges and USB head, if you connect a USB device (e.g. a USB Flash Drive) to the second USB head, the USB LED will turn blue.

128 MB RAM Mod

He used two Samsung K4H511638D-UCB3 chips from Samsung DDR SODIMM 512 MB. Maybe other chips from other manufacturers can be used, only they has to have 32Mx16 organization. Chips with other organization, such as 64Mx8, are not suitable.

Next to the soldering, the bootloader (U-Boot) and the calibration data partition has to be changed, because the D-Link bootloader/calibration data partition does not start with the 128 MB RAM. He used the bootloader/calibration data partition from Netgear WNDR3700. It's done through a full reflash, check the forum for the binary. It turn the D-Link DIR-825 into an Netgear WNDR3700.

The Netgear stock firmware does not recognize the 128 MB RAM, it only shows/uses 64 MB RAM, but it starts.

Connection Information

Other Info

Feel free to add here any info we haven't covered yet! Thank you!

I was able to upload the openwrt-ar71xx-generic-dir-825-b1-squashfs-factory.bin in recovery mode with Internet Explorer with compatibility view enabled (menu Tools/Compatibility View). Without it it was loading forever. Other browsers (Chrome, Firefox, Opera) were not working. Tested with Windows and Linux. Also I switched my 1Gbit cart into 100Mbit mode.

It may be necessary to run the original firmware and configure the device at least once. I flashed the router right away using the firmware recovery interface which resulted in configuration problems in OpenWrt. All wireless network devices did not have valid MACs instead they used 00:00:00:00:00:00 and refused therefore to work properly. Even trying to read the MAC from the sysfs failed. After flashing the original firmware and configuring the device once using the D-Link Webinterface everything worked as expected after flashing OpenWrt again.

Besides flashing in recovery mode from a MacBook Pro using Google Chrome and the default Gigabit plug worked just fine!

I had installed the openwrt-ar71xx-generic-dir-825-b1-squashfs-factory.bin using a Ubuntu system with Chrome using the original firmware update page in a DI-825 Rev B1 with FW 2.07NA

( Info: wait a bit and then you will see that your router is not responding any more → this is normal, give him a little time ( 1min max) then unplug the power supply from the router, then wait 10sec and plug it back in! )

o) Go to Network / Interfaces

You will find here only the LAN (green) and WAN (red) interfaces. Now we will have to add the VLAN-Interface ( I called it GLAN, you can call it GAN - it doesn't matter) - the G because of the global IPs!

o) Adding the GLAN Interface

a) Add new interfaces

b) Type in the name for the new interface: GLAN ( this is in my case, u can call it whatever u want)

c) Protocal of the new interface: Static address

d) Create a bridge over multiple interfaces: NO

e) Cover the following interface: VLAN Interface: “eth0.2”

f) Hit the Submit button

GLAN configuration overview:

This is what you will see, when you click the Interfaces

This is what you should see, after you added the GLAN Interface

To be sure that you have the right settings, check the /etc/config/network output:

4) Setup machine connected to VLAN

!!! Be aware to turn ON a firewall, because now the machine is exposed to the public !!!

A C Program to flash DIR-825

The following program allows you to flash the DIR-825 from Linux without need of a VM with Windows with IE6.

The DIR-825 requires some rather peculiar TCP settings, and relies on some broken IE6 behaviour, which is why flashing with Firefox on Linux (or Firefox on Windows) doesn't work. The ruby script on the next section does *NOT* always work for this reason (perhaps due to different versions of ruby or underlying OS having different defaults).

I therefore have hacked on (it's not nearly my best work) a basic 'C' program that flashes the DIR-825 (and probably DIR-600/601 as well). It uses the HTTP headers as IE6 and uses the required TCP settings under Linux.

To use this program save as dlinkflash.c and do

gcc -o dlinkflash dlinkflash.c

Then copy dlinkflash to some location in your PATH, or do ./dlinkflash <firmware-filenname>

With this script it's not necessary to force your NIC to work @ 10/100 Mb/s and it's not necessary using IE7

#!/usr/bin/ruby# Copyright (C) 2011 CASPUR (wifi@caspur.it)## This program is free software: you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation, either version 3 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program. If not, see <http://www.gnu.org/licenses/>.# This script will help you flashing D-LINK DIR-825 devices 'cause they can be flashed only with IE7# Your ETH Address must be 192.168.0.100/24require'socket'
HOST = "192.168.0.1"
PATH = "/cgi/index"if ARGV.count == 0puts"Usage #{$0} <filename>"exit1else
filename = ARGV[0]puts"[#{Time.now}] Using firmware file '#{filename}'"end
predata = <<-eopd
-----------------------------7db12928202b8
Content-Disposition: form-data; name="files"; filename="#{filename}"
Content-Type: application/octet-stream
eopd
firmware = File.open(filename, "rb"){|io| io.read}
postdata="\x0d\x0a-----------------------------7db12928202b8--\x0d\x0a"# Each line must end with cr/lf characters, and we have to know how many # data the script will send to the dir-825 this is why we concatenate it before# creating the header
buffer = predata.gsub(/\n/,"\x0d\x0a")+ firmware + postdata
header = <<-eoh
POST #{PATH} HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*
Referer: http://#{HOST}/
Accept-Language: it-IT
User-Agent: Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Content-Type: multipart/form-data; boundary=---------------------------7db12928202b8
Accept-Encoding: gzip, deflate
Host: #{HOST}
Content-Length: #{buffer.length}
Connection: Keep-Alive
Cache-Control: no-cache
eoh
beginputs"[#{Time.now}] Firmware file laded (#{firmware.length} bytes)"
http = TCPSocket.new(HOST, 'www')puts"[#{Time.now}] Sending firmware to the device... "
http.print header.gsub(/\n/,"\x0d\x0a")+ buffer
resp = http.recv(1012)# Let's check if it's all okif resp.match/Don't turn the device off before the Upgrade jobs done/
puts "\n[#{Time.now}] Finished. Please wait for the device to reboot."
else
puts "\n[#{Time.now}] Problem sending firmware to the device. Response from device follows."
puts resp
end
http.close
rescue Exception => e
puts "[#{Time.now}] Problem flashing device. Error: '#{e}'" endexit0

Fat images

Since Attitude Adjustment beta 2, some images are suffixed with “-fat” to indicate they will be able to use more flash that the factory firmware uses by default. It does this by moving the wireless interface calibration data at the end of the flash. This is a dangerous operation and should only be performed if you know how to back this flash partition (/dev/mtd5).
To upgrade, you'll need to copy the whole image in /tmp and use sysupgrade -i the caldata question. Downgrading to a non-fat image will get the caldata back in place so it can be used by the factory firmware, after upgrading to a fat image, you must downgrade before getting back to a factory image.