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

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


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


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


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


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