ロジクールマウスに2バイトのデータを保存する方法

2026/03/22 8:26

ロジクールマウスに2バイトのデータを保存する方法

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

記事が示すこと: Logitech MX Vertical は、独自の HID++ 2.0 プロトコルを介してアクセスされるフラッシュメモリを備えており、そのために特定の設定(主に DPI)が異なるコンピュータ間で保持されます。

発見方法: マウス上の 33 個の安定した HID++ 機能を列挙し、機能

TemplateBytesNVS
(インデックス 0x1eb0)を揮発性ストレージではないものとして特定しました。著者は複数のレジスタに対して書き込み操作をテストしました。デバイス名レジスタは書き込みを受け付けますが、常に「MX Vertical」と報告します。一方、DPI レジスタは任意の 16‑bit 値を書き込むことができ、コンピュータから抜き差しした後や別のコンピュータへ接続してもその値を保持します。

ツールと範囲: 著者は Rust 言語で

mouse-fs
というツールを作成しました。このツールは DPI レジスタ(約 2 バイト)に書き込み、Unifying 受信機を使用した任意の Logitech マウスに互換性があります。研究は探索的プローブのみで行われ、公式ドキュメントは参照されませんでした。

得られた洞察: 調査は HID++ の内部構造を明らかにし、macOS の IOHIDManager が

TemplateBytesNVS
を書き込むために必要な長いレポートを静かに破棄する様子と、このデバイスにおける IFeatureSet ルックアップの奇妙さを浮き彫りにしました。実用的なデータ保存機能は限定的ですが、結果は Logitech のプロトコルへの理解を深め、将来のファームウェアやツール開発に役立つ可能性があります。

本文

最初はただの馬鹿げたアイデアでした。ロジクール MX Vertical を自宅用PC、仕事用ノートパソコン、その他の機器に常に移動させているとき、ある時「このマウスにはフラッシュメモリが入っているんだろうか? それがないと接続を変えても DPI 設定を覚えていられない」と思ったのでした。もしそこに何かを書けたら…というわけです。
そう言えば、退屈だったのです。

計画はマウスを小さな USB ドライブとして扱うことでした。物理的に複数のコンピュータ間を行き来するので、理論上データを持ち運べます――64 GB の USB スティックで 2 バイトが恥ずかしいほど簡単なのに、マウス内であればアートです。

ロジクールのマウスは HID++ と呼ばれるプロトコルで通信します。これは標準的な USB HID をベースに構築されたもので、ロジクール側が一部ドキュメント化し、オープンソースコミュニティが逆解析したものです。私は Rust でマウスが公開しているすべての機能を列挙するツールを書きましたが、結局 33 個見つかりました。

HID++ 2.0 の仕組み

  • 各デバイスには 機能テーブル がある。
  • エントリは安定した 機能 ID をデバイス固有のインデックスにマッピングする。
    ID はロジクール製品全体で共通、インデックスはモデルごとに異なる。
  • 最初に「機能 0x2201 はどこ?」と尋ねると、「このマウスではインデックス 0x12」という答えが返ってくる。
    以降の呼び出しではそのインデックスを使用する。
  • 呼び出しは短いパケットで構成される:レポート ID、デバイスインデックス、機能インデックス、関数 ID、および最大 3 バイトのパラメータ。
    応答も同じ形で返ってくる。

ほとんどの機能は未公開です。

EnableHiddenFeatures
TemplateBytesNVS
のような名前が付いています。後者はまさに私が欲しかった「インデックス 0x1eb0 にある非揮発性ストレージ」のようです。

最初に 0x1c00 を調べました――6 スロット、読み書きフラグなど全て。macOS の

IOHIDManager
は実際に書き込むために必要な長い HID++ レポート形式を黙ってブロックしており、パケットはエラーもなく単に捨てられます。多くのプローブコードを書いて空応答を見続けた結果で、このことが判明しました。
IOHIDManager
を迂回する方法(例えば IOKit 経由で USB デバイスに直接アクセス)はありますが、別話です。

デバイス名レジスタ も試したのですが、書き込みは受け付けてもマウスは送った内容に関係なく「MX Vertical」と報告し続けました――まるで幽霊のようです。

実際に機能したのは DPI レジスタでした。DPI は何らかの場所に保存されなければならないので、任意の

