Nâng cấp firmware D-Link DIR-300 rev A lên DD-WRT


Một cách để mở rộng WLAN

(lưu ý: phần hướng dẫn này chỉ sử dụng được cho D-Link DIR-300 rev A)

Chuẩn bị

  1. Vào trang http://www.dd-wrt.com/wiki/index.php/Supported_Devices#Cisco_Linksys_.28Wireless_a.2Fb.2Fg.29 để kiểm tra danh sách hỗ trợ nâng cấp firmware dd-wrt của tất cả các loại WR (Wireless Router).
  2. Vào trang web: http://www.dd-wrt.com/site/support/router-database#,  tại mục Router Database, nhập tên của WR (cụ thể: D-Link Dir-300) để chọn chính xác các tập tin cần thiết cho quá trình nâng cấp (chú ý đến giá trị FCC ID hoặc Revision).
  3. Tải các tập tin: ap61.ram, ap61.rom và linux.bin về máy, lưu vào một thư mục trong ổ đĩa D:\ hoặc  C:\. (ví dụ D:\Dir)
  4. Tải từ internet chương trình để cấu hình tftp server (ví dụ: PumpKIN 2.6).
  5. Cài đặt tftp server.
  6. Tải tập tin putty.exe (phần mềm hỗ trợ Telnet) từ trên mạng, lưu vào ổ đĩa C:\
  7. Tắt cạc mạng Wireless trên máy tính, tắt các chương trình anti-virus, tường lửa (firewall).
  8. Gán địa chỉ IP tĩnh cho máy tính, IP: 192.168.20.80, subnet mask: 255.255.255.0
  1. Nối cáp UTP (cáp thẳng) từ máy tính tới cổng WAN hoặc INTERNET của WR.
  2. Tại thư mục gốc ổ đĩa C:\, tạo tập tin redboot.txt với nội dung:
^C
  1. Tại thư mục gốc ổ đĩa C:\, tạo tập tin redboot.bat với nội dung:
rem echo off
:start
rem ------------------------------------------------
ping 192.168.20.81 -n 1 -w 1 >NUL
IF ERRORLEVEL 1 goto start
 
rem putty
rem ------------------------------------------------
break
putty.exe telnet://192.168.20.81:9000 -m redboot.txt
exit

Truy cập vào redboot của WR

  1. Nhấp đúp chuột vào tập tin redboot.bat để telnet tự động vào WR, máy tính sẽ thực hiện ping tới WR để kiểm tra và telnet tự động. Màn hình kết quả.

  1. Rút nguồn điện của WR, cắm lại, sau đó, bấm và giữ nút RESET trên WR khoảng 15 giây, WR sẽ reset lại. Lệnh telnet sẽ kết nối vào redboot của WR trong giây thứ 6 của quá trình reset. (có thể phải thực hiện lại bước này một số lần, trước khi kết nối thành công). Nếu kết nối thành công sẽ xuất hiện cửa sổ sau.
  1. Bây giờ, chạy tftp server (PumpKIN), cấu hình sao cho TFTP filesystem root (hoặc Base Directory của các tftp server khác) trỏ tới D:\Dir. (với PumpKIN vào Options để cấu hình).

Nạp boot loader cho WR

  1. Tại dấu nhắc RedBoot của chương trình PuTTY thực hiện các lệnh sau: (lưu ý, chữ đậm là lệnh được nhập từ bàn phím)
RedBoot> load ap61.ram
Using default protocol (TFTP)
Entry point: 0×800410bc, address range: 0×80041000-0×800680d8
(chương trình PumpKIN có thể bắt xác minh về quyền truy cập, bấm grant access)
RedBoot> go
Nếu thành công WR sẽ tự động khởi động lại
(Bước “load” này rất hay bị lỗi “time out” liên quan đến TFTP, có thể cài đặt PumpKIN phiên bản khác hoặc TFTP server khác để khắc phục lỗi).

