마우스 DPI 설정 공간에 2바이트 데이터를 저장하는 기상천외한 실험!
Logitech MX Vertical 마우스의 HID++ 프로토콜(HID++ Protocol)을 분석하여 마우스 내 저장 공간에 데이터 저장 시도
DPI 설정 레지스터(DPI Register)를 활용, 2바이트의 데이터를 여러 컴퓨터 간에 공유하는 데 성공
macOS의 IOHIDManager가 긴 HID++ 보고서를 차단하여 개발 과정의 어려움(Development Challenges)을 겪음
Kinesis 키보드(Kinesis Keyboards)의 플래시 메모리(Flash Memory) 접근 및 활용 사례를 통해 하드웨어 저장 공간 활용에 대한 인사이트 공유
HID++ 프로토콜(HID++ Protocol) 분석
저자는 Logitech 마우스의 HID++ 프로토콜을 리버스 엔지니어링(Reverse Engineering)하여 마우스의 기능 테이블(Feature Table)을 탐색했다. 특히, 비휘발성 저장 공간(Non-Volatile Storage)으로 추정되는 0x1eb0 인덱스를 찾았지만, 접근에 실패했다. 대신 DPI 레지스터(DPI Register)를 활용하여 2바이트의 데이터를 저장하는 데 성공했다. 이는 하드웨어 제어(Hardware Control)에 대한 깊이 있는 이해를 바탕으로 한 실험이다.
macOS IOHIDManager의 제약
macOS의 IOHIDManager는 긴 HID++ 보고서를 침묵(Silently) 처리하여 개발 과정에 어려움을 줬다. 저자는 IOKit을 사용하여 USB 장치에 직접 접근하는 방법을 고려했지만, 이는 다른 문제로 이어진다. 이러한 경험은 운영체제(Operating System)의 HID(Human Interface Device) 관리 방식에 대한 이해를 높이는 계기가 되었다. 특히, 드라이버 개발(Driver Development)의 어려움을 보여준다.
마우스 내 데이터 저장의 실용성
2바이트의 데이터 저장은 실용적인 측면에서는 무의미하지만, HID++ 프로토콜 학습과 macOS의 HID 관리 방식에 대한 이해를 높이는 데 기여했다. 저자는 이 실험을 통해 하드웨어 인터페이스(Hardware Interface)에 대한 지식을 습득하고, 리버스 엔지니어링(Reverse Engineering) 기술을 연마했다. 이는 임베디드 시스템(Embedded System) 개발자에게 유용한 경험이다.
Kinesis 키보드의 플래시 메모리 활용
댓글에서는 Kinesis 키보드의 플래시 메모리(Flash Memory)를 활용한 사례를 소개하며, 사용자 매뉴얼(User Manual)에 상세히 문서화된 접근 방식을 제시했다. 키보드는 4MB의 저장 공간을 제공하며, 사용자 매뉴얼, 설정 파일, 펌웨어 업데이트(Firmware Update) 등을 저장하는 데 사용된다. 이는 하드웨어 자원(Hardware Resource)을 효율적으로 활용하는 사례를 보여준다. 특히, 설정 관리(Configuration Management)에 유용하다.