diff --git a/arduino-ide-extension/src/browser/boards/boards-service-provider.ts b/arduino-ide-extension/src/browser/boards/boards-service-provider.ts
index e1951962e..65842eca3 100644
--- a/arduino-ide-extension/src/browser/boards/boards-service-provider.ts
+++ b/arduino-ide-extension/src/browser/boards/boards-service-provider.ts
@@ -409,14 +409,16 @@ export class BoardsServiceProvider
   }
 
   async selectedBoardUserFields(): Promise<BoardUserField[]> {
-    if (!this._boardsConfig.selectedBoard || !this._boardsConfig.selectedPort) {
+    if (!this._boardsConfig.selectedBoard) {
       return [];
     }
     const fqbn = this._boardsConfig.selectedBoard.fqbn;
     if (!fqbn) {
       return [];
     }
-    const protocol = this._boardsConfig.selectedPort.protocol;
+    // Protocol must be set to `default` when uploading without a port selected:
+    // https://arduino.github.io/arduino-cli/dev/platform-specification/#sketch-upload-configuration
+    const protocol = this._boardsConfig.selectedPort?.protocol || 'default';
     return await this.boardsService.getBoardUserFields({ fqbn, protocol });
   }
 
diff --git a/arduino-ide-extension/src/browser/contributions/user-fields.ts b/arduino-ide-extension/src/browser/contributions/user-fields.ts
index 445fdc480..195ab07da 100644
--- a/arduino-ide-extension/src/browser/contributions/user-fields.ts
+++ b/arduino-ide-extension/src/browser/contributions/user-fields.ts
@@ -66,10 +66,8 @@ export class UserFields extends Contribution {
     }
     const address =
       boardsConfig.selectedBoard?.port?.address ||
-      boardsConfig.selectedPort?.address;
-    if (!address) {
-      return undefined;
-    }
+      boardsConfig.selectedPort?.address ||
+      '';
     return fqbn + '|' + address;
   }