애플워치 밀레니즈 루프 청소하기 – 공학도 스타일로

최근 사과농장 농사가 아주 잘 되고 있어요. 덕분에 지금 손목에는 애플워치가 있고, 눈 앞에는 맥북이 있고, 주머니에는 아이폰이 있죠<

애플워치를 쓴지 몇주가 지나니까 시계줄에 먼지가 끼어있는게 눈에 띄게 보이기 시작했어요. 아마 물에 닿지 않았으면 눈에 그나마 덜 띄었을텐데, 손을 씻는다거나 할때 시계가 물에 닿으니까 그때 시계줄도 같이 물에 닿게 되고, 그러면서 먼지가 떡이 져서 밀레니즈 루프의 그 링 사이사이에 끼기 시작한거죠.

이걸 어떻게 하면 잘 닦을 수 있을까… 하면서 여러 방법을 떠올렸어요.

우리의 영원한 친구, WD-40

WD-40

WD-40은 정말로 좋은 물건이죠. 이거랑 덕트 테이프만 있으면 대부분의 문제를 다 해결할 수 있어요. 삐걱거리는 것, 녹이 쓴 쇠를 다시 예토전생 시키는 것, 떡이 진 윤활제 벗겨내기 같은걸요.
그런데 아무리…생각해봐도 WD-40의 그 냄새를 항상 시계를 찬 팔에서 맡는건 좀 아니라는 생각이 들었어요. 당연히 청소야 잘 되겠지만.

우리의 또 다른 영원한 친구, DR-747

DR-747

컴퓨터 하드웨어를 많이 만지는 사람은 이걸 모를 수가 없는 물건이죠. 먼지 청소 = DR-747 이에요. 하지만 이 먼지는 이미 떡이 져서 아마 이것만으론 잘 해결되지 않을 것 같았어요.

방구석 삽질러들의 친구, 아이소프로필알코올

아이소프로필 알코올 70% 용액

이것도 아주 좋은 세척제이죠. 하지만 유감스럽게도 먼지엔 그렇게 좋은 효과가 없을 것 같아요. 먼지는 일부 접착제처럼 알코올에 녹지 않으니까요.


이럴수가! 저것들로도 해결되지 않는 문제가 있다니! 그 후로도 🤔 표정을 지으면서 생각을 해 보다가, 이런 비디오를 발견하게 되었어요.

바로 이거인거죠.


바로 지마켓에서 바로 가장 저렴한 초음파 세척기를 하나 주문했어요. 뭐가 잘못될 수 있겠어요, 어차피 스테인리스 스틸인데.

그래서 오늘 도착해서 바로 미지근한 물에 비누를 조금 타서 5분 정도 시계줄을 넣고 돌려 보니 시계줄이 깨끗해지네요, 먼지 하나도 고리 사이사이에 남기지 않고.

그런데 왠지 파워가 조…금 아쉬워요. 자주자주 시계줄을 청소하는 정도론 전혀 문제가 없는 성능이긴 한데, 정말로 찌든 시계줄을 청소하려고 한다면 적어도 몇만원은 되는 제대로 된 산업용 초음파 세척기랑 세척액을 주문하는게 좋을 것 같아요.

대충 이대로 쓰다가 정말로 출력이 아쉬워지는 순간 분해를 한번 해 보고, 과연 이게 1.5볼트 대신 3볼트 혹은 5볼트 입력을 버틸 수 있는 구조인지를 고민해 봐야겠어요.

이제는 언제 주문 했었는지도 잘 기억이 안 나기 시작하는 TWS 블루투스 이어폰 – DutchBudz 리-뷰

들어가면서

Apple 에어팟이 양쪽 귀에 연결하는 유닛이 분리된 형태의 ‘무선 블루투스 이어폰’ (혹은 TWS – True Wireless Stereo 라고 대륙에선 많이 부르더라고요) 을 유행으로 만들고 나서 중국에서 비슷한 컨셉의 물건들을 마구마구 만들어내는 덕분에, 싸고 그럭저럭 쓸만한 블루투스 이어폰이 최근에 아주 많이 유행하고 있어요. QCY-T1 이라거나 하는 이어폰이 꽤 유명한데요, 이런 이어폰을 사보려고 알아보니 멀티 디바이스 페어링을 지원하지 않는 (혹은 사양에 명시하지 않는) 것 같더라고요. 평상시에 노트북과 핸드폰을 왔다갔다 하면서 음악을 자주 듣는 미노리로선 이 점은 아주 치명적인 문제였어요. 그리고 아무리 저렴하다곤 해도 뚜껑도 없다는 건 조금 마음에 걸리는 점이기도 했고요. 그 외에도 여러 회사의 이어폰이 있었지만, 이 물건을 ‘펀딩하던 당시’에는 (지금은 어떨지 모르겠네요, 그 사이에 또 아주 많은 제품들이 나왔을테니) 저가형에서는 멀티 디바이스 페어링과 AAC, 그리고 블루투스 5.0을 지원하지 않는 제품들이 대부분이었기 때문에 이 제품을 펀딩하게 되었던 거에요. (오래전에)


맨 위에 오는 한줄 요약 – 역시 크라우드 펀딩은 엔간하면 거르세요

이 캠페인도 마찬가지였어요. 글을 읽어볼 때 이건 공학도가 쓴게 아니라는게 느껴지는 글이라는 게 (알맹이가 없다는게) 느껴질 때 알아보았어야 했는데.

늦은 소비자 지원, 예상보다 늦어진 배송 (이미 개발이 완료된 상품인데도!), 그리고 낮은 상품의 질 이라는 삼박자를 다 만족했어요.

낮은 상품의 질 이라고 한다면, 소비자에게 약속한 제품의 성능을 만족하지 못한다는 거겠죠.

- Latest Bluetooth 5.0
- High fidelity sound
- Fast charging
- Up to 5 hours without charging
- 24 hours total playtime with metal charging case

라는 점 중에서 만족하는 것은

- Latest Bluetooth 5.0

하나밖에 없으니까요. 이게 왜 만족하지 않는지 에 대한 자세한 점은 아래 문단에서 다룰래요.

왜 ‘낮은 상품의 질’ 인가 (부제, 이게 왜 후진가)

블루투스 이어폰 이라는 것의 기본은 개인적으로 아래처럼 나눌 수 있다고 생각해요.

  • ‘이어폰’ 이니까, 우선은 소리가 멀쩡하게 잘 나와야 한다.
    • 소리가 멀쩡하게 나온다는 점은, 잡음이 없이 원래 소스 그대로의 소리에 가깝게 나와야 한다.
  • 휴대성이 좋아야 한다.
    • 무게가 무겁지 않고, 작아야 한다.
  • 배터리가 오래 가야 한다.
    • 이런 제품의 특성상, 충전도 빨라야 한다.
  • 밖에 자주 휴대하고 다닐것이니, 디자인이 보통은 가야 한다.

