UNIMPLEMENTED gRPC Error with P4Runtime Controller on UfiSpace Tofino (S9180-32X) – Need Help Verifying Compatibility

Hi everyone,

I’m currently working on a P4 development internship using a UfiSpace S9180-32X switch, which is based on the Tofino (Tofino 1) ASIC. I’m trying to run a real P4 network using this hardware, and I’ve run into a gRPC UNIMPLEMENTED error when my external P4Runtime controller attempts to push the pipeline.

Here’s my setup:

  • Switch: UfiSpace S9180-32X (Tofino 1)
  • SDE: bf-sde-9.13.1
  • P4 Program: basic_switching.p4 (compiled and launched using run_switchd.sh -p basic_switching)
  • Controller: Custom Python-based controller using the P4Runtime gRPC API (based on the official p4runtime_lib examples)
  • Switchd gRPC port: 50052 is open and reachable from the controller VM

The switch launches fine and bf_switchd appears healthy. But when the controller sends SetForwardingPipelineConfig, I get this:

gRPC Error: UNIMPLEMENTED

What I’ve Tried:

  • Confirmed switch and controller can ping each other.
  • Verified bf_switchd is running with the correct pipeline and config.
  • Used p4studio build basic_switching followed by run_switchd.sh.
  • Checked for active services on port 50052.

My Questions:

  1. Has anyone successfully used P4Runtime with UfiSpace (S9180-32X) switches and an external controller?
  2. Is there a known limitation or config requirement to enable P4Runtime support on this device?
  3. Do I need to use a specific profile or modify switch.conf to expose P4Runtime services?

I’ve reached out to STORDIS and UfiSpace but haven’t received a response yet, so I’d really appreciate any community insight.

Thanks in advance!