มี CMU เครื่องหนึ่ง, บูทไม่ติด, จอไม่ขึ้น, ไม่มีข้อความบน serial console, เป็นเพราะลบระบบปฏิบัติการทั้งพาร์ติชั่น(NAND chip) เหตุการณ์นี้เป็นปัญหาซอฟท์แวร์หนักสุดที่เคยเจอ บทความนี้มีวิธีกู้ระบบ

วิธีต่อไปนี้เป็นประโยชน์สำหรับผู้ที่รู้วิธี flash SPI V55-56 แต่เกิดปัญหาแฟลทไปแล้วบูทไม่ขึ้น แฟลทแล้วเครื่อง reboot loop กับ V59+ (V59 –  V70)

สรุปปัญหา

  1. ก่อนเครื่องพัง cmu มีเฟิร์มแวร์ V59  ลบระบบปฏิบัติลินุกซ์ ทำให้บูทเครื่องไม่ขึ้น มีข้อความ serial บอกว่าระบบปฏิบัติการบูทไม่ผ่าน แต่ไม่มีข้อความบนหน้าจอ แต่เมื่อใช้วิธี Nuclear Reset ทำให้จอดับ ไม่มีข้อความบน Serial
  2. แก้ไข SPI flash rom ที่ partition boot-select เป็น 0x0 ทั้งหมด แต่เมื่อเข้า fail-safe ได้เครื่อง reboot ใน 45วินาที ( *พบภายหลัง เป็นเพราะใช้ SPI ROM V55)

สรุปวิธีแก้ปัญหา

แก้ปัญหาได้ด้วยใช้ Fail-safe V59+ จะทำให้ติดตั้งเฟิร์มแวร์ได้ปกติ และไม่เกิด Reboot ทุก 45วินาที แต่เนื้อหาด้านล่างเป็น fail-safe V55-56 ต้องการติดตั้ง V59+

วิธีนี้เป็นการใช้ fail-safe V55-V56 บูทเข้า V70 เพราะผู้เขียนไม่มี fail-safe V70  หากท่านมี fail-safe V70 สามารถใช้ fail-safe V70 บูทเข้า fail-safe ได้ โดยไม่ต้องทำขั้นตอนด้านล่าง

  1. ใช้ ROM fail-safe V55-56 เมื่อแก้ปัญหาเสร็จจึงแฟลช ROM fail-safe V59 กลับเหมือนเดิม หรือ ใช้ ROM FW59+ ที่ patch mtd1 เป็น 0 (ได้ ROM จากรถคันอื่น นำมาเขียน mtd1 ใหม่)
  2. สร้างไฟล์ jci-looptest ใน USB
  3. มีไฟล์ checksum_result.txt ใน /mnt/data_persist/ ภายในไฟล์มีข้อความ C1

background

ขอเล่าที่มาที่ทำให้เครื่องโดนลบระบบปฏิบัติการ เริ่มต้นจากต้องการอัพเกรดเป็น V70 เลือกวิธี Nuclear Reset เพราะเคยลองกับ V55-56 แล้วทำงานได้ แต่เมื่อใช้กับ V59 พบปัญหาเครื่องค้างบูทไม่ติด ดีที่สำรอง ROM ไว้ก่อนจึงกู้กลับได้ เมื่อกู้คืนได้ทำให้เกิดความมั่นใจ(ผิดๆ) เชื่อว่า ติดตั้งเฟิร์มแวร์ใหม่ได้ทุกกรณี เพราะรู้วิธี flash SPI ทำให้ประมาทอยากลองอะไรที่มากกว่า V70 คิดติดตั้งลินุกซ์ที่แจกจ่ายฟรี หวังเลิกใช้ MZD Connect ถ้าสำเร็จตามแผน จะติดตั้งโปรแกรมโอเพ่นซอสใหม่ทั้งหมด จึงลบ partition MZD Connect เพื่อให้มีเนื้อที่ติดตั้งลินุกซ์ แต่ผลที่ได้คือ จอดับ บูทไม่ติดและติดตั้งเฟิร์มแวร์ไม่ได้ ความรู้ที่เคยมีแก้ปัญหานี้ไม่ได้

CMU เครื่องนี้เป็นเครื่องทดลอง ไม่ได้ติดกับรถ Parts: BHP1 66 9C0 NA(North America) เลขเฟิร์มแวร์หลังกล่องV19 แต่รันV24 ก่อนพัง มีเฟิร์มแวร์ V59.00.502-EU ใช้ fail-safe V55 ใช้ Wi-Fi ประเทศไทยได้ปกติ

พบ เข้า failsafe V55-56 เพื่อแก้ปัญหา V59 ทำให้เข้า fail-safe ได้แต่ปัญหาไม่จบ เพราะเข้า fail-safe ได้แต่เครื่องยังคงรีบูททุก 45วินาที เข้าใจว่า failsafe V55 แต่ ใช้แก้ปัญหา V59 ไม่ได้ เพราะเครื่องจะรีบูท

นับจากต้นปี2561 ผู้เขียนทดลองแก้ปัญหาเท่าที่เวลาอำนวย แต่ไม่เคยสำเร็จ จนกระทั่งสำเร็จวันนี้(19 สค 2561) เชื่อว่าการพบนี้จะเป็นโยชน์แก่นักพัฒนาที่ถอดใจ ตอนนี้มีวิธีกู้กลับมาใช้ได้อีกครั้ง