하나 하나 살펴보도록 할 거에요.

소리가 멀쩡하게, 즉 잡음이 없이 원래 소스 그대로의 소리에 가깝게 나오는가

우선 이 이어폰을 끼고 나면 가장 중요한 걸 바로 알 수 있어요, 이 이어폰은 화이트노이즈가 (2019년인데!) 존재한다는 것을.

소리에 대한 응답 곡선, 크로스토크 같은 내용에 대해서 다루기 전에, 우선 이 이어폰은 심하게 잘 들리는 화이트노이즈가 존재해요. 시끄러운 대중교통 속에서 듣거나 하는 사람이 아니라면 (실내에서 주로 듣는 사람이라면) 화이트노이즈가 아주 심하다는 걸 바로 느끼게 될 거에요. 분명 블루투스 이어폰으로 노래를 듣고 있는데, 80년대 돌비 NR 기술이 없는 치이이이익- 소리가 나는 싸구려 노멀 카세트테이프를 듣는것과 같은 감성이 밀려와요. 낮은 기본 이어팁의 차음성 (그래서 약한 베이스), 힘이 하나도 없는 고음이 같이 합쳐져서 소리 크기를 올리게 되어요. 이 이어폰으로 길게 소리를 듣고 나서 기본 유선 번들 이어폰을 사용한다면, 기본 유선 오픈형 번들 이어폰을 사용하다가 그럭저럭 쓸만한 헤드폰으로 음악을 들을 때 정도의 감동을 느끼게 될 거에요. 그정도로 심해요, 이건.

추가: 2019년 2월 12일

이어폰 내부 EQ 게인에 문제가 있는지, 원본 소스에서는 클리핑 문제가 없던 소리가 (주로 1-2khz 대에서) 찌직찌직 찢어져서 들리는 문제가 간혹 발생해요. 작긴 하니까 귀가 예민하지 않으면, 그리고 시끄러운 곳에서 주로 듣는다면 못 느끼겠지만, 그래도 아주 신경쓰여요.

휴대성이 좋은가

프로젝트 페이지에 가서 모델들의 사진을 본다면 생각보다 그렇게 많이 커보이진 않을거에요. 큰 서양인들에겐 그렇게 많이 커보이지 않을지도 몰라요. 하지만 이 글을 읽는 대부분의 사람은 아마도 동양인이겠죠. 서양인과 동양인의 체격 차이에 대해서 감안해야 할 거에요.

예를 들어서 이런 거대한 느낌으로요. 구형 샤오미 10000mAh 보조배터리 (아래 이 애요!) 보다 조금 작은 정도의 부피라는 걸 감안하세요.

배터리가 오래 가는가

앨범 하나 (약 한시간 좀 안되죠) 를 실내에서 얌전히 앉아서 들으니 휴대폰 위에 나오는 배터리 인디케이터가 1/3이 떨어졌어요. 약 절반쯤 되는 음량이에요. 원래 약속한 재생시간이 5시간이라는 걸 감안한다면, 이건 과대광고에요. 이대로라면 3-4시간 정도 들을 수 있을거에요.

하지만 만약 이런 추운 날 이 이어폰을 사용한다면, 온도가 매우 낮은 환경에서는 리튬 배터리의 성능이 아주 많이 저하된다는 것도 생각해야겠죠. 이쯤 되면 듣는 시간과 충전하는 시간이 비슷해질지도 몰라요. 과연 온도가 너무 낮은 요즘 날씨를 원망해야 하는건지, 아니면 십년째 별 발전이 없는 리튬 배터리 기술을 원망해야 하는건지 모르겠어요.

충전 시간은 이젠 별 기대도 안 했지만 평범하게 그냥 전원을 끌어가요. 퀄컴 퀵 차지 이런 고급 기술은 당연하게도 없어요. 아, 덧붙여서 이어폰 케이스의 구조 때문에 마그네틱 usb 케이블도 사용할 수 없어요. 충전 케이블을 연결할 때 케이스가 옆으로 열리지 않도록 잡지 않는다면, 케이스가 열리는 걸 볼 수 있을거에요. 그리고 케이스 충전 케이블을 연결하면 케이스의 충전 상태를 보여주는 LED가 절묘하게 가려서 잘 보이지 않아요. 케이스 충전 상태는 보통 충전할 때 보게 된다는 걸 생각하면, 이건 큰 디자인 미스에요.

디자인이 보통은 가는가

이건 개인마다 호불호가 갈릴 수 있을 것 같아요. 개인적으론 이런 느낌이에요.

출처: Horizon Zero Dawn Wikia – Focus Effect

왜 ‘늦은 소비자 지원’ 인가

메일을 보내면 최소 5일은 있어야 답이 와요. 이거 하나만으로도 말이 안돼요.

예상보다 늦어진 배송

이 제품은 원래 배송 일정보다 한달이 더 늦게 도착했어요. 그리고 배송 방법도 문 앞에 가져다 주는게 아니라 편지함에 넣고 가버리는 준등기 – ePacket 이에요. 분실되면 어떻게 하려고!


결론

  • AAC를 지원하지만, AAC를 지원하는 의미가 전혀 없을 정도로 음질이 전혀 좋지 않은 블루투스 이어폰이에요. 실제로 SBC로 연결된 노트북과 AAC로 연결된 핸드폰에서 의미 있는 음질의 차이를 느끼지 못했어요.
  • 기본으로 제공하는 팁의 차음성이 별로 좋지 못해요. 다른걸로 갈아 낄 수 있다면 좋겠지만, 이거에 맞는 걸 찾는게 많이 힘들거에요. 그리고 이어폰 자체보다 더 비싼 팁을 사용하고 싶진 않잖아요? 싼 이어폰을 쓰는 이유가 뭐겠어요.
  • 케이스 충전시간이 길고, 이어폰 배터리가 광고만큼은 오래 가지 않아요. 날이 추우면 더 안좋아질거에요.
  • 케이스가 커요, 서양인이 아니시라면 좀 부담스러울 크기일수도 있어요.
  • 디자인이 호불호가 갈릴 수 있어요.

이 가격이면 꼭 뚜껑이 필요하신게 아닌 이상 그냥 조금 더 싼 QCY-T1을 사세요.
고음질을 기대하셨다면 휴대하기 좋은 20-30만원대의 블루투스 헤드폰을 사세요.

편의점에서 파는 싸구려 몇천원짜리 이어폰이나, 비행기에서 빌려주는 싸구려 헤드폰에 만족하신다면 이 이어폰에도 만족하실지도 몰라요.

논 글레어 모니터를 글레어 모니터로 – 한성 ULTRON 2370 개조

