Odzyskiwanie danych z dysków SSD na kontrolerach Indilinx Barefoot i Amigos

Indilinx Firma Indilinx, to założona w 2006 r. południowokoreańska korporacja, która zdobyła mocną pozycję na rynku kontrolerów do dysków SSD dzięki opracowaniu kontrolerów z rodziny Amigos (IDX100M00 i IDX100M01) oraz Barefoot (IDX110M00, IDX110M01, IDX110M02) i Barefoot 2 (IDX210M00). W 2011 r. firma Indilinx została przejęta przez OCZ, głównie dla patentów i technologii. Już pod szyldem OCZ został opracowany kontroler Barefoot 3 (IDX500M00). Oprócz własnych kontrolerów Amigos i Barefoot, Indilinx produkował także kontrolery Everest 1 (IDX300M00) oparty na Marvellu 88SS9174 i Everest 2 (IDX400M00) w oparciu o Marvell 88SS9187.


Swoje dyski SSD na kontrolerach Indilinx produkowało wielu różnych producentów, jednak różnice pomiędzy nimi są niewielkie. Wynika to z faktu, że Indilinx dostarczał producentom swoje kontrolery już zaprogramowane. Część mikroprogramu (kernel) przechowywana jest w wewnętrznej pamięci ROM. W mikroprogramie Indilinx realizowany jest dostatecznie mocny technologiczny tryb pracy, by w razie awarii można było za jego pomocą odczytać zawartość pamięci Flash-NAND bez konieczności ich wylutowania. Do uruchomienia dysku w trybie technologicznym zazwyczaj należy użyć zworki, której wyprowadzenia na ogół znajdują się na zewnątrz obudowy w pobliżu złączxa SATA


Inicjalizacja dysków SSD na kontrolerach Indilinx Barefoot


Po włączeniu zasilania dyski SSD zbudowane na kontrolerach Indilinx ładują mikroprogram z wewnętrznej pamięci ROM. Mikroprogram przejmuje kontrolę nad dyskiem i przeprowadza kontrolę wewnętrznych podsystemów dysku. Następnie przeprowadzana jest kontrola modułów mikroprogramu przechowywanych w pamięciach Flash-NAND. Jeżeli inicjalizacja przebiega poprawnie, moduły te są ładowane do bufora i przetwarzane przez kontroler. Wtedy przeprowadzana jest kontrola poprawności tablic translacji, sprawdzane są ustawienia hasła ATA i S.M.A.R.T., a także ładowana jest tablica defektów, zaś dysk wychodzi w gotowość.


W przypadku błędów podczas inicjalizacji, istnieje możliwość wykorzystania serwisowych funkcji zawartych w części mikroprogramu przechowywanej w samym kontrolerze. Pozwalają one m. in. na przetestowanie układów pamięci Flash-NAND, niskopoziomowe formatowanie, naprawę uszkodzonych modułów, aktualizację firmware, a także na uzyskanie dostępu do danych użytkownika. Tryb technologiczny może zostać wymuszony także na sprawnym dysku poprzez zwarcie zworki. Dysk SSD na kontrolerze Indilinx w trybie technologicznym zawsze zwraca taki sam paszport, niezależnie od producenta i modelu. Zamiast modelu dysku zwracany jest napis "YATAPDONG BAREFOOT-ROM".


Konfiguracja pamięci Flash-NAND w dyskach SSD na kontrolerach Barefoot i Amigos

Kontrolery Indilinx do pracy z pamięciami Flash-NAND wykorzystują 16-bitowe niezależne kanały. Zasada pracy kontrolerów Amigos i Barefoot jest bardzo podobna, z tym, że Amigos jest dwukanałowy, a Barefoot czterokanałowy. Na każdym kanale może być maksymalnie 8 banków, a więc Amigos może obsłużyć maksymalne 16, a Barefoot 32 banki.


Każdy bank składa się z dwóch logicznych 8-bitowych układów pamięci. Pierwszy z tych układów, wykorzystujący linie danych I/O 0 - I/O 7, nazywany jest Low-chip, a drugi, pracujący na liniach I/O 8 - I/O 15, to High-chip. Kontrolery Indilinx są tak zaprojektowane, że traktują te układy, jak jeden wirtualny układ z 16-bitowym interfejsem. Podczas zapisu danych do układów pamięci poszczególne bajty trafiają naprzemiennie do Low-chip i High-chip. Na przykład jeśli kontroler wyśle do określonego banku sekwencję 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 (...), to zostanie ona zapisana w następujący sposób:


Low-chip: 0x00, 0x02, 0x04 (...)
High-chip: 0x01, 0x03, 0x05 (...)
W ten też sposób należy odczytywać zawartość układów.


Usterki dysków SSD na kontrolerach Indilinx

Jeśli dysk nie wchodzi w gotowość, należy w pierwszej kolejności spróbować wymusić na nim wejście w technologiczny tryb pracy za pomocą zworki, a następnie spróbować odbudować translator i odczytać dane. Jeżeli odbudowanie translatora nie jest możliwe, należy spróbować zapisać zawartość układów pamięci do obrazów binarnych, a następnie odzyskiwać dane z tych obrazów.


W przypadku kiedy pomimo zwarcia kontaktów zworki trybu technologicznego dysk nie wychodzi w gotowość, najprawdopodobniej uległ on uszkodzeniu elektronicznemu. W takim przypadku w pierwszej kolejności należy zmierzyć elementy odpowiedzialne za zasilanie dysku i podjąć próbę jego naprawy. Jeśli dysku nie uda się naprawić, można wylutować układy pamięci i odzyskać dane odczytując je na programatorze.


Odzyskiwanie danych z obrazów binarnych układów pamięci odczytanych w trybie technologicznym lub za pomocą programatora jest o tyle proste, że kontrolery Indilinx nie szyfrują ani nie XORują pamięci, zaś ich algorytm zapisu danych do układów jest stosunkowo mało skomplikowany. W przypadku większości dysków SSD właściwą kolejność układów można z łatwością ustalić na podstawie oznaczeń na PCB


ABRT

Jeżeli dysk wychodzi w gotowość, ale przy jakiejkolwiek próbie zapisu lub odczytu danych rejestr stanu zwraca ERR, a rejestr błędów ABRT w pierwszej kolejności należy sprawdzić, czy dysk nie jest zabezpieczony hasłem ATA. Najłatwiej to uczynić odczytując paszport dsku w MHDD, Wiktorii lub dowolnym innym programie diagnostycznym. W przypadku dysków SSD na kontrolerach Indilinx hasło ATA można próbować odczytać wprowadzając dysk w technologiczny tryb pracy. W przypadku, jeśli przyczyna problemu jest inna, należy odzyskiwać dane bezpośrednio z układów Flash-NAND.


Dyski SSD na kontrolerach Indilinx

A-Data

500
5592
Nobility

AMD

Radeon R7

Centon

Diamond C360 VV51

Corsair

Extreme
Nova

Crucial

M225

G.Skill

Falcon
Falcon II

Mushkin

Io

OCZ

Agility
Agility EX
Agility 4
Colossus
Colossus LT
Enyo
Octane
Onyx
Onyx 3
Petrol
Solid 2
Vector
Vector 150
Vertex
Vertex EX
Vertex Plus
Vertex Plus R2
Vertex Turbo
Vertex 4
Vertex 450
Vertex 460
Z-Drive m84

Run Core

Pro IV
SATA II

Patriot

Torqx

PhotoFast

G-Monster Promise
G-Monster V4S
G-Monster V5

Renice

X2

Solidata

K5

Super Talent

UltraDrive GX
VSSD

TCS (TeleCommunication Systems)

Proteus Plus

Team Group Inc

Xtreem-G1

Transcend

Ultra