geerlingguy / raspberry-pi-pcie-devices

Raspberry Pi PCI Express device compatibility database
http://pipci.jeffgeerling.com
GNU General Public License v3.0
1.59k stars 144 forks source link

Test SATA adapter (I/O Crest 4 port Marvell 9215) #1

Closed geerlingguy closed 3 years ago

geerlingguy commented 4 years ago

6by9 on the Pi Forums mentioned:

For those wanting to know about PCI-e compatibility, I have one here with a Pericom PI7C9X 1 to 3 way PCI-e bridge, and Marvell 9215 4 port SATA card connected to that. (My VL805 USB3 card is still to be delivered). With a couple of extra kernel modules enabled (mainly CONFIG_ATA, and CONFIG_SATA_AHCI) it's the basis of my next NAS.

<24W with a pair of 8TB SATA drives spinning and a 240GB SSD. <10W with the spinning rust in standby.

I bought this I/O Crest 4 Port SATA III PCIe card and would like to see if I can get a 4-drive RAID array going:

DSC_2840

Relevant Links:

elFarto commented 3 years ago

The only technical reason I can think of is to get the correct block alignment for drives that have a 4k native sector size and a 512b logical block size (and SSDs where you want to align to the erase block size). But this isn't a requirement, it'll just slow the drives down a little bit if they're not aligned.

Because the wasted space due to alignment is usually greater than that of partitioning, and partitioning has other advantages, you might as well partition them.

geerlingguy commented 3 years ago

@elFarto - It seemed like that was the most compelling universal reason—though the note about some motherboards (and chipsets, I presume) having trouble with unpartitioned block devices made me nervous enough to recommend always partitioning before RAIDing.

paulwratt commented 3 years ago

disk block i/o sizes have been verified to play a part in slowdowns, especially (but not only) with SSD's. A proper pre-partition just means the start of each partition is on whatever the block size boundry is the minimum offered by the device. (Apparently windows can not properly align the first partition, other partitions are fine).

okket commented 3 years ago

FYI: Here are my configuration options for Samba to make it faster interacting with a macOS client. It has been a while since I researched this topic, but I remember that plain Samba performance was abysmal, esp. with large directories. The xattr stuff seems to help a lot.

[global]
        min protocol = SMB2 
        ea support = yes
        vfs objects = catia fruit streams_xattr acl_xattr shadow_copy2 
        fruit:metadata = stream
        fruit:model = MacPro
        fruit:posix_rename = yes 
        fruit:veto_appledouble = no
        fruit:wipe_intentionally_left_blank_rfork = yes 
        fruit:delete_empty_adfiles = yes

[TimeMachine]
        path = <path>
        browseable = yes
        writeable = yes
        read only = no
        create mask = 0600
        directory mask = 0700
        spotlight = yes
        vfs objects = catia fruit streams_xattr
        fruit:time machine = yes
        fruit:time machine max size = <size in TB> T
        valid users = <usernames>
geerlingguy commented 3 years ago

Video is here: I built the fastest Raspberry Pi SATA RAID NAS!.

geerlingguy commented 3 years ago

Closing issues where testing is at least mostly complete, to keep the issue queue tidy.

jamesy0ung commented 3 years ago

Hey Jeff this is not working for me. I compiled the latest kernel, copied it over and booted it fine without the card. When I decompiled the device tree blob to do the bar patch, I get these errors

root@buster:/mnt/pi-fat32# dtc -I dtb -O dts bcm2711-rpi-cm4.dtb -o test.dts test.dts: Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name test.dts: Warning (unit_address_vs_reg): /soc/axiperf: node has a reg or ranges property, but no unit name test.dts: Warning (unit_address_vs_reg): /soc/gpiomem: node has a reg or ranges property, but no unit name test.dts: Warning (unit_address_vs_reg): /emmc2bus: node has a reg or ranges property, but no unit name test.dts: Warning (unit_address_vs_reg): /scb: node has a reg or ranges property, but no unit name test.dts: Warning (unit_address_vs_reg): /v3dbus: node has a reg or ranges property, but no unit name test.dts: Warning (pci_device_reg): /scb/pcie@7d500000/pci@1,0: PCI unit address format error, expected "0,0" test.dts: Warning (avoid_unnecessary_addr_size): /soc/firmware: unnecessary #address-cells/#size-cells without "ranges" or child "reg" property test.dts: Warning (unique_unit_address): /soc/mmc@7e300000: duplicate unit-address (also used in node /soc/mmcnr@7e300000) test.dts: Warning (unique_unit_address): /soc/firmwarekms@7e600000: duplicate unit-address (also used in node /soc/smi@7e600000) test.dts: Warning (clocks_property): /symbols:clocks: property size (21) is invalid, expected multiple of 4 test.dts: Warning (gpios_property): /aliases:gpio: property size (19) is invalid, expected multiple of 4 test.dts: Warning (gpios_property): /symbols:gpio: property size (19) is invalid, expected multiple of 4