이젠 거의 6년이 되어가는 LG 27MA53 모니터와 그거보다는 조금 더 요즘거지만 여전히 오래된 한성 ULTRON 2370을 쓰고 있어요.

원래부터도 화질에 그렇게까지 만족하면서 쓰진 않았지만, 최근 맥북 프로 (13, 2018)을 산 이후엔 정말로 많이 고통을 받고 있는데요, 맥북 모니터를 보면서 잘 쓰다가 고개를 조금 더 들어서 원래 쓰던 모니터들을 보면 🤔…한 화질 모니터가 있으니 정말로 비교가 많이 되더라고요. 원래부터 영 좋지 않은 명암비 (스팩상으로는 1000:1 이라고 하는데 과연…) 와 플리커링, 그리고 심하게 낮은 밝기 (100%에서 약 300cd) 는 모니터를 바꾸지 않는 이상 어떻게 해결할 수 없지만, 그래도 해볼 수 있는 건 해보자 싶은 마음에 모니터에 붙어있는 논 글레어 코팅을 제거해서 눈꼽만큼이라도 더 나은 명암비를 얻어보려는 마음에 이번 삽질을 시작하게 되었어요.


왜 이게 되나요?

사실 모든 패널은 (당연하게도) 원래 만들어질때 글레어 패널이에요. 논 글레어 패널은 글레어 패널 위에 얇은 살짝 뿌옇게 되어있는 필름(안티글레어 필름)이나 무언가를 올려서 만들어지는 거에요. 대부분은 필름을 접착해서 만들게 되고, 그래서 이런 개조를 할 수 있는거에요.

어떻게 개조하나요?

원래대로라면 패널의 각 층을 고정하고 있는 메탈 브라켓을 분해한 뒤 물에 적신 천을 얹고 6시간 정도를 기다려서 안티글레어 필름을 붙이고 있는 접착제를 약하게 해야 제거할 수 있어요. 하지만 ULTRON 2370은 아주 편리하게도 제로베젤 (사실은 제로가 아니지만 뭐…) 모니터라서, 브라켓을 분해하지 않아도 필름을 대부분 제거할 수 있어요. 아래에 있는 한성 로고가 표시된 부분은 단순히 장식을 위한 부분이니, 적절한 도구로 적당히 힘을 줘서 벌리면 플라스틱 클립을 손상시키지 않고 분리할 수 있어요. 그 후에 수건이나 그런 것을 적셔서 접착제를 약하게 한 뒤, 안티글레어 필름을 제거하면 되어요.

아, 주의할 점은 안티글레어 필름 바로 아래엔 보통 편광필름이 위치한다는 점이에요. 무턱대고 두 필름을 다 분리해 버리면 편광 안경(혹은 선글라스)을 쓰지 않은 맨눈에는 하얗게만 보이는 모니터를 만들어버릴 수 있으니, 조심해서 편광필름은 놔두고 안티글레어 필름만 분리해야 해요.


개조 후

체감상 명암비가 1.2배는 더 좋아진 것 같은 모니터가 되었어요. 특히 암부 표현이 더 좋아졌고, 지금까지는 있는지도 몰랐던 데드픽셀을 막 발견한 참이에요. 방에 있는 사물이 반사되어 보인다는 단점이 있지만, 어차피 방의 조명을 평상시에 어둡게 하고 사는 편이니 상관 없겠죠 뭐. 그래도 이 짓을 다시 할지를 고른다면… 역시 다시 하진 않을래요, 그냥 가능하다면 처음부터 글레어 모니터를 사세요.

대한민국 세관 통과 상태 커맨드라인 조회 프로그램 “Customs”

세관 홈페이지는 늘 디자인도 성가시고, 뜨는 창도 많고, 많이 불편하더라고요. 이런 작업은 터미널로 해야 제 맛이죠<

전에 깻잎씨가 CJ 대한통운 배송 커맨드라인 조회 스크립트인 ‘cjgls‘ 를 만든걸 터미널에서 잘 써먹던게 생각나서, 세관 상태도 이걸로 할 수 있을까 싶어서 프로그램을 만들게 되었어요<

프로젝트 페이지는 여기 에요. 아주 간단한 프로그램이니 특별히 설치방법이나 사용방법은 적지 않을게요<

아, lotteaircargo 도 있어요, 이것도 관심이 있으시다면 한번 확인해보세요<

세계적인 포켓몬 트레이너가 되고 싶었던 심심한 미노리 (부제: LimeSDR Mini를 사용한 GPS 신호 발생해보기)

지난 이야기

전에 쓰던 노트북을 성공적으로 팔고 새 노트북을 다시 사서 펜티엄에서 벗어나 고급 CPU 명령어셋을 사용할 수 있게 된 미노리.
미노리는 macOS와 아이폰을 쓰다가 삽질하면서 건드릴 구석이 하나도 없어서 너무나도 심심한 나머지 아이폰에 ‘포켓몬 고’를 설치하였다.

포켓몬을 잡으려니 나가야 하겠지만, 날씨도 춥고 미세먼지도 심해서 나가기도 싫고…
그러던 와중 서랍을 열어서 절친인 깻잎씨 에게 선물받은 LimeSDR Mini를 보고 🤔 표정을 짓게 되는데…


예전엔 GPS 신호를 발생시키려면 좀 많이 복잡했죠. GNURadio 에서 각종 블럭을 배열해서 신호를 만들어서 송출해야 했으니까요.

SDR 생태계에 SoapySDR 이 등장해서 그나마 있던 SDR 응용 프로그램들이 하나의 통일된 백엔드를 지원하게 되었지만, SDR 자체가 워낙 쓰는 사람만 쓰는 물건이다보니 애초부터 무언가를 송출하는 프로그램이 그렇게 유저가 쓰기 편하게 있진 않았어요. 그나마 좀 편하게 쓸 수 있는 애들은 송신이 아니라 수신을 하는 애들 (rtl-sdr 덕분에) 이었죠. 송신 가능한 싼 sdr은 osmo-fl2k 정도인데, 이것도 최근에서야 좀 알려지게 되었으니까요<

gps-sdr-sim 이라는 좀 간편한 프로그램이 조금 전에 나왔고, LimeSDR에 조금 더 특화된 같은 사람이 만든 LimeGPS도 있어요. 이런 조금 더 편한 프로그램을 이용한다면 손쉽게 세계적인 포켓몬 트레이너가 될 수 있겠죠<

사용법도 아주 간단해서 거의 그냥 실행만 하면 작동해서 한번 실험을 해봤…지만, 아쉽게도 미노리의 아이폰이 사용하는 칩셋은 이 gps 신호에 잘 속질 않는 것 같아요. 다른 GPS를 가지고 있는 기기들로도 실험을 해 보았더니 그 기기들은 잘 받는걸로 봐서, 신호 자체가 문제가 있는것은 아닌 것 같아요. 퀄컴 GPS 칩셋을 사용하는 기기들은 잘 되는 것 같으니, 스냅드래곤 SoC를 사용하는 안드로이드 기기 유저들은 잘 사용할 수 있겠네요<

마스크를 쓰고 롱패딩을 입고 공원으로 나가야 이 동네에서 제일 잘 나가는 트레이너가 될 수 있겠네요, 희귀한 포켓몬을 잡고 싶을땐 어쩔 수 없이 자동차 시동을 걸죠 뭐..<

macOS에서 입력 소스 전환 단축키를 ⇧Space (Shift+Space) 로 변경

쨔마가 쓴 글 을 보고 지금까지는 수동으로 defaults 값을 수정하면서 키 입력 조합을 ⇧Space로 변경했는데, 우연히 그냥 Fn+⇧+Space 를 눌러서 조합을 입력할 수 있다는 걸 알았어요..<

이게 하이 시에라에서도 되는진 잘 모르겠지만, 일단 모하비에선 되고 있어요. 적어도 앞으로 새로 컴퓨터를 설정하면서는 조금 더 편하게 설정할 수 있겠네요<

델 XPS 13 (9360) NBD, 그리고 센터 입고

작년 11월엔가 지른 노트북인데, 이 노트북은 다른 건 다 괜찮았지만 키보드는 정말로 문제가 많았어요. 빠르고 강하게 치면 노트북 키가 두번 눌리고, 그렇다고 살살 누를땐 정확하게 중앙을 누르지 않는다면 키가 눌리는 느낌이 나지만 실제론 눌리지 않아서 정말로 스트레스를 많이 받았죠.

너무 키보드가 영 좋지 않은 나머지 휴대용 블루투스 키보드를 마련하기도 했지만, 역시 저건 임시 방편인거고 근본적으로 노트북을 고칠 수 있을때 (아직 보증기간이 남아있으니까요) 고쳐봐야 겠다는 생각이 들어서 델에 증상에 대한 설명과 발생되는 모습을 동영상으로 찍어서 문의를 했어요. 바로 NBD1)Next Business Day 서비스, 다음날 바로 엔지니어가 부품 들고 와서 수리해주는 서비스에요를 신청해줘서 오늘 엔지니어가 와서 키보드를 테스트하고 확실히 뭔가 이상하긴 하다면서 보드를 교환하고 키보드도 교환하고 수리하는 것 까지는 그럭저럭 좋았는데…2)서멀 그리스를 다시 바르지 않고 그냥 그대로 재활용한 것은 감점 요인이지만, 뭐 그건 어차피 다시 바르면 되는 부분이니…

이젠 SSD를 인식하지 못하는 문제가 생겨서 엔지니어님이 노트북을 들고 센터로 가져갔습니다…

이번 추석 연휴동안엔 XPS를 못 쓰겠네요, 친척집 가서 뭘로 시간을 보내지… 잔고장이 저렇게 많은 물건이면 그냥 좀 환불해주거나 완전히 고쳐주거나 둘 중 하나를 해줬으면 좋겠어요, 적어도 다음 노트북은 확실히 델로 사진 않을 것 같아요. 220만원짜리가 저런 품질이라니, 그냥 맥북을 살까…


수정, 2018년 10월 5일

여전히 문제가 해결되지 않았어요. 이젠 짜증이 좀 많이 나요. 델에 대한 신뢰가 아주 많이 떨어지고 있어요. 또 저 노트북이 가지고 있던 컴퓨터 중 가장 성능이 좋은 물건이었기 때문에 모든 작업이 지나치게 오래 걸리고 있어요.


수정, 2018년 10월 10일

여전히 돌아오지 않았어요. 환불/교환/보상 그런것 전부 줄 수 없고, 빠르면 오늘 안, 늦어도 내일까지는 완전하게 수리 된 노트북을 가져다 준다고 하네요, 과연 어떨지 지켜볼 생각이에요.


수정, 2018년 10월 11일

드디어 돌아왔어요. 9월 19일부터 10월 11일까지 아주 기나긴 여정이었어요.

노트북이 지금 보기엔 키보드가 아마도 괜찮아 보이긴 하는데, 조금 더 써봐야 할 것 같아요.


수정, 2018년 10월 18일

결국 판매를 결정했어요, 아직 팔리지는 않았지만 열심히 팔아 볼 생각이에요<

노트북이 있다가 없으니까 아주 허전한 느낌이네요… 데스크탑 앞에서만 컴퓨터를 쓸 수 있다보니 스마트폰을 보는 시간이 더 많아진 것 같아요.

Sn   [ + ]

Clevo W65KJ1_KK1 (한성 XH57) 커피레이크 개조 바이오스 삽질기

들어가면서

데스크탑 용도로 한성 XH57을 사용하고 있어요<

이 노트북의 가장 큰 특징은 데스크탑 CPU를 장착하고 있다는 건데요, 그래서 그런지 노트북에 비해서 성능이 꽤 넉넉해서 (펜티엄인데도) 데스크탑으로 사용하기 좋은 것 같아요, 쿨링도 울트라북에 비하면 잘 되어있고요.

잘 쓰고 있는데, 왠지 이런 말을 인터넷에서 보게 되었죠:

???: 인텔의 7세대 보드에서 8세대 CPU는 사실 호환 된다, 인텔이 보드 더 팔아먹으려고 그냥 안되게 막아놓은 것이다.

아주 그럴듯한 말이죠, 인텔이 지금까지 우리에게 저지른 짓을 생각하면요.

그래서 분명 이렇게 많이 팔리고, 가성비로 소문난 노트북이라면 누군가가 미리 개조해 놓은게 있을 것이다 라는 생각이 들어서 검색을 해 봤더니, 세상에 진짜로 있는거에요.

그래서 빨리 다운로드를 해 놓으려고 했죠, 인터넷에 있는 자료는 생각보다도 유통기한이 짧으니까요. 그런…데 이미 좀 늦었더라고요. 바이오스를 개조해서 올리신 분이 커뮤니티의 유저들과 다소 마찰이 있어서, 올려놓은 파일들을 비공개로 전환한 것 같았어요.

권한 요청 버튼을 눌러놓고 개인적으로 메일이라거나 보낼 수 있는 방법을 찾아서 부탁을 드려볼까… 싶다가, 본인이 싫다는데 거기에 부탁하는 건 좀 예의가 아닌 것 같아서요. 못하는 것도 아니니 귀차니즘을 이기고 언제나처럼 직접™ 해보기로 했습니다.

닌텐도 전 대표, 이와타 사토루가 '직접' 이라고 말하면서 양 손을 얼굴 앞으로 뻗는 특유의 제스쳐를 취하는 그림
이와타 사토루 전 닌텐도 사장, 닌텐도 다이렉트의 저작권은 주식회사 닌텐도에 있습니다.

