AI и DIY,  Hardware,  Статьи

О программном восстановлении неисправных USB-флешек

USB-носители, использующиеся для хранения информации, имеют контроллеры и микросхемы памяти, которые по той или иной причине могут выйти из строя. При этом накопитель либо совсем не отображается в проводнике, либо переходит в режим Read Only, при этом операционная система не может отформатировать флешку.

Довольно часто причинами неисправности являются сбои, которые можно устранить программно. Это возможно при повреждении целостности микропрограммы контроллера, отвечающего за управление носителем данных из-за сбоя по питанию, неправильного отсоединения флешки от компьютера, плохого контакта по питанию в USB-разъеме и других причин. В таких случаях можно попробовать восстановить флешку с помощью перепрошивки микропрограммы (firmware) и/или низкоуровневого форматирования. Процедура лечения похожа на работу с накопителями SSD, описанную в статье «Восстановление работоспособности SSD со слетевшей прошивкой».

Если на флешке появилось много сбойных секторов в памяти из-за перегрева/деградации, выработки ресурса и т. д., восстановить носитель, скорее всего, не получится.

Для программного ремонта USB-флешки нужно узнать, какой контроллер и память установлены на ее плате, а затем скачать в интернете соответствующую сервисную утилиту. Эту информацию можно получить двумя способами:

  • программно, без разборки флеш-накопителя, с помощью утилиты ChipGenius и ей подобных, либо в специализированной программе, подходящей для конкретной флешки, например, GetInfo из пакета MPALL для контроллеров Phison;
  • путем визуальной инспекции электронных элементов печатной платы вскрытого накопителя.

Подходящая служебная программа может восстановить прошивку, а также произвести низкоуровневое форматирование ее памяти. При этом вся информация, хранящаяся на флешке, будет уничтожена.

При работе с неработающей флешкой лучше использовать USB 2.0-порт, находящийся непосредственно на материнской плате. Это снизит влияние помех/наводок, появляющихся на USB-удлинителях, либо на проводах, ведущих к портам на передней панели компьютера.

Для USB-Flash Verbatim PinStripe 32GB:

программа ChipGenius версии 4.19.0319 показывает, что это устройство с VID=090C, PID=1000, контроллер SM3257EN производства SMI Corporation. На носителе установлена TLC-память Micron MT29F128G08EFAAA, работающая в одноканальном режиме 4CE:

Поиск в интернете по ключевым словам VID=090C, PID=1000, SM3257EN подсказывает, что для этой флешки можно использовать утилиту SMI Mass Production Tool (SM3257EN_v2.03.37_110317 для Windows).

Для восстановления работоспособности флешки нужно запустить сервисную программу, вставить накопитель в компьютер, после его определения нажать кнопку Start. Если появляется ошибка Fail:

то перед нажатием кнопки «Старт» нужно перейти в режим Debug и провести стирание памяти (multiple erase all).

Если ChipGenius не может определить, какой контроллер и память установлены на флешке, нужно аккуратно вскрыть ее корпус и самостоятельно определить, какие детали используются на устройстве.

Печатная плата разобранной флешки KINGSTON DT50 32GB, вид со стороны контроллера Phison PS2251-07:

Печатная плата KINGSTON DT50 32GB, вид со стороны микросхемы памяти с маркировкой FD32B08UCH1-55, нумерация пинов начинается с угла с белой меткой на печатной плате:

Вывод информации о флешке с контроллером Phison PS2251-07 (PS2307), firmware 01.05.10 с памятью Hynix H27UDG8M2MTR [TLC-16K] в программе ChipGenius версии 4.19.0319:

Для этой флешки программа ChipGenius определила FID памяти, как AD3A18A36125, производитель SK Hynix, тип ячеек — TLC-16K, микросхема памяти — H27UDG8M2MTR (это low-cost OEM-память, о которой очень мало информации в открытом доступе). Полученные данные могут пригодиться для поиска подходящей программы для восстановления работоспособности флешки. Поиск в Google подсказывает, что для контроллеров Phison можно использовать комплекс MPALL.

