Так уж приключилось, что последние 1.5 года я отдаю долг родине (на АГС) и работаю медтехником. Работа дико интересная и увлекательная, особенно если вы падки на reverse engineering. Но времени и сил на что-то творческое, про что можно в последствии написать статью - не остаётся. А тут можно сказать, звёзды сошлись и получается убить 2х зайцев: контент и инструкция для моих коллег из IT отдела.
Или даже 3х, мало-ли кому-то пригодится инструкция по замене накопителей в Toshiba Aplio 500

Дисклеймер

Само собой всё нижеописанное вы делайте на свой страх и риск. Помимо банального риска убить рабочий накопитель, вы ещё и рискуете данными, даже после успешной перепрошивки. Потому что, никто не гарантирует, как себя поведёт модернизированный накопитель на долгосроке. Учитываем это и действуем аккуратно, да прибудут с вами бэкапы!

А зачем вообще прошивать SSD? Выбираем правильный диск

На первый взгляд перепрошивка SSD звучит также абсурдно как прошивка паяльника. Однако если отбросить философию, то вариантов зачем это делать, становится не особо много:
1) У вас исправный SSD и вам нужно перебить его серийные номера
2) У вас неисправный SSD и тщетно (или не очень) боретесь за его жизнь

В статье будем работать с контроллером SMI, однако описанный опыт ��ожно экстраполировать и для контроллеров Phison.

Почему Phison и SMI? Ответ прост - софт для прошивки (а это слитый фабричный) наиболее распространён именно под эти контроллеры. Я не заявляю, что его совсем нет, отнюдь, просто будет обидно целенаправленно купить SSD под перепрошивку и узнать, что прошивать то нечем...

Алгоритм подбора крайне прост:

  1. Ищем в рознице 3-5 моделей среднего качества, отсеивая всякий ширпотреб аля Radeon SSD (которые к AMD естественно никакого отношения не имеют) и прочие KingSpec

  2. Далее для каждого гуглим сочетание контроллер+память, в идеале ищем случаи восстановление конкретной модели

    Поиски сводятся к одному сайту: usbdev.ru - святой грааль при работе с накопителями, будь то флешки или SSD. Рекомендую ознакомиться, даже если вам не нужно прошивать ничего, думаю далеко не все слышали про прошитую USB флешку которая определяется как USB-ODD, данные для которого лежат во флеш-памяти в формате .iso

  3. Если среди множества множеств версий комбайнов для прошивки есть нужный под ваше сочетание контроллер+память - едем дальше

С чем работаем?

Давайте сначала ознакомимся с виновником торжества, а затем уже будем разбирать необходимые железки...

Toshiba Aplio 500
Toshiba Aplio 500

А вот и он, характеристики следующие

  • ЖК монитор 19 дюймов с возможностью регулировки положения в вертикальной и горизонтальной плоскостях

  • сенсорная панель управления 10 дюймов

  • коннекторы для подсоединения 3/4-х датчиков

  • встроенный жесткий диск УЗИ аппарата – 160 Гб

  • жесткий диск рабочей станции – 250 Гб

  • кинопетля – 4090 кадров

  • количество приемо-передающих каналов – свыше 70 тыс.

  • кол-во физических передающих каналов – 190

  • глубина сканирования – до 32 см

  • габариты: 500 (Ш) х 1400-1700 (В) х 900 (Г)

  • масса – 140 кг

Я намеренно написал в названии статьи 'вернуть в строй', вместо оживить, аппарат то рабочий. Но что с ним не так? Врачи-УЗИсты жалются на 5 минутные тормоза аппарата, работать невозможно :/
Оба HDD морально-физически устали и требуют замены на стильные, модные, молодёжные SSD.

Аппарат сначала попал к ITшникам. А уже только потом ко мне, как к последней надежде.
Казалось бы, делов то - поставил SSD, да склонировал посекторно данные с HDD, ITшники тоже так думали, но столкнулись с суровой реальностью.

Дело в том, что после старта системы, грузится оболочка УЗИ и она сверяет серийный номер накопителя на котором установлен дистрибутив. И если диск отличный от того, что поставил производитель/оффицал, то УЗИ при включении покажет индейскую национальную народную избу.

Государственное Бюджетное Учреждение не может себе позволить выезд офицалов (по целому ряду причи��), поэтому в очередной раз приходится изобретать болт с обратной резьбой.

Очевидно надо добраться до дисков, обнажаем пластиковую скорлупу на правом торце и нас встречает...

Нож мне в печень, 775 вечен (c)
Нож мне в печень, 775 вечен (c)