오늘만은 윈도우

바이오스 관련 툴들은 죄다 윈도우용으로만 있죠. 그래서 오늘만은 리눅스를 사용하지 못하고 윈도우 VM을 사용하기로 했어요.
우선 모든 작업을 하기 전에, 컴퓨터가 켜져있는 상태에서 한번 백업을 떠보기로 했어요.

$ sudo flashrom -p internal -r bios_raw_dump.bin

무리없이 8 메가바이트짜리 덤프가 떠졌고, 두번 연속으로 해도 같은 해시가 나와서 우선 저 파일을 보관해 두기로 했어요.

VirtualBox 를 사용해서 바이오스 작업용 윈도우를 새로 설치하면서 1)아무래도 주로 사용하는 게임 환경에 설치하기엔 좀 깔끔하진 않아서 어떤 작업을 해야 하는지 정리해 보았어요.

  1. 커피레이크 CPU 마이크로코드 삽입
  2. Intel ME 무력화 (아무짝에도 쓸모 없는 보안을 해치는 녀석이니 이참에)
  3. 바이오스에 든 옵션롬들도 이왕이면 업데이트 하자, 최신이 나쁠건 없으니
  4. 한성 로고는 영 아니니 이왕이면… 좀 모에한 로고로 바꾸자

그리고 필요한 프로그램들을 정리해 보았어요.

  1. MMTool2)AMI의 지적 자산이에요
  2. UBU
  3. me_cleaner
  4. UEFITool

연장은 이정도면 되었겠죠, 삽질을 시작해요<

우선 주목적인 CPU 마이크로코드부터, 덤으로 옵션롬들을 업데이트

윈도우 툴들은 처음 쓰는 사람도 쉽게 쓰기 좋아서 참 좋은 것 같아요, 하지만 개인적으론 OS가 정말로 마음에 안 들죠<

UBU를 사용해서 아까 뜬 덤프를 열었어요. 다행히 잘 열리네요. 마이크로코드 업데이트 옵션으로 우선 바이오스에 있는 마이크로코드들을 업데이트 해요.
그리고 나서 새로운 커피레이크 CPU용 마이크로코드를 삽입해야 하는데, 프로그램 자체엔 그 메뉴가 없더라구요.
꼼수로 필요하지 않은 스카이레이크 CPU의 마이크로코드의 최신 버전이라고 속이면서 커피레이크 CPU용 마이크로코드를 강제로 밀어넣었어요. 뭐 어차피 상관 없겠죠.

마이크로코드를 밀어넣고 나서 랜카드의 옵션롬 같은 자잘한 옵션롬을 업데이트 해요. 안해도 상관 없겠지만 뭐 최신이라는데 나쁠건 없겠죠.

로고!

한성 로고는 아주 지루해요.

그러니 좀 바꿔봤어요.

이제 좀 낫네요, 최근에 mNetwork 안에 만들어진 연구소인 mNetwork 비전리 방사선 연구소 의 자산이라는 표시도 넣기로 해요<

UEFITool 에 있는 모듈 Body 바꿔치기 기능으로 새로운 로고를 넣을 수 있어요. 이름은 Logo.bmp 이지만 사실은 jpg라는 걸 잊지 말기로 해요.

Intel ME 무력화

사실 로고는 아무래도 좋고 (바탕화면을 많이 보지, 부팅 로고는 안 보잖아요) 더 중요한건 Intel ME를 없애버리는 거였어요.

$ me_cleaner -S bios_microcode_vbios_realtek_updated_logo.bin -O bios_microcode_vbios_realtek_updated_logo_aggressiveclean.bin
$ me_cleaner -s bios_microcode_vbios_realtek_updated_logo.bin -O bios_microcode_vbios_realtek_updated_logo_passiveclean.bin

ME 펌웨어 부분에 HAP 비트만 설정해도 물론 ME를 끌 수 있긴 하지만, 찝찝하니까 가능하면 ME 펌웨어의 대부분을 삭제하고 싶었어요. 하지만 실패할 가능성이 좀 있으니 (이 노트북은 Boot Guard가 활성화 되어 있으니) HAP 비트만 설정한 버전도 하나 준비하기로 해요.

플래싱!

을 컴퓨터에서 하고 싶었어요. 사실 못하는 건 아니에요. 하는 방법이 있긴 한데… 아까 뜬 덤프가 맞는지 좀 의심스러운 점도 있어서 직접 분해해서 SPI 플래셔로 EEPROM에 접근하기로 했어요.

말은 쉽지, EEPROM이 쉽게 접근하기 어려운 위치에 있더라고요 (M.2 슬롯과 CPU 쿨러 사이에 있는 히트싱크과 검정 플라스틱 아래), 열심히 나사를 정리하면서 분해했습니다. 뭐 이리 나사가 많아, 전동드라이버를 사던지 해야지 원…

듀퐁 케이블 난장판으로 싸구려 SOIC8 클립을 연결하고, 스팩시트를 침침한 눈으로 한 다섯번 읽어가면서 전압이랑 핀 배열을 체크했죠. 3.3볼트 칩에 5볼트를 넣는다거나, 1.8볼트 칩에 3.3볼트 혹은 5볼트를 넣는다거나3)사실 3.3볼트는 로직 레벨 컨버터가 도착을 안 했을때 한번 해본적 있었어요, 다행스럽게도 고장 안났죠. 플래싱 하는동안 얼마나 심장이 쫄깃하던지 하면 큰일 나니까요.

다행스럽게도 이 칩은 3.3볼트여서 로직 레벨 컨버터에 물릴 필요는 없어요. 레노버 싱크패드 쓸땐 1.8볼트라서 궁시렁 거리면서 로직 레벨 컨버터에 연결하곤 했는데, 이건 그점은 참 마음에 드네요.

언제나 하던것처럼 다시 한번 정식으로 덤프를 뜨고 md5를 한번 아까 시작할 때 덤프 뜬 거랑 비교해봤죠. 어, 다르네…

뭐지…?

이미 XH57을 다 분해해 둔 상태라서 XH57 안에 있는 하드 안에 있는 VM 이미지에서 자료를 꺼내오기도 곤란하고4)USB-SATA 연결할 수 있는 외장하드 케이스를 사둘까… 아쉬운대로 XPS에 있는 VM에다가 UEFITool을 설치해서 실제 롬 덤프 안에 있는 리전들을 비교해보기로 했어요.

BIOS 리전 - 해시 일치
ME 리전 - 해시 불일치

다른 부분 - EC 등 은... 뭐 확인은 안되지만 같겠죠, 뒷부분쪽은 vbindiff 해보니 같았으니

