Bienvenue dans le projet Open Steam Controller!
Ceci est un projet où j'ai travaillé pour déconstruire, documenter, réutiliser et développer le firmware et le matériel du contrôleur de vapeur.
Premièrement, il est important de parler un peu du contrôleur Steam (le matériel sur lequel ce projet est axé).

Le contrôleur Steam est un contrôleur de jeux vidéo publié par Valve Corporation le 10 novembre 2015. Cela faisait partie de l'initiative de Valve de donner aux joueurs PC la possibilité d'une expérience de type console (c'est-à-dire le joueur de canapé qui se trouve devant un téléviseur et utilise un contrôleur au lieu du clavier et de la souris).

Le contrôleur de vapeur a essayé de garder certains aspects familiers aux contrôleurs de jeux vidéo modernes (c'est-à-dire un bâton analogique gauche, quatre boutons de visage, deux boutons d'épaule et de pare-chocs) tout en modifiant certaines des normes auxquelles nous nous attendons (c'est-à-dire en remplaçant le pavé directionnel et le bâton analogique droit avec des padis).

Des détails supplémentaires sur le contrôleur peuvent être trouvés sur la page officielle du produit
Vous vous demandez peut-être pourquoi ce projet existe et pourquoi j'ai investi une quantité non négligeable de mon temps et de mon énergie au cours des deux dernières années.
Tout d'abord, j'ai trouvé que la conception de ce contrôleur était convaincante. Avoir deux trackpads à la place du D-Pad et du bâton analogique droit est une idée intéressante. Les trackpads peuvent être configurés pour agir de diverses manières et non seulement imiter ce qu'ils ont remplacé, mais également fournir de nouveaux paradigmes d'interaction. De plus, l'idée d'utiliser l'haptique pour jouer un peu de jingle lorsque le contrôleur démarre ou s'arrête est une touche soignée qui a fait ressortir le contrôleur. Être capable de personnaliser pleinement ces jingles était un désir presque immédiat lorsque j'ai commencé à utiliser le contrôleur.
Deuxièmement, le contrôleur a été laissé assez accessible. La possibilité de télécharger manuellement les mises à jour du micrologiciel a rendu manuellement la barrière à l'entrée pour l'exécution du micrologiciel personnalisé beaucoup plus bas. Il y avait encore un défi considérable pour faire fonctionner même un "Hello World" (c'est-à-dire clignoter la LED du bouton Steam). Cependant, ce n'était pas aussi difficile que j'imagine faire quelque chose de similaire sur un contrôleur conçu pour être plus résistant au tempérament. J'apprécie vraiment le fait que Valve ait laissé ce matériel aussi accessible qu'ils l'ont fait et ne découragent pas les gens d'essayer de le pirater.
Troisièmement, Ifixit a fait un très bon démontage du contrôleur. Cela m'a donné une idée de ce que le contrôleur avait en interne, sans avoir besoin (initialement) de démonter mon matériel. Cela a souligné beaucoup de périphériques et de processeurs soignés avec lesquels je pensais être soignés, en particulier dans le contexte d'un produit qui a déjà été conçu à des fins particulières.
Maintenant que le contrôleur et certaines de ses capacités (par défaut) ont été expliquées, nous pouvons commencer à parler de ce projet. À savoir, je veux couvrir ce qui a été accompli et ce que j'espère accomplir pour aller de l'avant.
Remarque, ce qui suit est un peu verbeux et narratif. Il y a beaucoup de contenu dans ce projet et c'est une tentative de décomposer les détails d'une manière qui donnera une la base de la terre pour les personnes nouvelles à cet effort. Si vous êtes une personne TLDR, consultez la section Avis et avertissement ci-dessous, puis n'hésitez pas à sauter dans la section des sous-projets pour accéder à la viande d'effort. Vous devriez également être sûr de consulter les vidéos de démonstration qui montrent certaines des principales réalisations en action.
Comme mentionné précédemment, l'intention principale de ce projet est d'explorer, de déconstruire et de développer les options de configuration et les usages du contrôleur Steam. Cependant, c'est un peu vague. Commençons donc par quelques exemples. Premièrement, un objectif majeur de ce projet était de pouvoir écrire un micrologiciel personnalisé pour le processeur principal du contrôleur. C'est ce qui ouvre la porte à de nombreuses autres possibilités pour aller de l'avant.
Cependant, avant que je puisse commencer à écrire un firmware, j'avais besoin de plus d'informations sur le contrôleur. Valve était assez agréable pour laisser la porte ouverte à l'accès à la version binaire de leur micrologiciel et à la possibilité de mettre à jour le processeur principal facilement. Cependant, ils n'ont pas fourni de schémas ou une liste de composants ou de fiches techniques qu'un ingénieur logiciel embarqué aurait généralement s'il était chargé du processus d'écriture du micrologiciel personnalisé. Par conséquent, je devais me retourner pour inverser l'ingénierie. Cela se résume essentiellement pour déconstruire le matériel et le micrologiciel officiel afin que je puisse comprendre comment écrire mon propre firmware. À ce stade, l'effort d'ingénierie inverse a principalement suivi son cours, car beaucoup a été découvert, documenté et utilisé pour d'autres efforts. Des détails sur l'effort d'ingénierie inverse peuvent être trouvés dans le sous-projet d'ingénierie inverse.
Maintenant qu'un effort d'ingénierie inverse a été établi et que j'ai commencé à collecter des informations sur le matériel, j'ai pu commencer à écrire un firmware personnalisé. Découvrez le sous-projet du firmware pour voir l'état actuel des logiciels. Il s'agit principalement d'un logiciel utilitaire pour permettre à un utilisateur d'interroger différents périphériques ou de prendre des mesures dans différents états (car certaines de ces informations devaient être capturées et renvoyées dans le processus d'ingénierie inverse pour le faire avancer). Cependant, il est finalement devenu clair qu'il y avait suffisamment de fonctionnalités qui ont été capturées ici pour que ce ne soit pas trop de travail supplémentaire pour que ce matériel agisse comme contrôleur pour d'autres consoles (c'est-à-dire le commutateur Nintendo).
Ensuite, nous arrivons à ce qui était à l'origine la seule intention de ce projet. C'est-à-dire le but de pouvoir avoir le contrôle total des chansons (jingles) que le contrôleur Steam joue (via le trackpad haptics) sur Power Up and Shot Down. En raison de certaines découvertes via l'effort d'ingénierie inverse, ce projet permet aux jingles d'être entièrement personnalisés et à la persiste de ces personnalisations tout en exécutant le firmware officiel de Valve. Pour plus de détails sur la façon de personnaliser les jingles sur votre contrôleur, ou pour plus de détails (c'est-à-dire comment les données de jingle sont formatées et comment nous pouvons personnaliser les jingles sans modifier le firmware officiel), consultez le sous-projet Jingles.
Enfin, il est important de mentionner qu'une autre intention de ce projet est qu'elle soit une ressource éducative et / ou motivante. Peut-être que vous êtes intéressé par le contrôleur Steam. Ou peut-être que vous êtes intéressé à écrire un logiciel embarqué pour un appareil commercial. Quoi qu'il en soit, l'espoir est que ce projet fournisse des informations claires et concises pour inspirer et permettre aux gens d'en apprendre et de faire plus. Je sais que j'ai beaucoup appris de cet effort, et si tout cela peut être partagé et aider les autres, ce serait formidable.
Pour un point de départ sur les détails supplémentaires et les réalisations et les intentions futures de ce projet, veuillez consulter la section des sous-projets ci-dessous.
Veuillez reconnaître qu'en utilisant une partie de ce projet, vous le faites à vos propres risques. Il s'agit d'un effort d'ingénierie inverse et je ne prétends pas avoir une compréhension complète du matériel pour lequel je fournis un firmware personnalisé ou modifié. J'espère que les tests que je effectues avant de publier mes résultats et modifications empêcheront des dommages à votre contrôleur de vapeur ou à tout ce à quoi vous pourriez connecter votre contrôleur de vapeur (c'est-à-dire le commutateur Nintendo). Cependant, je ne peux pas garantir cela.
Veuillez également noter que cela est partagé principalement à des fins éducatives. Bien que cela puisse permettre à un utilisateur de faire des choses telles que d'utiliser le contrôleur Steam sur le commutateur Nintendo, veuillez reconnaître que cela va presque certainement venir avec des compromis par rapport au matériel et au firmware officiellement pris en charge. Si vous voulez un contrôleur de commutateur bon marché et que vous êtes correct, consultez ceux qui sont Powera ou Hori. Si vous voulez un contrôleur entièrement en vedette, envisagez de dépenser l'argent supplémentaire et obtenez un contrôleur professionnel (cela en vaut vraiment la peine).
Notez enfin que je dis tout cela dans l'espoir de ne décourager personne. Veuillez plonger et se salir les mains. Sachez simplement qu'il y a (espérons-le) très petit, mais non nul, une chance qu'une erreur puisse entraîner des bricks ou du matériel cassé.
Cette section donne de brefs contours et des démonstrations (le cas échéant) des efforts majeurs de ce projet. De plus amples détails sur chaque sous-projet peuvent être trouvés dans leurs répertoires respectifs.
Les travaux de ce répertoire visent à créer une construction de micrologiciel entièrement personnalisée pour le contrôleur de vapeur. Ce projet peut être configuré pour que le contrôleur agisse comme un système de développement qui permet d'interroger les périphériques et d'explorer ou de vérifier les comportements du système. De plus, le projet peut être configuré à des fins plus pratiques, comme se comporter comme un contrôleur de commutateur Nintendo câblé.
Vous trouverez ci-dessous quelques vidéos démontrant les différentes constructions de firmware:
Contrôleur à vapeur ouvert: commutateur Nintendo
Contrôleur à vapeur ouvert: carte de développement
Le travail de ce répertoire vise à créer un moyen convivial de personnaliser ce que les jingles sont joués lorsque le contrôleur de vapeur démarre et s'arrête.
Vous trouverez ci-dessous une vidéo montrant comment personnaliser les jingles sur le contrôleur de vapeur:
Contrôleur à vapeur ouvert: personnalisation de jingle
Le travail dans ce répertoire se concentre sur la déconstruire le firmware et le matériel du contrôleur Steam. La compréhension acquise de cela est souvent un
partie importante des autres sous-projets.
Steam offre la possibilité de modifier certaines options de configuration pour un contrôleur de vapeur (c'est-à-dire la luminosité de la LED de modification, le changement du jingle sera joué à partir de la mémoire du système). Ce répertoire contient du travail pour comprendre, reproduire et, peut-être, développer cette fonctionnalité.
Il s'agit d'un projet open source, veuillez donc en utiliser comme vous le souhaitez (tant qu'il ne viole aucune licence indiquée à l'intérieur).
Si vous souhaitez offrir des contributions à ce dépôt, ce serait formidable. Cela pourrait prendre la forme de problèmes / discussions sur la façon dont cela pourrait être plus convivial ou en ajoutant des fonctionnalités ou une prise en charge qui n'y sont pas encore.
Notez qu'il existe des documents TODO pour chaque sous-projet. L'idée est de décrire les objectifs que je voudrais atteindre. Si vous voulez aider avec l'un de ces éléments, ce serait génial. Ce serait encore plus génial si vous commenciez une conversation concernant vos intentions afin de limiter les chances d'effort dupliqué ou de designs incongru.
Je ferai de mon mieux pour fournir des logiciels faciles à utiliser et robustes. Cependant, il y aura encore des bogues. Si vous trouvez un bogue, veuillez le signaler.
La meilleure façon de signaler un bogue est d'utiliser l'onglet Problèmes sur GitHub.
Lorsque vous signalez un bogue / problème, assurez-vous de fournir des détails suffisants. Les détails clés à inclure sont:
Cette section répertorie certains projets qui ont influencé ce projet, ainsi que des liens vers certaines ressources qui pourraient continuer à être utiles pour rester à jour.
Bien que beaucoup ait été accompli dans ce projet jusqu'à présent, il y a encore tellement de choses à faire avec le contrôleur de vapeur (surtout compte tenu des bases qui ont été déposées jusqu'à présent). Afin de capturer et de suivre ces idées, des documents ont été faits pour chaque sous-projet. Un bon point de départ est le document TODO de niveau supérieur. Cela couvre les objectifs les plus élevés pour le projet tout en fournissant des liens vers des todos spécifiques à un sous-projet.