diff --git a/commands/board/list.go b/commands/board/list.go
index 1df56f696bc..5f68b25c1a5 100644
--- a/commands/board/list.go
+++ b/commands/board/list.go
@@ -22,6 +22,7 @@ import (
 	"fmt"
 	"io/ioutil"
 	"net/http"
+	"sync"
 
 	"github.com/arduino/arduino-cli/cli/globals"
 	"github.com/arduino/arduino-cli/commands"
@@ -33,6 +34,7 @@ import (
 var (
 	// ErrNotFound is returned when the API returns 404
 	ErrNotFound = errors.New("board not found")
+	m           sync.Mutex
 )
 
 func apiByVidPid(url string) ([]*rpc.BoardListItem, error) {
@@ -78,6 +80,9 @@ func apiByVidPid(url string) ([]*rpc.BoardListItem, error) {
 
 // List FIXMEDOC
 func List(instanceID int32) ([]*rpc.DetectedPort, error) {
+	m.Lock()
+	defer m.Unlock()
+
 	pm := commands.GetPackageManager(instanceID)
 	if pm == nil {
 		return nil, errors.New("invalid instance")