Відновлення приставки на MStar після невдалої прошивки Цифрове телебачення

mstar

Відновлення приставки на MStar після невдалої прошивки

Деякі стикалися з ситуацією, коли після оновлення прошивки приставка завантажувалася, але пульт переставав реагувати, або взагалі - приставка зупинялася вже на півдорозі при завантаженні.

Як правило, таке відбувається, коли приставка має кілька апаратних ревізій, а користувач не прочитав для якої саме ревізії призначалася та чи інша завантажена прошивка.

Або ж намагалися прошити взагалі чужою прошивкою, сподіваючись отримати якісь переваги для своєї моделі, або, наприклад, намагаючись отримати підтримку кодека AC-3 (Dolby Digital), не знаючи, що вона визначається конкретним процесором, встановленим на платі на заводі. І якщо у процесорі спочатку не було оплаченої ліцензії AC-3, то жодні прошивки — ні від родинних, ні від чужих моделей — у цій справі не допоможуть.

Відразу обмовимося: тут не розглядаються випадки, коли приставка не завантажується через висохлі електролітичні конденсатори, перегорілих DC-DC перетворювачів або несправність самої мікросхеми флеш-пам'яті. Ці питання обговорюються у спеціалізованих групах, наприклад, ВКонтакте: https://vk.com/remontdvbt2 Але звертатися туди слід, маючи хоча б мінімальні знання та практичний досвід ремонту техніки.

Нижче перерахую 4 варіанти рішення: перші два способи підходять для всіх приставок і ще два - тільки для приставок на процесорах MStar, причому один з них навіть без відкриття та витрат.

Найпростіший варіант проблеми – приставка завантажилася, але перестала реагувати на пульт. Купуємо пульт тієї приставки чию прошивку підсовували або універсальний пульт, наприклад, Huayu DVB-T2+2 для приставок: У перерахованих містах він коштує всього лише 140нар. і це зовсім невелика плата за свою помилку. Тим більше що пульт потім у будь-якому разі стане в нагоді.

І, відповідно, за допомогою цього пульта прошиваємо приставку назад на рідну прошивку.

Найуніверсальніший і найкардинальніший спосіб рішення — розібрати приставку, випаяти флеш-пам'ять, прошити через програматор дамп, десь заздалегідь скачаний, а потім запаяти мікросхему назад:

Все це вимагатиме як мінімум паяльника, програматора (нехай навіть і найпростішого SPIPGM на 4 резисторах), ну а головне - хоча б мінімального досвіду, інакше можна зробити тільки гірше.

Нагадаю, що дамп для приставок на MStar легко отримати з звичайної заводської прошивки usb_upgrade_all_flash.bin відрізавши від неї перші 4096 байт, а решту можна забити до кінця, наприклад, 00.

Якщо приставка на процесорі Novatek, то аналогічно, але відрізати від прошивки лише перші 80 байт.

А якщо приставка на процесорі ALi, її прошивка (файл з розширенням.abs ) сама є дампом.

Обсяг файлу дампа = розміру флеш-пам'яті, тобто. рівно 4 мегабайти = 4194304 байта.

Однак для приставок на процесорі MStar є набагато більш витончений спосіб прошивки без необхідності випаювання > Програмування > Впаювання» мікросхеми флеш-пам'яті – а просто через USB з використанням консолі, підключеної до UART процесора.

На платах приставок MStar є два контактні майданчики, підписані TX та RX або SDA та SCL відповідно. Іноді вони позначені просто як контрольні точки, наприклад TP8, TP10.

У MSD7816 від TX і RX йдуть до 95, 94 контактів процесора, MSD7802 - 60, 59, MSD7T01 - 36, 35.

Також можна використовувати програматор CH341A (від 130 р), перевівши перемичкою в режим "S " - Serialport.

На комп'ютері запускаємо будь-яку термінальну програму, наприклад, HyperTerminal або PuTTY і підключаємося до відповідного COM-порту перетворювача з параметрами115200 8N1.

