7 min read

TM-AC1900 펌웨어 덮어씌우기

20180418: 384.20648 버전에서 발생하는 롤백 관련 내용을 추가하였다.

ASUS RT-AC68U 라는 비싼 공유기가 있다. 국내정가 25만원 정도 하는 모델이고, 해외구매로도 150달러는 족히 줘야 하는 물건인데… 일단 망할 코리안 프라이스.

근데 이게 미국 휴대폰 사업자인 T-Mobile에 TM-AC1900이라는 이름으로 OEM 납품된 적이 있다. T-Mobile 가입자 임대용으로, 물론 전용 펌웨어로 개조되어 납품되긴 하지만 여하튼 기본 하드웨어는 완전히 동일한 물건이다. 그런데 가격이 리퍼비시 기준 최저 50달러 선으로 매우 저렴하다. 허미…
그렇다면 펌웨어를 덮어씌우면 RT-AC68U로 사용할 수 있지 않을까? 그리고 양놈들이 그 방법을 찾았다. 부트로더(CFE) 영역을 RT-AC68U 것으로 덮어씌우면 간단히 해결된다. 물론 하드웨어 MAC주소와 비밀키는 제품마다 다르므로 적절히 고쳐줘야 하지만, 생각보다 어렵지는 않다.

이 방법을 다룬 문서는 구글에 검색해 보면 여럿 나온다. 다만 작업하면서 1시간 이상 삽질을 해서 주석을 좀 달아본다.

시작하기 전에

블로그 글쓴이는 선의로 본 문서를 제공하지만, 본 문서의 무결성을 보증하지는 아니한다. 즉 틀린 내용이 있을 수 있으니 본인 판단하에 진행하라.

본 문서의 내용은 어디까지나 참고 목적으로 제공되며, 블로그 글쓴이는 어떠한 경우에도 본 문서 및 본 문서의 작업에서 기인한 직, 간접적 결과에 대해 어떠한 책임을 지지 않는다. 모든 작업은 작업자 본인의 책임 하에 진행하라.

준비물

아래 파일들은 슬랙딜 사이트나 블로그 등을 찾아다니면서 알아서 구하라. ASUS 홈페이지에서 구버전 펌웨어가 모조리 삭제되었기 때문에, 검색해서 받는 수밖에 없다.

  • TM-AC1900 3.0.0.4.376.1703 펌웨어 파일
  • RT-AC68U 3.0.0.4.376.3626 펌웨어 파일
  • RT-AC68U 3.0.0.4.384.20308 펌웨어 파일 (현재까지 롤백이 발생하지 않는다고 확실하게 판명난 가장 최신버전이다)
  • mtd-write-arm_v2.rar

윈도우 기준, 아래 프로그램들을 다운로드하여 설치한다. 구글 검색하면 바로 나온다. 리눅스면 알아서 대응하는 명령어 써라.

  • PuTTY 최신버전
  • WinSCP 최신버전

작업할 컴퓨터에서 익스플로러를 한 번 켜 본다. 크롬은 캐시때문에 잘 작동하지 않는 것 같다.

NVRAM 설정 초기화와 응급복구(miniCFE)모드 진입방법

NVRAM 설정 초기화 방법

  • 후면 전원스위치를 눌러서 전원을 끄고, 10초간 기다린다.
  • 측면 WPS 버튼을 누르고 이 상태를 유지한다.
  • 후면 전원스위치를 눌러서 전원을 켠다. WPS 버튼을 누른 상태를 계속 유지한다.
  • 20초 기다리면 전면 PWR LED가 빠르게 깜빡거린다. 이제 WPS 버튼을 뗀다.
  • 기기가 재시작된다. 3분에서 5분간 기다린다. 부팅이 완료되면 2.4G 및 5G 무선 LED에 불이 들어온다.
  • NVRAM 설정 초기화 및 재부팅이 완료되었다.