u16
値を受け付けます――丸めもバリデーションもなく、「それは本当の DPI ではありません」というエラーも出ません。
0x6869
を書き込み、マウスを抜いて別コンピュータに差し替えて読み戻すと、まだ「hi」と表示されます。

これが全てです――ロジクールマウスの DPI レジスタに保存された 2 バイトの永続的なクロスコンピュータストレージ。

この種のプロジェクトを行う価値は何なのかと考えてみました。結果として得られたものは客観的には無意味です:2 バイトで何もできませんし、ホスト名を変えるだけでもっと多く保存できます。しかし調査自体が目的でした。HID++ の仕組み、macOS がカーネルレベルで HID デバイスを管理する方法と境界線、

feature table
feature index
が別物であること、
IFeatureSet
の逆引きがこのデバイスでは壊れていること、そしてデバイス名レジスタが書き込みを受け入れた後に完全に無視するという深く共感できる挙動などを学びました。

これらの知識はドキュメントを読むことで得たものではなく、何かを試してみて予期せぬ反応が返ってきたときにその線を辿った結果です。2 バイトを書くこと自体が目的ではありませんでした。私ができる限り遠くまで行けるようにしたかったのです。

マウスに何かを書き込みたい場合は、以下のコードをご覧ください: https://github.com/timwehrle/mouse‑fs。Unifying 受信機を使用しているロジクールマウスならどれでも動作します。

同じ日のほかのニュース

一覧に戻る →

2026/03/22 5:32

子ども保護をインターネットアクセス制御に変えるな。

## Japanese Translation: ** ``` ## Summary この記事は、年齢確認が成人向けコンテンツサイトを越えて、ヨーロッパ・米国・英国・オーストラリアなどの主流サービス(ソーシャルメディア、ゲーム、検索等)へと拡大していることを論じている。 規制当局は、OS が永続的に「年齢ステータス」を保持し、システムレベルのインターフェースで公開するよう求めており、これによりすべてのデバイスに適用される一般的なアイデンティティ層が作られる。Linux の systemd は既に年齢保証法への対応としてオプションの `birthDate` フィールドを追加していることから、OS 変更は規制によって駆動されていることが示されている。 成人サイトでの過去の施行は、ユーザーが VPN、借用アカウント、偽データでチェックを回避できたため失敗した。提案された OS レベルのアプローチは、コンテンツモデレーションと保護者責任を混同し、有害なコンテンツ問題を純粋に技術的なものとして扱うリスクがある。一度確立されれば、このアイデンティティ層は位置情報や国籍など他の属性へ拡張でき、規制当局が将来の恐慌時に再利用するゲートとなる可能性がある。 ユーザーにとって、新しいインフラストラクチャはアイデンティティチェック、メタデータログ、ベンダー間での摩擦を追加し、信頼できるデバイスや書類を持たない人々には特に厳しくなる。企業側では、子ども保護の責任がプラットフォーム・ブラウザ・アプリストア・OS ベンダー・アイデンティティ仲介者へと移転し、現地の親や教育者の判断力を侵食する。 著者は、コンテンツモデレーションはローカル(ブラウザ/デバイス/学校ネットワーク)に留め、保護者・教師との監督を維持し、OS はポリシー表面としてのみ使用すべきであり、普遍的な年齢放送層とならないようにすることを訴えている。規制は推奨システム、ダークパターン、依存性メトリクス、拡大を報酬化するビジネスモデルに焦点を当て、全体的なアイデンティティチェックの実施ではなく、これらを対象とすべきだ。 ```

2026/03/22 5:08

TinyBox – オフライン AI デバイス(120 B パラメータ)

## Japanese Translation: Tinycorpのフラッグシッププロジェクトは **Tinygrad** で、エレメントワイズ演算(Unary、Binary、Ternaryを含む)、ReduceOps、および MovementOps の3つのコア操作タイプを中心に構築された軽量ニューラルネットワークフレームワークです。SQRT、LOG2、ADD、MUL、WHERE、SUM、MAX、RESHAPE、PERMUTE、EXPAND などの一般的な数学関数をサポートし、コード内で畳み込みと行列乗算が隠れています。Tinygrad は既に Snapdragon 845 GPU 上で Openpilot モデルを実行するために使用されており、従来の SNPE スタックを置き換えるとともに ONNX サポート、トレーニング機能、注意メカニズム、および推論と逆伝搬の完全な自動微分を追加しています。 同社のフラッグシップハードウェア **Tinybox** は、赤・緑・黒・(近日発売予定)エクサの複数構成で提供されています。主要スペックは以下の通りです:FP16/FP32 加速 FLOPS が 778 TFLOPS / 3 086 TFLOPS(約 1 EXAFLOP)、最大 25 920 GB GPU RAM、GPU 帯域幅 1 244 TB/s、PCIe 5.0 x16 ファブリック、32 コア AMD EPYC/GENOA CPU、最大 23 040 GB システム RAM、480 TB RAID ディスク、53.2 TB/s スケールアウトネットワーク、電力オプションは 1.6 kW〜600 kW、Ubuntu 24.04 OS、12U または独立型ラックマウント フォームファクター。 価格は赤/緑モデルが $12 000、黒/ウェレックスボックスが $65 000 で、エクサモデルは 2027 年頃に約 $10 百万で発売予定です。Tinybox はディープラーニング分野で最高のパフォーマンス/ドル比を実現すると市場にアピールしており、MLPerf Training 4.0 ベンチマークでは価格が 10 倍高いシステムを上回っています。 注文は同社ウェブサイトから行い、支払後 1 週間以内に発送(サンディエゴでの受け取りまたは世界配送)が可能です。支払いは銀行振込のみで、W‑9 フォームはリクエスト時に提供できますが、購入後のカスタマイズは許可されていません。 Tinygrad は現在アルファ版ですが、来年第2四半期までに単一 NVIDIA GPU および Apple の M1 を上回ることを目指しており、推論とトレーニングの両方のワークロードに対して高性能で軽量な代替案としての可能性を示しています。

2026/03/22 9:30

**コメントをもとにしたハッカーニュース利用者のプロファイリング**

## Japanese Translation: Simon Willison(Django、Datasetteの共同開発者であり、Python Software Foundationボードに在籍する独立系ソフトウェア開発者)は、AlgoliaのHacker News APIとClaude大規模言語モデルを使用して自身のコメント履歴を収集・分析し、詳細な個人プロフィールを生成する方法を示しています。APIはCORSを有効にした状態で日付順にコメントをリストアップします。カスタムツール(2023年8月に構築)は最新の最大1,000件のコメントを取得し、Claudeで洗練されたコピー・トゥー・クリップボードボタンを提供します。ダンプデータをClaude Opus 4.6へ貼り付けると、モデルはオンライン活動の包括的なプロファイルを作成します。 Willisonのより広範なワークフロー―「エージェント工学」に根ざしたもの―では、iPhoneでClaude Codeを使用してウェブタスクをコーディングしながら通勤中に2〜3つの並列エージェントセッションを$200/月のClaude Maxプランで実行し、テスト駆動開発(`uv run pytest`)でそれらを安定化させています。彼はサンドボックス/セキュリティ(WebAssembly、Pyodide、Firecracker)、SQLite、uv & PyPIトリック、ブラウザ内のブラウザテスト(`v86`、WASM Linux)、ローカルLLM推論、およびコーディングエージェントを通じてGoを学習する実験に積極的です。彼は「プロンプトインジェクション」という概念を創出し、半年以内にヘッドラインを揺さぶる攻撃の可能性を警告するとともに、OpenClaw/Clawdbotに関するリスクも指摘しています。 Willisonはsimonwillison.net/guidesでエージェント工学に関するガイドを公開予定であり、自身の手法がLLMをプログラマの代替ではなく補完として活用し、将来の開発者ワークフローやAI支援コーディングのセキュリティ実践、責任あるAIに関する議論を形成できることを示すことを期待しています。個人的なタッチとしては、彼のエネルギッシュで対立的なスタイル、透明性の高いバイアス、そして自虐的な「ペリカンベンチマーク」SVGテストがあり、ニッチな博物館、新西蘭のカカポオウム、外国料理、そしてカリフォルニア州ハーフムーン・ベイでの園芸を楽しんでいます。

ロジクールマウスに2バイトのデータを保存する方法 | そっか~ニュース