Western Digital MyCloud EX2 Ultra
The MyCloud EX2 Ultra is a two-bay NAS based on the Marvell Armada 385 (88F6820, 2x Cortex-A9 @ 1.33 GHz) with 1 GB RAM, 256 MB NAND flash, one Gigabit Ethernet port and two USB 3.0 ports. Fan, power LED and case temperature sensor are handled by a separate microcontroller on /dev/ttyS1. Western Digital lists support for this model until December 2027 (WD product lifecycle policy).
Any text with a light background (like this one) provides instructions for creating the Details Page. When you have filled in correct/useful information (instead of any template that's there) remove the instructions, as well as the
<WRAP> that encloses it.
Getting started with a new Device Page
- This is an empty template that suggests the information that should be present on a well-constructed Device Page. This means, that you have to fill it with life and information.
- There are several “fixme” tags with text on a light background (like this text) throughout this template. As you fill in the page, remove those tags so that people can judge its completeness.
- When there are no more “fixme” tags left, delete this one too, along with the
<WRAP>that encloses it.
Keep the articles modular
- Please include only model specific information, omit bla,bla and put everything generic into separate articles
- If you have no time to write certain stuff, link to docs
- base-system should lead the way, do not explain this again
- DO NOT provide a complete howto here! Instead groom the general documentation.
Supported Versions
Tested: OpenWrt 25.12.5 (target mvebu/cortexa9, profile wd_cloud-ex2-ultra).
Experimental Versions
None at this time.
Hardware Highlights
Installation
Flash Layout
256 MiB NAND (Macronix MX30LF2G18AC, 128 KiB erase blocks, 2 KiB pages). Partitions as reported by the OpenWrt kernel; names in brackets are those used by the WD firmware.
| mtd | Start | End | Size | Name |
|---|---|---|---|---|
| mtd0 | 0x00000000 | 0x00500000 | 5 MiB | U-Boot |
| mtd1 | 0x00500000 | 0x00a00000 | 5 MiB | kernel (uImage) |
| mtd2 | 0x00a00000 | 0x00f00000 | 5 MiB | uRamdisk |
| mtd3 | 0x00f00000 | 0x0c800000 | 185 MiB | ubi (image.cfs) |
| mtd4 | 0x0c800000 | 0x0d700000 | 15 MiB | rescue fw |
| mtd5 | 0x0d700000 | 0x0eb00000 | 20 MiB | config |
| mtd6 | 0x0eb00000 | 0x0f500000 | 10 MiB | reserve1 |
| mtd7 | 0x0f500000 | 0x0ff00000 | 10 MiB | reserve2 |
The stock U-Boot loads mtd1 and mtd2 (bootcmd=nand read.e 0xa00000 0x500000 0x500000;nand read.e 0xf00000 0xa00000 0x500000;bootm 0xa00000 0xf00000). The OpenWrt kernel ignores the bootloader command line and the old ramdisk, so mtd2 can stay as it is.
OEM easy installation
- Using original firmware enable SSH access and set password. SSH into device with user 'sshd'.
- Back up all NAND partitions first, e.g.
nanddump -q /dev/mtd0 > /tmp/mtd0.binfor mtd0 to mtd5, and copy the files off the device. Have a 3.3V serial adapter ready, it is the only way back if the device does not boot. - Copy *-image-cfs-factory.bin and *-uImage-factory.bin image files into device's /tmp directory. (e.g. using scp)
- Write kernel (uImage) image 'flash_eraseall /dev/mtd1 && nandwrite --markbad -p /dev/mtd1 /tmp/*-uImage-factory.bin'.
- Write rootfs (image-cfs) image 'ubiformat /dev/mtd3 -f /tmp/*-image-cfs-factory.bin -y'.
- Reboot the device and wait for openwrt to start.
After ubiformat, do not attach or check the new UBI from the stock firmware (e.g. ubiattach -m 3). On one unit this was done as a check, and the first OpenWrt boot then ended in a reboot loop:
UBI: EOF marker found, PEBs from 27 will be erased ubi0 error: 0xc06a66e4: the layout volume was not found Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
The stock kernel (4.14) most likely resized the volumes and wrote metadata behind the EOF marker of the image. Recovery: boot the initramfs image (TFTP, USB or serial, see below) and run sysupgrade -n, which reformats the UBI.
OEM installation using the TFTP method
- Connect UART 3.3V adapter to JP2 pins: 1-RX / 2-GND / 5-TX
- stop boot by pressing 1
- setenv ethact egiga2;setenv serverip 192.168.11.114;setenv ipaddr 192.168.11.113
- tftpboot 0x02000000 openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin; bootm 0x02000000 -
- do backup mtd1 mtd3
- use sysupgrade
Note: on one unit (U-Boot 2013.01_v1.04, Aug 20 2015) the network did not come up in U-Boot: ping and tftpboot failed with mvEgigaInit: egiga2 mvNetaPortEnable failed. In that case use the USB drive or the serial upload below.
Specific values needed for tftp
Enter values for “FILL-IN” below
| Bootloader tftp server IPv4 address | FILL-IN |
|---|---|
| Bootloader MAC address (special) | FILL-IN |
| Firmware tftp image | Latest OpenWrt release (NOTE: Name must contain “tftp”) |
| TFTP transfer window | FILL-IN seconds |
| TFTP window start | approximately FILL-IN seconds after power on |
| TFTP client required IP address | FILL-IN |
OEM installation using usb drive
- Connect UART 3.3V adapter to JP2 pins: 1-RX / 2-GND / 5-TX
- Use USB2.0 FAT32 pendrive with openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin
- stop boot by pressing 1
- usb start
- fatload usb 0:1 0x02000000 openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin;bootm 0x02000000 -
- do backup mtd1 mtd3
- use sysupgrade
Do not put a file /GrandTeton/u-boot.bin on the stick. The stock U-Boot contains a command sequence bubt /GrandTeton/u-boot.bin nand usb, i.e. it can reflash itself from USB. (Seen in the U-Boot binary, not tested.)
OEM installation using the serial line (YMODEM)
Works without network and without a USB stick. At 115200 baud the 6,657,783 byte initramfs image of 25.12.5 took 611 seconds.
- Connect the UART adapter as above and stop boot by pressing 1
loady 0x02000000, then sendopenwrt-*-wd_cloud-ex2-ultra-initramfs-kernel.binvia YMODEM from the terminal programiminfo 0x02000000(checks the image CRC), thenbootm 0x02000000- In the initramfs: copy the sysupgrade image to
/tmpand runsysupgrade -n
Upgrading OpenWrt
Use the sysupgrade image via LuCI or sysupgrade in the terminal. sysupgrade -n reformats the UBI on mtd3, which also repairs a broken UBI.
Debricking
As long as U-Boot (mtd0) is intact, boot the initramfs image via TFTP, USB or serial (see Installation) and run sysupgrade -n.
Failsafe mode
Basic configuration
→ Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.
Specific Configuration
Network interfaces
The default network configuration is:
| Interface Name | Description | Default configuration |
|---|---|---|
| br-lan | LAN bridge | 192.168.1.1/24 |
| eth0 | Ethernet port (Marvell 88E1510 PHY, SGMII), member of br-lan | None |
The kernel reports Using random mac address for eth0 during boot; on the tested unit br-lan nevertheless kept the same MAC address across reboots.
Switch Ports (for VLANs)
The device has a single Ethernet port and no switch.
Buttons
→ hardware.button on howto use and configure the hardware button(s). Here, we merely name the buttons, so we can use them in the above Howto.
Please fill in real values for this device, then remove the EXAMPLEs
The Western Digital MyCloud EX2 Ultra has the following buttons:
| BUTTON | Event |
|---|---|
| EXAMPLE Reset | reset |
Fan, power LED and case temperature
Fan, front power LED and case temperature sensor are controlled by a microcontroller on /dev/ttyS1 (19200 baud, 8N1). Without commands, the fan runs at full speed and the power LED blinks. Each packet has 7 bytes, starting with 0xFA and ending with 0xFB; the controller acknowledges with FA 30 00 00 00 00 FB. The following commands were tested on the EX2 Ultra (protocol originally documented by mcm-daemon and mcm-fancontrol):
| Bytes | Function |
|---|---|
FA 03 01 00 00 00 FB | device ready, power LED stops blinking |
FA 03 08 00 00 00 FB | read case temperature (raw value, conversion table in mcm-fancontrol) |
FA 02 01 00 00 00 FB | read fan speed, rpm = 300000 / raw value, 0 = stopped |
FA 02 00 XX 00 00 FB | set fan level, XX = 00, 20, 35, 40, 50, 60, 80, A0, C0, D2 (off to full) |
FA 26 00 XX 00 01 FB | power LED, XX = 11 blue, 21 blue blinking, 41 blue pulsing, 14 red, 24 red blinking, 12 orange, 22 orange blinking, 01 off |
The BusyBox in the default image has no stty; install coreutils-stty to set the baud rate.
The two drive LEDs are GPIO LEDs (blue:hdd1, red:hdd1, blue:hdd2, red:hdd2, on/off only, default triggers ata1/ata2).
Temperature sensors in Linux: SoC (f10e4078.thermal), Ethernet PHY (hwmon of f1072004.mdio-mii:00) and the disks via kmod-hwmon-drivetemp.
Hardware
Info
---- datatemplatelist dttpllist ---- template: meta:template_datatemplatelist cols : Brand, Model, Versions, Device Type, Availability, Supported Since Commit_git, Supported since Rel, Supported current Rel, Unsupported, Bootloader, CPU, Target, CPU MHz, Flash MBs, RAM MB, Switch, Ethernet 100M ports_, Ethernet Gbit ports_, Comments network ports_, Modem, VLAN, WLAN 2.4GHz, WLAN 5.0GHz, WLAN Hardwares, WLAN Comments_, Detachable Antennas_, USB ports_, SATA ports_, Comments USB SATA ports_, Serial, JTAG, LED count, Button count, Power supply, Device Techdata_pageid, Forum topic URL_url, wikidevi URL_url, OEM Device Homepage URL_url, Firmware OEM Stock URL_url, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Comments_ filter : Brand=Western Digital filter : Model=MyCloud EX2 Ultra filter : Versions=
Bootloader: U-Boot 2013.01_v1.04 (Aug 20 2015), Marvell version 2014_T3.0p6, board name GrandTeton DB6820. The SoC contains the Marvell CESA crypto engine (marvell-cesa).
Photos
Opening the case
→ Warranty
Describe what needs to be done to open the device, e.g. remove rubber feet, adhesive labels, screws, ...
- To remove the cover and open the device, do a/b/c
Main PCB:
Insert photo of PCB
Serial
→ port.serial general information about the serial port, serial port cable, etc.
How to connect to the Serial Port of this specific device:
Wires soldered to the serial pads: yellow (left) RX, white GND, orange TX. Cross the lines to the adapter (TX to RX, RX to TX) and leave 3.3V unconnected. U-Boot only stops autoboot on key 1 (bootdelay=1).
| Serial connection parameters for Western Digital MyCloud EX2 Ultra | 115200, 8N1, 3.3V |
|---|
JTAG
→ port.jtag general information about the JTAG port, JTAG cable, etc.
How to connect to the JTAG Port of this specific device:
Insert photo of PCB with markings for JTAG port
Bootloader mods
Hardware mods
Quieter fan
The stock 40 mm Sunon fan can be replaced by a Noctua NF-A4x10 FLX (12V, 3-pin). The Noctua is 1 to 2 mm too large for the plastic holder; trim the holder with a file or a utility knife.
Fan speed with the Noctua at the microcontroller levels (rpm = 300000 / raw value):
| Level byte | rpm (approx.) |
|---|---|
| D2 | 4480 |
| C0 | 4100 |
| A0 | 3500 |
| 80 | 2750 |
| 60 | 2030 |
| 50 | 1630 |
| 40 | 1220, stalls when stepping down from 50 |
| 20, 35 | stopped |
From standstill the Noctua needs a short kick at D2 before a low level is set.
Bootlogs
OEM bootlog
COPY HERE THE BOOTLOG WITH THE ORIGINAL FIRMWARE
OpenWrt bootlog
BootROM - 1.73 Booting from NAND flash General initialization - Version: 1.0.0 Detected Device ID 6820 High speed PHY - Version: 2.0 Load WD GrandTeton Serdes Config: board SerDes lanes topology details: | Lane # | Speed | Type | -------------------------------- | 0 | 06 | SATA0 | | 1 | 05 | PCIe0 | | 2 | 06 | SATA1 | | 3 | 05 | USB3 HOST1 | | 4 | 05 | USB3 HOST0 | | 5 | 00 | SGMII2 | -------------------------------- PCIe, Idx 0: detected no link High speed PHY - Ended Successfully DDR3 Training Sequence - Ver TIP-1.26.0 mvSysEnvGetTopologyUpdateInfo: TWSI Read failed DDR3 Training Sequence - Switching XBAR Window to FastPath Window DDR3 Training Sequence - Ended Successfully BootROM: Image checksum verification PASSED __ __ _ _ | \/ | __ _ _ ____ _____| | | | |\/| |/ _` | '__\ \ / / _ \ | | | | | | (_| | | \ V / __/ | | |_| |_|\__,_|_| \_/ \___|_|_| _ _ ____ _ | | | | | __ ) ___ ___ | |_ | | | |___| _ \ / _ \ / _ \| __| | |_| |___| |_) | (_) | (_) | |_ \___/ |____/ \___/ \___/ \__| ** LOADER ** U-Boot 2013.01_v1.04 (Aug 20 2015 - 11:11:32) Marvell version: 2014_T3.0p6 mvBoardIdIndexGet(boardId) = 1 Board: GrandTeton DB6820 SoC: MV88F6820 Rev A0 running 2 CPUs CPU: ARM Cortex A9 MPCore (Rev 1) LE CPU 0 CPU @ 1332 [MHz] L2 @ 666 [MHz] TClock @ 200 [MHz] DDR @ 666 [MHz] DDR 32 Bit Width, FastPath Memory Access, DLB Enabled, ECC Disabled DRAM: 1 GiB Map: Code: 0x3fece000:0x3ff95bd4 BSS: 0x3ffef254 Stack: 0x3f9cdf20 Heap: 0x3f9ce000:0x3fece000 raise: Signal # 8 caught raise: Signal # 8 caught U-Boot Environment: 0x00000000:0x00080000 (NAND) NAND: ID: dac2 ,256 MiB MMC: mv_sdh: 0 PCI-e 0: Detected No Link. USB2.0 0: Host Mode USB3.0 0: Host Mode USB3.0 1: Host Mode Board configuration detected: Creating 1 MTD partitions on "nand0": 0x00000f500000-0x00000ff00000 : "mtd=7" UBI: attaching mtd1 to ubi0 UBI: physical eraseblock size: 131072 bytes (128 KiB) UBI: logical eraseblock size: 126976 bytes UBI: smallest flash I/O unit: 2048 UBI: VID header offset: 2048 (aligned 2048) UBI: data offset: 4096 UBI: attached mtd1 to ubi0 UBI: MTD device name: "mtd=7" UBI: MTD device size: 10 MiB UBI: number of good PEBs: 80 UBI: number of bad PEBs: 0 UBI: max. allowed volumes: 128 UBI: wear-leveling threshold: 4096 UBI: number of internal volumes: 1 UBI: number of user volumes: 1 UBI: available PEBs: 32 UBI: total number of reserved PEBs: 48 UBI: number of PEBs reserved for bad PEB handling: 2 UBI: max/mean erase counter: 4/1 UBIFS: mounted UBI device 0, volume 0, name "reserve2" UBIFS: mounted read-only UBIFS: file system size: 4063232 bytes (3968 KiB, 3 MiB, 32 LEBs) UBIFS: journal size: 1015809 bytes (992 KiB, 0 MiB, 6 LEBs) UBIFS: media format: w4/r0 (latest is w4/r0) UBIFS: default compressor: LZO UBIFS: reserved for root: 200807 bytes (196 KiB) Loading file '/mac_addr' to addr 0x02000000 with size 18 (0x00000012)... Done Set lan 2 WakeOnLan ok Enable HD1 Enable HD2 Net: | port | Interface | PHY address | |--------|-----------|--------------| | egiga0 | RGMII | In-Band | | egiga1 | RGMII | In-Band | | egiga2 | SGMII | 0x00 | egiga0, egiga1, egiga2 [PRIME] Hit any key to stop autoboot: 1 0 NAND read: device 0 offset 0x500000, size 0x500000 5242880 bytes read: OK NAND read: device 0 offset 0xa00000, size 0x500000 5242880 bytes read: OK ## Booting image at 00a00000 ... ## Booting kernel from Legacy Image at 00a00000 ... Image Name: ARM OpenWrt Linux-6.12.94 Created: 2026-06-29 12:59:20 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3886823 Bytes = 3.7 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 00f00000 ... Image Name: Ramdisk Created: 2022-05-06 17:11:09 UTC Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 2562882 Bytes = 2.4 MiB Load Address: 00e00000 Entry Point: 00e00000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.12.94 (builder@buildhost) (arm-openwrt-linux-muslgnueabi-gcc (OpenWrt GCC 14.3.0 r33051-f5dae5ece4) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Mon Jun 29 12:59:20 2026 [ 0.000000] CPU: ARMv7 Processor [414fc091] revision 1 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: WD MyCloud Ex2 Ultra [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x000000002fffffff] [ 0.000000] HighMem [mem 0x0000000030000000-0x000000003fffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000003fffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fffffff] [ 0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT [ 0.000000] percpu: Embedded 14 pages/cpu s24908 r8192 d24244 u57344 [ 0.000000] Kernel command line: nullparameter= [ 0.000000] Bootloader command line (ignored): root=/dev/ram console=ttyS0,115200 [ 0.000000] Unknown kernel command line parameters "nullparameter=", will be passed to user space. [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 262144 [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 [ 0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] L2C: DT/platform modifies aux control register: 0x06070000 -> 0x16070000 [ 0.000000] L2C-310 enabling early BRESP for Cortex-A9 [ 0.000000] L2C-310 full line of zeros enabled for Cortex-A9 [ 0.000000] L2C-310 D prefetch enabled, offset 1 lines [ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled [ 0.000000] L2C-310 Coherent cache controller enabled, 16 ways, 1024 kB [ 0.000000] L2C-310 Coherent: CACHE_ID 0x410054c9, AUX_CTRL 0x56070001 [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000002] sched_clock: 64 bits at 666MHz, resolution 1ns, wraps every 4398046511103ns [ 0.000015] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x999999d70a, max_idle_ns: 440795225152 ns [ 0.000032] Switching to timer-based delay loop, resolution 1ns [ 0.000186] Ignoring duplicate/late registration of read_current_timer delay [ 0.000191] clocksource: armada_370_xp_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 76450417870 ns [ 0.000372] Calibrating delay loop (skipped), value calculated using timer frequency.. 1332.00 BogoMIPS (lpj=6660000) [ 0.000379] CPU: Testing write buffer coherency: ok [ 0.000404] CPU0: Spectre v2: using BPIALL workaround [ 0.000408] pid_max: default: 32768 minimum: 301 [ 0.005184] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear) [ 0.005192] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear) [ 0.007338] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.007931] Setting up static identity map for 0x100000 - 0x100060 [ 0.008020] mvebu-soc-id: MVEBU SoC ID=0x6820, Rev=0x4 [ 0.008107] mvebu-pmsu: Initializing Power Management Service Unit [ 0.008195] rcu: Hierarchical SRCU implementation. [ 0.008198] rcu: Max phase no-delay instances is 1000. [ 0.008341] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level [ 0.008502] smp: Bringing up secondary CPUs ... [ 0.008784] Booting CPU 1 [ 0.008931] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.008939] CPU1: Spectre v2: using BPIALL workaround [ 0.009014] smp: Brought up 1 node, 2 CPUs [ 0.009020] SMP: Total of 2 processors activated (2664.00 BogoMIPS). [ 0.009025] CPU: All CPU(s) started in SVC mode. [ 0.009226] Memory: 1023080K/1048576K available (9216K kernel code, 658K rwdata, 1364K rodata, 1024K init, 252K bss, 23424K reserved, 0K cma-reserved, 262144K highmem) [ 0.012273] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 [ 0.012350] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.012361] futex hash table entries: 512 (order: 3, 32768 bytes, linear) [ 0.014832] pinctrl core: initialized pinctrl subsystem [ 0.015874] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.016416] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.016968] thermal_sys: Registered thermal governor 'step_wise' [ 0.017006] cpuidle: using governor menu [ 0.017160] mvebu-pmsu: CPU hotplug support is currently broken on Armada 38x: disabling [ 0.017166] mvebu-pmsu: CPU idle is currently broken on Armada 38x: disabling [ 0.026568] cryptd: max_cpu_qlen set to 1000 [ 0.028608] SCSI subsystem initialized [ 0.028877] usbcore: registered new interface driver usbfs [ 0.028899] usbcore: registered new interface driver hub [ 0.028918] usbcore: registered new device driver usb [ 0.029945] clocksource: Switched to clocksource arm_global_timer [ 0.034171] NET: Registered PF_INET protocol family [ 0.034291] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 0.035414] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.035431] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.035439] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.035484] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear) [ 0.035621] TCP: Hash tables configured (established 8192 bind 8192) [ 0.035795] MPTCP token hash table entries: 1024 (order: 2, 16384 bytes, linear) [ 0.035950] UDP hash table entries: 512 (order: 2, 16384 bytes, linear) [ 0.035979] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear) [ 0.036274] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 0.036297] PCI: CLS 0 bytes, default 64 [ 0.037200] workingset: timestamp_bits=14 max_order=18 bucket_order=4 [ 0.043597] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.043602] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.046745] bounce: pool size: 64 pages [ 0.046969] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) [ 0.048303] armada-38x-pinctrl f1018000.pinctrl: registered pinctrl driver [ 0.049117] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation. [ 0.049225] debugfs: Directory 'f1018100.gpio' with parent 'regmap' already present! [ 0.049498] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation. [ 0.049615] debugfs: Directory 'f1018140.gpio' with parent 'regmap' already present! [ 0.051973] mv_xor f1060800.xor: Marvell shared XOR driver [ 0.090598] mv_xor f1060800.xor: Marvell XOR (Descriptor Mode): ( xor cpy intr ) [ 0.090802] mv_xor f1060900.xor: Marvell shared XOR driver [ 0.130596] mv_xor f1060900.xor: Marvell XOR (Descriptor Mode): ( xor cpy intr ) [ 0.130848] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 0.132480] printk: legacy console [ttyS0] disabled [ 0.152760] f1012000.serial: ttyS0 at MMIO 0xf1012000 (irq = 38, base_baud = 12500000) is a 16550A [ 0.152796] printk: legacy console [ttyS0] enabled [ 0.898557] f1012100.serial: ttyS1 at MMIO 0xf1012100 (irq = 39, base_baud = 12500000) is a 16550A [ 0.910925] loop: module loaded [ 0.914942] ahci-mvebu f10a8000.sata: supply ahci not found, using dummy regulator [ 0.922690] ahci-mvebu f10a8000.sata: supply phy not found, using dummy regulator [ 0.931472] nand: device found, Manufacturer ID: 0xc2, Chip ID: 0xda [ 0.937869] nand: Macronix MX30LF2G18AC [ 0.941746] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 [ 0.949578] Bad block table found at page 131008, version 0x01 [ 0.955805] Bad block table found at page 130944, version 0x01 [ 0.962081] 8 fixed-partitions partitions found on MTD device pxa3xx_nand-0 [ 0.969088] Creating 8 MTD partitions on "pxa3xx_nand-0": [ 0.974546] 0x000000000000-0x000000500000 : "U-Boot" [ 0.979882] 0x000000500000-0x000000a00000 : "kernel" [ 0.985153] 0x000000a00000-0x000000f00000 : "uRamdisk" [ 0.990541] 0x000000f00000-0x00000c800000 : "ubi" [ 0.995789] 0x00000c800000-0x00000d700000 : "rescue fw" [ 1.001383] 0x00000d700000-0x00000eb00000 : "config" [ 1.006716] 0x00000eb00000-0x00000f500000 : "reserve1" [ 1.012231] 0x00000f500000-0x00000ff00000 : "reserve2" [ 1.022032] hwmon hwmon0: temp1_input not attached to any thermal zone [ 1.029690] mvneta_bm f10c8000.bm: Buffer Manager for network controller enabled [ 1.039105] mvneta f1034000.ethernet eth0: Using random mac address xx:xx:xx:xx:xx:xx [ 1.047424] orion-ehci f1058000.usb: EHCI Host Controller [ 1.052884] orion-ehci f1058000.usb: new USB bus registered, assigned bus number 1 [ 1.060554] orion-ehci f1058000.usb: irq 42, io mem 0xf1058000 [ 1.080034] orion-ehci f1058000.usb: USB 2.0 started, EHCI 1.00 [ 1.086373] hub 1-0:1.0: USB hub found [ 1.090219] hub 1-0:1.0: 1 port detected [ 1.095041] usbcore: registered new interface driver usb-storage [ 1.101701] armada38x-rtc f10a3800.rtc: registered as rtc0 [ 1.107307] armada38x-rtc f10a3800.rtc: setting system clock to 2026-10-08T12:03:39 UTC (1791461019) [ 1.116738] i2c_dev: i2c /dev entries driver [ 1.121203] mv64xxx_i2c f1011000.i2c: can't get pinctrl, bus recovery not supported [ 1.129114] mv64xxx_i2c f1011100.i2c: can't get pinctrl, bus recovery not supported [ 1.138917] orion_wdt: Initial timeout 171 sec [ 1.143768] sdhci: Secure Digital Host Controller Interface driver [ 1.150001] sdhci: Copyright(c) Pierre Ossman [ 1.154529] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.160771] marvell-cesa f1090000.crypto: CESA device successfully registered [ 1.168985] NET: Registered PF_INET6 protocol family [ 1.174859] Segment Routing with IPv6 [ 1.178576] In-situ OAM (IOAM) with IPv6 [ 1.182586] NET: Registered PF_PACKET protocol family [ 1.187682] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 1.200857] 8021q: 802.1Q VLAN Support v1.8 [ 1.205148] Registering SWP/SWPB emulation handler [ 1.224873] ahci-mvebu f10a8000.sata: supply ahci not found, using dummy regulator [ 1.232657] ahci-mvebu f10a8000.sata: supply phy not found, using dummy regulator [ 1.240698] ahci-mvebu f10a8000.sata: masking port_map 0x3 -> 0x3 [ 1.246862] ahci-mvebu f10a8000.sata: AHCI vers 0001.0000, 32 command slots, 6 Gbps, platform mode [ 1.255909] ahci-mvebu f10a8000.sata: 2/2 ports implemented (port mask 0x3) [ 1.262929] ahci-mvebu f10a8000.sata: flags: 64bit ncq sntf led only pmp fbs pio slum part sxs [ 1.273268] scsi host0: ahci-mvebu [ 1.277269] scsi host1: ahci-mvebu [ 1.280851] ata1: SATA max UDMA/133 mmio [mem 0xf10a8000-0xf10a9fff] port 0x100 irq 52 lpm-pol 0 [ 1.289689] ata2: SATA max UDMA/133 mmio [mem 0xf10a8000-0xf10a9fff] port 0x180 irq 52 lpm-pol 0 [ 1.299354] usb_phy_generic usb3_0_phy: dummy supplies not allowed for exclusive requests (id=vbus) [ 1.308654] usb_phy_generic usb3_1_phy: dummy supplies not allowed for exclusive requests (id=vbus) [ 1.317954] xhci-hcd f10f0000.usb3: xHCI Host Controller [ 1.323323] xhci-hcd f10f0000.usb3: new USB bus registered, assigned bus number 2 [ 1.330956] xhci-hcd f10f0000.usb3: hcc params 0x0a000990 hci version 0x100 quirks 0x0000000000000010 [ 1.340280] xhci-hcd f10f0000.usb3: irq 43, io mem 0xf10f0000 [ 1.346151] xhci-hcd f10f0000.usb3: xHCI Host Controller [ 1.351557] xhci-hcd f10f0000.usb3: new USB bus registered, assigned bus number 3 [ 1.359095] xhci-hcd f10f0000.usb3: Host supports USB 3.0 SuperSpeed [ 1.365840] hub 2-0:1.0: USB hub found [ 1.369669] hub 2-0:1.0: 1 port detected [ 1.373889] usb usb3: We don't know the algorithms for LPM for this host, disabling LPM. [ 1.382372] hub 3-0:1.0: USB hub found [ 1.386194] hub 3-0:1.0: 1 port detected [ 1.390479] xhci-hcd f10f8000.usb3: xHCI Host Controller [ 1.395832] xhci-hcd f10f8000.usb3: new USB bus registered, assigned bus number 4 [ 1.403465] xhci-hcd f10f8000.usb3: hcc params 0x0a000990 hci version 0x100 quirks 0x0000000000000010 [ 1.412773] xhci-hcd f10f8000.usb3: irq 44, io mem 0xf10f8000 [ 1.418650] xhci-hcd f10f8000.usb3: xHCI Host Controller [ 1.424023] xhci-hcd f10f8000.usb3: new USB bus registered, assigned bus number 5 [ 1.431564] xhci-hcd f10f8000.usb3: Host supports USB 3.0 SuperSpeed [ 1.438269] hub 4-0:1.0: USB hub found [ 1.442078] hub 4-0:1.0: 1 port detected [ 1.446269] usb usb5: We don't know the algorithms for LPM for this host, disabling LPM. [ 1.454689] hub 5-0:1.0: USB hub found [ 1.458510] hub 5-0:1.0: 1 port detected [ 1.462937] UBI: auto-attach mtd3 [ 1.466277] ubi0: attaching mtd3 [ 1.611243] ata2: SATA link down (SStatus 0 SControl 300) [ 1.616703] ata1: SATA link down (SStatus 0 SControl 300) [ 1.942292] ubi0: scanning is finished [ 1.990434] ubi0: attached mtd3 (name "ubi", size 185 MiB) [ 1.995958] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 2.002886] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 2.009713] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 2.016719] ubi0: good PEBs: 1480, bad PEBs: 0, corrupted PEBs: 0 [ 2.022851] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128 [ 2.030119] ubi0: max/mean erase counter: 3/1, WL threshold: 4096, image sequence number: 2100620014 [ 2.039302] ubi0: available PEBs: 0, total reserved PEBs: 1480, PEBs reserved for bad PEB handling: 40 [ 2.048670] ubi0: background thread "ubi_bgt0d" started, PID 667 [ 2.049188] block ubiblock0_0: created from ubi0:0(rootfs) [ 2.060252] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem [ 2.067355] clk: Disabling unused clocks [ 2.073567] VFS: Mounted root (squashfs filesystem) readonly on device 254:0. [ 2.081448] Freeing unused kernel image (initmem) memory: 1024K [ 2.087585] Run /sbin/init as init process [ 2.326530] init: Console is alive [ 2.330089] init: - watchdog - [ 2.449725] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 2.471809] gpio_button_hotplug: loading out-of-tree module taints kernel. [ 2.480265] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 2.494600] init: - preinit - [ 6.339951] random: crng init done [ 7.700066] mvneta f1034000.ethernet eth0: PHY [f1072004.mdio-mii:00] driver [Marvell 88E1510] (irq=POLL) [ 7.709858] mvneta f1034000.ethernet eth0: configuring for phy/sgmii link mode Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 12.010603] mvneta f1034000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 12.117394] UBIFS (ubi0:1): default file-system created [ 12.123003] UBIFS (ubi0:1): Mounting in unauthenticated mode [ 12.128763] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 789 [ 12.161286] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs_data" [ 12.169165] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes [ 12.179163] UBIFS (ubi0:1): FS size: 177639424 bytes (169 MiB, 1399 LEBs), max 1411 LEBs, journal size 8888320 bytes (8 MiB, 70 LEBs) [ 12.191239] UBIFS (ubi0:1): reserved for root: 4952683 bytes (4836 KiB) [ 12.197891] UBIFS (ubi0:1): media format: w5/r0 (latest is w5/r0), UUID AEACE50E-86E3-4786-8B4F-48C140B94A07, small LPT model [ 12.210310] mount_root: overlay filesystem has not been fully initialized yet [ 12.217674] mount_root: switching to ubifs overlay [ 12.238736] urandom-seed: Seed file not found (/etc/urandom.seed) - generating board file - [ 12.402448] mvneta f1034000.ethernet eth0: Link is Down [ 12.415227] procd: - early - [ 12.418189] procd: - watchdog - [ 12.945731] procd: - watchdog - [ 12.949251] procd: - ubus - [ 13.103412] procd: - init - Please press Enter to activate this console.
Notes
- mdadm: On 25.12.5,
apk add mdadmrebooted the device twice and left 0-byte files behind. The kernel modulesmd-modandraid1load fine on their own, andapk add --no-scripts mdadmworks. Suspected cause (not reproduced): the service started by the post-install script runsmdadm --assemble --scanover all block devices, including the raw NANDmtdblockdevices. Workaround: install with--no-scriptsand addlist devices “/dev/sd*”to theconfig mdadmsection of/etc/config/mdadmbefore starting the service. - Disk encryption:
cryptsetup benchmarkuses the CESA engine (aes-cbc about 94 MiB/s), but dm-crypt on 25.12.5 selected the NEON software implementation (essiv(cbc-aes-neonbs,sha256-neon)); the CESA interrupt counter did not increase. dm-crypt on a RAM disk: aes-xts-plain64 (256 bit key) 54 MiB/s write, 57 MiB/s read; aes-cbc-essiv:sha256 (128 bit) 42 MiB/s write, 59 MiB/s read. - Write-up with scripts for fan/LED control and an encrypted mdadm/LUKS/btrfs setup: bk99.de




