+++

date = 2023-05-06T12:55:32Z
description = ""
draft = false
slug = "usb-c-and-dp-alt-mode"
title = "About USB-C and DP Alt Mode."

+++
### Microsoft Surface Laptop 4 & Linux
 제가 밖에서도 쓰고 집에서도 사용하는 만능 서피스 랩탑 4를 사용한지 어느새 2년이 넘었습니다. 그 사이에 리퍼도 받고 OS도 여러번 갈아엎기도 하고, 또 제 하드한 작업들을 잘 버텨주기도 한 정말 대단한 랩탑입니다.

특히 3:2의 광활한 세로는 정말 좋아서 다른 비율의 노트북은 이제 사용할 수 없는 몸이 되어버리기도 했습니다. 길이를 측정해보면 13인치 랩탑들과 동일한데, 세로에 5cm정도를 추가한 정도라 타이틀바 하나정도 넓혀주는 셈이라 마음놓고 패널바를 띄어놓고 사용할 수 있습니다.

약간의 불만족이라면 배터리와 IO, 그리고 더 깊게 들어가면 해상도 정도가 되겠네요. Intel 11세대를 탑재한 노트북 치고는, 그리고 이 가격 치고는 썬더볼트 없는 노트북을 찾는게 더 어려울것 같아요. USB-B 하나에 USB-C 하나, 그리고 자기네 proprietary한 Surface Connector라는 요상한 녀석과 다행이라면 다행일 3.5mm 오디오 잭이 하나 있습니다. 지금까지 썬더볼트를 이용할 일은 없어서 큰 불만은 아닌데 없는것보다는.. 

배터리는 3-4시간 웹서핑정도를 버텨주는데, 뭐 인텔 랩탑에서는 어쩔 수 없는 부분이죠. 약간 애매한 단점으로는 2496x1664 디스플레이가 있는데, 너무 낮은 FHD보다는 좋고, 4K보다는 안좋은 QHD 패널입니다. 4K를 탑재했다면 배터리가 정말 흘러내렸을테니 이래저재 일반적인 환경에서는 딱 맞는 해상도일겁니다. 

하지만 리눅스를 쓰는 저에게는 15인치 QHD는 골치아픈 일이 되어버립니다. Fractional Scaling이라는 참으로 거지같은 상황이 생기는데, 보통 13인치 화면에는 FHD가 100%로 보기 좋고, 13-15인치 4K라면 200%를 해서 사용하면 딱 맞습니다. 인터페이스 크기가 노트북를 사용하는 거리에서 딱 좋은 크기인데, QHD는 150%라는 배율을 써야합니다. 

윈도우 환경에서는 그냥 사용하는 배율이지만, 리눅스 특히 Wayland에서는 골치아픈 일이 생깁니다. 물리적으로 반-픽셀이 불가능하기에 원래라면 분수 배율은 불가능합니다. 이를 적당히 물려서 샤프하게 보이게 속이거나 인터페이스는 그대로 폰트만 크게 하는 경우도 있고, 아니면 해상도를 바꾸어 다시 계산하는 방법이 있겠는데, 리눅스가 원래 사용하는 X11에서는 큰 문제 없이 이러한 꼼수를 쓸 수 있습니다. 

신기술인 Wayland에서도 마찬가지지만, Wayland를 안쓰고 레거시 X11을 사용하는 앱을 Wayland 환경에서 적용하면 반픽셀 문제 때문에 흐리게 보이게 됩니다. 그러면 그냥 X11을 사용하면 안되냐, 제가 Wayland를 사용해야만 하는 이유가 딱 하나 있습니다. X11에서는, 여러 모니터에 각각 다른 Scale을 적용하기가 힘듭니다. 

랩탑을 집에서 사용할 때는 27" QHD 모니터 하나와 32" 4K 모니터를 사용합니다. 제가 다른 사람들보다 인터페이스를 크게 사용해서 125% 배율을 적용해야 합니다. 이때 문제가 생기는데, 노트북 화면은 150%, 27인치 모니터는 125%, 또 32인치 모니터는 150%로 사용해야 합니다. 더 작으면 안쓰는것만 못하더라구요.. 

이렇게 3가지 다른 크기의  화면은 각각 다른 배율로 써야해서, 이를 지원하는 Wayland를 써야 했습니다. 수동으로 손으로 만질수는 있지만 자주 깨지더라구요.. 

외부 모니터를 좋게 사용할 것이냐 일부 앱들을 흐리게 사용할 것이냐로 나뉘는데, 일단 저는 그냥 흐리게 쓰고 있습니다. Wayland도 나온지 한참이 지났고 (10년은 넘었으려나요), 많은 앱들은 Wayland를 지원합니다. Electron은 제대로 지원을 안하고 있는데.. 뭐 얼마전 완벽하게 적용했다니 시간이 지나면 괜찮아 지겠죠. 시간이 해결할 거라 생각하고 신기술을 택했습니다. 일단 명목상으로 얼리 어답터이기는 하니까요.
 
### 1. USB-C DP Alt Mode에 대해서..

 외부 모니터를 사용할 당시 서피스가 썬더볼트를 지원하지 않는 바람에 호환성을 찾아봐야 했습니다. 

 USB-C 포트에 대한 정확한 정보가 없어 고민하던 중 USB-C 3.2 Gen 2라는 정보를 얻었습니다. USB3은 세분화를 이상하게 해서 헷갈리게 한다는 말을 많이 듣죠. 

 USB 3.2 Gen 2가 대체 뭔지 찾아봤더니, USB3중 USB3.2는 과거 USB3.1의 리네이밍입니다. USB3.2 Gen1, USB3.2 Gen2, USB3,2 Gen2x2는 각각 5, 10, 20Gbps의 bandwidth를 가집니다. 

 Gen1은 5Gbps 1레인으로 달성하고, Gen2는 10Gbps를 10Gbps 1레인으로 달성합니다. Gen2x2는 10Gbps 2레인입니다. USB3.2 1x2라는 것도 있는데, 이는 USB3.2 2x1과 동일하게 10Gbps인데, 5Gbps 레인 두개로 달성합니다.

 USB-C는 양면으로 되어있고, Superspeed 4페어로 총 2개의 레인과 추가로 USB2가 있습니다. 이때 USB-C에는 Alt모드가 존재하는데, USB-C의 레인을 USB 데이터 교환목적이 아니라 다른 인터페이스를 얹어서 사용하는 방법입니다. 이중 가장 널리 사용되는 건 DP라는 디스플레이 인터페이스인데, DP에는 총 4페어가 있습니다. 하지만 USB와 달리 TX/RX가 필요하지 않아 4페어가 4레인이 됩니다.

  제 서피스는 USB 3.2 Gen 2, 2x1입니다. 이 말은 1Gbps 하나의 레인을 사용합니다. USB-C에서 두개의 페어가 남고, 이 두개의 페어로 DP 시그널을 보냅니다. 따라서 최대 USB3 10Gbps + DP 2 Lane이 가능한거죠. 

  만약 USB3.2 1x2를 DP와 함께 사용한다면, 5Gbps 두개의 레인중 하나만 USB로 사용할 수 있고 두페어는 DP로 써야합니다. 

  다행이 제 경우 2x1이기에 DP를 다 쓰면서도 USB는 그대로 사용할 수 있었고, 자세하게는 DP Alt모드에서 DisplayPort 1.4 High Bit Rate 3 (HBR3) mode를 사용하기에 레인당 8.1Gbps, 총 16.2Gbps를 사용할 수 있습니다. 이는 4K60Hz를 두개까지 보낼 수 있는 대역폭으로, 저는 이론상 USB3.2 10Gbps와 4K60 모니터 두개가지 사용할 수 있습니다.
