diff -Naur busybox-1.00/include/usage.h busybox-1.00-hdparm/include/usage.h
--- busybox-1.00/include/usage.h	2004-09-14 11:23:56.000000000 -0500
+++ busybox-1.00-hdparm/include/usage.h	2005-02-15 23:47:50.452064585 -0600
@@ -901,6 +901,7 @@
 	"\t-K   set drive keep_features_over_reset flag (0/1)\n" \
 	"\t-L   set drive doorlock (0/1) (removable harddisks only)\n" \
 	"\t-m   get/set multiple sector count\n" \
+        "\t-M   get/set Automatic Acoustic Management (128-254)\n" \
 	"\t-n   get/set ignore-write-errors flag (0/1)\n" \
 	"\t-p   set PIO mode on IDE interface chipset (0,1,2,3,4,...)\n" \
 	"\t-P   set drive prefetch count\n" \
diff -Naur busybox-1.00/miscutils/hdparm.c busybox-1.00-hdparm/miscutils/hdparm.c
--- busybox-1.00/miscutils/hdparm.c	2004-07-20 17:53:59.000000000 -0500
+++ busybox-1.00-hdparm/miscutils/hdparm.c	2005-02-15 23:46:58.765230756 -0600
@@ -1254,6 +1254,7 @@
 static unsigned long set_sleepnow   = 0, get_sleepnow   = 0;
 static unsigned long get_powermode  = 0;
 static unsigned long set_apmmode = 0, get_apmmode= 0, apmmode = 0;
+static unsigned long set_acoustic = 0, get_acoustic = 0, acoustic = 0;
 #endif
 #ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
 static int get_IDentity = 0;
@@ -2123,6 +2124,20 @@
 		}
 		bb_ioctl(fd, HDIO_DRIVE_CMD, &args,"HDIO_DRIVE_CMD");
 	}
+	if (set_acoustic)
+	{
+		no_scsi();
+		acoustic=check_if_min_and_set_val(acoustic,0);
+		acoustic=check_if_maj_and_set_val(acoustic,254);
+		if_printf(get_acoustic," setting AAM level to 0x%02lX (%ld)\n", acoustic, acoustic);
+		bb_ioctl(fd, HDIO_SET_ACOUSTIC, (int*)acoustic,"HDIO_SET_ACOUSTIC");
+	}
+	if (get_acoustic)
+	{
+		no_scsi();
+		bb_ioctl(fd, HDIO_GET_ACOUSTIC, (unsigned long*)&parm,"HDIO_GET_ACOUSTIC");
+		printf(" acoustic     = %2ld (128=quiet ... 254=fast)\n", parm);
+	}
 	if (set_wcache)
 	{
 #ifdef DO_FLUSHCACHE
@@ -2831,6 +2846,13 @@
 							p = *argv++, --argc;
 						p=GET_NUMBER(p,&set_readahead,&Xreadahead);
 						break;
+					case 'M':
+						get_acoustic = noisy; 
+						noisy = 1;
+						if (!*p && argc && isalnum(**argv))
+							p = *argv++, --argc;
+						p=GET_NUMBER(p,&set_acoustic,&acoustic);
+						break;
 					case 'B':
 						get_apmmode = noisy;
 						noisy = 1;
