※ 주의: 이 방법은 인터넷에 있는 모든 방법이 먹히지 않을 때 공유기를 버려도 된다는 마음으로 진행하시기 바랍니다. 이 방법을 시도해도 문제가 해결되지 않을 수 있고, 문제의 원인은 다양할 수 있습니다. 이 방법을 시도하다 실패하거나 공유기가 아예 죽게되는 등의 어떠한 문제가 발생하여도 필자의 책임은 없음을 알려드립니다.
※ 다른 사람들과의 정보 공유를 위해 비밀 댓글은 자제해주시면 감사하겠습니다 :)
※ 질문 해주실 땐
1) 어느 링크를 따라하다가 어느 부분에서 막혔는지
2) 증상은 무엇인지 (최대한 상세하게)
3) 복구를 위해 무엇을 시도했는지(30-30-30 reset을 실패했다 등)
를 알려주시면 답변에 도움이 됩니다.
ASUS RT-AC68U와 동일한 모델로 알려진 TM-AC1900을 t-mobile에서 구매하고 RT-AC68U 정식 펌웨어로 덮어쓰는 것까지는 무사히 성공했습니다.
그러고나서 펌웨어 페이지를 스마트폰 IP에서만 WAN에서 접근 가능하게 설정했습니다. 그런데 당연히 LAN에서는 IP제한 없이 접근 가능할 것이라 생각했는데 LAN에서도 접근이 불가능한 상태가 되었습니다. 게다가 스마트폰 IP도 바뀌었고요.
펌웨어 페이지에 접근할 방법이 없으므로 reset을 시도했습니다. 하지만 지금 생각해보니 전력 공급이 불안정했던 것 같습니다. 돼지코를 끼운 뒤 멀티탭에 연결할 때부터 연결한 뒤에도 선을 조금이라도 건드리면 스파크가 튀었습니다. 이런 상태에서 reset을 하다보니 제품이 벽돌이 된 것 같습니다.증상은 다음과 같았습니다.
원인
- 공유기 reset중 전원이 불안정했던 것으로 추정. (어댑터에 스파크가 자주 튐)
증상
- 전원 LED 켜짐
- 부팅 후 오래 기다리면 뒷면의 ASUS 조명 켜짐
- LAN포트 연결시 LAN LED 켜짐
- Wi-Fi 안 잡힘
- 네트워크로 공유기 아예 접근 불가(고정IP 안 됨. ping 안 됨. ARP response 없음. MAC주소는 부트로더 덮어쓸 때 앎으로 static ARP 세팅 시도했으나 실패)
시도해본 것
- 전원 켜고 12시간동안 방치했으나 실패
- 복구 모드로 부팅 성공 (https://www.asus.com/support/faq/1000814, LED 천천히 깜빡임) => 부트로더는 살아있다는 희망을 얻음
- Firmware restoration tool 실패 (https://www.asus.com/support/faq/1000814, 공유기로 접근이 전혀 안 됨)
- WPS nvram reset 실패
- 30-30-30 reset 실패 (http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30)
이 상태에서 할 수 있는 것은 공유기를 분해해 UART나 JTAG 등 디버깅 포트에 연결하는 것 뿐인데, 인터넷에서 RT-AC68U의 PCB 사진을 얻지 못했습니다. 그렇게 시험기간에 공부는 못하고 구글링 하던 중 저와 똑같은 증상의 글을 발견했습니다(http://www.snbforums.com/threads/tm-ac1900-rt-ac68u-bricked-while-flashing-from-tomato-to-merlin.29077/). 이 글에서 UART 연결이 가능함을 확인하였고, 분해하는 방식을 참조해 분해했습니다. 이 방법은 크게 다음과 같은 방식으로 진해됩니다. (클릭시 이동)
저는 Windows10에서 진행하였습니다. 여기에 필요한 준비물은 다음과 같습니다.
- 안 쓰는 신용카드 (공유기 분해용)
- USB to TTL for Rabbit 개발보드 (http://www.devicemart.co.kr/32122)
- Rabbit 개발보드 드라이버 (위 페이지에 다운로드 링크 존재. http://www.jkelec.co.kr/img/semiconductor/usb2serial/pl2303.zip)
- 테스트[CH254]소켓 점퍼 케이블 40P (http://www.devicemart.co.kr/32284) (3개만 필요하므로 가능하다면 40P 말고 3P만 구매하셔도 됩니다)
- PuTTY, Xshell 등 터미널 연결 프로그램
snbforum의 글쓴이는 rabbit 개발보드와 점퍼케이블 대신 일체형(https://www.amazon.com/gp/product/B00QT7LQ88?ref_=oh_aui_detailpage_o01_s00&redirect=true&psc=1&pldnSite=1)을 사용했다고 합니다.
1. 공유기 분해 & PCB 보드 분리
공유기 분해는 snbforum 링크 및 다른 공유기 분해 영상을 참고하면서 진행하세요.
신용카드를 이용하면 너덜너덜해지므로 버려도 상관 없는 카드를 이용해서 분해하면 됩니다. 저는 고정 핀을 안 부러뜨리려고 노력하다 보니 앞에 판을 떼는데만 5시간정도 소요되었습니다. 그래도 핀은 1~2개정도 부러진 것 같습니다. 나사를 풀고 PCB보드만 떼어내면 다음과 같습니다.
PCB 앞면을 살펴보면 오른쪽 상단에 VCC, RX, TX, GND라고 적혀있는 UART 포트 확인할 수 있습니다.
2. PC와 Rabbit board 연결
Rabbit 개발보드를 PC와 연결하려면 드라이버를 설치해야합니다. pl2303.zip 압축을 풀면 나오는 PL2303_Prolific_DriverInstaller_v1210.exe를 그냥 실행하면 아마 인식 못 할 겁니다. 설치하기 위해 장치관리자에 들어가면 Prolific USB-to-Serial Comm Port를 확인할 수 있습니다. 여기에 대고 우클릭-속성-드라이버-드라이버 업데이트-컴퓨터에서 드라이버 소프트웨어 찾아보기 선택한 뒤 PL2303_Prolific_DriverInstaller_v1210.exe를 선택해주면 됩니다. 제대로 진행하셨다면 아이콘의 느낌표 모양이 사라졌을 겁니다. (참고: http://wp.brodzinski.net/hardware/fake-pl2303-how-to-install/)
이렇게 PC와 Rabbit 개발보드를 연결해주고 3.3V에 맞춰야 합니다. 빨간 네모 안처럼 초록색으로 되어있는 부품을 3.3V와 가운데에 맞게 끼워주면 됩니다.
3. Rabbit board와 공유기 연결
이제 개발보드와 공유기를 연결할 준비가 되었습니다. 공유기에 있는 4개의 포트를 보면 VCC, RX, TX, GND가 적혀있고, Rabbit 개발보드에도 위 사진의 왼쪽 4개 핀에도 똑같이 적혀있는 걸 확인할 수 있습니다. 점퍼케이블 3개를 이용해 다음과 같이 연결해주셔야 합니다.
- 공유기의 GND => Rabbit 개발보드의 GND
- 공유기의 RX => Rabbit 개발보드의 TX
- 공유기의 TX => Rabbit 개발보드의 RX
TX와 RX를 서로 맞물리게 하줘야 합니다. 이렇게 하는 이유는 공유기의 TX핀(데이터를 전송하는 핀)은 개발보드의 RX핀(데이터를 전송받는 핀)을 이용해 받고, 역으로도 마찬가지이기 때문입니다.
4. 터미널 접속 & nvram erase
이제 공유기로 접속할 준비가 되었습니다. 저는 Xshell을 사용해서 다음과 같이 설정했습니다. (PuTTY로 설정하는 방법은 제일 처음 snbforum 링크에 올라와 있습니다. Xshell은 다운로드가 좀 귀찮아서..)
SERIAL의 Port(COM6)은 장치관리자에 뜨는 포트로 해주시면 됩니다. 이렇게 설정해주고 연결하면 입력도 안 되고 출력도 안 되는 상태에 화면이 멈춰있을 겁니다. 이 상태에서 공유기의 전원을 넣으면 컴퓨터 부팅할 때 검은 화면에 메시지가 뜨듯이 메시지가 많이 뜰 겁니다. 한참 놔두면서 어디에서 문제가 발생하는지 확인해보시고요. 다시 부팅을 하면서 Ctrl+C를 계속 연타하면 부트로더에 진입하면서 "CFE> " 라고 뜨고 사용자의 명령어를 받는 상태가 됩니다.
이 상태에서 nvram erase를 입력해줍니다.
CFE> nvram erase
*** command status = 0
CFE>
그러고나서 재부팅했더니 살아났습니다. WPS로 nvram erase가 안 돼서 이 짓을 해야됐다는게 참 어이가 없네요. 만약 nvram erase를 진행해도 살아나지 않는다면, 위의 snbforum 링크에 들어가 새로운 펌웨어를 flash하는 방법을 따라해보세요.
[+ 2017.01.12] "nvram erase"로 해결되지 않을 때 새로운 펌웨어 flash하기
snbforum에 적힌 방법을 설명드리겠습니다. 제가 직접 시도했던 방법이 아니라 번역 및 추측으로 작성되었습니다.
다음 링크들을 참고하시고, 자신이 무엇을 하고 있는지, 그리고 다음 링크에서 무슨 작업을 하고 있는지 충분히 이해하시고 도전하세요.
http://www.cnblogs.com/ccpaging/p/cfe.html
1) CFE 콘솔에 "flash -noheader : flash1.trx" 를 따옴표 없이 입력합니다.
2) tftp를 이용해 펌웨어를 PC에서 공유기로 옮깁니다. (예: tftp -i 192.168.1.1 put TM-AC1900_3.0.0.4_376_1703-g0ffdbba.trx)
단, 여기서 펌웨어 사이즈가 중요한데, "show devices" 명령어를 이용해 nflash1.trx의 사이즈를 체크합니다.
CFE> show devices
Device Name Description
------------------- ---------------------------------------------------------
uart0 NS16550 UART at 0x18000300
uart1 NS16550 UART at 0x18000400
nflash0 AMD NAND flash size 131072KB
nflash0.boot AMD NAND flash offset 0 size 512KB
nflash0.nvram AMD NAND flash offset 80000 size 1536KB
nflash0.trx AMD NAND flash offset 200000 size 1KB
nflash0.os AMD NAND flash offset 20001C size 129024KB
nflash1.boot AMD NAND flash offset 0 size 512KB
nflash1.nvram AMD NAND flash offset 80000 size 1536KB
nflash1.trx AMD NAND flash offset 200000 size 30720KB
nflash1.brcmnand AMD NAND flash offset 2000000 size 98304KB
eth0 Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller
*** command status = 0
13번째 line에 nflash1.trx가 30.72MB인 것을 볼 수 있는데, 넉넉하게 30MB 이하인 펌웨어를 업로드시켰다고 합니다.
업로드가 완료될 때까지 천천히 기다리시길 바랍니다.
3) CFE 콘솔에 "go" 를 따옴표 없이 입력합니다. (펌웨어를 검증하고 부팅하는 명령어입니다)
특히 2번에 대한 정보가 부족합니다(어떤 펌웨어 버전을 올려야 하는지, 명령어는 저렇게 하면 되는지 등).
성공하셨다면 댓글로 정보 공유 해주시면 감사하겠습니다.
'Documents' 카테고리의 다른 글
Ubuntu Desktop Sharing 설정 및 암호화 (0) | 2017.06.11 |
---|---|
gpg passphrase 입력 후 멈춤 (0) | 2017.05.22 |
너무 싼 가격의 Windows 10 믿어도 되나? (0) | 2016.11.12 |
gdb에서 for문에 BP가 안 걸릴 때 (0) | 2016.10.03 |
오버워치 전체화면 안 될 때 (2) | 2016.10.02 |