메뉴

← 프로그램
목록

일반 [Windows] TP-Link Archer AX12 V1 (KR) 펌웨어 복구 방법

A
작성 2026. 10. 3. PM 10:09:54 수정됨 조회 3 받은 포인트 +0P

TP-Link Archer AX12 V1 (KR) 벽돌 복구 기록


이 글은 성공 결과만 요약한 글이 아니라, 같은 장비에 다시 문제가 생겼을 때 그대로 따라 하기 위한 보관용 복구 문서입니다. 실제 UART 로그와 작업 중 촬영한 화면을 기준으로 작성했습니다.


1. 최종적으로 어떻게 복구되었나

이번 고장은 단순히 rootfs만 깨진 상태가 아니었습니다. 처음에는 공유기가 UART 프롬프트까지는 들어왔지만, 부트로더 빌드 자체가 AX12용이 아니었고 웹 복구도 파일 길이 오류로 실패했습니다.

최종 복구의 핵심은 다음과 같습니다.

  1. UART로 Realtek 부트로더
  2. 복구용 PC를 192.168.0.66/24로 설정
  3. AX12 V1 KR 정식 펌웨어에서 추출한 fs-uboot, os-image, file-system 파일의 SHA-256 확인
  4. AUTOBURN 0으로 자동 기록을 끄고 TFTP로 RAM 0x81000000에 파일 전송
  5. 잘못 들어간 부트로더를 AX12용 fs-uboot로 복원
  6. os-image를 0x040000, rootfs를 0x400000에 복원
  7. 재부팅 후 W25Q128 16MB, 128MB RAM, 정상 MTD, squashfs rootfs, Archer AX12, KR/KCC 설정을 모두 확인


2. 작업 전에 필요한 장비

하드웨어


절대 주의할 점

USB-TTL의 VCC/5V/3.3V 전원핀은 공유기에 연결하지 않습니다. 공유기는 자체 어댑터로 전원을 공급하고, UART는 아래 세 선만 연결합니다.

USB-TTL TX  -> Router RX USB-TTL RX  -> Router TX USB-TTL GND -> Router GND


3. Windows 소프트웨어 준비

3.1 USB-TTL 드라이버

USB-TTL을 PC에 연결한 뒤 장치 관리자 > 포트(COM & LPT)에서 COM 번호가 나타나는지 확인합니다.


COM 포트가 정상적으로 나타나면 예를 들어 COM4처럼 번호를 기록해 둡니다.

3.2 Tera Term 설치

Tera Term 공식 프로젝트:

  • https://teratermproject.github.io/

연결 시 Serial을 선택하고 USB-TTL의 COM 포트를 지정합니다.

시리얼 설정은 다음과 같습니다.

Baud rate : 115200 Data      : 8 bit Parity    : none Stop      : 1 bit Flow      : none

3.3 Windows TFTP Client 활성화

관리자 권한 CMD 또는 PowerShell에서:

dism /online /Enable-Feature /FeatureName:TFTP /All

설치 확인:

tftp /?

3.4 PowerShell SHA-256 확인

파일을 플래시에 쓰기 전에는 반드시 해시를 확인합니다.

Get-FileHash .\ax12_fs-uboot_0x40000.bin -Algorithm SHA256 Get-FileHash .\ax12_os-image_0x3c0000.bin -Algorithm SHA256 Get-FileHash .\ax12_file-system_0xb08000.bin -Algorithm SHA256

4. PC 네트워크 설정

복구 중에는 PC 유선 LAN을 고정 IP로 설정했습니다.

IPv4     : 192.168.0.66 Subnet   : 255.255.255.0 Gateway  : 비워도 됨 DNS      : 비워도 됨

혼선을 줄이기 위해 Wi-Fi는 잠시 끄는 것이 좋습니다.

5. 복구 파일

이번 장비에서 검증된 핵심 파일은 아래 3개입니다.


공식 펌웨어는 TP-Link 대한민국 Archer AX12 V1 다운로드 페이지에서 지역과 하드웨어 버전을 반드시 확인해서 받는 것이 원칙입니다.

  • https://www.tp-link.com/kr/support/download/archer-ax12/

TP-Link도 공식 다운로드 페이지에서 다른 지역/하드웨어 버전 펌웨어 사용 시 업그레이드 실패 또는 장치 손상이 생길 수 있다고 안내하고 있습니다.

6. SPI-NOR에서 건드리면 안 되는 영역

복구 과정에서 확인한 주요 flash 영역은 다음과 같습니다.

