Восстановление Wb 5 после замены emmc

Добрый день. После продолжительной работы память на wb5 умерла. Т.к. он снят с производства и компоненты довольно старые не удалось приобрести ни процессорный модуль в сборке ни память такого же размера. Вместо sdin5c2-4g купил sdin5c2-8g память заменил но не удается корректно прошить контроллер.
Если просто следовать инструкции Wiren Board 5: Recovery — Wiren Board прошивка пишется в кеш и на устройстве ничего не появляется. Т.е. на компьютере определяется только sda -7,4G. Если отключить g_mass_storage и вручную создать раздел и включить g_mass_storage то на компьютере уже видно sda

8:0    0   7,4G  0 disk 
└─sda1        8:1    0   7,4G  0 part

Запись туда проходит успешно и данные записаны

sudo dd if=202202041900_stable_webupd_wb55.fit of=/dev/sda1 bs=1M conv=fdatasync && sync
165+1 записей получено
165+1 записей отправлено
173823098 байтов (174 MB, 166 MiB) скопировано, 23,899 s, 7,3 MB/s

Но wiren прежнему с ошибкой 0x8020a01d . Перекинул через сериал порт загрузчик в mmcblk0boot0 и mmcblk0boot1 но все также при обычной загрузке в консоли 0x8020a01d
Нашел инструкцию для сборки образа Сборка образа для загрузки в режиме USB Mass-Storage — Wiren Board но так как и репы переехали и у меня память 8Г не пойму как собрать корректный sb и прошивку для моего случая. Приложил логи, думаю что не очень понятные, могу заново пройти весь процесс если нужно с правильными шагами
ubuntu_log.txt (1,9 КБ)
wiren_log.txt (6,8 КБ)

Добрый день.

А для чего? Uboot отрабатывает, ядро загружает.

Вот это совершенно зря.
Перед загрузкой образа рекомендую почистить (полностью!) флешку. Например так: Контроллер уходит в циклическую перезагрузку после чистой перепрошивки - #4 от пользователя BrainRoot

Это что за ошибка (где?)

Достаточно понятные.

В общем рекомендации. После успешного отрабатывания mxsldr

выполнить через debug на контроллере

/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"

Поскольку флешка все ж другая.
Затем почистить флешку.
Ну и уже с компьютера выполнить загрузку, используя dd.
никакие разделы создавать/монтировать отдельно не надо.

Что сделал

  1. С компьютера mxsldr
    Появился диск 165,77 MiB - хотя память у меня 8ГБ
user@localhost:~/wiren_restore/wbupdate$ sudo ./mxsldr wb5_usbfw.sb
Detected: i.MX28
Chip ID:          0x2800
Chip Revision:    0x0001
ROM Version:      0x0101
Protocol Version: 0x0100
user@localhost:~/wiren_restore/wbupdate$ sudo dmesg | tail
[77358.897565] usb-storage 1-2:1.0: Quirks match for vid 0525 pid a4a5: 10000
[77358.897630] scsi host0: usb-storage 1-2:1.0
[77359.932808] scsi 0:0:0:0: Direct-Access     Linux    File-Stor Gadget 0401 PQ: 0 ANSI: 2
[77359.933537] sd 0:0:0:0: Attached scsi generic sg0 type 0
[77359.935583] sd 0:0:0:0: Power-on or device reset occurred
[77359.941897] sd 0:0:0:0: [sda] 15515648 512-byte logical blocks: (7.94 GB/7.40 GiB)
[77360.045756] sd 0:0:0:0: [sda] Write Protect is off
[77360.045762] sd 0:0:0:0: [sda] Mode Sense: 0f 00 00 00
[77360.155494] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[77360.380814] sd 0:0:0:0: [sda] Attached SCSI disk
user@localhost:~/wiren_restore/wbupdate$ sudo fdisk -l /dev/sda
Диск /dev/sda: 165,77 MiB, 173822976 байт, 339498 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт

Обнулил все память через консоль dd if=/dev/zero of=/dev/mmcblk0 bs=1M (делал в несколько заходов по 1 Гб по другому процесс вис)
Выключил/включил g_mass_storage

/sbin/modprobe -r g_mass_storage
/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"

Записал прошивку, видно что она в какой то кеш записалась судя по скорости, на устройстве ничего не изменилось

user@localhost:~/wiren_restore/wbupdate$ sudo dd if=202202041900_stable_webupd_wb55.fit of=/dev/sda bs=1M conv=fdatasync && sync
165+1 записей получено
165+1 записей отправлено
173823098 байтов (174 MB, 166 MiB) скопировано, 0,0655874 s, 2,7 GB/s

Ну и после в режиме обычной загрузки в debug консоли просто какие то цифры

0x8020a01d
0x8020a01d
0x8020a01d

Когда я руками создал раздел на карте и он появился на компе как sda1 - запись туда реально проходила с нормальной скоростью - на устройстве появлялись данные
Вот лог загрузки sudo ./mxsldr wb5_usbfw.sb в debug консоли

U-Boot 2015.07-02364-gb119240 (Jun 10 2016 - 21:40:20 +0300)

CPU:   Freescale i.MX28 rev1.2 at 454 MHz
BOOT:  SSP SD/MMC #0, 3V3
DRAM:  128 MiB
MMC:   MXS MMC: 0
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   FEC0 [PRIME], FEC1
Warning: FEC1 using MAC address from net device

