Ошибка bad mmc в Wiren Board 6.9

Добрый день, снова ошибка bad mmc, только теперь на WB 6.9.1U/1G.
Флешки с .fit видеть перестал, хотя с них же загружался нормально.
nv default -a;saveenv не помогает.
Print из U-Boot прикрепляю.


U-Boot SPL 2017.03-wb1.3.0-g520058c326 (Jan 18 2022 - 10:56:38)
DRAM init ok, rows:16, ncs:1, size: 1024MB
.p0_mpdgctrl0   = 0x01180112
.p0_mpdgctrl1   = 0x0e3f0e3f
.p0_mprddlctl   = 0x3f3f3d3f
.p0_mpwrdlctl   = 0x3f3f3733
.p0_mpwldectrl0 = 0x000d0011
.p0_mpwldectrl1 = 0x00120012
Trying to boot from MMC1
Warning - USDHC2 controller not supporting


U-Boot 2017.03-wb1.3.0-g520058c326 (Jan 18 2022 - 10:56:38 +0000)

CPU:   Freescale i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 49C
Reset cause: POR
Model: Wiren Board rev. 6.1 (i.MX6UL)
Board: Wiren Board MX6UL
DRAM:  1 GiB
MMC:   FSL_SDHC: 0
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  0
=> print
_decr_timeout=setexpr fw_timeout ${fw_timeout} - 1
_led_toggle_state=0
_usb_update_checkbutton=run _usb_update_print_msg ; run led_wait_init ; if run wait_button_up; then if run wait_button_down; then run _usb_update_start; fi; fi
_usb_update_checkfile=if load ${fw_dev} ${loadaddr} ${fw_file} 1 ; then run _usb_update_checkbutton ; elif load ${fw_dev} ${loadaddr} ${fw_reset_file} 1 ; then setenv fw_file ${fw_reset_file}; run _usb_update_checkbutton ; fi
_usb_update_print_msg=echo ; echo '##############################' ; echo '# Detected USB flash drive with update file' ; echo "# Filename: ${fw_file}" ; echo "# Press a FW key if you want to update firmware from this file" ; echo "# or wait 3 seconds to boot normally." ; echo "##############################"
_usb_update_start=run led_fw_init; echo USB update procedure start; run do_usb_update
_wait_loop=run led_wait_toggle ; sleep 0.2 ; run _decr_timeout
abortboot=1
addoverlay=if ${fdt_load_continue} && load mmc ${mmcdev}:${mmcpart} ${fdt_overlay_addr} ${fdt_overlays_dir}/${ovl}.dtbo; then echo Applying DT overlay ${ovl};if fdt apply ${fdt_overlay_addr}; then true; else echo Failed to apply overlay ${ovl};setenv fdt_load_continue false;fi;fi
altbootcmd=if test ${mmcpart} -eq 2; then echo Switching to rootfs on partition 3;setenv mmcpart 3;else; echo Switching to rootfs on partition 2;setenv mmcpart 2;fi;setenv bootcount 0;saveenv; boot
baudrate=115200
board_name=WB
board_rev=6UL
bootcmd=run maybe_usbupdate;mmc dev ${mmcdev};if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootenv; then run bootenv; fi;echo Running default loadzimage ...;if run loadzimage; then run loadfdt; run mmcboot; fi;fi;
bootcount=0
bootdelay=3
bootenv=echo Importing environment from ${loadaddr}...; env import -t ${loadaddr} ${filesize};echo Checking if uenvcmd is set ...;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;
bootlimit=3
bootrestore=echo Restoring minimal partition table and bootloader; setexpr RESTOREBOOT_SIZE *$bootrestore_size / 0x200 ; setexpr RESTOREBOOT_START *$bootrestore_start ; mmc write $RESTOREBOOT_START 2 $RESTOREBOOT_SIZE ; mw.l $bootrestore_flag 0 ; led red on ; echo Done! Now do a power cycle ; reset
bootrestore_flag=0x82fffffc
bootrestore_size=0x82fffff8
bootrestore_start=0x82fffff4
console=ttymxc0
do_usb_update=echo Checking if ubootenv part is present; if fsfitxtract ${fw_dev} ${fw_file} ubootenv ${loadaddr}; then run bootenv; else echo Extracting kernel; fsfitxtract ${fw_dev} ${fw_file} kernel ${loadaddr}; echo Extracting DTB; fsfitxtract ${fw_dev} ${fw_file} dtb ${fdt_addr}; setenv optargs ${optargs} bootmode=usbupdate,${fw_file}; run setbootargs; bootz ${loadaddr} - ${fdt_addr}; fi;
eth1addr=80:34:28:11:d0:d5
ethaddr=80:34:28:12:2c:82
fdt_addr=0x83000000
fdt_dir=/boot/dtbs
fdt_extra_overlay_offset=0x7e0
fdt_extra_overlay_size=0x20
fdt_file=/boot/dtbs/imx6ul-wirenboard61.dtb
fdt_maxsize=0x20000
fdt_overlay_addr=0x84000000
fdt_overlays_dir=/boot/overlays
fileaddr=82000000
filesize=1
fw_dev=usb 0:1
fw_file=wb6_update_FACTORYRESET.fit
fw_reset_file=wb6_update_FACTORYRESET.fit
fw_timeout=0
ip_dyn=yes
kernel_mmcdev=0
led_fw_init=led green on; led red off;
led_nofw_init=led green off; led red on;
led_wait_init=led red on ; led green on
led_wait_toggle=if test ${_led_toggle_state} -eq 0; then led green on; led red on; else led green off; led red off; fi; setexpr _led_toggle_state ${_led_toggle_state} ^ 1
loadaddr=0x82000000
loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/uEnv.txt
loadfdt=run loadfdtandoverlays
loadfdtandoverlays=mmc read ${fdt_overlay_addr} ${fdt_extra_overlay_offset} ${fdt_extra_overlay_size};if fdt addr ${fdt_overlay_addr}; then setenv fdt_extra_overlay_addr ${fdt_overlay_addr};setexpr fdt_extra_overlay_size_bytes ${fdt_extra_overlay_size} * 0x200;setexpr fdt_overlay_addr ${fdt_overlay_addr} + ${fdt_extra_overlay_size_bytes};echo Reading overlays list from eMMC;fdt get value fdt_overlays /fragment/__overlay__ overlays;echo Reading factory fdt name from eMMC;fdt get value fdt_name_factory /fragment/__overlay__ factory-fdt;fi;run loadmainfdt;fdt addr ${fdt_addr} ${fdt_maxsize};setenv fdt_load_continue true;for ovl in ${fdt_overlays}; do run addoverlay;done;if ${fdt_load_continue} && test -n ${fdt_extra_overlay_addr}; then echo Applying extra overlay;if fdt apply ${fdt_extra_overlay_addr}; then true; else echo Failed to apply extra overlay;setenv fdt_load_continue false;fi;fi;if ${fdt_load_continue}; then true; else echo Some overlays are not applied, booting in failsafe;run loadmainfdt;fdt addr ${fdt_addr} ${fdt_maxsize};fdt set / wirenboard-boot-failsafe;fi;
loadmainfdt=if test -n ${fdt_file_override} && echo Loading fdt_file_override ${fdt_file_override} && load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file_override}; then true; else if test -n ${fdt_name_factory} && echo Loading factory fdt ${fdt_name_factory} && load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_dir}/${fdt_name_factory}.dtb;then true; else echo Loading fdt_file ${fdt_file};load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file};fi;fi;
loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/zImage
maybe_usbupdate=echo Checking if there is a USB storage with update file ${fw_file}; regulator dev usb1_vbus; regulator enable; usb start; if usb storage; then run _usb_update_checkfile ; fi; run led_nofw_init ; echo No USB update detected, continuing boot
mmcargs=setenv optargs ${optargs} root=/dev/mmcblk${kernel_mmcdev}p${mmcpart} rootwait ro; run setbootargs
mmcboot=echo Booting from mmc ...; run mmcargs; bootz ${loadaddr} - ${fdt_addr}
mmcdev=1
mmcpart=3
netargs=setenv optargs ${optargs} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp; run setbootargs
netboot=echo Booting from net ...; run netargs; tftp zImage; if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else bootz; fi;
not_timeout=test 0x${fw_timeout} -gt 0
ramboot=echo Programming fuses ...; fuse prog -y 0 5 0x4860; fuse prog -y 0 6 0x10; echo Booting kernel from RAM ...; run setbootargs; bootz ${loadaddr} - ${fdt_addr};
read_button=gpio qi GPIO5_10
setbootargs=setenv bootargs console=${console},${baudrate} ${optargs}
upgrade_available=1
videomode=video=ctfb:x:480,y:272,depth:24,pclk:108695,le:8,ri:4,up:2,lo:4,hs:41,vs:10,sync:0,vmode:0
wait_button_down=until run read_button && run not_timeout ; do run _wait_loop; done; run not_timeout
wait_button_up=while run read_button && run not_timeout ; do run _wait_loop; done; run not_timeout

Environment size: 6664/8188 bytes

Добрый день.
Не вижу проблем в переменных загрузчика.
Что такое “видеть перестал”?
Покажите таблицу разделов флешки, результаты проверки MD5 файла на ней.

  1. “Видеть перестал” в данном случае означает, что контроллер не может найти .fit файл на флешке, с которой успешно прошиваются другие контроллеры.
    image

  2. Для прошивки использовался файл 202303311324_wb-2207_stretch_wb67.fit с контрольной суммой MD5: 391f0f97b6323600d18752e3d3d3794f, сумма для файла на флешке соответствует оригиналу. Таблица разделов:
    image

  3. Проблема не только в том, что контроллер не видит флешку, он в циклическую перезагрузку уходит

Без флешки тоже не загружается, древняя firmware нужна потому что там stretch, на него завязано используемое сторонне ПО.

Попробуйте

env default -a; setenv mmcpart 3; saveenv; reset

а нет, загрузился, помогло

Обновите uboot, проверьте разделы на ошибки. Пока в общем идей нет… А с современным образом сбрасывается, кстати?

Да я как-то не попробовал, сейчас уже и с нужным образом загружается хорошо.
setenv mmcpart 3 помогло

Это - просто переключение корневого раздела на резервный раздел. Необходимость проверить и исправить ошибки это не отменяет.