Quantcast
Channel: Linux Device Hacking
Viewing all articles
Browse latest Browse all 3247

Synology DS416 unbricking (2 replies)

$
0
0
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!

Viewing all articles
Browse latest Browse all 3247

Trending Articles