Unbrick router Buffalo WZR-D1800H bằng Raspberry Pi

Có nhiều tài liệu về đề tài unbrick một router. Thông thường có 4 cách:

  1. Dùng giao diện web của router để chép firmware mới
  2. Dùng TFTP
  3. Dùng port serial trên router
  4. Dùng máy chép firmware vào flashrom

  • Nếu giao diện web còn hoạt động thì cách 1 là dễ nhất.
  • Cách 2 khó hơn.
    Có nhiều thông tin khác nhau về việc dùng IP và MAC của router. Xác nhận ở đây là IP dùng để phục hồi firmware router Buffalo là 192.168.11.1, bất kể trước kia router có thể được gán IP khác (thí dụ 10.0.0.1). MAC của router có ghi trên nhãn của router hoặc có thể dùng MAC chung của một lớp router, thí dụ 02-AA-BB-CC-DD-20
  • Cách 3 khó hơn nữa.
    Trước hết là phải mở vỏ router mới nhìn thấy serial. Một số router Buffalo dùng ốc vít, một số khác dùng ngàm nên khó mở hơn.
    Tiếp theo là phải dùng serial trên máy tính để nối với serial của router. Có thể mua USB-Serial (CP2102 USB-TTL Board) cắm vào máy tính để có serial, hoặc dùng RPi có sẵn serial để kết nối với router.
  • Cách 4 cần thêm công cụ.
    Có thể gỡ flashrom ra rồi dùng máy chép firmware vào, hoặc có thể dùng cách thay nóng flashrom vào router tương tự đang chạy rồi chép firmware mới qua giao diện web

Như vậy, router có thể bricked nhưng không died, bao giờ cũng có cách phục hồi 🙂

1. Mở hộp router Buffalo WZR-D1800H

Trước hết tháo vít nằm gần chổ cắm nguồn và vít ở cạnh đối diện. Sau đó tháo nắp trước của router. Dùng miếng nhựa tương tự thẻ ATM hay thẻ điện thoại để mở hộp, dùng thẻ SIM cũng được. Bắt đầu từ chỗ các cổng gắn cáp RJ45, luồn miếng nhựa vào khe nắp trước và nhấn để làm bật các ngàm phía trong, di chuyển lên trên và vòng sang cạnh còn lại. Chú ý không đưa miếng nhựa vào sâu quá 1cm vì có thể làm hư các anten.

D1800H-1

D1800H-2

 

2. Sử dụng các cổng serial trên RPi và router

_DSC2231

D1800H-3

  • Chân 3.3V luôn luôn được đánh dấu, chúng ta không dùng. Chân GND có thể dùng đồng hồ đo Ohm để xác định. Các chân RX và TX dùng phép thử và sai để tìm, dùng sai chân RX và TX không gây hại gì, chỉ không truyền được tín hiệu.
  • Các chân GND (pin 6), TX (pin 8) và RX (pin 10) trên RPi theo sơ đồ sau (bài trước)

  • Nối GND-GND, TX-RX, RX-TX. Đánh dấu RX và TX trên router D1800H trong hình trên có lẽ là nhầm thứ tự.

_DSC2226

 

3. Công cụ và câu lệnh phục hồi router

  • Để có thể dùng serial trên RPi, phải ngăn không cho RPi tự động chiếm dụng khi khởi động.

Chạy lệnh raspi-config và làm theo hình sau

Screenshot 2015-07-16 08.44.13

Screenshot 2015-07-16 08.44.23

Screenshot 2015-07-16 08.44.43

Chọn NO, lưu thiết lập và khởi động lại.

  • Cài đặt minicom
apt-get install minicom
  • Lúc này router đang tắt. Chạy lệnh sau
minicom -b 115200 -o -D /dev/ttyAMA0

Bật điện router và gõ ngay lúc đó Ctrl+AF (giữ Ctrl gõ A, nhả Ctrl gõ F) để gởi tín hiệu break ra router. Nếu không gõ kịp thì quá trình boot bắt đầu không thể ngắt được cho đến khi gặp lỗi (vì router bị bricked), khi đó thử gõ lại Ctrl+A và F và Enter, nếu gặp dấu nhắc lệnh thì được.

rpi-terminal

Bây giờ đã đến lúc nạp firmware vào router.

Có hai điều cần nhớ: firmware không được quá lớn và không được mã hóa. Firmware tải về từ trang Buffalotech.com không dùng được vì có cả hai điều trên. Tìm trên mạng firmware đã được giải mã và gọt bớt cho gọn lại, thí dụ có thể lấy từ đây. Sau khi phục hồi router thành công có thể nạp lại firmware khác.

  • Chạy lệnh
tftpd
tftp -i 192.168.11.1 put FIRMWARE_FILE

và chờ cho quá trình nạp xong, có thể mất vài phút. Sau đó router tự khởi động lại hoặc dùng lệnh go hay reboot để khởi động lại. FIRMWARE_FILE lưu trong RPi có đường dẫn đầy đủ.

Nối cáp mạng với router và mở giao diện web tại 192.168.11.1 với user admin và mật khẩu password.

Qui trình phục hồi router bị bricked này chỉ cần vài dòng lệnh, đơn giản hơn cách dùng dụng cụ USB-Serial trên Windows.

 

Leave a Comment

Filed under Software

Leave a Reply