root@buster:/mnt/pi-fat32# dtc -I dts -O dtb test.dts -o test.dtb test.dtb: Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name test.dtb: Warning (unit_address_vs_reg): /soc/axiperf: node has a reg or ranges property, but no unit name test.dtb: Warning (unit_address_vs_reg): /soc/gpiomem: node has a reg or ranges property, but no unit name test.dtb: Warning (unit_address_vs_reg): /emmc2bus: node has a reg or ranges property, but no unit name test.dtb: Warning (unit_address_vs_reg): /scb: node has a reg or ranges property, but no unit name test.dtb: Warning (unit_address_vs_reg): /v3dbus: node has a reg or ranges property, but no unit name test.dtb: Warning (pci_device_reg): /scb/pcie@7d500000/pci@1,0: PCI unit address format error, expected "0,0" test.dtb: Warning (avoid_unnecessary_addr_size): /soc/firmware: unnecessary #address-cells/#size-cells without "ranges" or child "reg" property test.dtb: Warning (unique_unit_address): /soc/mmc@7e300000: duplicate unit-address (also used in node /soc/mmcnr@7e300000) test.dtb: Warning (unique_unit_address): /soc/firmwarekms@7e600000: duplicate unit-address (also used in node /soc/smi@7e600000) test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 1 is not a phandle reference test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 3 is not a phandle reference test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 5 is not a phandle reference test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 7 is not a phandle reference test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 9 is not a phandle reference test.dtb: Warning (clocks_property): /soc/cprman@7e101000:clocks: cell 11 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/mmc@7e202000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2s@7e203000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e204000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2c@7e205000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dpi@7e208000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dpi@7e208000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dsi@7e209000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dsi@7e209000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dsi@7e209000:clocks: cell 4 is not a phandle reference test.dtb: Warning (clocks_property): /soc/aux@7e215000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e215040:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e215080:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e2150c0:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/pwm@7e20c000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hvs@7e400000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dsi@7e700000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dsi@7e700000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/dsi@7e700000:clocks: cell 4 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2c@7e804000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/vec@7e806000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/usb@7e980000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/watchdog@7e100000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/watchdog@7e100000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/watchdog@7e100000:clocks: cell 4 is not a phandle reference test.dtb: Warning (clocks_property): /soc/watchdog@7e100000:clocks: cell 6 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201400:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201400:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201600:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201600:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201800:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201800:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201a00:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/serial@7e201a00:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e204600:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e204800:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e204a00:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/spi@7e204c00:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2c@7e205600:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2c@7e205800:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2c@7e205a00:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/i2c@7e205c00:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/pwm@7e20c800:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/clock@7ef00000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef00700:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef00700:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef00700:clocks: cell 4 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef00700:clocks: cell 6 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef05700:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef05700:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef05700:clocks: cell 4 is not a phandle reference test.dtb: Warning (clocks_property): /soc/hdmi@7ef05700:clocks: cell 6 is not a phandle reference test.dtb: Warning (clocks_property): /soc/mmc@7e300000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/mmcnr@7e300000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/smi@7e600000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/csi@7e800000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/csi@7e800000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /soc/csi@7e801000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /soc/csi@7e801000:clocks: cell 2 is not a phandle reference test.dtb: Warning (clocks_property): /emmc2bus/emmc2@7e340000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /v3dbus/v3d@7ec04000:clocks: cell 0 is not a phandle reference test.dtb: Warning (clocks_property): /symbols:clocks: property size (21) is invalid, expected multiple of 4 test.dtb: Warning (dmas_property): /soc/mmc@7e202000:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/i2s@7e203000:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/i2s@7e203000:dmas: cell 2 is not a phandle reference test.dtb: Warning (dmas_property): /soc/spi@7e204000:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/spi@7e204000:dmas: cell 2 is not a phandle reference test.dtb: Warning (dmas_property): /soc/hdmi@7ef00700:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/hdmi@7ef05700:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/mmc@7e300000:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/mmcnr@7e300000:dmas: cell 0 is not a phandle reference test.dtb: Warning (dmas_property): /soc/smi@7e600000:dmas: cell 0 is not a phandle reference test.dtb: Warning (mboxes_property): /soc/firmware:mboxes: cell 0 is not a phandle reference test.dtb: Warning (msi_parent_property): /scb/pcie@7d500000:msi-parent: cell 0 is not a phandle reference test.dtb: Warning (phys_property): /soc/usb@7e980000:phys: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /soc/dsi@7e209000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /soc/dsi@7e700000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /soc/vec@7e806000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /soc/usb@7e980000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /soc/csi@7e800000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /soc/csi@7e801000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /scb/xhci@7e9c0000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (power_domains_property): /v3dbus/v3d@7ec04000:power-domains: cell 0 is not a phandle reference test.dtb: Warning (resets_property): /soc/hdmi@7ef00700:resets: cell 0 is not a phandle reference test.dtb: Warning (resets_property): /soc/hdmi@7ef05700:resets: cell 0 is not a phandle reference test.dtb: Warning (resets_property): /scb/pcie@7d500000/pci@1,0/usb@1,0:resets: cell 0 is not a phandle reference test.dtb: Warning (resets_property): /v3dbus/v3d@7ec04000:resets: cell 0 is not a phandle reference test.dtb: Warning (thermal_sensors_property): /thermal-zones/cpu-thermal:thermal-sensors: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /aliases:gpio: property size (19) is invalid, expected multiple of 4 test.dtb: Warning (gpios_property): /soc/serial@7e201000/bluetooth:shutdown-gpios: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /soc/spi@7e204000:cs-gpios: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /soc/spi@7e204000:cs-gpios: cell 3 is not a phandle reference test.dtb: Warning (gpios_property): /soc/serial@7e215040/bluetooth:shutdown-gpios: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /leds/act:gpios: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /leds/pwr:gpios: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /sd_io_1v8_reg:gpios: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /sd_vcc_reg:gpio: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /cam1_reg:gpio: cell 0 is not a phandle reference test.dtb: Warning (gpios_property): /symbols:gpio: property size (19) is invalid, expected multiple of 4

