• Home
  • Help
  • Search
  • Login
  • Register
Pages: [1]
Author Topic: Rebooting resulted in "fixable bit-flip" error in ubifs  (Read 2847 times)
callidus
Newbie
*

Karma: 0
Posts: 3


View Profile
« on: January 09, 2012, 02:54:14 AM »

Hello everybody,
I've got a problem with my DockStar. I've used Jeff Doozans tutorial to unlock my box,  everything worked fine for weeks. Then I've initiated a reboot and it did not boot up, led was flashing green. Luckily I've got access via netconsole, so I could read the following error log:

Code:
U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
Marvell-Dockstar/Pogoplug by Jeff Doozan
Hit any key to stop autoboot:  0
(Re)start USB...
USB:   Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 3 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found
Loading file "/rescueme" from usb device 0:1 (usbda1)
** File not found /rescueme
reading /rescueme.txt

** Unable to read "/rescueme.txt" from usb 0:1 **
Creating 1 MTD partitions on "nand0":
0x000002500000-0x000010000000 : "mtd=3"
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size:   131072 bytes (128 KiB)
UBI: logical eraseblock size:    129024 bytes
UBI: smallest flash I/O unit:    2048
UBI: sub-page size:              512
UBI: VID header offset:          512 (aligned 512)
UBI: data offset:                2048
UBI: fixable bit-flip detected at PEB 1

The final error line (UBI: fixable bit-flip detected at PEB 1) did not help me to find a solution. With a bit of try'n'error I've started the marvell prompt via netconsole and ran the commands from bootcmd manually. The mentioned error is a result of "run ubifs_bootcmd". Running "usb start; run usb_bootcmd" started the OS from my usb drive.
Here an extract of the environment:
Code:
Marvell>> printenv
printenv
ethact=egiga0
baudrate=115200
mainlineLinux=yes
console=ttyS0,115200
led_init=green blinking
led_exit=green off
led_error=orange blinking
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
mtdids=nand0=orion_nand
partition=nand0,2
rescue_set_bootargs=setenv bootargs console=$console ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs $mtdparts $rescue_custom_params
rescue_bootcmd=if test $rescue_installed -eq 1; then run rescue_set_bootargs; nand read.e 0x800000 0x100000 0x400000; bootm 0x800000; else run pogo_bootcmd; fi
pogo_bootcmd=if fsload uboot-original-mtd0.kwb; then go 0x800200; fi
force_rescue=0
force_rescue_bootcmd=if test $force_rescue -eq 1 || ext2load usb 0:1 0x1700000 /rescueme 1 || fatload usb 0:1 0x1700000 /rescueme.txt 1; then run rescue_bootcmd; fi
ubifs_mtd=3
ubifs_set_bootargs=setenv bootargs console=$console ubi.mtd=$ubifs_mtd root=ubi0:rootfs rootfstype=ubifs $mtdparts $ubifs_custom_params
ubifs_bootcmd=run ubifs_set_bootargs; if ubi part data && ubifsmount rootfs && ubifsload 0x800000 /boot/uImage && ubifsload 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; fi
usb_scan=usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done
usb_scan_list=1 2 3 4
usb_scan_1=usb=0:1 dev=sda1
usb_scan_2=usb=1:1 dev=sdb1
usb_scan_3=usb=2:1 dev=sdc1
usb_scan_4=usb=3:1 dev=sdd1
usb_device=0:1
usb_root=/dev/sda1
usb_rootfstype=ext2
usb_rootdelay=10usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
usb_boot=mw 0x800000 0 1; ext2load usb $usb_device 0x800000 /boot/uImage; if ext2load usb $usb_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset
ethaddr=00:10:75:1A:CD:EE
arcNumber=2097
rescue_installed=1
serverip=192.168.1.190
ipaddr=192.168.1.20
if_netconsole=ping $serverip
start_netconsole=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
preboot=run if_netconsole start_netconsole
usb_init=if usb start; then version; else usb stop; usb start;fi;
ncip=192.168.1.190
bootdelay=10
stdin=nc
stdout=nc
stderr=nc

Environment size: 2551/131068 bytes

I've modified my bootcmd and switched positions of "run ubifs_bootcmd" and "run usb_bootcmd". Now my dockstar boots successfully from my thumbdrive and everything seems to work. But a bad feeling stays as I don't know if the workaround is ok or if I've got to reflash something (somehow).

Has anybody encountered something like this and could shed light some on the matter?

-Sascha
Logged

callidus
Newbie
*

Karma: 0
Posts: 3


View Profile
« Reply #1 on: January 17, 2012, 10:21:21 AM »

Found a solution: I had format all /dev/mtX and reinstall uboot and rescure. Now it boots correct.

Detail:
Test and Erase Flash
Code:
apt install mtd-utils and mtd-tools.
nandtest -p 10 /dev/mtd0
nandtest -p 10 /dev/mtd1
nandtest -p 10 /dev/mtd2
nandtest -p 10 /dev/mtd4

flash_erase /dev/mtd0
flash_erase /dev/mtd1
flash_erase /dev/mtd2
flash_erase /dev/mtd3

Install uBoot
Code:
wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh
chmod +x install_uboot_mtd0.sh
./install_uboot_mtd0.sh   --no-uboot-check

Install rescue
Code:
wget http://jeff.doozan.com/debian/rescue/install_rescue.sh
chmod +x install_rescue.sh
./install_rescue.sh

Re-Enable NetConsole
Code:
fw_setenv serverip 192.168.1.190
fw_setenv ipaddr 192.168.1.160
fw_setenv if_netconsole 'ping $serverip'
fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
fw_setenv preboot 'run if_netconsole start_netconsole'
fw_setenv preboot 'run if_netconsole start_netconsole'

Configure my hardware MAC address like described here: http://forum.doozan.com/read.php?2,2429,3253

-Sascha
Logged

Pages: [1]
Print
Jump to: