U-Boot doesn't recognize mPCI-e to SATA converter


#1

I tried to follow the instruction for connecting 2.5" ssd to the router via mpcie<->sata converter. I bought this one:
https://ru.aliexpress.com/item/PCIe-Mini-PCI-e-2-SATA-3-0/32862630444.html
I’ve soldered the power cable and it definitely works, I tried to power an ssd with it from the router while the disk is connected to the pc via sata cable. In that case the disk is working. But when I tried to plug the disk with the converted into the router (I tried left and right mpcie slots) nothing happens. However, the green led on the converter blinks once when the disk is connected to it.
In addition to switching slots I’ve also tried different sata cables (which work in my pc), even tried different disks, but nothing helped. Tough luck!

I don’t have any other device with minipcie slot so I cannot guarantee that the converted is not broken. However, that led blink on sata connection makes me think that it’s not completely broken at least.

Could I forget something? I’d be glad if you share your thoughts on that. Thanks!

P.S. pin 43 is not connected to anything on this converter. Actually the converter looks same to the ‘recommended’ converter for nas.


#2

Can you tell if the router sees your converter?

You can check that using dmesg from a terminal session. Either ssh or a TTY cable.


#3

Nope, it doesn’t see the converter. Nothing changes in the logs when the adapter is in comparing to the boot without it.


#4

If one SATA-port is enough you can use a passive SATA adapter. I use a Startech MSAT2SAT3 adapter and a JMB575 5x-port-multiplier to connect four HDDs.


#5

I provided slightly incorrect information. The disk doesn’t appear only when rescueboot'ed, however it works just fine when booted normally:

root@turris:/tmp/sda1/@/boot# dmesg|grep -i sda
[29.735168] BTRFS: device label omnia devid 1 transid 75 /dev/sda1
[51.019389] BTRFS info (device sda1): disk space caching is enabled

Here is what is NOT working. I tried to change environment with

setenv bootargs 'earlyprintk console=ttyS0,115200 rootfstype=btrfs rootwait root=/dev/sda1 rootflags=subvol=@,commit=5 rw'
setenv bootcmd 'i2c dev 1; i2c read 0x2a 0x9 1 0x00FFFFF0; setexpr.b rescue *0x00FFFFF0; if test $rescue -ge 1; then echo BOOT RESCUE; run rescueboot; else echo BOOT eMMC FS; run scsiboot; fi'
setenv scsiboot 'setenv bootargs "$bootargs cfg80211.freg=$regdomain"; scsi scan; btrload scsi 0:1 0x01000000 boot/zImage @; btrload scsi 0:1 0x02000000 boot/dtb @; bootz 0x01000000 - 0x02000000'
saveenv
boot

but that lead me to the following messages in the console via UART:

U-Boot 2015.10-rc2 (Aug 18 2016 - 20:43:35 +0200), Build: jenkins-omnia-master-23

SoC:   MV88F6820-A0
       Watchdog enabled
I2C:   ready
SPI:   ready
DRAM:  2 GiB (ECC not enabled)
Enabling Armada 385 watchdog.
Disabling MCU startup watchdog.
Regdomain set to **
MMC:   mv_sdh: 0
SF: Detected S25FL164K with page size 256 Bytes, erase size 64 KiB, total 8 MiB
PCI:
  00:01.0     - 168c:002e - Network controller
PCI:
  01:00.0     - 11ab:6820 - Memory controller
  01:01.0     - 168c:003c - Network controller
PCI:
  02:00.0     - 11ab:6820 - Memory controller
  02:01.0     - 1b21:0612 - Mass storage controller
Model: Marvell Armada 385 GP
Board: Turris Omnia SN: 0000000B00001146
Regdomain set to **
SCSI:  MVEBU SATA INIT
SATA link 0 timeout.
SATA link 1 timeout.
AHCI 0001.0000 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
flags: 64bit ncq led only pmp fbss pio slum part sxs 
Net:   neta2
Hit any key to stop autoboot:  0 
Setting bus to 1
BOOT eMMC FS
scanning bus for devices...
Found 0 device(s).
** Bad device scsi 0 **
** Bad device scsi 0 **
Kernel image @ 0x1000000 [ 0x000000 - 0x689b30 ]
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree

So I reverted the changes for now (I think, these commands must be added to the wiki here: https://doc.turris.cz/doc/en/howto/omnia_booting_from_external_storage):

setenv bootargs 'earlyprintk console=ttyS0,115200 rootfstype=btrfs rootdelay=2 root=b301 rootflags=subvol=@,commit=5 rw'
setenv bootcmd 'i2c dev 1; i2c read 0x2a 0x9 1 0x00FFFFF0; setexpr.b rescue *0x00FFFFF0; if test $rescue -ge 1; then echo BOOT RESCUE; run rescueboot; else echo BOOT eMMC FS; run mmcboot; fi'

editenv scsiboot -> delete the string and hit enter

savenev

Actually, scsi scan in u-boot says:

scanning bus for devices...
Found 0 device(s).

is it possible to fix it somewhow with the converter I have or it wouldn’t work with Omnia’s u-boot?


#6

The easiest solution for me was to use hard drive connected via that connector as an extroot device. In such role it works quite well.