응급복구(miniCFE) 진입방법

  • 후면 전원스위치를 눌러서 전원을 끄고, 10초간 기다린다. 가능하면 WAN (파란색 포트)의 랜선을 제거한다.
  • 컴퓨터의 IP주소를 응급복구 주소로 설정한다. - IP = 192.168.xxx.yyy (xxx는 상황에 따라 29 또는 1, yyy는 2-254 사이의 임의값)
  • 서브넷마스크 = 255.255.255.0
  • 게이트웨이 = 192.168.xxx.1 (xxx는 상황에 따라 29 또는 1)
  • DNS = 빈 칸으로 냅둔다.
  • 컴퓨터의 명령 프롬프트를 열고 다음 명령어를 입력한 뒤 엔터를 누른다. ping -t -w 100 192.168.xxx.1- 1초에 한 번씩 요청 시간이 만료되었다고 뜰 것이다. 정상이다.
  • 후면 RESET 버튼을 볼펜 등으로 누르고 이 상태를 유지한다.
  • 후면 전원스위치를 눌러서 전원을 켠다. RESET 버튼을 누른 상태를 계속 유지한다.
  • 명령 프롬프트에서 응답이 뜰 때까지 기다린다. 응답이 뜨면 RESET 버튼을 뗀다.
  • 브라우저에서 192.168.xxx.1 에 접속하면 miniCFE 가 뜰 것이다. 1분이 넘어도 안 뜬다면 처음부터 다시 해 본다.

작업 순서

  1. TM-AC1900 펌웨어를 376.1703 으로 다운그레이드 한다. 공유기 IP대역의 xxx = 29 사용한다.
  2. 설정 초기화하고 기기를 재시작한 뒤 초기 설정을 진행하고, SSH 설정을 활성화한다.
  3. PuTTY로 공유기에 SSH 접속하여 CFE를 덤프한다. cat /dev/mtdblock0 > original_cfe.bin1. 부트로그를 찍어보자. dmesg
  4. MTD 목록을 확인해 보자. cat /proc/mtd
  5. 빈 공간을 확인해 보자. df -h
  6. 부트로더 버전을 확인해 보자. nvram get bl_version
  7. asus 파티션을 덤프하고 날린다. 마지막에 아무 파일도 안 나와야 한다.

cat /dev/mtdblock7 > asus_backup.bin

ln -s /sbin/rc mtd-erase2

./mtd-erase2 asus

mkdir asus

mount -t jffs2 /dev/mtdblock7 asus

ls -al asus

  1. WinSCP로 공유기에 scp 접속하여 덤프한 파일을 다운로드한다.
  2. CFEditor 에 접속하여 original_cfe.bin 파일을 올리면 개조 CFE를 만들어 준다. 1.0.2.0 US AiMesh 쓰면 되는듯.
  3. 개조 CFE를 new_cfe.bin 으로 다운받고, new_cfe.bin과 RT-AC68U 376.3626 펌웨어를 공유기에 업로드한다.
  4. mtd-write-arm_v2.rar 압축 해제하면 mtd-write 가 나온다. 공유기에 올리고 실행권한을 준다. chmod +x mtd-write1. 원본 CFE와 개조 CFE의 데이터가 같은지 확인해 본다. grep mac ./original_cfe.bin ./new_cfe.bin
  5. 원본 CFE와 개조 CFE의 데이터가 같은지 확인해 본다. grep secret ./original_cfe.bin ./new_cfe.bin
  6. CFE를 덮어쓴다. ./mtd-write -i new_cfe.bin -d boot
  7. 펌웨어를 덮어쓴다. mtd-write2 -i FW_RT_AC68U_30043763626.trx -d linux
  8. 펌웨어를 완전히 덮어썼다면 기기를 끄고 NVRAM 초기화를 진행한다.
  9. 이제 RT-AC68U로 인식될 것이다. 공유기 IP대역의 xxx = 1 사용한다. 초기 설정을 진행하고, SSH 설정을 활성화한다.
  10. PuTTY로 공유기에 SSH 접속한다. 1. 부트로그를 찍어보자. dmesg
  11. MTD 목록을 확인해 보자. cat /proc/mtd
  12. 빈 공간을 확인해 보자. df -h
  13. 부트로더 버전을 확인해 보자. nvram get bl_version
  14. 부트로더 버전이 1.0.2.0 으로 나오면 성공. 이제 펌웨어를 384.20308 로 업그레이드 하고, NVRAM 초기화를 한 번 더 하면 끝.