CM4 with MCUZone board, no USB port works

I’m trying to get a BPI CM4 to work with a POE_SSD carrier board from MCUZone / Hangzhou WildChip Tech. The board itself works, so does the ethernet but none of the USB ports works. MCUZone says, their board is 100% RPI-CM4 compatible and BPI says, their CM4 is 100% RPI-CM4 compatible minus the second DSI/HDMI port. I tried Debian, Ubuntu and Armbian as well as various USB devices and nothing works. Any ideas anyone?

Tried now also the Android image. Same issue. So either my CM4 is broken or it’s not pin to pin compatible with the RPI CM4. I ordered an “official” BPI baseboard now for testing.

hi, In fact, there is no way to make it 100% the same as the RPI, but most of the functions are fine. We have listed different PINs on the wiki. In addition, our official baseboard is 100% all functions can be used.

Banana Pi BPI-CM4 - Banana Pi Wiki (banana-pi.org)

1 Like

Yeah, I get that it’s hard to get 100% compatibility but USB is a very basic function and I have to say that if you cannot guarantee compatibility of such basic functions, you shouldn’t advertise it as “pin-to-pin compatible with Raspberry Pi CM4”. I have ordered now a BPi baseboard and will test with that - maybe my module is just broken, who knows…

If you say “our official baseboard is 100% all functions can be used.”, you haven’t understood the idea behind compute modules and making compatible compute modules. Making a compute module that only works 100% with your own baseboards makes that compute module pretty much useless unless you make a lot of different baseboards. Otherwise you can as well just make a monolithic SBC. The whole point of compatible compute modules is that they work with all kinds of different baseboards.

I chose your CM4 not only because RPi CM4s are hard to find at the moment. I chose it because the specs look perfect for a project I’m working on but that project requires a very small footprint baseboard.

Is this board schematic of usb part different with rpi official cm4io board? maybe you can upload the io board schematic and console debug message from power on.

I guess your io board is the same hardware design as waveshare-io-base-b How to make CM4 work with Waveshare CM4-IO-BASE-B, the schematic of waveshare-cm4-io-base-b is https://www.waveshare.com/w/upload/8/89/CM4-IO-BASE-B_V4_SchDoc.pdf, it’s different with official rpi cm4io board, it don’t have a hardware detect to switch from device to host mode, because this port is connect to a otg usb port of soc.

copy this overlay file otg-host.dtbo (354 Bytes) to /boot/overlays and apply it in /boot/env.txt

2 Likes

August,

that worked! Thank you so much! You rescued my project! That solution should definitely be in the Wiki!

This should be part of all official images.

Hi August, could you please tell me how I can activate the overlay file?

I’ve tried “dtoverlay=otg-host”, but it doesn’t work.

I am using Ubuntu 20.04.6 LTS

Thank you so much

edit /boot/env.txt

# Device Tree Overlays
#   uart1           -- Enable UART1 (uart_A, GPIO Header PIN8 & PIN10)
#   pwm_c           -- Enable PWM_C (GPIO Header PIN7)
#   i2c2            -- Enable i2c2 (GPIO Header PIN3 & PIN5)
#   spi0            -- Enable SPI0 (GPIO Header PIN19 & PIN21 & PIN23 & PIN24)
overlays="otg-host"
1 Like

Now it works. Thank you very much =)

So I had the same problem and the solution here wouldn’t work for me (using armbian). After trying for a bit and searching around I came up with the following solution (which is dead simple and easy to apply even for an Linux/armbian noob like me)

So In case anyone using armbian (In my case use the BPI-CM4 with the Waveshare CM4-IO-BASE-B for running klipper) Here is the solution:

Get the .dts file from here:

for backup here is the code in plain text - whenever needed make a new textfile “otg-hosts.dts” and save it:

Full credits to ‘C0rnelius’ in the above mentioned thread!

/dts-v1/;
/plugin/;

/ {
	compatible = "bananapi,bpi-cm4io", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b";

	fragment@0 {
		target = <&usb>;
		__overlay__ {
			dr_mode = "host";
		};
	};
};

copy it somewhere on your machine

run

sudo armbian-add-overlay otg-host.dts

reboot.

It works.

I guess it should work the same way for the MCUZone board, I read somewhere they both suffer the same “problem” (no connection for switching the controller from device mode to host mode)

  • cad435