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

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


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


Общий принцип:
'''ВНИМАНИЕ''': при этом способе полностью перезаписывается внутренний накопитель Wiren Board. Все пользовательские данные будут потеряны. Если вы хотите их сохранить, смотрите статью [[Пропажа файлов при обновлении прошивки]].
С помощью программы '''mxsldr''' мы загружаем непосредственно в процессор контроллера «программу» wb5_usbfw.sb, которая выполняясь на нем дает доступ к внутреннему накопителю как к флешке. То есть внутренний диск доступен целиком. И мы на него записываем «образ», прямо с таблицей разделов и содержимым.


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


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

Версия 20:30, 31 марта 2020

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

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

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

Инструкция для компьютера с Linux

  1. Скачайте в одну папку:
    • wb5_usbfw.sb.
    • mxsldr. Если у вас настольный компьютер, скачайте mxsldr.bin (архитектура amd64). Если у вас другое устройство с Linux (например, Raspberry Pi), соберите mxsldr по инструкции. Переименуйте файл в mxsldr.
    • прошивку. На странице https://github.com/contactless/wirenboard/releases найдите файл для вашей версии платы с расширением .img.zip, скачайте и разархивируйте.
    Все дальнейшие команды выполняйте в этой папке.
  2. Выключите контроллер.
  3. Определите тип процессорного модуля: обычный или индустриальный. Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
    • обычная версия: SanDisk,
    • индустриальная версия: 6VA18JW983.
  4. Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки. Для industrial версии подключение по Debug USB в процессе прошивки - обязательно.
  5. Перейдите в папку с собранным mxsldr.
  6. Затем:
    • (для версии WB5.3) замкните перемычку FW рядом с разъёмом Micro USB;
    • (для версии WB5.6+) зажмите маленькую кнопку рядом с разъёмом Micro USB.
  7. Не снимая перемычку/не отпуская кнопку, подключите к контроллеру питание, подождите несколько секунд и запустите на компьютере
    $ sudo ./mxsldr /X/XX/wb5_usbfw.sb
    
    Где /X/XX/wb5_usbfw.sb - это путь к скачанному файлу.
  8. При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
  9. Затем:
    • (для версии WB5.3) снимите пермычку FW;
    • (для версии WB5.6+) отпустите кнопку FW.
  10. Поймите, как в вашей системе определился новый накопитель (например, как /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
    
    для того, чтобы узнать, как накопитель определился в системе.
  11. Важно! Операционная система вашего компьютера может автоматически подмонтировать разделы диска контроллера, которые появятся после выполнения команды mxsldr. В этом случае запись прошивки не выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой mount — в выводе не должны упоминаться диски контроллера вида /dev/sdbN — как в этом примере), и отмонтируйте все такие смонитрованнные разделы командой umount /dev/sdbN.
  12. Внимание! Если вы ошибётесь с определением имени накопителя, и в следующем пункте подставите название, соответствующее другому вашему накопителю, его содержимое будет потеряно.
  13. Чтобы записать прошивку в контроллер, замените в команде ниже
    • /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
    
  14. После завершения записи отключите контроллер от USB, отключите питание от контроллера и включите снова.