Western Digital Drive Update Guide Without Windows/WD Dashboard

With the old/original firmware on the drive, the drive would sleep too aggressively and not wake up in a timely fashion, resulting in the drive no longer found after sleep and requiring a reboot.

Updated firmware has addressed this issue.

However, these drives have shipped with the updated firmware for quite some time now (6 months? A year?) so although updating drive firmware is usually a good idea, if your drive is new it probably already has the new firmware.

3 Likes

@Fraoch @Edward_Felder I was wondering if the official nvme-cli tool can be used to update the WD Internal SSDs?

Refer:

2 Likes

Sounds interesting. It would depend on the raw firmware files being readily available and freely downloadable. As we see in the first post, these are currently available but WD has gone to great lengths to hide them. All they have to do is restructure their website, either as a matter of routine or a deliberate act, and we’ll have to go on a treasure hunt again.

They have stated they will not provide any assistance to Linux users and seem to be actively hostile to them by making things unnecessarily difficult and putting up barriers.

2 Likes

@Fraoch So according to you nvme-cli does not work with WD SSD?

I don’t know, I’ve never tried it. If those firmware files in the first post of that thread will work with this tool then it should work.

If they’re in a format that this tool won’t recognize, if WD has made their drives to not work with this method (not unlikely given their arrogance around this) or if new firmare files are hidden/unavailable then no it won’t work.

This also involves some brave person trying this out and risking bricking their SSD. It would be great to use this tool but I’m not that brave.

1 Like

Alright folks, I have a WD Blue, I think I’ve done all the steps above but I still get the “Firmware download failed - Binary Could Not Be Opened” - any ideas what I’m doing wrong?

> cat /sys/class/nvme/nvme0/model && cat /sys/class/nvme/nvme0/firmware_rev

WDC WDS100T2B0C-00PXH0                  
233010WD

Searched for WDS100T2B0C-00PXH0 here:
https://wddashboarddownloads.wdc.com/wdDashboard/config/devices/lista_devices.xml

<lista_device model="WDC WDS100T2B0C-00PXH0">
<url>
wdDashboard/firmware/WDC_WDS100T2B0C-00PXH0/211210WD/device_properties.xml
</url>
</lista_device>

View source of this XML:
view-source:https://wddashboarddownloads.wdc.com/wdDashboard/firmware/WDC_WDS100T2B0C-00PXH0/211210WD/device_properties.xml

<?xml version="1.0"?>
<ffu version="1.0">
    <model>WDC WDS100T2B0C-00PXH0</model>
    <fwmode>mode3</fwmode>
    <fwversion>211210WD</fwversion>
    <fwfile>211210WD.fluf</fwfile>
    <dependency model="WDC WDS100T2B0C-00PXH0">211070WD</dependency>
</ffu>

Downloaded 211210WD.fluf from:
https://wddashboarddownloads.wdc.com/wdDashboard/firmware/WDC_WDS100T2B0C-00PXH0/211210WD/211210WD.fluf

I have the boot disk with the fluf fule and the empty cfg in the root:
> ls -lh

total 201M
-rw-r--r-- 1 travis travis 2.5M Dec  2 09:23 211210WD.fluf
drwxr-xr-x 3 travis travis 4.0K Oct  1  2019 boot
drwxr-xr-x 3 travis travis 4.0K Oct  1  2019 EFI
-rw-r--r-- 1 travis travis    0 Dec  2 09:29 embedded-toolkit.cfg
-rw-r--r-- 1 travis travis 371K Dec  3 23:31 embedded-toolkit-usb.log
-rw-r--r-- 1 travis travis 190M Oct  1  2019 rootfs.cpio.gz
drwxr-xr-x 2 travis travis 4.0K Oct  1  2019 syslinux
-rw-r--r-- 1 travis travis 8.2M Oct  1  2019 vmlinuz
1 Like

Judging from the version numbering scheme (but without deeper knowledge) to me it seems as if your drive exposes a firmware that is newer than the one you’re trying to install:

installed 233010WD > downloaded 211210WD

2 Likes

Ah jeez, I should’ve noticed that. Thanks!

2 Likes

Thanks for the guide, as a side-note: you need to disable secure boot in order to run the usb-boot

Has anyone tried to extract the firmware from the fluf file? Then you could maybe update it via nvme cli or something like that. function inside the embedded-toolkit executable (inside rootfs.cpio.gz) seems to be yadl_nvme_linux_execute according to the log it creates.

3 Likes

To disable Secure Boot, execute this from the terminal (assuming your distro uses systemd).

systemctl reboot --firmware-setup

Navigate to Security, then Secure Boot and disable it.

1 Like

after exploring the repo, it seems it supports WD Disks.

2 Likes

