Welcome! Log In Create A New Profile


Possible to Install linux on MyCloud Home ?

Posted by alexio 
Possible to Install linux on MyCloud Home ?
October 11, 2020 03:41PM
Hello all, I have a Mycloud home that has unfortunately stopped working. I removed the attached hard drive to try to recover data with no luck. However once I had the Mycloud home apart I noticed that it had 4 pin headers for a serial connection to be established. Luckily for me I have the serial to USB cable that I used on my pogoplug which ended up working. Upon powering the board on I realized that it actually had two different boot loaders preinstalled. One of them appears to be a u-boot version. This got me excited wondering if a Linux distro could be easily installed? or if it would have to have a kernel /rootfs custom built. I can provide more print out information if needed. Any advice or suggestions would be really appreciated .Thank you.

CPU  : Cortex-A53 quad core - AARCH32

Board: Realtek QA Board

This is what prints when you initially turn it on,

hwsetting size: 000005C0
Goto FSBL: 0x10100000
fsbl_main: sys_secure_type = 0x0000BEEE
fsbl_main: sys_boot_type = 0x00000001
fsbl_main: sys_boot_enc = 0x00000000
fsbl_main: sys_bisr_done = 0x00000000






RSA Key Fw:


********** FW_TYPE_BOOTCODE **********
fwInfo->fwType: 00000001
fwInfo->isGolden: 00000001
fwInfo->ddrReadAddr: 00520000
fwInfo->ddrDestAddr: 00020000
fwInfo->flashType: 00000001
fwInfo->flashUnitSize: 00000001
fwInfo->flashOffset: 88120E80
fwInfo->dataSize: 00067460
sha256 Fw
j bootcode jump address:00020000


CPU  : Cortex-A53 quad core - AARCH32
Board: Realtek QA Board
[ERR] get_accessible_ddr_size: hw setting error. (impossible value 0x0)
[ERR] get_accessible_ddr_size: hw setting error. (impossible value 0x0)
DRAM:  0 Bytes
Watchdog: Disabled
Cache: Enabled
Non-Cache Region: 1 MB@0x07900000
nor flash id [0x00ef4014]
sector 256k en: 0
sector  64k en: 1
sector  32k en: 1
sector   4k en: 1
page_program  : 1
max capacity  : 0x00100000
spi type name : WINBOND_W25Q80BV_8Mbit
[SATA] enable SATA interface
[SATA] spread-spectrum disable
Factory: NOR
Factory: pp:0, seq#:0x1c, size:0x2400
------------can't find tmp/factory/000BootParam.h
In:    serial
Out:   serial
Err:   serial
Net:   Realtek PCIe GBE Family Controller mcfg = 0024
*** Reboot-Action invalid ***
Hit Esc or Tab key to enter console mode or rescue linux:  0
------------can't find tmp/factory/recovery
======== Checking into android recovery ====

AHCI 0001.0301 32 slots 2 ports ? Gbps 0x3 impl SATA mode
flags: ncq pm led clo only pmp pio slum part
No port device detected!
Error, SATA device initialization failed!
bootr - boot realtek platform

bootr [u/uz]
        u   - boot from usb
        uz  - boot from usb (use lzma image)
        m   - read fw from flash but boot manually (go all)

Enter console mode, disable watchdog ...


This is what happens when you type help with only the first bootloader active

Realtek> help
b2ndbc  - load 2nd stage bootcode
bdinfo  - print Board Info structure
bootm   - boot application image from memory
bootr   - boot realtek platform
dcache  - enable or disable data cache
dhcp    - boot image via network using DHCP/TFTP protocol
env     - environment handling commands
factory - FACTORY sub system
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
fatwrite- write file into a dos filesystem
fdt     - flattened device tree utility commands
gettime - get timer val elapsed
go      - start application at address 'addr' or start running fw
goru    - start rescue linux from usb
gpt     - GUID Partition Table
help    - print command description/usage
i2c     - I2C sub-system
icache  - enable or disable instruction cache
keyset  - keyset - write keyset file into factory area
loady   - load binary file over serial line (ymodem mode)
md      - memory display
mtest   - simple RAM read/write test
mtest2  - simple RAM read/write test
mw      - memory write (fill)
ping    - send ICMP ECHO_REQUEST to network host
reset   - Perform RESET of the CPU
rtkfat  - Realtek FAT32 format utility v1.0
rtkfdt  - RTK fdt utility
rtkgpt  - rtkgpt utility
rtkrng  - rng utility
rtkspi  - spi flash utility
sata    - SATA sub system
saveenv - save environment variables to persistent storage
source  - run script from memory
tftp    - download image from TFTP server
tftpput - TFTP put command, for uploading files to a server
uart_write- for uart mp tool burn mac and sn key

unzip   - unzip a memory region
usb     - USB sub-system
version - print monitor, compiler and linker version
wdpp    - Western Digital Boot Patition Tool

This is board infor

Realtek> bdinfo
arch_number = 0x0000138A
boot_params = 0x00100100
DRAM bank   = 0x00000000
-> start    = 0x00000000
-> size     = 0x00000000
ethaddr     = 00:00:C0:06:69:CE
ip_addr     =
baudrate    = 115200 bps
TLB addr    = 0x000E0000
*** bdinfo pll ***
SCPU  PLL   = 1201 MHz
SCPU        =  600 MHz
ACPU  PLL   =  549 MHz
ACPU        =  549 MHz
VCPU1  PLL   =  594 MHz
VCPU2  PLL   =  675 MHz
DDSA  PLL   =  432 MHz
DDSB  PLL   =  432 MHz
BUS  PLL   =  255 MHz
BUS_H  PLL   =  459 MHz
GPU   PLL   =  449 MHz
VODMA  PLL   =  405 MHz
*** bdinfo ddr ***
DDR        =  1600 MHz (0x1a)
[ERR] get_ddr_size: hw setting error. (impossible value 0xf)
[ERR] get_accessible_ddr_size: hw setting error. (impossible value 0x0)
[ERR] get_ddr_size: hw setting error. (impossible value 0xf)
[ERR] get_accessible_ddr_size: hw setting error. (impossible value 0x0)
DDR   SIZE =   0*2 =    0 MB  (Evaluated from DC1 0xb8008004/0x18008740)

this is me loading the 2nd bootloader

Realtek> b2ndbc
libfdt fdt_check_header(): FDT_ERR_BADMAGIC

EXPORT ENV AT 0x10000000, ENV size info:0x00002000,0x00001ffc,0x00000004
rtk_preload_bootimages_spi : header info
 0x00000600 0x00067440 0x00010b00 0x00000000
 0x00005040 0x00000000 0x00000000 0x00026360
rtk_preload_bootimages_spi : load U-Boot 64 from 0x8819de60 to 0x01500000 with size 0x00026360
rtk_preload_bootimages_spi : load BL31 from 0x88198e00 to 0x10120000 with size 0x00005040
fdt_chosen: FDT_ERR_BADMAGIC
copy_2nd_bootloader_and_run : src:0x01500000, dst:0x00021000, size:0x00028000
Jumping to 2nd bootloader...

U-Boot 2015.07-g5a4a178-dirty (Jun 22 2016 - 11:33:46 +0800)

CPU  : Cortex-A53 Quad Core
Board: Realtek QA Board
[ERR] get_accessible_ddr_size: hw setting error. (impossible value 0x0)
[ERR] Fall back to using CONFIG_SYS_RAM_DCU1_SIZE
DRAM:  1 GiB
mapping memory 0x20000000-0x40000000 non-cached
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
rtk_plat_set_fw not port yet, use default configs
Not raw Image, Starting Decompress Image.gz...

Error: Bad gzipped data
Decompress FAIL!!
ERROR do_booti failed!


Realtek> ver

U-Boot 2015.07-g5a4a178-dirty (Jun 22 2016 - 11:33:46 +0800)
aarch64-linux-xgcc (Realtek ASDK64-4.9.3 Build 2180) 4.9.3 20150413 (prerelease)
GNU ld (Realtek ASDK64-4.9.3 Build 2180)

this is help with 2 bootloaders active

Realtek> help
?       - alias for 'help'
base    - print or set address offset
bdinfo  - print Board Info structure
booti   - boot arm64 Linux Image image from memory
bootm   - boot application image from memory
bootr   - boot realtek platform
cachetest- Stress cache operation
cmp     - memory compare
cp      - memory copy
dcache  - enable or disable data cache
editenv - edit environment variable
env     - environment handling commands
erase   - erase FLASH memory
exit    - exit script
false   - do nothing, unsuccessfully
fdt     - flattened device tree utility commands
flinfo  - print FLASH memory information
gettime - get timer val elapsed
gictest - Turn on GIC and send SGI to CPU
go      - start application at address 'addr'
help    - print command description/usage
icache  - enable or disable instruction cache
loadb   - load binary file over serial line (kermit mode)
loadx   - load binary file over serial line (xmodem mode)
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing address)
mw      - memory write (fill)
nm      - memory modify (constant address)
printenv- print environment variables
protect - enable or disable FLASH write protection
reset   - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv  - set environment variables
setexpr - set environment variable as the result of eval expression
showvar - print local hushshell variables
source  - run script from memory
test    - minimal test like /bin/sh
true    - do nothing, successfully
version - print monitor, compiler and linker version

