Welcome! Log In Create A New Profile

Advanced

Pogoplug boot problem

Posted by timmypro 
Pogoplug boot problem
February 17, 2013 10:14AM
I have a Pogoplug E02. I mess around with uboot with fw_setenv and it does not boot up anymore. (no response to SSH, no status light on the device, IP assigned to pogoplug) I could netconsole to it and it shows the following when i reboot.
U-Boot 2011.12 (Feb 20 2012 - 21:21:59)
Pogoplug E02
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q3-67) 4.4.1
GNU ld (Sourcery G++ Lite 2009q3-67) 2.19.51.20090709
Hit any key to stop autoboot:  0 
u-boot>>

fw_printenv output:
Pogoplug:ß$  /usr/sbin/fw_printenv                                             
ethact=egiga0
bootdelay=3
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
stdin=serial
stdout=serial
stderr=serial
rescue_installed=0
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_rootdelay=10
usb_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
ethaddr=00:25:31:03:04:9C
arcNumber=2097
serverip=192.168.0.102
ipaddr=192.168.0.103
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_rootfstype=ext3
usb_init=usb stop; usb start; run usb_scan
bootcmd=usb=start

How can I restore to normal pogoplug prompt?



Edited 1 time(s). Last edit at 02/17/2013 01:57PM by timmypro.
Re: Pogoplug boot problem
February 17, 2013 03:42PM
This was messed up:
bootcmd=usb=start

You can interrupt netconsole and use setenv to reset it to correct value. Should be something like:
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset

Also, arcNumber 2097 is OK to get it to boot. Later if you have Pogo E02 support kernel then change it to the E02 number 3542.
Re: Pogoplug boot problem
February 18, 2013 02:47PM
Hi bodhi,
It looks like solve some problem. However it cannot boot into arch linux. it stuck into starting kernel... It seems like something to do with "file not found /boot/uInitrd"

modified env: (I also set setenv usb_rootfstype=ext2 but it does not show into config...)
Pogoplug:ß$ /usr/sbin/fw_printenv                    
arcNumber=3542
baudrate=115200
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd;run pogo_bootcmd;reset
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset

bootdelay=10
console=ttyS0,115200
ethact=egiga0
ethaddr=00:25:31:03:04:9C
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
if_netconsole=ping $serverip
ipaddr=192.168.0.103
led_error=orange blinking
led_exit=green off
led_init=green blinking
machid=dd6
mainlineLinux=yes
mtdids=nand0=orion_nand
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
ncip=192.168.0.102
partition=nand0,2
pogo_bootcmd=if fsload uboot-original-mtd0.kwb; then go 0x800200; fi
preboot=run if_netconsole start_netconsole
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
rescue_installed=0
rescue_set_bootargs=setenv bootargs console=$console ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs $mtdparts $rescue_custom_params
serverip=192.168.0.102
start_netconsole=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
stderr=nc
stdin=nc
stdout=nc
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
ubifs_mtd=3
ubifs_set_bootargs=setenv bootargs console=$console ubi.mtd=$ubifs_mtd root=ubi0:rootfs rootfstype=ubifs $mtdparts $ubifs_custom_params
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
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
usb_device=0:1
usb_init=usb stop; usb start; run usb_scan
usb_root=/dev/sda1
usb_rootdelay=10
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_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_scan_list=1 2 3 4
usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
Pogoplug:ß$

output from netconsole
U-Boot 2011.12 (Feb 20 2012 - 21:21:59)
Pogoplug E02
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q3-67) 4.4.1
GNU ld (Sourcery G++ Lite 2009q3-67) 2.19.51.20090709
Hit any key to stop autoboot:  0 
(Re)start USB...
USB:   Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 4 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-0x000008000000 : "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: attached mtd1 to ubi0
UBI: MTD device name:            "mtd=3"
UBI: MTD device size:            91 MiB
UBI: number of good PEBs:        728
UBI: number of bad PEBs:         0
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     0
UBI: available PEBs:             717
UBI: total number of reserved PEBs: 11
UBI: number of PEBs reserved for bad PEB handling: 7
UBI: max/mean erase counter: 1/1
UBIFS error (pid 0): ubifs_get_sb: cannot open "ubi:rootfs", error -19
Error reading superblock on volume 'ubi:rootfs'!
stopping USB..
(Re)start USB...
USB:   Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 4 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found
Loading file "/boot/uImage" from usb device 0:1 (usbda1)
1 bytes read
Found bootable drive on usb 0:1
Loading file "/boot/uImage" from usb device 0:1 (usbda1)
2869588 bytes read
Loading file "/boot/uInitrd" from usb device 0:1 (usbda1)
** File not found /boot/uInitrd
## Booting kernel from Legacy Image at 00800000 ...
   Image Name:   Linux-3.1.10-15-ARCH
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2869524 Bytes = 2.7 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
Using machid 0xdd6 from environment

Starting kernel ...

Re: Pogoplug boot problem
February 18, 2013 04:14PM
Timmypro,

Arch Linux ARM does not use uInitrd. So that's not the reason. I would suggest to get the latest Arch rootfs, and create a new USB rootfs with it (instruction at Arch site). And if it does not boot, try using Davy's Debian rootfs (http://forum.doozan.com/read.php?2,7676). It's good to know you can boot with the USB thumb drive that you are using, and then worry about Linux distro.
Re: Pogoplug boot problem
March 31, 2013 11:54AM
FWIW, I had exactly the same problem on a dockstar, the only difference being a Linux-3.1.10-16-ARCH kernel.

I'd get to the "Starting kernel ..." line, and that'd be the end of it.

No further chitchat on the wire, wouldn't respond to ping or ssh. When I pulled the USB stick the dockstar would boot into the default seagate linux.

My error turned out to be really simple.

I was missing the usbrootfstype in the environment, even though I knew I had set it to ext2.

And that was the key: I had set usbrootfstype with the command:

fw_setenv usbrootfstype=ext2

which looks plausible but is wrong.

The correct invocation is:

fw_setenv usbrootfstype ext2

After which

fw_printenv usbrootfstype

returns: usb_rootfstype=ext2

... and now my dockstar boots from the usb stick.

Wouldn't have noticed that the usbrootfstype was missing had Timmypro not mentioned the fact. :-)

So there are two ways you can be SOL on a USB storage device while being only microscopically away from success:

1) format the usb stick as ext2 but set the usbrootfstype to ext3 (as instructed by one of the alarm pogoplug install pages; it seemed strange at the time, but I assumed that ext3 probably covered ext2 as well ... until I came across this link: ).

That's why I knew I'd set usbrootfstype ... because I'd looked, and it was set to ext3.

2) use bad syntax for the fw_setenv command.

ie when I re-set usbrootfstype from ext3 to ext2, I used bad syntax, and fw_setenv deleted the env variable.
_____________________________________________________________

Y'know, it wouldn't be a bad idea for fw_setenv to complain about garbage chars at the end of the line; instead, it seems to take the '=' as the line or option terminator, interpret the command as:

fw_setenv usbrootfstype

and understand that to mean "delete the environment variable."

All sorts of havoc can flow from what seems to me to be a fairly natural error. After all, the syntax for unix environment variable assignment is VAR=value, so even if one knows better, it's easy to slip.

Alternatively, fw_setenv could by default echo back the env variable it changed, and the value assigned to the variable.
Author:

Your Email:


Subject:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.
Message: