歡迎來到開放式蒸汽控制器項目!
這是一個我一直在努力對Steam Controller固件和硬件進行解構,文檔,重新利用和擴展的項目。
首先,重要的是要談論蒸汽控制器(該項目著重於該項目的硬件)。

Steam Controller是Valve Corporation於2015年11月10日發布的視頻遊戲控制器。這是Valve計劃為PC遊戲玩家提供類似控制台的體驗的計劃的一部分(即,位於電視前的沙發玩家,使用控制器而不是鑰匙板和鼠標)。

Steam控制器試圖使現代視頻遊戲控制器熟悉一些方面(即左模擬棒,四個面部按鈕,兩個肩膀和保險槓按鈕),同時還更改了我們所期望的一些規範(即更換方向墊和用觸形板右手模擬棒)。

控制器上的其他詳細信息可以在官方產品頁面上找到
您可能想知道為什麼這個項目存在,以及為什麼在過去的幾年中,我將我的時間和精力投入不足的時間和精力。
首先,我發現該控制器的設計令人信服。擁有兩種觸控板代替D-pad和右模擬棒是一個有趣的想法。可以將觸控板配置為以多種方式作用,而不僅模仿了它們所替換的東西,還可以提供新的交互範式。同樣,在控制器啟動或關閉時,使用觸覺在彈奏時發揮作用的想法是一種整潔的觸摸,使控制器進一步脫穎而出。當我剛開始使用控制器時,能夠完全自定義這些叮噹聲是幾乎直接的願望。
其次,控制器可訪問。能夠手動上傳固件更新使運行自定義固件的進入障礙。即使獲得“ Hello World”(即眨眼蒸汽按鈕LED)工作仍然存在巨大的挑戰。但是,這並不像我想像的那樣艱難,而在旨在更具溫度的控制器上做類似的事情。我非常感謝Valve像他們一樣易於訪問,並且不會阻止人們試圖入侵它的事實。
第三,Ifixit對控制器的拆解非常好。這使我了解了控制器在內部發生的事情,而無需(最初)拆開我的硬件。這指出了許多我認為與之合作的整潔外圍設備和處理器,尤其是在已經為特定目的設計的產品的背景下。
現在已經解釋了控制器及其某些(默認)功能,我們可以開始談論這個項目。也就是說,我想涵蓋已完成的成就,以及我希望實現的目標。
請注意,以下內容有點冗長和敘述。該項目中有很多內容,這是一種嘗試以一種易於遵循這項工作的人的土地來分解細節的嘗試。如果您是TLDR的人,請查看下面的通知和警告部分,然後隨意跳入supprojects部分,以獲取努力的努力。您還應該確保查看顯示一些主要成就的演示視頻。
如前所述,該項目的主要目的是探索,解構和擴展蒸汽控制器的配置選項和使用情況。但是,這有點模糊。因此,讓我們從一些示例開始。首先,該項目的主要目標是能夠為控制器上的主處理器編寫自定義固件。這就是為前進的許多其他可能性打開大門的原因。
但是,在我開始編寫固件之前,我需要有關控制器的更多信息。 Valve足夠好,可以讓大門訪問其固件的二進製版本,並能夠輕鬆更新主處理器。但是,他們沒有提供嵌入式軟件工程師通常會撰寫自定義固件的過程通常會具有的原理圖或組件或數據表列表。因此,我需要轉向逆向工程。從本質上講,這歸結為解構硬件和官方固件,以便我可以理解如何編寫自己的固件。在這一點上,逆向工程工作主要是在發現,記錄和利用的其他努力的過程中。有關反向工程工作的詳細信息,請參見反向工程subproject。
既然已經建立了逆向工程工作,並且我已經開始收集有關硬件的信息,那麼我就可以開始編寫自定義固件。查看固件子標記以查看當前軟件狀態。通常,這是實用軟件,允許用戶查詢不同的外圍設備或在不同狀態進行測量(因為需要捕獲其中的某些信息並將其送回反向工程過程,以使其繼續前進)。但是,最終很清楚,這裡捕獲了足夠的功能,即使該硬件作為其他遊戲機的控制器(即Nintendo Switch)將不會有太多其他工作。
接下來,我們來到了最初是該項目的唯一意圖。也就是說,能夠完全控制蒸汽控制器(通過觸控板觸覺)上力量並關閉的歌曲(叮噹聲)的目標。由於通過反向工程工作發現了一些發現,該項目允許完全定制叮噹聲,並使這些自定義可以在仍在運行Valve的官方固件的同時持續存在。有關如何自定義控制器上的叮噹聲的詳細信息,或有關更多詳細信息(即如何格式化叮噹性數據,以及我們如何在不修改官方固件的情況下自定義jingles),請參見“ jingles”子標記。
最後,重要的是要提及該項目的另一個意圖是要成為一種教育和/或勵志資源。也許您對蒸汽控制器感興趣。或者,也許您有興趣為商業設備編寫嵌入式軟件。無論哪種方式,希望這個項目都提供清晰簡潔的信息,以激發並使人們能夠學習和做更多的事情。我知道我從這項努力中學到了很多東西,如果可以共享任何一種,並幫助其他人,那將是很棒的。
有關該項目的其他詳細信息以及該項目的成就和未來意圖的起點,請參見下面的“子”部分。
請認識到,通過利用本項目的任何部分,您會自負。這是一種反向工程的工作,我沒有聲稱對我提供的自定義或修改的固件的硬件有完全了解。希望在發布發現和修改之前,我執行的測試可以防止損壞蒸汽控制器,或者您可能將蒸汽控制器連接到(即Nintendo Switch)。但是,我不能保證。
另外,請注意,這主要是出於教育目的。儘管這可能會使用戶可以做諸如在Nintendo Switch上使用Steam Controller之類的事情,但請認識到,與正式支持的硬件和固件相比,這幾乎肯定會隨著權衡而進行。如果您想要便宜的開關控制器並且可以接線,請查看Powera或Hori製造的。如果您想要一個完整的控制器,請考慮花費額外的錢並獲得專業控制器(這確實值得)。
最後,我說了所有這一切,希望不鼓勵任何人。請潛入並弄髒您的手。請注意,有一個(希望)很小但非零的機會可能會導致磚或破碎的硬件。
本節簡要概述和示範(如果適用)該項目的主要工作。有關每個子項目的更多詳細信息可以在其各自目錄中找到。
該目錄中的工作旨在為蒸汽控制器創建一個完全自定義的固件構建。該項目可以配置為將控制器作為開發系統,該系統允許查詢外圍設備並探索或驗證系統行為。此外,可以為更實際的目的配置該項目,例如表現得像有線Nintendo Switch Controller。
以下是一些視頻,展示了不同的固件構建:
打開蒸汽控制器:Nintendo Switch
開放式蒸汽控制器:開發板
該目錄中的工作旨在創建一種用戶友好的方式,以自定義蒸汽控制器啟動並關閉時播放的叮噹聲。
下面是一個視頻,演示瞭如何自定義蒸汽控制器上的叮噹聲:
打開蒸汽控制器:叮噹性自定義
該目錄中的工作重點是解構蒸汽控制器的固件和硬件。從中獲得的理解通常是
其他次要投影的重要部分。
Steam提供了更改蒸汽控制器某些配置選項的能力(即更改LED亮度,將從系統內存中播放叮噹聲)。該目錄包含用於理解,複製的工作,也許可以擴展此功能。
這是一個開源項目,因此請使用它,但是您希望(只要它不違反其中所述的任何許可)。
如果您想為此回購提供貢獻,那就太好了。這可能以問題/討論的形式出現,討論如何更友好,或通過添加尚未存在的功能或支持。
請注意,每個子項目都有待辦事項文檔。這個想法是概述我想實現的目標。如果您想幫助任何一個很棒的東西。如果您開始就自己的意圖進行對話,以限制重複的努力或不協調的設計的機會,那就太棒了。
我將盡力提供易於使用和強大的軟件。但是,仍然很可能會有錯誤。如果找到錯誤,請報告。
報告錯誤的最佳方法是在GitHub上使用“問題”選項卡。
報告錯誤/問題時,請確保提供足夠的詳細信息。要包括的關鍵細節是:
本節列出了一些影響該項目的項目,以及鏈接到一些可能繼續有所幫助的資源。
儘管到目前為止,該項目已經完成了很多工作,但蒸汽控制器仍然可以做很多事情(尤其是考慮到這一點的基礎工作)。為了捕獲和跟踪這些想法,已經為每個子標記做出了托多文檔。一個好的起點是頂級TODO文檔。這涵蓋了該項目的最高級別目標,同時提供了指向特定於托托斯的鏈接。