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

Материал из Wiren Board
(Добавил пример вывода mxsldr wb5_usbfw.sb)
(не показаны 24 промежуточные версии 3 участников)
Строка 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].
Сам принцип обновления таков:
С помощью программы '''mxsldr''' мы загружаем непосредственно в процессор контроллера "программу" wb5_usbfw.sb, которая выполняясь на нем дает доступ к внутреннему накопителю как к флешке. То есть внутренний диск доступен целиком. И мы на него записываем "образ", прямо с таблицей разделов и содержимым.


== Подготовка ==
== Инструкция для компьютера с Linux == <!--T:3-->


=== ПК с ОС Linux ===
<!--T:4-->
Восстановление прошивки мы будем производить на компьютере с операционной системой Linux:
#Скачайте в одну папку:
# Создайте в любом месте папку '''wbupdate''' и перейдите в неё — сюда мы будем сохранять все файлы.
#*[https://github.com/contactless/wirenboard/raw/master/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb];
# Скачайте файлы
#*mxsldr:
#* [https://github.com/wirenboard/wirenboard/raw/9e8ae166e0347dcf1011b9284ed3e397e20b5f91/contrib/u-boot/wb5_usbfw.sb wb5_usbfw.sb]
#** если у вас настольный компьютер/ноутбук, скачайте [[Media:Mxsldr.bin|mxsldr.bin]] (архитектура amd64);
#* mxsldr:
#** если у вас другое устройство с Linux (например, Raspberry Pi), соберите mxsldr по [[Special:MyLanguage/Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|инструкции]].
#** если у вас настольный компьютер с архитектурой amd64, то скачайте [[Media:mxsldr.zip | mxsldr.zip]] и распакуйте архив.
#*:Переименуйте скачанный или собранный файл в mxsldr;
#** если у вас другое Linux-устройство, например Raspberry Pi, то соберите mxsldr по [[Сборка_образа_для_загрузки_в_режиме_USB_Mass-Storage#Сборка mxsldr|инструкции]].
#*прошивку:
#* Скачайте файл '''.img.zip''' для своей версии контроллера по ссылкам: [https://github.com/contactless/wirenboard/releases старые версии] / [http://fw-releases.wirenboard.com/ свежие версии] и распакуйте образ из архива.
#**на странице [https://github.com/contactless/wirenboard/releases https://github.com/contactless/wirenboard/releases] найдите файл для вашей версии платы с расширением <code>.img.zip</code>, скачайте и разархивируйте.
# На компьютере разрешите запуск файла <code>mxsldr</code>, для этого откройте консоль, перейдите в папку с распакованными файлами и выполните:
#:Все дальнейшие команды выполняйте в этой папке.
#:<syntaxhighlight lang="bash">
#Выключите контроллер.
sudo chmod +x ./mxsldr
#Определите тип процессорного модуля: обычный или индустриальный. Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
</syntaxhighlight>
#*обычная версия: SanDisk,
 
#*индустриальная версия: 6VA18JW983.
=== ПК с ОС Windows ===
#Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. ''Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки.'' Для industrial версии подключение по Debug USB в процессе прошивки - '''обязательно'''.
Мы не рекомендуем использовать Windows для прошивки контроллера, но вы можете это сделать одним из способов:
#Выполните <syntaxhighlight lang="bash">sudo chmod +x mxsldr</syntaxhighlight>
# Создайте [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 форуме].
#* (для версии 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  
[[Image: Dmesg.png|400px|thumb|right| Вид вывода команды <code>sudo dmesg <nowiki>|</nowiki> tail</code>. Нужный накопитель — '''/dev/sdb''']]
В процессе прошивки у вас будет открыто два окна: окно консоли операционной системы персонального компьютера и окно Debug-консоли контроллера.
 
# Выключите контроллер.
# Соедините оба Micro USB контроллера с компьютером и подключитесь к [[Debug UART | Debug-консоли]].
# В зависимости от ревизии контроллера:
#* Wiren Board 5.3 замкните перемычку FW рядом с разъёмом Micro USB.
#* Wiren Board 5.6 выше — нажмите маленькую кнопку рядом с разъёмом Micro USB.
# Не снимая перемычку или не размыкая кнопки, включите контроллер.
 
# Подождите пять секунд и в консоли компьютера выполните команду
#: <syntaxhighlight lang="bash">
sudo ./mxsldr wb5_usbfw.sb
</syntaxhighlight>
#: пример успешного выполнения команды:
#:<syntaxhighlight lang="console">
$ sudo ./mxsldr wb5_usbfw.sb
Detected: i.MX28  
Chip ID:          0x2800
Chip ID:          0x2800
Chip Revision:    0x0001
Chip Revision:    0x0001
Строка 58: Строка 37:
Protocol Version: 0x0100
Protocol Version: 0x0100
</syntaxhighlight>
</syntaxhighlight>
# Подождите ещё около 10 секунд, пока индикатор контроллера не начнёт мигать зелёным, а на компьютере не определится флеш-накопитель.
#При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
# Узнайте с каким именем в вашей системе определился накопитель контроллера, для этого выполните команду:
#Затем:
#:<syntaxhighlight lang="bash">
#* (для версии WB5.3) снимите пермычку FW;
sudo dmesg | tail
#* (для версии WB5.6+) отпустите кнопку FW.
</syntaxhighlight>
#Поймите, как в вашей системе определился новый накопитель (например, как ''/dev/sdb''). Это можно посмотреть в выводе
#: найдите в выводе команды строчку вида <code>[sd*] Write protect is off</code>, где '''sd*''' — имя накопителя контроллера. Если такой строчки нет, то выполните в Debug-консоли контроллера:
#:<syntaxhighlight lang="bash">dmesg | tail</syntaxhighlight>
#:<syntaxhighlight lang="bash">
#:[[File:Dmesg.png |600px|thumb|center|Вид вывода команды dmesg | tail. Нужный накопитель - /dev/sdb]]
/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"
#:''Примечание:''
</syntaxhighlight>
#:Если у вас индустриальная версия процессорного модуля и вывод команды не совпадает с указанным на скриншоте (нет устройства вида "sd*"), то нужно открыть Debug консоль контроллера и ввести в неё следующее:  
#: и снова запустите команду <code>dmesg | tail</code>.
#:<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>.


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


Пример успешной прошивки:
Остальные действия - такие же.
<syntaxhighlight lang="console">
Пропускаем пункт 5
$ sudo dd if=201906131405_emmc_wb58.img of=/dev/sdc bs=1M conv=fdatasync && sync
в пункте 7 Запускать следует sb_loader.exe wb5_usbfw.sb
615+0 записей получено
615+0 записей отправлено
644874240 байт (645 MB, 615 MiB) скопирован, 42,8601 s, 15,0 MB/s
</syntaxhighlight>


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

Версия 15:13, 21 февраля 2021

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

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

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

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

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

  1. Скачайте в одну папку:
    • wb5_usbfw.sb;
    • mxsldr:
      • если у вас настольный компьютер/ноутбук, скачайте mxsldr.bin (архитектура amd64);
      • если у вас другое устройство с Linux (например, Raspberry Pi), соберите mxsldr по инструкции.
      Переименуйте скачанный или собранный файл в mxsldr;
    • прошивку:
    Все дальнейшие команды выполняйте в этой папке.
  2. Выключите контроллер.
  3. Определите тип процессорного модуля: обычный или индустриальный. Для этого посмотрите маркировку чипа памяти на плате процессорного модуля:
    • обычная версия: SanDisk,
    • индустриальная версия: 6VA18JW983.
  4. Соедините разъём Micro USB контроллера (обычно подписан как FW) с портом USB компьютера. Настоятельно рекомендуется также подключить контроллер и по Debug USB для отслеживания процесса прошивки. Для industrial версии подключение по Debug USB в процессе прошивки - обязательно.
  5. Выполните
    sudo chmod +x mxsldr
    
  6. Затем:
    • (для версии WB5.3) замкните перемычку FW рядом с разъёмом Micro USB;
    • (для версии WB5.6+) зажмите маленькую кнопку рядом с разъёмом Micro USB.
  7. Не снимая перемычку/не отпуская кнопку, подключите к контроллеру питание, подождите несколько секунд и запустите на компьютере
    sudo ./mxsldr wb5_usbfw.sb
    

    Получим при успешном выполнении программы:
     Detected: i.MX28 
    Chip ID:          0x2800
    Chip Revision:    0x0001
    ROM Version:      0x0101
    Protocol Version: 0x0100
    
  8. При успешной загрузке образа через несколько секунд замигает зеленый светодиод, память контроллера определится на компьютере как накопитель.
  9. Затем:
    • (для версии WB5.3) снимите пермычку FW;
    • (для версии WB5.6+) отпустите кнопку FW.
  10. Поймите, как в вашей системе определился новый накопитель (например, как /dev/sdb). Это можно посмотреть в выводе
    dmesg | tail
    
    tail. Нужный накопитель - /dev/sdb
    Примечание:
    Если у вас индустриальная версия процессорного модуля и вывод команды не совпадает с указанным на скриншоте (нет устройства вида "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. Замените в команде ниже:
    • XXXXX_emmc_wb5.img на название файла прошивки,
    • /dev/sdX на название накопителя, под которым Wiren Board определился в системе. Это должно быть название накопителя, а не раздела - то есть без цифр;
      ВНИМАНИЕ: если вы по ошибке подставите название, соответствующее другому вашему накопителю, его содержимое будет потеряно!
    • выполните команду
      sudo dd if=XXXXX_emmc_wb5.img of=/dev/sdX bs=1M conv=fdatasync && sync
      
  13. После завершения записи отключите кабель Micro-USB от контроллера, а затем отключите и включите питание контроллера.

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

в процессе редактирования

  1. Скачайте:

Остальные действия - такие же. Пропускаем пункт 5 в пункте 7 Запускать следует sb_loader.exe wb5_usbfw.sb

Запуск при неподключенном контроллере

Для заливки образа на контроллер (12 пункт) можно пользоваться вместо dd (версия под Win включена в архив) программой win32diskimager