บันทึก · สร้างอย่างเปิดเผย

พอร์ต USB-C มีจำนวนขาไม่พอ

The PHYLAX prototype in its white case, connected over USB-C and asking for a PIN on a scrambled keypad
เสียบได้ทั้งสองด้าน และขึ้นหน้าจอถามรหัส PIN — ลำดับปุ่มตัวเลขถูกสลับโดยตั้งใจ

ใน อัปเดต 13 เรารายงานว่าตัวเครื่องคุยผ่าน USB ได้เมื่อเสียบสายด้านหนึ่ง แต่พลิกอีกด้านกลับไม่ได้ และเดาว่าน่าจะเป็นที่หัวพอร์ต ปรากฏว่าใช่จริง ๆ ชิ้นส่วนที่เราเลือกมามีจำนวนขาไม่พอ

กระเป๋าฮาร์ดแวร์ที่เชื่อมต่อผ่านสายอย่างเดียวมีช่องทางติดต่อกับโลกภายนอกเพียงช่องเดียว ไม่มีบลูทูธให้ถอย ไม่มี Wi-Fi ไม่มีช่องเสียบการ์ด พอร์ต USB-C จึงไม่ใช่ฟีเจอร์หนึ่งในหลาย ๆ อย่าง แต่คือพื้นผิวทั้งหมดที่ใช้เข้าถึงตัวเครื่องได้เลย

เก้าขาไม่พอ

หัว USB-C เสียบกลับด้านได้เพราะตัวรับสัญญาณออกแบบมาให้สมมาตร สัญญาณสำคัญจะปรากฏสองครั้ง ด้านละหนึ่งชุด ไม่ว่าจะเสียบด้านไหนบอร์ดก็ยังเจอมัน และนั่นรวมถึงคู่สายข้อมูลด้วย ตัวรับแบบเต็มจะมีคู่ D+/D− สองคู่ และบอร์ดควรเชื่อมสองคู่นั้นเข้าด้วยกัน เพื่อที่จะไม่ต้องสนใจว่าสายไปลงคู่ไหน

หัว USB-C แบบตัดทอนมีขายโดยลดจำนวนขาลง และขาที่ถูกตัดออกก็คือขาที่ซ้ำกันนั่นเอง ชิ้นส่วนแบบ 9 ขา ที่เราใส่ไว้ให้มาแค่ไฟเลี้ยง กราวด์ ขา configuration สองขา และคู่สายข้อมูลเพียงคู่เดียว ถ้าเสียบด้านที่ตรงกับคู่นั้นทุกอย่างก็ทำงาน พอพลิกกลับด้าน สายข้อมูลก็ไปจ่อกับหน้าสัมผัสที่ไม่เคยมีอยู่จริง นั่นคือบั๊กทั้งหมด — ไม่ใช่เรื่องความสมบูรณ์ของสัญญาณ ไม่ใช่เฟิร์มแวร์ ไม่ใช่ controller ที่เราย้ายไปในอัปเดต 12 แต่เป็นโลหะที่หายไป

เราจึงเปลี่ยนหัวพอร์ต

ตอนนี้บอร์ดใช้หัว USB-C แบบ 16 ขา ซึ่งให้คู่สายข้อมูลมาครบทั้งสองคู่ และเราเชื่อมสองคู่นั้นเข้าด้วยกันบนแผ่นวงจร ไม่ว่าจะเสียบด้านไหนก็ไปลงคู่ที่ต่ออยู่จริง ฟุตพรินต์ใหญ่ขึ้นนิดหน่อยและราคาแพงขึ้นเล็กน้อย ซึ่งทั้งสองอย่างไม่ใช่เรื่องที่ควรมาเถียงกัน สำหรับอุปกรณ์ที่มีพอร์ตเดียวและพอร์ตนั้นต้องทำงานได้ทุกครั้ง

ตอนนี้มันถามรหัส PIN แล้ว

เมื่อการเชื่อมต่อทำงานได้ทั้งสองด้าน ตัวเครื่องก็เดินเข้าไปในเฟิร์มแวร์ของตัวเองได้ไกลพอที่จะแสดงหน้าจอจริง ภาพด้านบนคือต้นแบบในเคสที่กำลังถามรหัส PIN ลองดูที่แป้นตัวเลข — ตัวเลขไม่ได้เรียงตามลำดับปกติ มันจะถูกสลับใหม่ทุกครั้งที่ถาม คนที่แอบมองนิ้วคุณ หรือมาอ่านรอยสึกบนปุ่มทีหลัง จะได้รู้แค่รูปแบบการขยับมือ แต่ไม่ได้รู้รหัสของคุณ

ทำไมพอร์ตเดียวจึงต้องสมบูรณ์แบบ

การเลือกใช้สายอย่างเดียวช่วยตัดพื้นที่โจมตีออกไปมาก และถ้าเลือกใหม่เราก็จะเลือกแบบเดิม แต่สิ่งที่มันไม่ได้ตัดออกไปคือผลที่ตามมา: เมื่อคอนเนกเตอร์เพียงตัวเดียวผิด อุปกรณ์ไม่ได้แค่ด้อยลงบางส่วน แต่เข้าถึงไม่ได้เลย ชิ้นส่วนแบบ 9 ขาที่ทำงานได้ด้านเดียวคือความผิดพลาดประเภทที่รอดจากการทดสอบเร็ว ๆ บนโต๊ะได้สบาย เพราะคนแรกที่เสียบมีโอกาสครึ่งหนึ่งที่จะไม่เจอปัญหาเลย นั่นคือเหตุผลของหัวแบบ 16 ขาที่แพงกว่า สรุปในประโยคเดียว — บนกระเป๋าฮาร์ดแวร์ที่มีประตูบานเดียว ประตูบานนั้นต้องใช้ได้ทุกครั้ง ทั้งสองด้าน ไปอีกหลายปี

สามอัปเดตก่อนหน้านี้ เรื่องที่ต้องพูดตรง ๆ คือ USB ใช้ไม่ได้ ตอนนี้มันใช้ได้แล้ว ทั้งสองด้าน ไปจนถึงหน้าจอที่ถามรหัส PIN — และต้นเหตุกลับเป็นชิ้นส่วนที่ดูไม่หวือหวาที่สุดในรายการวัสดุ ซึ่งมันก็มักจะเป็นแบบนี้แหละ

← อัปเดตทั้งหมด ติดตามข่าว