Nạp boot loader mới cho WR

  1. Đóng cửa sổ chương trình PuTTY, không được tắt chương trình PumpKIN
  2. Cấu hình lại địa chỉ IP của cạc mạng máy tính(mạng có dây), địa chỉ là: 192.168.1.2; subnet mask là: 255.255.255.0.
  3. Rút cáp đang cắm ở cổng WAN hoặc INTERNET trên WR chuyển sang cổng LAN bất kì của WR.
  4. Địa chỉ của WR bây giờ là 192.168.1.1 (có thể sử dụng lệnh ping 192.168.1.1 để kiểm tra, nếu ping thành công làm tiếp bước sau).
  5. Vào Run gõ cmd. Tại dấu nhắc, gõ lệnh:
C:\> telnet
Welcome to Microsoft Telnet Client
Escape Character is 'CTRL+]'
Microsoft Telnet> open 192.168.1.1 9000
Nếu thành công xuất hiện cửa sổ dòng lệnh với dấu nhắc mới:
DD-WRT>
Lưu ý: bắt đầu từ lúc này không được rút cáp mạng hoặc ngắt nguồn điện của WR.
21. Tại dấu nhắc DD-WRT gõ các lệnh sau:

DD-WRT> fconfig -i
Initialize non-volatile configuration – continue (y/n)? y
Run script at boot: false
Use BOOTP for network configuration: true
Default server IP address:
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)? y
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .

DD-WRT> fis init
About to initialize FLASH image system – continue (y/n)? y
*** Initialize FLASH Image System
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×807f0000-0×80800000 at 0xbffe0000: .
DD-WRT> ip_address -h 192.168.1.2
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2
DD-WRT> load -r -b %{FREEMEMLO} ap61.rom
Using default protocol (TFTP)
Raw file loaded 0×80080000-0×800a8717, assumed entry at 0×80080000

DD-WRT> fis create -l 0×30000 -e 0xbfc00000 RedBoot
An image named ‘RedBoot’ exists – continue (y/n)? y
… Erase from 0xbfc00000-0xbfc30000: …
… Program from 0×80080000-0×800a8718 at 0xbfc00000: …
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×807f0000-0×80800000 at 0xbffe0000: .

DD-WRT> reset
Thực hiện telnet lại vào DD-WRT từ cửa sổ dòng lệnh (giống bước 20).
Tại dấu nhắc DD-WRT thực hiện các lệnh sau:

DD-WRT> ip_address -h 192.168.1.2
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2

DD-WRT> fis init
About to initialize FLASH image system – continue (y/n)? y
*** Initialize FLASH Image System
… Erase from 0xbfc30000-0xbffe0000: …………………………………………………..
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .

DD-WRT> load -r -b 0×80041000 linux.bin
Using default protocol (TFTP)
Raw file loaded 0×80041000-0×803cffff, assumed entry at 0×80041000

DD-WRT> fis create Linux
//Bước này chạy mất từ 2 -> 3 phút, nên bạn kiên nhẫn chờ đợi
… Erase from 0xbfc30000-0xbffbf000: …………………………………………………
… Program from 0×80041000-0×803d0000 at 0xbfc30000: …………………………………………………
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .

DD-WRT> fconfig boot_script true
boot_script: Setting to true
Update RedBoot non-volatile configuration – continue (y/n)? y
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .

DD-WRT> fconfig boot_script_timeout 4
boot_script_timeout: Setting to 4
Update RedBoot non-volatile configuration – continue (y/n)? y
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp false
bootp: Setting to false
Update RedBoot non-volatile configuration – continue (y/n)? y
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .

DD-WRT> fconfig
Run script at boot: true
Boot script:
…………..
Enter script, terminate with empty line
Nhập 2 dòng lệnh sau:
>> fis load -l linux
>> exec
>> (bấm phím enter)
Boot script timeout (1000ms resolution): 4
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address:
Local IP address mask:
Default server IP address:
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)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp_my_ip 192.168.1.1

bootp_my_ip: Setting to 192.168.1.1
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp_my_ip_mask 255.255.255.0

bootp_my_ip_mask: Setting to 255.255.255.0
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp_my_gateway_ip 0.0.0.0
bootp_my_gateway_ip: Setting to 0.0.0.0

DD-WRT> reset


Bạn đã thực hiện việc nâng cấp thành công.
Chờ cho WR khởi động lại.
Địa chỉ IP mặc định của WR bây giờ là: 192.168.1.1.
Bạn có đăng nhập lại vào WR (qua trình duyệt web) để cấu hình DD-WRT.

Tham khảo:
[2]. http://www.taringa.net