Hit any key to stop autoboot:  1  0 
Kernel image @ 0x42000000 [ 0x000000 - 0x347c58 ]

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.15-imxv5-x0.1 (boger@boger-laptop) (gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu1) ) #95 Mon Mar 21 14:55:02 MSK 2016
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine model: Wiren Board rev. 5.2 (i.MX28)
[    0.000000] Memory policy: Data cache writeback
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyAMA0,115200
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 124920K/131072K available (2070K kernel code, 70K rwdata, 796K rodata, 1756K init, 168K bss, 6152K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc02d4f74   (2868 kB)
[    0.000000]       .init : 0xc02d5000 - 0xc048c000   (1756 kB)
[    0.000000]       .data : 0xc048c000 - 0xc049d9a0   (  71 kB)
[    0.000000]        .bss : 0xc049d9a0 - 0xc04c7bc4   ( 169 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] clocksource mxs_timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000022] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000588] Console: colour dummy device 80x30
[    0.000647] Calibrating delay loop... 226.09 BogoMIPS (lpj=1130496)
[    0.080274] pid_max: default: 32768 minimum: 301
[    0.080514] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.080560] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.081829] CPU: Testing write buffer coherency: ok
[    0.082621] Setting up static identity map for 0x40008400 - 0x40008458
[    0.085820] devtmpfs: initialized
[    0.103427] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.104448] pinctrl core: initialized pinctrl subsystem
[    0.105862] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.141798] Serial: AMBA PL011 UART driver
[    0.142465] 80074000.serial: ttyAMA0 at MMIO 0x80074000 (irq = 234, base_baud = 0) is a PL011 rev2
[    0.390224] console [ttyAMA0] enabled
[    0.409287] mxs-dma 80004000.dma-apbh: initialized
[    0.419392] mxs-dma 80024000.dma-apbx: initialized
[    0.425374] usbcore: registered new interface driver usbfs
[    0.431107] usbcore: registered new interface driver hub
[    0.436780] usbcore: registered new device driver usb
[    0.442186] pps_core: LinuxPPS API ver. 1 registered
[    0.447251] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.457619] Switched to clocksource mxs_timer
[    0.854348] NetWinder Floating Point Emulator V0.97 (double precision)
[    0.864412] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.894475] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.902092] io scheduler noop registered (default)
[    0.911148] 8006a000.serial: ttyAPP0 at MMIO 0x8006a000 (irq = 229, base_baud = 1500000) is a 8006a000.serial
[    0.922038] mxs-auart 8006a000.serial: Found APPUART 3.1.0
[    0.929720] 8006c000.serial: ttyAPP1 at MMIO 0x8006c000 (irq = 230, base_baud = 1500000) is a 8006c000.serial
[    0.940588] mxs-auart 8006c000.serial: Found APPUART 3.1.0
[    0.948397] 8006e000.serial: ttyAPP2 at MMIO 0x8006e000 (irq = 231, base_baud = 1500000) is a 8006e000.serial
[    0.959255] mxs-auart 8006e000.serial: Found APPUART 3.1.0
[    0.966843] 80070000.serial: ttyAPP3 at MMIO 0x80070000 (irq = 232, base_baud = 1500000) is a 80070000.serial
[    0.977894] mxs-auart 80070000.serial: Found APPUART 3.1.0
[    0.985551] 80072000.serial: ttyAPP4 at MMIO 0x80072000 (irq = 233, base_baud = 1500000) is a 80072000.serial
[    0.996458] mxs-auart 80072000.serial: Found APPUART 3.1.0
[    1.018498] loop: module loaded
[    1.021727] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.028392] ehci-platform: EHCI generic platform driver
[    1.034335] usbcore: registered new interface driver cdc_wdm
[    1.046244] ci_hdrc ci_hdrc.0: doesn't support host
[    1.056872] ci_hdrc ci_hdrc.1: doesn't support host
[    1.061883] ci_hdrc ci_hdrc.1: no supported roles
[    1.107748] mxs-mmc 80010000.ssp: initialized
[    1.118324] usbcore: registered new interface driver usbhid
[    1.123924] usbhid: USB HID core driver
[    1.142824] uart-pl011 80074000.serial: no DMA platform data
[    1.156441] Freeing unused kernel memory: 1756K (c02d5000 - c048c000)
[    1.202663] mmc0: MAN_BKOPS_EN bit is not set
[    1.221664] mmc0: new high speed MMC card at address 0001
[    1.247878] mmcblk0: mmc0:0001 SEM08G 7.39 GiB 
[    1.252827] mmcblk0boot0: mmc0:0001 SEM08G partition 1 2.00 MiB
[    1.267903] mmcblk0boot1: mmc0:0001 SEM08G partition 2 2.00 MiB
[    1.625685] Mass Storage Function, version: 2009/09/11
[    1.630984] LUN: removable file: (no medium)
[    1.635689] LUN: file: /dev/mmcblk0
[    1.639306] Number of LUNs=1
[    1.642226] Number of LUNs=1
[    1.645587] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
[    1.652704] g_mass_storage gadget: userspace failed to provide iSerialNumber
[    1.659846] g_mass_storage gadget: g_mass_storage ready


BusyBox v1.20.2 (Debian 1:1.20.0-7) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
/ # e[6n[    2.054756] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage

И еще странно но прошивка работает без нажатия кнопки FW

P.S на другом компьютере запись прошла успешно со скорость 4.5 mb/s на карте что то появилось

[    1.651670] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
[    1.658786] g_mass_storage gadget: userspace failed to provide iSerialNumber
[    1.665859] g_mass_storage gadget: g_mass_storage ready


