본문으로 건너뛰기
0
r/jeffnews HN 약 3분

로지텍 마우스에 2바이트 데이터를 저장해봤다

general

요약

로지텍 MX Vertical 마우스를 초소형 USB 드라이브처럼 쓰려고 HID++ 2.0 프로토콜을 Rust로 탐색한 삽질기. 33개 피처를 열거하고 여러 레지스터에 write를 시도한 끝에, DPI 레지스터(0x2201)에 임의의 u16 값을 쓸 수 있다는 걸 발견했지만 전원 꺼지면 날아가는 세션 스코프 2바이트가 전부였음.

기사 전체 정리

  • 로지텍 MX Vertical 마우스가 컴퓨터 사이를 물리적으로 오가니까, 이걸 초소형 USB 드라이브처럼 쓸 수 있지 않을까 하는 아이디어에서 시작된 삽질기임
  • Logitech 마우스는 표준 USB HID 위에 자체 구축한 HID++ 2.0 프로토콜로 통신하는데, Rust로 직접 도구를 만들어서 마우스가 노출하는 피처를 열거해보니 총 33개가 나옴. EnableHiddenFeaturesTemplateBytesNVS 같은 흥미로운 이름들이 있었지만 대부분 문서화가 안 되어 있음
  • 처음에 노린 건 PersistentRemappableAction(0x1c00) 피처였는데, macOS의 IOHIDManager가 긴 HID++ 리포트 포맷을 조용히 드롭해버림. 에러도 없고 설명도 없어서, 프로브 코드 잔뜩 짜놓고 빈 응답만 한참 쳐다본 끝에야 원인을 알게 됨
  • 디바이스 이름 레지스터도 시도해봤는데, write 콜은 받아주면서 실제로는 완전히 무시하고 계속 "MX Vertical"만 반환함. 공감 가는 리액션이라는 원작자의 코멘트가 웃김
  • 결국 유일하게 동작한 건 DPI 레지스터(0x2201)였음. 임의의 u16 값을 쓸 수 있고, 마우스 전원이 켜져 있는 동안에는 리시버를 다른 컴퓨터로 옮겨도 값이 유지됨
  • 다만 이건 active DPI만 변경하는 거라 전원이 꺼지면 fallback 값으로 복원됨. 즉 진정한 persistent storage가 아니라 크로스 컴퓨터 세션 스코프 2바이트 저장소인 셈임
  • 기본 DPI 값은 HID++로 노출되지 않는 펌웨어 영역에 저장되어 있거나, 벤더 전용 도구 혹은 서명된 커맨드로만 쓸 수 있는 것으로 추정됨
  • 결과물은 객관적으로 쓸모없지만, HID++ 프로토콜 구조, macOS의 HID 디바이스 커널 레벨 관리 방식, 피처 테이블과 피처 인덱스의 차이 등을 직접 삽질하면서 배운 과정 자체가 핵심이었음

핵심 포인트

  • HID++ 2.0 프로토콜로 마우스 피처 33개를 열거, 대부분 문서화 안 됨
  • macOS IOHIDManager가 긴 HID++ 리포트를 조용히 드롭해서 PersistentRemappableAction 접근 불가
  • 디바이스 이름 레지스터는 write를 받아주고 무시하는 가스라이팅 구현
  • DPI 레지스터(0x2201)에 임의의 u16 값 저장 가능하나 전원 꺼지면 소멸
  • 결과: 크로스 컴퓨터 세션 스코프 2바이트 저장소 달성 (객관적으로 쓸모없음)

인사이트

실용성은 제로지만, HID++ 프로토콜 리버스 엔지니어링 과정 자체가 하드웨어-소프트웨어 경계에서의 탐색이 어떻게 이루어지는지 잘 보여주는 사례임. 개발자라면 공감할 수밖에 없는 전형적인 '삽질했지만 배운 게 많다' 유형의 글.

댓글

댓글

댓글을 불러오는 중...

general

버티컬 SaaS 만들려고 해충방제 기사 취직했던 썰.txt

SaaS 창업 아이디어 검증하려고 실제로 해충방제 업체에 취직해버린 미친 사람 등장. 13일 만에 자격증 따고 21일 만에 $30k ARR 클로징하는 레전드 행보. 결국 직접 회사 인수해서 처음부터 만들겠다는 결론.

general

Apple, 버그 안 고치고 '확인해봐' 요청 후 닫아버리는 거 실화?

개발자가 3년 전에 신고한 버그를 Apple이 묵묵부답으로 방치하다가, 갑자기 베타 버전에서 '버그 고쳐졌는지 확인해줘'라고 요청함. 근데 실제론 안 고쳤고, 확인 안 하면 그냥 닫겠다고 협박한 레전드 상황. Hacker News 터지고 나서야 Apple이 반응했는데 그것도 별 쓸모없는 sysdiagnose 요청임 ㅋㅋ

general

미국의 이란 전쟁, 왜 처음부터 망한 도박이었나 - 군사사학자 분석

군사사학자 브렛 데버로우가 미국의 이란 전쟁을 전략적 관점에서 분석했는데 결론은 '개망한 도박'임. 초기 정권붕괴 시나리오는 실패했고, 호르무즈 해협이 사실상 봉쇄되면서 미국은 진퇴양난에 빠진 상황. 전술적으론 이기고 있지만 전략적으론 얻은 게 없다는 게 핵심 주장임.

general

충돌 사고 테슬라 부품으로 내 책상 위에 Model 3 컴퓨터 올려놓기 ㄷㄷ

테슬라 버그바운티 참여하려고 eBay에서 사고 차량 부품 긁어모아서 Model 3 MCU+터치스크린을 책상 위에서 부팅시키는 데 성공한 개발자 이야기임. 케이블 하나 구하려다 PCB 태워먹고, 수리하고, 결국 차량 전체 배선 하네스까지 구매하는 험난한 여정 ㅋㅋ

general

AI 코딩 에이전트 때문에 소프트웨어가 개판 됐는데 아무도 모름

코딩 에이전트 등장 1년 만에 소프트웨어 품질이 심각하게 떨어지고 있다는 경고. 에이전트한테 다 맡기다 보니 코드베이스가 감당 안 되는 복잡성 덩어리로 변해가는 중. 필자는 '속도 좀 줄이고 인간이 다시 주도권 잡아야 함'이라고 주장함.