Unfortunately, I can’t come to my goal with that tool. Tried with 2 different NVMe SSDs, but ended with “Firmware Download Failed” twice.

  1. WD BLACK SN770 2TB (brand new disk)
    I ended up with this firmware file:
    https://wddashboarddownloads.wdc.com/wdDashboard/firmware/WD_BLACK_SN770_2TB/731100WD/device_properties.xml
    Error Log File showed the following:
error code: 6
error subcode: 65282
message: device error detected, status ffh, error 2h
  1. SanDisk Ultra 3D NVMe 2TB (internal disk, already in use for some time)
    Ended up here: https://wddashboarddownloads.wdc.com/wdDashboard/firmware/SanDisk_Ultra_3D_NVMe_2TB/234200WD/device_properties.xml

with the following Error Log Info:

error code: 1
error subcode: 0
message: SCSI Error: Status: 2H Sense Code: 05/20/00H

Any help appreciated. Can anybody enlighten me?

@Adsubia,

I flashed/updated 1x WD BLACK SN770 500 GB + 1x WD BLACK SN770 1 TB and all succeeded very quickly.

I was wondering did you put all the files from Embeddedlinux.zip in the root of the usb and. formatted the usb with MBR/FAT32? I think that I first used GPT instead of MBR and that was not working.

Also you need to enter the firmware filename (731100WD.fluf must also be in the root of the usb stick) Inside the linux update tool

Keep in mind that in Linux filenames are Case-Sensitive, so it must match the correct file + casing.

You also might need to check the bios/uefi of your motherboard if the nvme ssd’s are using the correct (auto? m2?) settings to get detected.

Good luck.

I have a:

  • WD Black SN750 NVMe 1TB drive
  • Model WDBRPG0010BNC-WRSN
  • Firmware version 102000WD

Does anyone have this firmware? Or any firmware for this drive, even older?

You checked https://wddashboarddownloads.wdc.com/wdDashboard/config/devices/lista_devices.xml ? cause I cant find it with the info you gave. does it work? thenrun those commands under linux maybe?

edit: this isnt you ? SN750 Firmware .FLUF file urgently needed - WD SSD Drives & Software - WD Community (I think this user could just have looked at their ESP, uefi partition and cleaned up the firmware files and set windows as the next boot option. not sure if this is the case but https://www.easyuefi.com/ in windows would allow editing of the boot part. not even sure the firmware flasher would just flash a incompatible firmware )

Hi,

JFYI, my successful WD BLACK SN850X 2GB firmware upgrade using standard nvme-cli tool:

@Edward_Felder, thank you for the manual+links to firmware/.flur files!

4 Likes

This was perfect! Instructions were very detailed and it worked on the first try! Hopefully this will prevent my Framework from freezing on me. It’s only very recently that my laptop started freezing though, even though I’ve had it for over a year… I wonder if there was a Linux kernel update that wasn’t playing nice with the old firmware…?

1 Like

To streamline the update process I wrote a bash script for Ubuntu / Linux Mint. It combines this and Oleksadrs post:

2 Likes

@not_a_feature it never occurred to me that the fluf file is the direct firmware image that you can send via nvme … :slight_smile:

I’ve made some updates to your script, some drives have more than onve firmware version available and you need to select which one you will upgrade to, I am guessing you can do some lookup with dependencies and look for the currently installed firmware rev and then decide to which version you should upgrade to and if it’s latest, but I only fixed it so I can upgrade my drive if I select the correct one :slight_smile:

updated rev:
https://gist.github.com/Klaas-/ffa1e0759f0b9e6a1fcc94c2fb1aa8d7
feel free to integrate into yours, then I’ll remove my fork.

I also fixed some stuff shellcheck complained about.

Example of a disk with two firmwares available:
WD_BLACK SN850X 1000GB

and maybe some todos for anyone who wants to play around some more:
there are multiple firmware slots, maybe it would be a good idea to check which slot is supposed to be used for a new firmware ( nvme-fw-commit(1) — Arch manual pages )

My disk has two slots for example. Both are read/write so you should check which slot is running current firmware and update the other one.
also you can see if you can apply the firmware online:

$ nvme id-ctrl /dev/nvme0 -H|grep -i Firm
[9:9] : 0x1 Firmware Activation Notices Supported
[4:4] : 0x1 Firmware Activate Without Reset Supported
[3:1] : 0x2 Number of Firmware Slots
[0:0] : 0 Firmware Slot 1 Read/Write
$ nvme fw-log /dev/nvme0
Firmware Log for device:nvme0
afi : 0x2
frs1 : 0x4457313133303236 (620311WD)
frs2 : 0x4457313633303236 (620361WD)

3 Likes

The script worked like a charm to upgrade an SN850X 1TB from 620331WD to 620361WD. Thank you very much!

2 Likes