รายละเอียด

ถ้าไม่ลบ partition ไม่จำเป็นต้องสร้างใหม่ แต่กรณีนี้partitionถูกลบ คำสั่งสร้าง partition /dev/mmcblk0 ใหม่ด้วย fdisk ขนาดเป็นตามนี้

Disk /dev/mmcblk0: 3934 MB, 3934257152 bytes
4 heads, 16 sectors/track, 120064 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 18313 120064 3256064 83 Linux
/dev/mmcblk0p2 1 18312 585976 83 Linux

/dev/mmcblk0p1 คือ /tmp/mnt/resources
/dev/mmcblk0p2 คือ /tmp/mnt/data_persist

หลังทำ partition จะต้องทำ file system เป็นชนิด mkfs.relfs อย่าลืมว่าต้องป้อนคำสั่งเสร็จภายใน 45วินาที ใช้วิธี copy-paste ช่วยได้ (SPI Flash ROM FW59+ ไม่ reboot)

หลังจากนี้ทดลองใช้เฟิร์มแวร์ FW70.00.021-EU ใส่ USB พบว่าบูทด้วย fail-safe พบเฟิร์มแวร์ใหม่ แต่หลังโปรแกรมรันได้สักพักถึงช่วงทดสอบ hash (checksum) ทำได้เพียง 14%(~45sec) เครื่องก็รีบูทเป็นแบบนี้ซ้ำๆ ผู้เขียนติดปัญหานี้หลายเดือน

ติดตั้งเฟิร์มแวร์ใหม่ต้องการ 2 ไฟล์

  1. /mnt/data_persist/checksum_result.txt
  2. ไฟล์เปล่าชื่อ jci-looptest ใน USB

ผลติดตั้งนี้ยืนยันได้ว่าทำสำเร็จ ทำให้ CMU เริ่มขั้นตอนติดตั้งเฟิร์มแวร์ใหม่โดยที่ไม่รีบูทระหว่างทาง จนสุดท้ายเกิด progress bars และติดตั้งเฟิร์มแวร์ V70 ได้สำเร็จ

ถ้ามี backup SPI flash ROM จากเฟิร์มแวร์ FW59, FW70 ใช้โปรแกรม backup-spi ในรถที่ใช้งานได้ปกติ มาทำ Recovery ROM จะช่วยแก้ปัญหา reboot ซ้ำได้

พบวิธีแก้ปัญหาจาก /mnt/data_persist/reflash/reflash.log สังเกต Log ค้นหาไฟล์ทั้งสอง ไฟล์แรก

/mnt/data_persist/checksum_result.txt

กลับมาดูเตรื่องที่ทำงานได้ปกติพบว่าไฟล์ /mnt/data_persist/checksum_result.txt มีข้อความ ‘C1’

/tmp/mnt/data_persist # cat checksum_result.txt
C1

สร้างไฟล์ /mnt/data_persist/checksum_result.txt หลังจาก copy ใส่ /mnt/data_persist/ ข้อมูลไม่บันทึก ใช้ความพยายาม copy-paste เร็วๆ เมื่อเครื่องบูท ระหว่างเวลาเดียวกันสังเกต /mnt/data_persist/reflash/reflash.log มีค้นหาไฟล์ที่สอง ชื่อ ‘jci-looptest’ ค้นในไดร์ฟUSB ลองสร้างไฟล์เปล่าวางไว้ใน USB ชั้นบนสุด ทำให้เข้าขั้นตอนติดตั้งเฟิร์มแวร์สำเร็จ

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

ระบบ MZD Connect เป็นระบบปิด ระบบปิดหมายถึงไม่มีใครรู้ข้อมูลด้านเทคนิคนอกจากวิศวกรบริษัทและข้อมูลที่ว่านี้ไม่เผยแพร่ การแก้ปัญหาที่เขียนด้านบนเป็นผลจากการลองผิดลองถูก เราเรียนรู้จากอุปกรณ์และข้อมูลที่มี ไม่ได้ใช้ความพยายามขโมยข้อมูลด้านเทคนิค เมื่อผู้อ่านใช้ข้อมูลนี้ควรอยู่ในความเชื่อว่าข้อมูลไม่ถูกทั้งหมด ผู้เขียนไม่รับผิดชอบต่อผลเสียหายที่เกิดขึ้นจากบทความนี้ไม่ว่ากรณีใดๆ เพียงขอให้ท่านเชื่อว่าผู้เขียนได้พยายามเขียนข้อมูลดีที่สุดเท่าที่ทำได้โดยไม่ได้ปิดบัง ไม่จงใจเขียนบิดเบือนจากที่ตนเองเข้าใจ

สรุปอุปกรณ์ / ซอฟต์แวร์

  1. สาย SOP16 Test clip
  2. Raspberry PI
  3. โปรแกรม flashrom
  4. ROM จาก CMU FW59+ ที่ทำงานปกติ
  5. ROM backup เครื่องที่มีปัญหา

วิธีต่อ SOP16 Test clip อยู่ที่