BusyBox v1.20.2 (Debian 1:1.20.0-7) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
/ # e[6n[    2.146013] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
[   63.713528] random: nonblocking pool is initialized
/sbin/modprobe -r g_mass_storage
/ # e[6ndd if=/dev/mmcblk0 bs=512 count=1 | hexdump -C | head -10 
1+0 records in
1+0 records out
00000000  d0 0d fe ed 0a 5c 54 64  00 00 00 38 0a 5c 50 48  |.....\Td...8.\PH|
00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
00000020  00 00 00 bc 0a 5c 50 0c  00 00 00 00 00 00 00 00  |.....\P.........|
00000030  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000040  00 00 00 03 00 00 00 04  00 00 00 ac 61 fd 78 00  |............a.x.|
00000050  00 00 00 03 00 00 00 1b  00 00 00 00 57 69 72 65  |............Wire|
00000060  6e 42 6f 61 72 64 20 66  69 72 6d 77 61 72 65 20  |nBoard firmware |
00000070  75 70 64 61 74 65 00 00  00 00 00 03 00 00 00 1f  |update..........|
00000080  00 00 00 0c 63 6f 6e 74  61 63 74 6c 65 73 73 2c  |....contactless,|
00000090  69 6d 78 32 38 2d 77 69  72 65 6e 62 6f 61 72 64  |imx28-wirenboard|
/ # e[6ndd if=/dev/mmcblk0 bs=1M count=1 | hexdump -C | head -20 
00000000  d0 0d fe ed 0a 5c 54 64  00 00 00 38 0a 5c 50 48  |.....\Td...8.\PH|
00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
00000020  00 00 00 bc 0a 5c 50 0c  00 00 00 00 00 00 00 00  |.....\P.........|
00000030  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000040  00 00 00 03 00 00 00 04  00 00 00 ac 61 fd 78 00  |............a.x.|
00000050  00 00 00 03 00 00 00 1b  00 00 00 00 57 69 72 65  |............Wire|
00000060  6e 42 6f 61 72 64 20 66  69 72 6d 77 61 72 65 20  |nBoard firmware |
00000070  75 70 64 61 74 65 00 00  00 00 00 03 00 00 00 1f  |update..........|
00000080  00 00 00 0c 63 6f 6e 74  61 63 74 6c 65 73 73 2c  |....contactless,|
00000090  69 6d 78 32 38 2d 77 69  72 65 6e 62 6f 61 72 64  |imx28-wirenboard|
000000a0  35 35 00 00 00 00 00 03  00 00 00 0d 00 00 00 17  |55..............|
000000b0  32 30 32 32 30 32 30 34  31 39 30 30 00 00 00 00  |202202041900....|
000000c0  00 00 00 03 00 00 00 08  00 00 00 28 75 6e 6b 6e  |...........(unkn|
000000d0  6f 77 6e 00 00 00 00 03  00 00 00 08 00 00 00 3c  |own............<|
000000e0  77 62 2d 32 32 30 31 00  00 00 00 03 00 00 00 07  |wb-2201.........|
000000f0  00 00 00 49 73 74 61 62  6c 65 00 00 00 00 00 03  |...Istable......|
00000100  00 00 00 0c 00 00 00 57  77 62 35 2f 73 74 72 65  |.......Wwb5/stre|
00000110  74 63 68 00 00 00 00 03  00 00 00 01 00 00 00 66  |tch............f|
00000120  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 7a  |...............z|
00000130  00 00 00 01 00 00 00 01  69 6d 61 67 65 73 00 00  |........images..|

Теперь остается вопрос с загрузкой, после перезагрузки в дебаг консоле ничего. Как то он осталось в режиме прошивки

Итого не то залил. Залил правильную прошивку пошла загрузка Ура!! Спасибо
Debian GNU/Linux 9 wirenboard-AT5L2XE ttyAMA0

wirenboard-AT5L2XE login: [  165.337263] RTL871X: nolinked power save leave
[  165.944340] RTL871X: assoc success
[  165.948202] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[  166.192887] SMSC LAN8710/LAN8
1 лайк

Вот это вот довольно странно.Так, по хорошему я бы после того как почистил флешку - перзапустил контроллер, затем повторил бы на нем
/sbin/modprobe g_mass_storage file=/dev/mmcblk0 iManufacturer=“Wiren Board” iProduct=“Wiren Board”
Ну и потом - посмотрел про диск

fdisk -l /dev/sda

Не надо создавать никаких разделов. Образ - целиком блочного устройства, со всем необходимым.

Нужно после копирования - проверить что они, разделы, есть.

Ну отлично, рад помочь. Ключевое - указать явно

g_mass_storage file=/dev/mmcblk0 iManufacturer="Wiren Board" iProduct="Wiren Board"

Поскольку флешка “немного” отличается. А пересобирать ничего нет необходимости - будет работать.