Donec Facilisis Lacinia

Aliquam sodales euismod venenatis. Ut pharetra nisl erat, vitae dapibus neque rutrum sit amet. Vestibulum vel aliquam diam. Phasellus volutpat nisl purus, placerat viverra libero faucibus eu.

1 Like

You seem to be a talented developer and I wish I could be of more help to you. Indeed, testing the custom firmware is a risk that could brick your NAS beyond repair, and I am not aware of a method to virtualize the hardware or force-install the original firmware in case of an emergency.

Have you checked the My Cloud Developer site for guidance?

Can you describe the process you do when you build this firmware ( I have PR2100 Mycloud ), and need rebuild “php” to enable ZIP extension for opencart setup work ?
:slight_smile: @dswv42 Can you modify uimage ? Wd mycloud may have a bootloader or else, may be we can make it boot on the fly other kernel and if has problem we can reboot to restore base kernel, I think.

Looking for guide building “Open_Source_packages” folder. Try bypass every err(s) but it took too much time, and final linking it make segment fault? when run :frowning:. I Need rebuild php to enable mysqli, zip extension and python UC4 enable for tensorflow install by virtualenv .
I also found some file fault when copy sometime, it make add or replace by null(s) in content, do you catch it ?
@dswv42 I found it using grub for boot maybe we can modify it for checking some file if exit we can del it and boot modify kernel, if not … reboot for default kernel ?

This topic is sure a fun read. Thanks for the posts @dswv42. Sure digs out a lot of dirt. Worried about WD pulling a “Trump” on it…

1 Like

Sorry to hear about the “brickage” @dswv42

I was a first timer buying a NAS and extensive reports from specialized media convinced me WD EX4 was a good choice. I regret it know, maybe not as much as you, but I wouldn’t go for WD again as well. SO many bugs, poor performance, bad support, it is not worth it.

As far as fiddling with the hardware goes, good luck and keep posting about the progress!

dude, keep it up. I find it very enjoyable reading about what you have discovered.

I say 100% thank you…please keep it up. or send to me privately.

aww that’s really unfortunate… I enjoy reading this thread and I’d like to contribute. I got my PR4100 just this week but I’m ready to get my hands dirty :slight_smile:

Hey mate,

I have actually found all this an interesting read and also on the bits on recovery of your unit via USB. I’ve actually got an EX4100 and not the same model as yours but do definitley find this interesting none the less.

Thanks for putting this together and if you do decide to change your mind on it, I’m happt to look over the EX4100 and offer similar insights.



This thread has been one of the most enjoyable reads I have encountered in a forum. A lot of what you have posted is above and beyond my level of expertise. However, I get the idea and was checking up on your findings with regularity. I would absolutely love to continue reading abut your findings. Please reconsider and continue with the updates. I own the PR4100 which I use primarily for PLEX and have no problems with it in this respect, but agree the firmware is a disaster when compared to the flexibility of my Synology NAS.

@dswv42 you gave some examples about mounting wd_config but did you make any changes to the squashfs yet?
What happens when it doesn’t pass the CRC check on boot (in case you would’nt update the CRC)?

I’m currently going through the hell of building the open source packages… Would you mind sharing your scripts via PM to save me some time? Doesn’t matter if it’s incomplete or a bit crude, but I don’t like going through this mess knowing that someone has cleared the path before :slight_smile:

I’d like to install OMV or plain debian on this box… 2 GB flash is sufficient as system disk, I just need to setup the logcollection to be RAM only. I have the USB-TTL cable and GRUB access but I intend to create a headless installer (iso with preseed config).
My main issue now is the fancontroller… it is spinning at full speed. lm-sensors is not able to relax the fan with PWM.
Then I tried to copy wdtmsd (wd thermal monitor svc daemon) with all its dependencies but it fails to insmod /opt/wd/kmodules/rstbtn.ko … any way to build this myself?

I got around the failing insmod by using a forced modprobe. However I realized all my efforts may be wasted on the reset button (rstbtn.ko), an I2C button like here.
The reset button is not that important to me…
I want the WD hardware service daemon (wdhws) and other binaries in /opt/wd/bin such as temperature monitor (wdtms) and power monitor in my other kernel.

@dswv42 Did you get the WD temperature and power management binary blobs working in your custom kernel?

I copied all the files used in the /etc/init.d/S14wdhws script and the wdhws logs in syslog

wdhws: starting wdhw service with config_file=/etc/wd/sprite-wdhw.xml
wdhws: wdhw_service
wdhws: start
wdhws: launch
wdhws: run

However it shuts down without any error or warning :frowning:
The other services need the wdhws to be running…

ldd /opt/wd/bin/wdhws

Shows that all libraries have a match, however most of them come from the newer kernel.

