The script worked like a charm to upgrade an SN850X 1TB from 620331WD to 620361WD. Thank you very much!
deleted my fork, changes now incorporated into original script
Iβve been watching this thread while getting increasingly irritated by my WD SN770βs propensity to flub a wake-from-s2-idle and cause the kernel to remount all my filesystems read-only.
Yesterday, irritation exceeded trepidation and encouraged by @Klaas successfully hacking on @not_a_featureβs script I decided to take the plunge. In case it matters:
$ uname -r
6.1.0-1027-oem
$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 21.1
Release: 21.1
Codename: vera
My first attempt at running the script failed. The output gave me the clue I needed. Mint does not include the nvme-cli
package and so the command-line tools were not available.
Suggestion: the script be modified to check this and bale early. Happy to submit a patch (not sure it warrats a pull request).
With nvme-cli
installed the script ran and produced some unexpected and faintly troubling output.
Model: WD_BLACK SN770 500GB
Firmware Revision: 731030WD
Firmware File: 731120WD.fluf
Dependencies:
731030WD
731100WD
Downloading firmware from https://wddashboarddownloads.wdc.com/wdDashboard/firmware/WD_BLACK_SN770_500GB/731120WD/731120WD.fluf...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2732k 100 2732k 0 0 2442k 0 0:00:01 0:00:01 --:--:-- 2443k
Firmware download success
Firmware download complete. Switching to new firmware...
Success committing firmware action:3 slot:2
Multiple Update Detected (MUD) Value: 2202615
Detected an overlapping firmware/boot partition image update command sequence due to processing a command from a Management Endpoint
Detected an overlapping firmware/boot partition image update command sequence due to processing a command from an Admin SQ on a controller
Firmware update process completed. Please reboot.
I steeled myself for a bricked SSD and rebooted. Happily, everything seemed peachy (and continues to be so).
$ cat /sys/class/nvme/nvme0/firmware_rev
731120WD
Perhaps one of you knowledgeable contributors could help NVMe newbies (like me) understand what βMultiple Updateβ means in this context.
Thanks for making this available. Iβll report back if it didnβt fix my read-only filesystem problem.
Dino
Hi,
thatβs a wonderful suggestion.
Iβve add the requirements checks and converted the gist into a proper repository.
Reporting back to say that since I updated its firmware to 731120WD
my WD_BLACK SN770 (details above) has not failed on wake from S2idle in 35 days.
I canβt say that the relationship between S2idle events and drive failures was random but there was no discernible pattern to those failures. Most often the drive would fail every other week although there were several failures that were separated by only a day or two. The longest run between failures was 9 weeks but that was an outlier.
My Framework 13 enters S2idle at least once a day; often many times more. I almost never shut it down. The same usage profile has continued since the firmware was updated.
Iβm declaring this a success but will return to update you if the problem ever recurs.
Dino
News: Use the interactive tool wd-fw-update.
- Install it via pip:
pip install wd-fw-update
- Then run
wd-fw-update
- See GitHub - not-a-feature/wd_fw_update: Updates the firmware of Western Digital SSDs on Ubuntu / Linux Mint.
Thank you for the FW guide, successfully upgraded my SN740 2TB FW by a SN770M one.
So far no issues switching from 73110000 to 731120WD
Hope now my dell would stop freezing after deep sleep
Hey, Thanks for the guide, I donβt know if this guide is just for nvme devices or can be applied on SATA SSDs as well, but Iβve tried it on my WD SA510 500G device and am getting βFirmware download Failedβ error, here are my logs paste-bin It looks like that I have the same error as @Adsubia (community dot frame dot work/t/western-digital-drive-update-guide-without-windows-wd-dashboard/20616/33) with his first SSD if you look at the end of my logs, but I donβt see if he manged to solve the problem or not. Iβm pretty sure that Iβve found the correct fluf file here: wdDashboard/firmware/WD_Blue_SA510_2.5_500GB/52046100/device_properties.xml
(Looks like I canβt put more than 2 links in my comment :|)
Iβm having a bad time with this WD SSD, it become read-only randomly after a while and itβs brand new, and there is a firmware update clearly addressing this issue wd-website but I cannot update to it (even in a windows installation the WD Dashboard is not recognizing my device)
Anyone have any idea what I can do to apply this firmware updete?
Trying to update the SSDs in my FW16 the script finishes without error messages and asks me to reboot, but the actual firmware on the drives remains the same.
ekkehard@FW16:~$ cat /sys/class/nvme/nvme0/model
WD_BLACK SN770 2TB
ekkehard@FW16:~$ cat /sys/class/nvme/nvme1/model
WD_BLACK SN770M 2TB
ekkehard@FW16:~$
ekkehard@FW16:~$ cat /sys/class/nvme/nvme0/firmware_rev
731100WD
ekkehard@FW16:~$ cat /sys/class/nvme/nvme1/firmware_rev
731100WD
ekkehard@FW16:~$ .local/bin/wd_fw_update
Western Digital SSD Firmware Update Tool
[?] Select the NVME drive you want to update:
> /dev/nvme0n1
/dev/nvme1n1
[sudo] Passwort fΓΌr ekkehard:
Current Active Firmware Slot (afi): 1
[?] Select update action, Mode 2 is recommended:
0 Downloaded image replaces the image indicated by the Firmware Slot field. This image is not activated.
1 Downloaded image replaces the image indicated by the Firmware Slot field. This image is activated at the next reset.
> 2 The image indicated by the Firmware Slot field is activated at the next reset.
3 The image specified by the Firmware Slot field is requested to be activated immediately without reset.
85%|ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | 2.26M/2.67M [00:00<00:00, 7.89MB/s]
========== Summary ==========
NVME location: /dev/nvme0n1
Model: WD_BLACK SN770 2TB
Firmware Version: 731100WD --> 731120WD
Installation Slot: 1
Active Slot: 1 --> 1
Activation Mode: 2
Temporary File: /tmp/wd_fw_updatecx6arvrg.fluf
[?] The summary is correct. Continue (y/N): y
100%|ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 2.67M/2.67M [00:02<00:00, 1.06MB/s]
Update complete. Please reboot.
The current version should be 731120WD as reported by the updater, but it doesnβt stick.
Iβm currently on vacation/Iβll take a closer look when Iβm back.
Have you tried a different activation mode / a different slot?
You could also run the updater with the β-vvβ flag to see more output.
Alternatively you could perform the steps manually with the nvme toolkit and observe the behaviour.
ekkehard@FW16:~$ .local/bin/wd_fw_update
Western Digital SSD Firmware Update Tool
[?] Select the NVME drive you want to update:
> /dev/nvme0n1
/dev/nvme1n1
[sudo] Passwort fΓΌr ekkehard:
Current Active Firmware Slot (afi): 1
[?] Select update action, Mode 2 is recommended:
0 Downloaded image replaces the image indicated by the Firmware Slot field. This image is not activated.
> 1 Downloaded image replaces the image indicated by the Firmware Slot field. This image is activated at the next reset.
2 The image indicated by the Firmware Slot field is activated at the next reset.
3 The image specified by the Firmware Slot field is requested to be activated immediately without reset.
85%|ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | 2.27M/2.67M [00:00<00:00, 7.76MB/s]
========== Summary ==========
NVME location: /dev/nvme0n1
Model: WD_BLACK SN770 2TB
Firmware Version: 731100WD --> 731120WD
Installation Slot: 1
Active Slot: 1 --> 1
Activation Mode: 1
Temporary File: /tmp/wd_fw_update5yw69za3.fluf
[?] The summary is correct. Continue (y/N): y
100%|βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 2.67M/2.67M [00:02<00:00, 937kB/s]
CompletedProcess(args=['sudo', 'nvme', 'fw-commit', '-s 1', '-a 1', '/dev/nvme0n1'], returncode=22, stdout='Multiple Update Detected (MUD) Value: 46\nDetected an overlapping firmware/boot partition image update command sequence due to processing a command from an Admin SQ on a controller', stderr='NVMe status: FIRMWARE_IMAGE: The firmware image specified for activation is invalid and not loaded by the controller(0x4107)\n')
An error happened during the update process.
Traceback (most recent call last):
File "/home/ekkehard/.local/bin/wd_fw_update", line 8, in <module>
sys.exit(run())
File "/home/ekkehard/.local/lib/python3.10/site-packages/wd_fw_update/main.py", line 555, in run
main(sys.argv[1:])
File "/home/ekkehard/.local/lib/python3.10/site-packages/wd_fw_update/main.py", line 545, in main
wd_fw_update()
File "/home/ekkehard/.local/lib/python3.10/site-packages/wd_fw_update/main.py", line 526, in wd_fw_update
raise RuntimeError("Please try again with caution.")
RuntimeError: Please try again with caution.
ekkehard@FW16:~$
This was without a reboot after the third or fourth attempt. Will edit later if this changed anything.
[edit]
nope, after reboot the same error is displayed with option 1.
[/edit]
I am not an expert on NVMe firmware updates, but I did have the same problem of updates not applying because the utility was broken and I had to do it manually. Iβm not sure that all necessary fixes have been made upstream, and the maintainer has blocked me from interacting with all of their repositories for an unknown reason, so I canβt provide patches or clarifications.
First, make sure you are using at least version 1.2.2, as the previous versions generated invalid download URLs without error checking and would try to send a 404 page to your SSD. If this is the case, then the invalid firmware message is correct and is saving you from doom. Update the utility (or just do it manually; see below).
The messages about MUD value and overlapping images seem scary but are apparently not errors and can be ignored.
The process of manually performing the firmware update is not so burdensome so you may just want to try doing it yourself, which is what I did after the utility did not work for me. Just to reiterate it:
- Go to https://wddashboarddownloads.wdc.com/wdDashboard/config/devices/lista_devices.xml and find your device, in this case WD_BLACK SN770 2TB
- Go to the URL listed for the device, in this case https://wddashboarddownloads.wdc.com/wdDashboard/firmware/WD_BLACK_SN770_2TB/731120WD/device_properties.xml, and replace
device_properties.xml
with the value from thefwfile
node, in this case731120WD.fluf
- Download the firmware for the device, in this case https://wddashboarddownloads.wdc.com/wdDashboard/firmware/WD_BLACK_SN770_2TB/731120WD/731120WD.fluf
- Run
nvme fw-download -f <path-to-731120WD.fluf> /dev/nvme0
as root to push the firmware to the device - Run
nvme fw-commit -s 2 -a 3 /dev/nvme0
as root to activate the firmware to slot 2
The enumeration order of nvme devices can change across boots, so make sure to verify that /dev/nvme0
is still the right one.
It may also be a bug that the utility tries to use /dev/nvme0n1
instead of /dev/nvme0
but I donβt knowβagain, I am no expert on this process, just someone who had the same issue and did it successfully by doing it manually. Good luck!
Sorry for my English, itβs not very good.
Firstly, thank you for this guide. It made me closer to the right solution.
The problem is like here with the WD Green 120Gb.
I faced with this kind of problem when I tried to know what my model is:
I am not able to see it!
But I searched the model name in the internet, found it in the list you attached and download the proper firmware update file. Then I follow the instructions and faced with another problem. When I need to choose the proper drive, I see this:
(blue one is proper).
And then I tried to update, but receive this error message βFirmware Download Failedβ.
Then I found out that this drive may be a USB flash drive with the firmware. This means that this toolkit doesnβt see my SSD. But I can see it in the BIOS and in the Disk manager in Windows.
What do you think it can be?
Iβd appreciate itπ
In the windows physical disk listing, notice that the serial number of your SSD is shown (W9ADELW0) and this is also shown in the updater you boot from the USB device. So, the updater does see the SSD.
Why it fails to load the firmware onto the device, I do not know, sorry.
That one is HDD, but thanks
@Edward_Felder Has worked splendidly for me. Thanks!
zim@fedora:~$ cat /sys/class/nvme/nvme0/model
WD_BLACK SN850X 2000GB
zim@fedora:~$ cat /sys/class/nvme/nvme0/firmware_rev
620361WD
For anyone with a WD PC SN740 drive, installing the firmware labeled as for the SN770 (731120WD) seemed to install correctly on my SN740.
Itβs too early to be sure the spurious failures to wake are fixed, but so far so good. Iβll try to report back in a couple weeks.
Still no issues, I think this fixed it!