요즘 오와콘이 갑자기 끌려서잉여력을 불태울 재미있는 무언가가 있나 찾던 중, MT7621 기반 K-홈라우터에 LEDE 포팅을 해 볼까 하는 생각을 하였고, MT7621 + MT7612, MT7602 / MT7603 조합의 홈 라우터를 찾아 포팅을 진행하였습니다.

포팅 대상 모델은, 가격이 싸고 메모리가 256MB 라는 이유만으로, WeVO W2914NS v2 의 256MB RAM 버전인 WeVO 11AC NAS ROUTER 로 정했습니다.

img_20161114_014631

내부 하드웨어 구성을 확인하기 위해 뒷판을 땁니다 (PH1 드라이버 필요)

img_20161114_014701

* 헤더핀은 포팅 작업을 위해 PCB의 빈 패드에 직접 납땜하였습니다.

PCB 를 고정하는 나사 3개를 풀고 기판을 들어냅니다. (PH1 드라이버 필요)

img_20161114_014852

img_20161114_014951

코일 납땜이 개판이지만 가격이 싸니 넘어가도록 합시다
img_20161114_015116

칩들을 확인합니다

  • SoC: MT7621AT
  • DRAM: Samsung K4B2G1646Q-BCK0 DDR3 SDRAM
  • EEPROM: MX25L12835F
  • wlan0: MT7612
  • wlan1: MT7603

UART 핀 맵을 오실로스코프를 이용, 확인합니다.

  1. Vcc (3V3)
  2. Rx
  3. Tx
  4. GND

기본 U-boot 의 baud rate 는 57600bps 이나, U-boot 를 직접 컴파일해서 이를 변경할 수 있습니다.

순정 펌웨어의 부트로그를 확인합니다

https://gist.github.com/perillamint/b2c146e4b31cff3139e304c241fa4c0a
(로그인 암호는 SHA-1 암호화되어있습니다. 셸을 원한다면, 로그인 셸은 포기하시고 다른 취약점을 찾아보세요.)

부트로더 셸에 진입한 뒤, 타임아웃 값을 포함한 U-boot 환경변수를 설정합니다

ubootenv

TFTP 환경을 셋업하고 대충 호환될 것 같은 MQmaker Witi 용 LEDE 빌드를 올려봅니다

tftp

하지만 순정 부트로더로는 무한 재부팅이 발생합니다. 이를 해결하기 위해 부트로더를 컴파일해, 플래싱합니다.

uboot-menuconfig

이후 WiTi 이미지를 다시 올려보면, 부팅에 성공함을 확인할 수 있습니다.

이제 LEDE 포트 설정파일을 제작합니다. 저는 유사한 하드웨어를 가진 WiTi 보드의 설정파일을 기반으로 작업하였습니다.

lspci 와 같은 명령과 procfs의 도움을 받아, 빌드하고 굽고 DTB 수정하고를 반복합니다.

그 결과…

&pcie {
	status = "okay";

	pcie0 {
		mt76x2e@0,0 {
			reg = <0x0000 0 0 0 0>;
			device_type = "pci";
			mediatek,mtd-eeprom = <&factory 0x0000>;
			mediatek,5ghz = <0>;
		};
	};

	pcie1 {
		mt7603e@1,0 {
			reg = <0x0000 0 0 0 0>;
			device_type = "pci";
			mediatek,mtd-eeprom = <&factory 0x8000>;
			mediatek,2ghz = <0>;
		};
	};
};

와 같이 PCIe 장치가 연결되어 있는 것을 확인할 수 있었고,

이를 이용, LED와 버튼을 제외하고 동작하는 LEDE 포트에 성공하였습니다.

lede-boot

이 포트를 시험해보고 싶으신 분은 아래의 소스 코드를 컴파일하여 사용하시거나,
LEDE 포트의 소스 코드: https://github.com/perillamint/lede-w2914ns-v2
U-boot 소스 코드: https://github.com/perillamint/u-boot-mips (/uboot/mips/profiles/W2914NSV2 안의 설정 파일 이용)

혹은 이 prebuilt 바이너리 (uboot-w2914nsv2.bin, lede-ramips-mt7621-w2914nsv2-squashfs-sysupgrade.bin)를 사용하시면 됩니다.
https://galadriel.gentoo.moe/W2914NSv2/

** LEDE 플래싱 후 mtd2 파티션(팩토리 캘리브레이션 데이터 파티션)을 백업하는 것을 권장합니다.
** 실 사용시, 성능 하락을 방지하기 위해 MT7621, MT7612, MT7603 위에 히트싱크를 부착하는 것을 권장합니다.

** Bugfix: 2016-11-16 02:00:00 KST: LuCI 펌웨어 업그레이드가 동작하지 않는 문제 수정.

** Update 2016-11-21 KST: 패치가 메인라이닝 되었습니다. LEDE 공식 나이틀리 이미지를 사용하시면 됩니다.
** 사용해야할 U-Boot 파일은 u-boot.zip 파일을 사용하시면 됩니다.