0x000000 - 0x03FFFF : fs-uboot       (0x040000) 0x040000 - 0x3FFFFF : os-image       (0x3C0000) 0x400000 - 0xF07FFF : file-system    (0xB08000) 0xF08000             : ag-config 0xF40000             : partition-table 0xFE0000             : product-info   [보존] 0xFF0000             : radio / ART    [보존]


특히 금지

  • ERASECHIP 사용 금지
  • 0xFE0000 product-info 덮어쓰기 금지
  • 0xFF0000 radio/ART 덮어쓰기 금지
  • 다른 AX12의 full 16MB dump를 통째로 덮어쓰기 금지

product-info와 radio/ART에는 장비별 MAC/무선 calibration 정보가 들어갈 수 있으므로 보존해야 합니다.

7. 처음 상태: 웹 복구 페이지는 떴지만 업그레이드 실패

장비는 192.168.0.1에서 Emergency Recovery 형태의 화면까지는 보였습니다.


하지만 업로드 도중 실패했습니다.


UART에서는 다음처럼 웹 업로드 자체는 성공한 것처럼 보였지만 firmware check에서 실패했습니다.

#web upload success! nm_init:845 nm_initFwupPtnStruct:326 nm_lib_readPtnTable:795 nm_lib_initPtnStruct 8005ca18 [NM_Error](nm_tpFirmwareCheck) 1473: The file's length is bad(...)

이 상태에서는 웹 업로드만 반복해서 해결되지 않았습니다.

8. 잘못된 부트로더를 판별한 단서

문제 상태에서도 하드웨어는 정상적으로 보였습니다.

Detect dram size = 128MB found w25q128 w25q128, size=16MB

하지만 부트로더 빌드 날짜가 정상 AX12 펌웨어와 맞지 않았습니다. 이것이 다른 기기 펌웨어가 부트로더 영역까지 건드렸다는 중요한 단서였습니다.


9.

공유기 전원을 넣은 직후 UART 터미널에서 키를 입력해 자동 부팅을 중단하면 다음 프롬프트로 들어갑니다.


이 프롬프트가 살아 있다면 SPI-NOR 프로그래머 없이 UART/TFTP 복구를 시도할 수 있는 가능성이 큽니다.

10. TFTP 전송 기본 패턴

공유기에서 자동 기록을 끄고 RAM load address를 지정합니다.

AUTOBURN 0 LOADADDR 81000000 TFTP +

PC에서 예를 들어 부트로더 파일을 보낼 때:

tftp -i 192.168.0.1 put ax12_fs-uboot_0x40000.bin

성공하면 UART에 전송 크기와 RAM 주소가 표시됩니다.

RAM 내용은 다음으로 확인합니다.

DB 81000000 40

파일 크기와 헤더가 예상과 다르면 절대 FLW를 실행하지 않습니다.

11. AX12 부트로더(fs-uboot) 복구

이 단계가 가장 위험합니다. 부트로더를 쓰는 동안 전원이 끊기면 UART 프롬프트 자체가 사라질 수 있습니다.

복구 파일을 0x81000000에 올린 후 64KB씩 네 번 기록했습니다.

FLW 00000 81000000 10000 FLW 10000 81010000 10000 FLW 20000 81020000 10000 FLW 30000 81030000 10000

각 명령에서 다음 확인이 나오면:

(Y)es, (N)o->

직접 y를 입력합니다.

전체 readback/CMP 검증

FLR 82000000 00000 40000 CMP 82000000 81000000 40000

정상이라면:

No error found

가 나와야 합니다.

부트로더 복구 성공 로그

재부팅 후 다음 항목이 보이면 AX12용 부트로더가 정상적으로 올라온 것입니다.

Detect dram size = 128MB (0x08000000) DRAM Type: DDR2 DRAM Size: 128MB found w25q128 w25q128, size=16MB, erasesize=4KB ---Realtek RTL8197F-VG boot code at 2026.05.18-10:26+0800 v3.4.13 ---Ethernet init Okay!


12. os-image 복구

다시

AUTOBURN 0 LOADADDR 81000000 TFTP +

PC에서:

tftp -i 192.168.0.1 put ax12_os-image_0x3c0000.bin

정상 전송 시:

**TFTP Client Upload File Size = 003C0000 Bytes at 81000000 Success!

헤더 확인:

DB 81000000 40

실제 파일은 다음처럼 cr6c로 시작했습니다.

81000000: 63 72 36 63 ...    cr6c....

기록:

FLW 40000 81000000 3C0000

