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

Материал из Wiren Board
 
(не показано 49 промежуточных версий 7 участников)
Строка 1: Строка 1:
<languages/>
== Введение ==
<translate>
{{YouTube
<!--T:1-->
|link= https://youtu.be/-soDnTptHhI
В 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]].
|text= Восстановление прошивки контроллера Wiren Board 5.8 из ОС Linux
}}
В Wiren Board 5 прошивка хранится в микросхеме eMMC, напаянной на плату. Чтобы заменить прошивку, контроллер нужно подключить к компьютеру с ОС Linux через порт Micro-USB как накопитель и записать на него прошивку.


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


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


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


<!--T:4-->
== Подготовка ==
#Скачайте на компьютер файл ''wb5_usbfw.sb'' [https://github.com/contactless/wirenboard/tree/master/contrib/u-boot отсюда].
 
#Соберите на компьютере программу [[Special:MyLanguage/Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|''mxsldr'']].
=== ПК с ОС Linux ===
#Скачайте на компьютер образ прошивки [https://github.com/contactless/wirenboard/releases отсюда] (расширение образа .img.zip. При скачивании выберите вариант для вашей версии платы контроллера).
Восстановление прошивки мы будем производить на компьютере с операционной системой Linux:
#Извлеките файл img из zip-архива.
# Создайте в любом месте папку '''wbupdate''' и перейдите в неё — сюда мы будем сохранять все файлы.
#Выключите контроллер.
# Скачайте файлы
#Определите тип процессорного модуля (обычный или industrial). Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
#* [https://github.com/wirenboard/wirenboard/raw/9e8ae166e0347dcf1011b9284ed3e397e20b5f91/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb]
#*Обычная версия: ''SanDisk''
#* mxsldr:
#*Industrial версия: ''6VA18JW983''
#** если у вас настольный компьютер с архитектурой amd64, то скачайте [[Media:mxsldr.zip | mxsldr.zip]] и распакуйте архив.
#Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. ''Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки.'' Для industrial версии подключение по Debug USB в процессе прошивки - '''обязательно'''.
#** если у вас другое Linux-устройство, например Raspberry Pi, то соберите mxsldr по [[Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|инструкции]].
#Перейдите в папку с собранным [[Special:MyLanguage/Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|''mxsldr'']].
#* Скачайте файл '''.img.zip''' для своей версии контроллера по ссылкам: [https://github.com/contactless/wirenboard/releases старые версии] / [http://fw-releases.wirenboard.com/ свежие версии] и распакуйте образ из архива.
#Затем:
# На компьютере разрешите запуск файла <code>mxsldr</code>, для этого откройте консоль, перейдите в папку с распакованными файлами и выполните:
#* (для версии WB5.3) замкните перемычку FW рядом с разъёмом Micro USB;
#:<syntaxhighlight lang="bash">
#* (для версии WB5.6+) зажмите маленькую кнопку рядом с разъёмом Micro USB.
sudo chmod +x ./mxsldr
#Не снимая перемычку/не отпуская кнопку, подключите к контроллеру питание, подождите несколько секунд и запустите на компьютере <syntaxhighlight lang="bash">$ sudo ./mxsldr /X/XX/wb5_usbfw.sb</syntaxhighlight> Где /X/XX/wb5_usbfw.sb - это путь к скачанному файлу.
</syntaxhighlight>
#При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
 
#Затем:
=== ПК с ОС Windows ===
#* (для версии WB5.3) снимите пермычку FW;
Мы не рекомендуем использовать Windows для прошивки контроллера, но вы можете это сделать одним из способов:
#* (для версии WB5.6+) отпустите кнопку FW.
# Создайте [https://omgubuntu.ru/create-live-usb-of-ubuntu-in-windows/ загрузочную флешку с ОС Linux] и используйте её.
#Поймите, как в вашей системе определился новый накопитель (например, как ''/dev/sdb''). Это можно посмотреть в выводе
# Загрузите утилиты для Windows [[File:Mxsldr_win.7z]] и используйте инструкцию для Linux, учитывая особенности ОС Windows. Подробнее читайте на [https://support.wirenboard.com/t/pri-proshivke-wb5-oshibka/7130/39?u=brainroot форуме].
#:<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''']]
#:Если у вас '''industrial''' версия процессорного модуля и вывод команды не совпадает с указанным на скриншоте (нет устройства вида "sd*"), то нужно открыть Debug консоль контроллера и ввести в неё следующее:  
В процессе прошивки у вас будет открыто два окна: окно консоли операционной системы персонального компьютера и окно Debug-консоли контроллера.
#:<syntaxhighlight lang="bash">/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"</syntaxhighlight>
 
#:затем уже в терминале ПК снова ввести
# Выключите контроллер.
#:<syntaxhighlight lang="bash">dmesg | tail</syntaxhighlight>  
# Соедините оба Micro USB контроллера с компьютером и подключитесь к [[Debug UART | Debug-консоли]].
#:для того, чтобы узнать, как накопитель определился в системе.
# В зависимости от ревизии контроллера:
#'''Важно!''' Операционная система вашего компьютера может автоматически подмонтировать разделы диска контроллера, которые появятся после выполнения команды ''mxsldr''. В этом случае запись прошивки не выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой ''mount'' — в выводе не должны упоминаться диски контроллера вида /dev/sd'''b'''''N'' — как в этом примере), и отмонтируйте все такие смонитрованнные разделы командой ''umount /dev/sdbN''.
#* Wiren Board 5.3 замкните перемычку FW рядом с разъёмом Micro USB.
#'''Внимание! Если вы ошибётесь с определением имени накопителя, и в следующем пункте подставите название, соответствующее другому вашему накопителю, его содержимое будет потеряно.'''
#* Wiren Board 5.6 выше — нажмите маленькую кнопку рядом с разъёмом Micro USB.
#Чтобы записать прошивку в контроллер, замените в команде ниже
# Не снимая перемычку или не размыкая кнопки, включите контроллер.
#* ''/X/XX/XXXXX_emmc_wb5.img'' на путь к заранее распакованному файлу прошивки,
 