Some info for those who want to rewrite the image.cfs

  • the image has a 2048 bytes header, all zeros except for the initial 8 bytes
  • first 4 bytes is the size of the actual image
  • second 4 bytes is the checksum, more precisely a XOR of all 4 byte chunks.
  • in other words, now you know what firmware/module/image_checksum does
  • mount the ext4 volume first to some location
  • then mount the squashfs image on that volume with an offset to remove the header

mount -t squashfs -o loop,offset=2048

@dswv42 what are your thoughts on this:
You get to setup debian on a USB drive, chroot into it and eventually even boot into it.
It allows to go back and forth between stock firmware and the debian chroot.
In the chroot you can setup openmediavault to get cloud features while the WD services can be killed (except the ones from /opt/wd/bin). You could even create a ZFS setup.


I have an EX4100 and would like to try and help out here if I can. I am running out of patience as well with the issue a number of EX4100 users are exhibiting whereby the NAS will kernel panic and lock up for no apparent reason. I’ve implemented a workaround on my NAS but a reworked firmware would be a better option.

Let me know if there is a way I can help out.




I just ran similar commands on the EX4100 and got the following:

root@WDMyCloudEX4100 / # cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00500000 00020000 "U-Boot"
mtd1: 00500000 00020000 "uImage"
mtd2: 00500000 00020000 "uRamdisk"
mtd3: 1b900000 00020000 "image.cfs"
mtd4: 00f00000 00020000 "rescue fw"
mtd5: 01400000 00020000 "config"
mtd6: 00a00000 00020000 "reserve1"
mtd7: 00a00000 00020000 "reserve2"

So it looks like they also have reserve partitions here as well.

From /cat/proc/partitions:

major minor  #blocks   name
31        0       5120 mtdblock0
31        1       5120 mtdblock1
31        2       5120 mtdblock2
31        3     451584 mtdblock3
31        4      15360 mtdblock4
31        5      20480 mtdblock5
31        6      10240 mtdblock6
31        7      10240 mtdblock7

I’ll have to dig a bit more and see what is there as far as filesystems goes.




Do you need a console connection to the mainboard setup in order to do it ? I am gathering you would need to change the boot order to boot from USB rather then the Flash chip based on what I have seen posted on this so far.




I’ve attached the dmesg output from the EX4100 as well if you want to take a look. It looks like the 7 and 8 partitions on this unit are UBIFS, so could try and mount these and see what it in them. I also saw there are some bad block messages for the flash which is a bit concerning :frowning:

EX4100 dmesg.txt (32.4 KB)




Tried this on my unit :slight_smile:

root@WDMyCloudEX4100 /tmp # mount -t ubifs ubi1_0 /tmp/ubi1
root@WDMyCloudEX4100 /tmp # mount -t ubifs ubi2_0 /tmp/ubi2
root@WDMyCloudEX4100 /tmp # cd ubi1/
root@WDMyCloudEX4100 ubi1 # ls -al
drwxr-xr-x    2 root     root           240 Jan  1  1970 .
drwxrwxrwt   14 root     root          1360 Nov  4 20:57 ..
-rw-r--r--    1 root     root             1 Jan  1  1970 flash_update_firmware
root@WDMyCloudEX4100 ubi1 # cd ..
root@WDMyCloudEX4100 /tmp # cd ubi2
root@WDMyCloudEX4100 ubi2 # ls -al
drwxr-xr-x    2 root     root           456 Mar  5  2015 .
drwxrwxrwt   14 root     root          1360 Nov  4 20:57 ..
-rw-r--r--    1 root     root             2 Jan  1  1970 hidden_eccryption
-rw-r--r--    1 root     root            36 Feb  7  2015 mac_addr
-rw-r--r--    1 root     root             2 Jan  1  1970 model_id
-rw-r--r--    1 root     root            12 Mar  5  2015 wd_serial.txt

root@WDMyCloudEX4100 /tmp # cd ubi1
root@WDMyCloudEX4100 ubi1 # more flash_update_firmware
0root@WDMyCloudEX4100 ubi1 # cd ..
root@WDMyCloudEX4100 /tmp # cd ubi2
root@WDMyCloudEX4100 ubi2 # ls -al
drwxr-xr-x    2 root     root           456 Mar  5  2015 .
drwxrwxrwt   14 root     root          1360 Nov  4 20:57 ..
-rw-r--r--    1 root     root             2 Jan  1  1970 hidden_eccryption
-rw-r--r--    1 root     root            36 Feb  7  2015 mac_addr
-rw-r--r--    1 root     root             2 Jan  1  1970 model_id
-rw-r--r--    1 root     root            12 Mar  5  2015 wd_serial.txt
root@WDMyCloudEX4100 ubi2 # more *
WNAG25360101root@WDMyCloudEX4100 ubi2 #

So nothing exciting in these files by the looks.