본문으로 건너뛰기
피드

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

general 약 3분
vote
0
댓글
북마크

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

  • 1

    HID++ 2.0 프로토콜로 마우스 피처 33개를 열거, 대부분 문서화 안 됨

  • 2

    macOS IOHIDManager가 긴 HID++ 리포트를 조용히 드롭해서 PersistentRemappableAction 접근 불가

  • 3

    디바이스 이름 레지스터는 write를 받아주고 무시하는 가스라이팅 구현

  • 4

    DPI 레지스터(0x2201)에 임의의 u16 값 저장 가능하나 전원 꺼지면 소멸

  • 5

    결과: 크로스 컴퓨터 세션 스코프 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++ 프로토콜 리버스 엔지니어링 과정 자체가 하드웨어-소프트웨어 경계에서의 탐색이 어떻게 이루어지는지 잘 보여주는 사례임. 개발자라면 공감할 수밖에 없는 전형적인 '삽질했지만 배운 게 많다' 유형의 글.

댓글

댓글

댓글을 불러오는 중...

general

존 카맥이 돌아본 초기 id 소프트웨어의 실수들

존 카맥이 퀘이크 개발 당시의 기술적 과욕, 팀 운영, 지분 구조 문제를 직접 돌아봤다. 퀘이크 자체는 엄청난 성취였지만, 그 과정에서 회사와 사람들에게 너무 큰 부담을 줬다는 반성에 가깝다.

general

정부, 공공부문을 ‘AI 민주정부’로 바꾸겠다는 전략 공개

행정안전부가 전자정부의 날 행사에서 공공 인공지능 전환 전략인 ‘세계 최고의 AI 민주정부 실현 전략’을 발표했다. 핵심은 행정 효율화에 그치지 않고 국민 의견 수렴, 정책 참여, 행정 역량 강화를 AI로 밀어보겠다는 구상이다.

general

워드 빨간 밑줄을 만든 토니 크루거를 기억하며

마이크로소프트 워드의 빨간 맞춤법 밑줄과 초록 문법 밑줄을 처음 만든 개발자 토니 크루거를 기리는 글이다. 예전에는 사용자가 직접 맞춤법 검사를 실행하고 기다려야 했지만, 토니는 이 기능을 백그라운드에서 덜 거슬리게 만들고 오류를 즉시 화면에 표시하는 방식으로 바꿨다. 지금은 거의 모든 문서 편집기와 개발 도구에 비슷한 표시가 들어갔다는 점에서, 조용하지만 엄청나게 널리 퍼진 사용자 경험 개선 사례다.

general

삼성전자, AI 모듈러 홈 3년 안에 1만 채 팔겠다고 선언

삼성전자가 공장에서 80% 이상 제작되는 AI 모듈러 홈을 3년간 누적 1만 채 판매하겠다는 목표를 밝혔다. 스마트싱스 기반 보안, 화재·누수 알림, 에너지 절감, 방문자 맞이 자동화까지 주거 솔루션을 패키지로 묶는 전략이다.

general

중기부, 딥테크 7개 팀에 예비연구 티켓 줬다

중기부가 생태계혁신형 딥테크 챌린지 프로젝트 예비연구팀 7곳을 출범시켰다. 206개 컨소시엄 중 7개가 뽑혀 41대 1 경쟁률을 통과했고, 최종 5개 과제에는 4년간 최대 200억 원의 연구개발 지원이 붙는다.