OpenWrt One – 오픈 하드웨어 라우터

1 week ago 10
  • OpenWrt One은 OpenWrt 생태계에 맞춘 오픈 하드웨어 라우터로, MediaTek Filogic 820 SoC와 WiFi 6, 2.5Gbit WAN을 갖춰 실사용 라우터와 개발·복구 장비 역할을 함께 노림
  • 기본 출고 상태에는 OpenWrt 릴리스 펌웨어와 LuCI GUI가 포함되며, NAND 부팅 후 192.168.1.1에서 웹 UI나 SSH로 바로 접근 가능함
  • 펌웨어 업그레이드는 USB, NAND 복구, NOR 전체 복구로 나뉘며, 부팅 스위치와 버튼 조합에 따라 복구 경로가 달라짐
  • NAND가 망가져도 NOR 복구 모드로 다시 플래시할 수 있고, NOR 자체 복구에는 UART 부팅, TFTP 서버, NOR WP 점퍼 작업이 필요함
  • 내장 USB-C 시리얼 콘솔과 복구용 NOR가 있어 펌웨어 실험 중 부트로더나 NAND가 손상돼도 복원할 수 있는 여지를 남김

하드웨어 구성과 출고 펌웨어

  • OpenWrt One은 MediaTek Filogic 820 SoC 기반 장치임
  • 주요 하드웨어 사양은 다음과 같음
    • WiFi 6
    • 듀얼밴드
    • 3×3/2×2 무선 구성
    • 1× 2.5Gbit WAN
    • 1× 1Gbit LAN
    • 1GB DDR4 RAM
    • 256MiB NAND
    • 복구용 16MiB NOR
    • M.2 SSD
    • USB-C 시리얼 콘솔
    • USB 2.0
  • Power Over Ethernet은 IEEE 802.3af/at 호환 장치가 RJ-45 2.5Gbps WAN 커넥터를 통해 전원을 공급하는 방식으로 동작함
  • 각 장치는 제조 배치 날짜 기준으로 사용 가능한 최신 OpenWrt 릴리스 펌웨어가 플래시된 상태로 출고됨
  • LuCI GUI가 설치되어 있으며, 표준 기본 설정으로 바로 실행 가능한 상태임

첫 부팅과 기본 접속

  • 전원을 넣기 전에 NAND/NOR 스위치가 NAND로 설정되어 있어야 함
  • Ethernet 케이블을 장치의 1G 포트에 연결하고 192.168.1.1을 사용함
  • 장치 전원을 켠 뒤 녹색 LED가 계속 켜지면 부팅이 완료된 상태임
  • 브라우저에서는 192.168.1.1로 LuCI GUI에 접속하고, 터미널에서는 ssh root@192.168.1.1을 사용할 수 있음
  • 출고 기본 상태에서 SNAPSHOT Branch로 업그레이드하면 LuCI GUI는 기본 설치되지 않음
  • 초기 설정은 Quick Start Guide를 따르면 됨

USB 기반 펌웨어 업그레이드

  • USB 업그레이드는 FAT32로 포맷된 USB 드라이브에 openwrt-mediatek-filogic-openwrt_one-squashfs-sysupgrade.itb 파일을 준비하는 방식임
    • SNAPSHOT 또는 Release 저장소의 전체 버전명이 붙은 파일을 해당 이름으로 바꿔 사용함
  • 절차는 전원 제거, USB-A 포트에 USB 삽입, NAND boot switch 선택, 후면 Reset 버튼 유지, 전원 인가, 모든 LED가 꺼지면 버튼 해제, 가운데 LED가 녹색이 될 때까지 대기 순서임
  • 장치는 NAND에서 부팅하고, 부트로더가 NAND의 커널과 루트 파일시스템을 다시 플래시함
  • 일부 USB 드라이브에서는 호환성 문제가 관찰됐으며, FAT32 포맷과 MBR 파티션 테이블 사용을 시도할 수 있음
  • U-Boot에서 Bad device specification usb 0 오류가 발생하면 usb_pgood_delay 값을 늘리는 방식이 도움이 될 수 있음
  • 24.10.0 릴리스 이전 SNAPSHOT이 탑재된 초기 OpenWrt One은 USB 기반 sysupgrade 종료 시 녹색 LED가 켜지지 않는 문제가 있었음

NAND 복구 모드와 설치 이미지

  • initramfs NAND Recovery Mode 업그레이드는 USB 기반 펌웨어 업그레이드와 비슷하지만, 후면 Reset 대신 전면 버튼을 누르며 USB 드라이브 준비가 필요 없음
  • 절차는 전원 제거, NAND boot 선택, 전면 버튼 유지, 전원 인가, 모든 전면 LED가 꺼지면 버튼 해제, 가운데 LED가 녹색이 될 때까지 대기 순서임
  • 장치는 복구용 initramfs 이미지를 부팅하며, 이후 다른 업그레이드 옵션을 사용할 수 있음
  • 설치용으로 factory.ubi, sysupgrade, raw kernel 이미지가 제공됨
  • 복구 목적의 플래싱을 위해 uboot bl31-uboot.fip FIP, factory.bin, preloader.bin도 NAND 및 축소된 복구용 NOR 변형으로 제공됨