this is printenv

Realtek> printenv


Environment size: 659/8188 bytes
Re: Possible to Install linux on MyCloud Home ?
October 11, 2020 04:23PM

Definitely u-boot is the bootloader to. Cortex-A53 is 64-bit, but this runs in legacy mode AARCH32.

CPU  : Cortex-A53 quad core - AARCH32

Board: Realtek QA Board

Unfortunately, I don't have a kernel build for Realtek.

The Debian rootfs Debian-5.2.9-mvebu-tld-1-rootfs-bodhi.tar.bz2 can be used (it is a 32-bit armhf rootfs). But the kernel on it is Marvell MVEBU specific, so I'd doubt that you can get far in try using it.

Have you check mainline Debian to see if there is support? when I have time, I'll look into this to see what the status of Realtek SoC.

Forum Wiki
bodhi's corner
Re: Possible to Install linux on MyCloud Home ?
October 11, 2020 05:23PM
Realtek RTL SOC support has recently been added to the kernel. There are a few DTS files in arch/arm64/boot/dts/realtek. One is for a Synology NAS DiskStation DS418 so might be a good start if the SOC is the same. You did not post anything that indicates which of the various Realtek SOCs in the RTD series is being used here.
Re: Possible to Install linux on MyCloud Home ?
October 11, 2020 07:01PM
Ray was right!

Looks like this is rd1295 SoC.


Any of these DTS will work

-rw-rw-r--  1 root root  426 Aug 21 04:15 rtd1295-mele-v9.dts
-rw-rw-r--  1 root root  434 Aug 21 04:15 rtd1295-probox2-ava.dts
-rw-rw-r--  1 root root  451 Aug 21 04:15 rtd1295-xnano-x5.dts
-rw-rw-r--  1 root root  495 Aug 21 04:15 rtd1295-zidoo-x9s.dts

So it is a definite yes. Mainline have supports ready for this box. At the end you would need a new DTS to properly identify this box. For example,


Forum Wiki
bodhi's corner
Re: Possible to Install linux on MyCloud Home ?
October 11, 2020 11:31PM
Okay great thank you both very much. I will start working on this and let you know how it goes . Thanks again
Re: Possible to Install linux on MyCloud Home ?
January 15, 2021 08:34AM
Hi there,

There was a project earlier in 2020 to do just this. I have Debian stretch running on my WD MyCloud Home. Here's the thread: https://community.wd.com/t/install-debian-on-wd-my-cloud-home/250061

Unfortunately, it requires a hard disk that already has the WD software and its 24(??) partitions defined and formatted. If you have a failed hard disk, or are replacing with a different hard disk, that presents a challenge. I'm working on this very problem right now, and a script to prep a blank hard disk for installation.

I'll try to post my results.

Re: Possible to Install linux on MyCloud Home ?
January 23, 2021 11:31AM
I have written a script that can be used to prepare a new hard disk for the WD NAS appliance. Please note, I have expanded the 800MB partitions to 2GB and the 2GB partitions to 4GB. Seeing as how the Linux install gets a little tight using the WD factory partition sizes, I thought it best to give us some more room.

In my case, I took the blank disk and attached it via USB to my Ubuntu workstation. The tools sgdisk, mkfs.vfat, mkfs.ext4, and partprobe should be installed on most systems, but you'll want to check first before running the script. Also, verify the disk name before running. Be careful, as this script will destroy all contents of the disk.

IMPORTANT: For some reason, my Ubuntu workstation saw the WD 4TB drive as a 1.6TB. As such, it left me with a much smaller data partition. My solution was to run the script on the Ubuntu box to format the drive, and then go back and fix it later on the NAS after the OS is installed.


# The name of the disk we're modifying, if it's USB attached it's probably sdb

# Flatten any existing partition tables that may exist and write out a blank GPT table
sgdisk $newdisk -Z
sgdisk $newdisk -o