I tried the compiled dtb and it instantly errored out, giving me an kernal panic because of asynchronous serror interrupt. With the original dtb, it boots fine, but I get the asynchronous serror interrupt if no sata drives are plugged in. WIth drive plugged in, the card does not work either presumably because of bar space. Here is the entries in dmesg

[ 1.247086] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges: [ 1.249747] brcm-pcie fd500000.pcie: No bus range found for /scb/pcie@7d500000, using [bus 00-ff] [ 1.252416] brcm-pcie fd500000.pcie: MEM 0x0600000000..0x063fffffff -> 0x00c0000000 [ 1.255082] brcm-pcie fd500000.pcie: IB MEM 0x0000000000..0x00ffffffff -> 0x0400000000 [ 1.577589] brcm-pcie fd500000.pcie: link down

What should I do?

stamaali4 commented 3 years ago

@geerlingguy Thanks for a detailed writeup...

I am trying to recompile to the kernel to enable SATA Support on IO Crest 4 Port MARVELL 9215 to use it with Raspberry Pi CM4 using UBUNTU 20.04 .

I tried the exact same steps mentioned; however the disks are not detected.... I am giving the try again now as I missed the steps mentioned for increasing the BAR Address(i did see the BAR Address spaces errors in dmesg) space for PCIe.... wanted to check with you(I am a novice in linux) if the steps that you shared applicable for Ubuntu 20.04 or are they specific to Raspbian OS (Buster)... if they are specific to BUSTER can you please share the changes in the above steps for Ubuntu OS 20.4 .... additional details are mentioned below.

  1. output of uname -a: Linux cvbkpgtw 5.4.0-1035-raspi #38-Ubuntu SMP PREEMPT Tue Apr 20 21:37:03 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux

  2. output of lspci -vv 00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2711 (rev 20) (prog-if 00 [Normal decode]) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 43 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00000000-00000fff [size=4K] Memory behind bridge: f8000000-f80fffff [size=1M] Prefetchable memory behind bridge: [disabled] Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: Kernel driver in use: pcieport

01:00.0 SATA controller: Marvell Technology Group Ltd. Device 9215 (rev 11) (prog-if 01 [AHCI 1.0]) Subsystem: Marvell Technology Group Ltd. Device 9215 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx- Interrupt: pin A routed to IRQ 0 Region 0: I/O ports at 0000 Region 1: I/O ports at 0000 Region 2: I/O ports at 0000 Region 3: I/O ports at 0000 Region 4: I/O ports at 0000 Region 5: Memory at 600040000 (32-bit, non-prefetchable) [size=2K] Expansion ROM at 600000000 [size=256K] Capabilities:

  1. output of os-release: cvadmin@cvbkpgtw:~$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.2 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal

  2. Raspberry Pi CM4 - 4GB RAM and 32GB eMMC with IO Board

  3. Connected 4 SATA Drives - 1 SSD 240GB(Seagate) & 3 HDDx2TB(Seagate)

  4. Booting from eMMC

Please let me know if further details are need, thanks for your help in advance....

App-Teck commented 3 years ago

Hey , i didnt get this par while config the SATA: "nano .config

(edit CONFIG_LOCALVERSION and add a suffix that helps you identify your build)

Build the kernel and copy everything into place"

I got in nano .config at line : "CONFIG_LOCALVERSION="-v7l""
but where to add the commands: below? Thanks for your he;lp "make -j4 zImage modules dtbs # 'Image' on 64-bit sudo make modules_install sudo cp arch/arm/boot/dts/.dtb /boot/ sudo cp arch/arm/boot/dts/overlays/.dtb* /boot/overlays/ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/ sudo cp arch/arm/boot/zImage /boot/$KERNEL.img"

Appreciate your help.

l0gical commented 3 years ago

Save yourself the time and effort, the latest Kernel includes SATA straight out of the box:

https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/176#issuecomment-889848314 Read near the bottom

BeauSlim commented 3 years ago

Since google might land you here, like it did me on a search for "cm4 ubuntu sata", the latest development version Ubuntu Impish Indri has SATA support. Simply "sudo apt install linux-modules-extra-raspi" and then "modprobe ahci" or reboot.

push-gh commented 3 years ago

Since google might land you here, like it did me on a search for "cm4 ubuntu sata", the latest development version Ubuntu Impish Indri has SATA support. Simply "sudo apt install linux-modules-extra-raspi" and then "modprobe ahci" or reboot.

Thanks. I saw that the required kernel configs were enabled in the kernel config file, but didn't find them in the modules directory. I thought an issue with the distribution and was going to compile the kernel. I didn't know that the extra modules are delivered as a separate package. fortunately I found your comment.

stamaali4 commented 3 years ago

Thanks @BeauSlim for the inputs, today i tested the card with Ubuntu Impish Indri and got all the 4 drives detected; however i see repeated errors mentioned below and troubleshooting them now;

[ 788.484701] sd 0:0:0:0: [sda] Synchronizing SCSI cache [ 788.484925] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK [ 788.484954] sd 0:0:0:0: [sda] Stopping disk [ 788.485013] sd 0:0:0:0: [sda] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK [ 788.879084] ata2.15: SATA link down (SStatus 0 SControl 320) [ 790.521329] ata2.15: failed to read PMP GSCR[0] (Emask=0x100) [ 790.521374] ata2.15: PMP revalidation failed (errno=-5)

If you know anything about the errors and suggest what to look at would be of great help...

BeauSlim commented 3 years ago

[ 788.484701] sd 0:0:0:0: [sda] Synchronizing SCSI cache [ 788.484925] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK [ 788.484954] sd 0:0:0:0: [sda] Stopping disk [ 788.485013] sd 0:0:0:0: [sda] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK [ 788.879084] ata2.15: SATA link down (SStatus 0 SControl 320) [ 790.521329] ata2.15: failed to read PMP GSCR[0] (Emask=0x100) [ 790.521374] ata2.15: PMP revalidation failed (errno=-5)

Yeah, this Pi SATA stuff is definitely a bit tricky. Googling errors will get you a lot of people saying "your drive is dead", but I bet if you plug that card into a PC, everything will work perfectly even under heavy load.

I don't have a 9215. I have a Marvell 9230 and a JMicron 585. The 9230 card runs well aside from a lack of any way to change the RAID config.

PMP seems to be referring to a port multiplier? Are your 4 drives in an external enclosure? If so, I'd try connecting drives directly. If not, definitely try different cables.

If I push my JMB585 with 4 or 5 drives in a stripe or software RAID 10, it gives me a bunch of errors, but they are mostly "failed command: READ FPDMA QUEUED" which is different from yours. Adding "extraargs=libata.force=noncq" to my cmdline.txt solves that but hurts SATA performance. For other libata.force options to try (like using SATA I speeds), see https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html

You might also try adding "extraargs=pcie_aspm=off" to your cmdline.txt to turn off PCIe power management.

There is probably a firmware update for your card that you could try.

stamaali4 commented 3 years ago

Thanks @BeauSlim for your inputs; yes i have 4 drives in an IOCRest external enclosure. Definitely drives are not dead as i have tested them with RADXA QUADSATA HAT and they work fine in it will try turning off PCIe power management option & also try different set of cables and update with results.

l0gical commented 3 years ago

"You might also try adding "extraargs=pcie_aspm=off" to your cmdline.txt to turn off PCIe power management."

I may also try this, my 9215 works absolutely fine with 3x SATA 8TB Drives, the only issue I get occasionally is the drive power down/up sound and a couple of the disks change from say SDA/SDC to SDD/SDE, it does however break OMV when that happens.

mi-hol commented 2 years ago

The 9230 card runs well aside from a lack of any way to change the RAID config.

Does this mean, there is no CLI to enable/change hardware RAID modes?

BeauSlim commented 2 years ago

The 9230 card runs well aside from a lack of any way to change the RAID config.

Does this mean, there is no CLI to enable/change hardware RAID modes?

That is correct. The Marvell hardware RAID config (MRU) is available only for x86/x64 processors.

You can put the card into a Windows or Linux PC, connect the disks you plan to use, configure RAID, and then move the card to your Pi setup. You might even be able to have a 9230-based card in the PC and just move the disks since the RAID config is stored on the drives themselves, not on the card.

This is probably fine if you just wanted to use striping or Hyperduo SSD caching, but if you want redundancy you will have no indication that a mirror has failed.

mi-hol commented 2 years ago

I'm testing an ASM1061R based controller basically identical with these Setup is identical to your description below

put the card into a Windows or Linux PC, connect the disks you plan to use, configure RAID, and then move the card to your Pi setup. You might even be able to have a 9230-based card in the PC and just move the disks since the RAID config is stored on the drives themselves, not on the card.

Issue:

if you want redundancy you will have no indication that a mirror has failed.

is affecting my controller too and was even confirmed by distributor's technical support in this FAQ "Question: I did not find a way to get a alert if a disk in a raid-1 set fails. the controller does not even stop the POST processes when a disk failed. I would expected that some RED blinking WARNING comes up or something and the PC only continues the POST if the degraded raid status gets committed. Documentation is very very poor..

Answer: Hello Kalle, thanks for your request. We're are sorry, that's the way this product works. Kind regrads InLine Support Team"

@geerlingguy should such severe limitations not be documented in the "Raspberry Pi PCI Express device compatibility database" ?

geerlingguy commented 1 year ago

Testing on the Raspberry Pi 5:

pi@pi5:~ $ lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0000:01:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller (rev 11)
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0001:01:00.0 Ethernet controller: Device 1de4:0001

pi@pi5:~ $ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    1 223.6G  0 disk 
├─sda1        8:1    1   200M  0 part 
└─sda2        8:2    1 223.4G  0 part 
mmcblk0     179:0    0 119.1G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot
└─mmcblk0p2 179:2    0 118.8G  0 part /

At PCIe Gen 2.0, I'm getting some link errors—but otherwise the card seems to pass through clean-ish at least:

[   47.906098] ata1: softreset failed (device not ready)
[   48.382111] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[   48.387657] ata1.00: ATA-10: KINGSTON SA400S37240G, SBFKB1D2, max UDMA/133
[   48.390106] ata1.00: 468862128 sectors, multi 1: LBA48 NCQ (depth 32), AA
[   48.394334] ata1.00: configured for UDMA/133
[   48.394449] scsi 0:0:0:0: Direct-Access     ATA      KINGSTON SA400S3 B1D2 PQ: 0 ANSI: 5
[   48.394861] sd 0:0:0:0: [sda] 468862128 512-byte logical blocks: (240 GB/224 GiB)
[   48.394875] sd 0:0:0:0: [sda] Write Protect is off
[   48.394878] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   48.394896] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   48.394920] sd 0:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[   48.425872] sd 0:0:0:0: Attached scsi generic sg0 type 0
[   48.458218] ata1.00: exception Emask 0x10 SAct 0x600000 SErr 0x380000 action 0x6 frozen
[   48.458227] ata1.00: irq_stat 0x08000000, interface fatal error
[   48.458229] ata1: SError: { 10B8B Dispar BadCRC }
[   48.458234] ata1.00: failed command: READ FPDMA QUEUED
[   48.458237] ata1.00: cmd 60/10:a8:00:00:00/00:00:00:00:00/40 tag 21 ncq dma 8192 in
                        res 40/00:b0:10:00:00/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
[   48.458244] ata1.00: status: { DRDY }
[   48.458246] ata1.00: failed command: READ FPDMA QUEUED
[   48.458248] ata1.00: cmd 60/10:b0:10:00:00/00:00:00:00:00/40 tag 22 ncq dma 8192 in
                        res 40/00:b0:10:00:00/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
[   48.458253] ata1.00: status: { DRDY }
[   48.458258] ata1: hard resetting link
[   48.934105] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[   53.982112] ata1.00: qc timeout after 5000 msecs (cmd 0xec)
[   53.982130] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[   53.982135] ata1.00: revalidation failed (errno=-5)
[   53.982143] ata1: hard resetting link
[   54.458109] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[   54.459118] ata1.00: configured for UDMA/133
[   54.459157] ata1: EH complete
[   54.490108] ata1: limiting SATA link speed to 3.0 Gbps
[   54.490113] ata1.00: exception Emask 0x10 SAct 0x6000000 SErr 0x380000 action 0x6 frozen
[   54.490117] ata1.00: irq_stat 0x08000000, interface fatal error
[   54.490120] ata1: SError: { 10B8B Dispar BadCRC }
[   54.490126] ata1.00: failed command: READ FPDMA QUEUED
[   54.490130] ata1.00: cmd 60/10:c8:00:00:00/00:00:00:00:00/40 tag 25 ncq dma 8192 in
                        res 40/00:d0:10:00:00/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
[   54.490139] ata1.00: status: { DRDY }
[   54.490143] ata1.00: failed command: READ FPDMA QUEUED
[   54.490146] ata1.00: cmd 60/10:d0:10:00:00/00:00:00:00:00/40 tag 26 ncq dma 8192 in
                        res 40/00:d0:10:00:00/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
[   54.490154] ata1.00: status: { DRDY }
[   54.490160] ata1: hard resetting link
[   54.966104] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   54.966147] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x100)
[   54.966150] ata1.00: revalidation failed (errno=-5)
[   60.126109] ata1: hard resetting link
[   60.602105] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   65.758102] ata1.00: qc timeout after 5000 msecs (cmd 0xec)
[   65.758117] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[   65.758120] ata1.00: revalidation failed (errno=-5)
[   65.758128] ata1: limiting SATA link speed to 1.5 Gbps
[   65.758132] ata1: hard resetting link
[   66.234102] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[   66.234338] ata1.00: configured for UDMA/133
[   66.234363] ata1: EH complete
[   66.278102] ata1.00: exception Emask 0x10 SAct 0x2 SErr 0x300000 action 0x6 frozen
[   66.278106] ata1.00: irq_stat 0x08000000, interface fatal error
[   66.278108] ata1: SError: { Dispar BadCRC }
[   66.278112] ata1.00: failed command: READ FPDMA QUEUED
[   66.278114] ata1.00: cmd 60/10:08:90:44:f2/00:00:1b:00:00/40 tag 1 ncq dma 8192 in
                        res 40/00:08:90:44:f2/00:00:1b:00:00/40 Emask 0x10 (ATA bus error)
[   66.278121] ata1.00: status: { DRDY }

I think the PCIe issues are down to the FFC cable and PCIe interference :(

geerlingguy commented 1 year ago

I have some questions in to Raspberry Pi surrounding SATA support, and PCIe link quality. It seems like both cards I've tested run into some errors (more so than I get with NVMe...).

SorX14 commented 10 months ago

Got my hands on a Pimoroni NVMe base and used a M.2 to PCIe adapter.

Please excuse the sketchy setup - just wanted to quickly test.

image
$ lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0000:01:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller (rev 11)
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0001:01:00.0 Ethernet controller: Device 1de4:0001

And connected 4 drives (these are old HDDs that have various partitions on):

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    1 698.6G  0 disk
└─sda1        8:1    1 698.6G  0 part /mnt/sda
sdb           8:16   1 698.6G  0 disk
└─sdb1        8:17   1 698.6G  0 part /mnt/sdb
sdc           8:32   1 111.8G  0 disk
├─sdc1        8:33   1   512M  0 part
├─sdc2        8:34   1   513M  0 part
├─sdc3        8:35   1     1K  0 part
└─sdc5        8:37   1 110.8G  0 part /mnt/sdc
sdd           8:48   1 465.8G  0 disk
└─sdd1        8:49   1 465.8G  0 part
mmcblk0     179:0    0  58.9G  0 disk
├─mmcblk0p1 179:1    0   512M  0 part /boot/firmware
└─mmcblk0p2 179:2    0  58.4G  0 part /

And successfully mounted all except sdd which seems to be a dead HDD (although looking at the pic in retrospect the SATA cable doesn't look to be fully seated 🤷 )

$ dmesg
...
[  778.260800] ata4.00: exception Emask 0x0 SAct 0x20 SErr 0x0 action 0x0
[  778.260807] ata4.00: irq_stat 0x40000008
[  778.260811] ata4.00: failed command: READ FPDMA QUEUED
[  778.260813] ata4.00: cmd 60/20:28:00:08:00/00:00:00:00:00/40 tag 5 ncq dma 16384 in
                        res 51/40:20:00:08:00/00:00:00:00:00/40 Emask 0x409 (media error) <F>
[  778.260822] ata4.00: status: { DRDY ERR }
[  778.260825] ata4.00: error: { UNC }
[  778.263264] ata4.00: configured for UDMA/133
[  778.263278] sd 3:0:0:0: [sdd] tag#5 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=DRIVER_OK cmd_age=3s
[  778.263283] sd 3:0:0:0: [sdd] tag#5 Sense Key : 0x3 [current]
[  778.263286] sd 3:0:0:0: [sdd] tag#5 ASC=0x11 ASCQ=0x4
[  778.263290] sd 3:0:0:0: [sdd] tag#5 CDB: opcode=0x28 28 00 00 00 08 00 00 00 20 00
[  778.263294] I/O error, dev sdd, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 2 prio class 2
[  778.263299] Buffer I/O error on dev sdd, logical block 128, async page read
[  778.263303] Buffer I/O error on dev sdd, logical block 129, async page read
[  778.263347] ata4: EH complete
[  781.644815] ata4.00: exception Emask 0x0 SAct 0x800 SErr 0x0 action 0x0
[  781.644822] ata4.00: irq_stat 0x40000008
...

Running pibenchmark yields the following in hardware identification:

...
Drives:
  Local Storage: total: 1.99 TiB used: 447.45 GiB (22.0%)
  ID-1: /dev/mmcblk0 model: USD00 size: 58.94 GiB
  ID-2: /dev/sda vendor: Western Digital model: WD7500BPKT-80PK4T0 size: 698.64 GiB
  ID-3: /dev/sdb vendor: Western Digital model: WD7500BPVT-22HXZT1 size: 698.64 GiB
  ID-4: /dev/sdc vendor: Samsung model: SSD 850 EVO 120GB size: 111.79 GiB
  ID-5: /dev/sdd vendor: Hitachi model: HTS725050A9A362 size: 465.76 GiB
  Message: No optical or floppy data found.
...

sda results: https://pibenchmarks.com/benchmark/76956/ sdb results: https://pibenchmarks.com/benchmark/76955/ sdc results: https://pibenchmarks.com/benchmark/76957/ sdd results: DNQ

I then ran two benchmarks in parallel on sda and sdc which both completed (didn't submit results).

All this to say that I think this card now works as expected. I was using the default PCIe link speed.

jamesy0ung commented 4 months ago

For anyone looking to use this card on a CM4IO, I designed a bracket for it that keeps in in place, so it doesn't get loose and cause a system lockup.

https://www.printables.com/model/789947-cm4-si-pex40064-bracket/related

zogthegreat commented 1 month ago

Hi everyone!

I just installed a ASMedia ASM1064 4 Port SATA III Card onto a P02 PCIe Adapter Board and it was detected immediately upon boot:

pi@NAS-Pi:~ $ lspci 0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21) 0000:01:00.0 SATA controller: ASMedia Technology Inc. ASM1064 Serial ATA Controller (rev 02) 0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21) 0001:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge

However, I can't seem to get the Pi to see the drive that I have plugged into it. Should I recompile the kernel or am I having a different problem?

[EDIT]

checking my logs, I see messages for the AHCI controller being unavailable:

pi@NAS-Pi:~ $ journalctl -p 0..3 -r Sep 09 18:07:45 NAS-Pi bluetoothd[811]: sap-server: Operation not permitted (1) Sep 09 18:07:45 NAS-Pi bluetoothd[811]: profiles/sap/server.c:sap_server_register() Sap driver initialization failed. Sep 09 18:07:45 NAS-Pi wpa_supplicant[819]: nl80211: kernel reports: Registration to specific type not supported Sep 09 18:07:44 NAS-Pi bluetoothd[811]: src/plugin.c:plugin_init() Failed to init bap plugin Sep 09 18:07:44 NAS-Pi bluetoothd[811]: src/plugin.c:plugin_init() Failed to init mcp plugin Sep 09 18:07:44 NAS-Pi bluetoothd[811]: src/plugin.c:plugin_init() Failed to init vcp plugin Sep 09 18:07:43 NAS-Pi kernel: ahci 0000:01:00.0: AHCI controller unavailable! Sep 09 18:07:43 NAS-Pi kernel: ahci 0000:01:00.0: AHCI controller unavailable! Sep 09 18:07:43 NAS-Pi kernel: ahci 0000:01:00.0: AHCI controller unavailable! Sep 09 18:07:43 NAS-Pi kernel: ahci 0000:01:00.0: AHCI controller unavailable! Sep 09 18:07:43 NAS-Pi kernel: ahci 0000:01:00.0: AHCI controller unavailable! Sep 09 18:07:43 NAS-Pi kernel: ahci 0000:01:00.0: AHCI controller unavailable!

pi@NAS-Pi:~ $ dmesg | grep -iC 3 "sata" [ 3.274371] ahci 0000:01:00.0: enabling device (0000 -> 0002) [ 3.285683] ahci 0000:01:00.0: SSS flag set, parallel bus scan disabled [ 3.296822] input: pwr_button as /devices/platform/pwr_button/input/input1 [ 3.305594] ahci 0000:01:00.0: AHCI 0001.0301 32 slots 24 ports 6 Gbps 0xffff0f impl SATA mode [ 3.316329] ahci 0000:01:00.0: flags: 64bit ncq sntf stag pm led only pio slum part deso sadm sds apst [ 3.333651] scsi host0: ahci [ 3.336915] scsi host1: ahci [ 3.439277] scsi host23: ahci [ 3.439597] ata1: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082100 irq 166 [ 3.481783] ata2: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082180 irq 166 [ 3.489888] ata3: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082200 irq 166 [ 3.497997] ata4: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082280 irq 166 [ 3.506108] ata5: DUMMY [ 3.508687] ata6: DUMMY [ 3.511266] ata7: DUMMY [ 3.513841] ata8: DUMMY [ 3.516433] ata9: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082500 irq 166 [ 3.524587] ata10: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082580 irq 166 [ 3.532858] ata11: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082600 irq 166

........... repeated entries cut ..................

[ 7.022355] ata1: found unknown device (class 0) [ 7.027240] ata1: SATA link down (SStatus 0 SControl 300) [ 7.344795] ata2: SATA link down (SStatus 0 SControl 300) [ 8.048127] ata3: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 8.312022] ahci 0000:01:00.0: AHCI controller unavailable! [ 8.607207] ahci 0000:01:00.0: AHCI controller unavailable! [ 15.715690] ata4: failed to resume link (SControl FFFFFFFF) [ 20.351100] ata4: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 22.093865] ahci 0000:01:00.0: AHCI controller unavailable! [ 22.678491] ahci 0000:01:00.0: AHCI controller unavailable! [ 30.655706] ata9: failed to resume link (SControl FFFFFFFF) [ 35.291184] ata9: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 37.035697] ahci 0000:01:00.0: AHCI controller unavailable! [ 37.620200] ahci 0000:01:00.0: AHCI controller unavailable! [ 45.599690] ata10: failed to resume link (SControl FFFFFFFF) [ 50.235158] ata10: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 51.977983] ahci 0000:01:00.0: AHCI controller unavailable! [ 52.562453] ahci 0000:01:00.0: AHCI controller unavailable! [ 60.539690] ata11: failed to resume link (SControl FFFFFFFF) [ 65.175161] ata11: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 66.918030] ahci 0000:01:00.0: AHCI controller unavailable! [ 67.502519] ahci 0000:01:00.0: AHCI controller unavailable! [ 75.479691] ata12: failed to resume link (SControl FFFFFFFF) [ 80.115143] ata12: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 81.857942] ahci 0000:01:00.0: AHCI controller unavailable!

........... repeated entries cut ..................

[ 146.630318] EXT4-fs (mmcblk0p2): mounted filesystem 56f80fa2-e005-4cca-86e6-19da1069914d ro with ordered data mode. Quota mode: none. [ 147.524517] Segment Routing with IPv6 [ 147.528371] In-situ OAM (IOAM) with IPv6 [ 150.183706] ata17: failed to resume link (SControl FFFFFFFF) [ 154.819196] ata17: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 156.562033] ahci 0000:01:00.0: AHCI controller unavailable! [ 157.146544] ahci 0000:01:00.0: AHCI controller unavailable! [ 165.123702] ata18: failed to resume link (SControl FFFFFFFF) [ 169.759219] ata18: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 171.502060] ahci 0000:01:00.0: AHCI controller unavailable! [ 172.086531] ahci 0000:01:00.0: AHCI controller unavailable! [ 180.063689] ata19: failed to resume link (SControl FFFFFFFF) [ 184.699163] ata19: SATA link down (SStatus FFFFFFFF SControl FFFFFFFF) [ 186.441985] ahci 0000:01:00.0: AHCI controller unavailable!

........... repeated entries cut ..................

[ 261.141938] ahci 0000:01:00.0: AHCI controller unavailable! [ 261.173976] systemd[1]: systemd 252.30-1~deb12u2 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified) [ 261.207586] systemd[1]: Detected architecture arm64.

