diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp
index e2ec0c699..38799d58d 100644
--- a/src/modules/AdminModule.cpp
+++ b/src/modules/AdminModule.cpp
@@ -190,7 +190,7 @@ bool AdminModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshta
     }
     case meshtastic_AdminMessage_enter_dfu_mode_request_tag: {
         LOG_INFO("Client is requesting to enter DFU mode.\n");
-#ifdef ARCH_NRF52
+#if defined(ARCH_NRF52) || defined(ARCH_RP2040)
         enterDfuMode();
 #endif
         break;
diff --git a/src/platform/rp2040/main-rp2040.cpp b/src/platform/rp2040/main-rp2040.cpp
index 1d7f8fe70..3359263e9 100644
--- a/src/platform/rp2040/main-rp2040.cpp
+++ b/src/platform/rp2040/main-rp2040.cpp
@@ -35,4 +35,9 @@ void rp2040Setup()
        Taken from CPU cycle counter and ROSC oscillator, so should be pretty random.
     */
     randomSeed(rp2040.hwrand32());
+}
+
+void enterDfuMode()
+{
+    reset_usb_boot(0, 0);
 }
\ No newline at end of file