№001 하드웨어 가젯

AI 코딩용 ROG Flow Z13-KJP: 반품하기로 한 이유

13인치 태블릿에 128 GB 통합 메모리라니, 로컬 모델과 대형 Rust 빌드에 완벽해 보인다. CachyOS에서 한 달 넘게 매일 써 본 끝에, 무엇이 고장 났고 무엇을 고쳤는지, 그리고 왜 차라리 데스크톱을 사겠다는 건지 정리했다.

다른 언어 English 繁體中文 简体中文 Deutsch Русский 日本語 हिन्दी Español

목차

ROG Flow Z13-KJP는 ASUS의 2025년형 Flow Z13(모델명 GZ302EAC)의 코지마 프로덕션 에디션이다. AMD Ryzen AI Max+ 395에 CPU와 GPU가 공유하는 128 GB LPDDR5X를 얹었고, 이 모든 것이 키보드를 분리할 수 있는 13.4인치 태블릿 안에 들어 있다. 스펙만 보면 AI 보조 코딩을 위한 꿈의 머신이다. Rust 워크스페이스 옆에 로컬 모델을 띄울 여유가 있는데, 그게 가방 하나에 들어간다.

나는 이 기기를 CachyOS와 Hyprland 조합으로 한 달 넘게 메인 머신으로 썼다. 처음에는 훌륭했다. 그러다 크래시가 나기 시작했고, 원인을 찾느라 수많은 저녁을 보냈다. 결국 반품한다. 이 기기나 형제 모델인 ProArt PX13을 고강도 개발 작업용으로 고려하고 있다면, 내가 미리 알았더라면 좋았을 내용을 여기 정리해 둔다.

요약#

  1. 포트가 빠듯하다. USB4 포트 두 개가 모니터 두 대를 맡고 나면, 나머지 모든 것은 10 Gbps USB-A 포트 하나로 해결해야 한다.
  2. 리눅스에는 클램셸 모드를 위한 제대로 된 설정이 없고, 잘못 설정하면 가방 속에서 노트북이 익어 간다.
  3. ASUS Pen 3.0 미지원. 더 새로운 ProArt PX13은 지원하지만, Z13은 지원하지 않는다.
  4. SSD 슬롯이 M.2 2230이다. 그리고 이 크기의 드라이브는 전부 DRAM-less다.
  5. 교체용으로 넣은 2 TB Kingston NV3는 열두 번 죽었다. 그리고 발열 문제도 아니었다.
  6. 킥스탠드가 달린 태블릿이다. 차 안에서 쓰기에는 괴롭다.
  7. 장시간 컴파일 부하가 걸리면 과열로 전원이 꺼진다. 팬을 최고 속도로 돌려도 마찬가지다.

1. USB4 포트 두 개와 USB-A 포트 하나#

Z13에는 USB4 Type-C 포트 두 개(40 Gbps, DisplayPort 및 충전 지원), HDMI 2.1 포트 하나, 10 Gbps의 USB 3.2 Gen 2 Type-A 포트 하나, microSD 리더, 헤드폰 잭이 있다.

외부 모니터 두 대를 USB-C 포트 두 개에 연결하면 USB4 포트는 하나도 남지 않는다. 결국 독은 USB-A 포트에 꽂게 됐는데, 이 포트는 디스플레이 출력도 충전도 안 되고 대역폭은 4분의 1이다. 책상 셋업을 꾸릴 수 있다는 점을 앞세워 파는 기기치고는 빠듯한 구성이다.

2. 클램셸 모드: 잘못 설정하기 쉽고, 그 대가는 크다#

키보드를 화면 위로 덮고 외부 모니터로 쓰는 건 간단한 일처럼 들린다. 하지만 리눅스에서는 아무것도 이를 대신 설정해 주지 않고, 실패했을 때의 양상은 최악이다. 덮개를 닫은 채로 기기가 깨어 있어서 가방 속에서 서서히 스스로를 익힌다.

직접 짠 스크립트를 여러 번 거친 끝에, 마침내 제대로 동작한 버전은 systemd-logind 설정 세 줄이었다. logind는 외부 디스플레이가 연결되어 있는지 이미 알고 있다.

