From Waveshare Wiki
Jump to: navigation, search
PCIe TO M.2 (A)





Extended 4-Ch PCIe Gen 2 × 1 Expander, Stable Performance, Driver-Free


  • Extending 1-ch PCIe to 4-ch PCIe Gen 2 × 1 sockets, PCIe Gen 1 × 1 compatible.
  • Flexible power supply options: powered from either PCIe 12V, OR from 12V DC header.
  • Adopts ASM1184 controller, driver-free, plug and play.
  • Not allow direct plugging onto the PC motherboard.


  • When connecting to Compute Module 4 PoE 4G Board or the Compute Module 4 IO Board, no external power adapter is required.
  • This adapter does not require a driver when using it except the PCIe devices.
  • The module is powered by 12V. When 12V cannot be provided, it can also be powered by 5V.
  • Use 5V power supply, the power will flow back to the PCIe 12V, you need to ensure that it will not affect the normal operation of the motherboard and then use 5V power supply.
  • The maximum output current of each PCIe interface 3.3V power supply must be less than 1.5A.

Supported Device

Support list:click here
For other devices, you need to rebuild the kernel

Build Kernel

You can directly refer to:Click it

Ubuntu PC is required to build the kernel
Hereby environment:Ubuntu- :

Set in Ubuntu PC

Install dependencies

 sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

Install cross-compilation tools

 sudo apt install neovim
 wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

Add the line export PATH=$PATH:~/gcc-linaro/bin to .bashrc

nvim ~/.bashrc

Update the environment parameters

 source ~/.bashrc 

Clock the linux repo

 git clone --depth=1 https://github.com/raspberrypi/linux

Generate the .config file

 cd linux
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

Configure the file and add the driver

 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

Build the kernel

 make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

Configure Raspberry Pi
Set the password
 sudo su

Modify sshd_config file:

 sudo nano /etc/ssh/sshd_config

PermitRootLogin prohibit-password to #PermitRootLogin yes restart Raspberry Pi

 sudo reboot
Set in Ubuntu PC:
 sudo sshfs [email protected]:/ /mnt/pi-ext4
 sudo sshfs [email protected]:/boot /mnt/pi-fat32
 #192.168.x.x should be the IP of Raspberry Pi
 sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/mnt/pi-ext4 modules_install
 sudo cp arch/arm64/boot/Image /mnt/pi-fat32/kernel8.img
 sudo cp arch/arm64/boot/dts/broadcom/*.dtb /mnt/pi-fat32/
 sudo cp arch/arm64/boot/dts/overlays/*.dtb* /mnt/pi-fat32/overlays/
 sudo cp arch/arm64/boot/dts/overlays/README /mnt/pi-fat32/overlays/
 sudo apt install make

If you get the read: Connection reset by peer error, please detect the ssh public key and test it again

 ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.x.x
  #192.168.x.x should be the IP of the Raspberry Pi



If you require technical support, please go to the Support page and open a ticket.