Так уж приключилось, что последние 1.5 года я отдаю долг родине (на АГС) и работаю медтехником. Работа дико интересная и увлекательная, особенно если вы падки на reverse engineering. Но времени и сил на что-то творческое, про что можно в последствии написать статью - не остаётся. А тут можно сказать, звёзды сошлись и получается убить 2х зайцев: контент и инструкция для моих коллег из IT отдела.
Или даже 3х, мало-ли кому-то пригодится инструкция по замене накопителей в Toshiba Aplio 500
Дисклеймер
Само собой всё нижеописанное вы делайте на свой страх и риск. Помимо банального риска убить рабочий накопитель, вы ещё и рискуете данными, даже после успешной перепрошивки. Потому что, никто не гарантирует, как себя поведёт модернизированный накопитель на долгосроке. Учитываем это и действуем аккуратно, да прибудут с вами бэкапы!
А зачем вообще прошивать SSD? Выбираем правильный диск
На первый взгляд перепрошивка SSD звучит также абсурдно как прошивка паяльника. Однако если отбросить философию, то вариантов зачем это делать, становится не особо много:
1) У вас исправный SSD и вам нужно перебить его серийные номера
2) У вас неисправный SSD и тщетно (или не очень) боретесь за его жизнь
В статье будем работать с контроллером SMI, однако описанный опыт ��ожно экстраполировать и для контроллеров Phison.
Почему Phison и SMI? Ответ прост - софт для прошивки (а это слитый фабричный) наиболее распространён именно под эти контроллеры. Я не заявляю, что его совсем нет, отнюдь, просто будет обидно целенаправленно купить SSD под перепрошивку и узнать, что прошивать то нечем...
Алгоритм подбора крайне прост:
Ищем в рознице 3-5 моделей среднего качества, отсеивая всякий ширпотреб аля Radeon SSD (которые к AMD естественно никакого отношения не имеют) и прочие KingSpec
Далее для каждого гуглим сочетание контроллер+память, в идеале ищем случаи восстановление конкретной модели
Поиски сводятся к одному сайту: usbdev.ru - святой грааль при работе с накопителями, будь то флешки или SSD. Рекомендую ознакомиться, даже если вам не нужно прошивать ничего, думаю далеко не все слышали про прошитую USB флешку которая определяется как USB-ODD, данные для которого лежат во флеш-памяти в формате .isoЕсли среди множества множеств версий комбайнов для прошивки есть нужный под ваше сочетание контроллер+память - едем дальше
С чем работаем?
Давайте сначала ознакомимся с виновником торжества, а затем уже будем разбирать необходимые железки...

А вот и он, характеристики следующие
ЖК монитор 19 дюймов с возможностью регулировки положения в вертикальной и горизонтальной плоскостях
сенсорная панель управления 10 дюймов
коннекторы для подсоединения 3/4-х датчиков
встроенный жесткий диск УЗИ аппарата – 160 Гб
жесткий диск рабочей станции – 250 Гб
кинопетля – 4090 кадров
количество приемо-передающих каналов – свыше 70 тыс.
кол-во физических передающих каналов – 190
глубина сканирования – до 32 см
габариты: 500 (Ш) х 1400-1700 (В) х 900 (Г)
масса – 140 кг
Я намеренно написал в названии статьи 'вернуть в строй', вместо оживить, аппарат то рабочий. Но что с ним не так? Врачи-УЗИсты жалются на 5 минутные тормоза аппарата, работать невозможно :/
Оба HDD морально-физически устали и требуют замены на стильные, модные, молодёжные SSD.
Аппарат сначала попал к ITшникам. А уже только потом ко мне, как к последней надежде.
Казалось бы, делов то - поставил SSD, да склонировал посекторно данные с HDD, ITшники тоже так думали, но столкнулись с суровой реальностью.
Дело в том, что после старта системы, грузится оболочка УЗИ и она сверяет серийный номер накопителя на котором установлен дистрибутив. И если диск отличный от того, что поставил производитель/оффицал, то УЗИ при включении покажет индейскую национальную народную избу.
Государственное Бюджетное Учреждение не может себе позволить выезд офицалов (по целому ряду причи��), поэтому в очередной раз приходится изобретать болт с обратной резьбой.
Очевидно надо добраться до дисков, обнажаем пластиковую скорлупу на правом торце и нас встречает...

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

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 - чтобы не мучаться перезагружая каждый раз, выводим их наружу вместе с питанием чтобы получилось что-то вроде:

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

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

Затем уже по FW ищем необходимый пакет прошивальщика. Для теста можно прошить не изменяя параметры, если всё окей - продолжаем продолжать:
Открываем параметры -> Edit config -> Вводим пароль (который указан на странице загрузки) и правим следующие параметры:

Жмём Save Config As -> Сохраняем в корень прошивальщика. Выбираем наш конфиг ещё раз.
Далее я намеренно упрощу, т.к. всё ровно будет описываться неверная последовательность действий, не наступайте в мои грабли!
И тут проблема, в программу серийник забивается по определённой маске, но не беда, правлю текстовый конфиг выставляю минимальную длину 9 байт, затем сам серийник как у жёсткого диска, который прочитали в Crystal Disk Info
Прошиваем, проверяем:

Паспорт как у 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
Находим прошивку под свою связку контроллер + память
Запускаем скрипт в PowerShell, достаём наши уникальный серийники
В MPTool задаём основные все данные, серийник не трогаем, колличество секторов не меняем
Сохраняем конфиг
В конфиге правим строку BEGINSN, заключая наш SN в ""
Прошиваем
Вы прекрасны
Что скажет УЗИ?
Подключаем, грузимся

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

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

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

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