diff --git a/pw_rpc/raw/method.cc b/pw_rpc/raw/method.cc
index 0bff460..14ebfb3 100644
--- a/pw_rpc/raw/method.cc
+++ b/pw_rpc/raw/method.cc
@@ -21,25 +21,6 @@
 
 namespace pw::rpc::internal {
 
-void RawMethod::SynchronousUnaryInvoker(const CallContext& context,
-                                        const Packet& request) {
-  RawUnaryResponder responder(context.ClaimLocked());
-  rpc_lock().unlock();
-  // TODO(hepler): Remove support for raw synchronous unary methods. Unlike
-  //     synchronous Nanopb methods, they provide little value compared to
-  //     asynchronous unary methods. For now, just provide a fixed buffer on the
-  //     stack.
-  std::byte payload_buffer[64] = {};
-
-  StatusWithSize sws =
-      static_cast<const RawMethod&>(context.method())
-          .function_.synchronous_unary(
-              context.service(), request.payload(), span(payload_buffer));
-
-  responder.Finish(span(payload_buffer, sws.size()), sws.status())
-      .IgnoreError();
-}
-
 void RawMethod::AsynchronousUnaryInvoker(const CallContext& context,
                                          const Packet& request) {
   RawUnaryResponder responder(context.ClaimLocked());
diff --git a/pw_rpc/raw/public/pw_rpc/raw/internal/method.h b/pw_rpc/raw/public/pw_rpc/raw/internal/method.h
index 0ab0222..0d02d4a 100644
--- a/pw_rpc/raw/public/pw_rpc/raw/internal/method.h
+++ b/pw_rpc/raw/public/pw_rpc/raw/internal/method.h
@@ -115,10 +115,6 @@
   constexpr RawMethod(uint32_t id, Invoker invoker, Function function)
       : Method(id, invoker), function_(function) {}
 
-  static void SynchronousUnaryInvoker(const CallContext& context,
-                                      const Packet& request)
-      PW_UNLOCK_FUNCTION(rpc_lock());
-
   static void AsynchronousUnaryInvoker(const CallContext& context,
                                        const Packet& request)
       PW_UNLOCK_FUNCTION(rpc_lock());
