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.
  • Support Raspberry Pi Compute module 4.
  • Adopts ASM1184 controller, driver-free, plug-and-play.
  • Do Not directly plug it into 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.
  • This module is PCIe Gen 2 × 1 expansion, the speed limit is 5Gbps, and no matter how to expand, the speed will not exceed this limit.
  • The module is powered by 12V. When 12V cannot be provided, it can also be powered by 5V.
  • The maximum output current of each PCIe interface 3.3V power supply must be less than 1.5A.

Supported Device

Support list:clicks 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



Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)