Recovery of Bricked Device


From SamyGO
Revision as of 16:39, 1 January 2011 by Juzis28 (talk | contribs) (Prepare USB)
Jump to: navigation, search

If you write bad boot.img to tv.

A) Connect to TV by ex-link cable.

B) Enable USB support. Command "/lib/modules/rc.local"

C) Enable NAND support. Commands

 # insmod /lib/modules/fsr.ko
 # insmod /lib/modules/rfs.ko
 # insmod /lib/modules/fsr_stl.ko

D) Erase old bad image. Command "bml.erase /dev/bml0/7"

E) Write original (work) image. Command "bml.restore /dev/bml0/7 /dtv/usb/sd1/boot.img"

It all!!! Happy new Year.

Restore TV from u-boot

Go here

Restore firmware (exe.img, appdata.img) images (CI only)

Before to start

To restore TV you need:

  • Settings in Service menu are set before TV broke - do it now, if your TV isn`t broken - insurance for future :)
  • Enter Service Menu ( quickly push [INFO] [MENU] [MUTE] [POWER] on your remote control )
  • Change setting for your RS232C interface to "debug" ( Control -> Sub Option -> RS-232 Jack -> [ Debug | UART | Logic ] )
  • Change setting for Watchdog to "off", so that the device doesn't reboot while you are in uBoot menu ( Control -> Sub Option -> Watchdog -> [ on | off ] )

  • Make or buy Service Cable - ExLink
  • You need images to restore (or dumps of partitions you made before. How to make dumps read here.)
  • If you use firmware files from firmware upgrade file (you can download it from here, make sure, that you have UNxored exe.img and appdata.img on USB/update (NOT exe.img.enc and NOT appdata.img.enc). How to unXOR images read here.

Prepare USB

  • 1. Format USB to FAT32
  • 2. Copy required images to /update directory on USB.
  • 3. Place exe.img and appdata.img to USB/update
  • 4. Reboot TV, go to TOP Debug menu
  • 5. Enter Ctrl+c to get to console. TV from this moment does not respond to RC.
  • 6. Mount USB disk with next command
sh +x /sbin/usb_start.sh

If you get error (in some models) about not existing file, try:

sh +x /sbin/start_usb.sh
  • 7. Check if USB is mounted
cd dtv/usb
ls

You get something like:

log     sda1
  • 8. Check images on USB/update
cd sda1/update 
ls

You get:

Image             exe.img           oneboot.bin       uboot_env.bin
Image_serial      fnw.bin           rootfs.img        validinfo.txt
appdata.img       info.txt          serial_temp       version_info.txt
boot.img          onboot.bin        u-boot.bin
  • 9. Prevent TV from rebooting when exeDSP is stopped
/mtd_boot/MicomCtrl 23
  • 10. Kill exeDSP
killall -9 exeDSP
  • 11. unmount /mtd_exe/ and /mtd_appdata/
umount /mtd_exe/
umount /mtd_appdata/
  • 12. Write ‘exe.img and appdata.img’ to TV
fsrrestore /dev/bml0/8 exe.img;
fsrrestore /dev/bml0/9 appdata.img;
fsrrestore /dev/bml0/10 exe.img;
fsrrestore /dev/bml0/11 appdata.img;
  • 13. Mount the updated images
mount -t auto /dev/tbml8 /mtd_exe
mount -t auto /dev/tbml9 /mtd_appdata
  • 14. Start exeDSP again (Do not worry if screen is bottom to up, after restart TV you get normal operating TV)
/mtd_exe/rc.local

Flash another partitions from console

  • 15. If you need restore some other partitions, you can do it as example:
cat /dtv/usb/sda1/update/u-boot.bin > /dev/bml0/2
cat /dtv/usb/sda1/update/fnw.bin > /dev/bml0/4
cat /dtv/usb/sda1/update/Image > /dev/bml0/5
cat /dtv/usb/sda1/update/rootfs.img > /dev/bml0/6
cat /dtv/usb/sda1/update/boot.img > /dev/bml0/7

or you can use bml tool:

bml.restore /dev/bml0/2 /dtv/usb/sda1/update/u-boot.bin 
bml.restore /dev/bml0/4 /dtv/usb/sda1/update/fnw.bin 
bml.restore /dev/bml0/5 /dtv/usb/sda1/update/Image 
bml.restore /dev/bml0/6 /dtv/usb/sda1/update/rootfs.img 
bml.restore /dev/bml0/7 /dtv/usb/sda1/update/boot.img

Make dumps

It is good to have dumps of partitions on TV before you start playing with flashing. You need USB Fat32, working console (over ExLink or telnet).

How is your USB recognized you can see with command

df -h

Here is output of LE40B653T5W:

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/tbml6                3.1M      3.1M         0 100% /
none                     10.0M      8.0k     10.0M   0% /dtv
/dev/tbml7              896.0k    896.0k         0 100% /mtd_boot
none                     10.0M         0     10.0M   0% /mtd_ram
/dev/stl0/14             11.0M     10.8M    208.0k  98% /mtd_rwarea
/dev/tbml8               60.0M     51.2M      8.8M  85% /mtd_exe
/dev/tbml9               28.6M     28.6M         0 100% /mtd_appdata
/dev/stl0/13            189.0M    134.3M     54.7M  71% /mtd_tlib
/dev/stl0/15             50.0M      7.3M     42.6M  15% /mtd_contents
/dev/stl0/16             87.9M      9.5M     78.4M  11% /mtd_down
/dev/stl0/12            149.0M    224.0k    148.8M   0% /mtd_wiselink
/dev/stl0/17             87.0M    176.0k     86.8M   0% /mtd_swu
/dev/sda1               298.0k    298.0k         0 100% /dtv/usb/sda1

Make dumps by commands:

bml.dump /dev/bml0/1 /dtv/usb/sda1/dump/bml0_1_dump
bml.dump /dev/bml0/2 /dtv/usb/sda1/dump/bml0_2_dump
bml.dump /dev/bml0/3 /dtv/usb/sda1/dump/bml0_3_dump
bml.dump /dev/bml0/4 /dtv/usb/sda1/dump/bml0_4_dump 
bml.dump /dev/bml0/5 /dtv/usb/sda1/dump/bml0_5_dump 
bml.dump /dev/bml0/6 /dtv/usb/sda1/dump/bml0_6_dump 
bml.dump /dev/bml0/7 /dtv/usb/sda1/dump/bml0_7_dump 
bml.dump /dev/bml0/8 /dtv/usb/sda1/dump/bml0_8_dump
bml.dump /dev/bml0/9 /dtv/usb/sda1/dump/bml0_9_dump
bml.dump /dev/bml0/10 /dtv/usb/sda1/dump/bml0_10_dump
bml.dump /dev/bml0/11 /dtv/usb/sda1/dump/bml0_11_dump

Finish!

--Juzis28 09:01, 1 January 2011 (UTC)