어차피 ME는 날릴거니, 그냥 해보자는 생각이 들었어요. 그래서 다시 덤프 데이터가 맞는지 한번 더 떠보고, 그래도 불안해서 또 한번 더 떠보고 md5가 모두 일치한다는 걸 확인하고 로고 & ME HAP 설정 그리고 대부분 ME 펌웨어 삭제 버전 롬을 플래싱 했어요. 그리고 머리 한 구석에서 불안감을 떨치지 못하면서 부랴부랴 다시 노트북을 조립했죠. 조립하면서 팔이 아파서 진짜 전동드라이버를 사고 싶었어요.

두근두근

책상은 전선과 여러대의 컴퓨터, 여러개의 키보드 등으로 난장판이라서, 비교적 좀 더 자리가 넓은 책상 역할을 하고 있는 침대 위에서 배터리로 XH57을 켜보려고 40% 쯤으로 충전해서 보관중이던 배터리를 가져왔어요. 배터리를 장착하고 전원을 켰는데… 화면이 검정색이네요.

아, 망했다 생각이 드는 찰나에 삐- 하는 POST 비프가 들렸어요. 그리고 systemd-boot 의 부트 선택 화면이 보였죠. 다행스럽게 로고만 망했네요, 아직까진.

그리고 OS로 부팅해서 ME가 어떻게 되었는지 급하게 명령어를 쳤어요

$ sudo ./intelmetools -m
Can't find ME PCI device

만세!

하지만 30분 더 있어봐야죠, ME를 잘못 제거하면 컴퓨터가 30분 후에 강제로 꺼지니까요.

watch -n 1 uptime

유튜브라도 보면서 시간을 보내다 구석에 있는 터미널을 보니 어느새 부팅 후 31분이 지나고 있었어요. 성공적으로 ME를 제거한거에요.

앞으로 더 할 일

나중에 뜯을 기운이 있을 때 (아마도 i5-8400으로 CPU를 교체할 때) 로고를 다시 건드리기로 했어요. 아마 파일 크기 한계나 압축 형식 같은 문제겠죠. 서멀을 대충 조립하느라 새걸로 바르지 않고 그냥 그대로 덮었는데, 이것도 그때 다시 발라야겠죠. 우선은 삽질 성공!

ME를 제거하고 마이크로코드를 넣은 바이오스 파일은 전례를 보았으니 공개하지 않을거에요. 하지만 대충 어떻게 하는지 필요한 도구들과 과정을 적어놓았으니 컴퓨터를 잘 다루시는 분들이라면 할 수 있겠죠. 이 작업을 제대로 된 장비 없이 하면 진짜로 컴퓨터가 딴딴한 벽돌이 될 수 있으니, 할 수 있는 분들만 하세요.

Sn   [ + ]

리눅스와 NVMe SSD 펌웨어 업데이트, 그리고 고통받는 리눅서

원래 ‘고통받는 리눅서’ 시리즈를 정규로 쓸 생각은 없었지만, 요즘같이 그냥 깔면 돌아가는 “It Just Works” 세상에 리눅스를 메인 OS로 쓰고 있다는 건 셀프로 고통받길 좋아한다는 것 외엔 설명이 되질 않겠죠. 그래서 오늘도 흔한 리눅서가 고통받는 것 중 하나인 펌웨어 업데이트를 들고 왔습니다<

미노리는 KXG50ZNV512G 라는 SSD를 쓰고 있어요. 흔히 Toshiba XG5 라고 불리는 물건이죠. 하드디스크 계의 도시바는 ‘또, 시바!’ 라는 악명이 아주 높았지만1)뭐 그것도 케이스 바이 케이스 같지만요, 미노리는 도시바 하드 서버에 넣고 혹사시키면서 돌리고 있는데 멀쩡합니다< SSD는 과연 어떨까요?

Toshiba KXG50ZNV256G/KXG50ZNV512G/KXG50ZNV1T02 non-SED Solid State Drive Firmware Update

This package provides the firmware for Toshiba KXG50ZNV256G 256GB, KXG50ZNV512G 512GB and KXG50ZNV1T02 1TB non-SED M.2 2280, Revision AADA4104, and is supported on Latitude, OptiPlex, Vostro, Inspiron, Precision, Alienware and XPS models running the following Windows operating systems: Windows 7, Windows 8, Windows 8.1 and Windows 10 64-bit only.

Fixes & Enhancements

Fixes:
-Fixed issue encountered during drive refresh in corner condition
-Fixed SMART reporting to be in line with industry practice

Enhancement:
- Improvements to Data Recovery in corner condition

(AADA4105)
Fixes & Enhancements
Fixes:
- Fixed write performance issue encountered on specific workload.

Enhancement:
- Not Applicable

산 후 벌써 두번이나 업데이트가 나왔네요. 성능도 더 좋아진다고 하고, 이제서야 업계 표준에 맞게 SMART를 지킬 마음이 들었다니 그거 참 다행이네요, 그러면 이제 업데이트를 해야 하는데, 델은 역시나 리눅서들을 실망시키지 않죠.

Supported Operating Systems

Windows 7, 32-bit
Windows 7, 64-bit
Windows 8, 32-bit
Windows 8, 64-bit
Windows 8.1, 32-bit
Windows 8.1, 64-bit
Windows 10, 64-bit

언제나처럼 직접 까야 하는거죠.

만능 바이너리 해체기, 7z

리눅스에서 파일을 까는 방법은 여러가지가 있어요. file 명령어를 통해서 이게 대충 어떤 파일일지 추측하는 방법도 있고, binwalk 를 통해서, 그리고 binwalk -eM 을 통해서 줄줄히 내부에 있는 압축 데이터까지 전부 추출해보는 방법도 있죠. 하지만, 의외로 꽤 쓸만한 툴이 있어요. 그건 압축 프로그램인 7-zip 이죠.

$ 7z l Toshiba\ XG5_nonSED_\ KXG50ZNV256G_512G_1T02_C0PF8_ZPE.exe

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ko_KR.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (806EA),ASM,AES-NI)

Scanning the drive for archives:
1 file, 3832016 bytes (3743 KiB)

Listing archive: Toshiba XG5_nonSED_ KXG50ZNV256G_512G_1T02_C0PF8_ZPE.exe

--
Path = Toshiba XG5_nonSED_ KXG50ZNV256G_512G_1T02_C0PF8_ZPE.exe
Type = PE
Physical Size = 3832016
CPU = x86
Characteristics = Executable 32-bit NoRelocs NoLineNums NoLocalSyms
Created = 2003-10-18 04:35:08
Headers Size = 4096
Checksum = 3861488
Image Size = 221184
Section Alignment = 4096
File Alignment = 4096
Code Size = 77824
Initialized Data Size = 139264
Uninitialized Data Size = 0
Linker Version = 6.0
OS Version = 4.0
Image Version = 0.0
Subsystem Version = 4.0
Subsystem = Windows GUI
Stack Reserve = 1048576
Stack Commit = 4096
Heap Reserve = 1048576
Heap Commit = 4096
Image Base = 4194304
Comment = FileVersion: 1.3.1.12
ProductVersion: 1.3.1.12
FileDescription: 
----
Path = [0]
Size = 3714320
Packed Size = 3714320
Virtual Size = 3714320
Offset = 110592
--
Path = [0]
Type = zip
Offset = -110592
Physical Size = 3824910
Tail Size = 2
Embedded Stub Size = 113608

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-05-11 11:18:34 ....A      3775488      3710121  AADA4105-64bit.exe
2018-05-14 17:10:36 ....A         2342          951  Readme.txt
------------------- ----- ------------ ------------  ------------------------
2018-05-14 17:10:36            3777830      3711072  2 files

$ 7z l AADA4105-64bit.exe

....

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-05-11 11:18:30 ....A          144               launch.vbs
2018-05-11 11:18:30 ....A        20112               TFMDriver32.sys
2018-05-11 11:18:30 ....A        23184               TFMDriver64.sys
2018-05-11 11:18:30 ....A        29240               TFMNativeApp32.exe
2018-05-11 11:18:30 ....A        32312               TFMNativeApp64.exe
2018-05-11 11:18:30 ....A      2199608               TFMWizardApp.exe
2018-05-11 11:18:30 ....A      2860600               TFMWizardApp64.exe
2018-05-09 14:33:50 ....A      1601536               AADA4105.sig
2018-02-23 15:49:46 ....A       128527               EULA.rtf
2018-02-19 17:54:56 ....A        29750               Logo.bmp
2018-05-11 11:05:30 ..HSA         5120               Thumbs.db
2018-05-11 11:18:30 ....A         4228               TFMUpdate-config.xml
------------------- ----- ------------ ------------  ------------------------
2018-05-11 11:18:30            6934361      3775488  12 files

$ cat TFMUpdate-config.xml

....

    <!--- - - - - KXG50ZNV512G NVMe TOSHIBA 512GB - - - - - -->
    <Drive Model="KXG50ZNV512G NVMe TOSHIBA 512GB">
        <Firmware Revision="AADA4101">
            <AvailableFirmware Revision="AADA4105" FileName="AADA4105.sig" />
        </Firmware>

....

이렇게 AADA4105.sig 파일이 펌웨어 본체라는 걸 알 수 있죠. 이제 펌웨어 본체를 알아냈으니 저걸 nvme에 올려야 하는데, 이것에 쓰는 아주 좋은 툴이 있죠. 바로 nvme-cli 에요.

심호흡을 한번 크게 하고, 떨리는 마음으로 펌웨어 업로드 명령을 내려봐요.

$ sudo nvme fw-download /dev/nvme0 --fw=AADA4105.sig
Firmware download success
>>> elapsed time 12s                                                            
$ sudo nvme fw-commit /dev/nvme0 --slot=0 --action=1
Success committing firmware action:1 slot:0

그리고 리부팅을 하고, 다시 부팅이 되는 걸 보면서 환호성을 지른 후

$ sudo nvme id-ctrl /dev/nvme0 | grep fr
fr      : AADA4105
frmw    : 0x14

안 망했네요<

어지간하면 윈도우로 멀티부팅해서 펌웨어 업데이트를 하는게 가장 좋겠지만, 윈도우를 쓰지 않는다면 이런 방법을 사용해 볼 순 있겠죠. 이 작업을 자기가 뭘 하고 있는지 파악을 못하면서 하면 SSD가 (진짜로) 벽돌 될 위험이 존재하니, 조심해서 진행하세요.

Sn   [ + ]

리눅스와 고해상도 모니터 (HiDPI), 그리고 고통받는 리눅서

XPS 13을 이제 약 반년째 쓰고 있어요<

그동안 사용하면서 이것저것 다 마음에 드는 상태로 고치면서 (소프트웨어 적이건, 하드웨어적으로 바꿔버리건) 사용했지만, 딱 하나 고치지 못하고 타협하면서 썼던 것이 있었어요.

그건 바로 HiDPI 에요.

윈도우 에서도 지원이 오묘해서 종종 프로그램의 모양이 이상하게 나온다거나 하는 HiDPI 지원은 리눅스도 사정이 크게 다르지 않아요. 아니, 훨씬 더 심각해요. 좋게 표현해서 리눅스 환경에선 ‘역사가 깊은 프로그램’을 많이 사용하게 되는데, 그 프로그램들은 대부분 한참 전부터 업데이트가 그리 활발하게 이루어지지 않는 경우가 많아요. 그런데 그런 예전에 만들어진 프로그램들은 대부분 HiDPI 에 대한 개념이 없던 시절부터 있던 경우가 많다보니, HiDPI 환경에선 사용이 불가능 할 정도로 작게 나오거나, 아니면 GUI 레이아웃이 와장창 깨져서 나와서 아주 미워보이는 문제가 있죠.

그나마 그런 HiDPI 문제는 GTK3, Qt5 기반 프로그램이 늘어나면서 (그럭저럭) 해결이 되어가고 있지만, 아쉽게도 하나 해결되고 있지 못하는 부분이 있어요. 그건 바로 HiDPI 모니터와 일반 (96dpi) 모니터가 섞여 있는 환경에선 어떻게 돌아가는가 하는 문제에요.

우분투 같은 사용자 친화적인 배포판의 경우엔 어떨지 모르겠지만, 미노리가 사용하고 있는 아치 리눅스는 사용자가 꽤 많은 설정을 수동으로 해야 하는 배포판이에요. 그러다 보니 지금 사용하고 있는 DE인 Plasma5의 기본 동작대로 많이 사용하게 되는데요, 이 DE의 경우엔 기본 설정 상 설치하자마자 바로 HiDPI 가 감지되지 않는 경우가 많아요.1)모니터의 망가진 EDID라거나, 등등… 그래서 각종 꼼수를 사용해서 HiDPI 환경에서 사용하기 적합하게 만들어 두는 경우가 대부분이죠.2)예를 들어서 이것처럼 이런 환경에서 일반 모니터를 컴퓨터에 연결하면 일반 모니터 쪽 화면이 HiDPI 모니터 쪽 스케일링 배수만큼 더 커져 보이게 되어요. 이대론 사용하기가 아주 힘들죠.

이 문제를 근본적으로 해결하기 위해선 Wayland를 사용해야 하지만 Wayland는 ‘올해 말쯤엔 사용할 만 할 것’이라는 말만 무성한 채로3)올해 말 디스플레이 서버 수년째 실생활에서 아무 문제 없이 사용하긴 좀 힘든 상태에요. 그래서 결국 이런 선택지 중 하나를 선택할 수 밖에 없게 되죠.

  1. 그냥 한쪽 모니터는 아주 크게 나오는 상태로 사용한다.
  2. 그냥 한쪽 모니터는 아주 작게 나오는 상태로 사용한다. 그리고 매번 모니터를 연결했다가 분리할때마다 HiDPI 관련 설정을 바꾼다.
  3. 듀얼모니터를 포기하고 HiDPI 모니터만 사용한다.
  4. 듀얼모니터를 포기하고 일반 모니터만 사용한다. 그리고 매번 모니터를 연결했다가 분리할때마다 HiDPI 관련 설정을 바꾼다.

지금까진 3번 선택지를 사용해 왔는데, 눈이 아파서 도저히 안되겠다는 생각이 들었어요. 그래서 한번 해킨토시를 설치해서 맥의 더 나은 HiDPI 지원을 체험해 보려다가 결국 포기하고 5번 선택지를 선택하게 되었습니다<

5. 일반 모니터를 HiDPI 인 것 처럼 속인 후, 실제로 화면 출력은 절반 사이즈로 줄여서 출력하면서 사용한다.

우선 테스트

테스트 목적으로 이미 실행되고 있는 DE에서 다음과 같은 명령어를 입력해 봤어요. 노트북의 내장 디스플레이 (HiDPI) 는 eDP1 인터페이스에, 외장 디스플레이 (일반 dpi) 는 DP1 인터페이스에 연결되어 있어요.

xrandr --output DP1 --auto --fb 3840x2160 --scale 2x2 --pos 0x0

모든것이 두배 두배로 커졌던 일반 dpi 1080p 디스플레이가 멀쩡한 사이즈로 출력되기 시작했지만, 바탕화면이나 패널 등이 여전히 절반 크기로 출력되고 있었어요. 새로 실행하는 프로그램들은 모두 정상적으로 동작하고, 플라즈마 쉘을 죽였다가 다시 켜면 그 다시 켠 부분들은 멀쩡하게 동작하는 걸 보고 올바른 방향으로 오고 있다는 걸 알았어요. 플라즈마 전체를 저 명령어를 입력 후 다시 껐다가 켜거나, 아니면 아예 플라즈마 세션이 시작하기 전 저 명령어를 입력하면 해결된다는 거죠. 그래서 저 명령어가 X가 시작한 후 플라즈마 쉘이 실행되기 전 실행되도록 .xprofile 에 다음과 같은 내용을 추가했어요.

# 2x2 scaling when external monitor is connected via DP1 port
if [ $(xrandr | grep "^DP1" | cut -d ' ' -f 2) = "connected" ]; then
        /usr/bin/xrandr --output DP1 --auto --fb 3840x2160 --scale 2x2 --pos 0x0
fi

다시 시작

로그아웃 하면 X가 꺼졌다가 다시 켜지면서 SDDM을 불러오기 때문에, 로그아웃 후 다시 플라즈마 세션을 시작했어요. 순간적으로 올바르게 스케일링 된 화면이 보이다가, 다시 두배 두배로 큰 화면이 보이기 시작했어요. xrandr 결과에선 화면이 3840×2160이 아니라 1920×1080 이라는 말이 나오고 있었죠. 왜 그런가 고민을 하다가, Plasma 세션이 시작되면서 디스플레이 설정을 건드리는 것 같다는 결론에 도달했어요. 그래서 이걸 수동으로 설정하기 위해서 (어차피 해상도 설정은 한번 하면 잘 바꾸지도 않으니) KScreen 2 데몬을 자동으로 시작하지 않도록 바꿨습니다< 그리고 나서 다시 시작하니, 짜잔, 멀쩡하게 동작하는 화면이 나오기 시작했죠.

과도한 욕심을 버리자

듀얼 모니터를 다 사용하면 정말로 좋겠지만, 결국엔 노트북 본체 모니터는 끄는게 더 낫다는 생각이 들었어요. XPS 13에 달려있는 Intel UHD Graphics 620의 성능이 너무 암울해서4)아니, 이름은 UHD 라면서!, 4K+QHD 디스플레이의 3D 컴포지팅을 도저히 감당할 수 없었기 때문이에요. 그래서 최종적으론 다음과 같은 설정을 .xprofile 에 넣었어요.

# 2x2 scaling when external monitor is connected via DP1 port
if [ $(xrandr | grep "^DP1" | cut -d ' ' -f 2) = "connected" ]; then
        /usr/bin/xrandr --output eDP1 --off --output DP1 --auto --fb 3840x2160 --scale 2x2 --pos 0x0
else
        /usr/bin/xrandr --output eDP1 --auto
fi

else 쪽은 아마도 필요가 없겠지만, 혹시 모르니까<

실제 사용

그래서 지금 실제로 위와 같은 설정으로 사용하기 시작했어요. 4k 크기의 프레임버퍼는 여전히 UHD 620에게 버겁지만, 그래도 아쉬운대로 실제로 사용할 수 있긴 해요.
외장 일반 dpi 모니터를 연결해서 사용하고 싶다면 외장 모니터를 연결한 후 세션을 로그아웃 했다가 다시 시작하면 복잡하게 설정을 하나하나 일일히 바꿀 필요 없이 돼요. 다시 HiDPI 모니터를 주로 사용하고 싶다면 외장 모니터를 분리한 뒤 똑같이 하면 HiDPI 모드로 돌아와요. 듀얼 모니터를 사용할 수 없지만 (성능 문제로), 그래도 책상에서 13인치 노트북 화면을 째려보지 않고 27인치 모니터를 보면서 편하게 사용할 수 있게 되었다는 점은 아주 만족이에요. Wayland가 멀쩡해져서 모니터의 DPI에 맞춰서 자동으로 화면을 스케일링 하기 전까진 가장 실용적으로 사용할 수 있는 방법일 것 같아요.

덧붙임

xrandr를 이용한 scale 설정은 지난 7년동안 망가져 있는 상태라서 사용할 수 없었어요. 다행스럽게도 이 글을 쓰는 시점에선 고쳐진 상태지만, 업스트림에서 고쳐진 지 약 한달밖에 되지 않아서 많은 배포판에 아직 배포가 되지 않았을 수 있어요. 고쳐진 버전은 1.20 이에요.

OpenGL을 사용한 컴포지팅 성능이 너무 처참해서 도저히 써먹을 수 없겠다면 모든 애니메이션을 끄고 XRender를 이용해 컴포지팅을 시도해 볼 수 있어요. 이젠 슬슬 고여서 퇴장할 준비를 하고 있는 인텔 DDX 드라이버를 설치한 후 2D 가속 데스크탑을 즐겨보세요!

Sn   [ + ]