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

Материал из Wiren Board
м (Добавил ссылку на статью о работе с файлами контроллера.)
 
(не показаны 22 промежуточные версии 3 участников)
Строка 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 как накопитель и записать на него прошивку.
 
Общий принцип:
С помощью программы '''mxsldr''' мы загружаем непосредственно в процессор контроллера «программу» wb5_usbfw.sb, которая выполняясь на нем дает доступ к внутреннему накопителю как к флешке. То есть внутренний диск доступен целиком. И мы на него записываем «образ», прямо с таблицей разделов и содержимым.
 
При возникновении проблем, читайте тему [https://support.wirenboard.com/t/pri-proshivke-wb5-oshibka/7130/44 Если не получается обновить Wiren Board 5.5].
 
== Подготовка ==
 
=== ПК с ОС Linux ===
Восстановление прошивки мы будем производить на компьютере с операционной системой Linux:
# Создайте в любом месте папку '''wbupdate''' и перейдите в неё — сюда мы будем сохранять все файлы.
# Скачайте файлы
#* [https://github.com/wirenboard/wirenboard/raw/9e8ae166e0347dcf1011b9284ed3e397e20b5f91/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb]
#* mxsldr:
#** если у вас настольный компьютер с архитектурой 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>, для этого откройте консоль, перейдите в папку с распакованными файлами и выполните:
#:<syntaxhighlight lang="bash">
sudo chmod +x ./mxsldr
</syntaxhighlight>


'''ВНИМАНИЕ''': при этом способе полностью перезаписывается внутренний накопитель Wiren Board. Все пользовательские данные будут потеряны. Если вы хотите сохранить свои файлы и настройки — сделайте их резервную копию, подключив контроллер к ПК для [[Просмотр_файлов_контроллера_с_компьютера|просмотра файлов]].
=== ПК с ОС Windows ===
Мы не рекомендуем использовать Windows для прошивки контроллера, но вы можете это сделать одним из способов:
# Создайте [https://omgubuntu.ru/create-live-usb-of-ubuntu-in-windows/ загрузочную флешку с ОС Linux] и используйте её.
# Загрузите утилиты для Windows [[File:Mxsldr_win.7z]] и используйте инструкцию для Linux, учитывая особенности ОС Windows. Подробнее читайте на [https://support.wirenboard.com/t/pri-proshivke-wb5-oshibka/7130/39?u=brainroot форуме].


Сам принцип обновления таков:
== Подключение контроллера ==
С помощью программы '''mxsldr''' мы загружаем непосредственно в процессор контроллера "программу" wb5_usbfw.sb, которая выполняясь на нем дает доступ к внутреннему накопителю как к флешке. То есть внутренний диск доступен целиком. И мы на него записываем "образ", прямо с таблицей разделов и содержимым.
[[Image: Dmesg.png|400px|thumb|right| Вид вывода команды <code>sudo dmesg <nowiki>|</nowiki> tail</code>. Нужный накопитель — '''/dev/sdb''']]
В процессе прошивки у вас будет открыто два окна: окно консоли операционной системы персонального компьютера и окно Debug-консоли контроллера.


== Инструкция для компьютера с Linux == <!--T:3-->
# Выключите контроллер.
# Соедините оба Micro USB контроллера с компьютером и подключитесь к [[Debug UART | Debug-консоли]].
# В зависимости от ревизии контроллера:
#* Wiren Board 5.3 — замкните перемычку FW рядом с разъёмом Micro USB.
#* Wiren Board 5.6  выше — нажмите маленькую кнопку рядом с разъёмом Micro USB.
# Не снимая перемычку или не размыкая кнопки, включите контроллер.


<!--T:4-->
# Подождите пять секунд и в консоли компьютера выполните команду
#Скачайте в одну папку:
#: <syntaxhighlight lang="bash">
#*[https://github.com/contactless/wirenboard/raw/master/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb];
sudo ./mxsldr wb5_usbfw.sb
#*mxsldr:
</syntaxhighlight>
#** если у вас настольный компьютер/ноутбук, скачайте [[Media:Mxsldr.bin|mxsldr.bin]] (архитектура amd64);
#: пример успешного выполнения команды:
#** если у вас другое устройство с Linux (например, Raspberry Pi), соберите mxsldr по [[Special:MyLanguage/Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|инструкции]].
#:<syntaxhighlight lang="console">
#*:Переименуйте скачанный или собранный файл в mxsldr;
$ sudo ./mxsldr wb5_usbfw.sb
#*прошивку:
Detected: i.MX28  
#**на странице [https://github.com/contactless/wirenboard/releases https://github.com/contactless/wirenboard/releases] найдите файл для вашей версии платы с расширением <code>.img.zip</code>, скачайте и разархивируйте.
#:Все дальнейшие команды выполняйте в этой папке.
#Выключите контроллер.
#Определите тип процессорного модуля: обычный или индустриальный. Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
#*обычная версия: SanDisk,
#*индустриальная версия: 6VA18JW983.
#Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. ''Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки.'' Для industrial версии подключение по Debug USB в процессе прошивки - '''обязательно'''.
#Выполните <syntaxhighlight lang="bash">sudo chmod +x mxsldr</syntaxhighlight>
#Затем:
#* (для версии WB5.3) замкните перемычку FW рядом с разъёмом Micro USB;
#* (для версии WB5.6+) зажмите маленькую кнопку рядом с разъёмом Micro USB.
#Не снимая перемычку/не отпуская кнопку, подключите к контроллеру питание, подождите несколько секунд и запустите на компьютере <syntaxhighlight lang="bash">sudo ./mxsldr wb5_usbfw.sb</syntaxhighlight> <br> Получим при успешном выполнении программы: <br> <syntaxhighlight lang="bash"> Detected: i.MX28  
Chip ID:          0x2800
Chip ID:          0x2800
Chip Revision:    0x0001
Chip Revision:    0x0001
Строка 37: Строка 58:
Protocol Version: 0x0100
Protocol Version: 0x0100
</syntaxhighlight>
</syntaxhighlight>
#При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
# Подождите ещё около 10 секунд, пока индикатор контроллера не начнёт мигать зелёным, а на компьютере не определится флеш-накопитель.
#Затем:
# Узнайте с каким именем в вашей системе определился накопитель контроллера, для этого выполните команду:
#* (для версии WB5.3) снимите пермычку FW;
#:<syntaxhighlight lang="bash">
#* (для версии WB5.6+) отпустите кнопку FW.
sudo dmesg | tail
#Поймите, как в вашей системе определился новый накопитель (например, как ''/dev/sdb''). Это можно посмотреть в выводе
</syntaxhighlight>
#:<syntaxhighlight lang="bash">dmesg | tail</syntaxhighlight>
#: найдите в выводе команды строчку вида <code>[sd*] Write protect is off</code>, где '''sd*''' — имя накопителя контроллера. Если такой строчки нет, то выполните в Debug-консоли контроллера:
#:[[File:Dmesg.png |600px|thumb|center|Вид вывода команды dmesg | tail. Нужный накопитель - /dev/sdb]]
#:<syntaxhighlight lang="bash">
#:Также можно использовать для определения вывод <syntaxhighlight lang="bash">fdisk -l</syntaxhighlight>
/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"
#:[[File:fdisk_l.png |600px|thumb|center|Вид вывода команды fdisk -l Нужный накопитель - /dev/sdd]]
</syntaxhighlight>
#:''Примечание:''
#: и снова запустите команду <code>dmesg | tail</code>.
#:Если у вас индустриальная версия процессорного модуля и вывод команды не совпадает с указанным на скриншоте (нет устройства вида "sd*"), то нужно открыть 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>  
#:для того, чтобы узнать, как накопитель определился в системе.
#'''Важно!''' Операционная система вашего компьютера может автоматически подмонтировать разделы диска контроллера, которые появятся после выполнения команды ''mxsldr''. В этом случае запись прошивки не выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой ''mount'' — в выводе не должны упоминаться диски контроллера вида /dev/sd'''b'''''N'' — как в этом примере), и отмонтируйте все такие смонитрованнные разделы командой ''umount /dev/sdbN''.
#Замените в команде ниже:
#* XXXXX_emmc_wb5.img на название файла прошивки,
#* /dev/sdX на название накопителя, под которым Wiren Board определился в системе. Это должно быть название накопителя, а не раздела - то есть без цифр;
#*: '''ВНИМАНИЕ''': если вы по ошибке подставите название, соответствующее другому вашему накопителю, его содержимое будет потеряно!
#* выполните команду <syntaxhighlight lang="bash">sudo dd if=XXXXX_emmc_wb5.img of=/dev/sdX bs=1M conv=fdatasync && sync</syntaxhighlight>
#После завершения записи отключите кабель Micro-USB от контроллера, а затем отключите и включите питание контроллера.
</translate>


== Инструкция для компьютера с Windows == <!--T:3-->
== Прошивка ==
'''в процессе редактирования'''
{{note|warn|Команды ниже работают только на Wiren Board 5! Попытка их выполнить на другой версии контроллера гарантированного его сломает и случай будет негарантийным.}}
'''Важно!''' Операционная система вашего компьютера может автоматически примонтировать разделы диска контроллера, которые появятся после выполнения команды <code>mxsldr</code>. В этом случае запись прошивки не выполнится успешно. Перед выполнением следующих пунктов проверьте, что ни один из разделов диска контроллера не смонтирован (командой mount — в выводе не должны упоминаться диски контроллера вида <code>/dev/sdbN</code> — как в этом примере), и отмонтируйте все такие смонтированные разделы командой <code>umount /dev/sdbN</code>.


<!--T:4-->
Запишем образ прошивки с именем '''firmware.img''' на диск '''/dev/sdX''', замените имя файла и диска не свои:
#Скачайте:
<syntaxhighlight lang="bash">
#*[https://github.com/contactless/wirenboard/raw/master/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb];
sudo dd if=firmware.img of=/dev/sdX bs=1M conv=fdatasync && sync
#*[https://wirenboard.com/wiki/images/2/23/Mxsldr_win.7z Mxsldr_win.7z]
</syntaxhighlight>


Остальные действия - такие же.
Пример успешной прошивки:
Пропускаем пункт 5
<syntaxhighlight lang="console">
в пункте 7 Запускать следует sb_loader.exe wb5_usbfw.sb
$ 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>


[[Файл:Wb5-firmware_restore_win.png|200px|thumb|center|Запуск при неподключенном контроллере]]
После того как запись закончится, в консоли появится приглашение командной строки. Выключите контроллер и отсоедините MicroUSB кабели.  
Для заливки образа на контроллер (12 пункт) можно пользоваться вместо '''dd''' (версия под Win включена в архив) программой [https://sourceforge.net/projects/win32diskimager/ win32diskimager]
Прошивка контроллера завершена, после включения контроллер готов к работе.

Текущая версия на 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 кабели. Прошивка контроллера завершена, после включения контроллер готов к работе.