qian - since it works with 2.32.0, the hardware is most likely fine and all four modules are color sensors.
In DepthAI v3, explicitly set the sensor type to color for each camera before building it. So instead of directly doing pipeline.create(dai.node.Camera).build(socket), create the camera node first, call setSensorType(dai.CameraSensorType.COLOR), then call build(socket), and then request the BGR888p output.
The behavior changed in v3 because the new unified Camera node relies more on the detected or declared sensor type. On OAK-FFC-4P, ports B and C may otherwise be treated as mono by default, so v3 needs the color type to be specified explicitly for those sockets.
You can also try running cam_test.py like this:
python cam_test.py --cameras cama,c camb,c camc,c camd,c