Pi-top[3] with CM4toPi3 board

I’ve fitted the pi-top[3] with a CM4toPi3 adapter board, basically cut a CM4 sided hole in the base!

The piTop OS and Raspberry Pi OS Bullseye (fkms) both startup however I can’t get the keyboard or touchpad to work - any ideas?

External usb keyboard and mouse work.

I’m following a similar approach as OP as I also want to ‘transplant’ a CM4 into my Pi-top[3].

Also hit the issue with USB not working on CM4.
CM4 has two USB controllers DWC and XHCI
In order to get USB running on a CM4 (as it’s disabled by default) one needs to configure one or the other controller, i.e.

In Pi-top OS the DWC get used for ethernet gadget, is this corect understanding?
What is this needed for and how can it be fully disabled for use on Pi-top[3]. Already tried deleting that module from cmdline.txt without success.

Started testing with https://www.waveshare.com/product/raspb … acce-a.htm. Board starts to boot but will not turn on display. Can see the background image for the flick of a second then the screen get’s turned off. Not figured out the root cause yet. xrandr shows HDMI as connected but not luck to tun it on (even tried adding new modes).

Then used https://www.waveshare.com/product/raspb … dapter.htm. Unscrewed the Pi-top Hub to allow it to connect to the CM4 carrier board as there is not enough clearance underneath the board.
With a stock Raspberry Pi Bullseye OS the board will start but there is no USB functionality for keyboard/touchpad (as reported by rpiMike as well) - surprisingly a USB Wifi stick is working on the internal USB-A connector on the Pi-Top hub 2.0 (note the USB cable or the picture)

To put keyboard/touch in operation the config.txt needs to be changed to use the DWC2 USB controller: dtoverlay=dwc2,dr_mode=host

Bullyeye uses XHCI controller by default so that one needs to be disabled


So here are some more pictures of my SteroidPi-top [3] - which is running latest 5.15.61 64-bit Raspberry Bullseye OS now

Cut a hole in the bottom of the Pi-Top chassis. USB connectors were cut out from their position. Used a sharp knife and cut careful from the outside. Wanted to use a different CM4 carrier board first which only has USB sockets at the center position.

Milled a plate from 1.0mm GFK to cover the hole. Fixed in position by double sided adhesive. The CM4 mounting holes were use for aligning it.

Hole closed again. Cover does not protrude.

Thought the cooler is of no use as it’s not touching the SOC. When compiling the Linux kernel I’ve noted throttling of the SOC and decided to attach it again (now with M2.5 screws instead of rivets)
To make the cooler touch the Waveshare PCB two layers of 1.5mm TIM were added (sorry, did not measure the actual gap size; simply scherzend them in)

The cooler is now touching the board (no components in that position luckily and aids in cooling the device.
Warning: it’s getting warm to the touch when running on full load!

This looks absolutely amazing. I’m wondering… before I go down the same “hot knife” rabbit hole, have you considered using spacers to raise both the rail, and the pi hub in order to avoid having to cut the shell?

Raising the board is not possible (from my experience) because :

  • USB FPC is glued to rear chassis, so will not raise (that’s one reason why I cut it out)
  • spacer will raise the board, but you will not be able to close the keyboard because the bridge PCB will collide with the underside of the keyboard (tried that, that’s why I drilled the rivets to allow for removing the cooler -> did not work out).

Need to say that this was a side project for me only, so didn’t want to spend to much time on it.

Made some more testimg with the other waveshare board (where the CM4 sits on top and there is no need for cutting the chassis because of that). The on-board HDMI drives the display correct, the one from the adapter board did fail at different FFC lenghts. So stopped testing with that board although I still consider it as the nicer build (sure, more internal changes required).

Be sure to run below commands when you’re up for using a Raspberry Bullseye OS

> echo "deb http://apt.pi-top.com/pi-top-os sirius main contrib non-free" | sudo tee /etc/apt/sources.list.d/pi-top.list &> /dev/null
> curl https://apt.pi-top.com/pt-apt.asc | sudo apt-key add
> sudo apt update
> sudo apt install --no-install-recommends -y pt-device-manager

Found some time to mill and mount the antenna holder.

Antenna socket gets mounted from here.

Top view. Note the two magnets used from the innovator kit.

Mounted on the chassis rails - detail view