실제 작업 로그에서는 대용량 FLW 후 시작 부분을 다시 읽어 정상 헤더가 기록된 것을 확인했습니다. 다음에 같은 작업을 한다면 더 안전하게 전체 readback/CMP까지 수행하는 것을 권장합니다.

FLR 82000000 40000 3C0000 CMP 82000000 81000000 3C0000

13. file-system(rootfs) 복구

RAM에 rootfs를 올립니다.

AUTOBURN 0 LOADADDR 81000000 TFTP +

PC에서:

tftp -i 192.168.0.1 put ax12_file-system_0xb08000.bin

정상 전송:

**TFTP Client Upload File Size = 00B08000 Bytes at 81000000 Success!

헤더 확인:

DB 81000000 40

정상 squashfs는 다음과 같이 hsqs로 시작합니다.

81000000: 68 73 71 73 ...    hsqs....

기록:

FLW 400000 81000000 B08000

실제 작업에서는 기록 후 다시 읽은 시작 0x40바이트가 RAM의 hsqs 헤더와 일치했습니다. 다음 복구 때는 가능한 경우 전체 검증까지 진행하는 편이 안전합니다.

FLR 82000000 400000 B08000 CMP 82000000 81000000 B08000

14. 실제 작업 순서와 다음 복구 시 권장 순서

이번 작업에서는 여러 시행착오 때문에 os-image와 file-system을 먼저 만지고 마지막에 부트로더 문제를 확정했습니다.

하지만 다음에 동일한 증상이 생긴다면 아래 순서가 더 명확합니다.

  1. 하드웨어 인식 로그 확인: 128MB / W25Q128
  2. 부트로더 빌드가 AX12용인지 확인
  3. 부트로더가 다른 모델이면 fs-uboot부터 복원
  4. 부트로더 전체 CMP 검증
  5. os-image 복원 및 검증
  6. file-system 복원 및 검증
  7. product-info, ART는 절대 건드리지 않음
  8. 재부팅 후 Linux/rootfs/AX12/KR 로그 확인

15. 최종 성공 로그 - 이것이 보여야 복구 성공

15.1 Linux kernel과 RAM

Linux version 4.4.176-gd3618c8d0-dirty ... Determined physical RAM map: memory: 08000000 @ 00000000 (usable)

15.2 W25Q128 16MB 인식

m25p80 spi0.0: found w25q128, expected m25p80 flash vendor: Winbond m25p80 spi0.0: w25q128 (16384 Kbytes)

15.3 MTD 파티션 생성

Creating 4 MTD partitions on "m25p80": 0x000000000000-0x000000040000 : "uboot" 0x000000040000-0x000000400000 : "uImage" 0x000000400000-0x000000f00000 : "rootfs" 0x000000ff0000-0x000001000000 : "ART"

15.4 rootfs 마운트

VFS: Mounted root (squashfs filesystem) readonly on device 31:2. Please press Enter to activate this console.


15.5 AX12 모델과 한국 설정

remodel defaulconfig: Archer AX12 1.0.0 RTW: rtw_set_country_cmd country_code:"KR" ... iwpriv wlan0 set_regd KCC


위 항목이 모두 보이면 부트로더 + kernel + rootfs + 모델 설정 + 무선 지역 설정까지 정상으로 올라온 것입니다.

16. bad decrypt, zlib error가 보여도 무조건 실패는 아니다

최종 부팅 과정에서 기존 설정 데이터와 새 AX12 펌웨어가 맞지 않아 다음 메시지가 일부 나타났습니다.

bad decrypt zlib error:data error

하지만 그 뒤에:

remodel defaulconfig: Archer AX12 1.0.0 new configs merged

가 나오고 정상 네트워크/Wi-Fi 초기화가 계속 진행되었습니다. 이번 사례에서는 이전 잘못된 펌웨어가 남긴 설정 데이터와의 불일치로 판단할 수 있었고, rootfs 마운트와 AX12 기본 설정 재생성이 정상적으로 이어졌기 때문에 복구 실패 로그로 보지 않았습니다.

17. 복구 후 확인할 것

  • PC를 DHCP 자동 설정으로 되돌리기
  • LAN 포트에서 IP 자동 할당 확인
  • http://192.168.0.1 관리 페이지 접속
  • 2.4GHz / 5GHz SSID 확인
  • WAN 연결 확인
  • 장비 재부팅 후 다시 정상 부팅되는지 확인
  • 필요하면 웹 UI에서 공장 초기화 후 재설정

최종 상태에서 전원/Wi-Fi LED가 정상 동작하는 것도 확인했습니다.