Да, обыкновенный комп. Из необыкновенного, только принадлежность материнки, она для рабочих станций и специализированная PCI плата для датчиков. Уже предвкушаете какая система там стоит?

Кто ставил на XP - поздравляю
Кто ставил на XP - поздравляю

P.S. Чтобы запустить свой процесс после старта оболочки (она блокирует любые попытки выйти за пределы её GUI, в т.ч. перехватывает системные вызовы стандартных клавиш), нужно словить тайминг между её стартом и проходом winlogon.exe.
Там порядка ~600ms (если система и оболочка на SSD), при резком нажатии стандартного CTRL+SHIFT+ESC можно попасть, затем после старта оболочки курсором выставить фокус на диспетчер задач, ну а дальше думаю не нужно рассказывать

Это фото из начала, когда была клонирована только система, диск 1 с дистрибутивом остался родной. Но этого мало, поэтому переходим к осмотру SSD.

Ещё перед тем как получить аппарат в свои шаловливые ручки, я проанализировал розницу по вышеприведённому алгоритму и заказал 2 SSD под это действо:

Надпись на футболке описывает всё это действо
Надпись на футболке описывает всё это действо

Да, самые попсовые A400, зато легко купить и под них можно найти прошивку. Вскрываем и внутри нас встречают:

Обрубочек. Интересно, хоть корпус и металлический, но никакого теплоотвода на него не организовано..
Обрубочек. Интересно, хоть корпус и металлический, но никакого теплоотвода на него не организовано..

Контроллер Silicon Motion SM2259XT2 + две TLC банки FB25608VCS1 (от Samsung? По крайней мере в конфиге прошивальщика память так обзывается)

Самые глазастые заметили контактные площадки в левом верхнем углу платы. С шагом 2.0мм 12 пиновый, предположу что JTAG контроллера. А вот 2х пиновый, это контакты для перевода контроллера в BootROM, но забегая вперёд скажу, что они не понадобятся и конкретно этот SSD для прошивки - даже вскрывать не нужно!

Для всего действа понадобится:

1. Материнка с двумя SATA HotPlug - чтобы не мучаться перезагружая каждый раз, выводим их наружу вместе с питанием чтобы получилось что-то вроде:

Только без шуток про molex to sata
Только без шуток про molex to sata

2. USB-SATA адаптер, я использовал DEXP HD303 на чипе ASM225CM - он отлично себя показал, с ним 0 проблем за всё время жонглирования прошивками

Ну и нужно ли говорить, что прошиваем только через него?

Сам адаптер на фото выше
Сам адаптер на фото выше

3. Ну и собственно сам прошивальщик, тут можно поступить хитро, скачать любой свежий для вашей версии контроллера, прожать Scan Drive и вычитать версию прошивки:

Это если повезёт
Это если повезёт

Затем уже по FW ищем необходимый пакет прошивальщика. Для теста можно прошить не изменяя параметры, если всё окей - продолжаем продолжать:

Открываем параметры -> Edit config -> Вводим пароль (который указан на странице загрузки) и правим следующие параметры:

Всё кроме серийного номера и WWN, о них позже
Всё кроме серийного номера и WWN, о них позже

Жмём Save Config As -> Сохраняем в корень прошивальщика. Выбираем наш конфиг ещё раз.

Далее я намеренно упрощу, т.к. всё ровно будет описываться неверная последовательность действий, не наступайте в мои грабли!

И тут проблема, в программу серийник забивается по определённой маске, но не беда, правлю текстовый конфиг выставляю минимальную длину 9 байт, затем сам серийник как у жёсткого диска, который прочитали в Crystal Disk Info

Прошиваем, проверяем:

Для теста указал количество секторов как у HDD
Для теста указал количество секторов как у HDD

Паспорт как у HDD, практически полный клон. Погоняем тестами:

Ступенька по скорости не очень, но пишет без ошибок. Думаю найдутся знатоки которые вкурсе это норма или нет, буду рад любым комментариям по теме
Ступенька по скорости не очень, но пишет без ошибок. Думаю найдутся знатоки которые вкурсе это норма или нет, буду рад любым комментариям по теме

Серийник успешно зашился, значит можно действовать дальше. Клонируем систему и..
Ничего. Всё также оболочка не стартует, тупик?

Не всё то золото что блестит

Но почему? Неужели количество секторов влияет?
Поменял, залил, клонировал, проверил - всё также..

Спустя день снова вернулся с холодной головой и меня озарило, а что если GUIшные программы для диагностики нас обманывают?

Гуглим спеки, ATA API, выходим на сайт мелкомягких и что мы видим:

