Synology DS416 unbricking
June 29, 2022 01:11PM
I've got a DS416 that won't boot, but a different issue than @VectraT from the DS414 unbricking topic. I get a constant flashing blue light, and the reset button won't work.

I connected to the serial console, and initially after a few retries I got:

Starting kernel ...

Uncompressing Linux...

LZMA data is corrupt

-- System halted

I tried following the directions earlier from the DS414 thread, and was able to load zImage and rd.bin via tftp, but when I run bootm 0x2000000 0x8000000 I get the following.

Annapurna Labs stage 2: stage2_eth3_ram_loader v1.49.3
Executing next!
Annapurna Labs stage 2: stage2.5_loader v1.49.3
SPD I2C Address:00000057
Executing next!


Stage 3 2013.10-alpine_spl-1.49.4-00666-gccfe35f (Sep 08 2014 - 09:15:21)

DRAM:  1 GiB
EEPROM Revision ID = 34
Device ID = a212
Device Info: AL21200-1400
Loading DT to 00100000 (17059 bytes)...
Board config ID: Synology DS416
SRAM agent up: agent_wakeup v1.49.3
Loading U-Boot to 00100000 (373616 bytes)...
Executing U-Boot...


U-Boot 2013.10-alpine_db-1.49.4-SYNO-768e80b-2016-01-04 (Jan 04 2016 - 18:44:17)

Annapurna Labs
Board: Alpine Development Board
I2C:   ready
DDR size is 1024 MB according to shared params
DRAM:  1 GiB

   _
  /_\  _ __  _ __   __ _ _ __  _   _ _ __ _ __   __ _
 //_\\| '_ \| '_ \ / _` | '_ \| | | | '__| '_ \ / _` |
/  _  \ | | | | | | (_| | |_) | |_| | |  | | | | (_| |
\_/ \_/_| |_|_| |_|\__,_| .__/ \__,_|_|  |_| |_|\__,_|
   __       _           |_|
  / /  __ _| |__  ___
 / /  / _` | '_ \/ __|
/ /__| (_| | |_) \__ \
\____/\__,_|_.__/|___/
               ___             _
 /\ /\        / __\ ___   ___ | |_
/ / \ \_____ /__\/// _ \ / _ \| __|
\ \_/ /_____/ \/  \ (_) | (_) | |_
 \___/      \_____/\___/ \___/ \__|

CPU DevID = 0, rev_id = 1
eeprom_per_device_init: no valid information found!
power_init_board: EEPROM per device information is not valid - using defaults!
Early init addr = 00000400
Early init DT offset = 00080000
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
U-Boot script not found in TOC!
U-Boot redundant environment not found in TOC!
DT info:
--------------------
Board config ID: Synology DS416
Muxed interfaces:
        if_uart_1(0)
GPIO configuration:
        GPIO 0 is input
        GPIO 1 is input
        GPIO 2 is input
        GPIO 3 is input
        GPIO 35 is input
        GPIO 36 is input
        GPIO 5 is output, value = 1
        GPIO 10 is output, value = 0
        GPIO 11 is output, value = 0
        GPIO 19 is output, value = 0
        GPIO 22 is output, value = 0
        GPIO 23 is output, value = 0
        GPIO 24 is output, value = 0
        GPIO 25 is output, value = 0
        GPIO 26 is output, value = 0
        GPIO 27 is output, value = 0
        GPIO 29 is output, value = 0
        GPIO 31 is output, value = 0
        GPIO 32 is output, value = 0
        GPIO 33 is output, value = 0
        GPIO 38 is output, value = 0
        GPIO 39 is output, value = 0
        GPIO 40 is output, value = 0
        GPIO 41 is output, value = 0
        GPIO 43 is output, value = 0
dt_based_init_gpio: GPIO  0: 0
dt_based_init_gpio: GPIO  1: 1
dt_based_init_gpio: GPIO  2: 1
dt_based_init_gpio: GPIO  3: 1
dt_based_init_gpio: GPIO  4: 1
dt_based_init_gpio: GPIO  5: 1
dt_based_init_gpio: GPIO  6: 0
dt_based_init_gpio: GPIO  7: 1
dt_based_init_gpio: GPIO  8: 0
dt_based_init_gpio: GPIO  9: 0
dt_based_init_gpio: GPIO 10: 0
dt_based_init_gpio: GPIO 11: 0
dt_based_init_gpio: GPIO 12: 1
dt_based_init_gpio: GPIO 13: 1
dt_based_init_gpio: GPIO 14: 1
dt_based_init_gpio: GPIO 15: 1
dt_based_init_gpio: GPIO 16: 1
dt_based_init_gpio: GPIO 17: 0
dt_based_init_gpio: GPIO 18: 1
dt_based_init_gpio: GPIO 19: 0
dt_based_init_gpio: GPIO 20: 0
dt_based_init_gpio: GPIO 21: 0
dt_based_init_gpio: GPIO 22: 0
dt_based_init_gpio: GPIO 23: 0
dt_based_init_gpio: GPIO 24: 0
dt_based_init_gpio: GPIO 25: 0
dt_based_init_gpio: GPIO 26: 0
dt_based_init_gpio: GPIO 27: 0
dt_based_init_gpio: GPIO 28: 1
dt_based_init_gpio: GPIO 29: 0
dt_based_init_gpio: GPIO 30: 1
dt_based_init_gpio: GPIO 31: 0
dt_based_init_gpio: GPIO 32: 0
dt_based_init_gpio: GPIO 33: 0
dt_based_init_gpio: GPIO 34: 1
dt_based_init_gpio: GPIO 35: 1
dt_based_init_gpio: GPIO 36: 1
dt_based_init_gpio: GPIO 37: 1
dt_based_init_gpio: GPIO 38: 0
dt_based_init_gpio: GPIO 39: 0
dt_based_init_gpio: GPIO 40: 0
dt_based_init_gpio: GPIO 41: 0
dt_based_init_gpio: GPIO 42: 1
dt_based_init_gpio: GPIO 43: 0
dt_based_init_gpio: GPIO 44: 1
dt_based_init_gpio: GPIO 45: 1
dt_based_init_gpio: GPIO 46: 1
dt_based_init_gpio: GPIO 47: 1
Ethernet port 0:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 1
        i2c-id: N/A
Ethernet port 1:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 2
        i2c-id: N/A
Ethernet port 2:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 3
        i2c-id: N/A
Ethernet port 3:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 0
        i2c-id: N/A
PCIe endpoint ports:
PCIe port 0:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 1:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 2:
        PCIe port status: disabled
        Gen: 2
        Width: 4
NAND:  0 MiB
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
*** Warning - bad CRC, using default environment

  00:00.0     - 1c36:0002 - Network controller
  00:01.0     - 1c36:0001 - Network controller
  00:04.0     - 1c36:0011 - Cryptographic device
  00:05.0     - 1c36:0021 - Base system peripheral
  00:09.0     - 1c36:0031 - Mass storage controller
PCIE_0: Link up. Speed 5GT/s Width x1
  01:00.0     - 1b6f:7023 - Serial bus controller
PCIE_1: Link up. Speed 5GT/s Width x1
  02:00.0     - 1b6f:7023 - Serial bus controller
In:    serial
Out:   serial
Err:   serial

Synology Model: DS416
Fan Status: Good

Net:
Turn off EEE of rl8211D
Disable eth0 green mode
Turn off EEE of rl8211D
Disable eth1 green mode
al_eth0 [PRIME]
Warning: al_eth0 using MAC address from net device
, al_eth1
Warning: al_eth1 using MAC address from net device

Press Ctrl+C to abort autoboot in 3 second
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
SF: 3014656 bytes @ 0x90000 Read: OK
SF: 4587520 bytes @ 0x370000 Read: OK
## Booting kernel from Legacy Image at 08000000 ...
   Image Name:   Linux-3.10.108
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2175152 Bytes = 2.1 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 07500000 ...
   Image Name:   synology_alpine4k_ds416 42218
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3649828 Bytes = 3.5 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 03b84008
   Booting using the fdt blob at 0x3b84008
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=0 size=100000
   Loading Ramdisk to 03807000, end 03b82124 ... OK
   Loading Device Tree to 037ff000, end 038062a2 ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/ccu.io_coherency to 1

Starting kernel ...

And it just hangs there.

If I interrupt boot, I can print my environment, which is much longer than VectraT's.

ALPINE_DB> printenv
arch=arm
ata_hdd_act_led=syno_hdd_act_led=10,11,22,23
ata_hdd_detect=
ata_hdd_enable=syno_hdd_enable=24,25,26,27
autoload=n
baudrate=115200
board=alpine_db
board_name=alpine_db
boot_instance_active=0
boot_instance_non_active=1
bootargs=
bootcmd=run syno_bootargs; run bootspi
bootdelay=2
bootspi=sf probe;sf read $loadaddr_kernel $spi_pt_addr_kernel $spi_pt_size_kernel;sf read $loadaddr_rootfs $spi_pt_addr_fs $spi_pt_size_fs;bootm $loadaddr_kernel $loadaddr_rootfs $fdtaddr;
clean_env=sf probe; sf erase $spi_pt_addr_env $spi_pt_size_env;
cpu=armv7
cvos_tags=0x01000000
cvos_tags_seed_a=0x01000004
cvos_tags_seed_b=0x01000008
cvos_tags_validate=mw.l ${cvos_tags} 0xcf05cf05
dt_filename=dt.img
dt_is_from_toc=1
dt_location=89000
env_offset=7e0000
env_offset_redund=7f0000
eth1addr=8a:0c:7a:3e:f9:8f
ethact=al_eth0
ethaddr=ca:a5:45:95:d4:6e
ethprime=al_eth0
fdtaddr=3b84008
file_dt=alpine/alpine_db.dtb
file_eeprom=alpine/eeprom
file_flash=alpine/flash.bin
file_kernel=alpine/uImage
file_rootfs=alpine/rd.bin
file_uboot=alpine/u-boot.img.withdt
fix_sata_link_speed=mw.l 0xfc8f821c 0x4000000;mw.l 0xfc9f821c 0x4000000;
fwupd=tftpboot ${tftpdir}uboot_script_fw_update.bin;source ${loadaddr}
iocc_force=1
iocc_force_val=1
loadaddr=0x08000000
loadaddr_dt=0x07000000
loadaddr_kernel=0x08000000
loadaddr_rootfs=0x07500000
opt_ata1=serdes wr 1 p0 pma 201 7 0 0xFC;serdes wr 1 p0 pma 202 7 0 0xff;serdes wr 1 p0 pma 203 7 0 0xff;serdes wr 1 p0 pma 204 7 0 0xff;serdes wr 1 p0 pma 205 7 0 0x7f;serdes wr 1 p0 pma 205 7 0 0xff;
opt_ata2=serdes wr 1 p1 pma 201 7 0 0xFC;serdes wr 1 p1 pma 202 7 0 0xff;serdes wr 1 p1 pma 203 7 0 0xff;serdes wr 1 p1 pma 204 7 0 0xff;serdes wr 1 p1 pma 205 7 0 0x7f;serdes wr 1 p1 pma 205 7 0 0xff;
opt_ata3=serdes wr 1 p2 pma 201 7 0 0xFC;serdes wr 1 p2 pma 202 7 0 0xff;serdes wr 1 p2 pma 203 7 0 0xff;serdes wr 1 p2 pma 204 7 0 0xff;serdes wr 1 p2 pma 205 7 0 0x7f;serdes wr 1 p2 pma 205 7 0 0xff;
opt_ata4=serdes wr 1 p3 pma 201 7 0 0xFC;serdes wr 1 p3 pma 202 7 0 0xff;serdes wr 1 p3 pma 203 7 0 0xff;serdes wr 1 p3 pma 204 7 0 0xff;serdes wr 1 p3 pma 205 7 0 0x7f;serdes wr 1 p3 pma 205 7 0 0xff;
opt_ata5=serdes wr 2 p0 pma 201 7 0 0xFC;serdes wr 2 p0 pma 202 7 0 0xff;serdes wr 2 p0 pma 203 7 0 0xff;serdes wr 2 p0 pma 204 7 0 0xff;serdes wr 2 p0 pma 205 7 0 0x7f;serdes wr 2 p0 pma 205 7 0 0xff;
opt_ata6=serdes wr 2 p1 pma 201 7 0 0xFC;serdes wr 2 p1 pma 202 7 0 0xff;serdes wr 2 p1 pma 203 7 0 0xff;serdes wr 2 p1 pma 204 7 0 0xff;serdes wr 2 p1 pma 205 7 0 0x7f;serdes wr 2 p1 pma 205 7 0 0xff;
opt_ata7=serdes wr 2 p2 pma 201 7 0 0xFC;serdes wr 2 p2 pma 202 7 0 0xff;serdes wr 2 p2 pma 203 7 0 0xff;serdes wr 2 p2 pma 204 7 0 0xff;serdes wr 2 p2 pma 205 7 0 0x7f;serdes wr 2 p2 pma 205 7 0 0xff;
opt_ata8=serdes wr 2 p3 pma 201 7 0 0xFC;serdes wr 2 p3 pma 202 7 0 0xff;serdes wr 2 p3 pma 203 7 0 0xff;serdes wr 2 p3 pma 204 7 0 0xff;serdes wr 2 p3 pma 205 7 0 0x7f;serdes wr 2 p3 pma 205 7 0 0xff;
opt_rx=serdes rx_params_set 1 0 00 07 00 00 08 00 08 07 00;serdes rx_params_set 1 1 00 07 00 00 08 00 08 07 00;serdes rx_params_set 1 2 00 07 00 00 08 00 08 07 02;serdes rx_params_set 1 3 00 07 00 00 08 00 08 07 02;serdes rx_params_set 2 0 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 1 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 2 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 3 00 07 00 00 08 00 08 07 04;
opt_tx=serdes tx_params_set 1 0 1 20 3 0 0;serdes tx_params_set 1 1 1 20 3 0 0;serdes tx_params_set 1 2 1 22 4 0 0;serdes tx_params_set 1 3 1 22 4 0 0;serdes tx_params_set 2 0 3 19 3 0 0;serdes tx_params_set 2 1 4 20 4 0 0;serdes tx_params_set 2 2 4 23 5 0 0;serdes tx_params_set 2 3 4 22 6 0 0;
optimize_sata=serdes rx_params_set 1 0  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 1  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 2  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 3  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 0  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 1  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 2  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 3  00 07 00 00 08 00 08 07 10;mw.l 0xFC8000BC  870e182b;mw.l 0xFC8000BC  870e182b;mw.l 0xFC8000BC  070e182b;mw.l 0xFC9000BC  870e182b;mw.l 0xFC9000BC  870e182b;mw.l 0xFC9000BC  070e182b;serdes wr 1 p4 pma 13 4 4 0;serdes wr 1 p4 pma 15 2 0 2;serdes wr 2 p4 pma 13 4 4 0;serdes wr 2 p4 pma 15 2 0 2;serdes tx_params_set 1 0 1 20 4 0 0;serdes tx_params_set 1 1 1 20 4 0 0;serdes tx_params_set 1 2 1 20 4 0 0;serdes tx_params_set 1 3 1 20 4 0 0;serdes tx_params_set 2 0 1 20 4 0 0;serdes tx_params_set 2 1 1 20 4 0 0;serdes tx_params_set 2 2 1 20 4 0 0;serdes tx_params_set 2 3 1 20 4 0 0;
pld_i2c_addr=57
sata_lot=serdes wr 1 p4 pma 13 4 4 0;serdes wr 1 p4 pma 15 2 0 0;serdes wr 2 p4 pma 13 4 4 0;serdes wr 2 p4 pma 15 2 0 0;
sata_lot3=serdes wr 1 p4 pma 13 4 4 1;serdes wr 1 p4 pma 15 4 3 3;serdes wr 2 p4 pma 13 4 4 1;serdes wr 2 p4 pma 15 4 3 3;
soc=alpine
spi_pt_addr_al_boot=0x00020000
spi_pt_addr_dt=0x00080000
spi_pt_addr_env=0x007E0000
spi_pt_addr_fs=0x00370000
spi_pt_addr_kernel=0x00090000
spi_pt_size_al_boot=0x00060000
spi_pt_size_dt=0x00010000
spi_pt_size_env=0x00010000
spi_pt_size_fs=0x00460000
spi_pt_size_kernel=0x002E0000
syno_boot_dev=/dev/md0
syno_bootargs=setenv bootargs console=ttyS0,115200 ip=off pci=pcie_bus_perf initrd=$loadaddr_rootfs root=$syno_boot_dev rw $syno_extra_args syno_hw_version=$syno_hw_version ihd_num=$syno_hdd_powerup_seq netif_num=$syno_net_if_num vmalloc=$syno_vmalloc $ata_hdd_act_led $ata_hdd_detect $ata_hdd_enable
syno_extra_args=HddHotplug=4
syno_hdd_powerup_seq=4
syno_hw_version=DS416
syno_net_if_num=2
upd_dt=setenv tftpfile $file_dt;mw.b $loadaddr 0xFF $spi_pt_size_dt; tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_dt $spi_pt_size_dt; sf write $loadaddr $spi_pt_addr_dt $spi_pt_size_dt; echo "Device Tree Update Done";fi;
upd_eeprom=confirm_msg "Perform EEPROM update? [y/n] ";if test $? -ne 0; then exit; fi;tftpboot $loadaddr $file_eeprom;if test $? -ne 0; then exit; fi;i2c probe ${pld_i2c_addr};if test $? -ne 0; then exit; fi;i2c write $loadaddr ${pld_i2c_addr} 0.2 $filesize;if test $? -ne 0; then exit;fi;echo eepromupd done;
upd_flash=setenv tftpfile $file_flash; tftpboot $loadaddr $tftpfile; if test $? -eq 0; then echo "This may take a while, please be patient..."; sf probe; sf erase 0 +$filesize; sf write $loadaddr 0 $filesize; echo "Flash Update Done"; fi;
upd_kernel=setenv tftpfile $file_kernel;mw.b $loadaddr 0xFF $spi_pt_size_kernel;tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_kernel $spi_pt_size_kernel; sf write $loadaddr $spi_pt_addr_kernel $spi_pt_size_kernel; echo "Kernel Update Done"; fi;
upd_rootfs=setenv tftpfile $file_rootfs;mw.b $loadaddr 0xFF $spi_pt_size_rootfs; tftpboot $loadaddr $tftpfile;if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_fs +$filesize; sf write $loadaddr $spi_pt_addr_fs $filesize;echo "Rootfs Update Done";fi;
upd_uboot=setenv tftpfile $file_uboot;tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase 0 +$filesize; sf write $loadaddr 0 $filesize; echo "Uboot Update Done"; fi;
vendor=annapurna-labs

Environment size: 7349/16380 bytes
ALPINE_DB>

I think my u-boot is ok, but I suspect I need to load zImage and rd.bin to different addresses, or maybe clear the environment, but I'm not sure how to proceed.

This was running DSM7, and the files on my tftp server are from DSM7, filename DSM_DS416_42218.pat. Any suggestions?

Thanks!
Re: Synology DS416 unbricking
June 29, 2022 06:00PM
I've gotten a little further. I think I've figured out the correct commands to transfer zImage and rd.bin, then boot. Now getting stuck at "Uncompressing Linux...". It's been stuck here about 45 minutes so far.


ALPINE_DB> setenv serverip 10.0.0.17
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.249
ALPINE_DB> tftpboot 0x08000000 zImage
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.249
Filename 'zImage'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         ###################
         378.9 KiB/s
done
Bytes transferred = 2175216 (2130f0 hex)
ALPINE_DB> tftpboot 0x07500000 rd.bin
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.249
Filename 'rd.bin'.
Load address: 0x7500000
Loading: T #################################################################
         #################################################################
         #################################################################
         ######################################################
         592.8 KiB/s
done
Bytes transferred = 3649892 (37b164 hex)
ALPINE_DB> run syno_bootargs
ALPINE_DB> run bootspi
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
SF: 3014656 bytes @ 0x90000 Read: OK
SF: 4587520 bytes @ 0x370000 Read: OK
## Booting kernel from Legacy Image at 08000000 ...
   Image Name:   Linux-3.10.108
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2175152 Bytes = 2.1 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 07500000 ...
   Image Name:   synology_alpine4k_ds416 42218
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3649828 Bytes = 3.5 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 03b84008
   Booting using the fdt blob at 0x3b84008
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=0 size=100000
   Loading Ramdisk to 03807000, end 03b82124 ... OK
   Loading Device Tree to 037ff000, end 038062a2 ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/ccu.io_coherency to 1

Starting kernel ...

Uncompressing Linux...
Re: Synology DS416 unbricking
June 29, 2022 06:08PM
mesnyder1,

When Linux is stuck at this point,

> Starting kernel ...
>
> Uncompressing Linux...

If the kernel being booted has earlyprintk configured in, then there is a good chance you can see the problem by adding earlyprintk=serial to your bootargs.

Quote

syno_bootargs=setenv bootargs console=ttyS0,115200 ip=off pci=pcie_bus_perf initrd=$loadaddr_rootfs root=$syno_boot_dev rw $syno_extra_args syno_hw_version=$syno_hw_version ihd_num=$syno_hdd_powerup_seq netif_num=$syno_net_if_num vmalloc=$syno_vmalloc $ata_hdd_act_led $ata_hdd_detect $ata_hdd_enable earlyprintk=serial

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
June 30, 2022 05:35PM
Thanks bodhi. I tried adding that, and I am getting additional output. I'm actually seeing inconsistent behavior, which leads me to suspect a hardware issue, maybe bad RAM. So it could be that this is unrecoverable. These are some of the results I've gotten. Note the "Lifux" misspelling, which seems to occur on the 2nd or 3rd reset after power-on.

Uncompressing Lifux>..prefetch abort
pc : [<94d04044>]          lr : [<0057e4c0>]
sp : 04000000  ip : 7ff80000     fp : 00000010
r10: 007911b8  r9 : ffffffff     r8 : 007911cc
r7 : 0000dc73  r6 : 00000006     r5 : 00008000  r4 : 0079186c
r3 : 94d04041  r2 : 00000400     r1 : 0ac98b78  r0 : 0057f0c0
Flags: Nzcv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

Uncompressing Linux...undefined instruction
pc : [<0057e044>]          lr : [<00790224>]
sp : 00791178  ip : 00000010     fp : 0079020c
r10: 0057c9e0  r9 : ffffffff     r8 : 007911cc
r7 : 04000000  r6 : 00001f36     r5 : 00008000  r4 : 00000004
r3 : 0057f0e5  r2 : 00000000     r1 : 0057f0e6  r0 : 00791228
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

Uncompressing Linux...data abort

    MAYBE you should read doc/README.arm-unaligned-accesses

pc : [<0057deb4>]          lr : [<00000000>]
sp : 00791178  ip : 04000000     fp : 00000010
r10: 00000100  r9 : 007911b3     r8 : 007911cc
r7 : 00000000  r6 : 007891b4     r5 : 00008000  r4 : 00000000
r3 : 00000000  r2 : fffffffe     r1 : 00000000  r0 : 00000000
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

This is on a fresh power-on, without loading images over TFTP. Since checksums are OK, I'm assuming the images in flash are not corrupt.

## Booting kernel from Legacy Image at 08000000 ...
   Image Name:   Linux-3.10.108
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2175152 Bytes = 2.1 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 07500000 ...
   Image Name:   synology_alpine4k_ds416 42218
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3649828 Bytes = 3.5 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 03b84008
   Booting using the fdt blob at 0x3b84008
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=0 size=100000
   Loading Ramdisk to 03807000, end 03b82124 ... OK
   Loading Device Tree to 037ff000, end 038062a2 ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/ccu.io_coherency to 1

Starting kernel ...

Uncompressing Linux...undefined instruction
pc : [<0057e044>]          lr : [<00790224>]
sp : 00791178  ip : 00000010     fp : 0079020c
r10: 0057c9e0  r9 : ffffffff     r8 : 007911cc
r7 : 04000000  r6 : 00001f36     r5 : 00008000  r4 : 00000004
r3 : 0057f0e5  r2 : 00000000     r1 : 0057f0e6  r0 : 00791228
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...
Re: Synology DS416 unbricking
June 30, 2022 06:40PM
mesnyder1,

> Starting kernel ...
>
> Uncompressing Linux...undefined instruction
> pc : [<0057e044>] lr : [<00790224>]
> sp : 00791178 ip : 00000010 fp : 0079020c
> r10: 0057c9e0 r9 : ffffffff r8 : 007911cc
> r7 : 04000000 r6 : 00001f36 r5 : 00008000 r4
> : 00000004
> r3 : 0057f0e5 r2 : 00000000 r1 : 0057f0e6 r0
> : 00791228
> Flags: nzCv IRQs off FIQs off Mode SVC_32
> Resetting CPU ...
> [/code]

If the same images were booted with tftp OK. Then you should use the same load addresses to boot SPI images.

It looks at though some part of the kernel image has been corrupted just before or during decompression.

======

However, The log above was not right

Quote

I've gotten a little further. I think I've figured out the correct commands to transfer zImage and rd.bin, then boot. Now getting stuck at "Uncompressing Linux...". It's been stuck here about 45 minutes so far.

<snip>

ALPINE_DB> tftpboot 0x08000000 zImage
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.249
Filename 'zImage'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         ###################
         378.9 KiB/s
done
Bytes transferred = 2175216 (2130f0 hex)
ALPINE_DB> tftpboot 0x07500000 rd.bin
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.249
Filename 'rd.bin'.
Load address: 0x7500000
Loading: T #################################################################
         #################################################################
         #################################################################
         ######################################################
         592.8 KiB/s
done
Bytes transferred = 3649892 (37b164 hex)
ALPINE_DB> run syno_bootargs

Right here, you have loaded the images over tftp, then bootspi should not be run.

ALPINE_DB> run bootspi
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
SF: 3014656 bytes @ 0x90000 Read: OK
SF: 4587520 bytes @ 0x370000 Read: OK

So I am a bit confused. Can you post the log of the successful tftp boot? or "successful" meant the kernel images were loaded, but booting got stuck at the same place?

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
June 30, 2022 10:25PM
Sure, here you go. I'm not sure I'm using the right boot command though. I used 'bootm 8000000 7500000 3B84008'.

Thanks for your help!

Annapurna Labs stage 2: stage2_eth3_ram_loader v1.49.3
Executing next!
Annapurna Labs stage 2: stage2.5_loader v1.49.3
SPD I2C Address:00000057
Executing next!


Stage 3 2013.10-alpine_spl-1.49.4-00666-gccfe35f (Sep 08 2014 - 09:15:21)

DRAM:  1 GiB
EEPROM Revision ID = 34
Device ID = a212
Device Info: AL21200-1400
Loading DT to 00100000 (17059 bytes)...
Board config ID: Synology DS416
SRAM agent up: agent_wakeup v1.49.3
Loading U-Boot to 00100000 (373616 bytes)...
Executing U-Boot...


U-Boot 2013.10-alpine_db-1.49.4-SYNO-768e80b-2016-01-04 (Jan 04 2016 - 18:44:17)

Annapurna Labs
Board: Alpine Development Board
I2C:   ready
DDR size is 1024 MB according to shared params
DRAM:  1 GiB

   _
  /_\  _ __  _ __   __ _ _ __  _   _ _ __ _ __   __ _
 //_\\| '_ \| '_ \ / _` | '_ \| | | | '__| '_ \ / _` |
/  _  \ | | | | | | (_| | |_) | |_| | |  | | | | (_| |
\_/ \_/_| |_|_| |_|\__,_| .__/ \__,_|_|  |_| |_|\__,_|
   __       _           |_|
  / /  __ _| |__  ___
 / /  / _` | '_ \/ __|
/ /__| (_| | |_) \__ \
\____/\__,_|_.__/|___/
               ___             _
 /\ /\        / __\ ___   ___ | |_
/ / \ \_____ /__\/// _ \ / _ \| __|
\ \_/ /_____/ \/  \ (_) | (_) | |_
 \___/      \_____/\___/ \___/ \__|

CPU DevID = 0, rev_id = 1
eeprom_per_device_init: no valid information found!
power_init_board: EEPROM per device information is not valid - using defaults!
Early init addr = 00000400
Early init DT offset = 00080000
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
U-Boot script not found in TOC!
U-Boot redundant environment not found in TOC!
DT info:
--------------------
Board config ID: Synology DS416
Muxed interfaces:
        if_uart_1(0)
GPIO configuration:
        GPIO 0 is input
        GPIO 1 is input
        GPIO 2 is input
        GPIO 3 is input
        GPIO 35 is input
        GPIO 36 is input
        GPIO 5 is output, value = 1
        GPIO 10 is output, value = 0
        GPIO 11 is output, value = 0
        GPIO 19 is output, value = 0
        GPIO 22 is output, value = 0
        GPIO 23 is output, value = 0
        GPIO 24 is output, value = 0
        GPIO 25 is output, value = 0
        GPIO 26 is output, value = 0
        GPIO 27 is output, value = 0
        GPIO 29 is output, value = 0
        GPIO 31 is output, value = 0
        GPIO 32 is output, value = 0
        GPIO 33 is output, value = 0
        GPIO 38 is output, value = 0
        GPIO 39 is output, value = 0
        GPIO 40 is output, value = 0
        GPIO 41 is output, value = 0
        GPIO 43 is output, value = 0
dt_based_init_gpio: GPIO  0: 0
dt_based_init_gpio: GPIO  1: 1
dt_based_init_gpio: GPIO  2: 1
dt_based_init_gpio: GPIO  3: 1
dt_based_init_gpio: GPIO  4: 1
dt_based_init_gpio: GPIO  5: 1
dt_based_init_gpio: GPIO  6: 0
dt_based_init_gpio: GPIO  7: 1
dt_based_init_gpio: GPIO  8: 0
dt_based_init_gpio: GPIO  9: 0
dt_based_init_gpio: GPIO 10: 0
dt_based_init_gpio: GPIO 11: 0
dt_based_init_gpio: GPIO 12: 1
dt_based_init_gpio: GPIO 13: 1
dt_based_init_gpio: GPIO 14: 1
dt_based_init_gpio: GPIO 15: 1
dt_based_init_gpio: GPIO 16: 1
dt_based_init_gpio: GPIO 17: 0
dt_based_init_gpio: GPIO 18: 1
dt_based_init_gpio: GPIO 19: 0
dt_based_init_gpio: GPIO 20: 0
dt_based_init_gpio: GPIO 21: 0
dt_based_init_gpio: GPIO 22: 0
dt_based_init_gpio: GPIO 23: 0
dt_based_init_gpio: GPIO 24: 0
dt_based_init_gpio: GPIO 25: 0
dt_based_init_gpio: GPIO 26: 0
dt_based_init_gpio: GPIO 27: 0
dt_based_init_gpio: GPIO 28: 1
dt_based_init_gpio: GPIO 29: 0
dt_based_init_gpio: GPIO 30: 1
dt_based_init_gpio: GPIO 31: 0
dt_based_init_gpio: GPIO 32: 0
dt_based_init_gpio: GPIO 33: 0
dt_based_init_gpio: GPIO 34: 1
dt_based_init_gpio: GPIO 35: 1
dt_based_init_gpio: GPIO 36: 1
dt_based_init_gpio: GPIO 37: 1
dt_based_init_gpio: GPIO 38: 0
dt_based_init_gpio: GPIO 39: 0
dt_based_init_gpio: GPIO 40: 0
dt_based_init_gpio: GPIO 41: 0
dt_based_init_gpio: GPIO 42: 1
dt_based_init_gpio: GPIO 43: 0
dt_based_init_gpio: GPIO 44: 1
dt_based_init_gpio: GPIO 45: 1
dt_based_init_gpio: GPIO 46: 1
dt_based_init_gpio: GPIO 47: 1
Ethernet port 0:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 1
        i2c-id: N/A
Ethernet port 1:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 2
        i2c-id: N/A
Ethernet port 2:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 3
        i2c-id: N/A
Ethernet port 3:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 0
        i2c-id: N/A
PCIe endpoint ports:
PCIe port 0:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 1:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 2:
        PCIe port status: disabled
        Gen: 2
        Width: 4
NAND:  0 MiB
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
  00:00.0     - 1c36:0002 - Network controller
  00:01.0     - 1c36:0001 - Network controller
  00:04.0     - 1c36:0011 - Cryptographic device
  00:05.0     - 1c36:0021 - Base system peripheral
  00:09.0     - 1c36:0031 - Mass storage controller
PCIE_0: Link up. Speed 5GT/s Width x1
  01:00.0     - 1b6f:7023 - Serial bus controller
PCIE_1: Link up. Speed 5GT/s Width x1
  02:00.0     - 1b6f:7023 - Serial bus controller
In:    serial
Out:   serial
Err:   serial

Synology Model: DS416
Fan Status: Good

Net:
Turn off EEE of rl8211D
Disable eth0 green mode
Turn off EEE of rl8211D
Disable eth1 green mode
al_eth0 [PRIME], al_eth1
Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB>  tftpboot 0x08000000 zImage
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage'.
Load address: 0x8000000
Loading: *T#################################################################
         #################################################################
         ###################
         378.9 KiB/s
done
Bytes transferred = 2175216 (2130f0 hex)
ALPINE_DB> tftpboot 0x07500000 rd.bin
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'rd.bin'.
Load address: 0x7500000
Loading: *T#################################################################
         #################################################################
         #################################################################
         ######################################################
         592.8 KiB/s
done
Bytes transferred = 3649892 (37b164 hex)
ALPINE_DB> printenv
arch=arm
ata_hdd_act_led=syno_hdd_act_led=10,11,22,23
ata_hdd_detect=
ata_hdd_enable=syno_hdd_enable=24,25,26,27
autoload=n
baudrate=115200
board=alpine_db
board_name=alpine_db
boot_instance_active=0
boot_instance_non_active=1
bootargs=
bootcmd=run syno_bootargs; run bootspi
bootdelay=2
bootspi=sf probe;sf read $loadaddr_kernel $spi_pt_addr_kernel $spi_pt_size_kernel;sf read $loadaddr_rootfs $spi_pt_addr_fs $spi_pt_size_fs;bootm $loadaddr_kernel $loadaddr_rootfs $fdtaddr;
clean_env=sf probe; sf erase $spi_pt_addr_env $spi_pt_size_env;
cpu=armv7
cvos_tags=0x01000000
cvos_tags_seed_a=0x01000004
cvos_tags_seed_b=0x01000008
cvos_tags_validate=mw.l ${cvos_tags} 0xcf05cf05
dnsip=10.0.0.17
dt_filename=dt.img
dt_is_from_toc=1
dt_location=89000
env_offset=7e0000
env_offset_redund=7f0000
eth1addr=36:53:86:27:c1:ff
ethact=al_eth0
ethaddr=86:6b:b9:a2:28:ff
ethprime=al_eth0
fdtaddr=3b84008
file_dt=alpine/alpine_db.dtb
file_eeprom=alpine/eeprom
file_flash=alpine/flash.bin
file_kernel=alpine/uImage
file_rootfs=alpine/rd.bin
file_uboot=alpine/u-boot.img.withdt
fileaddr=7500000
filesize=37b164
fix_sata_link_speed=mw.l 0xfc8f821c 0x4000000;mw.l 0xfc9f821c 0x4000000;
fwupd=tftpboot ${tftpdir}uboot_script_fw_update.bin;source ${loadaddr}
gatewayip=10.0.0.1
iocc_force=1
iocc_force_val=1
ipaddr=10.0.0.236
loadaddr=0x08000000
loadaddr_dt=0x07000000
loadaddr_kernel=0x08000000
loadaddr_rootfs=0x07500000
netmask=255.255.255.0
opt_ata1=serdes wr 1 p0 pma 201 7 0 0xFC;serdes wr 1 p0 pma 202 7 0 0xff;serdes wr 1 p0 pma 203 7 0 0xff;serdes wr 1 p0 pma 204 7 0 0xff;serdes wr 1 p0 pma 205 7 0 0x7f;serdes wr 1 p0 pma 205 7 0 0xff;
opt_ata2=serdes wr 1 p1 pma 201 7 0 0xFC;serdes wr 1 p1 pma 202 7 0 0xff;serdes wr 1 p1 pma 203 7 0 0xff;serdes wr 1 p1 pma 204 7 0 0xff;serdes wr 1 p1 pma 205 7 0 0x7f;serdes wr 1 p1 pma 205 7 0 0xff;
opt_ata3=serdes wr 1 p2 pma 201 7 0 0xFC;serdes wr 1 p2 pma 202 7 0 0xff;serdes wr 1 p2 pma 203 7 0 0xff;serdes wr 1 p2 pma 204 7 0 0xff;serdes wr 1 p2 pma 205 7 0 0x7f;serdes wr 1 p2 pma 205 7 0 0xff;
opt_ata4=serdes wr 1 p3 pma 201 7 0 0xFC;serdes wr 1 p3 pma 202 7 0 0xff;serdes wr 1 p3 pma 203 7 0 0xff;serdes wr 1 p3 pma 204 7 0 0xff;serdes wr 1 p3 pma 205 7 0 0x7f;serdes wr 1 p3 pma 205 7 0 0xff;
opt_ata5=serdes wr 2 p0 pma 201 7 0 0xFC;serdes wr 2 p0 pma 202 7 0 0xff;serdes wr 2 p0 pma 203 7 0 0xff;serdes wr 2 p0 pma 204 7 0 0xff;serdes wr 2 p0 pma 205 7 0 0x7f;serdes wr 2 p0 pma 205 7 0 0xff;
opt_ata6=serdes wr 2 p1 pma 201 7 0 0xFC;serdes wr 2 p1 pma 202 7 0 0xff;serdes wr 2 p1 pma 203 7 0 0xff;serdes wr 2 p1 pma 204 7 0 0xff;serdes wr 2 p1 pma 205 7 0 0x7f;serdes wr 2 p1 pma 205 7 0 0xff;
opt_ata7=serdes wr 2 p2 pma 201 7 0 0xFC;serdes wr 2 p2 pma 202 7 0 0xff;serdes wr 2 p2 pma 203 7 0 0xff;serdes wr 2 p2 pma 204 7 0 0xff;serdes wr 2 p2 pma 205 7 0 0x7f;serdes wr 2 p2 pma 205 7 0 0xff;
opt_ata8=serdes wr 2 p3 pma 201 7 0 0xFC;serdes wr 2 p3 pma 202 7 0 0xff;serdes wr 2 p3 pma 203 7 0 0xff;serdes wr 2 p3 pma 204 7 0 0xff;serdes wr 2 p3 pma 205 7 0 0x7f;serdes wr 2 p3 pma 205 7 0 0xff;
opt_rx=serdes rx_params_set 1 0 00 07 00 00 08 00 08 07 00;serdes rx_params_set 1 1 00 07 00 00 08 00 08 07 00;serdes rx_params_set 1 2 00 07 00 00 08 00 08 07 02;serdes rx_params_set 1 3 00 07 00 00 08 00 08 07 02;serdes rx_params_set 2 0 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 1 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 2 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 3 00 07 00 00 08 00 08 07 04;
opt_tx=serdes tx_params_set 1 0 1 20 3 0 0;serdes tx_params_set 1 1 1 20 3 0 0;serdes tx_params_set 1 2 1 22 4 0 0;serdes tx_params_set 1 3 1 22 4 0 0;serdes tx_params_set 2 0 3 19 3 0 0;serdes tx_params_set 2 1 4 20 4 0 0;serdes tx_params_set 2 2 4 23 5 0 0;serdes tx_params_set 2 3 4 22 6 0 0;
optimize_sata=serdes rx_params_set 1 0  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 1  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 2  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 3  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 0  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 1  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 2  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 3  00 07 00 00 08 00 08 07 10;mw.l 0xFC8000BC  870e182b;mw.l 0xFC8000BC  870e182b;mw.l 0xFC8000BC  070e182b;mw.l 0xFC9000BC  870e182b;mw.l 0xFC9000BC  870e182b;mw.l 0xFC9000BC  070e182b;serdes wr 1 p4 pma 13 4 4 0;serdes wr 1 p4 pma 15 2 0 2;serdes wr 2 p4 pma 13 4 4 0;serdes wr 2 p4 pma 15 2 0 2;serdes tx_params_set 1 0 1 20 4 0 0;serdes tx_params_set 1 1 1 20 4 0 0;serdes tx_params_set 1 2 1 20 4 0 0;serdes tx_params_set 1 3 1 20 4 0 0;serdes tx_params_set 2 0 1 20 4 0 0;serdes tx_params_set 2 1 1 20 4 0 0;serdes tx_params_set 2 2 1 20 4 0 0;serdes tx_params_set 2 3 1 20 4 0 0;
pld_i2c_addr=57
sata_lot=serdes wr 1 p4 pma 13 4 4 0;serdes wr 1 p4 pma 15 2 0 0;serdes wr 2 p4 pma 13 4 4 0;serdes wr 2 p4 pma 15 2 0 0;
sata_lot3=serdes wr 1 p4 pma 13 4 4 1;serdes wr 1 p4 pma 15 4 3 3;serdes wr 2 p4 pma 13 4 4 1;serdes wr 2 p4 pma 15 4 3 3;
serverip=10.0.0.17
soc=alpine
spi_pt_addr_al_boot=0x00020000
spi_pt_addr_dt=0x00080000
spi_pt_addr_env=0x007E0000
spi_pt_addr_fs=0x00370000
spi_pt_addr_kernel=0x00090000
spi_pt_size_al_boot=0x00060000
spi_pt_size_dt=0x00010000
spi_pt_size_env=0x00010000
spi_pt_size_fs=0x00460000
spi_pt_size_kernel=0x002E0000
syno_boot_dev=/dev/md0
syno_bootargs=setenv bootargs console=ttyS0,115200 ip=off pci=pcie_bus_perf initrd=$loadaddr_rootfs root=$syno_boot_dev rw $syno_extra_args syno_hw_version=$syno_hw_version ihd_num=$syno_hdd_powerup_seq netif_num=$syno_net_if_num vmalloc=$syno_vmalloc $ata_hdd_act_led $ata_hdd_detect $ata_hdd_enable\
syno_extra_args=HddHotplug=4 earlyprintk=serial
syno_extra_args=HddHotplug=4
syno_hdd_powerup_seq=4
syno_hw_version=DS416
syno_net_if_num=2
upd_dt=setenv tftpfile $file_dt;mw.b $loadaddr 0xFF $spi_pt_size_dt; tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_dt $spi_pt_size_dt; sf write $loadaddr $spi_pt_addr_dt $spi_pt_size_dt; echo "Device Tree Update Done";fi;
upd_eeprom=confirm_msg "Perform EEPROM update? [y/n] ";if test $? -ne 0; then exit; fi;tftpboot $loadaddr $file_eeprom;if test $? -ne 0; then exit; fi;i2c probe ${pld_i2c_addr};if test $? -ne 0; then exit; fi;i2c write $loadaddr ${pld_i2c_addr} 0.2 $filesize;if test $? -ne 0; then exit;fi;echo eepromupd done;
upd_flash=setenv tftpfile $file_flash; tftpboot $loadaddr $tftpfile; if test $? -eq 0; then echo "This may take a while, please be patient..."; sf probe; sf erase 0 +$filesize; sf write $loadaddr 0 $filesize; echo "Flash Update Done"; fi;
upd_kernel=setenv tftpfile $file_kernel;mw.b $loadaddr 0xFF $spi_pt_size_kernel;tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_kernel $spi_pt_size_kernel; sf write $loadaddr $spi_pt_addr_kernel $spi_pt_size_kernel; echo "Kernel Update Done"; fi;
upd_rootfs=setenv tftpfile $file_rootfs;mw.b $loadaddr 0xFF $spi_pt_size_rootfs; tftpboot $loadaddr $tftpfile;if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_fs +$filesize; sf write $loadaddr $spi_pt_addr_fs $filesize;echo "Rootfs Update Done";fi;
upd_uboot=setenv tftpfile $file_uboot;tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase 0 +$filesize; sf write $loadaddr 0 $filesize; echo "Uboot Update Done"; fi;
vendor=annapurna-labs

Environment size: 7538/16380 bytes
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> bootm 8000000 7500000 3B84008
## Booting kernel from Legacy Image at 08000000 ...
   Image Name:   Linux-3.10.108
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2175152 Bytes = 2.1 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 07500000 ...
   Image Name:   synology_alpine4k_ds416 42218
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3649828 Bytes = 3.5 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 03b84008
   Booting using the fdt blob at 0x3b84008
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=0 size=100000
   Loading Ramdisk to 03807000, end 03b82124 ... OK
   Loading Device Tree to 037ff000, end 038062a2 ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/ccu.io_coherency to 1

Starting kernel ...

Uncompressing Lifux>..undefined instruction
pc : [<0057e548>]          lr : [<0057e7f4>]
sp : 00791178  ip : 00000400     fp : 00000002
r10: 007913c0  r9 : 00791c90     r8 : 007911cc
r7 : 00000001  r6 : 0000001a     r5 : 00008000  r4 : 0079140c
r3 : 2d3e0000  r2 : 2d3e0000     r1 : aa19e543  r0 : 00000400
Flags: NzcV  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

resetting ...
Re: Synology DS416 unbricking
July 01, 2022 12:02AM
> Sure, here you go. I'm not sure I'm using the
> right boot command though. I used 'bootm 8000000
> 7500000 3B84008'.

> ALPINE_DB>  tftpboot 0x08000000 zImage
> ALPINE_DB> tftpboot 0x07500000 rd.bin


> ALPINE_DB> setenv bootargs console=ttyS0,115200
> earlyprintk=serial

> ALPINE_DB> bootm 8000000 7500000 3B84008
> ## Booting kernel from Legacy Image at 08000000

A couple things.

1. You have not explicitly loaded the DTB into memory. That 3B84008 load address is OK as a u-boot address. But it has nothing there if u-boot did not populate it.

However, bootspi uses these

0x08000000 = 128MB 
0x07500000 = 117MB
0x3B84008  ~=    59 MB

So the 0x3B84008 address apparently has been populated by this usboot.

Now that brings to the DTB question. I'm wondering, did it load alpine_db.dtb from the flash?

fdtaddr=3b84008
file_dt=alpine/alpine_db.dtb

So while zImage and rd.bin needed to be checked sum. The DTB file must also be OK. It is corrupted then we'll see weird behavior during decompression.

======

With that said, this is a very old kernel: Image Name: Linux-3.10.108 so I don't know about the decompression used in it. I can only make educated guess what's going on.

======

What you should try is using the addess previously used by others (32M 128M) and also load the DTB to a higher memory such as 256M.

So the 3rd tftpboot command would load alpine_db.dtb to 0x10000000, and then,

bootm 0x2000000 0x8000000  0x10000000

This box has 1GB RAM so there plenty of RAM to put the images further apart.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 01:11PM
bodhi,

It must be loading alpine_db.dtb from flash. That file is not in any of the DSM files from Synology, so if it is corrupt in flash, I don't know where to get another copy. There is a file uboot_DS416.bin, maybe it's embedded there, if I can find the right offset.

I've looked through several DSM version downloads, and haven't been able to find alpine_db.dtb.

I did try using zImage and rd.bin from version 5 of DSM, using the memory addresses you specified, and I got a little further, but it still hangs at the end. No difference with the new load address with newer firmware files.

Annapurna Labs stage 2: stage2_eth3_ram_loader v1.49.3
Executing next!
Annapurna Labs stage 2: stage2.5_loader v1.49.3
SPD I2C Address:00000057
Executing next!


Stage 3 2013.10-alpine_spl-1.49.4-00666-gccfe35f (Sep 08 2014 - 09:15:21)

DRAM:  1 GiB
EEPROM Revision ID = 34
Device ID = a212
Device Info: AL21200-1400
Loading DT to 00100000 (17059 bytes)...
Board config ID: Synology DS416
SRAM agent up: agent_wakeup v1.49.3
Loading U-Boot to 00100000 (373616 bytes)...
Executing U-Boot...


U-Boot 2013.10-alpine_db-1.49.4-SYNO-768e80b-2016-01-04 (Jan 04 2016 - 18:44:17)

Annapurna Labs
Board: Alpine Development Board
I2C:   ready
DDR size is 1024 MB according to shared params
DRAM:  1 GiB

   _
  /_\  _ __  _ __   __ _ _ __  _   _ _ __ _ __   __ _
 //_\\| '_ \| '_ \ / _` | '_ \| | | | '__| '_ \ / _` |
/  _  \ | | | | | | (_| | |_) | |_| | |  | | | | (_| |
\_/ \_/_| |_|_| |_|\__,_| .__/ \__,_|_|  |_| |_|\__,_|
   __       _           |_|
  / /  __ _| |__  ___
 / /  / _` | '_ \/ __|
/ /__| (_| | |_) \__ \
\____/\__,_|_.__/|___/
               ___             _
 /\ /\        / __\ ___   ___ | |_
/ / \ \_____ /__\/// _ \ / _ \| __|
\ \_/ /_____/ \/  \ (_) | (_) | |_
 \___/      \_____/\___/ \___/ \__|

CPU DevID = 0, rev_id = 1
eeprom_per_device_init: no valid information found!
power_init_board: EEPROM per device information is not valid - using defaults!
Early init addr = 00000400
Early init DT offset = 00080000
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
U-Boot script not found in TOC!
U-Boot redundant environment not found in TOC!
DT info:
--------------------
Board config ID: Synology DS416
Muxed interfaces:
        if_uart_1(0)
GPIO configuration:
        GPIO 0 is input
        GPIO 1 is input
        GPIO 2 is input
        GPIO 3 is input
        GPIO 35 is input
        GPIO 36 is input
        GPIO 5 is output, value = 1
        GPIO 10 is output, value = 0
        GPIO 11 is output, value = 0
        GPIO 19 is output, value = 0
        GPIO 22 is output, value = 0
        GPIO 23 is output, value = 0
        GPIO 24 is output, value = 0
        GPIO 25 is output, value = 0
        GPIO 26 is output, value = 0
        GPIO 27 is output, value = 0
        GPIO 29 is output, value = 0
        GPIO 31 is output, value = 0
        GPIO 32 is output, value = 0
        GPIO 33 is output, value = 0
        GPIO 38 is output, value = 0
        GPIO 39 is output, value = 0
        GPIO 40 is output, value = 0
        GPIO 41 is output, value = 0
        GPIO 43 is output, value = 0
dt_based_init_gpio: GPIO  0: 1
dt_based_init_gpio: GPIO  1: 0
dt_based_init_gpio: GPIO  2: 1
dt_based_init_gpio: GPIO  3: 1
dt_based_init_gpio: GPIO  4: 1
dt_based_init_gpio: GPIO  5: 1
dt_based_init_gpio: GPIO  6: 0
dt_based_init_gpio: GPIO  7: 1
dt_based_init_gpio: GPIO  8: 0
dt_based_init_gpio: GPIO  9: 0
dt_based_init_gpio: GPIO 10: 0
dt_based_init_gpio: GPIO 11: 0
dt_based_init_gpio: GPIO 12: 1
dt_based_init_gpio: GPIO 13: 1
dt_based_init_gpio: GPIO 14: 1
dt_based_init_gpio: GPIO 15: 1
dt_based_init_gpio: GPIO 16: 1
dt_based_init_gpio: GPIO 17: 0
dt_based_init_gpio: GPIO 18: 1
dt_based_init_gpio: GPIO 19: 0
dt_based_init_gpio: GPIO 20: 0
dt_based_init_gpio: GPIO 21: 0
dt_based_init_gpio: GPIO 22: 0
dt_based_init_gpio: GPIO 23: 0
dt_based_init_gpio: GPIO 24: 0
dt_based_init_gpio: GPIO 25: 0
dt_based_init_gpio: GPIO 26: 0
dt_based_init_gpio: GPIO 27: 0
dt_based_init_gpio: GPIO 28: 1
dt_based_init_gpio: GPIO 29: 0
dt_based_init_gpio: GPIO 30: 1
dt_based_init_gpio: GPIO 31: 0
dt_based_init_gpio: GPIO 32: 0
dt_based_init_gpio: GPIO 33: 0
dt_based_init_gpio: GPIO 34: 1
dt_based_init_gpio: GPIO 35: 1
dt_based_init_gpio: GPIO 36: 1
dt_based_init_gpio: GPIO 37: 1
dt_based_init_gpio: GPIO 38: 0
dt_based_init_gpio: GPIO 39: 0
dt_based_init_gpio: GPIO 40: 0
dt_based_init_gpio: GPIO 41: 0
dt_based_init_gpio: GPIO 42: 1
dt_based_init_gpio: GPIO 43: 0
dt_based_init_gpio: GPIO 44: 1
dt_based_init_gpio: GPIO 45: 1
dt_based_init_gpio: GPIO 46: 1
dt_based_init_gpio: GPIO 47: 1
Ethernet port 0:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 1
        i2c-id: N/A
Ethernet port 1:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 2
        i2c-id: N/A
Ethernet port 2:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 3
        i2c-id: N/A
Ethernet port 3:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 0
        i2c-id: N/A
PCIe endpoint ports:
PCIe port 0:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 1:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 2:
        PCIe port status: disabled
        Gen: 2
        Width: 4
NAND:  0 MiB
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
  00:00.0     - 1c36:0002 - Network controller
  00:01.0     - 1c36:0001 - Network controller
  00:04.0     - 1c36:0011 - Cryptographic device
  00:05.0     - 1c36:0021 - Base system peripheral
  00:09.0     - 1c36:0031 - Mass storage controller
pci_init_board_external: PCIE_0 no link found
PCIE_1: Link up. Speed 5GT/s Width x1
  01:00.0     - 1b6f:7023 - Serial bus controller
In:    serial
Out:   serial
Err:   serial

Synology Model: DS416
Fan Status: Good

Net:
Turn off EEE of rl8211D
Disable eth0 green mode
Turn off EEE of rl8211D
Disable eth1 green mode
al_eth0 [PRIME], al_eth1
Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB> tftpboot 0x2000000
*** Warning: no boot file name; using '0A0000EC.img'
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename '0A0000EC.img'.
Load address: 0x2000000
Loading: T
TFTP error: 'File not found' (1)
Not retrying...
ALPINE_DB> tftpboot 0x2000000 zImage
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage'.
Load address: 0x2000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
[eth rx] warn: dma state didn't change to Disable
[eth rx] warn: failed to change state, error -110
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage'.
Load address: 0x2000000
Loading: T #################################################################
         #################################################################
         ############################
         399.4 KiB/s
done
Bytes transferred = 2308208 (233870 hex)
ALPINE_DB> tftpboot 0x8000000 rd.bin
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'rd.bin'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         #################################################################
         #################################################################
         #####
         624 KiB/s
done
Bytes transferred = 3881418 (3b39ca hex)
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> bootm 0x2000000 0x8000000 3B84008
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-3.2.40
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2308144 Bytes = 2.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 08000000 ...
   Image Name:   synology_alpine4k_ds416 5967
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3881354 Bytes = 3.7 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 03b84008
   Booting using the fdt blob at 0x3b84008
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=0 size=100000
   Loading Ramdisk to 037cf000, end 03b8298a ... OK
   Loading Device Tree to 037c7000, end 037ce2a2 ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_feature_disable: setting /soc/pcie-external0.status to disabled
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/ccu.io_coherency to 1

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Re: Synology DS416 unbricking
July 01, 2022 03:52PM
I've just noticed Annapurna Labs played some trick here

## Loading init Ramdisk from Legacy Image at 08000000 ...
   Image Name:   synology_alpine4k_ds416 5967
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3881354 Bytes = 3.7 MiB
   Load Address: 08000000
   Entry Point:  08000000

Meaning this ramdisk stays in that 08000000 (128M) memory location during decompression. But it might not have anything to do with the crash.

-bodhi
===========================
Forum Wiki
bodhi's corner



Edited 1 time(s). Last edit at 07/01/2022 04:14PM by bodhi.
Re: Synology DS416 unbricking
July 01, 2022 03:55PM
Please list the u-boot commands at the prompt.

ALPINE_DB> help

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 04:30PM
Here you go.

ALPINE_DB> help
?       - alias for 'help'
WOLTest - Wake On Lan u-boot testing

base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
bootmenu- ANSI terminal bootmenu
bootp   - boot image via network using BOOTP/TFTP protocol
bootz   - boot Linux zImage image from memory
cmp     - memory compare
confirm_msg- get user input and updates "?" varialbe to 0 if 'y' was entered
coninfo - print console devices and information
cp      - memory copy
cpu_set_speed- Set CPU speed
crc32   - checksum calculation
ddr_ecc_stats- DDR ECC statistics
ddr_training_results- DDR training results
dev_info- Show the device configuration values
dhcp    - boot image via network using DHCP/TFTP protocol
dram_margins- The command provides current DRAM RDQS/WDQS margins by running a shmoo based on the DDR controller BIST feature
echo    - echo args to console
editenv - edit environment variable
eeprom_per_device- EEPROM per device operations
env     - environment handling commands
erase   - erase FLASH memory
eth_1g_params_set- configure 1G link parameters.these parameters will also be applied in Linux

eth_freeze_serdes_settings- freeze serdes parameters to be used in the upper layer (disable by default)
* enabling it will cause the upper layer to avoid replacing these parameters
* enabled mode should be used in case the serdes parameter were set in the u-boot

eth_link_training_enable- enable / disable link training

eth_lm_debug_enable- enable / disable link management debug enable

eth_mac_mode_set- override the mac mode from the device tree

eth_retimer_config- override retimer configuration

exit    - exit script
ext4load- load binary file from a Ext4 filesystem
ext4ls  - list files in a directory (default /)
false   - do nothing, unsuccessfully
fdt     - flattened device tree utility commands
flash_contents_obj_info_print- Print a specific flash object information
flash_contents_obj_read- Read a specific flash object
flash_contents_obj_read_mem- Read a specific flash object from memory
flash_contents_obj_update- Update a specific flash object
flash_contents_obj_validate- Validate a specific flash object
flash_contents_set_dev- Set flash contents current device
flash_contents_stage2_trash- Trash a stage 2 instance
flash_contents_stage2_untrash- Untrash a stage 2 instance
flash_contents_toc_print- Print the flash contents TOC
flinfo  - print FLASH memory information
go      - start application at address 'addr'
gpio    - input/set/clear/toggle gpio pins
help    - print command description/usage
i2c     - I2C sub-system
iminfo  - print header information for application image
imxtract- extract a part of a multi-image
incenv  - increment environment variable
iodma_init- Initialize the RAID and memory services accelerator
iodma_memcpy- Memory copy using the RAID and memory services accelerator
iodma_memset- Memory set using the RAID and memory services accelerator
iodma_terminate- Terminates the RAID and memory services accelerator
is_nand_boot- Returns 1 if boot device is NAND
itest   - return true/false on integer compare
lcd_print- Clears LCD display
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
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
md5sum  - compute MD5 message digest
mdio    - MDIO utility commands
mem_pattern_set- set values alternately according to the even and odd values
mii     - MII utility commands
mm      - memory modify (auto-incrementing address)
mtest   - simple RAM read/write test
muio_mux- Multi usage I/O pins (MUIO) multiplexing control - debug
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nfs     - boot image via network using NFS protocol
nm      - memory modify (constant address)
pci     - list and access PCI Configuration Space
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
pxe     - commands to get and boot from pxe files
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
scripth - Show help menu for available scripts
scsi    - SCSI sub-system
scsiboot- boot from SCSI device
serdes  - Serdes debug
setenv  - set environment variables
setenvmem- set environment variable from memory
sf      - SPI flash sub-system
showvar - print local hushshell variables
sleep   - delay execution for some time
source  - run script from memory
syno_pwoff- bring the system down

sysboot - command to get and boot from syslinux files
test    - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
tftpput - TFTP put command, for uploading files to a server
thermal_get- Thermal sensor get readout
thermal_init- Initialize the thermal sensor
true    - do nothing, successfully
version - print monitor, compiler and linker version
wfi     - CPU wait for interrupt CPU idle)
ALPINE_DB>
Re: Synology DS416 unbricking
July 01, 2022 04:46PM
And here's version and environment as well.

ALPINE_DB> version

U-Boot 2013.10-alpine_db-1.49.4-SYNO-768e80b-2016-01-04 (Jan 04 2016 - 18:44:17)
arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-2012.09-20120921 - Linaro GCC 2012.09) 4.7.2 20120910 (prerelease)
GNU ld (crosstool-NG linaro-1.13.1-2012.09-20120921 - Linaro GCC 2012.09) 2.22
ALPINE_DB> printenv
arch=arm
ata_hdd_act_led=syno_hdd_act_led=10,11,22,23
ata_hdd_detect=
ata_hdd_enable=syno_hdd_enable=24,25,26,27
autoload=n
baudrate=115200
board=alpine_db
board_name=alpine_db
boot_instance_active=0
boot_instance_non_active=1
bootargs=
bootcmd=run syno_bootargs; run bootspi
bootdelay=2
bootspi=sf probe;sf read $loadaddr_kernel $spi_pt_addr_kernel $spi_pt_size_kernel;sf read $loadaddr_rootfs $spi_pt_addr_fs $spi_pt_size_fs;bootm $loadaddr_kernel $loadaddr_rootfs $fdtaddr;
clean_env=sf probe; sf erase $spi_pt_addr_env $spi_pt_size_env;
cpu=armv7
cvos_tags=0x01000000
cvos_tags_seed_a=0x01000004
cvos_tags_seed_b=0x01000008
cvos_tags_validate=mw.l ${cvos_tags} 0xcf05cf05
dnsip=10.0.0.17
dt_filename=dt.img
dt_is_from_toc=1
dt_location=89000
env_offset=7e0000
env_offset_redund=7f0000
eth1addr=36:53:86:27:c1:ff
ethact=al_eth0
ethaddr=86:6b:b9:a2:28:ff
ethprime=al_eth0
fdtaddr=3b84008
file_dt=alpine/alpine_db.dtb
file_eeprom=alpine/eeprom
file_flash=alpine/flash.bin
file_kernel=alpine/uImage
file_rootfs=alpine/rd.bin
file_uboot=alpine/u-boot.img.withdt
fix_sata_link_speed=mw.l 0xfc8f821c 0x4000000;mw.l 0xfc9f821c 0x4000000;
fwupd=tftpboot ${tftpdir}uboot_script_fw_update.bin;source ${loadaddr}
gatewayip=10.0.0.1
iocc_force=1
iocc_force_val=1
ipaddr=10.0.0.236
loadaddr=0x08000000
loadaddr_dt=0x07000000
loadaddr_kernel=0x08000000
loadaddr_rootfs=0x07500000
netmask=255.255.255.0
opt_ata1=serdes wr 1 p0 pma 201 7 0 0xFC;serdes wr 1 p0 pma 202 7 0 0xff;serdes wr 1 p0 pma 203 7 0 0xff;serdes wr 1 p0 pma 204 7 0 0xff;serdes wr 1 p0 pma 205 7 0 0x7f;serdes wr 1 p0 pma 205 7 0 0xff;
opt_ata2=serdes wr 1 p1 pma 201 7 0 0xFC;serdes wr 1 p1 pma 202 7 0 0xff;serdes wr 1 p1 pma 203 7 0 0xff;serdes wr 1 p1 pma 204 7 0 0xff;serdes wr 1 p1 pma 205 7 0 0x7f;serdes wr 1 p1 pma 205 7 0 0xff;
opt_ata3=serdes wr 1 p2 pma 201 7 0 0xFC;serdes wr 1 p2 pma 202 7 0 0xff;serdes wr 1 p2 pma 203 7 0 0xff;serdes wr 1 p2 pma 204 7 0 0xff;serdes wr 1 p2 pma 205 7 0 0x7f;serdes wr 1 p2 pma 205 7 0 0xff;
opt_ata4=serdes wr 1 p3 pma 201 7 0 0xFC;serdes wr 1 p3 pma 202 7 0 0xff;serdes wr 1 p3 pma 203 7 0 0xff;serdes wr 1 p3 pma 204 7 0 0xff;serdes wr 1 p3 pma 205 7 0 0x7f;serdes wr 1 p3 pma 205 7 0 0xff;
opt_ata5=serdes wr 2 p0 pma 201 7 0 0xFC;serdes wr 2 p0 pma 202 7 0 0xff;serdes wr 2 p0 pma 203 7 0 0xff;serdes wr 2 p0 pma 204 7 0 0xff;serdes wr 2 p0 pma 205 7 0 0x7f;serdes wr 2 p0 pma 205 7 0 0xff;
opt_ata6=serdes wr 2 p1 pma 201 7 0 0xFC;serdes wr 2 p1 pma 202 7 0 0xff;serdes wr 2 p1 pma 203 7 0 0xff;serdes wr 2 p1 pma 204 7 0 0xff;serdes wr 2 p1 pma 205 7 0 0x7f;serdes wr 2 p1 pma 205 7 0 0xff;
opt_ata7=serdes wr 2 p2 pma 201 7 0 0xFC;serdes wr 2 p2 pma 202 7 0 0xff;serdes wr 2 p2 pma 203 7 0 0xff;serdes wr 2 p2 pma 204 7 0 0xff;serdes wr 2 p2 pma 205 7 0 0x7f;serdes wr 2 p2 pma 205 7 0 0xff;
opt_ata8=serdes wr 2 p3 pma 201 7 0 0xFC;serdes wr 2 p3 pma 202 7 0 0xff;serdes wr 2 p3 pma 203 7 0 0xff;serdes wr 2 p3 pma 204 7 0 0xff;serdes wr 2 p3 pma 205 7 0 0x7f;serdes wr 2 p3 pma 205 7 0 0xff;
opt_rx=serdes rx_params_set 1 0 00 07 00 00 08 00 08 07 00;serdes rx_params_set 1 1 00 07 00 00 08 00 08 07 00;serdes rx_params_set 1 2 00 07 00 00 08 00 08 07 02;serdes rx_params_set 1 3 00 07 00 00 08 00 08 07 02;serdes rx_params_set 2 0 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 1 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 2 00 07 00 00 08 00 08 07 04;serdes rx_params_set 2 3 00 07 00 00 08 00 08 07 04;
opt_tx=serdes tx_params_set 1 0 1 20 3 0 0;serdes tx_params_set 1 1 1 20 3 0 0;serdes tx_params_set 1 2 1 22 4 0 0;serdes tx_params_set 1 3 1 22 4 0 0;serdes tx_params_set 2 0 3 19 3 0 0;serdes tx_params_set 2 1 4 20 4 0 0;serdes tx_params_set 2 2 4 23 5 0 0;serdes tx_params_set 2 3 4 22 6 0 0;
optimize_sata=serdes rx_params_set 1 0  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 1  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 2  00 07 00 00 08 00 08 07 10;serdes rx_params_set 1 3  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 0  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 1  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 2  00 07 00 00 08 00 08 07 10;serdes rx_params_set 2 3  00 07 00 00 08 00 08 07 10;mw.l 0xFC8000BC  870e182b;mw.l 0xFC8000BC  870e182b;mw.l 0xFC8000BC  070e182b;mw.l 0xFC9000BC  870e182b;mw.l 0xFC9000BC  870e182b;mw.l 0xFC9000BC  070e182b;serdes wr 1 p4 pma 13 4 4 0;serdes wr 1 p4 pma 15 2 0 2;serdes wr 2 p4 pma 13 4 4 0;serdes wr 2 p4 pma 15 2 0 2;serdes tx_params_set 1 0 1 20 4 0 0;serdes tx_params_set 1 1 1 20 4 0 0;serdes tx_params_set 1 2 1 20 4 0 0;serdes tx_params_set 1 3 1 20 4 0 0;serdes tx_params_set 2 0 1 20 4 0 0;serdes tx_params_set 2 1 1 20 4 0 0;serdes tx_params_set 2 2 1 20 4 0 0;serdes tx_params_set 2 3 1 20 4 0 0;
pld_i2c_addr=57
sata_lot=serdes wr 1 p4 pma 13 4 4 0;serdes wr 1 p4 pma 15 2 0 0;serdes wr 2 p4 pma 13 4 4 0;serdes wr 2 p4 pma 15 2 0 0;
sata_lot3=serdes wr 1 p4 pma 13 4 4 1;serdes wr 1 p4 pma 15 4 3 3;serdes wr 2 p4 pma 13 4 4 1;serdes wr 2 p4 pma 15 4 3 3;
serverip=10.0.0.17
soc=alpine
spi_pt_addr_al_boot=0x00020000
spi_pt_addr_dt=0x00080000
spi_pt_addr_env=0x007E0000
spi_pt_addr_fs=0x00370000
spi_pt_addr_kernel=0x00090000
spi_pt_size_al_boot=0x00060000
spi_pt_size_dt=0x00010000
spi_pt_size_env=0x00010000
spi_pt_size_fs=0x00460000
spi_pt_size_kernel=0x002E0000
syno_boot_dev=/dev/md0
syno_bootargs=setenv bootargs console=ttyS0,115200 ip=off pci=pcie_bus_perf initrd=$loadaddr_rootfs root=$syno_boot_dev rw $syno_extra_args syno_hw_version=$syno_hw_version ihd_num=$syno_hdd_powerup_seq netif_num=$syno_net_if_num vmalloc=$syno_vmalloc $ata_hdd_act_led $ata_hdd_detect $ata_hdd_enable\
syno_extra_args=HddHotplug=4 earlyprintk=serial
syno_extra_args=HddHotplug=4
syno_hdd_powerup_seq=4
syno_hw_version=DS416
syno_net_if_num=2
upd_dt=setenv tftpfile $file_dt;mw.b $loadaddr 0xFF $spi_pt_size_dt; tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_dt $spi_pt_size_dt; sf write $loadaddr $spi_pt_addr_dt $spi_pt_size_dt; echo "Device Tree Update Done";fi;
upd_eeprom=confirm_msg "Perform EEPROM update? [y/n] ";if test $? -ne 0; then exit; fi;tftpboot $loadaddr $file_eeprom;if test $? -ne 0; then exit; fi;i2c probe ${pld_i2c_addr};if test $? -ne 0; then exit; fi;i2c write $loadaddr ${pld_i2c_addr} 0.2 $filesize;if test $? -ne 0; then exit;fi;echo eepromupd done;
upd_flash=setenv tftpfile $file_flash; tftpboot $loadaddr $tftpfile; if test $? -eq 0; then echo "This may take a while, please be patient..."; sf probe; sf erase 0 +$filesize; sf write $loadaddr 0 $filesize; echo "Flash Update Done"; fi;
upd_kernel=setenv tftpfile $file_kernel;mw.b $loadaddr 0xFF $spi_pt_size_kernel;tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_kernel $spi_pt_size_kernel; sf write $loadaddr $spi_pt_addr_kernel $spi_pt_size_kernel; echo "Kernel Update Done"; fi;
upd_rootfs=setenv tftpfile $file_rootfs;mw.b $loadaddr 0xFF $spi_pt_size_rootfs; tftpboot $loadaddr $tftpfile;if test $? -eq 0; then sf probe; sf erase $spi_pt_addr_fs +$filesize; sf write $loadaddr $spi_pt_addr_fs $filesize;echo "Rootfs Update Done";fi;
upd_uboot=setenv tftpfile $file_uboot;tftpboot $loadaddr $tftpfile; if test $? -eq 0; then sf probe; sf erase 0 +$filesize; sf write $loadaddr 0 $filesize; echo "Uboot Update Done"; fi;
vendor=annapurna-labs

Environment size: 7501/16380 bytes
ALPINE_DB>
Re: Synology DS416 unbricking
July 01, 2022 05:05PM
Quote

bootz - boot Linux zImage image from memory

That pretty strange, they used bootm to boot zImage in stock, while the bootz command is available. In the old days, bootm also work for zImage. But later bootz was created and will properly boot a zImage.

Try
bootz 8000000 7500000 3B84008

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 05:12PM
I tried this after reset and after downloading over TFTP as well. Same results::

ALPINE_DB> bootz 8000000 7500000 3B84008
Bad Linux ARM zImage magic!
ALPINE_DB>
Re: Synology DS416 unbricking
July 01, 2022 05:44PM
>
> ALPINE_DB> bootz 8000000 7500000 3B84008
> Bad Linux ARM zImage magic!
> ALPINE_DB>
>

So that zImage file is not a real zImage. It is actually an uImage.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 06:03PM
There is a fdt command, see what it does, especially if it can display the size of the dt blob currently in memory.

help fdt

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 06:10PM
And try these bootm commands

bootm 0x8000000 0x7500000
bootm 0x8000000 - 0x3B84008

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 06:14PM
Here you go. I also tried a few commands that display data.

ALPINE_DB> help fdt
fdt - flattened device tree utility commands

Usage:
fdt addr [-c]  <addr> [<length>]   - Set the [control] fdt location to <addr>
fdt boardsetup                      - Do board-specific set up
fdt move   <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active
fdt resize                          - Resize fdt to size + padding to 4k addr
fdt print  <path> [<prop>]          - Recursive print starting at <path>
fdt list   <path> [<prop>]          - Print one level starting at <path>
fdt get value <var> <path> <prop>   - Get <property> and store in <var>
fdt get name <var> <path> <index>   - Get name of node <index> and store in <var>
fdt get addr <var> <path> <prop>    - Get start address of <property> and store in <var>
fdt get size <var> <path> [<prop>]  - Get size of [<property>] or num nodes and store in <var>
fdt set    <path> <prop> [<val>]    - Set <property> [to <val>]
fdt mknode <path> <node>            - Create a new node after <path>
fdt rm     <path> [<prop>]          - Delete the node or <property>
fdt header                          - Display header info
fdt bootcpu <id>                    - Set boot cpuid
fdt memory <addr> <size>            - Add/Update memory node
fdt rsvmem print                    - Show current mem reserves
fdt rsvmem add <addr> <size>        - Add a mem reserve
fdt rsvmem delete <index>           - Delete a mem reserves
fdt chosen [<start> <end>]          - Add/update the /chosen branch in the tree
                                        <start>/<end> - initrd start/end addr
NOTE: Dereference aliases by omiting the leading '/', e.g. fdt print ethernet0.



ALPINE_DB> fdt list
/ {
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        compatible = "annapurna-labs,alpine";
        clock-ranges;
        model = "Annapurna Labs Alpine Dev Board";
        chosen {
        };
        aliases {
        };
        memory {
        };
        cpus {
        };
        soc {
        };
        hypervisor {
        };
};



ALPINE_DB> fdt print
/ {
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        compatible = "annapurna-labs,alpine";
        clock-ranges;
        model = "Annapurna Labs Alpine Dev Board";
        chosen {
        };
        aliases {
        };
        memory {
                device_type = "memory";
                reg = <0x00000000 0x00000000 0x00000000 0x00000000>;
        };
        cpus {
                #address-cells = <0x00000001>;
                #size-cells = <0x00000000>;
                cpu@0 {
                        compatible = "arm,cortex-a15";
                        device_type = "cpu";
                        reg = <0x00000000>;
                        clocks = <0x00000001>;
                        clock-names = "cpu";
                        clock-frequency = <0x00000000>;
                };
                cpu@1 {
                        compatible = "arm,cortex-a15";
                        device_type = "cpu";
                        reg = <0x00000001>;
                        clocks = <0x00000001>;
                        clock-names = "cpu";
                        clock-frequency = <0x00000000>;
                };
                cpu@2 {
                        compatible = "arm,cortex-a15";
                        device_type = "cpu";
                        reg = <0x00000002>;
                        clocks = <0x00000001>;
                        clock-names = "cpu";
                        clock-frequency = <0x00000000>;
                };
                cpu@3 {
                        compatible = "arm,cortex-a15";
                        device_type = "cpu";
                        reg = <0x00000003>;
                        clocks = <0x00000001>;
                        clock-names = "cpu";
                        clock-frequency = <0x00000000>;
                };
        };
        soc {
                #address-cells = <0x00000002>;
                #size-cells = <0x00000002>;
                compatible = "simple-bus";
                interrupt-parent = <0x00000002>;
                ranges;
                arch-timer {
                        compatible = "disabled";
                        interrupts = <0x00000001 0x0000000d 0x00000f08 0x00000001 0x0000000e 0x00000f08 0x00000001 0x0000000b 0x00000f08 0x00000001 0x0000000a 0x00000f08>;
                        clock-frequency = <0x02faf080>;
                };
                gic_main {
                        compatible = "arm,cortex-a15-gic";
                        #interrupt-cells = <0x00000003>;
                        #size-cells = <0x00000000>;
                        #address-cells = <0x00000000>;
                        interrupt-controller;
                        reg = <0x00000000 0xfb001000 0x00000000 0x00001000 0x00000000 0xfb002000 0x00000000 0x00002000 0x00000000 0xfb004000 0x00000000 0x00001000 0x00000000 0xfb006000 0x00000000 0x00002000>;
                        interrupts = <0x00000001 0x00000009 0x00000f04>;
                        linux,phandle = <0x00000002>;
                        phandle = <0x00000002>;
                };
                cpu_resume {
                        compatible = "annapurna-labs,al-cpu-resume";
                        reg = <0x00000000 0xfbff5ec0 0x00000000 0x00000030>;
                };
                ccu {
                        compatible = "annapurna-labs,al-ccu";
                        reg = <0x00000000 0xfb090000 0x00000000 0x00010000>;
                        io_coherency = <0x00000001>;
                };
                nb_service {
                        compatible = "annapurna-labs,al-nb-service";
                        reg = <0x00000000 0xfb070000 0x00000000 0x00010000>;
                        interrupts = <0x00000000 0x00000040 0x00000004 0x00000000 0x00000041 0x00000004 0x00000000 0x00000042 0x00000004 0x00000000 0x00000043 0x00000004>;
                        dev_ord_relax = <0x00000000>;
                };
                pbs {
                        compatible = "annapurna-labs,al-pbs";
                        reg = <0x00000000 0xfd8a8000 0x00000000 0x00001000>;
                };
                msix {
                        compatible = "annapurna-labs,al-msix";
                        reg = <0x00000000 0xfbe00000 0x00000000 0x00100000>;
                        interrupts = <0x00000000 0x00000060 0x00000001 0x00000000 0x0000009f 0x00000001>;
                };
                pmu {
                        compatible = "arm,cortex-a15-pmu";
                        interrupts = <0x00000000 0x00000044 0x00000004 0x00000000 0x00000045 0x00000004 0x00000000 0x00000046 0x00000004 0x00000000 0x00000047 0x00000004>;
                };
                timer0 {
                        compatible = "arm,sp804", "arm,primecell";
                        reg = <0x00000000 0xfd890000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000009 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "sbclk";
                };
                timer1 {
                        compatible = "arm,sp804", "arm,primecell";
                        reg = <0x00000000 0xfd891000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x0000000a 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "sbclk";
                };
                timer2 {
                        compatible = "arm,sp804", "arm,primecell";
                        reg = <0x00000000 0xfd892000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x0000000b 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "sbclk";
                        status = "disabled";
                };
                timer3 {
                        compatible = "arm,sp804", "arm,primecell";
                        reg = <0x00000000 0xfd893000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x0000000c 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "sbclk";
                        status = "disabled";
                };
                wdt0 {
                        compatible = "arm,sp805", "arm,primecell";
                        reg = <0x00000000 0xfd88c000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x0000000d 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                };
                wdt1 {
                        compatible = "arm,sp805", "arm,primecell";
                        reg = <0x00000000 0xfd88d000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x0000000e 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        status = "disabled";
                };
                wdt2 {
                        compatible = "arm,sp805", "arm,primecell";
                        reg = <0x00000000 0xfd88e000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x0000000f 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        status = "disabled";
                };
                wdt3 {
                        compatible = "arm,sp805", "arm,primecell";
                        reg = <0x00000000 0xfd88f000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000010 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        status = "disabled";
                };
                i2c-pld {
                        #address-cells = <0x00000001>;
                        #size-cells = <0x00000000>;
                        compatible = "snps,designware-i2c";
                        reg = <0x00000000 0xfd880000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000015 0x00000004>;
                        clocks = <0x00000003>;
                        clock-frequency = <0x00061a80>;
                        bq32k@68 {
                                compatible = "bq32000";
                                reg = <0x00000068>;
                        };
                };
                i2c-gen {
                        #address-cells = <0x00000001>;
                        #size-cells = <0x00000000>;
                        compatible = "snps,designware-i2c";
                        reg = <0x00000000 0xfd894000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000008 0x00000004>;
                        clocks = <0x00000003>;
                        clock-frequency = <0x00061a80>;
                        status = "disabled";
                };
                gpio0 {
                        #gpio-cells = <0x00000002>;
                        compatible = "arm,pl061", "arm,primecell";
                        gpio-controller;
                        reg = <0x00000000 0xfd887000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000002 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        baseidx = <0x00000000>;
                };
                gpio1 {
                        #gpio-cells = <0x00000002>;
                        compatible = "arm,pl061", "arm,primecell";
                        gpio-controller;
                        reg = <0x00000000 0xfd888000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000003 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        baseidx = <0x00000008>;
                };
                gpio2 {
                        #gpio-cells = <0x00000002>;
                        compatible = "arm,pl061", "arm,primecell";
                        gpio-controller;
                        reg = <0x00000000 0xfd889000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000004 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        baseidx = <0x00000010>;
                };
                gpio3 {
                        #gpio-cells = <0x00000002>;
                        compatible = "arm,pl061", "arm,primecell";
                        gpio-controller;
                        reg = <0x00000000 0xfd88a000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000005 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        baseidx = <0x00000018>;
                };
                gpio4 {
                        #gpio-cells = <0x00000002>;
                        compatible = "arm,pl061", "arm,primecell";
                        gpio-controller;
                        reg = <0x00000000 0xfd88b000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000006 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        baseidx = <0x00000020>;
                };
                gpio5 {
                        #gpio-cells = <0x00000002>;
                        compatible = "arm,pl061", "arm,primecell";
                        gpio-controller;
                        reg = <0x00000000 0xfd897000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000007 0x00000004>;
                        clocks = <0x00000003>;
                        clock-names = "apb_pclk";
                        baseidx = <0x00000028>;
                };
                uart0 {
                        compatible = "ns16550a";
                        reg = <0x00000000 0xfd883000 0x00000000 0x00001000>;
                        clock-frequency = <0x00000000>;
                        interrupts = <0x00000000 0x00000011 0x00000004>;
                        reg-shift = <0x00000002>;
                        reg-io-width = <0x00000004>;
                };
                uart1 {
                        compatible = "ns16550a";
                        reg = <0x00000000 0xfd884000 0x00000000 0x00001000>;
                        clock-frequency = <0x00000000>;
                        interrupts = <0x00000000 0x00000012 0x00000004>;
                        reg-shift = <0x00000002>;
                        reg-io-width = <0x00000004>;
                };
                uart2 {
                        compatible = "ns16550a";
                        reg = <0x00000000 0xfd885000 0x00000000 0x00001000>;
                        clock-frequency = <0x00000000>;
                        interrupts = <0x00000000 0x00000013 0x00000004>;
                        reg-shift = <0x00000002>;
                        reg-io-width = <0x00000004>;
                        status = "disabled";
                };
                uart3 {
                        compatible = "ns16550a";
                        reg = <0x00000000 0xfd886000 0x00000000 0x00001000>;
                        clock-frequency = <0x00000000>;
                        interrupts = <0x00000000 0x00000014 0x00000004>;
                        reg-shift = <0x00000002>;
                        reg-io-width = <0x00000004>;
                        status = "disabled";
                };
                pcie-internal {
                        compatible = "annapurna-labs,al-internal-pcie";
                        device_type = "pci";
                        #size-cells = <0x00000002>;
                        #address-cells = <0x00000003>;
                        #interrupt-cells = <0x00000001>;
                        interrupt-parent = <0x00000002>;
                        interrupt-map-mask = <0x0000f800 0x00000000 0x00000000 0x00000007>;
                        interrupt-map = * 0x03b855a4 [0x00000080];
                        ranges = <0x00000000 0x00000000 0xfbc00000 0x00000000 0xfbc00000 0x00000000 0x00100000 0x02000000 0x00000000 0xfe000000 0x00000000 0xfe000000 0x00000000 0x01000000>;
                        bus-range = <0x00000000 0x00000000>;
                };
                pcie-external0 {
                        compatible = "annapurna-labs,al-pci";
                        reg = <0x00000000 0xfd800000 0x00000000 0x00020000>;
                        device_type = "pci";
                        #size-cells = <0x00000002>;
                        #address-cells = <0x00000003>;
                        #interrupt-cells = <0x00000001>;
                        interrupt-parent = <0x00000002>;
                        interrupt-map-mask = <0x00000000 0x00000000 0x00000000 0x00000007>;
                        interrupt-map = <0x00000000 0x00000000 0x00000000 0x00000001 0x00000002 0x00000000 0x00000028 0x00000004>;
                        ranges = * 0x03b85778 [0x00000054];
                        bus-range = <0x00000000 0x000000ff>;
                };
                pcie-external1 {
                        compatible = "annapurna-labs,al-pci";
                        reg = <0x00000000 0xfd820000 0x00000000 0x00020000>;
                        device_type = "pci";
                        #size-cells = <0x00000002>;
                        #address-cells = <0x00000003>;
                        #interrupt-cells = <0x00000001>;
                        interrupt-parent = <0x00000002>;
                        interrupt-map-mask = <0x00000000 0x00000000 0x00000000 0x00000007>;
                        interrupt-map = <0x00000000 0x00000000 0x00000000 0x00000001 0x00000002 0x00000000 0x00000029 0x00000004>;
                        ranges = * 0x03b858dc [0x00000054];
                        bus-range = <0x00000000 0x000000ff>;
                };
                pcie-external2 {
                        compatible = "annapurna-labs,al-pci";
                        reg = <0x00000000 0xfd840000 0x00000000 0x00020000>;
                        device_type = "pci";
                        #size-cells = <0x00000002>;
                        #address-cells = <0x00000003>;
                        #interrupt-cells = <0x00000001>;
                        interrupt-parent = <0x00000002>;
                        interrupt-map-mask = <0x00000000 0x00000000 0x00000000 0x00000007>;
                        interrupt-map = <0x00000000 0x00000000 0x00000000 0x00000001 0x00000002 0x00000000 0x0000002a 0x00000004>;
                        ranges = * 0x03b85a40 [0x00000054];
                        bus-range = <0x00000000 0x000000ff>;
                };
                thermal {
                        compatible = "annapurna-labs,al-thermal";
                        reg = <0x00000000 0xfd860a00 0x00000000 0x00000100>;
                };
                nor_flash {
                        compatible = "cfi-flash";
                        reg = <0x00000000 0xf4000000 0x00000000 0x04000000>;
                        bank-width = <0x00000001>;
                        device-width = <0x00000001>;
                        status = "disabled";
                };
                nand-flash {
                        compatible = "annapurna-labs,al-nand";
                        reg = <0x00000000 0xfa100000 0x00000000 0x00202000>;
                        interrupts = <0x00000000 0x00000001 0x00000004>;
                        status = "disabled";
                };
                spi {
                        compatible = "snps,dw-spi-mmio";
                        #address-cells = <0x00000001>;
                        #size-cells = <0x00000000>;
                        reg = <0x00000000 0xfd882000 0x00000000 0x00001000>;
                        interrupts = <0x00000000 0x00000017 0x00000004>;
                        num-chipselect = <0x00000004>;
                        bus-num = <0x00000000>;
                        clocks = <0x00000003>;
                        clock-names = "sbclk";
                        spiflash@0 {
                                #address-cells = <0x00000001>;
                                #size-cells = <0x00000001>;
                                compatible = "spi_flash_jedec_detection";
                                spi-max-frequency = <0x017d7840>;
                                reg = <0x00000000>;
                                partition@0 {
                                        reg = <0x007f0000 0x00010000>;
                                        label = "FIS directory";
                                };
                        };
                };
                clocks {
                        #address-cells = <0x00000001>;
                        #size-cells = <0x00000000>;
                        refclk {
                                #clock-cells = <0x00000000>;
                                compatible = "fixed-clock";
                                clock-frequency = <0x016e3600>;
                        };
                        sbclk {
                                #clock-cells = <0x00000000>;
                                compatible = "fixed-clock";
                                clock-frequency = <0x000f4240>;
                                linux,phandle = <0x00000003>;
                                phandle = <0x00000003>;
                        };
                        nbclk {
                                #clock-cells = <0x00000000>;
                                compatible = "fixed-clock";
                                clock-frequency = <0x000f4240>;
                        };
                        cpuclk {
                                #clock-cells = <0x00000000>;
                                compatible = "fixed-clock";
                                clock-frequency = <0x000f4240>;
                                linux,phandle = <0x00000001>;
                                phandle = <0x00000001>;
                        };
                };
                serdes {
                        compatible = "annapurna-labs,al-serdes";
                        reg = <0x00000000 0xfd8c0000 0x00000000 0x00001000>;
                };
                mc {
                        compatible = "annapurna-labs,al-mc";
                        reg = <0x00000000 0xfb080000 0x00000000 0x00010000>;
                };
                pinctrl {
                        compatible = "annapurna-labs,al-pinctrl";
                        reg = <0x00000000 0xfd8a8000 0x00000000 0x00001000>;
                        if_nor_8 {
                                id = "if_nor_8";
                                arg = <0x00000000>;
                        };
                        if_nor_16 {
                                id = "if_nor_16";
                                arg = <0x00000000>;
                        };
                        if_nor_cs_0 {
                                id = "if_nor_cs_0";
                                arg = <0x00000000>;
                        };
                        if_nor_cs_1 {
                                id = "if_nor_cs_1";
                                arg = <0x00000000>;
                        };
                        if_nor_cs_2 {
                                id = "if_nor_cs_2";
                                arg = <0x00000000>;
                        };
                        if_nor_cs_3 {
                                id = "if_nor_cs_3";
                                arg = <0x00000000>;
                        };
                        if_nor_wp {
                                id = "if_nor_wp";
                                arg = <0x00000000>;
                        };
                        if_nand_8 {
                                id = "if_nand_8";
                                arg = <0x00000000>;
                        };
                        if_nand_16 {
                                id = "if_nand_16";
                                arg = <0x00000000>;
                        };
                        if_nand_cs_0 {
                                id = "if_nand_cs_0";
                                arg = <0x00000000>;
                        };
                        if_nand_cs_1 {
                                id = "if_nand_cs_1";
                                arg = <0x00000000>;
                        };
                        if_nand_cs_2 {
                                id = "if_nand_cs_2";
                                arg = <0x00000000>;
                        };
                        if_nand_cs_3 {
                                id = "if_nand_cs_3";
                                arg = <0x00000000>;
                        };
                        if_nand_wp {
                                id = "if_nand_wp";
                                arg = <0x00000000>;
                        };
                        if_sram_8 {
                                id = "if_sram_8";
                                arg = <0x00000000>;
                        };
                        if_sram_16 {
                                id = "if_sram_16";
                                arg = <0x00000000>;
                        };
                        if_sram_cs_0 {
                                id = "if_sram_cs_0";
                                arg = <0x00000000>;
                        };
                        if_sram_cs_1 {
                                id = "if_sram_cs_1";
                                arg = <0x00000000>;
                        };
                        if_sram_cs_2 {
                                id = "if_sram_cs_2";
                                arg = <0x00000000>;
                        };
                        if_sram_cs_3 {
                                id = "if_sram_cs_3";
                                arg = <0x00000000>;
                        };
                        if_sata_0_leds {
                                id = "if_sata_0_leds";
                                arg = <0x00000000>;
                        };
                        if_sata_1_leds {
                                id = "if_sata_1_leds";
                                arg = <0x00000000>;
                        };
                        if_eth_leds {
                                id = "if_eth_leds";
                                arg = <0x00000000>;
                        };
                        if_eth_gpio {
                                id = "if_eth_gpio";
                                arg = <0x00000000>;
                        };
                        if_uart_1 {
                                id = "if_uart_1";
                                arg = <0x00000000>;
                                linux,phandle = <0x00000004>;
                                phandle = <0x00000004>;
                        };
                        if_uart_1_modem {
                                id = "if_uart_1_modem";
                                arg = <0x00000000>;
                        };
                        if_uart_2 {
                                id = "if_uart_2";
                                arg = <0x00000000>;
                        };
                        if_uart_3 {
                                id = "if_uart_3";
                                arg = <0x00000000>;
                        };
                        if_i2c_gen {
                                id = "if_i2c_gen";
                                arg = <0x00000000>;
                        };
                        if_ulpi_0_rst_n {
                                id = "if_ulpi_0_rst_n";
                                arg = <0x00000000>;
                        };
                        if_ulpi_1_rst_n {
                                id = "if_ulpi_1_rst_n";
                                arg = <0x00000000>;
                        };
                        if_pci_ep_int_a {
                                id = "if_pci_ep_int_a";
                                arg = <0x00000000>;
                        };
                        if_pci_ep_reset_out {
                                id = "if_pci_ep_reset_out";
                                arg = <0x00000000>;
                        };
                        if_spim_a_ss_1 {
                                id = "if_spim_a_ss_1";
                                arg = <0x00000000>;
                        };
                        if_spim_a_ss_2 {
                                id = "if_spim_a_ss_2";
                                arg = <0x00000000>;
                        };
                        if_spim_a_ss_3 {
                                id = "if_spim_a_ss_3";
                                arg = <0x00000000>;
                        };
                        if_ulpi_1_b {
                                id = "if_ulpi_1_b";
                                arg = <0x00000000>;
                        };
                        if_gpio0 {
                                id = "if_gpio";
                                arg = <0x00000000>;
                        };
                        if_gpio1 {
                                id = "if_gpio";
                                arg = <0x00000001>;
                        };
                        if_gpio2 {
                                id = "if_gpio";
                                arg = <0x00000002>;
                        };
                        if_gpio3 {
                                id = "if_gpio";
                                arg = <0x00000003>;
                        };
                        if_gpio4 {
                                id = "if_gpio";
                                arg = <0x00000004>;
                        };
                        if_gpio5 {
                                id = "if_gpio";
                                arg = <0x00000005>;
                        };
                        if_gpio6 {
                                id = "if_gpio";
                                arg = <0x00000006>;
                        };
                        if_gpio7 {
                                id = "if_gpio";
                                arg = <0x00000007>;
                        };
                        if_gpio8 {
                                id = "if_gpio";
                                arg = <0x00000008>;
                        };
                        if_gpio9 {
                                id = "if_gpio";
                                arg = <0x00000009>;
                        };
                        if_gpio10 {
                                id = "if_gpio";
                                arg = <0x0000000a>;
                        };
                        if_gpio11 {
                                id = "if_gpio";
                                arg = <0x0000000b>;
                        };
                        if_gpio12 {
                                id = "if_gpio";
                                arg = <0x0000000c>;
                        };
                        if_gpio13 {
                                id = "if_gpio";
                                arg = <0x0000000d>;
                        };
                        if_gpio14 {
                                id = "if_gpio";
                                arg = <0x0000000e>;
                        };
                        if_gpio15 {
                                id = "if_gpio";
                                arg = <0x0000000f>;
                        };
                        if_gpio16 {
                                id = "if_gpio";
                                arg = <0x00000010>;
                        };
                        if_gpio17 {
                                id = "if_gpio";
                                arg = <0x00000011>;
                        };
                        if_gpio18 {
                                id = "if_gpio";
                                arg = <0x00000012>;
                        };
                        if_gpio19 {
                                id = "if_gpio";
                                arg = <0x00000013>;
                        };
                        if_gpio20 {
                                id = "if_gpio";
                                arg = <0x00000014>;
                        };
                        if_gpio21 {
                                id = "if_gpio";
                                arg = <0x00000015>;
                        };
                        if_gpio22 {
                                id = "if_gpio";
                                arg = <0x00000016>;
                        };
                        if_gpio23 {
                                id = "if_gpio";
                                arg = <0x00000017>;
                        };
                        if_gpio24 {
                                id = "if_gpio";
                                arg = <0x00000018>;
                        };
                        if_gpio25 {
                                id = "if_gpio";
                                arg = <0x00000019>;
                        };
                        if_gpio26 {
                                id = "if_gpio";
                                arg = <0x0000001a>;
                        };
                        if_gpio27 {
                                id = "if_gpio";
                                arg = <0x0000001b>;
                        };
                        if_gpio28 {
                                id = "if_gpio";
                                arg = <0x0000001c>;
                        };
                        if_gpio29 {
                                id = "if_gpio";
                                arg = <0x0000001d>;
                        };
                        if_gpio30 {
                                id = "if_gpio";
                                arg = <0x0000001e>;
                        };
                        if_gpio31 {
                                id = "if_gpio";
                                arg = <0x0000001f>;
                        };
                        if_gpio32 {
                                id = "if_gpio";
                                arg = <0x00000020>;
                        };
                        if_gpio33 {
                                id = "if_gpio";
                                arg = <0x00000021>;
                        };
                        if_gpio34 {
                                id = "if_gpio";
                                arg = <0x00000022>;
                        };
                        if_gpio35 {
                                id = "if_gpio";
                                arg = <0x00000023>;
                        };
                        if_gpio36 {
                                id = "if_gpio";
                                arg = <0x00000024>;
                        };
                        if_gpio37 {
                                id = "if_gpio";
                                arg = <0x00000025>;
                        };
                        if_gpio38 {
                                id = "if_gpio";
                                arg = <0x00000026>;
                        };
                        if_gpio39 {
                                id = "if_gpio";
                                arg = <0x00000027>;
                        };
                        if_gpio40 {
                                id = "if_gpio";
                                arg = <0x00000028>;
                        };
                        if_gpio41 {
                                id = "if_gpio";
                                arg = <0x00000029>;
                        };
                        if_gpio42 {
                                id = "if_gpio";
                                arg = <0x0000002a>;
                        };
                        if_gpio43 {
                                id = "if_gpio";
                                arg = <0x0000002b>;
                        };
                };
                board-cfg {
                        id = "Synology DS416";
                        u-boot-offset = <0x00020000>;
                        pinctrl_init {
                                pinctrl-0 = <0x00000004>;
                        };
                        gpio_init {
                                gpio-list = * 0x03b87390 [0x0000012c];
                        };
                        serdes {
                                group0 {
                                        interface = "pcie_g2x2_pcie_g2x2";
                                        ref-clock = "100Mhz";
                                        active-lanes = <0x00000000 0x00000002>;
                                        inv-tx-lanes;
                                        inv-rx-lanes;
                                        ssc = "disabled";
                                };
                                group1 {
                                        interface = "off";
                                        ref-clock = "100Mhz";
                                        active-lanes = <0x00000000 0x00000001 0x00000002 0x00000003>;
                                        inv-tx-lanes;
                                        inv-rx-lanes;
                                        ssc = "disabled";
                                };
                                group2 {
                                        interface = "sata";
                                        ref-clock = "100Mhz";
                                        active-lanes = <0x00000000 0x00000001 0x00000002 0x00000003>;
                                        inv-tx-lanes;
                                        inv-rx-lanes;
                                        ssc = "disabled";
                                        lane_0_params {
                                                rx {
                                                        override = "enabled";
                                                        dcgain = <0x00000000>;
                                                        dfe_3db_freq = <0x00000007>;
                                                        dfe_gain = <0x00000000>;
                                                        dfe_1st_tap_ctrl = <0x00000000>;
                                                        dfe_2nd_tap_ctrl = <0x00000008>;
                                                        dfe_3rd_tap_ctrl = <0x00000000>;
                                                        dfe_4th_tap_ctrl = <0x00000008>;
                                                        low_freq_agc_gain = <0x00000007>;
                                                        high_freq_agc_boost = <0x00000000>;
                                                        precal_code_sel = <0x00000000>;
                                                };
                                                tx {
                                                        override = "enabled";
                                                        amp = <0x00000006>;
                                                        total_driver_units = <0x00000016>;
                                                        post_emph = <0x00000006>;
                                                        pre_emph = <0x00000000>;
                                                        slew_rate = <0x00000000>;
                                                };
                                        };
                                        lane_1_params {
                                                rx {
                                                        override = "enabled";
                                                        dcgain = <0x00000000>;
                                                        dfe_3db_freq = <0x00000007>;
                                                        dfe_gain = <0x00000000>;
                                                        dfe_1st_tap_ctrl = <0x00000000>;
                                                        dfe_2nd_tap_ctrl = <0x00000008>;
                                                        dfe_3rd_tap_ctrl = <0x00000000>;
                                                        dfe_4th_tap_ctrl = <0x00000008>;
                                                        low_freq_agc_gain = <0x00000007>;
                                                        high_freq_agc_boost = <0x00000000>;
                                                        precal_code_sel = <0x00000000>;
                                                };
                                                tx {
                                                        override = "enabled";
                                                        amp = <0x00000006>;
                                                        total_driver_units = <0x00000016>;
                                                        post_emph = <0x00000006>;
                                                        pre_emph = <0x00000000>;
                                                        slew_rate = <0x00000000>;
                                                };
                                        };
                                        lane_2_params {
                                                rx {
                                                        override = "enabled";
                                                        dcgain = <0x00000000>;
                                                        dfe_3db_freq = <0x00000007>;
                                                        dfe_gain = <0x00000000>;
                                                        dfe_1st_tap_ctrl = <0x00000000>;
                                                        dfe_2nd_tap_ctrl = <0x00000008>;
                                                        dfe_3rd_tap_ctrl = <0x00000000>;
                                                        dfe_4th_tap_ctrl = <0x00000008>;
                                                        low_freq_agc_gain = <0x00000007>;
                                                        high_freq_agc_boost = <0x00000002>;
                                                        precal_code_sel = <0x00000000>;
                                                };
                                                tx {
                                                        override = "enabled";
                                                        amp = <0x00000002>;
                                                        total_driver_units = <0x00000016>;
                                                        post_emph = <0x00000006>;
                                                        pre_emph = <0x00000000>;
                                                        slew_rate = <0x00000000>;
                                                };
                                        };
                                        lane_3_params {
                                                rx {
                                                        override = "enabled";
                                                        dcgain = <0x00000000>;
                                                        dfe_3db_freq = <0x00000007>;
                                                        dfe_gain = <0x00000000>;
                                                        dfe_1st_tap_ctrl = <0x00000000>;
                                                        dfe_2nd_tap_ctrl = <0x00000008>;
                                                        dfe_3rd_tap_ctrl = <0x00000000>;
                                                        dfe_4th_tap_ctrl = <0x00000008>;
                                                        low_freq_agc_gain = <0x00000007>;
                                                        high_freq_agc_boost = <0x00000002>;
                                                        precal_code_sel = <0x00000000>;
                                                };
                                                tx {
                                                        override = "enabled";
                                                        amp = <0x00000001>;
                                                        total_driver_units = <0x00000016>;
                                                        post_emph = <0x00000004>;
                                                        pre_emph = <0x00000000>;
                                                        slew_rate = <0x00000000>;
                                                };
                                        };
                                };
                                group3 {
                                        interface = "sgmii";
                                        ref-clock = "100Mhz";
                                        active-lanes = <0x00000002 0x00000003>;
                                        inv-tx-lanes;
                                        inv-rx-lanes;
                                        ssc = "disabled";
                                };
                        };
                        ethernet {
                                port0 {
                                        status = "enabled";
                                        mode = "sgmii";
                                        ext_phy {
                                                phy_mgmt_if = "mdc-mdio";
                                                phy-addr = <0x00000001>;
                                                mdc-mdio-freq = "1.0Mhz";
                                                auto-neg-mode = "out-of-band";
                                        };
                                };
                                port1 {
                                        status = "enabled";
                                        mode = "sgmii";
                                        ext_phy {
                                                phy_mgmt_if = "mdc-mdio";
                                                phy-addr = <0x00000002>;
                                                mdc-mdio-freq = "1.0Mhz";
                                                auto-neg-mode = "out-of-band";
                                        };
                                };
                                port2 {
                                        status = "disabled";
                                        mode = "sgmii";
                                        ext_phy {
                                                phy_mgmt_if = "mdc-mdio";
                                                phy-addr = <0x00000003>;
                                                mdc-mdio-freq = "1.0Mhz";
                                                auto-neg-mode = "out-of-band";
                                        };
                                };
                                port3 {
                                        status = "disabled";
                                        mode = "sgmii";
                                        ext_phy {
                                                phy_mgmt_if = "mdc-mdio";
                                                phy-addr = <0x00000000>;
                                                mdc-mdio-freq = "1.0Mhz";
                                                auto-neg-mode = "out-of-band";
                                        };
                                };
                        };
                        pcie {
                                ep-ports;
                                port0 {
                                        status = "enabled";
                                        gen = <0x00000002>;
                                        width = <0x00000002>;
                                };
                                port1 {
                                        status = "enabled";
                                        gen = <0x00000002>;
                                        width = <0x00000002>;
                                };
                                port2 {
                                        status = "disabled";
                                        gen = <0x00000002>;
                                        width = <0x00000004>;
                                };
                        };
                };
        };
        hypervisor {
        };
};


ALPINE_DB> fdt rsvmem print
index              start                    size
------------------------------------------------
    0   0000000000000000        0000000000100000

Re: Synology DS416 unbricking
July 01, 2022 06:20PM
Quote

ALPINE_DB> fdt print

Cool! Let me compile it and se what will happen.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 01, 2022 07:32PM
Actually we don't need that. Alpine is in mainline, I just did not notice that.

lst /usr/src/linux-5.18.6-mvebu/arch/arm/boot/dts/alp*

-rw-rw-r-- 1 root root 4648 Jun 22 05:28 /usr/src/linux-5.18.6-mvebu/arch/arm/boot/dts/alpine.dtsi
-rw-rw-r-- 1 root root 1185 Jun 22 05:28 /usr/src/linux-5.18.6-mvebu/arch/arm/boot/dts/alpine-db.dts


Hopefully it will work with old kernel, if not. Then there is a pretty good chance that this box can be booted with a modern kernel.

UPDATE:

I've attached the DTB here.

-bodhi
===========================
Forum Wiki
bodhi's corner



Edited 2 time(s). Last edit at 07/01/2022 07:52PM by bodhi.
Attachments:
open | download - alpine-db.dtb (2.5 KB)
Re: Synology DS416 unbricking
July 01, 2022 10:17PM
bohdi,

Thanks for building that! Unfortunately it still hangs. I tried with kernels from both DMS 7 and DSM 5. Here's the output from using the DSM 5 kernel.

I don't have a cross-compiler environment setup. I could do that, but if you already have that, would you be able to compile it for me?

Annapurna Labs stage 2: stage2_eth3_ram_loader v1.49.3
Executing next!
Annapurna Labs stage 2: stage2.5_loader v1.49.3
SPD I2C Address:00000057
Executing next!


Stage 3 2013.10-alpine_spl-1.49.4-00666-gccfe35f (Sep 08 2014 - 09:15:21)

DRAM:  1 GiB
EEPROM Revision ID = 34
Device ID = a212
Device Info: AL21200-1400
Loading DT to 00100000 (17059 bytes)...
Board config ID: Synology DS416
SRAM agent up: agent_wakeup v1.49.3
Loading U-Boot to 00100000 (373616 bytes)...
Executing U-Boot...


U-Boot 2013.10-alpine_db-1.49.4-SYNO-768e80b-2016-01-04 (Jan 04 2016 - 18:44:17)

Annapurna Labs
Board: Alpine Development Board
I2C:   ready
DDR size is 1024 MB according to shared params
DRAM:  1 GiB

   _
  /_\  _ __  _ __   __ _ _ __  _   _ _ __ _ __   __ _
 //_\\| '_ \| '_ \ / _` | '_ \| | | | '__| '_ \ / _` |
/  _  \ | | | | | | (_| | |_) | |_| | |  | | | | (_| |
\_/ \_/_| |_|_| |_|\__,_| .__/ \__,_|_|  |_| |_|\__,_|
   __       _           |_|
  / /  __ _| |__  ___
 / /  / _` | '_ \/ __|
/ /__| (_| | |_) \__ \
\____/\__,_|_.__/|___/
               ___             _
 /\ /\        / __\ ___   ___ | |_
/ / \ \_____ /__\/// _ \ / _ \| __|
\ \_/ /_____/ \/  \ (_) | (_) | |_
 \___/      \_____/\___/ \___/ \__|

CPU DevID = 0, rev_id = 1
eeprom_per_device_init: no valid information found!
power_init_board: EEPROM per device information is not valid - using defaults!
Early init addr = 00000400
Early init DT offset = 00080000
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
U-Boot script not found in TOC!
U-Boot redundant environment not found in TOC!
DT info:
--------------------
Board config ID: Synology DS416
Muxed interfaces:
        if_uart_1(0)
GPIO configuration:
        GPIO 0 is input
        GPIO 1 is input
        GPIO 2 is input
        GPIO 3 is input
        GPIO 35 is input
        GPIO 36 is input
        GPIO 5 is output, value = 1
        GPIO 10 is output, value = 0
        GPIO 11 is output, value = 0
        GPIO 19 is output, value = 0
        GPIO 22 is output, value = 0
        GPIO 23 is output, value = 0
        GPIO 24 is output, value = 0
        GPIO 25 is output, value = 0
        GPIO 26 is output, value = 0
        GPIO 27 is output, value = 0
        GPIO 29 is output, value = 0
        GPIO 31 is output, value = 0
        GPIO 32 is output, value = 0
        GPIO 33 is output, value = 0
        GPIO 38 is output, value = 0
        GPIO 39 is output, value = 0
        GPIO 40 is output, value = 0
        GPIO 41 is output, value = 0
        GPIO 43 is output, value = 0
dt_based_init_gpio: GPIO  0: 1
dt_based_init_gpio: GPIO  1: 0
dt_based_init_gpio: GPIO  2: 1
dt_based_init_gpio: GPIO  3: 1
dt_based_init_gpio: GPIO  4: 1
dt_based_init_gpio: GPIO  5: 1
dt_based_init_gpio: GPIO  6: 0
dt_based_init_gpio: GPIO  7: 1
dt_based_init_gpio: GPIO  8: 0
dt_based_init_gpio: GPIO  9: 0
dt_based_init_gpio: GPIO 10: 0
dt_based_init_gpio: GPIO 11: 0
dt_based_init_gpio: GPIO 12: 1
dt_based_init_gpio: GPIO 13: 1
dt_based_init_gpio: GPIO 14: 1
dt_based_init_gpio: GPIO 15: 1
dt_based_init_gpio: GPIO 16: 1
dt_based_init_gpio: GPIO 17: 0
dt_based_init_gpio: GPIO 18: 1
dt_based_init_gpio: GPIO 19: 0
dt_based_init_gpio: GPIO 20: 0
dt_based_init_gpio: GPIO 21: 0
dt_based_init_gpio: GPIO 22: 0
dt_based_init_gpio: GPIO 23: 0
dt_based_init_gpio: GPIO 24: 0
dt_based_init_gpio: GPIO 25: 0
dt_based_init_gpio: GPIO 26: 0
dt_based_init_gpio: GPIO 27: 0
dt_based_init_gpio: GPIO 28: 1
dt_based_init_gpio: GPIO 29: 0
dt_based_init_gpio: GPIO 30: 1
dt_based_init_gpio: GPIO 31: 0
dt_based_init_gpio: GPIO 32: 0
dt_based_init_gpio: GPIO 33: 0
dt_based_init_gpio: GPIO 34: 1
dt_based_init_gpio: GPIO 35: 0
dt_based_init_gpio: GPIO 36: 1
dt_based_init_gpio: GPIO 37: 1
dt_based_init_gpio: GPIO 38: 0
dt_based_init_gpio: GPIO 39: 0
dt_based_init_gpio: GPIO 40: 0
dt_based_init_gpio: GPIO 41: 0
dt_based_init_gpio: GPIO 42: 1
dt_based_init_gpio: GPIO 43: 0
dt_based_init_gpio: GPIO 44: 1
dt_based_init_gpio: GPIO 45: 1
dt_based_init_gpio: GPIO 46: 1
dt_based_init_gpio: GPIO 47: 1
Ethernet port 0:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 1
        i2c-id: N/A
Ethernet port 1:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 2
        i2c-id: N/A
Ethernet port 2:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 3
        i2c-id: N/A
Ethernet port 3:
        mode: sgmii
        SFP module: N/A
        10gbe params: N/A
        PHY address: 0
        i2c-id: N/A
PCIe endpoint ports:
PCIe port 0:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 1:
        PCIe port status: enabled
        Gen: 2
        Width: 2
PCIe port 2:
        PCIe port status: disabled
        Gen: 2
        Width: 4
NAND:  0 MiB
SF: Detected MX25U6435F with page size 256 Bytes, erase size 64 KiB, total 8 MiB
  00:00.0     - 1c36:0002 - Network controller
  00:01.0     - 1c36:0001 - Network controller
  00:04.0     - 1c36:0011 - Cryptographic device
  00:05.0     - 1c36:0021 - Base system peripheral
  00:09.0     - 1c36:0031 - Mass storage controller
pci_init_board_external: PCIE_0 no link found
PCIE_1: Link up. Speed 5GT/s Width x1
  01:00.0     - 1b6f:7023 - Serial bus controller
In:    serial
Out:   serial
Err:   serial

Synology Model: DS416
Fan Status: Not Good
Fan 1: Not Good
Fan 2: Not Good

Net:
Turn off EEE of rl8211D
Disable eth0 green mode
Turn off EEE of rl8211D
Disable eth1 green mode
al_eth0 [PRIME], al_eth1
Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete...... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB> tftpboot 0x2000000 zImage.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage.5'.
Load address: 0x2000000
Loading: T #################################################################
         #################################################################
         ############################
         399.4 KiB/s
done
Bytes transferred = 2307368 (233528 hex)
ALPINE_DB> tftpboot 0x8000000 rd.bin.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'rd.bin.5'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         #################################################################
         #################################################################
         #####
         624 KiB/s
done
Bytes transferred = 3882271 (3b3d1f hex)
ALPINE_DB> tftpboot 0x10000000 alpine-db.dtb
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'alpine-db.dtb'.
Load address: 0x10000000
Loading: T #
         0 Bytes/s
done
Bytes transferred = 2555 (9fb hex)
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> bootm 0x2000000 0x8000000  0x10000000
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-3.2.40
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2307304 Bytes = 2.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 08000000 ...
   Image Name:   synology_alpine4k_ds416 5644
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3882207 Bytes = 3.7 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 10000000
   Booting using the fdt blob at 0x10000000
   Loading Kernel Image ... OK
   Loading Ramdisk to 037cf000, end 03b82cdf ... OK
   Loading Device Tree to 037cb000, end 037ce9fa ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/refclk.clock-frequency!
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/sbclk.clock-frequency!
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/nbclk.clock-frequency!
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/cpuclk.clock-frequency!
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart0.clock-frequency!
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart1.clock-frequency!
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart2.clock-frequency!
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart3.clock-frequency!
ft_board_setup_feature_disable: setting /soc/pcie-external0.status to disabled
ft_board_setup_feature_disable: unable to set /soc/pcie-external0.status!
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
ft_board_setup_feature_disable: unable to set /soc/pcie-external2.status!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/al-fabric.io_coherency to 1
ft_board_setup_prop_u32_set: unable to set /soc/al-fabric.io_coherency!

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Re: Synology DS416 unbricking
July 01, 2022 10:27PM
mesnyder1,

> I don't have a cross-compiler environment setup. I
> could do that, but if you already have that, would
> you be able to compile it for me?

I'm building kernel 5.18.6 mainline for this box as we speak!

I hope you can boot with this latest kernel into an armhf rootfs (Debian-5.13.8-mvebu-tld-1-rootfs-bodhi.tar.bz2).

Once you can do that, you will have more flexiblity to restore DSM or just booting latest Debian OS.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 02, 2022 03:05PM
mesnyder1 ,

bodhi Wrote:
-------------------------------------------------------
> And try these bootm commands
>
>
> bootm 0x8000000 0x7500000
> bootm 0x8000000 - 0x3B84008
>

Have you tried these 2 commands?

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 02, 2022 03:17PM
After a clean boot (no tftp downloads), these both fail. Is that what you meant?

ALPINE_DB> bootm 0x8000000 0x7500000
Wrong Image Format for bootm command
ERROR: can't get kernel image!
ALPINE_DB> bootm 0x8000000 - 0x3B84008
Wrong Image Format for bootm command
ERROR: can't get kernel image!
Re: Synology DS416 unbricking
July 02, 2022 04:05PM
1st test
setenv bootargs console=ttyS0,115200 earlyprintk=serial
tftpboot 0x2000000 zImage.5
bootm 0x2000000

2nd test
setenv bootargs console=ttyS0,115200 earlyprintk=serial
tftpboot 0x2000000 zImage.5
tftpboot 0x8000000 rd.bin.5
bootm 0x2000000 0x8000000

3rd test
setenv bootargs console=ttyS0,115200 earlyprintk=serial
tftpboot 0x2000000 zImage.5
tftpboot 0x8000000 rd.bin.5
tftpboot 0x10000000 alpine-db.dtb
bootm 0x2000000 0x8000000 0x10000000

4th test
setenv bootargs console=ttyS0,115200 earlyprintk=serial
tftpboot 0x2000000 zImage.5
tftpboot 0x8000000 rd.bin.5
bootm 0x2000000 0x8000000

5th test
setenv bootargs console=ttyS0,115200 earlyprintk=serial
tftpboot 0x2000000 zImage.5
tftpboot 0x8000000 rd.bin.5
tftpboot 0x10000000 alpine-db.dtb
bootm 0x2000000 - 0x10000000

-bodhi
===========================
Forum Wiki
bodhi's corner



Edited 1 time(s). Last edit at 07/02/2022 04:25PM by bodhi.
Re: Synology DS416 unbricking
July 02, 2022 04:07PM
Sorry I got that in reverse :) Let me update the post above.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 02, 2022 04:26PM
OK, there are 5 tests in updated post above. Please recycle power and do each.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 03, 2022 02:58PM
Here you go.

1st test
Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> tftpboot 0x2000000 zImage.5
al_eth0 Waiting for PHY auto negotiation to complete....... done
*** ERROR: `ipaddr' not set
ALPINE_DB> dhcp
BOOTP broadcast 1
BOOTP broadcast 2
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB> tftpboot 0x2000000 zImage.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage.5'.
Load address: 0x2000000
Loading: T #################################################################
         #################################################################
         ############################
         398.4 KiB/s
done
Bytes transferred = 2307368 (233528 hex)
ALPINE_DB> bootm 0x2000000
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-3.2.40
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2307304 Bytes = 2.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

2nd test

Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> tftpboot 0x2000000 zImage.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage.5'.
Load address: 0x2000000
Loading: T #################################################################
         #################################################################
         ############################
         399.4 KiB/s
done
Bytes transferred = 2307368 (233528 hex)
ALPINE_DB> tftpboot 0x8000000 rd.bin.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'rd.bin.5'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         #################################################################
         #################################################################
         #####
         624 KiB/s
done
Bytes transferred = 3882271 (3b3d1f hex)
ALPINE_DB> bootm 0x2000000 0x8000000
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-3.2.40
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2307304 Bytes = 2.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 08000000 ...
   Image Name:   synology_alpine4k_ds416 5644
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3882207 Bytes = 3.7 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

3rd test
Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete...... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> tftpboot 0x2000000 zImage.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage.5'.
Load address: 0x2000000
Loading: T #################################################################
         #################################################################
         ############################
         399.4 KiB/s
done
Bytes transferred = 2307368 (233528 hex)
ALPINE_DB> tftpboot 0x8000000 rd.bin.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'rd.bin.5'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         #################################################################
         #################################################################
         #####
         625 KiB/s
done
Bytes transferred = 3882271 (3b3d1f hex)
ALPINE_DB> tftpboot 0x10000000 alpine-db.dtb
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'alpine-db.dtb'.
Load address: 0x10000000
Loading: T #
         0 Bytes/s
done
Bytes transferred = 2555 (9fb hex)
ALPINE_DB> bootm 0x2000000 0x8000000 0x10000000
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-3.2.40
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2307304 Bytes = 2.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 08000000 ...
   Image Name:   synology_alpine4k_ds416 5644
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    3882207 Bytes = 3.7 MiB
   Load Address: 08000000
   Entry Point:  08000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 10000000
   Booting using the fdt blob at 0x10000000
   Loading Kernel Image ... OK
   Loading Ramdisk to 037cf000, end 03b82cdf ... OK
   Loading Device Tree to 037cb000, end 037ce9fa ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/refclk.clock-frequency!
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/sbclk.clock-frequency!
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/nbclk.clock-frequency!
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/cpuclk.clock-frequency!
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart0.clock-frequency!
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart1.clock-frequency!
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart2.clock-frequency!
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart3.clock-frequency!
ft_board_setup_feature_disable: setting /soc/pcie-external0.status to disabled
ft_board_setup_feature_disable: unable to set /soc/pcie-external0.status!
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
ft_board_setup_feature_disable: unable to set /soc/pcie-external2.status!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/al-fabric.io_coherency to 1
ft_board_setup_prop_u32_set: unable to set /soc/al-fabric.io_coherency!

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

4th test skipped, commands same as 2nd

5th test
Press Ctrl+C to abort autoboot in 3 second
ALPINE_DB> dhcp
al_eth0 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.0.0.236
ALPINE_DB> setenv bootargs console=ttyS0,115200 earlyprintk=serial
ALPINE_DB> tftpboot 0x2000000 zImage.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'zImage.5'.
Load address: 0x2000000
Loading: T #################################################################
         #################################################################
         ############################
         399.4 KiB/s
done
Bytes transferred = 2307368 (233528 hex)
ALPINE_DB> tftpboot 0x8000000 rd.bin.5
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'rd.bin.5'.
Load address: 0x8000000
Loading: T #################################################################
         #################################################################
         #################################################################
         #################################################################
         #####
         624 KiB/s
done
Bytes transferred = 3882271 (3b3d1f hex)
ALPINE_DB> tftpboot 0x10000000 alpine-db.dtb
Using al_eth0 device
TFTP from server 10.0.0.17; our IP address is 10.0.0.236
Filename 'alpine-db.dtb'.
Load address: 0x10000000
Loading: T #
         0 Bytes/s
done
Bytes transferred = 2555 (9fb hex)
ALPINE_DB> bootm 0x2000000 - 0x10000000
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-3.2.40
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2307304 Bytes = 2.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 10000000
   Booting using the fdt blob at 0x10000000
   Loading Kernel Image ... OK
   Loading Device Tree to 03b7f000, end 03b829fa ... OK
ft_board_setup_clock: setting /soc/clocks/refclk.clock-frequency to 100000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/refclk.clock-frequency!
ft_board_setup_clock: setting /soc/clocks/sbclk.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/sbclk.clock-frequency!
ft_board_setup_clock: setting /soc/clocks/nbclk.clock-frequency to 800000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/nbclk.clock-frequency!
ft_board_setup_clock: setting /soc/arch-timer.clock-frequency to 50000000 Hz
ft_board_setup_clock: setting /cpus/cpu@0.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@1.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@2.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /cpus/cpu@3.clock-frequency to 1400000000 Hz
ft_board_setup_clock: setting /soc/clocks/cpuclk.clock-frequency to 1400000000 Hz
ft_board_setup_clock: unable to set /soc/clocks/cpuclk.clock-frequency!
ft_board_setup_clock: setting /soc/uart0.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart0.clock-frequency!
ft_board_setup_clock: setting /soc/uart1.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart1.clock-frequency!
ft_board_setup_clock: setting /soc/uart2.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart2.clock-frequency!
ft_board_setup_clock: setting /soc/uart3.clock-frequency to 375000000 Hz
ft_board_setup_clock: unable to set /soc/uart3.clock-frequency!
ft_board_setup_feature_disable: setting /soc/pcie-external0.status to disabled
ft_board_setup_feature_disable: unable to set /soc/pcie-external0.status!
ft_board_setup_feature_disable: setting /soc/pcie-external2.status to disabled
ft_board_setup_feature_disable: unable to set /soc/pcie-external2.status!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I/O CC forced to 1!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ft_board_setup_prop_u32_set: setting /soc/al-fabric.io_coherency to 1
ft_board_setup_prop_u32_set: unable to set /soc/al-fabric.io_coherency!

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Re: Synology DS416 unbricking
July 03, 2022 03:31PM
mesnyder1,

Is zImage.5 the stock kernel file for this box that you've backed up at one point? or you did get it from Synology website?

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Synology DS416 unbricking
July 03, 2022 05:29PM
mesnyder1,

I've uploaded the new armv7 kernel with Alpine configured in:

https://forum.doozan.com/read.php?2,132510

You don't need to install. Use these 2 files to prepare the kernel file to run tftp test.

zImage-5.18.6-armv7-tld-3 
linux-dtb-5.18.6-armv7-tld-3.tar


On a Linux box, download the tarball and extract the files and also extract the DTB tarball linux-dtb-5.18.6-armv7-tld-3.tar (the alpine DTB is in it).

cp -a zImage-5.18.6-armv7-tld-3 zImage.fdt
cat alpine-db.dtb >> zImage.fdt
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-5.18.6-armv7-tld-3 -d zImage.fdt  uImage

Use this uImage to boot with tftp.

setenv bootargs console=ttyS0,115200 earlyprintk=serial
tftpboot 0x2000000 uImage
bootm 0x2000000

-bodhi
===========================
Forum Wiki
bodhi's corner
Author:

Your Email:


Subject:


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.
Message: