欢迎来到开放式蒸汽控制器项目!
这是一个我一直在努力对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文档。这涵盖了该项目的最高级别目标,同时提供了指向特定于托托斯的链接。