typedef struct _IDENTIFY_DEVICE_DATA {
  struct {
    USHORT Reserved1 : 1;
    USHORT Retired3 : 1;
    USHORT ResponseIncomplete : 1;
    USHORT Retired2 : 3;
    USHORT FixedDevice : 1;
    USHORT RemovableMedia : 1;
    USHORT Retired1 : 7;
    USHORT DeviceType : 1;
  } GeneralConfiguration;
  USHORT NumCylinders;
  USHORT SpecificConfiguration;
  USHORT NumHeads;
  USHORT Retired1[2];
  USHORT NumSectorsPerTrack;
  USHORT VendorUnique1[3];
  UCHAR  SerialNumber[20];
  USHORT Retired2[2];
  USHORT Obsolete1;
  UCHAR  FirmwareRevision[8];
  UCHAR  ModelNumber[40];
  UCHAR  MaximumBlockTransfer;
  UCHAR  VendorUnique2;

В структуре данными устройства под наш краеугольный SerialNumber отведено 20 байт. Отлично, а как данные по факту выглядят? Открываем PowerShell и ваяем простенький скрипт:

Скрытый текст
Get-Disk | ForEach-Object {
    $diskNumber = $_.Number
    $wmi = Get-CimInstance Win32_DiskDrive |
           Where-Object DeviceID -eq "\\.\PHYSICALDRIVE$diskNumber"

    # Получаем строки
    $serial = $wmi.SerialNumber
    $unique = $_.UniqueId

    # Преобразуем строки в байты и затем в hex
    $serialHex = if ($serial) {
        ($serial.ToCharArray() | ForEach-Object {
            "{0:X2}" -f [byte][char]$_
        }) -join " "
    } else { "" }

    $uniqueHex = if ($unique) {
        ($unique.ToCharArray() | ForEach-Object {
            "{0:X2}" -f [byte][char]$_
        }) -join " "
    } else { "" }

    [PSCustomObject]@{
        Disk      = $diskNumber
        Serial    = $serial
        SerialHex = $serialHex
        UniqueId  = $unique
        UniqueHex = $uniqueHex
    }
}

Запускаем и что мы видим?

Никому нельзя верить
Никому нельзя верить

Диск 0 собственно наш SSD, диск 3 родной УЗИшный HDD, вроде один серийник, но есть нюанс.
Далее я ради интереса подключил другой случайный винт на 500гб и посмотрел его серийник и он тоже с пробелами (ASCII код 0x20) причём той же длины, чтож, видать это стандарт.

Возвращаемся к нашему барану, прошивальщику:

Сколько же нервов он попил..
Сколько же нервов он попил..

Возвращаем длину 20, заодно на всякий случай (даже если оболочка УЗИ его не проверяет, ничего страшного) добавляем WWN (который UniqueId), который мы добыли выше. Далее переходим в конфиг

При попытке поставить пробелы прошивальщик в начале прошивки нас молча обрадует и удалит их:

Но мы победим его
Но мы победим его

Уж не знаю с какой попытки перебора символов, всё же мне пришло в голову добавить кавычки и как итог:

Слева конфиг до начала прошивки, справа после
Слева конфиг до начала прошивки, справа после

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

Проверяем что там по факту, а там всё шоколадно:

Я же сказал что победим
Я же сказал что победим

Закрепим

Правильный алгоритм действий для прошивки серийного номера в MPTool

  1. Находим прошивку под свою связку контроллер + память

  2. Запускаем скрипт в PowerShell, достаём наши уникальный серийники

  3. В MPTool задаём основные все данные, серийник не трогаем, колличество секторов не меняем

  4. Сохраняем конфиг

  5. В конфиге правим строку BEGINSN, заключая наш SN в ""

  6. Прошиваем

  7. Вы прекрасны

Что скажет УЗИ?

Подключаем, грузимся

Пылищу потом продул
Пылищу потом продул

Ииии, да! Это победа, оболочка запустилась, аппарат снова готов работать. А поскольку у нас апгрейд на SSD, то ещё и не мешая врачам работать 5 минутными затупами

Финишная прямая
Финишная прямая

Собираем SSDшник обратно в корпус, не забывая обозначить, что это малость не обычный диск:

Королькамень
Королькамень

Ну финальное фото:

Тот самый Seagate на 480GB
Тот самый Seagate на 480GB

По итогу получилось обмануть УЗИшную оболочку, аппарат поехал в отделение кардиологии работать дальше.

Вот и сказочке конец

Вот такая вот предновогодняя статья-подарочек. Если по стилю и содержанию повествования тяжёло, уж простите, статья скорее разминочная, после паузы сложно выдавать абзац за абзацем. Спасибо за внимание, я пошёл трассировать плату для следующего проекта, увидимся в 2026!