การเขียนโค้ด EEPROM ใหม่: รหัสผ่านและกลไก · ปัญหาที่พบบ่อยและวิธีแก้ไข · ทรานซีฟเวอร์ออปติคัลและสายเคเบิล · เอกสารประกอบ · CodingBox
CodingBox เอกสารประกอบ

การเขียนโค้ด EEPROM ใหม่: รหัสผ่านและกลไก

ข้อสรุปสำคัญจากการถกกันทางวิศวกรรมมาหลายปีคือ ความเข้ากันได้ของทรานซีฟเวอร์ไม่ใช่เรื่องเฟิร์มแวร์ แต่เป็นสตริงระบุตัวตนใน EEPROM ที่อ่านผ่าน I²C สวิตช์ปฏิเสธโมดูลเพียงเพราะจำสตริงของผู้ผลิตไม่ได้เท่านั้น ข้อเท็จจริงข้อเดียวนี้อธิบายแนวทางปฏิบัติทั่วไปที่ว่า “เขียนโค้ดทุกอย่างให้เป็น Cisco ก็ใช้ได้แทบทุกที่” และอธิบายตลาดเครื่องมือเขียนโค้ดทั้งตลาด

รหัสผ่านอยู่ที่ไหน

การเขียนลงพื้นที่ที่มีการป้องกันของหน่วยความจำโมดูลต้องป้อนรหัสผ่านขนาด 4 ไบต์ที่แอดเดรสคงที่ก่อนเขียน:

ชนิดโมดูลบล็อกหน่วยความจำออฟเซตรหัสผ่าน
SFP / SFP+A2h (แอดเดรส I²C 0x51)0x7B–0x7E
QSFP / XFPA0h0x7B

รหัสผ่านที่มักถูกอ้างถึง

รหัสผ่านหมายเหตุ
00 00 10 11ค่าเริ่มต้นของ MSA — สิ่งแรกที่ควรลอง
00 00 00 00, FF FF FF FFค่าเริ่มต้นที่พบบ่อย
9B B0 3D FAพบในโมดูลจำนวนหนึ่ง
4F 43 50 00ASCII “OCP”

โมดูล QSFP-DD ของบางผู้ผลิตมาพร้อมค่าเริ่มต้นตายตัวของตัวเอง และโมดูลที่ใช้ไมโครโปรเซสเซอร์บางตัวใช้รหัสผ่านแบบแปรผันที่เปลี่ยนไปเรื่อย ๆ ซึ่งเป็นกับดักสำหรับใครก็ตามที่พยายามไล่สุ่ม

เหตุใดการไล่สุ่มจึงไม่ใช่คำตอบ

รหัสผ่านระดับผู้ผลิตที่ปกป้องแผนผังหน่วยความจำทั้งหมด ใช้เวลาไล่สุ่มในระดับมากกว่า 100 วัน แม้แต่รหัสผ่านแบบ ASCII ระดับโฮสต์ก็ยังใช้เวลาสูงสุดประมาณสามวัน แนวทางที่ใช้ได้จริงคือฐานข้อมูลของรหัสและรหัสผ่านที่ทราบแล้วซึ่งเก็บมาจากโมดูลต้นฉบับ — ตรงนี้เองคือคุณค่าที่แท้จริงของเครื่องมือเขียนโค้ด ไม่ใช่ที่ฮาร์ดแวร์ I²C (ซึ่งเป็นเรื่องง่าย)

กับดักของเครื่องโปรแกรมแบบทำเอง

  • เครื่องโปรแกรม CH341A ราคาถูกไม่คำนวณเช็กซัมของ SFP การเขียนอิมเมจโดยไม่มี CC_BASE/CC_EXT ที่ถูกต้องจะได้โมดูลที่สวิตช์ปฏิเสธ คุณต้องใช้เครื่องมือที่คำนวณเช็กซัมใหม่ให้อัตโนมัติ
  • สวิตช์บางรุ่นเขียนได้เฉพาะที่แอดเดรส 0x50 ทำให้เข้าถึงรหัสผ่านที่ 0x51 จากตัวสวิตช์เองไม่ได้ — จำเป็นต้องมีบอร์ดโปรแกรมที่เหมาะสม
  • พินป้องกันการเขียนของ EEPROM — โรงงานบางแห่งต่อ WP เข้ากับ Vcc ทำให้โมดูลถูกล็อกไม่ให้เขียนได้ในสนาม