NOR 전체 복구로 NAND 재플래시

  • NAND에서 더 이상 부팅되지 않으면 NOR/full recovery mode로 부팅해 NAND를 복구할 수 있음
  • NAND의 TF-A 또는 부트로더가 손상된 경우에도 이 방식을 사용할 수 있음
  • FAT32 USB 드라이브에 NAND preloader와 factory image를 준비한 뒤, 전원 제거, USB 삽입, NOR boot 선택, 전면 버튼 유지, 전원 인가, 전면 LED가 모두 꺼지면 버튼 해제, LED가 녹색이 될 때까지 대기함
  • NOR 복구 시스템은 NAND 메모리 전체를 factory 상태로 다시 플래시함
  • 필요한 파일은 SNAPSHOT 또는 Current Stable Release Download Pages에서 받을 수 있음

NOR 메모리 자체 복구

  • NOR recovery memory도 다시 플래시할 수 있으며, 과정은 두 단계로 나뉨
    • UART boot: mtk_uartboot를 사용해 DDR4 초기화 이미지와 NOR 부트로더 이미지를 UART/시리얼 콘솔 연결로 RAM에 복사하고 RAM에서 부팅함
    • NOR flash: 부트 메뉴 복구 기능으로 TFTP 서버에서 NOR로 이미지를 다시 플래시함
  • 두 번째 단계에는 SPI NOR WP 점퍼가 공장 기본 위치에 있어야 하고, TFTP 서버가 OpenWrt One의 LAN 포트에 연결되어 새 이미지를 제공해야 함
  • mtk_uartboot 바이너리는 mtk_uartboot Releases의 assets에서 운영체제에 맞는 아카이브를 받아 압축을 풀어 사용함
  • macOS에서는 xattr -d com.apple.quarantine mtk_uartboot로 격리 속성을 제거해야 할 수 있음
  • DDR4 초기화 파일과 NOR BL31/uboot 이미지는 SNAPSHOT 또는 Current Stable Release Download Pages의 <release-version>/targets/mediatek/filogic 하위 디렉터리에서 받음
  • TFTP 준비 시 컴퓨터 Ethernet 인터페이스는 다음 수동 설정을 사용함
    • IP: 192.168.11.23
    • Mask: 255.255.255.0
    • Gateway: 192.168.11.11
  • TFTP 서버는 192.168.11.23에서 수신해야 하며, OpenWrt One은 192.168.11.11 IP를 사용함
  • 다운로드한 파일명에는 릴리스 버전이 포함되어 있으므로, 라우터가 요청하는 버전 없는 파일명으로 바꿔야 함
    • 예: openwrt-25.12.2-mediatek-filogic-openwrt_one-nor-bl31-uboot.fip → openwrt-mediatek-filogic-openwrt_one-nor-bl31-uboot.fip

UART 부팅과 TFTP 플래싱 절차

  • mtk_uartboot 명령은 USB-C로 연결된 상태에서 부트 파일을 복사하고, 이후 GNU Screen으로 시리얼 콘솔 연결을 열 수 있음
  • 명령 실행 시 다운로드한 파일 경로와 호스트 시스템의 시리얼 장치 경로를 실제 값으로 바꿔야 함
  • Linux 호스트에서 /dev/ttyS*, /dev/ttyUSB* 같은 시리얼 장치 접근 권한이 필요하면 사용자를 dialout 및 uucp 그룹에 추가하고 다시 로그인해야 함
  • mtk_uartboot가 Handshake...를 표시한 뒤 라우터 전원을 켜면 hw code: 0x7981 로그와 함께 BL2 및 FIP 업로드가 진행됨
  • 업로드가 성공하면 GNU Screen이 시작되고 부트 메뉴가 표시됨
  • NOR 업데이트 전에는 장치를 열어 NOR WP에 점퍼를 장착해야 함
  • 장치 후면 스위치를 NOR 위치로 설정하고 UART 시리얼 포트에 연결한 상태에서 전원을 켬
  • 부트 메뉴가 나타나면 아래 방향키로 부팅 과정을 중단하고 3. Unlock NOR. (Make sure the NOR/WP jumper is populated)를 선택함
  • 이후 TFTP에서 필요한 파일을 요청해 플래시하는 부트 메뉴 항목을 선택함
  • 플래시 후에는 다시 부트 메뉴에서 7. Lock NOR. (Remove jumper afterwards)를 선택함
  • 성공적인 NOR 플래싱은 실제로 플래싱이 일어나지 않는 경우보다 느림
  • 펌웨어를 다시 플래시한 뒤 라우터를 재부팅하고 점퍼를 제거할 수 있음

시리얼 콘솔과 물리 크기

  • OpenWrt One은 전면 패널의 USB-A 호스트 포트 옆에 내장 USB-C 시리얼 콘솔 포트를 갖춤
  • 이 포트는 통합 USB-to-serial 변환기를 사용하며, 일반적으로 PC에서 추가 드라이버 없이 가상 COM 포트로 나타남
  • 콘솔 또는 시리얼 접근은 펌웨어 환경의 유지보수, 복구, 복원 확인에 필요함
  • 장치 크기는 148 x 100.5mm
  • Banana Pi BPI-R4 케이스 설계와 호환됨
Read Entire Article