Диагностическая утилита GetInfo из состава программного обеспечения Phison MPALL дает следующую информацию о проблемной флешке:

В полях FC1-FC2 отчета GetInfo стоят значения FF (FF – FF), что свидетельствует о том, что у флешки есть проблемы с прошивкой.

Значение 2307 PRAM (Parameter Random Access Memory), отображаемое программой ChipGenius в строке Description, а в GetInfo — в поле Inquiry Product Name, обозначает, что контроллер флешки запустился без обращения к памяти — она перешла в режим firmware «panic», который приводит к появлению ошибки «No Media» в Windows. Это могло произойти из-за того, что микросхема памяти имеет слишком много битых секторов и ее вряд ли получится реанимировать программным способом.

Для работы с тайваньским контроллером Phison PS2251-07-V также можно использовать утилиту UPTool, например, версии 2.093 (2015.01.14). Она предназначена для прошивки USB-флешек на контроллёрах от компании Phison (PS2251-61, PS2251-67, PS2251-68, PS2251-07, они же UP21, UP21BB, UP21BC, UP21BD, UP23AA, UP23BB, UP23BC, UP23BD, UP307, UP25AA и других):

После определения сервисной программой контроллера флешки, нужно нажать на кнопку старт и дождаться окончания восстановления прошивки:

Если исправна память, установленная на флешке, то нажатие на кнопку Start в большинстве случаев восстанавливает работоспособность устройства.

В противном случае можно попробовать реанимировать накопитель с помощью других утилит, либо попытаться перепрошить его вручную, в том числе, используя сервисный (тестовый) режим.

Для восстановления работоспособности и низкоуровневого форматирования флешки с контроллерами Phison можно использовать программу Phison MPALL и ISP-файлы прошивок с расширениями BIN (они имеют названия вида BN*.BIN и FW*.BIN). Для контроллера используется микропрограмма с названием, начинающимся буквами BN [Burner], для памяти — FW [FirmWare].

Для флешки KINGSTON DT50 32GB с контроллером Phison PS2251-07 и памятью TLC можно использовать прошивки со следующими названиями BIN-файлов:

  • BN [Burner] — в формате Bn07Vxx.BIN, например, BN07V601TAW.BIN;
  • FW [FirmWare] — в формате Fw07FF01xxx50.BIN, например, FW07FF01V50110.BIN.

Информация о взаимосвязи названия файла прошивки FW [FirmWare] для программ Phison MPALL и UPTool с памятью, установленной на USB-флеш:

Подробная информация о прошивке флешек с различными контроллерами и памятью есть на сайте USBDEV.

Если стандартный способ восстановления не помогает, можно попробовать перевести флешку в сервисный режим и затем запустить ее реанимацию в служебной программе. Для этого во время подключения флешки в USB-разъем нужно замкнуть соседние контакты шины данных на микросхеме памяти. Служебная программа определит устройство, после чего нужно убрать замыкающую контакты перемычку, что позволит осуществлять работу в сервисном режиме, в том числе прошивать firmware.

Назначение контактов установленного на USB-накопитель чипа памяти можно узнать из его даташита, скачанного в интернете. К сожалению, это не всегда возможно, так как такая информация является служебной и не всегда доступна в открытом доступе.

Известно, что с контроллером Phison PS2251-07 выпускаются USB-флешки не только с памятью с памятью SK Hynix TLC, но и с чипами Toshiba TLC (например, TH58NVG7D2GTA20, ID 98 3A A8 92), Datasheet которых есть в интернете.

Распиновка микросхем памяти Nand Flash Toshiba TLC в корпусе TSOP-48:

Назначение контактов TLC Nand Flash Toshiba в корпусе TSOP-48:

Пример схемы включения NAND-памяти в 48-контактном корпусе на флешках Phison:

С большой степенью вероятности и микросхемы памяти Hynix имеют ту же распиновку. Для перевода флешки в тестовый режим на микросхеме памяти нужно замкнуть между собой любую дифпару шины данных (I/O) — например, соседние пины 29-30, 31-32, 41-42, 43-44.

Эту же операцию можно произвести и на выводах Flash Data Bus контроллера (PB_FLH_DIO[xx] или FDATA). Это может быть единственной доступной опцией для флешек с BGA-памятью со скрытыми под корпусом микросхемы контактами-шариками. Правда, для этого нужно узнать назначение контактов контроллера, что не всегда легко из-за отсутствия таковой информации в открытом доступе.

Например, для флешек с контроллером Phison PS2251-07 в корпусе LQFP48 это могут быть контакты FDATA с номерами 5-11, 13-15, 21-23, 25-27:

Иногда служебная программа не может восстановить флешку выдавая связанный с этим код ошибки, например:

или:

или какой-либо другой.

К сожалению, не существует единого стандарта, определяющего коды ошибок, выдаваемые утилитами для восстановления USB-флешек. Для расшифровки значения Error Code можно использовать файлы помощи, которые идут в комплекте с программой, а также поиск в интернете/на специализированных сайтах/форумах. Кроме того, нужно изучить логи программы-прошивальщика, в большинстве случаев в них содержится необходимая информация.

Некоторые коды ошибок, выдаваемые сервисной утилитой UPTool ver.2093, предназначенной для работы с контроллерами Phison:

  • 0070h Err at Setup Parameters For IB-Table;
  • 0051h Downgrade Flash, but not found IB-Table;
  • 0052h Bad Column is not paired;
  • 0061h Diff of controllers in F/W & ROM;
  • 0073h Not Support Controller;
  • 0075h MBC Page is not enough for CK/IB;
  • 0075h MBC Page is not enough for no CK MBC IB;
  • 0078h Enhance Ecc mode sorting , but used not support FW. Please new FW;
  • 0082h Cannot get ISP version;
  • 0082h Err at install ISP;
  • 0082h Burner ISP read fail;
  • 0082h ISP allocate buffer fail;
  • 0082h ISP file not found;
  • 0082h ISP file too small;
  • 0084h Flash Reset Fail;
  • 0085h D1 Source Block Need:%d > D1 Source Block Have:%d;
  • 0091h NewSort_eD3_CopyBack_2Slot;
  • 0101h FSlot-%d, Flash ID fail;
  • 0990h Fail to init Bad Column;
  • 1106h Burner ISP allocate buffer fail;
  • 1106h Burner ISP file not found;
  • 1106h Burner ISP file too small;
  • 1106h Burner ISP read fail;
  • 1106h Cannot get burner version;
  • 1106h Cannot get ISP version;
  • 1106h Cannot Install burner ISP code;
  • 1106h Cannot Install burner ISP code;
  • 1106h ISP file not found;
  • 1107h Could not store CP to Bad-Block;
  • 1107h F/W allocate buffer fail;
  • 1107h F/W ISP file too small;
  • 1107h F/W ISP read fail;
  • 1107h Find CZ-Block fail, no more good block;
  • 1107h unknown error, CZ page could not be located;
  • 110Fh Too few CodePage;
  • 1120h Err at Burner to JUMP;
  • 1122h Burner load IB-Table;
  • 1123 Fail to get CZ from Burner;
  • 1124h F/W Code file not found;
  • 1125h Err at Jump to ISP;
  • 1199h 67BC: Good block for CP Over Search Rule;
  • 6019h Disk is still in ROM stage.

Если флешка не восстанавливается даже в тестовом режиме, вероятно приказала долго жить ее микросхема памяти. Ресурс современных дешевых USB-флешек, особенно с TLC-памятью очень ограничен, в лучшем случае такой носитель может выдержать до тысячи циклов записи-чтения…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *