Radxa CM3 + Radxa CM3IO Board ( No PCIe / SATA )

Hello there my fellow CM3 users,

I am struggling with a problem when attempting to get the PCIe or SATA to report anything back to linux.

I am currently running the Radxa CM3 4GB with 32GB eMMC @ 1.8GHz on the Radxa CM3IO board.
I have installed " [ radxa-cm3-io_ubuntu_jammy-test_kde_test-build-1.img.xz " which is available from -

https://github.com/radxa-build/radxa-cm3-io/releases/download/test-build-1/radxa-cm3-io_ubuntu_jammy-test_kde_test-build-1.img.xz

I have also tried older Debian and Ubuntu builds and unfortunately it is the same problem

I try and use “lspci” and it instantly returns to the CLI prompt

I downloaded and installed “lshw” ( list hardware )

LSHW
radxa@radxa-cm3-io:~$ sudo lshw
radxa-cm3-io
description: Computer
product: Radxa Compute Module 3(CM3) IO Board
serial: 1459167c5a3c00d6
width: 64 bits
capabilities: smp cp15_barrier setend swp tagged_addr_disabled
*-core
description: Motherboard
physical id: 0
*-cpu:0
description: CPU
product: cpu
physical id: 0
bus info: cpu@0
size: 1800MHz
capacity: 1800MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp cpufreq
*-cpu:1
description: CPU
product: cpu
physical id: 1
bus info: cpu@1
size: 1800MHz
capacity: 1800MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp cpufreq
*-cpu:2
description: CPU
product: cpu
physical id: 2
bus info: cpu@2
size: 1800MHz
capacity: 1800MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp cpufreq
*-cpu:3
description: CPU
product: cpu
physical id: 3
bus info: cpu@3
size: 1800MHz
capacity: 1800MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp cpufreq
*-cpu:4 DISABLED
description: CPU
product: idle-states
physical id: 4
bus info: cpu@4
*-memory
description: System memory
physical id: 5
size: 3741MiB

This then continues to list USB hosts / devices / MCC0/1 / Network and Input devices

Despite devices ( 60GB / 120GB SSD ) attached to either the SATA I cannot see block devices

LSBLK
Disk devices
radxa@radxa-cm3-io:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 68.5M 1 loop /snap/core22/861
loop1 7:1 0 4K 1 loop /snap/bare/5
loop2 7:2 0 464.7M 1 loop /snap/gnome-42-2204/127
loop3 7:3 0 11.7M 1 loop /snap/snap-store/963
loop4 7:4 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop5 7:5 0 46.4M 1 loop /snap/snapd/19459
loop6 7:6 0 59.3M 1 loop /snap/core20/2019
loop7 7:7 0 57.9M 1 loop /snap/z88dk/4601
loop8 7:8 0 900K 1 loop /snap/indicator-sensors/316
mmcblk1 179:0 0 29.1G 0 disk
├─mmcblk1p1 179:1 0 16M 0 part /config
├─mmcblk1p2 179:2 0 300M 0 part /boot/efi
└─mmcblk1p3 179:3 0 28.8G 0 part /
mmcblk1boot0 179:32 0 4M 1 disk
mmcblk1boot1 179:64 0 4M 1 disk
zram0 254:0 0 1.8G 0 disk [SWAP]

Unfortunately only the installed eMMC is present to the system

I also installed a USB3.0 PCIe x1 Adaptor Card, this adaptor works fin and infacts allows booting on the Raspberry Pi CM4+RPIO

However this simply doesn’t present its self to the HOST

I have also tried installing a PCIe x1 Switch ( granting 3 PCIe switched ports ), again this works with the RPI CM4 + RPIO Board, however this is not discovered when attempting to list the PCIe

Sadly “LSPCI” lists nothing and returns to the CLI prompt

I have tried earlier Debian / CLI and Ubuntu builds and the result is the same. However with one of these earlier build it is noted that when booting the “PCIe Link is down” is mentioned

Obviously I have attached inspected the connectors and re-attached the CM3 to the CM3IO board still the same problem.

Any thoughts would be appreciated, thanks for reading.

