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!