ini
# /etc/systemd/logind.conf.d/10-gz302-lid.conf
[Login]
HandleLidSwitch=suspend                 # 배터리 사용 중, 외부 디스플레이 없음: 절전
HandleLidSwitchExternalPower=ignore     # AC 전원: 디스플레이 수를 잘못 세더라도 절전하지 않음
HandleLidSwitchDocked=ignore            # 외부 디스플레이 연결됨: 계속 동작

절전 기능 자체도 이 보드에서는 손이 더 갔다. 해야 했던 일은 다음과 같다.

  • 패널 셀프 리프레시를 끈다(amdgpu.dcdebugmask=0x610). 그러지 않으면 깨어난 뒤에도 내장 화면이 검은 채로 남는다.
  • 키보드 폴리오의 USB 인터페이스는 절전 복귀 후 응답하지 않으므로, 복귀 후 다시 바인딩한다.
  • 복귀 시 기기를 멈춰 버리는 카메라 드라이버(amd_isp4)를 블랙리스트에 올린다. 대가로 웹캠은 못 쓴다.
  • USB4 컨트롤러가 기기를 깨우지 못하게 막는다.

어느 것도 특이한 작업은 아니지만, 문서화된 것도 하나도 없다.

3. ASUS Pen 3.0 미지원#

Z13은 ASUS Pen 2.0 (SA203H, MPP 2.0)을 지원한다. 후속 모델인 ProArt PX13은 더 새로운 ASUS Pen 3.0 (SA205H)을 지원한다. 현행 펜을 쓰고 싶었다면 Z13은 맞지 않는 기기다.

4. M.2 2230, 그리고 DRAM-less가 빌드에 의미하는 것#

Z13과 PX13 모두 M.2 2230 SSD 한 개만 장착할 수 있다. 길이가 30 mm라 DRAM 칩을 올릴 공간이 없으므로, 사실상 이 크기로 살 수 있는 드라이브는 모두 DRAM-less다. 이런 드라이브는 매핑 테이블용으로 시스템 RAM의 작은 일부(HMB)를 빌려 쓰고, 쓰기는 플래시 자체에 있는 빠른 SLC 캐시로 받아 낸다. 길게 이어지는 쓰기로 이 캐시가 가득 차면, 속도는 순수 플래시가 낼 수 있는 수준까지 떨어진다.

이 점이 Rust에서는 중요하다. 디버그 빌드는 수 기가바이트의 아티팩트를 쓰고, 그걸 계속 반복한다. 드라이브 선택지는 좁고, 드라이브는 혹사당한다.

5. 계속 죽던 Kingston NV3#

기본 탑재된 1 TB 드라이브는 너무 작아서, 2 TB Kingston NV3(2230, Silicon Motion SM2268XT2 컨트롤러, 펌웨어 SDX01100)로 바꿨다. 처음에는 잘 동작했다. 그러다 기기가 멈추기 시작했고, 파일시스템은 읽기 전용으로 바뀌었다. 로컬 로그는 한 번도 살아남지 못해서, 커널 로그를 UDP로 Raspberry Pi에 스트리밍했다. 매번 드라이브 자체의 컨트롤러가 크래시한 것이었다.

text
nvme nvme0: controller is down; will reset: CSTS=0x3, PCI_STATUS=0x10
nvme nvme0: Disabling device after reset failure: -19
BTRFS: error (device nvme0n1p2 state EA) in ... Transaction aborted (error -5)

CSTS=0x3은 Controller Fatal Status를 뜻한다. SSD 펌웨어가 손을 놓아 버렸고, 드라이브가 PCIe 버스에서 사라졌다는 뜻이다. 나는 이걸 한 달 동안 열두 번 포착했다. 발열 때문이 아니었다. 가장 최근에 죽었을 때 기기는 거의 유휴 상태였고(29 W, 55 °C), 드라이브 자체 온도도 약 34 °C였다.

시도한 것결과
NVMe 전원 상태 전환 비활성화(nvme_core.default_ps_max_latency_us=0)다시 크래시
PCIe ASPM 비활성화(pcie_aspm=off)다시 크래시
LTS 커널 6.18다시 크래시
BIOS 301 → 304다시 크래시
펌웨어 업데이트Kingston은 SDX01100용 업데이트를 내놓지 않음
크래시 후 장치 제거 및 재스캔전원을 완전히 끄기 전에는 돌아오지 않음

게다가 이 모든 과정 내내 SMART는 깨끗하게 유지된다. 멈춰 버린 컨트롤러는 자신이 멈췄다는 기록을 남길 수 없다.

내가 써 본 건 한 대뿐이라, 모든 NV3가 이렇다고 말할 수는 없다. 다만 내 것은 그랬고, 어떤 소프트웨어 설정도 소용없었으며, 같은 2230 제약은 PX13에도 똑같이 적용된다는 것은 말할 수 있다. 둘 중 어느 기기에서든 무거운 컴파일 작업을 한다면 드라이브를 신중하게 고르고, 빌드 디렉터리는 잃어도 괜찮은 곳에 두는 편이 좋다.

6. 차 안에서는 노트북이 아니다#

Z13은 태블릿이다. 화면 각도는 힌지가 아니라 뒷면의 킥스탠드로 정한다. 책상 위에서는 문제없다. 하지만 달리는 차 안에서 무릎에 올려 두면 각도를 잡아 줄 것이 아무것도 없어서, 결국 차 안에서 작업하는 건 포기했다.

7. 발열: 기기가 죽는 두 번째 방식#

SSD 다음으로 두 번째 크래시가 있었는데, 겉으로 보기에는 똑같았다. 멈추고, 전원 버튼을 길게 누른다. 하지만 로그는 다른 이야기를 하고 있었다. 커널 로그가 아무 오류도 없이 줄 중간에서 그냥 끊겨 있었다. 기기의 전원이 순간적으로 나간 것이다.

이 중 다섯 번이 지속 부하(cargo 빌드, 로컬 추론) 중에 일어났고, 다섯 번 모두 온도 차이가 1도 이내였다.

전원이 꺼지기 전 마지막 샘플CPU 온도SoC 전력팬 (RPM)
9월 28일 13:2886.00 °C62.5 W6500 / 6900
9월 28일 17:5585.25 °C62.6 W5700 / 6100
9월 29일 07:4485.75 °C60.1 W6400 / 6800
9월 29일 13:0685.38 °C67.1 W6400 / 6800
9월 29일 14:0486.00 °C66.1 W8600 / 8600

1도도 안 되는 범위 안에서 다섯 번 꺼졌다는 건 폭주가 아니라 차단 임계값이라는 뜻이다. 원인을 쫓다가 진짜 버그를 하나 찾았다. 팬 커브가 70 °C에서 64 %로 상한에 걸려 있었던 것이다. 이를 고치자 팬은 최고 속도로 돌았지만, 기기는 여전히 86.00 °C에서 꺼졌다. 위 표의 마지막 행이다. 전체 수집 기간 동안 CPU는 거의 절반의 시간을 84 °C 이상에서 보냈다. 이 섀시로는 지속적인 최대 부하에서 그 칩을 감당할 수 없다. 마지막 실험이던 더 낮은 전력 프로필을 끝내기 전에 반품했다.

결론: 데스크톱을 사라#

AI 코딩(로컬 모델, 대형 빌드, 그 모든 걸 한꺼번에)을 위해 128 GB 통합 메모리를 원한다면, 그걸 태블릿에 넣지 마라. 지금 RAM은 고통스러울 만큼 비싸다. 128 GB에 돈을 쓴다면, 그 메모리가 전력을 다해 돌 수 있는 곳에 넣어라.

Framework Desktop은 같은 Ryzen AI Max+ 395에 최대 128 GB를 탑재할 수 있고, 2230 슬롯 하나 대신 M.2 2280 슬롯 두 개, 그리고 숨 쉴 공간이 있는 제대로 된 팬을 갖추고 있다. Z13은 아름다운 물건이고, 게임도 되는 태블릿으로서는 인상적이다. 하지만 개발 워크스테이션으로서는 뜨겁게 달아올랐고, 포트가 모자랐고, SSD 하나를 잡아먹었다. 내 것은 반품한다.