Open Steam Controller Projectへようこそ!
これは、Steam Controllerのファームウェアとハードウェアを分解、文書化、再利用、拡張に取り組んでいるプロジェクトです。
まず、スチームコントローラー(このプロジェクトが焦点を当てているハードウェア)について少し話すことが重要です。

Steam Controllerは、2015年11月10日にValve Corporationによってリリースされたビデオゲームコントローラーです。これは、PCゲーマーにコンソールのような体験のオプションを提供するValveのイニシアチブの一部でした(つまり、テレビの前に座ってキーボードとマウスの代わりにコントローラーを使用するCouch Gamer)。

Steam Controllerは、最新のビデオゲームコントローラー(つまり、左アナログスティック、4つのフェイスボタン、2つの肩、バンパーボタン)に馴染みのある側面を維持しようとしましたが、予想される規範の一部を変更しました(つまり、方向パッドと右アナログスティックをトラックパッドに置き換えます)。

コントローラーの追加の詳細は、公式製品ページにあります
このプロジェクトが存在する理由と、過去数年にわたって私の時間とエネルギーの時間とエネルギーを投資した理由を疑問に思うかもしれません。
まず、このコントローラーの設計が説得力があることがわかりました。 D-PADと右アナログスティックの代わりに2つのトラックパッドを持つことは興味深いアイデアです。トラックパッドは、交換したものを模倣するだけでなく、新しい相互作用パラダイムを提供するように、さまざまな方法で行動するように構成できます。また、コントローラーが起動したりシャットダウンしたりしたときに、ハプティックスを使用して少しジングルを演奏するというアイデアは、コントローラーをさらに際立たせるきちんとしたタッチです。これらのジングルを完全にカスタマイズできることは、私が最初にコントローラーの使用を開始したとき、ほぼ即時の欲求でした。
第二に、コントローラーはかなりアクセス可能なままになりました。ファームウェアの更新をアップロードできるため、カスタムファームウェアを実行するためのエントリの障壁がはるかに低くなりました。 「Hello World」(つまり、SteamボタンLEDを点滅させる)さえ動作させることさえするというかなりの課題がまだありました。ただし、これは、より耐火性になるように設計されたコントローラーで同様のことをすることを想像するほど困難ではありませんでした。 Valveがこのハードウェアを彼らと同じようにアクセスできるように残し、人々がそれをハッキングしようとすることを思いとどまらないという事実に本当に感謝しています。
第三に、ifixitはコントローラーの非常に素晴らしい分解を行いました。これにより、ハードウェアを(最初に)分解する必要なく、コントローラーが内部で何をしていたかについてのアイデアが得られました。これは、特に特定の目的のために既に設計されている製品の文脈で、私が作業するのにきれいだと思った多くのきちんとした周辺機器とプロセッサを指摘しました。
コントローラーとその(デフォルトの)機能の一部が説明されたので、このプロジェクトについて話し始めることができます。つまり、私は達成されたことと、私が前進することを達成したいことをカバーしたいです。
注意してください、以下は少し冗長で物語です。このプロジェクトには多くのコンテンツがあり、これはこの取り組みに新しい人々のために土地を簡単に追跡できるようにする方法で詳細を分解する試みです。あなたがTLDRのような人である場合は、以下の通知と警告セクションをチェックしてから、サブプロジェクトセクションに飛び乗って、努力の肉に到達してください。また、行動中の主要な成果のいくつかを示すデモビデオを必ずチェックする必要があります。
前述のように、このプロジェクトの主な意図は、Steamコントローラーの構成オプションと使用量を調査、解体、拡張することです。しかし、それは少しあいまいです。それでは、いくつかの例から始めましょう。まず、このプロジェクトの主要な目標は、コントローラー上のメインプロセッサのカスタムファームウェアを作成できることでした。これが、他の多くの可能性が前進するためにドアを開けるものです。
ただし、ファームウェアの作成を開始する前に、コントローラーに関する詳細情報が必要でした。バルブは、ファームウェアのバイナリバージョンにアクセスし、メインプロセッサを簡単に更新できるようにするのに十分なほど優れていました。ただし、カスタムファームウェアを作成するプロセスを担当する場合、組み込みソフトウェアエンジニアが通常持っていたコンポーネントまたはデータシートの概略図またはリストを提供しませんでした。したがって、私はリバースエンジニアリングに目を向ける必要がありました。これは本質的に、ハードウェアと公式のファームウェアを分解することになり、自分のファームウェアの書き方を理解できるようにします。この時点で、他の取り組みのために多くの発見、文書化、および利用されているため、リバースエンジニアリングの取り組みがほとんどそのコースを実施しています。リバースエンジニアリングの取り組みの詳細は、リバースエンジニアリングサブプロジェクトをご覧ください。
リバースエンジニアリングの努力が確立され、ハードウェアに関する情報の収集を開始したので、カスタムファームウェアの作成を開始できました。ファームウェアサブプロジェクトをチェックして、ソフトウェアの現在の状態を確認してください。ほとんどの場合、これはユーティリティソフトウェアであり、ユーザーが異なる周辺機器を照会したり、異なる状態で測定を行うことができます(その情報の一部をキャプチャして、前進し続けるためにリバースエンジニアリングプロセスに供給する必要があるため)。しかし、最終的には、このハードウェアが他のコンソールのコントローラーとして機能するようにするための追加作業はそれほど多くないため、ここでキャプチャされた十分な機能があることが明らかになりました(つまり、任天堂スイッチ)。
次に、もともとこのプロジェクトの唯一の意図だったものになります。つまり、蒸気コントローラーが(トラックパッドハプティックスを介して)パワーアップしてシャットダウンする曲(ジングル)を完全に制御できるという目標です。リバースエンジニアリングの取り組みによるいくつかの発見により、このプロジェクトにより、ジングルを完全にカスタマイズし、これらのカスタマイズがValveの公式ファームウェアを実行しながら持続することができます。コントローラーのJinglesをカスタマイズする方法の詳細、または詳細(つまり、Jingleデータのフォーマット方法と、公式ファームウェアを変更せずにJinglesをカスタマイズする方法)については、Jingles subprojectを参照してください。
最後に、このプロジェクトの別の意図は、教育的および/または動機付けのリソースになることであることに言及することが重要です。たぶん、あなたは蒸気コントローラーに興味があります。または、商用デバイス用の埋め込みソフトウェアを作成することに興味があるかもしれません。いずれにせよ、このプロジェクトが明確で簡潔な情報を提供して、人々がより多くのことを学び、より多くのことを可能にするための明確で簡潔な情報を提供することです。私はこの努力から多くのことを学びました、そして、そのいずれかが共有され、それが素晴らしいと他の人を助けることができれば、私は知っています。
追加の詳細とこのプロジェクトの成果と将来の意図に関する出発点については、以下のサブプロジェクトセクションを参照してください。
このプロジェクトの一部を利用することにより、あなたがあなた自身の責任でそうしていることを認識してください。これはリバースエンジニアリングの取り組みであり、カスタムまたは修正されたファームウェアを提供しているハードウェアを完全に理解していると主張していません。うまくいけば、調査結果や変更を公開する前に実行するテストにより、蒸気コントローラーやスチームコントローラーを接続できるもの(つまり、ニンテンドースイッチ)にダメージを与えることができます。しかし、私はそれを保証することはできません。
また、これは主に教育目的で共有されていることに注意してください。これにより、ユーザーはNintendo SwitchでSteam Controllerを使用するなどのことを行うことができますが、公式にサポートされているハードウェアやファームウェアと比較して、これはほぼ間違いなくトレードオフが来ることを認識してください。安いスイッチコントローラーが必要で、有線で問題なくなった場合は、PoweraまたはHoriが作成しているものをチェックしてください。完全に機能するコントローラーが必要な場合は、余分なお金を費やしてプロコントローラーを入手することを検討してください(本当に価値があります)。
最後に、私は誰もがっかりしないという希望を持ってこのすべてを言うことに注意してください。飛び込み、手を汚してください。 (できれば)非常に小さいがゼロではない、間違いがレンガのハードウェアや壊れたハードウェアにつながる可能性があることに注意してください。
このセクションでは、このプロジェクトの主要な取り組みの簡単な概要とデモンストレーション(該当する場合)を示します。各サブプロジェクトの詳細については、それぞれのディレクトリをご覧ください。
このディレクトリの作業は、スチームコントローラー用の完全にカスタムファームウェアビルドの作成を目的としています。このプロジェクトは、周辺機器の照会を可能にし、システムの動作を調査または検証できる開発システムとしてコントローラーを動作させるように構成できます。さらに、プロジェクトは、有線の任天堂スイッチコントローラーのように動作するなど、より実用的な目的で構成できます。
以下は、さまざまなファームウェアのビルドを示すいくつかのビデオです。
オープンスチームコントローラー:Nintendo Switch
オープンスチームコントローラー:開発ボード
このディレクトリの作業は、スチームコントローラーが起動してシャットダウンするときにジングルが再生されるものをカスタマイズするユーザーフレンドリーな方法を作成することに向けられています。
以下は、スチームコントローラーでジングルをカスタマイズする方法を示すビデオです。
オープンスチームコントローラー:Jingleカスタマイズ
このディレクトリの作業は、スチームコントローラーのファームウェアとハードウェアの分解に焦点を当てています。これから得られる理解はしばしばです
他のサブプロジェクトの重要な部分。
Steamは、Steam Controllerの特定の構成オプションを変更する機能を提供します(つまり、LED明るさを変更し、ジングルがシステムメモリから再生される変更)を提供します。このディレクトリには、この機能を理解、再現し、拡張するための作業が含まれています。
これはオープンソースプロジェクトですので、これを利用してください。
このレポジトリへの寄付を提供したい場合は、素晴らしいことです。それは、これがどのようにユーザーフレンドリーになるか、またはまだそこにない機能やサポートを追加することで、問題/議論の形でもたらされる可能性があります。
サブプロジェクトごとにTODOドキュメントがあることに注意してください。アイデアは、私が達成したい目標を概説することです。あなたがこれらのいずれかを助けたいなら、それは素晴らしいでしょう。重複した努力や不調和なデザインの可能性を制限するために、自分の意図に関する会話を始めた場合、さらに素晴らしいことです。
使いやすく堅牢なソフトウェアを提供するために最善を尽くします。ただし、おそらくバグがあります。バグが見つかった場合は、報告してください。
バグを報告する最良の方法は、GitHubの[問題]タブを使用することです。
バグ/問題を報告するときは、十分な詳細を提供してください。含めるべき重要な詳細は次のとおりです。
このセクションには、このプロジェクトに影響を与えたいくつかのプロジェクトと、最新の状態を維持するのに役立つ可能性のあるリソースへのリンクがリストされています。
これまでのところ、このプロジェクトでは多くのことが達成されていますが、Steam Controllerでできることはまだたくさんあります(特に、この時点までにされた基礎を考えると)。これらのアイデアをキャプチャして追跡するために、サブプロジェクトごとにTODOドキュメントが作成されました。開始するのに適した場所は、トップレベルのTODOドキュメントです。これは、サブプロジェクト固有のTODOへのリンクを提供しながら、プロジェクトの最高レベルの目標をカバーしています。