diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index 566c25f34b27fe206e308125ed2da0c8d778e2b2..148efe55403edbacb5653858aed98e55de4e52ba 100644
--- a/sm5/CHANGELOG
+++ b/sm5/CHANGELOG
@@ -1,6 +1,6 @@
 CHANGELOG for smartmontools
 
-$Id: CHANGELOG,v 1.397 2004/04/14 13:27:19 chrfranke Exp $
+$Id: CHANGELOG,v 1.398 2004/04/16 08:53:25 pjwilliams Exp $
 
 The most recent version of this file is:
 http://cvs.sourceforge.net/viewcvs.py/smartmontools/sm5/CHANGELOG?sortby=date&view=markup
@@ -27,6 +27,9 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 <ADDITIONS TO THE CHANGE LOG SHOULD BE ADDED JUST BELOW HERE, PLEASE>
 
+  [PW] Added Seagate U Series X family, Seagate U8 family, and Seagate
+       Medalist 8641 family to knowndrives table.
+
   [CF] smartd: Added exit values 5/6 for missing/unreadable config file.
 
   [BA] smartd: now monitor the Current Pending Sector count (Attribute 197)
diff --git a/sm5/knowndrives.c b/sm5/knowndrives.c
index 16d15022321a4f6ea0a40dc7c3c3115abbdcbe3a..457d64c250caca1a6ef3dd54c34559321db058ca 100644
--- a/sm5/knowndrives.c
+++ b/sm5/knowndrives.c
@@ -26,7 +26,7 @@
 #include "utility.h" // includes <regex.h>
 #include "config.h"
 
-const char *knowndrives_c_cvsid="$Id: knowndrives.c,v 1.99 2004/04/10 00:24:14 ballen4705 Exp $"
+const char *knowndrives_c_cvsid="$Id: knowndrives.c,v 1.100 2004/04/16 08:53:29 pjwilliams Exp $"
 ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID KNOWNDRIVES_H_CVSID UTILITY_H_CVSID;
 
 #define MODEL_STRING_LENGTH                         40
@@ -510,8 +510,18 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { // Seagate Barracuda U Series family
-    "^ST3(8002|6002|4081|2041)0A$",
+  { // Seagate Medalist 8641 family
+    "^ST3(2110|3221|4312|6531|8641)A$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { // Seagate U Series X family
+    "^ST3(10014A(CE)?|20014A)$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { // Seagate U Series 6 family
+    "^ST3(8002|6002|4081|3061|2041)0A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -520,6 +530,11 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
+  { // Seagate U8 family
+    "^ST3(8410|4313|17221|13021)A$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { // Seagate Barracuda ATA II family
     "^ST3(3063|2042|1532|1021)0A$",
     ".*",
diff --git a/sm5/knowndrives.cpp b/sm5/knowndrives.cpp
index b4834d10b61a3b385fb163710d234b290d648c24..e212ed6a6a70b946f087f8a3a8061c23b1466d97 100644
--- a/sm5/knowndrives.cpp
+++ b/sm5/knowndrives.cpp
@@ -26,7 +26,7 @@
 #include "utility.h" // includes <regex.h>
 #include "config.h"
 
-const char *knowndrives_c_cvsid="$Id: knowndrives.cpp,v 1.99 2004/04/10 00:24:14 ballen4705 Exp $"
+const char *knowndrives_c_cvsid="$Id: knowndrives.cpp,v 1.100 2004/04/16 08:53:29 pjwilliams Exp $"
 ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID KNOWNDRIVES_H_CVSID UTILITY_H_CVSID;
 
 #define MODEL_STRING_LENGTH                         40
@@ -510,8 +510,18 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
-  { // Seagate Barracuda U Series family
-    "^ST3(8002|6002|4081|2041)0A$",
+  { // Seagate Medalist 8641 family
+    "^ST3(2110|3221|4312|6531|8641)A$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { // Seagate U Series X family
+    "^ST3(10014A(CE)?|20014A)$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
+  { // Seagate U Series 6 family
+    "^ST3(8002|6002|4081|3061|2041)0A$",
     ".*",
     NULL, NULL, NULL, NULL
   },
@@ -520,6 +530,11 @@ const drivesettings knowndrives[] = {
     ".*",
     NULL, NULL, NULL, NULL
   },
+  { // Seagate U8 family
+    "^ST3(8410|4313|17221|13021)A$",
+    ".*",
+    NULL, NULL, NULL, NULL
+  },
   { // Seagate Barracuda ATA II family
     "^ST3(3063|2042|1532|1021)0A$",
     ".*",