/
KB1438 - How To Re-Image SmartServer IoT From U-Boot Prompt

KB1438 - How To Re-Image SmartServer IoT From U-Boot Prompt

 Instructions

Sometimes the SmartServer will get stuck constantly rebooting or stuck in the boot process.

One way to fix these issues is to re-image the SmartServer from the U-boot prompt. Normally you would re-image the SmartServer after it boots up (say from the apollo prompt)

If this is a duo core SmartServer (The alpha character in the Serial number is revision version. "a" through "e" means this is a duo core and can only use up to Software version 3.1). If the alpha character is "f" - "z" then this is a quad core SmartServer and you can use the latest software version.

Part of this process is to abort the boot process. When you abort the boot process you will have a short period of time to send the commands to the SmartServer before it reboots again.

Requirements:

  1. You can try using a Windows PC, but you may need to use a Linux PC or second SmartServer (used as a host SmartServer) to stop the SmartServer constantly rebooting.

  • A Windows PC USB driver may be too slow to abort the U-boot process.

  • See KB to see how to use a second SmartServer as a host SmartServer

  1. A USB flash drive with the SmartServer image that you want to use. The image archive must be unzipped to the root of the USB drive.

  2. A console cable to connect from the PC or host SmartServer to the problem SmartServer console port.

 

Instruction:

  1. Unplug all the U60s/U70s

  2. Plug in the USB flash drive with the SmartServer image into the upper left-hand USB port

  3. Copy and paste each of the 5 commands one by one, using a text-only editor so you are ready to cut and paste each command block quickly to prevent the Uboot shell from timing out. Understand that serial terminal emulators such as putty.exe or miniterm on Linux will paste the current clip board with a right mouse click.

setenv imaging_args 'usb start; if usb dev 0; then setenv loadbootscript fatload usb 0:1 ${loadaddr} ${script}; setenv bootscript echo Running bootscript from usb ...; setenv loadfs fatload usb 0:1 ${initrd_addr} uInitrd-imaging; setenv loadimage fatload usb 0:1 ${loadaddr} ${image}; setenv loadfdt fatload usb 0:1 ${fdt_addr} ${fdt_file}; else echo WARN: No USB devices found; setenv bootcmd run normal_boot; saveenv; reset; fi;' setenv imaging_boot 'echo Imaging boot enabled.; run imaging_args; run initrd_boot;' setenv ethaddrs_space 32 saveenv run imaging_boot
  1. Press the SmartServer reset button while holding down the space key in the serial console session to interrupt the normal boot process.

  2. You will see the Uboot promt “=>”. If you do nothing for about 30s, the Uboot shell will timeout and the system will try to reboot.

  3. Type printenv and confirm the firmware environment variables starting with echelon_ are not set to ‘XXXXXXXXXX’. If this is the case, your SmartServer needs a minimum firmware variable set before you continue to step 7. See Basic Firmware Variable setup below.

  4. Copy and Paste each of the commands in your text file in order without exceeding a 20-30s break.

  5. The SmartServer will then do a re-image.

  6. If the SmartServer boots into Emergency Mode, then follow the Emergency mode instructions below.

Normally not needed, but if SmartServer boots into Emergency Mode, use the Emergency mode workaround below.

Emergency Mode Workaround:

# <enter apollo password to enter maintenance mode> # fsck -y /dev/mmcblk2p1 # mount /media/sdcard #^d // CTR-d reboots SS IoT -- should work after this reboot

 

  1. If you see "intrd_boot_err", and then redo step 4 again.

setenv initrd_boot 'setenv bootargs console=${console},${baudrate} rdinit=/sbin/init; if run loadbootscript; then run bootscript; source; else if run loadfs; then if run loadimage; then if run loadfdt; then bootz ${loadaddr} ${initrd_addr} ${fdt_addr}; else echo WARN: Cannot find dtb file; reset; fi; else echo WARN: Cannot find image file; reset; fi; else echo WARN: Cannot find initrd file; reset; fi; fi;' saveenv

Basic Firmware Variable Setup

If firmware variables beginning with echelon_ reported by printenv are set to ‘XXXXXXXXXX’ you need to create a minimum set before you can do an imaging boot. Each of these lines should be pasted in the Uboot shell. Once completed, you can continue with step 7 above.

setenv echelon_serial [as marked on label] setenv echelon_password [as marked on label] setenv ethaddr [MAC ID 1 marked on label] setenv eth1addr [MAC ID 2 marked on label] setenv echelon_installcode [Install code as marked on label] saveenv

 Related Products

SmartServer IoT

Related content