Alcor - довольно распространенный тайваньский производитель контроллеров (и не только). Если Вы - обладатель флешки, на корпусе которой написано Transcend (JetFlash), Apacer, PQI, то вполне возможно, что эта флешка управляется именно контроллером Alcor
Первое, чему нам необходимо научиться - программно определять модель контроллера флешки. (Причина важности этого шага настолько очевидна, что я даже не собираюсь останавливаться на ней).
Для этого нужно совершить всего два действия:
1. Получить от устройства внутренний идентификатор контроллера (устоявшегося термина, как я понимаю, нет. В сервисных утилитах Alcor он может называться CTL, CTL-ID, CID).
2. Полученный идентификатор контроллера преобразовать в «человеческий» вид (модель контроллера, которая выгравирована на его корпусе, если это не фейк, конечно. Он же Part-No контроллера)
Самый простой способ получения CID - скормить контроллеру команду CDB= 0x9A000000 00000000 00000000 00000000 (т.е. CDB[0] = 0x9A, все остальное - нули, размер буфера обмена данными 512 байт).
Все известные мне модели Alcor на эту команду отвечают без проблем. Например, моя старушка JetFlash TS2GJFV85 возвращает вот такую прелесть (привожу лишь начало):
О структуре возвращаемых командой 0x9A данных мы поговорим позже. А сейчас ограничимся лишь определением CID.
Два байта по смещению 0x04 (выделены красным) - это и есть CID. Осталось перевести его на что-то более вразумительное. Для этого нам понадобится табличка (через запятую перечислены варианты моделей)
AA06: AU6386, AU6389
AB41: AU6980, AU6981
AB42: AU6981
AB43: AU6981, AU9387
AE41: AU6982
AE42: AU6982
BA00: AU6983
BA01: AU6983
BB00: AU6984
BB06: AU6984
BB07: AU6984
BB09: AU6984
BC00: AU6983
BC01: AU6983, AU6986
BC07: AU6983, AU6986
BD00: AU6986
BD01: AU6983, AU6986
BD02: AU6983, AU6986
BD03: AU6983, AU6986
BD04: AU6983, AU6986
BD05: AU6983, AU6986
BD06: AU6983, AU6986
CA00: AU6990
CA01: AU6987, AU6990
CA02: AU6987, AU6990
CA03: AU6987, AU6990
CA04: AU6987, AU6990
CA05: AU6987, AU6990
CA06: AU6987, AU6990
CA07: AU6987, AU6990
CA09: AU6987AN, AU6991
CB00: AU6990T
CB04: AU6987T, AU6990T
CB05: AU6987T, AU6990T
CB06: AU6987T, AU6990T
CC00: AU6998NL
CC01: AU6989NL, AU6998NL
CD00: AU6998
CD03: AU6989, AU6998
CE00: AU6998L
CE01: AU6989L, AU6998L
CE02: AU6989L, AU6998L
CF00: AU6998N
CF02: AU6989N, AU6998N, AU6989NL, AU6998NL
D000: AU6986T
D002: AU6985, AU6992
D003: AU6985, AU6992
D004: AU6985, AU6992
D005: AU6985, AU6992
D203: AU6985B, AU6996
D403: AU6985B, AU6996
DA00: AU6986
DB00: AU6986
E001: AU6989, AU6998, AU6998N
E101: AU6989N, AU6998N
E102: AU6989N, AU6998N
E103: AU6989N, AU6998N
E200: AU6998
E203: AU6989, AU6998
E204: AU6989, AU6998
E300: AU6998AN
E302: AU6989AN, AU6998AN
E304: AU6989AN, AU6998AN
E306: AU6989AN
E400: AU6998ANL
E500: AU6998SN
E508: AU6998SN
E509: AU6989SN, AU6998SN
E50B: AU6989SN, AU6998SN, AU6989ANL, AU6998ANL
E50E: AU6989SN, AU6998SN
E512: AU6989SN, AU6998SN
E600: AU6998AN
E602: AU6989AN, AU6998AN
E603: AU6989AN, AU6998AN
E800: AU6998TN
E802: AU6989SN
EA00: AU6987
EB02: AU6989SN, AU6998SN
EC00: AU6989SN-H83
EC05: AU6989SN-GT, AU6998SN
EC07: AU6989SN-GT, AU6998SN
EF00: AU6989SNL, AU6998SNL, AU6989SN-K85
EF01: AU6989SNL, AU6998SNL, AU6989SN-GTA, AU6998SN, AU6989SNM, AU6998SNM
F100: AU6989SNL-B81
F101: AU6989SNL-B, AU6998SNL
F200: AU6989SN-M82
F204: AU6989SN-GTB, AU6998SN
F206: AU6989SN-GTB, AU6998SN
F500: AU6989SN-GTC, AU6998SN, AU6989SN-M88
F502: AU6989SN-GTC, AU6998SN
F700: AU6989SN-GTD
7670: AU7670
Хочу предупредить, что официального соответствия я нигде не видел. Поэтому возможны ошибки, да и перечень явно не полный (здесь точно нет AU87100 на USB 3.0). Если будут замечания, то я с благодарностью их приму.
Т.е. в моем случае внутри флешки спрятался контроллер AU6982 (CID AE41)
ЗЫ: В качестве бонуса. Первые четыре байта в прямой последовательности - это размер флешки в условных "секторах". Сектор флешки 512 (0x200) байт (этот параметр можно уточнить, выполнив SCSI-команду Read Capacity). В моем случае: 0x3D2000 * 0x200 = 0x7A400000 или 2 051 014 656 байт.
Начало