Help Needed: Connecting P4Runtime Controller to UfiSpace S9180-32X (Tofino)

Hi everyone,

I’m currently working with a UfiSpace S9180-32X switch (Tofino-based) and trying to get a Python-based controller.py working over P4Runtime gRPC to manage the switch pipeline.

Current Setup:

Switch: UfiSpace S9180-32X (Tofino)

SDE: Barefoot Intel bf-sde-9.13.1

BSP: bf-platforms-ufispace-bsp-9.13.1.tgz (provided by STORDIS)

Pipeline: simple_forward (compiled: tofino.bin, context.json, bf-rt.json)

Controller: Python script using p4runtime_pb2, p4info_pb2, etc.

Protobufs: All required .proto files are compiled using grpc_tools.protoc, including p4types.proto and google/rpc/status.proto

What Works:

switchd launches successfully and loads the compiled pipeline.

run_switchd.sh confirms that all 4 pipes are initialized.

Controller can reach the switch via IP (ping works) and gRPC port is open.

/dev/bf0 exists and kernel modules are loaded.

Current Issue:

Despite all this, the controller fails to connect to the switch via gRPC and cannot push entries. I’ve verified IP-level connectivity and triple-checked the protobuf/gRPC code. On the switch side, I sometimes see platform errors like:

BF_PLTFM ERROR – Can’t write QSFP XX RST GPI

Which may or may not be related.

What I’ve Tried:

Rebuilding with updated BSP from STORDIS

Using both controller.py and example controllers (e.g., PI/P4Runtime shell)

Confirmed protobuf paths and gRPC generation steps

Contacted STORDIS (awaiting deeper insights)

What I’m Looking For:

Has anyone successfully connected a P4Runtime controller to a S9180-32X switch?

Are there any required configuration steps or common pitfalls (either on the switch or controller side)?

Is there a known working reference controller or setup for this hardware?

Any pointers, example setups, or insight would be deeply appreciated!

@AL-OTU

Have you installed a P4Runtime server/agent on your switch, such as Stratum or a custom-built P4Runtime server?