diff -Naur qtserialport-ORI/examples/serialport/enumerator/main.cpp qtserialport/examples/serialport/enumerator/main.cpp
--- qtserialport-ORI/examples/serialport/enumerator/main.cpp	2013-07-05 09:45:30.491852419 +0200
+++ qtserialport/examples/serialport/enumerator/main.cpp	2013-07-05 09:46:38.263850417 +0200
@@ -61,6 +61,7 @@
                     + QObject::tr("Location: ") + info.systemLocation() + "\n"
                     + QObject::tr("Description: ") + info.description() + "\n"
                     + QObject::tr("Manufacturer: ") + info.manufacturer() + "\n"
+                    + QObject::tr("Serial number: ") + info.serialNumber() + "\n"
                     + QObject::tr("Vendor Identifier: ") + (info.hasVendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : QString()) + "\n"
                     + QObject::tr("Product Identifier: ") + (info.hasProductIdentifier() ?QString::number(info.productIdentifier(), 16) : QString()) + "\n"
                     + QObject::tr("Busy: ") + (info.isBusy() ? QObject::tr("Yes") : QObject::tr("No")) + "\n";
diff -Naur qtserialport-ORI/src/serialport/qserialportinfo.cpp qtserialport/src/serialport/qserialportinfo.cpp
--- qtserialport-ORI/src/serialport/qserialportinfo.cpp	2013-07-05 09:45:30.495852420 +0200
+++ qtserialport/src/serialport/qserialportinfo.cpp	2013-07-05 09:46:54.223849945 +0200
@@ -183,6 +183,16 @@
 }
 
 /*!
+    Returns the serial number string of the serial port,
+    if available; otherwise returns an empty string.
+*/
+QString QSerialPortInfo::serialNumber() const
+{
+    Q_D(const QSerialPortInfo);
+    return !d ? QString() : d->serialNumber;
+}
+
+/*!
     Returns the 16-bit vendor number for the serial port, if available;
     otherwise returns zero.
 */
diff -Naur qtserialport-ORI/src/serialport/qserialportinfo.h qtserialport/src/serialport/qserialportinfo.h
--- qtserialport-ORI/src/serialport/qserialportinfo.h	2013-07-05 09:45:30.495852420 +0200
+++ qtserialport/src/serialport/qserialportinfo.h	2013-07-05 09:47:00.511849760 +0200
@@ -71,6 +71,7 @@
     QString systemLocation() const;
     QString description() const;
     QString manufacturer() const;
+    QString serialNumber() const;
 
     quint16 vendorIdentifier() const;
     quint16 productIdentifier() const;
diff -Naur qtserialport-ORI/src/serialport/qserialportinfo_mac.cpp qtserialport/src/serialport/qserialportinfo_mac.cpp
--- qtserialport-ORI/src/serialport/qserialportinfo_mac.cpp	2013-07-05 09:45:30.495852420 +0200
+++ qtserialport/src/serialport/qserialportinfo_mac.cpp	2013-07-05 09:47:22.935849098 +0200
@@ -59,7 +59,7 @@
 
 QT_BEGIN_NAMESPACE
 
-enum { MATCHING_PROPERTIES_COUNT = 6 };
+enum { MATCHING_PROPERTIES_COUNT = 7 };
 
 QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
 {
@@ -92,6 +92,7 @@
         ::CFTypeRef portName = 0;
         ::CFTypeRef description = 0;
         ::CFTypeRef manufacturer = 0;
+        ::CFTypeRef serialNumber = 0;
         ::CFTypeRef vendorIdentifier = 0;
         ::CFTypeRef productIdentifier = 0;
 
@@ -160,6 +161,19 @@
 
             }
 
+            if (!serialNumber) {
+                serialNumber =
+                        ::IORegistryEntrySearchCFProperty(entry,
+                                                          kIOServicePlane,
+                                                          CFSTR(kUSBSerialNumberString),
+                                                          kCFAllocatorDefault,
+                                                          0);
+                if (serialNumber)
+                    ++matchingPropertiesCounter;
+
+            }
+
+
             if (!vendorIdentifier) {
                 vendorIdentifier =
                         ::IORegistryEntrySearchCFProperty(entry,
@@ -240,6 +254,16 @@
                 ::CFRelease(manufacturer);
             }
 
+            if (serialNumber) {
+                if (::CFStringGetCString(CFStringRef(serialNumber),
+                                         buffer.data(),
+                                         buffer.size(),
+                                         kCFStringEncodingUTF8)) {
+                    serialPortInfo.d_ptr->serialNumber = QString::fromUtf8(buffer);
+                }
+                ::CFRelease(serialNumber);
+            }
+
             quint16 value = 0;
 
             if (vendorIdentifier) {
diff -Naur qtserialport-ORI/src/serialport/qserialportinfo_p.h qtserialport/src/serialport/qserialportinfo_p.h
--- qtserialport-ORI/src/serialport/qserialportinfo_p.h	2013-07-05 09:45:30.495852420 +0200
+++ qtserialport/src/serialport/qserialportinfo_p.h	2013-07-05 09:47:29.007848919 +0200
@@ -64,6 +64,7 @@
     QString device;
     QString description;
     QString manufacturer;
+    QString serialNumber;
 
     quint16 vendorIdentifier;
     quint16 productIdentifier;
diff -Naur qtserialport-ORI/src/serialport/qserialportinfo_unix.cpp qtserialport/src/serialport/qserialportinfo_unix.cpp
--- qtserialport-ORI/src/serialport/qserialportinfo_unix.cpp	2013-07-05 09:45:30.495852420 +0200
+++ qtserialport/src/serialport/qserialportinfo_unix.cpp	2013-07-05 09:47:36.399848700 +0200
@@ -147,6 +147,9 @@
                             serialPortInfo.d_ptr->manufacturer = QString(
                                     QLatin1String(::udev_device_get_property_value(dev,
                                                                                    "ID_VENDOR"))).replace('_', ' ');
+                            serialPortInfo.d_ptr->serialNumber = QString(
+                                    QLatin1String(::udev_device_get_property_value(dev,
+                                                                                   "ID_SERIAL_SHORT"))).replace('_', ' ');
 
                             serialPortInfo.d_ptr->vendorIdentifier =
                                     QString::fromLatin1(::udev_device_get_property_value(dev,
diff -Naur qtserialport-ORI/src/serialport/qserialportinfo_win.cpp qtserialport/src/serialport/qserialportinfo_win.cpp
--- qtserialport-ORI/src/serialport/qserialportinfo_win.cpp	2013-07-05 09:45:30.495852420 +0200
+++ qtserialport/src/serialport/qserialportinfo_win.cpp	2013-07-05 11:58:15.127617091 +0200
@@ -173,6 +173,8 @@
                     deviceRegistryProperty(deviceInfoSet, &deviceInfoData, SPDRP_DEVICEDESC).toString();
             serialPortInfo.d_ptr->manufacturer =
                     deviceRegistryProperty(deviceInfoSet, &deviceInfoData, SPDRP_MFG).toString();
+            serialPortInfo.d_ptr->serialNumber =
+                    deviceRegistryProperty(deviceInfoSet, &deviceInfoData, SPDRP_UI_NUMBER).toString();
 
             s = deviceRegistryProperty(deviceInfoSet, &deviceInfoData, SPDRP_HARDWAREID).toStringList().first().toUpper();
 