#* ''/dev/sdX'' на название раздела, под которым накопитель определился в системе,
# Подождите пять секунд и в консоли компьютера выполните команду
#: и выполните команду <syntaxhighlight lang="bash">$ sudo dd if=/X/XX/XXXXX_emmc_wb5.img of=/dev/sdX bs=1M conv=fdatasync && sync</syntaxhighlight>
#: <syntaxhighlight lang="bash">
#После завершения записи отключите контроллер от USB, отключите питание от контроллера и включите снова.
sudo ./mxsldr wb5_usbfw.sb
</translate>
</syntaxhighlight>
#: пример успешного выполнения команды:
#:<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:45, 14 августа 2023

Введение

Восстановление прошивки контроллера Wiren Board 5.8 из ОС Linux

В Wiren Board 5 прошивка хранится в микросхеме eMMC, напаянной на плату. Чтобы заменить прошивку, контроллер нужно подключить к компьютеру с ОС Linux через порт Micro-USB как накопитель и записать на него прошивку.

ВНИМАНИЕ: при этом способе полностью перезаписывается внутренний накопитель Wiren Board. Все пользовательские данные будут потеряны. Если вы хотите сохранить свои файлы и настройки — сделайте их резервную копию, подключив контроллер к ПК для просмотра файлов.

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

При возникновении проблем, читайте тему Если не получается обновить Wiren Board 5.5.

Подготовка

ПК с ОС Linux

Восстановление прошивки мы будем производить на компьютере с операционной системой Linux:

  1. Создайте в любом месте папку wbupdate и перейдите в неё — сюда мы будем сохранять все файлы.
  2. Скачайте файлы
    • wb5_usbfw.sb
    • mxsldr:
      • если у вас настольный компьютер с архитектурой amd64, то скачайте mxsldr.zip и распакуйте архив.
      • если у вас другое Linux-устройство, например Raspberry Pi, то соберите mxsldr по инструкции.
    • Скачайте файл .img.zip для своей версии контроллера по ссылкам: старые версии / свежие версии и распакуйте образ из архива.
  3. На компьютере разрешите запуск файла mxsldr, для этого откройте консоль, перейдите в папку с распакованными файлами и выполните:
    sudo chmod +x ./mxsldr
    

ПК с ОС Windows

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

  1. Создайте загрузочную флешку с ОС Linux и используйте её.
  2. Загрузите утилиты для Windows Файл:Mxsldr win.7z и используйте инструкцию для Linux, учитывая особенности ОС Windows. Подробнее читайте на форуме.

Подключение контроллера

Вид вывода команды sudo dmesg | tail. Нужный накопитель — /dev/sdb

В процессе прошивки у вас будет открыто два окна: окно консоли операционной системы персонального компьютера и окно Debug-консоли контроллера.

  1. Выключите контроллер.
  2. Соедините оба Micro USB контроллера с компьютером и подключитесь к Debug-консоли.
  3. В зависимости от ревизии контроллера:
    • Wiren Board 5.3 — замкните перемычку FW рядом с разъёмом Micro USB.
    • Wiren Board 5.6 выше — нажмите маленькую кнопку рядом с разъёмом Micro USB.
  4. Не снимая перемычку или не размыкая кнопки, включите контроллер.
  1. Подождите пять секунд и в консоли компьютера выполните команду
    sudo ./mxsldr wb5_usbfw.sb
    
    пример успешного выполнения команды:
    $ sudo ./mxsldr wb5_usbfw.sb
    Detected: i.MX28 
    Chip ID:          0x2800
    Chip Revision:    0x0001
    ROM Version:      0x0101
    Protocol Version: 0x0100
    
  2. Подождите ещё около 10 секунд, пока индикатор контроллера не начнёт мигать зелёным, а на компьютере не определится флеш-накопитель.
  3. Узнайте с каким именем в вашей системе определился накопитель контроллера, для этого выполните команду:
    sudo dmesg | tail
    
    найдите в выводе команды строчку вида [sd*] Write protect is off, где sd* — имя накопителя контроллера. Если такой строчки нет, то выполните в Debug-консоли контроллера:
    /sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"
    
    и снова запустите команду dmesg | tail.

Прошивка

Команды ниже работают только на Wiren Board 5! Попытка их выполнить на другой версии контроллера гарантированного его сломает и случай будет негарантийным. Важно! Операционная система вашего компьютера может автоматически примонтировать разделы диска контроллера, которые появятся после выполнения команды mxsldr. В этом случае запись прошивки не выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой mount — в выводе не должны упоминаться диски контроллера вида /dev/sdbN — как в этом примере), и отмонтируйте все такие смонтированные разделы командой umount /dev/sdbN.

Запишем образ прошивки с именем firmware.img на диск /dev/sdX, замените имя файла и диска не свои:

sudo dd if=firmware.img of=/dev/sdX bs=1M conv=fdatasync && sync

Пример успешной прошивки:

$ 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

После того как запись закончится, в консоли появится приглашение командной строки. Выключите контроллер и отсоедините MicroUSB кабели. Прошивка контроллера завершена, после включения контроллер готов к работе.