Saturday, January 04, 2014

Updating Samsung SSD firmware without Windows

My attempts to update Samsung 840 EVO to new EXT0BB6Q firmware kept failing with "WDOSX Win32 subsystem: Abort from unhandled exception" error message. This seems to be due outdated FreeDOS Samsung uses. Old version is probably incompatible with newer motherboard or something.



I got updater working by creating USB stick with bootable FreeDOS 1.1 and firmware files from Samsung.

# Below assumes your USB stick is /dev/sdj. DOUBLE CHECK THIS!
# Unmount any partitions OS might have automounted from this USB device
mkdir -p /tmp/foo
cd /tmp/foo

# Get FreeDOS image, unpack, write to USB
wget http://dump.asiantuntijakaveri.fi/le_bueno_dumpo/FreeDOS-1.1-USB-Boot.img.bz2
bunzip2 FreeDOS-1.1-USB-Boot.img.bz2
dd if=FreeDOS-1.1-USB-Boot.img of=/dev/sdj bs=4k

# Refresh Linux partition table list and mount USB
# This WILL fail if you don't unmount automounted filesystem first
partprobe
mkdir mnt
mount /dev/sdj1 mnt

# Download firmware update
wget http://www.samsung.com/global/business/semiconductor/samsungssd/downloads/Samsung_SSD_840_EVO_EXT0BB6Q.iso

# Unpack and copy to USB
mkdir tmp
# Mount ISO image
mount Samsung_SSD_840_EVO_EXT0BB6Q.iso tmp -o loop
# Mount floppy image stored inside ISO image
losetup /dev/loop0 tmp/isolinux/btdsk.img
mkdir tmp2
mount /dev/loop0 tmp2
# Copy files from floppy image to USB stick
cp -av tmp2/AUTOEXEC.BAT tmp2/License.txt tmp2/samsung/ mnt/
# Sync changes
sync

# Unmount USB as we're done
umount mnt

6 comments:

  1. Hey man, gonna try this when I get home. Thanks for the info.

    ReplyDelete
  2. Thanks! With your hint, I could update the firmware of my Samsung SSD 840 PRO. :-)
    Their old FreeDOS gave three different errors on two machines!

    ReplyDelete
  3. Great, thanks!

    Worked perfectly when adding "sudo" before most of the commands. The standard Samsung ISO only failed with several different computers.

    ReplyDelete
  4. Great, thanks!
    Worked perfectly!

    ReplyDelete
  5. I have a Dell Optiplex 780DT with a Samsung 840 EVO (FW EXT0BB0Q) and Ubuntu Studio 14.04.1-LTS on it, using LVM. So I decided to upgrade the SSD firmware to EXT0BB6Q and loaded the "Windows ISO" from http://www.samsung.com/global/business/semiconductor/samsungssd/downloads/Samsung_SSD_840_EVO_EXT0BB6Q.iso but it gave the "unhandled exception" error mentioned above.

    I simply mounted the ISO and the btdsk.img within its isolinux folder and copied over the "samsung" folder and all its contents (several subfolders) onto my DOS-bootable HBCD USB stick. I could then boot the stick, navigate to the folder "samsung/DSRD" and execute "DSRDGUI0.EXE" from there.

    ATTENTION: It checked the drive and offered the FW update but warned me it would clear the whole drive and I should make a backup before. Which I did (using Clonezilla). Afterwards I booted with the stick again, updated the firmware, and used Clonezilla to put my Ubuntu Studio system back onto the drive.

    All good. Now I'm using 4 of these Samsung 840 EVOs, in several machines, all with the same firmware on them. I can't yet see any great performance improvements (the system was quite fast before), but at least I'm happy to have all my Samsung SSDs "on the same level".

    ReplyDelete
  6. Thank's a lot!

    P.S. Just for info.
    I have some trouble in process, fixed:

    # losetup /dev/loop0 tmp/isolinux/btdsk.img
    losetup: tmp/isolinux/btdsk.img: failed to set up loop device: Device is busy

    just use /dev/loop1:

    # losetup /dev/loop1 tmp/isolinux/btdsk.img

    ReplyDelete

Got something to say?!