ยินดีต้อนรับสู่โครงการ Open Steam Controller!
นี่คือโครงการที่ฉันทำงานเพื่อแยกชิ้นส่วนเอกสารเปลี่ยนตำแหน่งและขยายออกจากเฟิร์มแวร์และฮาร์ดแวร์คอนโทรลเลอร์ Steam
ประการแรกมันเป็นสิ่งสำคัญที่จะพูดคุยเล็กน้อยเกี่ยวกับตัวควบคุม Steam (ฮาร์ดแวร์ที่โครงการนี้มุ่งเน้นไปที่)

Steam Controller เป็นตัวควบคุมวิดีโอเกมที่ออกโดย Valve Corporation เมื่อวันที่ 10 พฤศจิกายน 2558 นี่เป็นส่วนหนึ่งของความคิดริเริ่มของ Valve เพื่อให้นักเล่นเกมพีซีมีประสบการณ์คล้ายคอนโซล (เช่นนักเล่นโซฟาที่อยู่ด้านหน้าทีวีและใช้คอนโทรลเลอร์แทนคีย์บอร์ดและเมาส์)

คอนโทรลเลอร์ Steam พยายามรักษาบางแง่มุมที่คุ้นเคยกับคอนโทรลเลอร์วิดีโอเกมที่ทันสมัย (เช่นแท่งอะนาล็อกซ้าย, ปุ่มใบหน้าสี่ปุ่ม, ปุ่มไหล่และกันชนสองปุ่ม) ในขณะเดียวกันก็เปลี่ยนบรรทัดฐานบางอย่างที่เราคาดหวัง

รายละเอียดเพิ่มเติมเกี่ยวกับคอนโทรลเลอร์สามารถพบได้ในหน้าผลิตภัณฑ์อย่างเป็นทางการ
คุณอาจสงสัยว่าทำไมโครงการนี้จึงมีอยู่และทำไมฉันถึงลงทุนเวลาและพลังงานของฉันในช่วงสองสามปีที่ผ่านมา
ก่อนอื่นฉันพบว่าการออกแบบของคอนโทรลเลอร์นี้น่าสนใจ การมีแทร็กแพดสองตัวแทน D-pad และแท่งอนาล็อกขวาเป็นความคิดที่น่าสนใจ แทร็คแพดสามารถกำหนดค่าให้ทำหน้าที่ได้หลายวิธีและไม่เพียง แต่เลียนแบบสิ่งที่พวกเขาแทนที่ แต่ยังให้กระบวนทัศน์การโต้ตอบใหม่ นอกจากนี้ความคิดในการใช้สัมผัสเพื่อเล่นกริ๊งเล็กน้อยเมื่อคอนโทรลเลอร์เริ่มต้นหรือปิดตัวลงเป็นสัมผัสที่เรียบร้อยซึ่งทำให้คอนโทรลเลอร์โดดเด่นยิ่งขึ้น ความสามารถในการปรับแต่ง jingles เหล่านี้ได้อย่างเต็มที่เป็นความปรารถนาใกล้ ๆ เมื่อฉันเริ่มใช้คอนโทรลเลอร์เป็นครั้งแรก
ประการที่สองคอนโทรลเลอร์ถูกทิ้งให้เข้าถึงได้ค่อนข้างพอสมควร ความสามารถในการอัปโหลดการอัปเดตเฟิร์มแวร์ทำให้เป็นอุปสรรคในการเข้าสู่เฟิร์มแวร์ที่กำหนดเองต่ำกว่ามาก ยังคงมีความท้าทายอย่างมากที่จะได้รับแม้แต่ "Hello World" (เช่นกระพริบปุ่ม LED ปุ่มไอน้ำ) อย่างไรก็ตามสิ่งนี้ไม่ได้ยากอย่างที่ฉันจินตนาการถึงการทำสิ่งที่คล้ายกันในคอนโทรลเลอร์ที่ออกแบบมาให้ทนต่ออารมณ์มากขึ้น ฉันซาบซึ้งกับความจริงที่ว่าวาล์วทิ้งฮาร์ดแวร์นี้ไปได้เหมือนที่พวกเขาทำและไม่กีดกันผู้คนจากการพยายามแฮ็ค
ประการที่สาม ifixit ทำน้ำตาที่ดีมากของคอนโทรลเลอร์ สิ่งนี้ทำให้ฉันมีความคิดเกี่ยวกับสิ่งที่ผู้ควบคุมเกิดขึ้นภายในโดยไม่จำเป็นต้องแยกฮาร์ดแวร์ของฉันออกจากกัน สิ่งนี้ชี้ให้เห็นว่าอุปกรณ์ต่อพ่วงและโปรเซสเซอร์ที่เป็นระเบียบจำนวนมากที่ฉันคิดว่าจะเป็นระเบียบที่จะทำงานด้วยโดยเฉพาะอย่างยิ่งในบริบทของผลิตภัณฑ์ที่ได้รับการออกแบบมาแล้วเพื่อวัตถุประสงค์เฉพาะ
ตอนนี้มีการอธิบายความสามารถของคอนโทรลเลอร์และความสามารถ (ค่าเริ่มต้น) แล้วเราสามารถเริ่มพูดคุยเกี่ยวกับโครงการนี้ได้ กล่าวคือฉันต้องการครอบคลุมสิ่งที่ประสบความสำเร็จและสิ่งที่ฉันหวังว่าจะก้าวไปข้างหน้า
หมายเหตุต่อไปนี้เป็นคำอธิบายและการเล่าเรื่อง มีเนื้อหาจำนวนมากในโครงการนี้และนี่คือความพยายามที่จะแยกรายละเอียดในแบบที่จะทำให้ง่ายต่อการติดตามที่ดินสำหรับผู้ที่เพิ่งเริ่มต้นความพยายามนี้ หากคุณเป็นคนประเภท TLDR ให้ตรวจสอบส่วนการแจ้งเตือนและคำเตือนด้านล่างจากนั้นอย่าลังเลที่จะกระโดดเข้าไปในส่วนโครงการย่อยเพื่อไปยังเนื้อของความพยายาม คุณควรตรวจสอบวิดีโอสาธิตที่แสดงความสำเร็จที่สำคัญบางอย่างในการดำเนินการ
ดังที่ได้กล่าวไว้ก่อนหน้านี้ความตั้งใจหลักของโครงการนี้คือการสำรวจแยกแยะและขยายตัวเลือกการกำหนดค่าและการใช้งานสำหรับคอนโทรลเลอร์ Steam อย่างไรก็ตามนั่นค่อนข้างคลุมเครือ เริ่มต้นด้วยตัวอย่างกันเถอะ ประการแรกเป้าหมายสำคัญของโครงการนี้คือการเขียนเฟิร์มแวร์ที่กำหนดเองสำหรับโปรเซสเซอร์หลักบนคอนโทรลเลอร์ นี่คือสิ่งที่เปิดประตูสำหรับความเป็นไปได้อื่น ๆ อีกมากมายที่ก้าวไปข้างหน้า
อย่างไรก็ตามก่อนที่ฉันจะเริ่มเขียนเฟิร์มแวร์ฉันต้องการข้อมูลเพิ่มเติมเกี่ยวกับคอนโทรลเลอร์ วาล์วดีพอที่จะเปิดประตูเพื่อเข้าถึงเฟิร์มแวร์รุ่นไบนารีและความสามารถในการอัปเดตโปรเซสเซอร์หลักได้อย่างง่ายดาย อย่างไรก็ตามพวกเขาไม่ได้ให้แผนผังหรือรายการส่วนประกอบหรือแผ่นข้อมูลที่วิศวกรซอฟต์แวร์ฝังตัวมักจะมีหากได้รับมอบหมายให้ทำงานกับกระบวนการเขียนเฟิร์มแวร์ที่กำหนดเอง ดังนั้นฉันต้องหันไปหาวิศวกรรมย้อนกลับ สิ่งนี้จะเดือดลงไปเพื่อแยกชิ้นส่วนฮาร์ดแวร์และเฟิร์มแวร์อย่างเป็นทางการเพื่อให้ฉันสามารถเข้าใจวิธีการเขียนเฟิร์มแวร์ของตัวเอง เมื่อมาถึงจุดนี้ความพยายามด้านวิศวกรรมย้อนกลับได้ดำเนินการเป็นส่วนใหญ่เนื่องจากมีการค้นพบเอกสารและใช้ประโยชน์มากมายสำหรับความพยายามอื่น ๆ รายละเอียดเกี่ยวกับความพยายามด้านวิศวกรรมย้อนกลับสามารถพบได้ในโครงการย่อยวิศวกรรมย้อนกลับ
ตอนนี้มีการสร้างความพยายามด้านวิศวกรรมย้อนกลับและฉันได้เริ่มรวบรวมข้อมูลเกี่ยวกับฮาร์ดแวร์ฉันสามารถเริ่มเขียนเฟิร์มแวร์ที่กำหนดเองได้ ตรวจสอบโครงการย่อยเฟิร์มแวร์เพื่อดูสถานะปัจจุบันของซอฟต์แวร์ ส่วนใหญ่นี่คือซอฟต์แวร์ยูทิลิตี้เพื่อให้ผู้ใช้สามารถสอบถามอุปกรณ์ต่อพ่วงที่แตกต่างกันหรือทำการวัดในรัฐต่าง ๆ (เนื่องจากข้อมูลบางอย่างที่จำเป็นต้องจับและป้อนกลับเข้าไปในกระบวนการวิศวกรรมย้อนกลับเพื่อให้มันก้าวไปข้างหน้า) อย่างไรก็ตามในที่สุดก็เห็นได้ชัดว่ามีฟังก์ชั่นเพียงพอที่ถูกจับที่นี่ว่ามันจะไม่ทำงานเพิ่มเติมมากเกินไปที่จะทำให้ฮาร์ดแวร์นี้ทำหน้าที่เป็นตัวควบคุมสำหรับคอนโซลอื่น ๆ (เช่นสวิตช์ Nintendo)
ต่อไปเรามาถึงสิ่งที่เป็นความตั้งใจเพียงอย่างเดียวของโครงการนี้ นั่นคือเป้าหมายของความสามารถในการควบคุมเพลง (jingles) ที่ตัวควบคุม Steam เล่นได้อย่างเต็มที่ เนื่องจากการค้นพบบางอย่างผ่านความพยายามด้านวิศวกรรมย้อนกลับโครงการนี้ช่วยให้ Jingles ได้รับการปรับแต่งอย่างเต็มที่และสำหรับการปรับแต่งเหล่านี้จะยังคงอยู่ในขณะที่ยังคงใช้เฟิร์มแวร์อย่างเป็นทางการของ Valve สำหรับรายละเอียดเกี่ยวกับวิธีการปรับแต่ง jingles บนคอนโทรลเลอร์ของคุณหรือสำหรับรายละเอียดเพิ่มเติม (เช่นวิธีการจัดรูปแบบข้อมูล jingle และวิธีที่เราสามารถปรับแต่ง jingles โดยไม่ต้องปรับเปลี่ยนเฟิร์มแวร์อย่างเป็นทางการ) ดูโครงการย่อย jingles
ในที่สุดมันเป็นสิ่งสำคัญที่จะกล่าวถึงว่าความตั้งใจอื่นของโครงการนี้คือการที่จะเป็นทรัพยากรการศึกษาและ/หรือแรงบันดาลใจ บางทีคุณอาจสนใจตัวควบคุมไอน้ำ หรือบางทีคุณอาจสนใจที่จะเขียนซอฟต์แวร์ฝังตัวสำหรับอุปกรณ์เชิงพาณิชย์ ไม่ว่าจะด้วยวิธีใดความหวังสำหรับโครงการนี้เพื่อให้ข้อมูลที่ชัดเจนและรัดกุมเพื่อสร้างแรงบันดาลใจและทำให้ผู้คนสามารถเรียนรู้และทำมากขึ้น ฉันรู้ว่าฉันได้เรียนรู้มากมายจากความพยายามนี้และหากมีสิ่งใดที่สามารถแบ่งปันและช่วยเหลือผู้อื่นที่จะดี
สำหรับจุดเริ่มต้นในรายละเอียดเพิ่มเติมและความสำเร็จและความตั้งใจในอนาคตของโครงการนี้โปรดดูส่วนย่อยโครงการด้านล่าง
โปรดรับรู้ว่าการใช้ส่วนใดส่วนหนึ่งของโครงการนี้คุณกำลังทำเช่นนั้นด้วยความเสี่ยงของคุณเอง นี่เป็นความพยายามด้านวิศวกรรมย้อนกลับและฉันไม่ได้อ้างว่ามีความเข้าใจอย่างถ่องแท้เกี่ยวกับฮาร์ดแวร์ที่ฉันให้บริการเฟิร์มแวร์แบบกำหนดเองหรือปรับเปลี่ยนสำหรับ หวังว่าการทดสอบที่ฉันดำเนินการก่อนที่จะเผยแพร่สิ่งที่ค้นพบและการดัดแปลงจะป้องกันความเสียหายต่อคอนโทรลเลอร์ไอน้ำของคุณหรืออะไรก็ตามที่คุณอาจเชื่อมต่อคอนโทรลเลอร์ไอน้ำของคุณเข้ากับ (เช่นสวิตช์ Nintendo) อย่างไรก็ตามฉันไม่สามารถรับประกันได้ว่า
นอกจากนี้โปรดทราบว่าสิ่งนี้จะถูกแบ่งปันเพื่อวัตถุประสงค์ทางการศึกษาเป็นหลัก ในขณะที่สิ่งนี้อาจอนุญาตให้ผู้ใช้ทำสิ่งต่าง ๆ เช่นใช้ตัวควบคุม Steam บนสวิตช์ Nintendo โปรดรับรู้ว่าสิ่งนี้เกือบจะแน่นอนว่าจะมาพร้อมกับการแลกเปลี่ยนเมื่อเทียบกับฮาร์ดแวร์และเฟิร์มแวร์ที่สนับสนุนอย่างเป็นทางการ หากคุณต้องการคอนโทรลเลอร์สวิตช์ราคาถูกและตกลงเมื่อมีสายให้ลองดูที่ Powera หรือ Hori ทำ หากคุณต้องการคอนโทรลเลอร์ที่โดดเด่นให้พิจารณาใช้เงินพิเศษและรับ Pro Controller (มันคุ้มค่าจริงๆ)
ในที่สุดโปรดทราบว่าฉันพูดทั้งหมดนี้ด้วยความหวังว่าจะไม่ท้อใจใคร กรุณาดำน้ำและทำให้มือของคุณสกปรก เพียงโปรดทราบว่ามี (หวังว่า) เล็กมาก แต่ไม่ใช่ศูนย์โอกาสที่ความผิดพลาดอาจนำไปสู่ฮาร์ดแวร์อิฐหรือแตก
ส่วนนี้ให้โครงร่างและการสาธิตสั้น ๆ (ถ้ามี) ของความพยายามที่สำคัญของโครงการนี้ รายละเอียดเพิ่มเติมเกี่ยวกับโครงการย่อยแต่ละโครงการสามารถพบได้ในไดเรกทอรีที่เกี่ยวข้อง
งานในไดเรกทอรีนี้มุ่งเน้นไปที่การสร้างการสร้างเฟิร์มแวร์ที่กำหนดเองอย่างสมบูรณ์สำหรับคอนโทรลเลอร์ Steam โครงการนี้สามารถกำหนดค่าให้คอนโทรลเลอร์ทำหน้าที่เป็นระบบการพัฒนาที่ช่วยให้สามารถสอบถามอุปกรณ์ต่อพ่วงและสำรวจหรือตรวจสอบพฤติกรรมของระบบ นอกจากนี้โครงการสามารถกำหนดค่าเพื่อวัตถุประสงค์ในทางปฏิบัติมากขึ้นเช่นการทำงานเหมือนคอนโทรลเลอร์สวิตช์ Nintendo แบบมีสาย
ด้านล่างนี้เป็นวิดีโอบางส่วนที่แสดงให้เห็นถึงการสร้างเฟิร์มแวร์ที่แตกต่างกัน:
Open Steam Controller: Nintendo Switch
Open Steam Controller: คณะกรรมการพัฒนา
งานในไดเรกทอรีนี้มุ่งเน้นไปที่การสร้างวิธีที่เป็นมิตรกับผู้ใช้ในการปรับแต่งสิ่งที่ jingles เล่นเมื่อคอนโทรลเลอร์ Steam เริ่มต้นและปิดตัวลง
ด้านล่างนี้เป็นวิดีโอที่สาธิตวิธีการปรับแต่ง jingles บนคอนโทรลเลอร์ Steam:
Open Steam Controller: การปรับแต่งกริ๊ง
งานในไดเรกทอรีนี้มุ่งเน้นไปที่การแยกส่วนเฟิร์มแวร์และฮาร์ดแวร์ของคอนโทรลเลอร์ Steam ความเข้าใจที่ได้รับจากสิ่งนี้บ่อยครั้งคือ
ส่วนสำคัญของโครงการย่อยอื่น ๆ
Steam เสนอความสามารถในการเปลี่ยนตัวเลือกการกำหนดค่าบางอย่างสำหรับตัวควบคุม Steam (เช่นการเปลี่ยนแปลงความสว่างของ LED การเปลี่ยนแปลงซึ่งกริ๊งจะเล่นจากหน่วยความจำระบบ) ไดเรกทอรีนี้มีงานเพื่อทำความเข้าใจทำซ้ำและอาจขยายฟังก์ชั่นนี้
นี่เป็นโครงการโอเพ่นซอร์สดังนั้นโปรดใช้ประโยชน์จากสิ่งนี้ตามที่คุณต้องการ (ตราบใดที่มันไม่ได้ละเมิดใบอนุญาตใด ๆ ที่ระบุไว้ภายใน)
หากคุณต้องการเสนอการบริจาคกลับไปที่ repo นี้ที่จะดี ที่อาจเกิดขึ้นในรูปแบบของปัญหา/การอภิปรายเกี่ยวกับวิธีการใช้งานที่เป็นมิตรกับผู้ใช้มากขึ้นหรือโดยการเพิ่มคุณสมบัติหรือการสนับสนุนที่ยังไม่ได้อยู่ที่นั่น
โปรดทราบว่ามีเอกสารสิ่งที่ต้องทำสำหรับแต่ละโครงการย่อย ความคิดคือการร่างเป้าหมายที่ฉันต้องการบรรลุ หากคุณต้องการช่วยเหลือสิ่งเหล่านี้ที่น่ากลัว มันจะยอดเยี่ยมมากขึ้นถ้าคุณเริ่มการสนทนาเกี่ยวกับความตั้งใจของคุณเพื่อ จำกัด โอกาสในการทำซ้ำหรือการออกแบบที่ไม่เข้ากัน
ฉันจะพยายามอย่างเต็มที่เพื่อให้ซอฟต์แวร์ที่ใช้งานง่ายและมีประสิทธิภาพ อย่างไรก็ตามยังคงมีข้อบกพร่องมากที่สุด หากคุณพบข้อผิดพลาดโปรดรายงาน
วิธีที่ดีที่สุดในการรายงานข้อผิดพลาดคือการใช้แท็บปัญหาบน GitHub
เมื่อรายงานข้อผิดพลาด/ปัญหาโปรดตรวจสอบให้แน่ใจว่าได้ให้รายละเอียดที่เพียงพอ รายละเอียดสำคัญที่จะรวมคือ:
ส่วนนี้แสดงรายการบางโครงการที่มีอิทธิพลต่อโครงการนี้รวมถึงลิงก์ไปยังทรัพยากรบางอย่างที่อาจเป็นประโยชน์ต่อไปในการรักษาปัจจุบัน
ในขณะที่โครงการนี้ประสบความสำเร็จมากมาย แต่ก็ยังมีอีกมากที่สามารถทำได้กับตัวควบคุมไอน้ำ เพื่อที่จะจับภาพและติดตามความคิดเหล่านี้เอกสารสิ่งที่ต้องทำสำหรับแต่ละโครงการย่อย จุดเริ่มต้นที่ดีคือเอกสารสิ่งที่ต้องทำระดับบนสุด สิ่งนี้ครอบคลุมเป้าหมายระดับสูงสุดสำหรับโครงการในขณะที่ให้ลิงก์ไปยังโครงการย่อยเฉพาะ Todos