PixlRainbow commented 1 month ago

@zogthegreat

SATA link down

I wonder if that might be the drive having trouble powering on? Is it being powered from an external PSU?

zogthegreat commented 1 month ago

Yes, but I used an SSD, so I can't really tell if the drive is powering up. I'll use a normal SATA drive tomorrow, and try again with a different PSU and buck converters. I'll post my results.

zogthegreat commented 1 month ago

I retried today with an ATX PSU to power the drive. I used a normal SATA HDD so that I could feel if it was spinning. The drive was sort of seen:

3.864156] ata24: SATA max UDMA/133 abar m8192@0x1b00082000 port 0x1b00082c80 irq 168 [ 7.002270] ata1: found unknown device (class 0) [ 7.007153] ata1: SATA link down (SStatus 0 SControl 300)

But I think that my problem is here:

pi@NAS-Pi:~ $ dmesg | grep -iC 3 "sata" [ 3.584292] ahci 0000:01:00.0: version 3.0 [ 3.584315] ahci 0000:01:00.0: enabling device (0000 -> 0002) [ 3.590658] ahci 0000:01:00.0: SSS flag set, parallel bus scan disabled [ 3.597727] ahci 0000:01:00.0: AHCI 0001.0301 32 slots 24 ports 6 Gbps 0xffff0f impl SATA mode [ 3.606772] ahci 0000:01:00.0: flags: 64bit ncq sntf stag pm led only pio slum part deso sadm sds

The card that I am using only has 4 ports, yet for some reason the Pi is seeing 24 ports. I'm going to see if there are any drivers or maybe a source code available.

zogthegreat commented 1 month ago
> # Build the kernel and copy everything into place
> make -j4 zImage modules dtbs # 'Image' on 64-bit
> sudo make modules_install
> sudo cp arch/arm/boot/dts/*.dtb /boot/
> sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
> sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
> sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

@geerlingguy I'm trying to compile the kernel as you described. However, when I get to "sudo cp arch/arm/boot/dts/*.dtb /boot/" I get an error:

pi@NAS-Pi:~/linux $ sudo cp arch/arm/boot/dts/*.dtb /boot/
cp: cannot stat 'arch/arm/boot/dts/*.dtb': No such file or directory

Any suggestions?

[EDIT]

Here is what's in my arch/arm/boot/dts directory after compiling:

pi@NAS-Pi:~/linux $ ls arch/arm/boot/dts
actions     arm           cirrus                     hisilicon  microchip  overlays  sigmastar  tps6507x.dtsi  xilinx
airoha      armv7-m.dtsi  cnxt                       hpe        moxa       qcom      socionext  tps65217.dtsi
allwinner   aspeed        cros-adc-thermistors.dtsi  intel      nspire     realtek   st         tps65910.dtsi
alphascale  axis          cros-ec-keyboard.dtsi      Makefile   nuvoton    renesas   sunplus    unisoc
amazon      broadcom      cros-ec-sbs.dtsi           marvell    nvidia     rockchip  synaptics  vt8500
amlogic     calxeda       gemini                     mediatek   nxp        samsung   ti         xen
6by9 commented 1 month ago
> # Build the kernel and copy everything into place
> make -j4 zImage modules dtbs # 'Image' on 64-bit
> sudo make modules_install
> sudo cp arch/arm/boot/dts/*.dtb /boot/
> sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
> sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
> sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

@geerlingguy I'm trying to compile the kernel as you described. However, when I get to "sudo cp arch/arm/boot/dts/*.dtb /boot/" I get an error:

pi@NAS-Pi:~/linux $ sudo cp arch/arm/boot/dts/*.dtb /boot/
cp: cannot stat 'arch/arm/boot/dts/*.dtb': No such file or directory

Any suggestions?

Docs from Raspberry Pi on building the kernel are at https://www.raspberrypi.com/documentation/computers/linux_kernel.html#native-build Between 6.1 and 6.6 all the Broadcom DT files for arm32 moved into arch/arm/boot/dts/broadcom. The copy command has to be updated to match, and is in the Pi docs. (arm64 DT files have always been in arch/arm/64/boot/dts/broadcom).

I'm fairly certain that the relevant modules for the Marvell SATA cards are enabled in the default Pi kernels, so there is no need to rebuild the kernel yourself for that reason.