DP는 드라이버에서 끊기고 · DisplayLink는 4K까지 열리지만 CPU가 비싸다 · 실사용은 본체 HDMI 1대
이 글이 전하는 것은 “DisplayLink 설치법”이 아니다. stock Asahi M1 Max에서 외장 2대를 노렸을 때, 경로마다 어디서 끝나는지를 갈라 본 기록이다. 케이블·독 문제가 아니라 드라이버 한 곳에서 네이티브 DP가 끊기고, USB 우회는 화면까지 가지만 CPU 비용에서 일상을 접었다.
1 · 네이티브
USB-C DP / TB / MST
천장: atcphy EOPNOTSUPP — 하드웨어 부재가 아님2 · 우회
DisplayLink + EVDI
천장: 듀얼 4K@60 동작 · 전송 경로 CPU3 · 실사용
무엇을 남겼나
선택: 본체 HDMI 1대 (+ 내장 패널)| # | 방법 | 결과 | 비고 |
|---|---|---|---|
| 1 | 내장 HDMI + DisplayLink USB 어댑터 | 동작 실측 미채택 | 3모니터·듀얼 4K@60까지 됨. CPU 부하로 실사용 포기 |
| 2 | 내장 HDMI만 (실사용) | 채택 | 외장 1대 · GPU 스캔아웃 · CPU≈0. 현재 결론 |
| 3 | USB-C → DP/HDMI 직결 (alt mode) | 불가 | atcphy_mux_set EOPNOTSUPP. No Signal, DP-* 미생성 |
| 4 | USB-C MST 분배기 (1포트 2대) | 불가 | MST 미지원 + 위 alt mode 동일 장벽 |
| 5 | Thunderbolt / USB4 디스플레이 터널 독 | 불가 | Asahi에 Thunderbolt 서브시스템 자체 없음 |
| 6 | TB4 독의 “모니터 포트” (호스트 DP 소비형) | 디스플레이 불가 | DisplayLink GPU 없으면 호스트 DP 필요. USB 허브·데이터는 됨 |
| 7 | SM768 등 비-DisplayLink USB 그래픽 | 불가 | aarch64 드라이버 경로 없음 (090c 등) |
| 8 | 실험 커널 fairydust USB-C DP | 미검증·비추 | 개발자용, blessed 포트 1개, 미패키지. 이 문서 범위 밖 |
이 머신은 “HDMI 전용 맥”이 아니다. USB-C DP용 DCP·crossbar·ATC/DPTX PHY 인프라는 stock에 있다. 막는 곳은 드라이버 한 함수다.
macOS에서는 되던 DP 케이블을 같은 포트에 꽂으면, stock Asahi에서는 대략 이렇게 진행된다.
tps6598x)가 DisplayPort alt mode를 요청한다.phy_apple_atc의 atcphy_mux_set(drivers/phy/apple/atc.c)가 EOPNOTSUPP (−95)로 실패하고 WARNING을 남긴다.DP-* DRM 커넥터가 생기지 않고, 모니터는 No Signal.WARNING: drivers/phy/apple/atc.c:… at atcphy_mux_set+… [phy_apple_atc]
Workqueue: events cd321x_update_work [tps6598x]
# 레지스터에 -95 = EOPNOTSUPP (“미지원”)
같은 구성으로 여러 차례 재현됐다. 충전 전용 케이블이면 partner/alt-mode 자체가 안 뜨고, 제대로 된 DP 케이블일 때 비로소 위 WARNING이 나온다 — “요청은 되는데 드라이버가 못 받는다”.
| 판별 | 예 | Asahi | 메모 |
|---|---|---|---|
USB idVendor 17e9 | DisplayLink DL-3xxx~7xxx | 가능 | EVDI + DisplayLink 유저스페이스. 제품명에 DisplayLink/DL-6xxx 명시가 안전 |
USB idVendor 090c (예: 090c:0768) | Silicon Motion SM768 등 | 불가 | 리눅스 스택이 x86 중심. aarch64 경로 사실상 없음 |
| Parade/VIA Billboard 장치만 노출 | DP alt mode 실패 폴백 | 디스플레이 실패 | 독이 잠깐 잡혔다 사라지는 패턴과 자주 동반 |
| TB4 / “DP Alt Mode only” 독 | 호스트 DP 소비형 | 불가 | 독 안에 DisplayLink GPU가 없으면 이 문서의 우회가 아님 |
수령 직후: lsusb | grep -i 17e9. 안 보이면 반품 후보. 리스팅에 “DL6950/SM768”이 한 줄에 섞인 건 두 라인을 SEO로 묶은 경우가 많아 모델명·드라이버 페이지 버킷으로 가른다.
17e9:6000 (Manufacturer: DisplayLink)DisplayLink = 커널 EVDI DRM 장치 + 유저스페이스 DisplayLinkManager. 커널 7.x에서는 오래된 번들 EVDI로는 부족하고, Asahi 컴파일 픽스가 들어간 EVDI 1.14.16+ 가 필요하다.
| 구성 | 실측 버전 | 역할 |
|---|---|---|
| 커널 | linux-asahi 7.0.x (stock) | 호스트. 헤더 패키지로 DKMS 빌드 |
| EVDI | evdi-dkms 1.15.0 | 가상 DRM 카드. DKMS로 현재 커널에 설치 |
| DisplayLink | AUR displaylink 6.3 (aarch64 바이너리) | USB 인코딩·전송 데몬, systemd 유닛 |
| 컴포지터 | Hyprland + Aquamarine | 멀티 카드. 필요 시 AQ_DRM_DEVICES(primary 먼저, EVDI 나중) |
# 의존성 → EVDI → DisplayLink → 서비스 (개념 순서)
sudo pacman -S --needed base-devel dkms linux-asahi-headers
# AUR: evdi-dkms (또는 evdi-git) 후 displaylink
sudo systemctl enable --now displaylink.service
modprobe evdi # 보통 서비스 ExecStartPre가 수행
lsmod | grep evdi
lsusb | grep -i 17e9
hyprctl monitors all
설치 직후 udev 스크립트가 exit 2를 몇 번 찍어도, 서비스가 재기동되며 EVDI attach·mode set까지 간 경우가 있었다. 최종 판정은 DRM 커넥터 연결과 실제 화면으로 한다.
실패만 있는 문서가 아니다. DisplayLink 경로는 설치·출력·3모니터 배치까지 성공했다. (채택 여부는 §6.)
| 단계 | 관측 | 판정 |
|---|---|---|
| 어댑터 연결 | lsusb에 17e9:6000 · 제품명 Dual HDMI 4K Graphic Adapter | 인식 |
| 드라이버 없음 | EVDI 미로드 · displaylink.service inactive → 화면 미부착 | (설치 전 상태) |
| 패키지 설치 | evdi-dkms 1.15.0 DKMS 빌드 성공 → displaylink 6.3 | OK |
| 서비스 기동 | systemctl enable --now displaylink · 모듈 로드 · Manager 기동 | OK |
| 1st head | 커널: Initialized evdi … → mode changed: 3840x2160@60 | 4K60 |
| 2nd head | 두 번째 EVDI card · 동일 4K60. 120/144Hz는 pixel clock 거절 | 듀얼 |
| 컴포지터 | Hyprland가 내장 eDP + HDMI + EVDI(DVI-I-*) 3출력 배치 | 3모니터 |
| 재부팅 후 | 서비스 enabled 유지, 스택 재기동 가능 | 유지 |
| 출력 | 경로 | 모드 |
|---|---|---|
노트북 패널 (eDP-1) | apple-drm (내장) | ~3K급 @ 60Hz (패널 고주사율 가능, 외장과 맞춰 60 고정 가능) |
외장 A (HDMI-A-1) | 본체 HDMI · GPU 스캔아웃 | 3840×2160@60 · CPU 거의 0 |
외장 B (EVDI, 예: DVI-I-*) | DisplayLink USB | 3840×2160@60 · 이름은 DVI여도 USB 그래픽 |
커널 로그에 헤드마다 Notifying mode changed: 3840x2160@60 이 남았고, EDID로 두 외장을 각각 인식했다. 모니터 시리얼·EDID 원문은 공개하지 않는다.
displaylink.service enable + 재부팅 후 스택 유지DVI-I-n 재부팅·재연결 시 변동 → 레이아웃 하드코딩 취약판정: “된다” ≠ “쓸 만하다”. DisplayLink는 이 머신에서 미채택.
DisplayLink ≠ CPU로 화면을 그린다에 가깝다. 구조는 이렇다:
DisplayLinkManager가 CPU로 처리한다.실측에서 이 3번 구간의 부하가 실사용 기준에서 용납하기 어려울 정도로 컸다(4K·화면 변화가 있을 때 특히). 정적 창만 DL에 두는 식의 완화는 가능하지만, 그 제약을 안고 외장 2대를 유지할 가치는 이 환경에서 없다고 판단했다.
실사용 결론: 외장은 본체 HDMI 1대만. 내장 패널 + HDMI. DisplayLink 스택은 실험·재현용으로 남겨 둘 수 있으나 일상 구성에서는 빼기로 함. 네이티브 USB-C DP가 stock에서 열리기 전까지 외장 2대는 보류.
# 1) 진짜 DisplayLink인가
lsusb | grep -i 17e9
# 2) 스택
systemctl is-active displaylink
lsmod | grep evdi
dkms status | grep -i evdi
# 3) 화면
hyprctl monitors all
ls /sys/class/drm
# 4) 실패 시 (네이티브 DP 의심 경로)
dmesg | grep -iE 'atcphy_mux_set|EOPNOTSUPP|phy_apple_atc'