Після включення приставки — одразу натискаємо будь-яку клавішу, щоб потрапити до консолі завантажувача:

UART_115200 BIST0-OK _snPDMDrv_PM_RtcGetCounter(CurrentCounter=0)

Hit any key to stop autoboot: 0

І тут можна виконати командами те саме, що ми робимо в меню приставки, оновлюючи прошивку:

«MStar» # setenv usb_upgrade 1

« MStar »# setenv usb_upgrade_pathusb_upgrade_all_flash.bin

Зазвичай файл USB-прошивки називаєтьсяusb_upgrade_all_flash.bin (але може бути будь-яке ім'я).

На екрані все виглядатиме так, начебто оновлюємо через меню приставки.

Або ще один варіант, трохи складніше:

Також послідовно даємо наступні команди:

«MStar» # usb reset

«MStar» # fatls usb 0:1

завантаження підготовленого файлу прошивки без перших 4096 байт в оперативну пам'ять (0x80000000):

"MStar" # fatload usb 0:1 0x80000000 bez_4096_bait.bin

запис із пам'яті в SPI-флеш (0x0):

«MStar» # spi_wrc 0x80000000 0x0 0x400000

Після завантаження бажано скинути заводські налаштування.

Т.о. тут вже не потрібно навичок акуратного паяння і не потрібен програматор, але все-таки потрібно зробити або придбати консольний шнур-перетворювач.

Але, як виявилося, у приставок на процесорі MStar є ще набагато простіший і елегантніший спосіб, що не вимагає жодних фінансових витрат або віртуозного володіння паяльником.

І при цьому навіть навіть приставку відкривати не треба.

Якщо увімкнути приставкуу розетку, то на консолі можнапомітити, що система звертається до USB-порту:

Check USB port[0]: . Waiting for Peripheral Connecting Fail… usb init failed Error, couldn’t init Lowlevel part

А т.к. флешки немає, то система продовжить нормальний процес завантаження.

Але якщо вставити флешку (навіть порожню) і включитив розетку, то на екрані коротко майнеSOFTWARE UPGRADE ERROR :

приставки

А в консолі побачимо наступне (далі виділено мною):

not found osd language env.reading/flash.bin

** Завершити read «/flash.bin» від usb 0:1 ** cmd fatload usb 0 80000000 /flash.bin 0x400000 failed не надано osd language env. cmd setenv USBUpdateFail 1 success cmd setenv USBUpdateFlag 0 success

Приставка шукає файлflash.bin розміром 4 мегабайти (4194304 байти).

Але якщо спробувати підсунути їй звичайний десь злитий чи підготовлений дамп, просто перейменований уflash.bin, то все одно нічого не буде — коротко промайне написLOADING DATA… :

приставки
Але відразу все одно закінчиться помилкою -SOFTWARE UPGRADE ERROR :

відновлення
Проте в консолі можна помітити:

not found osd language env. reading/flash.bin

4194304 bytes read cmd fatload usb 0 80000000 /flash.bin 0x400000 success u32UbootInfoAddr: 0x4D957 K1_INFO_ADDR: 0x80000 AppMagicCRC check error !! not found osd language env.

Тобто. файлflash.bin не сподобався їй, тому що він не має наприкінці контрольної суми CRC-32.

Треба підрахувати CRC-32 перших 419430 байт дампа, а потім в останні 4 байта вбити саму CRC-32 в зворотному порядку.

Підрахунок можна зробити за допомогою однієї з програм або в Інтернеті,вибравши варіант CRC-32B: натискаємо кнопкуВиберіть файл і вказуємо на підготовлений файл дампа з першими 4194300 байтами (тобто без останніх 4 байт!). І потім нижче натискаємо кнопкуПеретворити файл.

Після завантаження підготовленого файлу та підрахунку CRC-32 результат буде виглядати приблизно так:

Тепер отримані 4 байти B8 C5 12 6C вбиваємо в кінецьflash.bin у зворотному порядку: 6C 12 C5 B8.

Встромляємо флешку зflash.bin у приставку і включаємо приставкуу розетку.

Результат (виділено найважливіше):

not found osd language env. reading/flash.bin

4194304 bytes read cmd fatload usb 0 80000000 /flash.bin 0x400000 success u32UbootInfoAddr: 0x4D957 K1_INFO_ADDR: 0x80000 AppMagicCRC check success !! spi_wrc 0x80000000 0x00000 0x400000 0 offset 0x0, size 0x400000 Flash is detected (0x0C00, 0xC8, 0x40, 0in16) MDrv_SERFLASH_GetInfo() u32AccessWidth = 1 u32TotalSize = 4194304 u32SecNum = 64 u32SecSize = 65536Erasing… Writing. cmd spi_wrc 0x80000000 0x00000 0x400000 success not found osd language env. spi_rdc 0x80B00000 0x23000 0x10000 offset 0x23000, size 0x10000 WARNING: it better to set flash start addr aligned to 65536 . cmd spi_rdc 0x80B00000 0x23000 0x10000 success u32UbootInfoAddr: 0x4D957 K1_INFO_ADDR: 0x80000 spi_rdc 0x80B00 0x80000, size 0x10000 cmd spi_rdc 0x80B00000 0x80000 0x10000 success setenv bootcmd ' spi_rdc 0x80B00000 0x8001C 0x2AFBE1; LzmaDec 0x80B00000 0x2AFBE1 0x80000180 0x81000000; go 0x80000224; cmd setenv bootcmd ‘ spi_rdc 0x80B00000 0x8001C 0x2AFBE1; LzmaDec 0x80B00000 0x2AFBE10x80000180 0x81000000; go 0x80000224; success Забезпечити навколишнє середовище... Flash is detected (0x0C00, 0xC8, 0x40, 0x16) Write addr=0x003E0000, size=0x00010000

0000 5>cmd saveenv successcmd setenv USBUpdateFail 0 success cmd setenv USBUpdateFlag 0 success Saving Environment to spiflash…

Цей же процес на екрані:

після

І просто для порівняння - стандартне оновлення приставки через флешку -UPGRADINGSOFTWARE :

прошивки

При звичайному оновленні назва може бути не тільки usb_upgrade_all_flash.bin, але в принципі будь-яким. А ось при процедурі відновлення тількиflash.bin з обов'язковою CRC-32 в кінці файлу.

Невипадково вище виділяв - встромитив розетку, т.к. процес відновлення запускається тільки при холодному старті . З чергового режиму перевіркаflash.bin не відбувається.

Після завершення відновленнявидаліть з флешки файл flash.bin, щоб приставка не прошивалася щоразу при включенні в розетку або зникнення електроенергії.

Отже, ще раз по кроках:

  1. Знайти/завантажити або створити з прошивки файл дампа (4194304 байта).
  2. Підрахувати CRC-32 перших 419430 байт дампа. Для цього краще створити окремий файл.
  3. Отримані 4 байти CRC-32 вбити в кінець дампа у зворотному порядку.
  4. Перейменувати файл дампаflash.bin і скопіювати на чисту флешку.
  5. Вставити флешку у приставку.
  6. Увімкніть приставку в розетку.
  7. Спостерігайте на екрані за процесом.
  8. Після відновлення видалити з флешки файлflash.bin !

Зауважу, що у деяких прошивках можливість аварійного відновленнявідсутня: при включенні в розетку на консолі не видно звернень до файлу. Але, звичайно, все одно варто перевірити даний спосіб, а потім уже звернутися до попереднього.

Яким способом скористатися кожен вирішує сам: комусь простіше купити універсальний пульт, повернувши собі управління приставкою, для когось володіння паяльником і програматором не проблема, ну а хтось, не вдаючись до витрат, може спробувати відновити лише одну силою розуму.

У будь-якому випадку, як завжди, варто ще раз нагадати:

ВСЕ, ЩО ВИ РОБИТЕ ЗІ СВОЇМ ПРИСТАВКОЮ, ВИ РОБИТЕ НА СВІЙ СТРАХ І РИЗИК!