5

Background

The Western Digital "Ultrastar® DC HC530 14TB HDD" (Model number: WUH721414ALE6L4)(SATA Interface) comes only in a 512e sector size by default.

According to the 2 Western Digital documents below, "**512e models can be converted to 4Kn format and vice versa.":

a) The WD Part Number Selector (please refer to footnote 1) (https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc500-series/data-sheet-part-numbers-ultrastar-dc-hc530.pdf)

b) Product manual (please refer to page 17) (https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc500-series/product-manual-ultrastar-dc-hc530-sata-oem-spec.pdf)

However, there are NO instructions or software/utilities available from the Western Digital to perform the conversion from 512e to 4Kn sector size (in Windows 10).

I have written to the Western Digital Support Portal, but they have not provided any helpful response.

Question

Appreciate your help to advise on how to go about converting the Western Digital "Ultrastar® DC HC530 14TB HDD" from 512e to 4Kn sector size.(in Windows 10)

4
  • 2
    See answer by K_A_T>>>>>>>>>community.wd.com/t/how-to-format-wdbwlg0040hbk-from-512e-to-4kn/…
    – Moab
    Aug 11, 2020 at 15:30
  • Thank you Moab :)
    – Fab
    Aug 11, 2020 at 15:58
  • Apologies, the command line interface can be daunting (especially with the real possibility of bricking the HDD), would the Commands provided by "K_A_T" work for the latest version of HUGO? (I read the User Guide for "HUGO-7.2.6.win64" and the Commands appear to be different from those shared by "K_A_T". Thank you
    – Fab
    Aug 11, 2020 at 16:05
  • Moab, that is an interesting hint, thank you.
    – r2d3
    Aug 15, 2020 at 18:33

4 Answers 4

5

You need to use a program called "Hugo" by Western Digital. You can't just download it from their site, but if you contact them with a support request after 1-2 weeks someone will contact you and send you a download link.

Then what I did was the following, to change formatting for an 18TB HGST (now WD) drive from the default 512e to 4Kn

C:\Program Files\WDC\HUGO\bin>hugo s --device
     Manuf.       Model               Serial                Interface       Capacity  Type  Firmware
----------------------------------------------------------------------------------------------------
  1) HGST         WUH721818ALE6L4     XXXXXXX              SATA            18000 GB  HDD   PCGNW232
        Device handles: \\.\PhysicalDrive2

C:\Program Files\WDC\HUGO\bin>hugo format -g \\.\PhysicalDrive2 -b 4096 --fastformat -n max

        ******************************** WARNING **********************************
           The Format command will result in loss of data on the specified device.
           This device might be your boot device and it won't be protected.
        ******************************** WARNING **********************************

                Are you sure you want to Format this device? (Y/N) y
            
Format device on 1 Device(s)...

C:\Program Files\WDC\HUGO\bin>hugo s --device
     Manuf.       Model               Serial                Interface       Capacity  Type  Firmware
----------------------------------------------------------------------------------------------------
  1) HGST         WUH721818ALE6L4     XXXXXXX              SATA            18000 GB  HDD   PCGNW232
        Device handles: \\.\PhysicalDrive2

C:\Program Files\WDC\HUGO\bin>hugo s --device -b
     Manuf.       Model               Serial                Interface       Capacity  Type  Firmware
----------------------------------------------------------------------------------------------------
  1) HGST         WUH721818ALE6L4     XXXXXXX              SATA            18000 GB  HDD   PCGNW232
        Block Size: 4096                Native Block Size: 4096
        Device handles: \\.\PhysicalDrive2

Notice the native block size at 4096 (=4Kn) after the format

3

However, there are NO instructions ...

This is not entirely true, according to that product specification, this drive supports an ATA command called Set Sector Configuration Ext, which could be used to change the logical sector size, without need of using any propitiatory programs from vendor, such as HUGO; see section Set Sector Configuration Ext (B2h) page 287 for a details description of this command.

This offical information could be too technical for ordinary users, so I'm trying to explain specifically what steps you should do, and why; however the information provided here should be treated as a reference only, you must take full responsibility for any command you sent to your disk drive, and only take practice after you understood the intention of each step.

I successfully changed the logical sector size from 512 to 4096 for my HC530 14TB drive. Since only logical sector size is changed, and the physical sector size remains 4096 all the time, this operation won't affect existing data on the disk; however it is always recommended to backup any important data before trying any operation like this.

I performed the following steps in a FreeBSD system, anyone using a different operating system should study with an equivalent command/tool if a specific command isn't available on their system.

Make sure no programs are using the disk, and no file systems are mounted from the disk, before continuing.

Instead of setting the sector size from a passed in value directly, the Set Sector Configuration Ext command sets the sector cofiguration from a predefined list called Sector Configuration Log, which is stored on disk as a General Purpose Log at address 0x27; each entry is called a Sector Configuration Descriptor. See product documentation section 12.21.13 Sector Configuration log page 217 for details on the log structures.

I used smartctl(8) to retrieve Sector Configuration Log of my drive, shown as followings:

# smartctl --log gplog,0x2f /dev/ada8
smartctl 6.6 2017-11-05 r4594 [x86_64-unknown-freebsd10.4 FreeBSD 10.4-RELEASE-p14] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

General Purpose Log 0x2f [Set Sector Configuration], Page 0-0 (of 1)
0000000: 80 00 00 02 00 10 00 00 00 00 00 00 00 00 00 00 |................|
0000010: 80 00 08 02 40 10 00 00 00 00 00 00 00 00 00 00 |....@...........|
0000020: 80 00 10 02 80 10 00 00 00 00 00 00 00 00 00 00 |................|
0000030: 80 03 00 10 00 02 00 00 00 00 00 00 00 00 00 00 |................|
0000040: 80 03 40 10 08 02 00 00 00 00 00 00 00 00 00 00 |..@.............|
0000050: 80 03 80 10 10 02 00 00 00 00 00 00 00 00 00 00 |................|
0000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
...

As specified in the documentation, each descriptor is 16 bytes long, and valid descriptor will having the bit 7 set, 6 valid descriptors can be found in the output above.

Next we need to find out which descriptor have a logical sector size of 4096; the Logical Sector Size Setting field is at offset 4 of a descriptor and having size of 4; note that the integer data in the descriptors are in little-endian; we choose the first descriptor because it have the value 00 10 (0x1000 == 4096)

Using the Set Sector Configuration Ext requires you passing the descriptor index, in this case 0, as the sector_count parameter, as well as the descriptor check value of the descriptor as the feature parameter. The descriptor check value size is 2, and it is found at offset 2 of a descriptor; so the descriptor check value in current case is 00 02. The specification also requires you setting bit 6 of the device parameter.

The command parameters will be as followings:

feature=0x0200
sector_count=0x0000
device=0x40

Other parameters are unused and should be set to 0.

I used camcontrol(8) command available on FreeBSD, to send this ATA command, using the following syntax:

comcontrol command <disk> [-v] -a "<command> <features> <lba_low> <lba_mid> <lba_high> <device> <lba_low_exp> <lba_mid_exp> <lba_high_exp> <features_exp> <sector_count> <sector_count_exp>" -r -

Where option -v is optional here that enables verbose error messages in cause of command failure; -r - specifics that command register values indicating drive output, should be printed to stdout after the command successfully sent.

Run it:

# camcontrol command ada8 -v -a "b2 00 00 00 00 40 00 00 00 02 00 00" -r -
50 00 00 00 00 00 00 00 00 00 00

Verify the logical sector size after the above command succeeded:

# smartctl --info /dev/ada8
smartctl 6.6 2017-11-05 r4594 [x86_64-unknown-freebsd10.4 FreeBSD 10.4-RELEASE-p14] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
...
User Capacity:    14,000,519,643,136 bytes [14.0 TB]
Sector Size:      4096 bytes logical/physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
...

You should now completely unplug the drive and plug it again, to update kernel's view the its logical sector size; because the host kernel will likely still remembering the drive as 512-byte sector logically, any further sector accesses will be invalid and may cause I/O hanging in the kernnel, until you re-plugging the drive. Ather that the kernel should be able to access its sectors using the native 4096-byte sector size without problem.

4
  • Where'd you learn this stuff? Great answer!
    – ILIV
    Oct 14, 2022 at 13:35
  • Help! Is a couple of days that I wanted to change the sector size to 4096 of my 14 TB My Book drive (in it's enclosure). A few days ago I sent the command sg_raw -r 40 $dev 9e 10 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 and it said the block size was 512... now it says it's 4096, but smartctl still says 512 bytes logical, 4096 bytes physical. The weirdest thing is that the drive changed sound when reading... How can I put it back as it was?
    – Zibri
    Jan 22 at 4:35
  • @low power I would be very grateful if you could contact me (zibri AT zibri.org)
    – Zibri
    Jan 22 at 4:36
  • confirmed.. also HXD when reading the drive sees every sector as 4096 bytes long and a total of 3'418-095'616 sectors. So Indeed I changed something but I don't know how :(
    – Zibri
    Jan 22 at 5:04
2

Dunno if anybody is still watching this page at the end of 2021...

Thanks to the information Low power provides, I successfully wrote a Windows version of the program that can change the sector size of supported WD drives!

https://github.com/pig1800/WD4kConverter

1
  • Please quote the essential parts of the answer from the reference link(s), as the answer can become invalid if the linked page(s) change.
    – DavidPostill
    Oct 17, 2022 at 17:25
1

For those looking to do the same with DC HC550, for example WUH721816ALE6L4:

Western Digital's Hugo utility had apparently been discontinued and replaced with "wdckit" utility available at https://files.hddguru.com/download/Software/Western%20Digital/

There are many versions of that utility there, but for this example wdckit-2.15.0.zip works with HC550 drives.

The provided zip file is not a common format and can be uncompressed in Linux using p7zip-full utilities: 7za x wdckit-2.15.0.zip, unzip won't work there.

In Linux after decompressing files a pre-built "wdckit" binary works much the same way as Hugo:

wdckit show lists all available drives and

wdckit format --model WDC\ \ WUH721816ALE6L4 -b 4096 --fastformat performs the operation on a certain drive model. In my case the model name contained two spaces after "WDC" that needed to be escaped for the utility to work.

It's important to note that this is not a "convert", but a "reformat", meaning you're going to lose all data on that drive after the command had completed. It might be possible to restore that data back, by immediately running wdckit format --model WDC\ \ WUH721816ALE6L4 -b 512 --fastformat afterwards but I haven't tried it and it may not even work.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.