CodingBox Q&A Ask question

Programmer báo WRITE FAIL trên module SFP+ dump vẫn sạch: EEPROM chết hay có gì chặn ghi?

Asked Active Viewed 93 AI translation from English
3

Hầu như tháng nào chúng tôi cũng recode một lô nhỏ module cho host của khách, không có gì lạ: đọc page gốc, ghi vendor string mà host cần, cắm module vào switch rồi xong. Một module trong lô hiện tại từ chối mọi lệnh ghi trong khi đọc lại vẫn hoàn hảo, và trước khi vứt nó tôi muốn biết còn cách nào đáng thử không.

Bench:

  • programmer USB dòng CH341 kèm breakout board cho SFP
  • module SFP+, có diagnostics, đọc tốt cả lúc nguội lẫn sau khi cắt nguồn khởi động lại
  • cùng bộ rig này đã ghi được ba module khác từ cùng khay chỉ một giờ trước đó

Những gì tool in ra ngay khi bấm ghi:

WRITE FAIL

Đọc lại ngay sau đó trả về đúng page gốc từng byte một, nghĩa là không có gì được ghi vào, kể cả một phần.

Những gì đã thử:

  • tháo lắp lại module và đổi sang breakout board dự phòng
  • ghi thử một byte duy nhất ở vùng không quan trọng thay vì cả page, kết quả vẫn vậy
  • xác nhận việc đọc ổn định qua nhiều lần cắt nguồn, nên không phải do dây nối chập chờn

Một module đọc sạch nhưng không bao giờ chấp nhận ghi thì đơn giản là đã hỏng, hay bản thân module có thể cố tình từ chối ghi?

Comments 5

Đọc sạch, ghi bị từ chối, page gốc vẫn nguyên vẹn sau đó. Đó không phải cách một EEPROM hỏng thường hoạt động. Cell chết thường cho đọc lại sai hoặc một page bị ghi dở nửa chừng, chứ không phải một cú từ chối gọn gàng mà mọi thứ vẫn y nguyên.

Và vì ngay cả một byte đơn lẻ ngoài vùng vendor cũng bị bật lại, đây không phải vùng hỏng trên chip, mà là cả phần đó chặn ghi toàn bộ. Có hai điều đáng làm rõ trước khi kết luận gì. Thứ nhất, ai thực sự sản xuất module này: dựa vào vendor string trong page đã dump được, không dựa vào nhãn ghi trên khay. Thứ hai, thử xem lệnh ghi có ăn không nếu bắn ngay lúc vừa cấp nguồn, trước khi có thứ gì khác trên bus kịp nói chuyện với module. Lời giải thích khả dĩ sẽ khác nhau tùy vào hai câu trả lời đó, và một trong hai khả năng thậm chí không phải là lỗi.

2 Ukrainenetguru15UA Show original (English) AI translation

Nghe giống bị khóa bằng password hơn là hỏng thật. SFF-8472 cho phép module có diagnostics yêu cầu password 4 byte trước khi chấp nhận bất kỳ lệnh ghi nào. Không gửi gì, hoặc gửi sai, module sẽ trả lỗi cho lệnh ghi trong khi đọc thì vẫn mở hoàn toàn, đúng y như WRITE FAIL của bạn với page trả về không đổi. Đó là một tính năng của module, không phải triệu chứng của một module sắp chết.

Với bench của bạn thì điều này có nghĩa là: một programmer biết về cơ chế này sẽ cho nhập password của manufacturer hoặc host, loại tốt hơn còn brute force được password chưa biết và tự tính lại checksum sau khi ghi. Một bộ rig dòng CH341 thì không tự động hóa checksum chút nào, nên dù có vượt qua được password bạn vẫn phải tự sửa checksum, nếu không sẽ có một module mà page nhìn có vẻ đúng với bạn nhưng host vẫn từ chối.

Lưu ý thường gặp: tôi từng gặp chuyện này ở vài module và cách dùng password có hiệu quả ở đó, nên hãy thử trên đúng part của bạn trước khi loại bỏ khả năng nào.

4 Franceedgenode83FR Show original (English) AI translation

Bổ sung thêm: với một số vendor thì password thực ra không hề bí mật. Có những bộ sưu tập password cho transceiver Ubiquiti lưu hành công khai với các giá trị như 0x00001011 và các chuỗi đơn giản như SFPX và QSFP, nên nếu module xuất thân từ hệ sinh thái đó thì chỉ mất năm phút thử các password đã biết trước khi tính đến brute force.

Còn nếu muốn một tool đã biết sẵn toàn bộ quy trình thay vì phải vật lộn với một programmer generic, UACC-SFP-WIZARD là lựa chọn rẻ mà nhiều người hay dùng. Nó không phải thiết bị phòng lab, nhưng xử lý phần module rất ổn.

3 United StateslasernodeUS Show original (English) AI translation

Có liên quan, từ kinh nghiệm recode module cho host Huawei S5731 và S6730 và một con HP 6120XG đời cũ. Khi điểm yếu là cage hoặc breakout chứ không phải module, người ta hàn thẳng vào chân 4 và 7 của module, đó là đường I2C SDA và SCL, rồi giao tiếp với EEPROM mà bỏ hẳn cage ra khỏi cuộc chơi. Cách này xấu, chỉ nên làm trên part sẵn sàng chấp nhận mất, nhưng nó loại bỏ hẳn một nhóm lỗi tiếp xúc.

Các part từng qua tay kiểu đó ở đây: Finisar FTLX8571D3BCV và FTLX8574D3BCV, module Intel SFP+ LR và SR, SNR-SFP+W73-3 và SNR-SFP+W37-3, cộng thêm một con HP J9150A.

Trong trường hợp của bạn việc đọc đã ổn định tuyệt đối qua nhiều lần cắt nguồn, nên không phải do tiếp xúc. Cứ đuổi theo hướng password trước.

3 United Stateslinkeng21US Show original (English) AI translation

Password nhiều khả năng là câu trả lời đúng, nhưng đừng dừng lại ở “gõ password xong là xong”, vì có hai chuyện hay cắn người ta ngay sau đó.

Thứ nhất, ở một số part phải nhập lại password sau khi module bị cắt nguồn, nên một script ghi nhiều page liên tiếp phải sẵn sàng nhập lại chứ không thể giả định một lần mở khóa là đủ cho cả phiên.

Thứ hai là checksum. Với programmer dòng CH341 bạn phải tự tính lại bằng tay. Để checksum cũ, module vẫn đọc tốt, tool báo thành công, còn host thì âm thầm từ chối module, và thế là mọi người lại quay ra đổ lỗi cho phần cứng. Hãy đọc lại page và kiểm tra checksum trước khi module đó được lắp vào switch của khách.

1 United Arab Emirateslambdahawk88AE Show original (English) AI translation
Log in to comment. Log in