Open Steam Controller 프로젝트에 오신 것을 환영합니다!
이 프로젝트는 스팀 컨트롤러 펌웨어 및 하드웨어를 해체, 문서화, 용도 대상 및 확장하기 위해 노력하고있는 프로젝트입니다.
첫째, Steam Controller (이 프로젝트가 중점을 둔 하드웨어)에 대해 조금 이야기하는 것이 중요합니다.

Steam Controller는 2015 년 11 월 10 일 Valve Corporation에서 발표 한 비디오 게임 컨트롤러입니다. 이것은 PC 게이머에게 콘솔과 같은 경험을 제공하기위한 Valve의 이니셔티브의 일부였습니다 (즉, TV 앞에 앉아 키보드 및 마우스 대신 컨트롤러를 사용하는 소파 게이머).

Steam Controller는 현대 비디오 게임 컨트롤러 (예 : 왼쪽 아날로그 스틱, 4 개의 얼굴 버튼, 2 개의 어깨 및 범퍼 버튼)에 익숙한 일부 측면을 유지하려고 노력했으며, 우리가 기대할 수있는 몇 가지 규범을 변경했습니다 (예 : 방향 패드 및 오른쪽 아날로그 스틱을 트랙 패드로 교체).

컨트롤러에 대한 자세한 내용은 공식 제품 페이지에서 확인할 수 있습니다.
이 프로젝트가 왜 존재하는지, 왜 지난 몇 년 동안 내 시간과 에너지를 무시할 수없는 시간과 에너지를 투자했는지 궁금 할 것입니다.
먼저이 컨트롤러의 디자인이 설득력이 있음을 알았습니다. D-PAD 및 오른쪽 아날로그 스틱 대신 2 개의 트랙 패드를 갖는 것은 흥미로운 아이디어입니다. 트랙 패드는 다양한 방식으로 행동하도록 구성 할 수 있으며 교체 한 내용을 모방 할뿐만 아니라 새로운 상호 작용 패러다임도 제공 할 수 있습니다. 또한 컨트롤러가 시작되거나 종료 될 때 값이 약간 징글을 재생하는 아이디어는 컨트롤러를 더욱 두드러지게하는 깔끔한 터치입니다. 이 징글을 완전히 사용자 정의 할 수 있다는 것은 컨트롤러를 처음 사용하기 시작했을 때 거의 즉각적인 욕망이었습니다.
둘째, 컨트롤러는 상당히 액세스 할 수있었습니다. 펌웨어 업데이트를 수동으로 업로드 할 수있게되면 사용자 정의 펌웨어를 실행하기위한 입력 장벽이 훨씬 낮아졌습니다. "Hello World"(예 : Steam Button LED를 깜박임) 작업을 수행하는 데 여전히 상당한 도전이있었습니다. 그러나 이것은 더욱 성질로 설계된 컨트롤러에서 비슷한 일을하는 것만 큼 힘들지 않았습니다. 밸브 가이 하드웨어가 접근 가능한 것처럼이 하드웨어를 남겨두고 사람들이 해킹하려고하지 않는다는 사실에 정말 감사합니다.
셋째, IFIXIT는 컨트롤러를 정말 멋진 분해했습니다. 이것은 컨트롤러가 내 하드웨어를 분해하지 않고 내부적으로 어떤 일을했는지에 대한 아이디어를 주었다. 이것은 특히 특정 목적을 위해 이미 설계된 제품의 맥락에서 함께 작업하기에 깔끔한 깔끔한 주변 장치와 프로세서를 지적했습니다.
이제 컨트롤러와 그 (기본) 기능 중 일부가 설명 되었으므로이 프로젝트에 대해 이야기 할 수 있습니다. 즉, 성취 된 것을 다루고 싶습니다.
다음은 약간의 장점과 이야기입니다. 이 프로젝트에는 많은 내용이 있으며 이것은이 노력에 새로운 사람들을 위해 땅을 쉽게 따라갈 수있는 방식으로 세부 사항을 세분화하려는 시도입니다. TLDR 종류의 사람이라면 아래의 통지 및 경고 섹션을 확인한 다음 하위 프로젝트 섹션으로 뛰어 들어 노력의 고기에 도달하십시오. 또한 중요한 성과 중 일부를 보여주는 데모 비디오를 확인해야합니다.
앞에서 언급 했듯이이 프로젝트의 주요 의도는 증기 컨트롤러의 구성 옵션 및 사용법을 탐색, 해체 및 확장하는 것입니다. 그러나 그것은 약간 모호합니다. 그래서 몇 가지 예부터 시작하겠습니다. 첫째,이 프로젝트의 주요 목표는 컨트롤러의 기본 프로세서에 맞춤 펌웨어를 작성할 수 있다는 것이 었습니다. 이것이 다른 많은 가능성이 앞으로 나아가는 문을 열어줍니다.
그러나 펌웨어를 작성하기 전에 컨트롤러에 대한 추가 정보가 필요했습니다. 밸브는 펌웨어의 이진 버전에 액세스하고 기본 프로세서를 쉽게 업데이트 할 수 있도록 도어를 열어두기에 충분했습니다. 그러나 내장 된 소프트웨어 엔지니어가 일반적으로 사용자 정의 펌웨어를 작성하는 프로세스를 작성하는 경우 구성 요소 또는 데이터 시트 목록을 제공하지 않았습니다. 따라서 리버스 엔지니어링으로 전환해야했습니다. 이것은 본질적으로 하드웨어와 공식 펌웨어를 해체하여 내 펌웨어를 작성하는 방법을 이해할 수 있도록 요약됩니다. 이 시점에서 리버스 엔지니어링 노력은 다른 노력을 위해 많은 것을 발견, 문서화 및 활용함에 따라 대부분 과정을 실행했습니다. 리버스 엔지니어링 노력에 대한 자세한 내용은 리버스 엔지니어링 하위 프로젝트에서 찾을 수 있습니다.
역 엔지니어링 노력이 확립되어 하드웨어에 대한 정보를 수집하기 시작 했으므로 사용자 정의 펌웨어를 작성하기 시작했습니다. 현재 소프트웨어 상태를 확인하려면 펌웨어 하위 프로젝트를 확인하십시오. 대부분 이것은 사용자가 다른 주변 장치를 쿼리하거나 다른 상태에서 측정 할 수 있도록 유틸리티 소프트웨어입니다 (일부 정보 중 일부를 캡처하고 리버스 엔지니어링 프로세스로 공급되어야하기 때문에 앞으로 나아가는 데 필요한 정보가 필요함). 그러나 결국이 하드웨어가 다른 콘솔의 컨트롤러 역할을하기에 너무 많은 추가 작업이 아니라는 것이 충분한 기능이 있음이 분명해졌습니다 (즉, Nintendo Switch).
다음으로 우리는 원래이 프로젝트의 유일한 의도에 도달했습니다. 즉, Steam Controller가 (트랙 패드 햅틱을 통해) Power Up에서 재생하는 노래 (Jingles)를 완전히 제어 할 수 있다는 목표입니다. 리버스 엔지니어링 노력을 통한 일부 발견으로 인해이 프로젝트를 통해 Jingles가 완전히 사용자 정의 할 수 있으며 Valve의 공식 펌웨어를 계속 실행하면서 이러한 사용자 정의가 지속될 수 있습니다. 컨트롤러에서 Jingles를 사용자 정의하는 방법에 대한 자세한 내용 또는 자세한 내용은 (예 : Jingle Data가 형식화되는지 및 공식 펌웨어를 수정하지 않고 Jingles를 사용자 정의하는 방법) Jingles 하위 프로젝트를 참조하십시오.
마지막으로,이 프로젝트의 또 다른 의도는 교육 및/또는 동기 부여 자원이되는 것입니다. 증기 컨트롤러에 관심이있을 수도 있습니다. 또는 상용 장치 용 임베디드 소프트웨어를 작성하는 데 관심이있을 수도 있습니다. 어느 쪽이든,이 프로젝트는 사람들이 더 많은 것을 배우고 더 많은 일을 할 수 있도록 명확하고 간결한 정보를 제공하기위한 희망입니다. 나는이 노력으로 많은 것을 배웠다는 것을 알고 있으며, 그 중 어느 것이라면 공유하고 다른 사람들을 도울 수 있다면 큰 일이 될 것입니다.
이 프로젝트의 추가 세부 사항 및 성취 및 향후 의도에 대한 시작점은 아래 하위 프로젝트 섹션을 참조하십시오.
이 프로젝트의 일부를 사용하여 자신의 위험에 처하게된다는 것을 인식하십시오. 이것은 역 엔지니어링 노력이며, 나는 맞춤형 또는 수정 된 펌웨어를 제공하는 하드웨어를 완전히 이해한다고 주장하지 않습니다. 결과와 수정을 게시하기 전에 수행하는 테스트가 스팀 컨트롤러 또는 스팀 컨트롤러를 연결할 수있는 모든 내용 (예 : Nintendo Switch)의 손상을 방지하기를 바랍니다. 그러나 나는 그것을 보장 할 수 없습니다.
또한 이것은 주로 교육 목적으로 공유되고 있습니다. 이를 통해 사용자는 Nintendo Switch에서 Steam Controller를 사용하는 것과 같은 작업을 수행 할 수 있지만 공식적으로 지원되는 하드웨어 및 펌웨어와 비교 하여이 트레이드 오프가 거의 나올 것임을 인식하십시오. 저렴한 스위치 컨트롤러를 원하고 유선이 잘되면 Powera 또는 Hori가 만든 것을 확인하십시오. 완전히 추천 컨트롤러를 원한다면 여분의 돈을 쓰고 프로 컨트롤러를 얻는 것을 고려하십시오 (실제로 그만한 가치가 있습니다).
마지막으로 나는 누군가를 낙담시키지 않기를 희망 하면서이 모든 것을 말합니다. 다이빙을하고 손을 더럽 힙니다. (희망적으로) 매우 작지만 0이 아닌 실수로 인해 벽돌이나 부러진 하드웨어가 발생할 수 있습니다.
이 섹션에서는이 프로젝트의 주요 노력에 대한 간단한 개요 및 시연 (해당되는 경우)을 제공합니다. 각 하위 프로젝트에 대한 자세한 내용은 해당 디렉토리에서 찾을 수 있습니다.
이 디렉토리의 작업은 Steam 컨트롤러를위한 완전히 맞춤형 펌웨어 빌드를 작성하기위한 것입니다. 이 프로젝트는 컨트롤러가 주변 장치를 쿼리하고 시스템 동작을 탐색하거나 검증 할 수있는 개발 시스템 역할을하도록 구성 할 수 있습니다. 또한 프로젝트는 유선 Nintendo Switch 컨트롤러처럼 행동하는 것과 같은보다 실용적인 목적으로 구성 할 수 있습니다.
다음은 다양한 펌웨어 빌드를 보여주는 일부 비디오입니다.
증기 컨트롤러 개방 : Nintendo Switch
오픈 스팀 컨트롤러 : 개발 보드
이 디렉토리의 작업은 스팀 컨트롤러가 시작되어 종료 될 때 Jingles가 재생되는 것을 사용자 정의하는 사용자 친화적 인 방법을 만드는 데 중점을두고 있습니다.
아래는 스팀 컨트롤러에서 Jingles를 사용자 정의하는 방법을 보여주는 비디오입니다.
오픈 스팀 컨트롤러 : 징글 사용자 정의
이 디렉토리의 작업은 Steam Controller의 펌웨어 및 하드웨어를 해체하는 데 중점을 둡니다. 이것으로부터 얻은 이해는 종종입니다
다른 하위 프로젝트의 중요한 부분.
Steam은 Steam 컨트롤러에 대한 특정 구성 옵션을 변경할 수있는 기능을 제공합니다 (즉, LED 밝기 변경, 시스템 메모리에서 징글이 재생되는 변경). 이 디렉토리에는이 기능을 이해, 재생산 및 확장하기위한 작업이 포함되어 있습니다.
이것은 오픈 소스 프로젝트이므로,이를 사용하십시오 (내에서 명시된 라이센스를 위반하지 않는 한).
이 저장소에 다시 기부금을 제공하고 싶다면 좋을 것입니다. 이는 이것이 사용자 친화적 일 수있는 방법이나 아직없는 기능이나 지원을 추가함으로써 문제/토론의 형태로 올 수 있습니다.
각 하위 프로젝트에 대한 TODO 문서가 있습니다. 아이디어는 내가 달성하고자하는 목표를 요약하는 것입니다. 당신이 이것들을 돕고 싶다면, 그것은 굉장 할 것입니다. 복제 된 노력이나 부적절한 디자인의 가능성을 제한하기 위해 의도에 관한 대화를 시작하면 더욱 대단할 것입니다.
사용하기 쉽고 강력한 소프트웨어를 제공하기 위해 최선을 다하겠습니다. 그러나 여전히 버그가있을 가능성이 높습니다. 버그를 찾으면보고하십시오.
버그를보고하는 가장 좋은 방법은 Github에서 문제 탭을 사용하는 것입니다.
버그/문제를보고 할 때 충분한 세부 정보를 제공하십시오. 포함 할 주요 세부 사항은 다음과 같습니다.
이 섹션에는이 프로젝트에 영향을 미치는 일부 프로젝트와 현재 상태를 유지하는 데 계속 도움이 될 수있는 일부 리소스에 대한 링크가 나와 있습니다.
지금 까지이 프로젝트에서 많은 부분이 달성되었지만 Steam Controller (특히이 시점까지 배치 된 토대가 주어지면)로 수행 할 수있는 많은 일이 있습니다. 이러한 아이디어를 캡처하고 추적하기 위해 각 하위 프로젝트마다 TODO 문서가 작성되었습니다. 시작하기에 좋은 곳은 최상위 TODO 문서입니다. 이는 프로젝트의 최고 수준 목표를 다루면서 특정 TODO를 하위 프로젝트에 대한 링크를 제공합니다.