Z.

Hello There,

So a little update using an older Debian XFCE4 build.

I installed a Generic PCIe x1 NVMe adapter and a 256GB Silicon Power NVMe SSD here are the results -

Neofetch
radxa@radxa-cm3-io:~/Downloads$ neofetch
radxa@radxa-cm3-io
OS: Debian GNU/Linux 11 (bullseye) aarch64
Host: Radxa CM3 IO
Kernel: 4.19.193-2-rk356x
Uptime: 41 mins
Packages: 1050 (dpkg)
Shell: bash 5.1.4
Resolution: 1920x1080
DE: Xfce 4.16
WM: Xfwm4
WM Theme: Default
Theme: Xfce [GTK2]
Icons: Tango [GTK2]
Terminal: xfce4-terminal
Terminal Font: Monospace 12
CPU: Radxa CM3 IO (4) @ 1.800GHz
Memory: 1109MiB / 3746MiB

LSPCI
radxa@radxa-cm3-io:~/Downloads$ lspci
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)

This is new, and only presents itself when you install an adaptor card.

LSBLK
radxa@radxa-cm3-io:~/Downloads$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk1 179:0 0 14.8G 0 disk
├─mmcblk1p1 179:1 0 16M 0 part /config
└─mmcblk1p2 179:2 0 14.8G 0 part /
mmcblk0 179:32 0 29.1G 0 disk
├─mmcblk0p1 179:33 0 16M 0 part
├─mmcblk0p2 179:34 0 300M 0 part
└─mmcblk0p3 179:35 0 28.8G 0 part
mmcblk0boot0 179:64 0 4M 1 disk
mmcblk0boot1 179:96 0 4M 1 disk
zram0 254:0 0 1.8G 0 disk [SWAP]
nvme0n1 259:0 0 238.5G 0 disk

As we can see the 256GB NVMe disk is seen in LSBLK

Hmm we can test is with gnome-disk-utility

Gnome-Disks
Device : 256 GB Disk — SPCC M.2 PCIe SSD [VC2S038D] (/dev/nvme0n1)
Sample Size : 10.0 MiB (10,485,760 bytes)
Avg Read Rate : 422.8 MB/s (100 samples)
Avg Write Rate : 59.3 MB/s (100 samples)
Avg Access Time : 0.09 msec (1000 samples)

While not super fantastic transmission speed per-say… especially the write rate, we have response from the PCIe so that is a WIN.

I followed this up with tests on the SATA ports - sadly I couldn’t get any response in either of them.

Sadly LSBLK didn’t report them nor where any seen on thePCIe bus.

The “SATA 3.0” function is exclusive to other functions (PCIE20 / USB3.0) at the SOC-RK3566 level.
“Radxa: CM3IO Board” is assigned as follows

USB30_EN_L: USB3.0 / SATA-1 (combphy1)
PCIE_EN_L: PCIE20 / SATA-2 (combphy2)

GPIO3_C6: I2S1_MCLK_M1 -> PCIE_EN_L
GPIO3_C7: I2S1_SCLK_TX_M1 -> USB30_EN_L

If you select SATA-1, you will not be able to use USB3.0.
If you select SATA-2, you will not be able to use PCIE20.

And the switching signals are assigned to “GPIO3_C6” / “GPIO3_C7” respectively.
This means that the “I2S1” functionality provided by the generic 40-pin connector is virtually unusable.

General-purpose GPIO, such as switching selection signals, must have had many other choice. (For example, SATA_ACT_LED etc…)
I question the designer’s sense as to why they chose such a stupid design.

@t4_4t

Thank you for the reply, I truly appreciate it.

I did in fact try setting the GPIO_C6 and C7 respectively and sadly I cannot get any response to a formatted SSD connected to either SATA connector.

I did try the above and followed the “Getting Started Guide”

Getting Started - [ Linked Removed from Radxa com - Getting Started ]

PCIe Slot

There is one PCIe x1 slot on the IO board, supporting 5.0Gbps. The PCIe function is shared with SATA1, a 1in->2out mux CH482D is used for function switching to PCIe or SATA1. GPIO3_C6 is used for the route select, When GPIO3_C6 is low, signal route to PCIe, when GPIO3_C6 is high, signal route to SATA1.

The PCIe on the CM3 meets PCIe 2.1 specification and support one lane and Root Complex mode only. PCIe slot power is directly from +12V DC, make sure the power supply can provide enough current for the PCIe card.

SATA1&2

IO board has two SATA ports compatible with Serial ATA 3.3 and AHCI Revision 1.3.1, SATA 1 is shared with USB 3.0 and SATA 2 is shared with PCIe, set the corresponding signal route to use it. Connector U28 can be used for SATA power, the +12V of U28 is directly from the +12V DC, make sure the power supply can provide enough current for the HDD.

USING SATA on the Radxa CM3 + CM3IO Board

A simple over view is as follows -

USB3.0 ( 5.0 Gbps )

1. Shared with SATA2 
2. GPIO_C7 is used for Route Select
	2a GPIO_C7 = LOW	Route to USB 3.0
	2b GPIO_C7 = HIGH	Route to SATA02

PCIe ( 5.0 Gbps )

1. Shared with SATA 1
2. GPIO_C6 is used for Route Select
	2a GPIO_C6 = LOW	Route to PCIe
	2b GPIO_C6 = HIGH	Route to SATA01

So for my project I need SATA and USB 3.0

SET 01 - ( USB3.0 + SATA1 )

	GPIO_C6 = HIGH
	GPIO_C7 = LOW

	SATA 01	= ACTIVE
	PCIe = INACTIVE

	SATA 02 = INACTIVE
	USB3.0 = ACTIVE

Now following the GPIO pinout - Linked Removed from Radxa Wiki GPIO

Pin 22 - GPIO3_C6 : Connected to Pin 2 - +5v ( HIGH )
Pin 12 - GPIO3_C7 : Connected to Pin 14 - Ground ( LOW )

However this configuration simply does not assert the SATA1 ( or SATA2 ) and no device is discoverd by “LSBLK”

I have tried several builds dating from March 2023 to the latest Test Builds ( 1 & 2 )

Radxa Rleases - [ Linked Removed to Git hub page ]

Sadly no matter how hard or what efforts I haved tried tried I cannot get the CM3 + CM3IO board to recognize / see anything on either of the SATA connectors

SET 02 - ( PCIe + SATA2 )

GPIO_C6 = LOW
GPIO_C7 = HIGH

	SATA 01	= INACTIVE		
	PCIe = ACTIVE
	SATA 02 = ACTIVE		
	USB3.0 = INACTIVE

SET 03 - ( PCIe + USB3.0 )

GPIO_C6 = LOW
GPIO_C7 = LOW

	SATA 01	= INACTIVE		
	PCIe = ACTIVE
	SATA 02 = INACTIVE		
	USB3.0 = ACTIVE

SET 04 - ( PCIe + USB3.0 )

GPIO_C6 = HIGH
GPIO_C7 = HIGH

	SATA 01	= ACTIVE		
	PCIe = INACTIVE
	SATA 02 = ACTIVE		
	USB3.0 = INACTIVE

Sadly trying the above, again with different Debian releases from March 2023 I still couldn’t get any response from either SATA port on the CM3IO board.

So I am a little at a loss as to what to try next, if anyone has any ideas, I would appreciate it.

Thanks for reading

Z.

Pin 22 - GPIO3_C6 : Connected to Pin 2 - +5v ( HIGH )

You should stop it immediately.
Applying a voltage exceeding the absolute maximum rating will cause irreparable electrical damage.

In some cases, this can lead to damage not only to the I/O board but also to CM3.

@t4_t4

Thanks for the reply.

Unfortunately I am comming from a RPI CM4 background where +5v is HIGH - I couldn’t directly find contrary to this in any documentation of the CM3 + CM3IO IO board.

I did also try the +3.3v header ( PIN 1 ) sadly nothing resulted in a working SATA port.

Thanks for the heads up and time for reading my post.

Z.

Can anyone tell me how to set GPIO3_C6 to low on openwrt to enable pcie slot?