@@ -127,6 +127,7 @@ call. The format of the response is the following:
127127      "label":         <-- HOW THE PORT IS DISPLAYED ON THE GUI 
128128      "protocol":      <-- THE PROTOCOL USED BY THE BOARD 
129129      "protocolLabel": <-- HOW THE PROTOCOL IS DISPLAYED ON THE GUI 
130+       "hardwareId":    <-- A STRING THAT UNIQUELY IDENTIFIES A BOARD SAMPLE 
130131      "properties": { 
131132                       <-- A LIST OF PROPERTIES OF THE PORT 
132133      } 
@@ -147,7 +148,15 @@ Each port has:
147148  ` SSH on 192.168.10.100 ` )
148149-  ` protocol `  is the protocol identifier (such as ` serial `  or ` dfu `  or ` ssh ` )
149150-  ` protocolLabel `  is the ` protocol `  in human readable form (for example ` Serial port `  or ` DFU USB `  or ` Network (ssh) ` )
150- -  ` properties `  is a list of key/value pairs that represent information relative to the specific port
151+ -  ` hardwareId `  (optional) a string that uniquely identify a specific board sample (even among other boards of the same
152+   model). Different ports with the same ` hardwareId `  must belong to the same board sample. The identifier should be
153+   sufficiently long to uniquely identify the board sample and reduce the probability of collisions. Good examples of
154+   ` hardwareId `  values are: Ethernet MAC Address, USB Serial Number, CPU-ID number, etc.
155+ 
156+   This value ** should not**  be used to identify the board ** model**  (see the
157+   [ board identification] ( #board-identification )  section for more information about identification of the board model).
158+ 
159+ -  ` properties `  is a list of key/value pairs that represent information relative to the specific port.
151160
152161To make the above more clear let's show an example output from the ` serial-discovery `  builtin in the Arduino CLI:
153162
@@ -160,6 +169,7 @@ To make the above more clear let's show an example output from the `serial-disco
160169      "label" : " ttyACM0" 
161170      "protocol" : " serial" 
162171      "protocolLabel" : " Serial Port (USB)" 
172+       "hardwareId" : " EBEABFD6514D32364E202020FF10181E" 
163173      "properties" : {
164174        "pid" : " 0x804e" 
165175        "vid" : " 0x2341" 
@@ -175,6 +185,8 @@ In this case the serial port metadata comes from a USB serial converter. Inside
175185properties of the port, and some of them may be useful for product identification (in this case only USB VID/PID is
176186useful to identify the board model).
177187
188+ The ` hardwareId `  field is populated with the USB ` serialNumber `  since this value is useful to identify the board sample.
189+ 
178190The ` LIST `  command performs a one-shot polling of the ports. The discovery should answer as soon as reasonably possible,
179191without any additional delay.
180192
@@ -231,6 +243,7 @@ The `add` event looks like the following:
231243  "port" : {
232244    "address" : " /dev/ttyACM0" 
233245    "label" : " ttyACM0" 
246+     "hardwareId" : " EBEABFD6514D32364E202020FF10181E" 
234247    "properties" : {
235248      "pid" : " 0x804e" 
236249      "vid" : " 0x2341" 
0 commit comments