18. 이번 복구에서 실패했던 접근과 이유

웹 Emergency Recovery만 반복

웹 화면은 떴지만 UART에서:

The file's length is bad(...)

가 반복되었습니다. 다른 모델 부트로더가 들어간 상황에서는 웹 복구 parser 자체를 신뢰하기 어려웠습니다.

다른 보드용 OpenWrt initramfs 사용

RTL8197F라는 SoC가 같아 RAM 부팅 자체는 되었지만, Greatek GWR1200AC V1로 인식하고 64MB RAM 기준 보드 설정으로 들어갔습니다. 같은 SoC라고 같은 보드가 아닙니다.

따라서 최종 복구에는 사용하지 않았습니다.

대량 자동 UART 입력

FLW가 매번 (Y)es, (N)o 입력을 요구하기 때문에 PowerShell/Tera Term 자동화에서 타이밍이 맞지 않아 Abort!와 Unknown command !가 발생했습니다. 부트로더 영역처럼 중요한 구간은 직접 확인하면서 입력하는 방식이 더 안전했습니다.

19. 다음에 문제가 생겼을 때의 빠른 판정표


20. 자료 보관 방법

다음에 다시 복구할 수 있도록 공개용 글 자료와 실제 복구 바이너리를 분리 보관하는 것이 좋습니다.

AX12_V1_KR_ARCHIVE/ ├─ PUBLIC_POST/ │  ├─ article.md │  ├─ article.pdf │  └─ images/ ├─ PRIVATE_RECOVERY/ │  ├─ ax12_fs-uboot_0x40000.bin │  ├─ ax12_os-image_0x3c0000.bin │  ├─ ax12_file-system_0xb08000.bin │  ├─ official_firmware/ │  └─ SHA256SUMS.txt └─ UART_LOGS/

공개 홈페이지에는 복구 바이너리를 직접 배포하기보다 절차, 해시, 로그, 사진, PDF 문서를 게시하고 공식 펌웨어는 TP-Link 공식 다운로드 페이지로 연결하는 편이 안전합니다.

21. 핵심 명령만 다시 모아보기

공통

AUTOBURN 0 LOADADDR 81000000 TFTP +

fs-uboot

FLW 00000 81000000 10000 FLW 10000 81010000 10000 FLW 20000 81020000 10000 FLW 30000 81030000 10000 FLR 82000000 00000 40000 CMP 82000000 81000000 40000

os-image

FLW 40000 81000000 3C0000 FLR 82000000 40000 3C0000 CMP 82000000 81000000 3C0000

rootfs

FLW 400000 81000000 B08000 FLR 82000000 400000 B08000 CMP 82000000 81000000 B08000


22. 마무리

이번 복구에서 가장 중요한 교훈은 같은 SoC라는 이유만으로 다른 기기의 펌웨어/부트로더를 사용할 수 없다는 것, 그리고

최종 성공 판정은 단순히 LED가 켜지는 것이 아니라 다음 다섯 가지를 확인하는 것입니다.

  1. 128MB RAM
  2. Winbond W25Q128 16MB
  3. 정상 uboot/uImage/rootfs/ART MTD
  4. VFS: Mounted root
  5. Archer AX12 1.0.0 + KR/KCC

이 다섯 가지가 확인되면 같은 유형의 벽돌 상태에서 실질적인 복구 완료로 판단할 수 있습니다.

공식 참고 링크

  • TP-Link Korea Archer AX12 V1: https://www.tp-link.com/kr/support/download/archer-ax12/
  • Tera Term: https://teratermproject.github.io/
  • Silicon Labs CP210x VCP: https://www.silabs.com/software-and-tools/usb-to-uart-bridge-vcp-drivers
  • FTDI VCP Drivers: https://ftdichip.com/drivers/vcp-drivers/
⏱️ 예상 읽기 시간: 약 18분

첨부 파일 (1개)

📎
ZIP
AX12_V1_KR_FULL_WEBSITE_AND_RECOVERY_2026-10-03.zip [100P]
68832KB
목록으로

💡 추천 게시글

[Windows] ext4 프로그램

프로그램 · admin
👁 25 👍 0 💬 0

댓글 0

아직 댓글이 없습니다.

프로그램 목록

번호 분류 제목 글쓴이 날짜 조회 추천 P
» 일반 [Windows] TP-Link Archer AX12 V1 (KR) 펌웨어 복구 방법 📎 admin 22:09 4 0 -
1 - [Windows] ext4 프로그램 📎 admin 10.01 25 0 -
목록