#Create the first 23 partitions that the installer expects. Size matters.
sgdisk $newdisk -a 1 -n 1:34:2047 -t 1:0700 -c 1:FW_TABLE
sgdisk $newdisk -a 1 -n 2:2048:67583 -t 2:0700 -c 2:KERNEL_A
sgdisk $newdisk -a 1 -n 3:67584:133119 -t 3:0700 -c 3:ROOTFS_A
sgdisk $newdisk -a 1 -n 4:133120:198655 -t 4:0700 -c 4:ROOTFS_B
sgdisk $newdisk -a 1 -n 5:198656:200703 -t 5:0700 -c 5:FDT_A
sgdisk $newdisk -a 1 -n 6:200704:202751 -t 6:0700 -c 6:FDT_B
sgdisk $newdisk -a 1 -n 7:202752:210943 -t 7:0700 -c 7:AFW_A
sgdisk $newdisk -a 1 -n 8:210944:276479 -t 8:0700 -c 8:KERNEL_B
sgdisk $newdisk -a 1 -n 9:276480:342015 -t 9:0700 -c 9:ROOTFS_GOLD
sgdisk $newdisk -a 1 -n 10:342016:344063 -t 10:0700 -c 10:FDT_GOLD
sgdisk $newdisk -a 1 -n 11:344064:352255 -t 11:0700 -c 11:AFW_B
sgdisk $newdisk -a 1 -n 12:352256:354303 -t 12:0700 -c 12:BOOTCODE32
sgdisk $newdisk -a 1 -n 13:354304:356351 -t 13:0700 -c 13:BOOTCODE64
sgdisk $newdisk -a 1 -n 14:356352:358399 -t 14:0700 -c 14:BL31
sgdisk $newdisk -a 1 -n 15:358400:360447 -t 15:0700 -c 15:BL32
sgdisk $newdisk -a 1 -n 16:360448:425983 -t 16:0700 -c 16:KERNEL_GOLD
sgdisk $newdisk -a 1 -n 17:425984:434175 -t 17:0700 -c 17:AFW_GOLD
sgdisk $newdisk -a 1 -n 18:434176:499711 -t 18:0700 -c 18:CONFIG
sgdisk $newdisk -a 1 -n 19:499712:4694015 -t 19:0700 -c 19:SYSTEM_A
sgdisk $newdisk -a 1 -n 20:4694016:8888319 -t 20:0700 -c 20:SYSTEM_B
sgdisk $newdisk -a 1 -n 21:8888320:13082623 -t 21:0700 -c 21:CACHE
sgdisk $newdisk -a 1 -n 22:13082624:21471230 -t 22:0700 -c 22:DATA
sgdisk $newdisk -a 1 -n 23:21471232:25665535 -t 23:0700 -c 23:SWAP

#The final partition is the actual data volume, so we consume all available disk
sgdisk $newdisk -a 1 -N 24 -t 24:0700 -c 24:DISKVOLUME1

# We made a lot of changes, so force the kernel to update
partprobe $newdisk

# Some of these need to be formatted in order for rescue Linux to work properly
mkfs.vfat $newdisk\18
mkfs.ext4 -F $newdisk\19
mkfs.ext4 -F $newdisk\20
mkfs.ext4 -F $newdisk\21
mkfs.ext4 -F $newdisk\22
mkfs.ext4 -F $newdisk\24

# Review the partition layout
sgdisk $newdisk -p

# ------ SCRIPT END -----

After provisioning the disk, install the disk back into the NAS and then boot the Linux installer USB stick I mentioned in the previous post. Once the OS is installed and booting natively from the NAS, if needed you can fix the size of the data partition by:

sgdisk /dev/sataa -d 24
sgdisk /dev/sataa -N 24 -t 24:0700 -c 24:DISKVOLUME1
resize2fs /dev/sataa24

I am hoping to build a rescue image so that all of this can be done from the NAS. While WD has been gracious enough to give us the tools to do so, it's not exactly a simple process. If I figure it out, I'll post further.

Also, just a side note, I ran 3 jumper wires from the NAS controller through the cooling slots at the top of the NAS. This is so I can gain console access without popping the case apart. My goal is to be able to test, re-test, and rebuild without having to pop open the case. Just a thought, if you're wanting to really get down and dirty with debugging this thing.

Re: Possible to Install linux on MyCloud Home ?
February 28, 2021 11:16PM
Brian, Thank you so much for the reply. I was able to re-partition the hard drive using your instructions and using that link to the other forum i was was able to create the USB needed to get into Debian on the my cloud home. i really appreciate your help it was amazing.

Link for what i used to anyone who finds this later.


I put everything in a file which you can extract to a USB stick (>8GB, FAT32 formatted). This will give you the minimal debian buster:

USB must be MRB and be 8GB+ fat32 format

default name/password
name :root
pwd: buster

Edited 1 time(s). Last edit at 03/01/2021 08:20PM by alexio.

Your Email:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.