Wiren Board 5: Восстановление прошивки: различия между версиями

Материал из Wiren Board
(не показано 55 промежуточных версий 8 участников)
Строка 1: Строка 1:
== Введение ==
<languages/>
{{YouTube
<translate>
|link= https://youtu.be/-soDnTptHhI
<!--T:1-->
|text= Восстановление прошивки контроллера Wiren Board 5.8 из ОС Linux
В Wiren Board 5 прошивка хранится в напаянном на плате чипе eMMC. В случае проблем с загрузкой контроллера может потребоваться полная перепрошивка, которую можно осуществить через Micro USB, загрузив контроллер в режиме USB Mass-Storage Gadget с помощью утилиты [[Special:MyLanguage/Сборка образа для загрузки в режиме USB Mass-Storage#.D0.A1.D0.B1.D0.BE.D1.80.D0.BA.D0.B0_mxsldr|mxsldr]].
}}
В Wiren Board 5 прошивка хранится в микросхеме eMMC, напаянной на плату. Чтобы заменить прошивку, контроллер нужно подключить к компьютеру с ОС Linux через порт Micro-USB как накопитель и записать на него прошивку.


'''ВНИМАНИЕ''': при этом способе полностью перезаписывается внутренний накопитель Wiren Board. Все пользовательские данные будут потеряны. Если вы хотите сохранить свои файлы и настройки — сделайте их резервную копию, подключив контроллер к ПК для [[Просмотр_файлов_контроллера_с_компьютера|просмотра файлов]].
<!--T:2-->
'''Внимание: в разделе описывается полная перезапись содержимого внутреннего накопителя Wiren Board. Все пользовательские данные будут безвозвратно потеряны.''' Чтобы избежать потери данных, см. [[Special:MyLanguage/Пропажа_файлов_при_обновлении_прошивки|''соответствующий раздел.'']]


Общий принцип:
С помощью программы '''mxsldr''' мы загружаем непосредственно в процессор контроллера «программу» wb5_usbfw.sb, которая выполняясь на нем дает доступ к внутреннему накопителю как к флешке. То есть внутренний диск доступен целиком. И мы на него записываем «образ», прямо с таблицей разделов и содержимым.


При возникновении проблем, читайте тему [https://support.wirenboard.com/t/pri-proshivke-wb5-oshibka/7130/44 Если не получается обновить Wiren Board 5.5].
== Пошаговая инструкция для Linux == <!--T:3-->


== Подготовка ==
<!--T:4-->
 
#Скачайте на компьютер файл ''wb5_usbfw.sb'' [https://github.com/contactless/wirenboard/tree/master/contrib/u-boot отсюда].
=== ПК с ОС Linux ===
#Соберите на компьютере программу [[Special:MyLanguage/Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|''mxsldr'']].
Восстановление прошивки мы будем производить на компьютере с операционной системой Linux:
#Скачайте на компьютер образ прошивки [https://github.com/contactless/wirenboard/releases отсюда] (расширение образа .img.zip. При скачивании выберите вариант для вашей версии платы контроллера).
# Создайте в любом месте папку '''wbupdate''' и перейдите в неё — сюда мы будем сохранять все файлы.
#Извлеките файл img из zip-архива.
# Скачайте файлы
#Выключите контроллер.
#* [https://github.com/wirenboard/wirenboard/raw/9e8ae166e0347dcf1011b9284ed3e397e20b5f91/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb]
#Определите тип процессорного модуля (обычный или industrial). Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
#* mxsldr:
#*Обычная версия: ''SanDisk''
#** если у вас настольный компьютер с архитектурой amd64, то скачайте [[Media:mxsldr.zip | mxsldr.zip]] и распакуйте архив.
#*Industrial версия: ''6VA18JW983''
#** если у вас другое Linux-устройство, например Raspberry Pi, то соберите mxsldr по [[Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|инструкции]].
#Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. ''Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки.'' Для industrial версии подключение по Debug USB в процессе прошивки - '''обязательно'''.
#* Скачайте файл '''.img.zip''' для своей версии контроллера по ссылкам: [https://github.com/contactless/wirenboard/releases старые версии] / [http://fw-releases.wirenboard.com/ свежие версии] и распакуйте образ из архива.
#Перейдите в папку с собранным [[Special:MyLanguage/Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|''mxsldr'']].
# На компьютере разрешите запуск файла <code>mxsldr</code>, для этого откройте консоль, перейдите в папку с распакованными файлами и выполните:
#Затем:
#:<syntaxhighlight lang="bash">
#* (для версии WB5.3) замкните перемычку FW рядом с разъёмом Micro USB;
sudo chmod +x ./mxsldr
#* (для версии WB5.6+) зажмите маленькую кнопку рядом с разъёмом Micro USB.
</syntaxhighlight>
#Не снимая перемычку/не отпуская кнопку, подключите к контроллеру питание, подождите несколько секунд и запустите на компьютере <syntaxhighlight lang="bash">$ sudo ./mxsldr /X/XX/wb5_usbfw.sb</syntaxhighlight> Где /X/XX/wb5_usbfw.sb - это путь к скачанному файлу.
 
#При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
=== ПК с ОС Windows ===
#Затем:
Мы не рекомендуем использовать Windows для прошивки контроллера, но вы можете это сделать одним из способов:
#* (для версии WB5.3) снимите пермычку FW;
# Создайте [https://omgubuntu.ru/create-live-usb-of-ubuntu-in-windows/ загрузочную флешку с ОС Linux] и используйте её.
#* (для версии WB5.6+) отпустите кнопку FW.
# Загрузите утилиты для Windows [[File:Mxsldr_win.7z]] и используйте инструкцию для Linux, учитывая особенности ОС Windows. Подробнее читайте на [https://support.wirenboard.com/t/pri-proshivke-wb5-oshibka/7130/39?u=brainroot форуме].
#Поймите, как в вашей системе определился новый накопитель (например, как ''/dev/sdb''). Это можно посмотреть в выводе
 
#:<syntaxhighlight lang="bash">dmesg | tail</syntaxhighlight>
== Подключение контроллера ==
#:[[File:Dmesg.png |600px|thumb|center|Вид вывода команды dmesg | tail. Нужный накопитель - /dev/sdb]]
[[Image: Dmesg.png|400px|thumb|right| Вид вывода команды <code>sudo dmesg <nowiki>|</nowiki> tail</code>. Нужный накопитель — '''/dev/sdb''']]
#:''Примечание:''
В процессе прошивки у вас будет открыто два окна: окно консоли операционной системы персонального компьютера и окно Debug-консоли контроллера.
#:Если у вас '''industrial''' версия процессорного модуля и вывод команды не совпадает с указанным на скриншоте (нет устройства вида "sd*"), то нужно открыть Debug консоль контроллера и ввести в неё следующее:  
 
#:<syntaxhighlight lang="bash">/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"</syntaxhighlight>
# Выключите контроллер.
#:затем уже в терминале ПК снова ввести
# Соедините оба Micro USB контроллера с компьютером и подключитесь к [[Debug UART | Debug-консоли]].
#:<syntaxhighlight lang="bash">dmesg | tail</syntaxhighlight>  
# В зависимости от ревизии контроллера:
#:для того, чтобы узнать, как накопитель определился в системе.
#* Wiren Board 5.3 замкните перемычку FW рядом с разъёмом Micro USB.
#'''Важно!''' Операционная система вашего компьютера может автоматически подмонтировать разделы диска контроллера. В этом случае запись прошивки не может выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой ''mount''), и отмонтируйте все такие смонитрованнные разделы командой ''umount /dev/sdXn''.
#* Wiren Board 5.6 выше — нажмите маленькую кнопку рядом с разъёмом Micro USB.
#:'''Внимание! Если вы ошибётесь с определением имени накопителя, и в следующем пункте подставите название, соответствующее другому вашему накопителю, его содержимое будет потеряно.'''
# Не снимая перемычку или не размыкая кнопки, включите контроллер.
#Чтобы записать прошивку в контроллер, замените в команде ниже
 
#* ''/X/XX/XXXXX_emmc_wb5.img'' на путь к заранее распакованному файлу прошивки,
# Подождите пять секунд и в консоли компьютера выполните команду
#* ''/dev/sdX'' на название раздела, под которым накопитель определился в системе,
#: <syntaxhighlight lang="bash">
#: и выполните команду <syntaxhighlight lang="bash">$ sudo dd if=/X/XX/XXXXX_emmc_wb5.img of=/dev/sdX bs=1M conv=fdatasync && sync</syntaxhighlight>
sudo ./mxsldr wb5_usbfw.sb
#После завершения записи отключите контроллер от USB, отключите питание от контроллера и включите снова.
</syntaxhighlight>
</translate>
#: пример успешного выполнения команды:
#:<syntaxhighlight lang="console">
$ sudo ./mxsldr wb5_usbfw.sb
Detected: i.MX28
Chip ID:          0x2800
Chip Revision:    0x0001
ROM Version:      0x0101
Protocol Version: 0x0100
</syntaxhighlight>
# Подождите ещё около 10 секунд, пока индикатор контроллера не начнёт мигать зелёным, а на компьютере не определится флеш-накопитель.
# Узнайте с каким именем в вашей системе определился накопитель контроллера, для этого выполните команду:
#:<syntaxhighlight lang="bash">
sudo dmesg | tail
</syntaxhighlight>
#: найдите в выводе команды строчку вида <code>[sd*] Write protect is off</code>, где '''sd*''' — имя накопителя контроллера. Если такой строчки нет, то выполните в Debug-консоли контроллера:
#:<syntaxhighlight lang="bash">
/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"
</syntaxhighlight>
#: и снова запустите команду <code>dmesg | tail</code>.
 
== Прошивка ==
{{note|warn|Команды ниже работают только на Wiren Board 5! Попытка их выполнить на другой версии контроллера гарантированного его сломает и случай будет негарантийным.}}
'''Важно!''' Операционная система вашего компьютера может автоматически примонтировать разделы диска контроллера, которые появятся после выполнения команды <code>mxsldr</code>. В этом случае запись прошивки не выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой mount — в выводе не должны упоминаться диски контроллера вида <code>/dev/sdbN</code> — как в этом примере), и отмонтируйте все такие смонтированные разделы командой <code>umount /dev/sdbN</code>.
 
Запишем образ прошивки с именем '''firmware.img''' на диск '''/dev/sdX''', замените имя файла и диска не свои:
<syntaxhighlight lang="bash">
sudo dd if=firmware.img of=/dev/sdX bs=1M conv=fdatasync && sync
</syntaxhighlight>
 
Пример успешной прошивки:
<syntaxhighlight lang="console">
$ sudo dd if=201906131405_emmc_wb58.img of=/dev/sdc bs=1M conv=fdatasync && sync
615+0 записей получено
615+0 записей отправлено
644874240 байт (645 MB, 615 MiB) скопирован, 42,8601 s, 15,0 MB/s
</syntaxhighlight>
 
После того как запись закончится, в консоли появится приглашение командной строки. Выключите контроллер и отсоедините MicroUSB кабели.  
Прошивка контроллера завершена, после включения контроллер готов к работе.

Версия 12:57, 27 июня 2019

Другие языки:

В Wiren Board 5 прошивка хранится в напаянном на плате чипе eMMC. В случае проблем с загрузкой контроллера может потребоваться полная перепрошивка, которую можно осуществить через Micro USB, загрузив контроллер в режиме USB Mass-Storage Gadget с помощью утилиты mxsldr.

Внимание: в разделе описывается полная перезапись содержимого внутреннего накопителя Wiren Board. Все пользовательские данные будут безвозвратно потеряны. Чтобы избежать потери данных, см. соответствующий раздел.


Пошаговая инструкция для Linux

  1. Скачайте на компьютер файл wb5_usbfw.sb отсюда.
  2. Соберите на компьютере программу mxsldr.
  3. Скачайте на компьютер образ прошивки отсюда (расширение образа .img.zip. При скачивании выберите вариант для вашей версии платы контроллера).
  4. Извлеките файл img из zip-архива.
  5. Выключите контроллер.
  6. Определите тип процессорного модуля (обычный или industrial). Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
    • Обычная версия: SanDisk
    • Industrial версия: 6VA18JW983
  7. Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки. Для industrial версии подключение по Debug USB в процессе прошивки - обязательно.
  8. Перейдите в папку с собранным mxsldr.
  9. Затем:
    • (для версии WB5.3) замкните перемычку FW рядом с разъёмом Micro USB;
    • (для версии WB5.6+) зажмите маленькую кнопку рядом с разъёмом Micro USB.
  10. Не снимая перемычку/не отпуская кнопку, подключите к контроллеру питание, подождите несколько секунд и запустите на компьютере
    $ sudo ./mxsldr /X/XX/wb5_usbfw.sb
    
    Где /X/XX/wb5_usbfw.sb - это путь к скачанному файлу.
  11. При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
  12. Затем:
    • (для версии WB5.3) снимите пермычку FW;
    • (для версии WB5.6+) отпустите кнопку FW.
  13. Поймите, как в вашей системе определился новый накопитель (например, как /dev/sdb). Это можно посмотреть в выводе
    dmesg | tail
    
    tail. Нужный накопитель - /dev/sdb
    Примечание:
    Если у вас industrial версия процессорного модуля и вывод команды не совпадает с указанным на скриншоте (нет устройства вида "sd*"), то нужно открыть Debug консоль контроллера и ввести в неё следующее:
    /sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"
    
    затем уже в терминале ПК снова ввести
    dmesg | tail
    
    для того, чтобы узнать, как накопитель определился в системе.
  14. Важно! Операционная система вашего компьютера может автоматически подмонтировать разделы диска контроллера. В этом случае запись прошивки не может выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой mount), и отмонтируйте все такие смонитрованнные разделы командой umount /dev/sdXn.
    Внимание! Если вы ошибётесь с определением имени накопителя, и в следующем пункте подставите название, соответствующее другому вашему накопителю, его содержимое будет потеряно.
  15. Чтобы записать прошивку в контроллер, замените в команде ниже
    • /X/XX/XXXXX_emmc_wb5.img на путь к заранее распакованному файлу прошивки,
    • /dev/sdX на название раздела, под которым накопитель определился в системе,
    и выполните команду
    $ sudo dd if=/X/XX/XXXXX_emmc_wb5.img of=/dev/sdX bs=1M conv=fdatasync && sync
    
  16. После завершения записи отключите контроллер от USB, отключите питание от контроллера и включите снова.