กรณีศึกษาจากภาคสนาม

  • โมดูลที่เขียนโค้ดเป็นผู้ผลิตรายหนึ่งไม่ยอมเจรจาอัตโนมัติบนสวิตช์ของอีกรายหนึ่ง เมื่อเขียนโค้ดใหม่ให้เป็นสตริงผู้ผลิตของสวิตช์เอง ลิงก์ก็ขึ้นทันที
  • ผู้ผลิตออปติกส์บางรายจงใจส่งมอบโมดูลที่ยังไม่ได้เขียนโค้ด โดยคาดหวังให้ผู้ซื้อเขียนโค้ดเองสำหรับแพลตฟอร์มเป้าหมาย
  • โมดูล DWDM ถูกปรับความยาวคลื่นผ่านอินเทอร์เฟซการจัดการเดียวกันกับที่ใช้เขียนโค้ด

ขั้นตอนใน CodingBox

  1. อ่านโมดูล ระบบจะบันทึกลงcode databaseให้อัตโนมัติ และสำรองข้อมูลไว้ก่อนการเขียนทุกครั้ง
  2. ตั้งค่าแอดเดรสตาราง, แอดเดรสรหัสผ่าน และค่ารหัสผ่านในหน่วยความจำที่มีการป้องกันและรหัสผ่าน — รหัสผ่านที่ทราบแล้วจากฐานข้อมูลจะถูกนำมาใช้ให้อัตโนมัติ
  3. แก้ไขผู้ผลิต, หมายเลขชิ้นส่วน และฟิลด์ข้อมูลระบุตัวตนอื่น ๆ ใน EEPROM editor ระบบจะคำนวณ CC_BASE และ CC_EXT ใหม่ให้
  4. เขียนเพจที่เลือกไว้ จากนั้นอ่านย้อนกลับมาเพื่อยืนยัน ตรวจสอบโมดูลบนสวิตช์ด้วยคำสั่งในการตรวจสอบยืนยันออปติก

เขียนโค้ดโมดูลเฉพาะเพื่อความเข้ากันได้ที่คุณมีสิทธิ์เท่านั้น และปฏิบัติตามนโยบายขององค์กรและของผู้ผลิต

กฎเบื้องหลังการเขียนโค้ดใหม่ให้สะอาด — รูปแบบฟิลด์ บิตใดที่ต้องตั้ง และผลรวมใดที่ต้องแก้ไข — อยู่ในฟิลด์ข้อมูลผู้ผลิต, รหัสความสอดคล้อง และเช็กซัม

สิ่งที่โรงงานทำในขั้นตอนเดียวกันนี้ และพื้นที่ใดเก็บข้อมูลการสอบเทียบที่การเขียนอย่างไม่ระมัดระวังอาจทำลายได้: การผลิตและการทดสอบ, คอนโทรลเลอร์และเฟิร์มแวร์

ไบต์ใดเก็บอะไรไว้ก่อนที่คุณจะแก้ไข: แผนผัง A0h ของ SFF-8472, เพจบนของ SFF-8636, เพจบนของ CMIS, XFP

หมายเลขชิ้นส่วนเป้าหมายและไวยากรณ์ของแต่ละผู้ผลิต: การกำหนดหมายเลขชิ้นส่วน สิ่งที่แพลตฟอร์มแต่ละคลาสตรวจสอบหลังการเขียน: วิธีที่ NOS แต่ละแบบตรวจสอบโมดูล


หากพบข้อมูลที่ไม่ถูกต้องหรือข้อผิดพลาดในบทความนี้ ให้เลือกข้อความส่วนนั้นแล้วกด Ctrl+Enter เพื่อ