Как изменить apm жесткого диска

Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, нак...

Время прочтения
4 мин

Просмотры 75K

Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, наконец со всем разобравшись, можно расслабиться и почитать интересную статью в интернете. Но что-то нарушает ваш покой. Странные щелчки доносятся из недр устройства…

Начав прислушиваться, вы периодически улавливаете звук электродвигателя, такой, как у разгоняющегося электромобиля. Может быть оставить все как есть и не трогать, наверное это предусмотрено производителем? Эту прекрасную мысль, полезную во многих других ситуациях, полностью отобьет запуск любой игры или фильма. Периодическое зависание изображения на 2-3 секунды станет вашей головной болью и кошмаром на несколько ближайших дней.

В очередной такой «зависон» вы обратите внимание, что ему будет предшествовать щелчок, а в момент зависания услышите тот самый звук электродвигателя. И, немного разбираясь в компьютерном железе, вы зайдете в google с вопросом: «Жесткий диск не дает жить, что делать».

Все дело в APM (Advanced Power Management)

Если серьезно, проблема далеко не нова, но даже недавно я видел на хабре комментарии, где люди просили помощь по данному вопросу. Здесь речь идет о дисках WD и реализации функции APM в них, но думаю у других производителей будет та же причина. При беглом поиске google нам любезно предлагает утилиту wdidle3. Проблема лишь в том, что это DOS программа требующая создания загрузочной флешки. И, например, для моего диска она не помогла.

Решение, которое я предлагаю особенно полезно, если у вас в качестве основного накопителя установлен SSD, а HDD используется в качестве доп. накопителя. В обычном режиме он будет использовать свое стандартное поведение и отключаться через 8 секунд бездействия, не беспокоя вас своим шумом и не потребляя заряд батареи. При желании сыграть в игру или поработать с жесткого диска, вы нажимаете одну кнопку и он не паркуется заложенное в энергоплане Windows время (20 минут по дефолту). Утилита wdidle не даст вам такого выбора.

Используем HDDScan

Собственно к делу. Программа которую мы будем использовать называется HDDScan. Причем версии старше 3.2 у меня работали не совсем корректно, поэтому рекомендую остановиться на ней.

Скачиваем эту портабельную программу и распаковываем в удобное для нас место. Запускаем, и если дисков больше одного, слева выбираем наш HDD. Далее нажимаем «большую синюю кнопку» по центру и выбираем пункт «Build Command Line».

image

В открывшемся окне проделываем следующую процедуру: напротив раздела «Advanced Power Managment» выбираем Disable, нажимаем Save, и сохраняем bat-файл. Назовем его, к примеру, «Disable_HDD_APM.bat». Аналогично выбираем Enable и сохраняем еще один батник.

image

В результате у нас появляются два bat-файла примерно одинакового содержания:

"C:ProgramsHDDScanHDDScan.exe" "\?scsi#disk&ven_wdc&prod_wd7500bpvx-22jc3#4&103b6ba3&0&020000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}" -APM 0

и

"C:ProgramsHDDScanHDDScan.exe" "\?scsi#disk&ven_wdc&prod_wd7500bpvx-22jc3#4&103b6ba3&0&020000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}" -APM 1

На этом можно было бы и закончить, эти файлы позволяют отключать функцию APM передавая контроль над временем парковки Windows, и соответственно, включить для возврата исходного поведения. Но, во первых это не очень красиво и удобно, во вторых будет вызываться запрос UAC при запуске bat-файла. Для преодоления этих неудобств предлагаю воспользоваться Планировщиком Windows.

Обходим UAC

Запускаем (если что, вводим в пуске «планировщик» чтобы его найти), и создаем задачу.

image

Для начала отключение APM. Даем осмысленное имя, и главное не забываем выставить выполнение с наивысшими правами. Переходим на вкладку Действия, нажимаем Создать. Здесь указываем путь к нашей программе HDDScan, а в «добавить аргументы», все что идет в батнике после пути к программе. К примеру:

"\?scsi#disk&ven_wdc&prod_wd7500bpvx-22jc3#4&103b6ba3&0&020000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}" -APM 0

image

И довершающий шаг, на вкладке Условия убираем галочку напротив «Запускать только при питании от электросети». Теперь OK.

image

Фух, создаем вторую задачу, и заполняем аналогично для включения APM (только используем аргумент из второго батника). В результате у нас в планировщике должно стать на две задачи больше, запоминаем их имена. Bat-файлы нам больше не понадобятся, можно будет от них избавиться. Последний этап наших изысканий это создание ярлыков на задачи планировщика.

Делаем красиво

Тут все просто, в укромном месте ПКМ -> Создать -> Ярлык. На предложение пути, вводим следующее:

C:WindowsSystem32schtasks.exe /run /tn ИмяВашейЗадачи

image

Создаем ярлык сначала для одной, потом для второй задачи. Получаем два ярлычка, которые кладем в надежное место, и, например, кидаем на панель задач. Для красоты можно применить к ним соответствующие иконки.

image

Дело сделано

Это всего лишь один из множества вариантов решений, можно использовать другой софт, по своему настроить планировщик. Но суть в том, что мы можем недостаток обернуть себе на пользу. В особенности, если системным диском стоит SSD: жесткий диск при использовании не будет парковаться и раздражать вас фризами, а в отсутствие активности может отключиться(в зависимости от модели), и избавить вас от побочных эффектов своей работы.

Винчестеры Hitachi Travelstar очень популярны среди пользователей персональных компьютеров. Однако у последних моделей дисков от HGST есть одна проблема, которая может за 1 год привести к поломке жесткого диска! Эта проблема — постоянная парковка головок диска при его работе. Казалось бы, что тут страшного? Ведь технология парковки головок экономит ресурс жесткого диска и электроэнергию при простаивании жесткого диска без работы.

Однако данные парковки у линейки жестких дисков HGST Hitachi Travelstar очень частые и за минуту может происходить до 10-15 парковок. Это явно неправильная работа винчестера!

Для примера, за 6 месяцев работы мой HDD Hitachi Travelstar 7K1000 [HTS721010A9E630] припарковался 174856 раз, что видно из показателей S.M.A.R.T. жесткого диска. Ещё около года и этот показатель перевалит за 500 тысяч парковок и система S.M.A.R.T. жесткого диска сообщит, что жесткий диск имеет S.M.A.R.T. Status BAD.

Причины частых парковок головок является система APM (Advanced Power Management), по-русски «Расширенное Энергосбережение«, которая призвана экономить энергию при простоях. Расширенное энергосбережение факультативно появилось в жестких дисках уже довольно давно. В настройках работы диска эту систему можно регулировать одним параметром. Изменение его значения от 1 до 254 позволяет регулировать производительность жесткого диска и тем самым экономить энергию источников питания. Значение меньше 128 разрешает жесткому диску остановку шпиндельного двигателя при отсутствии команд в течение определенного времени, что позволяет максимально экономить энергию источника питания, но приводит к повышенному износу кинематики и задержке при пробуждении, вызванной ожиданием раскрутки магнитных дисков до необходимой скорости. Работа расширенного энергосбережения, реализованного в жестких дисках, не зависит от таймера «сна» операционной системы.

Изначально, с завода, все винчестеры Hitachi Travelstar идут с установленным параметром APM равным 128. Для отключения парковок головок, или для увеличения времени между возможными парковками, нам необходимо увеличить этот параметр. Я бы рекомендовал установить от 200 до 254. Установка параметра равное 254 отключает APM и соответственно парковку головок, т.е головки не будут парковаться при простое винчестера.

Так в чём же проблема? Меняем этот параметр и радуемся! Не всё так просто. Данный параметр умеет менять программа от Hitachi — Hitachi Feature Tools. Однако не стоит искать эту программу на сайте Hitachi. Она там есть, но она не поддерживает изменение параметра APM (Advanced Power Management) на последних, самых новых, винчестерах Hitachi.

Но не стоит отчаиваться. Умельцы уже выпустили модифицированную версию Hitachi Feature Tools v2.17b2 (FT217b2.rar) для новейших винчестеров от HGST.

Среди поддерживаемых моделей HDD HGST Hitachi Travelstar:

  • 5K500.B
  • 7K500
  • 5K750
  • 7K750
  • 5K1000
  • Z5K320
  • Z7K320
  • Z5K500
  • Z7K500

В списке не оказалось моей модели Hitachi Travelstar 7K1000 [HTS721010A9E630], но как оказалось позже, программа смогла работать и с ней.

Внимание! Всё, что Вы будете делать дальше, делается Вами на свой страх и риск. Это может привести как к потере информации, так и поломке самого жесткого диска!

Итак. Порядок работы:

  • Создаем загрузочный USB диск, грузимся с него в MSDOS, автоматически запускается утилитка от Hitachi (немного модифицированная, неофициальная).
  • Выбираем в списке найденных жестких дисков необходимый.
  • Нажимаем F10 переходим в меню. Отключаем APM (Выставляем APM в 254).

Теперь подробнее опишу алгоритм действий по созданию флэшки.

Для Windows XP, Vista и Windows 7 подойдёт этот вариант:

  • С помощью HP USB Disk Storage Format Tool ( HP_USB_Disk_Storage_Format_Tool_and_MSDOS.rar) создаём загрузочную флэшку с досом (отмечаем галочкой ‘using DOS system files located at:’ и выбираем прилагающийся каталог ‘dos’, нажимаем ‘Start’);
  • В корень флэшки забрасываем содержимое каталога ‘FT217b2’ ( FT217b2.rar);
  • Перезагружаемся, загрузка с флэхи (изменить соответствующие настройки в биосе);
  • Дальше всё интуитивно понятно. В меню программы выбираете в списке найденных жестких дисков свой диск (HGST HTS..) и нажимаете F10 для перехода в меню. Затем в меню выбираете Advanced Power Management (APM) и двигаете (ползунком) до значения в 254, сохраняете настройки (saves) и выходим (Exit), парковка головок отключена;
  • Радуемся и говорим спасибо автору в комментариях, а также человеку допилвшему программу от Hitachi, чтобы мы могли доколхозить хитачевские криводелки.

Для Windows 8, 8.1 и 10 подойдёт этот вариант:

  • С помощью программки Rufus ( rufus-3.1.exe) создаём загрузочную флэшку с досом (выбираем в списке Метод загрузки ‘MS-DOS’, всё остальное оставляем так как на фото и нажимаем ‘СТАРТ’);
  • В корень флэшки забрасываем содержимое каталога ‘FT217b2’ ( FT217b2.rar) с заменой имеющихся файлов;
  • Перезагружаемся, загрузка с флэхи (изменить соответствующие настройки в биосе, один из вариантов как это сделать описан ниже);
    • Перезагружаемся и заходим в биос (при загрузке нажимаем Delete или F2), во вкладке Advanced меняем Sata Mode Selection на IDE, далее во вкладке Boot-Boot Mode Select изменить на Legacy, затем выбираете загрузку с носителя (вкладка Boot-Boot Priorities), то есть выбираете вашу загрузочную USB флешку первой, далее во вкладке Security-Secure Boot Menu отключаете Secure Boot (изменить на Disabled) и сохраняете по F10. Начнётся перезагрузка. При загрузке автоматически запустится утилита от Hitachi (несколько раз будет чёрный экран с предупреждениями и надписью: press any key — нажмите несколько раз Enter или пробел, не важно).
  • Дальше всё интуитивно понятно. В меню программы выбираете в списке найденных жестких дисков свой диск (HGST HTS..) и нажимаете F10 для перехода в меню. Затем в меню выбираете Advanced Power Management (APM) и двигаете (ползунком) до значения в 254, сохраняете настройки (saves) и выходим (Exit), парковка головок отключена;
  • Радуемся и говорим спасибо автору в комментариях, а также человеку допилвшему программу от Hitachi, чтобы мы могли доколхозить хитачевские криводелки.

Иллюстрация к новости Сначала рашисты пытались выкурить жителей из подвала, бросая в вентиляционную шахту дымовые шашки.

Сначала у их подвала было два выхода – во второй и четвертый подъезд. Но к середине марта выходы уже были завалены, и люди пробирались в укрытие и выбирались из него через узкий лаз. Старикам и детям…

Иллюстрация к новости Последствия авиаудара по Драмтеатру 16 марта 2022 года в Мариуполе, Украина

Момент бомбового удара авиации российских оккупантов по драматическому театру 16 марта 2022 г. в городе Мариуполь, Украина, унёсшего жизни нескольких сотен горожан (женщин и детей).

Иллюстрация к новости Помощь голодным людям Мариуполя от Крымских волонтёров

Из Крыма приехали волонтёры в Мариуполь и привезли гуманитарную помощь для оставшихся в городе жителей, немного пообщались с пожилыми жителями города, мамочками с детьми и другими, кто нуждается в помощи….

Содержание

  1. Как приручить жесткий диск в ноутбуке и не дать парковаться за 8 секунд простоя
  2. Все дело в APM (Advanced Power Management)
  3. Используем HDDScan
  4. Обходим UAC
  5. Делаем красиво
  6. Отключаем парковку головок жесткого диска
  7. Экономия энергии vs шум
  8. Как отключить парковку головок — пошаговая инструкция
  9. Как еще уменьшить шум от компьютера: HDD vs SSD
  10. Парковка головок жёсткого диска, как изменить значения в Windows 10
  11. Для чего нужна парковка головок жёсткого диска
  12. Стоит ли отключать парковку головок
  13. Как изменить режим парковки головок
  14. Fobos World
  15. Парковка головок жёсткого диска, как изменить значения в Windows 10
  16. Для чего нужна парковка головок жёсткого диска
  17. Стоит ли отключать парковку головок
  18. Как изменить режим парковки головок
  19. Fobos World
  20. Как приручить жесткий диск в ноутбуке и не дать парковаться за 8 секунд простоя
  21. Все дело в APM (Advanced Power Management)
  22. Используем HDDScan
  23. Обходим UAC
  24. Делаем красиво
  25. Дело сделано
  26. Парковка головок жесткого диска: как я с этим боролся

Как приручить жесткий диск в ноутбуке и не дать парковаться за 8 секунд простоя

Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, наконец со всем разобравшись, можно расслабиться и почитать интересную статью в интернете. Но что-то нарушает ваш покой. Странные щелчки доносятся из недр устройства…

Начав прислушиваться, вы периодически улавливаете звук электродвигателя, такой, как у разгоняющегося электромобиля. Может быть оставить все как есть и не трогать, наверное это предусмотрено производителем? Эту прекрасную мысль, полезную во многих других ситуациях, полностью отобьет запуск любой игры или фильма. Периодическое зависание изображения на 2-3 секунды станет вашей головной болью и кошмаром на несколько ближайших дней.

В очередной такой «зависон» вы обратите внимание, что ему будет предшествовать щелчок, а в момент зависания услышите тот самый звук электродвигателя. И, немного разбираясь в компьютерном железе, вы зайдете в google с вопросом: «Жесткий диск не дает жить, что делать».

Все дело в APM (Advanced Power Management)

Если серьезно, проблема далеко не нова, но даже недавно я видел на хабре комментарии, где люди просили помощь по данному вопросу. Здесь речь идет о дисках WD и реализации функции APM в них, но думаю у других производителей будет та же причина. При беглом поиске google нам любезно предлагает утилиту wdidle3. Проблема лишь в том, что это DOS программа требующая создания загрузочной флешки. И, например, для моего диска она не помогла.

Решение, которое я предлагаю особенно полезно, если у вас в качестве основного накопителя установлен SSD, а HDD используется в качестве доп. накопителя. В обычном режиме он будет использовать свое стандартное поведение и отключаться через 8 секунд бездействия, не беспокоя вас своим шумом и не потребляя заряд батареи. При желании сыграть в игру или поработать с жесткого диска, вы нажимаете одну кнопку и он не паркуется заложенное в энергоплане Windows время (20 минут по дефолту). Утилита wdidle не даст вам такого выбора.

Используем HDDScan

Собственно к делу. Программа которую мы будем использовать называется HDDScan. Причем версии старше 3.2 у меня работали не совсем корректно, поэтому рекомендую остановиться на ней.

Скачиваем эту портабельную программу и распаковываем в удобное для нас место. Запускаем, и если дисков больше одного, слева выбираем наш HDD. Далее нажимаем «большую синюю кнопку» по центру и выбираем пункт «Build Command Line».

image loader

В открывшемся окне проделываем следующую процедуру: напротив раздела «Advanced Power Managment» выбираем Disable, нажимаем Save, и сохраняем bat-файл. Назовем его, к примеру, «Disable_HDD_APM.bat». Аналогично выбираем Enable и сохраняем еще один батник.

image loader

В результате у нас появляются два bat-файла примерно одинакового содержания:

На этом можно было бы и закончить, эти файлы позволяют отключать функцию APM передавая контроль над временем парковки Windows, и соответственно, включить для возврата исходного поведения. Но, во первых это не очень красиво и удобно, во вторых будет вызываться запрос UAC при запуске bat-файла. Для преодоления этих неудобств предлагаю воспользоваться Планировщиком Windows.

Обходим UAC

Запускаем (если что, вводим в пуске «планировщик» чтобы его найти), и создаем задачу.

image loader

Для начала отключение APM. Даем осмысленное имя, и главное не забываем выставить выполнение с наивысшими правами. Переходим на вкладку Действия, нажимаем Создать. Здесь указываем путь к нашей программе HDDScan, а в «добавить аргументы», все что идет в батнике после пути к программе. К примеру:

image loader

И довершающий шаг, на вкладке Условия убираем галочку напротив «Запускать только при питании от электросети». Теперь OK.

image loader

Фух, создаем вторую задачу, и заполняем аналогично для включения APM (только используем аргумент из второго батника). В результате у нас в планировщике должно стать на две задачи больше, запоминаем их имена. Bat-файлы нам больше не понадобятся, можно будет от них избавиться. Последний этап наших изысканий это создание ярлыков на задачи планировщика.

Делаем красиво

image loader

Создаем ярлык сначала для одной, потом для второй задачи. Получаем два ярлычка, которые кладем в надежное место, и, например, кидаем на панель задач. Для красоты можно применить к ним соответствующие иконки.

Источник

Отключаем парковку головок жесткого диска

Экономия энергии vs шум

Если у вас два и более жестких диска, которые используются как корзины для файлов или временные хранилища, то операционная система (ОС) в целях экономии энергии отключает их питание.
parkovka zhestkogo diska primery hdd
Например, если вы не использовали файлы со второго жесткого диска, то операционная система отключает питание от жесткого диска, если прошло 20 минут и более.

Это экономит питание, однако если ваш второй или третий жесткий диск используется операционной системой, то он будет все чаще и чаще инициализироваться, как при запуске компьютера.

Такое может быть, когда антивирус сканирует файлы, или ОС использует другой жесткий диск, как временное хранилище.

Как отключить парковку головок — пошаговая инструкция

Шум от парковки головок очень высокий, и чтобы уменьшить его, можно переключить питание шумного жесткого диска. Сделать это можно следующим образом.

Инструкция для Windows 10. Вводим в пуске «Панель управления». И открываем ее при помощи левой кнопки мыши.
parkovka zhestkogo diska 1
Далее переходим в «Оборудование и звук».
parkovka zhestkogo diska 2
Затем в «Электропитание».
parkovka zhestkogo diska 3
Дальше нажимаем на «Настройка схемы электропотребления».
parkovka zhestkogo diska 4
Обратите внимание, что нужно нажимать на настройку в той схеме питания, которая выбрана (где установлена черная точка в круге).
parkovka zhestkogo diska 5
Затем нажимаем на «Изменить дополнительные параметры питания».
parkovka zhestkogo diska 6
И появляется новое окно, где нужно в пункте «Жесткий диск» открыть пункт «Отключать жесткий диск через».
parkovka zhestkogo diska 7
Нужно поменять значение с установленного (в данном случае 20 минут) на «Никогда».
parkovka zhestkogo diska 8
Кликаем по установленному значению.
parkovka zhestkogo diska 9
И переводим состояние на «Никогда», кликая на нижнюю стрелочку, как показано на скриншоте.

Примечание: Для некоторых жестких дисков, например от WD лучше ставить значение на 2 минуты.

parkovka zhestkogo diska 10
Нажимаем на кнопку «Применить».
parkovka zhestkogo diska 11
Теперь парковок головок жесткого диска будет намного меньше, чем обычно. Но в целом уменьшить шум от жесткого диска, особенно если он старый, это не так просто. Можно либо уменьшить количество оборотов (что скажется на скорости чтения и записи). Или можно установить резиновые прокладки на место крепления жесткого диска, чтобы уменьшить звук от вибрации.

Как еще уменьшить шум от компьютера: HDD vs SSD

А еще можно просто заменить жесткий диск на SSD (твердотельный накопитель).
parkovka zhestkogo diska hdd vs ssd
У них нет таких проблем со звуком, как у HDD, поскольку используется совершенно другой принцип хранения информации (как у флешки).

А если ваш жесткий диск щелкает, или загружается через раз, то это сигнал о серьезной проблеме, и риске полной потере данных. Почитать об этом можно в этой статье.

Частые парковки головок способствуют быстрому износу жесткого диска.

Источник

Парковка головок жёсткого диска, как изменить значения в Windows 10

5 1

По умолчанию система Windows настроена таким образом, что каждые несколько минут происходит парковка головок жёсткого диска.

Иначе, жесткий диск должен отключаться и происходит парковка магнитных головок, при этом они устанавливаются в безопасную область.

Для чего нужна парковка головок жёсткого диска

Все жесткие диски снабжаются механизмами автоматической парковки при отключении электропитания. Как правило, парковка головок в этом случае выполняется за счёт кинетической энергии при вращении магнитных дисков.

То есть, когда питание отключается, шпиндельный двигатель винчестера начинает работать в режиме генератора. Энергия от него употребляется для того, чтобы переместить магнитные головки в парковочное место. Далее в зоне парковки они блокируются магнитной защелкой.

Известно, что самым ненадежным элементом в компьютере является именно жесткий диск. По статистике он ломается чаще всего и уносит с собой при этом все записанные данные.

Нормальным сроком работы для жёсткого диска считается 10 лет. Но на деле поломка устройства может произойти и намного раньше.

Иногда пользователь начинает замечать, что жесткий диск начал работать более шумно, прослушиваются потрескивания при работе. Такое поведение устройства объясняется именно частой парковкой магнитных головок.

Делается частая парковка производителями в какой-то мере для экономии электроэнергии. А также для сохранности винчестера при ударе, когда компьютер работает.

Но с другой стороны каждая парковка головок сокращает срок службы винчестера, так как лучший режим для него, это минимум отключений и работа в постоянном режиме.

Стоит ли отключать парковку головок

Продолжительность успешной работы винчестера зависит от конкретного количества парковок магнитных головок, по причине износа кинематики механизма.

Если принять во внимание, что компьютер в сутки в среднем работает по нескольку часов, то получаются значительные цифры парковок, уменьшающие срок работы винчестера.

При отключении электропитания парковка головок происходит принудительно, и повлиять как-то на этот процесс невозможно.

Другое дело, если частая парковка головок происходит во время работы компьютера при отсутствии обращений к диску. На некоторых моделях интервал между парковками не превышает нескольких секунд.

Что не очень хорошо, поскольку производитель заявляет для дисков конечное число парковочных циклов. Для разных моделей это может быть 300 тысяч и более, после чего винчестер должен умереть.

Несмотря на такие большие числа, этот предел может быть достигнут при определенных режимах работы компьютера в течение нескольких лет эксплуатации.

После чего устройство начнет глючить, и в конечном итоге выйдет из строя, что напрямую связано с потерей записанных данных.

Поэтому, если не стоит остро вопрос экономии нескольких рублей в год и не очень часто компьютер падает на пол, то количество парковок магнитных головок жёсткого диска лучше ограничить, либо отключить.

Таким образом, чтобы увеличить срок службы жёсткого диска по причине физического износа, стоит интервал между парковками магнитных головок увеличить.

Особенно вопрос актуален для стационарных компьютеров. Имеется в виду, что они стоят на месте и не подвергается при нормальной эксплуатации физическим воздействиям.

Как изменить режим парковки головок

Отключить парковку магнитных головок жесткого диска или хотя бы увеличить интервал между парковками можно двумя способами:

1 1

В новом окне — Изменить дополнительные параметры питания.

2

control.exe powercfg.cpl,,3.

4 1

В любом случае откроется окно Электропитание с вкладкой Дополнительные параметры. В этом окне, в пункте Отключать жесткий диск через, по умолчанию стоит 20 минут бездействия.

3 1

Изменяем это значение на любое большее, например, 2000 минут. Нажимаем Применить и OK. Компьютер перезагружаем.

На этом всё. Парковка магнитных головок будут происходить не очень часто и работа устройства может продлиться на несколько лет.

Источник

Fobos World

У современных настольных дисков WD имеется технология парковки блока головок диска при простое. Всё бы ничего, но время простоя на некоторых дисках составляет всего несколько секунд, в итоге выходит что паркуются они очень часто. Производитель утверждает что диски могут выдерживать без проблем от 300 до 600 тысяч парковок (в зависимости от модели), однако это количество набирается очень быстро!

Сначала немного расскажу зачем придумали парковку блока головок при простое. Это сделано для уменьшения износа головок, пластин и снижения энергопотребления. Висящие над пластинами головки создают дополнительное аэродинамическое сопротивление, т.к. диски вращаются на довольно высокой скорости, то и воздух в банке вовлекается во вращение вместе с ними, а блок головок тормозит эти потоки воздуха. Получаемые при этом хаотические «порывы ветра» в свою очередь создают дополнительное сопротивление для вращения пластин и энергопотребление растёт, от этого увеличивается температура, которая вредна для головок. Для примера скажу, для диска 3.5 дюйма, со скоростью вращения 7200 об/мин линейная скорость краёв пластин составляет примерно 120 км/час, а на таких скоростях воздух уже вполне осязаем, в чём вы можете лично убедиться высунув руку из машины. 🙂 Но этот ликбез не должен вас смущать. От частых парковок ваш диск помрёт гораздо раньше чем от всех описанных явлений.

Итак нам потребуется:

Переключить в биосе режим работы диска в IDE, если у вас установлен AHCI. На некоторых ноутбуках нельзя выставить IDE, поэтому диск необходимо извлечь и подключить к настольному компьютеру.

Итак сделали загрузочную флешку и распаковав из архива WDIdle3 переписали его на флешку. Я при этой операции отключил все другие диски и конечно же сделал бэкап данных! Загружаемся с неё и начинаем вводить в командную строку:

Вопросы на тему: «А будет ли это работать на моём диске?» не принимаются. Убедитесь что у вас диск Western Digital, посмотрите два вышеприведённых параметра смарт и посмотрите самой утилитой на сколько у вас выставлен таймер парковки головок.

Источник

Парковка головок жёсткого диска, как изменить значения в Windows 10

5 1

По умолчанию система Windows настроена таким образом, что каждые несколько минут происходит парковка головок жёсткого диска.

Иначе, жесткий диск должен отключаться и происходит парковка магнитных головок, при этом они устанавливаются в безопасную область.

Для чего нужна парковка головок жёсткого диска

Все жесткие диски снабжаются механизмами автоматической парковки при отключении электропитания. Как правило, парковка головок в этом случае выполняется за счёт кинетической энергии при вращении магнитных дисков.

То есть, когда питание отключается, шпиндельный двигатель винчестера начинает работать в режиме генератора. Энергия от него употребляется для того, чтобы переместить магнитные головки в парковочное место. Далее в зоне парковки они блокируются магнитной защелкой.

Известно, что самым ненадежным элементом в компьютере является именно жесткий диск. По статистике он ломается чаще всего и уносит с собой при этом все записанные данные.

Нормальным сроком работы для жёсткого диска считается 10 лет. Но на деле поломка устройства может произойти и намного раньше.

Иногда пользователь начинает замечать, что жесткий диск начал работать более шумно, прослушиваются потрескивания при работе. Такое поведение устройства объясняется именно частой парковкой магнитных головок.

Делается частая парковка производителями в какой-то мере для экономии электроэнергии. А также для сохранности винчестера при ударе, когда компьютер работает.

Но с другой стороны каждая парковка головок сокращает срок службы винчестера, так как лучший режим для него, это минимум отключений и работа в постоянном режиме.

Стоит ли отключать парковку головок

Продолжительность успешной работы винчестера зависит от конкретного количества парковок магнитных головок, по причине износа кинематики механизма.

Если принять во внимание, что компьютер в сутки в среднем работает по нескольку часов, то получаются значительные цифры парковок, уменьшающие срок работы винчестера.

При отключении электропитания парковка головок происходит принудительно, и повлиять как-то на этот процесс невозможно.

Другое дело, если частая парковка головок происходит во время работы компьютера при отсутствии обращений к диску. На некоторых моделях интервал между парковками не превышает нескольких секунд.

Что не очень хорошо, поскольку производитель заявляет для дисков конечное число парковочных циклов. Для разных моделей это может быть 300 тысяч и более, после чего винчестер должен умереть.

Несмотря на такие большие числа, этот предел может быть достигнут при определенных режимах работы компьютера в течение нескольких лет эксплуатации.

После чего устройство начнет глючить, и в конечном итоге выйдет из строя, что напрямую связано с потерей записанных данных.

Поэтому, если не стоит остро вопрос экономии нескольких рублей в год и не очень часто компьютер падает на пол, то количество парковок магнитных головок жёсткого диска лучше ограничить, либо отключить.

Таким образом, чтобы увеличить срок службы жёсткого диска по причине физического износа, стоит интервал между парковками магнитных головок увеличить.

Особенно вопрос актуален для стационарных компьютеров. Имеется в виду, что они стоят на месте и не подвергается при нормальной эксплуатации физическим воздействиям.

Как изменить режим парковки головок

Отключить парковку магнитных головок жесткого диска или хотя бы увеличить интервал между парковками можно двумя способами:

1 1

В новом окне — Изменить дополнительные параметры питания.

2

4 1

В любом случае откроется окно Электропитание с вкладкой Дополнительные параметры. В этом окне, в пункте Отключать жесткий диск через, по умолчанию стоит 20 минут бездействия.

3 1

Изменяем это значение на любое большее, например, 2000 минут. Нажимаем Применить и OK. Компьютер перезагружаем.

На этом всё. Парковка магнитных головок будут происходить не очень часто и работа устройства может продлиться на несколько лет.

Fobos World

У современных настольных дисков WD имеется технология парковки блока головок диска при простое. Всё бы ничего, но время простоя на некоторых дисках составляет всего несколько секунд, в итоге выходит что паркуются они очень часто. Производитель утверждает что диски могут выдерживать без проблем от 300 до 600 тысяч парковок (в зависимости от модели), однако это количество набирается очень быстро!

Сначала немного расскажу зачем придумали парковку блока головок при простое. Это сделано для уменьшения износа головок, пластин и снижения энергопотребления. Висящие над пластинами головки создают дополнительное аэродинамическое сопротивление, т.к. диски вращаются на довольно высокой скорости, то и воздух в банке вовлекается во вращение вместе с ними, а блок головок тормозит эти потоки воздуха. Получаемые при этом хаотические «порывы ветра» в свою очередь создают дополнительное сопротивление для вращения пластин и энергопотребление растёт, от этого увеличивается температура, которая вредна для головок. Для примера скажу, для диска 3.5 дюйма, со скоростью вращения 7200 об/мин линейная скорость краёв пластин составляет примерно 120 км/час, а на таких скоростях воздух уже вполне осязаем, в чём вы можете лично убедиться высунув руку из машины. smileНо этот ликбез не должен вас смущать. От частых парковок ваш диск помрёт гораздо раньше чем от всех описанных явлений.

Ктото говорит что эта проблема характерна только для Linux. Однако у меня и на Windows с диском WD2001FASS за неделю набралось около 20 тысяч парковок, боюсь за год он бы точно помер от этого. Хотя обычно этим страдают модели зелёной серии. Для тех кто боится, могу сказать что утилита может показать что считается текущим временем простоя до парковки головок. У меня например было 12.8 секунды! Правда не забудьте одно но, если у вас скажем появятся бэд блоки когда то в будущем и придётся нести диск в гарантию — запустите утилитку ещё раз и верните изначальные значения, т.к. если заметят изменённое время, то гарантии вас лишат. smile

Итак нам потребуется:

Переключить в биосе режим работы диска в IDE, если у вас установлен AHCI. На некоторых ноутбуках нельзя выставить IDE, поэтому диск необходимо извлечь и подключить к настольному компьютеру.

AIDA64 (Everest) — программа мониторинга железа, в данном случае нас будет интересовать S.M.A.R.T данные, а именно параметр 193 Load/Unload Cycle count — количество парковок головок, если этот параметр в несколько раз больше (или десятков раз) чем 12 Power Cycle Count — количество циклов отключения питания диска (можно считать количеством раз включения компьютера если диск стоял в нём изначально). То это наш случай!

Загрузочная флешка с DOS — там всё написано как делать. Утилита то из под ДОСа работает…

WDIdle3 — собственно сама утилита версии 1.05, утилита создана для очень ограниченного набора дисков, на которых впервые проявилась эта проблема, но работает со всеми дисками WD.

Итак сделали загрузочную флешку и распаковав из архива WDIdle3 переписали его на флешку. Я при этой операции отключил все другие диски и конечно же сделал бэкап данных! Загружаемся с неё и начинаем вводить в командную строку:

wdidle3 /r — информация о текущих настройках таймера парковки головок, если значение считывается с вашего диска, то значит и новое запишется, что как бы логично, запишите на всякий случай изначальное значение для возврата диска по гарантии или неадекватной реакции диска.

wdidle3 /d — остановить таймер, эта настройка совсем отключает парковку головок при работе (что я для себя и сделал)

wdidle3 /s50 — устанавливает таймер на 50 сек. При установке таймера от 8 до 12.7 секунды можно устанавливать с точностью 0.1 секунды. При установке от 12.8 до 30 секунд таймер всегда устанавливается на 30 секунд. Значения от 31 до 300 секунд устанавливаются с точностью в 30 секунд.

wdidle3 /? — справка по использованию утилиты

После изменения параметров нужно опять набрать wdidle3 /r чтобы убедиться что новое значение прописалось. Написано что работа может занимать длительное время, у меня изменение параметра занимало около секунды… Ну и как традиционно пишут в таких статьях, всё что написано — вы делаете на свой страх и риск.

Вопросы на тему: «А будет ли это работать на моём диске?» не принимаются. Убедитесь что у вас диск Western Digital, посмотрите два вышеприведённых параметра смарт и посмотрите самой утилитой на сколько у вас выставлен таймер парковки головок.

P.S. В некоторых случаях бывают непонятные глюки дисков при изменении времени в большую сторону или полном отключении парковки. Рекомендую всё же попробовать сначала отключить полностью и если диск будет работать нормально, то так и оставить. При «непонятном» поведении диска — постоянные парковки головок или «синие экраны» — увеличить время парковки. Учитывая 32 тысячи просмотров и 8 страниц комментариев этой статьи (на момент написание этого предложения) у одного человека начались «синие экраны» после изменения времени парковки. Часть дисков не совсем адекватно реагирует на изменение времени. Но ни у кого к необратимым фатальным последствиям изменение времени парковки не привело.

Как приручить жесткий диск в ноутбуке и не дать парковаться за 8 секунд простоя

Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, наконец со всем разобравшись, можно расслабиться и почитать интересную статью в интернете. Но что-то нарушает ваш покой. Странные щелчки доносятся из недр устройства…

Начав прислушиваться, вы периодически улавливаете звук электродвигателя, такой, как у разгоняющегося электромобиля. Может быть оставить все как есть и не трогать, наверное это предусмотрено производителем? Эту прекрасную мысль, полезную во многих других ситуациях, полностью отобьет запуск любой игры или фильма. Периодическое зависание изображения на 2-3 секунды станет вашей головной болью и кошмаром на несколько ближайших дней.

В очередной такой «зависон» вы обратите внимание, что ему будет предшествовать щелчок, а в момент зависания услышите тот самый звук электродвигателя. И, немного разбираясь в компьютерном железе, вы зайдете в google с вопросом: «Жесткий диск не дает жить, что делать».

Все дело в APM (Advanced Power Management)

Если серьезно, проблема далеко не нова, но даже недавно я видел на хабре комментарии, где люди просили помощь по данному вопросу. Здесь речь идет о дисках WD и реализации функции APM в них, но думаю у других производителей будет та же причина. При беглом поиске google нам любезно предлагает утилиту wdidle3. Проблема лишь в том, что это DOS программа требующая создания загрузочной флешки. И, например, для моего диска она не помогла.

Решение, которое я предлагаю особенно полезно, если у вас в качестве основного накопителя установлен SSD, а HDD используется в качестве доп. накопителя. В обычном режиме он будет использовать свое стандартное поведение и отключаться через 8 секунд бездействия, не беспокоя вас своим шумом и не потребляя заряд батареи. При желании сыграть в игру или поработать с жесткого диска, вы нажимаете одну кнопку и он не паркуется заложенное в энергоплане Windows время (20 минут по дефолту). Утилита wdidle не даст вам такого выбора.

Используем HDDScan

Собственно к делу. Программа которую мы будем использовать называется HDDScan. Причем версии старше 3.2 у меня работали не совсем корректно, поэтому рекомендую остановиться на ней.

Скачиваем эту портабельную программу и распаковываем в удобное для нас место. Запускаем, и если дисков больше одного, слева выбираем наш HDD. Далее нажимаем «большую синюю кнопку» по центру и выбираем пункт «Build Command Line».

В открывшемся окне проделываем следующую процедуру: напротив раздела «Advanced Power Managment» выбираем Disable, нажимаем Save, и сохраняем bat-файл. Назовем его, к примеру, «Disable_HDD_APM.bat». Аналогично выбираем Enable и сохраняем еще один батник.

В результате у нас появляются два bat-файла примерно одинакового содержания:

На этом можно было бы и закончить, эти файлы позволяют отключать функцию APM передавая контроль над временем парковки Windows, и соответственно, включить для возврата исходного поведения. Но, во первых это не очень красиво и удобно, во вторых будет вызываться запрос UAC при запуске bat-файла. Для преодоления этих неудобств предлагаю воспользоваться Планировщиком Windows.

Обходим UAC

Запускаем (если что, вводим в пуске «планировщик» чтобы его найти), и создаем задачу.

Для начала отключение APM. Даем осмысленное имя, и главное не забываем выставить выполнение с наивысшими правами. Переходим на вкладку Действия, нажимаем Создать. Здесь указываем путь к нашей программе HDDScan, а в «добавить аргументы», все что идет в батнике после пути к программе. К примеру:

И довершающий шаг, на вкладке Условия убираем галочку напротив «Запускать только при питании от электросети». Теперь OK.

Фух, создаем вторую задачу, и заполняем аналогично для включения APM (только используем аргумент из второго батника). В результате у нас в планировщике должно стать на две задачи больше, запоминаем их имена. Bat-файлы нам больше не понадобятся, можно будет от них избавиться. Последний этап наших изысканий это создание ярлыков на задачи планировщика.

Делаем красиво

C:WindowsSystem32schtasks.exe /run /tn ИмяВашейЗадачи

Создаем ярлык сначала для одной, потом для второй задачи. Получаем два ярлычка, которые кладем в надежное место, и, например, кидаем на панель задач. Для красоты можно применить к ним соответствующие иконки.

Дело сделано

Это всего лишь один из множества вариантов решений, можно использовать другой софт, по своему настроить планировщик. Но суть в том, что мы можем недостаток обернуть себе на пользу. В особенности, если системным диском стоит SSD: жесткий диск при использовании не будет парковаться и раздражать вас фризами, а в отсутствие активности может отключиться(в зависимости от модели), и избавить вас от побочных эффектов своей работы.

Парковка головок жесткого диска: как я с этим боролся

Сообщение 06.01.2017 23:16

Вот решил поднять тему парковок головок жестких дисков.Купил себе очередной жесткий диск WD10EZEX.И поставил как дополнительный к своему SSD.Сам системник у меня тихий.Не прошло много времени и я услышал знакомый звук парковки головок как у серии Green.Сначала подумал что попался брак.Сменил на другой диск.Не поверите тоже самое.Начал лазить в нете добывать информацию.Нашел инфу и понял что люди уже давно над этим борятся.Для жестких дисков фирмы WD существует программа WDIdle3.Благодаря которой я и отключил парковку головок.Вот непосредственно ссылка откуда раздобыл инфу и поборол этот недуг https://www.fobosworld.ru/jelezo/raznoe/69-wdidle3.Буду рад если кому помог.

Сообщение 07.01.2017 01:06

называется покупайте сигейт или тошибу какую

Откуда: до сих пор и не более

Сообщение 07.01.2017 01:34

Сообщение 07.01.2017 01:46

люди об этом давно знают и везде в отзывах написано.

Купил 3 года назад 3 штуки EZRX и сразу везде отключил.

Сообщение 07.01.2017 02:07

на ezex не отключал, не жалуюсь

Сообщение 07.01.2017 02:19

У меня Wd блэк FZEX не паркуется, а вот ноутбучный блэк bpkx паркуется каждые 8 сек. меньше чем за год 350 000 парковок.

Сообщение 07.01.2017 09:58

Сообщение 07.01.2017 12:06

Да, есть такая проблема, постоянно паркуются головки, сомневаюсь что они экономят электричество даже на ноутах, в вот ресурс диска уменьшается в разы.

У кого нет возможности отключить через прошивку (утилитой), можно это сделать программой при загрузке винды (на автомате). Я так сделал на ноутах.

Сообщение 07.01.2017 12:30

Hotty:сомневаюсь что они экономят электричество даже на ноутах, в вот ресурс диска уменьшается в разы.

Тоже считаю что они спецом гробят ресурс. Ладно бы парковка включалась во время простоя и винт отдыхал, так даже во время простоя головки с определенной частотой постоянно клацают

Сообщение 07.01.2017 13:58

The requested URL /jelezo/raznoe/69-wdidle3.Вуду was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Сообщение 07.01.2017 14:17

Сообщение 07.01.2017 14:58

Negatuve:на ezex не отключал, не жалуюсь

Откуда: до сих пор и не более

Сообщение 07.01.2017 17:21

Я б такой винч сразу отнёс бы в магазин на обмен.

Сообщение 19.01.2017 02:43

Парковка головок включена в основном на винтах грин серии и на ноутбучных, у меня на WDC WD10EZEX-00ZF5A0 была отключена по умолчанию, на WDC WD20EARS-00MVWB0 отключил, пробовал отключить на ноутбучном на работе, так оно стало каждую секунду парковать и винда стала жутко лагать, выяснил что можно выставить 12 сек, так и оставил

Сообщение 19.01.2017 09:35

nukeproof:называется покупайте сигейт или тошибу какую

Якраз на Сігейтах ця проблема свого часу була масовою, рішенням до зміни прошивки було створення бат файлу через HDTune, чи як там, для відключення APM і додавання бат до автозавантаження, Сігу так дістали, що вони змушені були відключити APM на рівні нових прошивок!

Отправлено спустя 1 минуту 14 секунд:

Якщо не знаєте про що йде мова йдете лісом

Сообщение 19.01.2017 09:53

Не сочтите нубом, но вопрос по теме.

Стоит ли отключать парковку на винте, который подключен через ЮСБ-карман? (до этого стоял в ноуте)

Сообщение 19.01.2017 10:01

Відключайте якщо знаєте як!

Сообщение 22.01.2017 02:13

На ноутах парковка спасла немало дисков при внезапных ударах.

Сообщение 22.01.2017 02:31

Несколько вопросов от нуба:

1. А зачем нужна парковка головок? Какой смысл в нее вкладывает производитель?

2. И чем она так страшна, что все ее отключают?

3. У меня WD Green стоит вторым винтом. Если его заюзать после простоя, то слышно небольшой щелчок. Если оставить в покое, то спустя ровно 8 сек еще щелчок. Это и есть парковка?

4. На данный момент Виктория показывает 77000 парковок винта. Не много ли это? Диску около 5 лет.

Сообщение 22.01.2017 02:45

1.1. Енергоефективність, особливо якщо ти хостер і тримаєш тисячі-мільйони винтів. Плюс в деяких країнах можна вибити податкові пільги за «зелені» технології.

1.2. Запарковані головки не так бояться ударів, як вже писали вище. Для ноутів все ще актуально.

2. Ресурс паркування обмежений.

300 000 — 1000 000 паркувань в залежності від моделі. І це не дуже багато, при активному користуванні того ж гріна можна за тиждень 20-30 тисяч назбирати. Тому для роботи слід брати винти, які на це розраховані, і не паркуються кожну хвилину, блеки наприклад.

Источник

  • Download application — 29.6 KB
  • Download VS2010 project — 18.7 KB

Image 1

Introduction

This tip is about setting the Advanced Power Management level for your laptop drive in Windows. Well, some hard drives create quite annoying sounds (like hissing and clicks) due to aggressive APM system. I’ve bought a Hitachi HGST drive recently and it creates these nasty sounds and when you are working in silence (or sleeping near), it’s very annoying. It’s said that it may also damage your HDD (at least it will decrease its life). There are several programs but they either aren’t open or vague ports from Linux. I was surprised by the fact that there is no such program. So the old saying is true: If you want to do something better — do it by yourself.

Background

To set APM, you have to send ATA commands to a hard drive. This must be done with DeviceIoControl and for this, you should install Windows DDK with its libraries but we are not going to develop a driver so it would be better to create own small header (atahdd.h in source) with several IOCTL constants and data types. To learn more about ATA commands, see ATA spec.

Basically, you open HDD device with CreateFile("\.PhisycalDrive0 ...), fill in the ATA_PASS_THROUGH_EX structure (with the data buffer if necessary) and send it to drive with DeviceIoControl(hDrive,IOCTL_ATA_PASS_THROUGH...) with an appropriate IOCTL code.
here is an example of Disable APM command:

hDrive = CreateFile(dskName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                0, OPEN_EXISTING, 0, NULL);
BOOL rez = false;
DWORD size1, bytesRet;
ATA_PASS_THROUGH_EX aptex;

aptex.Length = sizeof ATA_PASS_THROUGH_EX;
aptex.AtaFlags = ATA_FLAGS_DATA_IN;
aptex.DataTransferLength = 512;
aptex.DataBufferOffset = sizeof ATA_PASS_THROUGH_EX;    
aptex.TimeOutValue = 1;
aptex.CurrentTaskFile.bCommandReg = ATA_SETFEATURES;
size1 = sizeof ATA_PASS_THROUGH_EX;

aptex.CurrentTaskFile.bFeaturesReg = SETFEATURES_DIS_APM;
aptex.CurrentTaskFile.bSectorCountReg = 0;    

bytesRet = 0;
rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptex, size1, &aptex,
            sizeof ATA_PASS_THROUGH, &bytesRet, NULL);

We place the ATA command and subcommand codes to CurrTaskFile member of ATA_PASS_THROUGH_EX
structure which is an IDEREGS struct. Not all fields are necessary — it depends on ATA command. You must understand what you’re doing — for example don’t send WRITE SECTORS command without a reason.

typedef struct _IDEREGS
{
UCHAR bFeaturesReg;
UCHAR bSectorCountReg;
UCHAR bSectorNumberReg;
UCHAR bCylLowReg;
UCHAR bCylHighReg;
UCHAR bDriveHeadReg;
UCHAR bCommandReg;
UCHAR bReserved;
} IDEREGS;

For ATA SETFEATURES command, we don’t need a data buffer so we use ATA_PASS_THROUGH_EX structure without the buffer. Other ATA commands, like ATA IDENTIFYDEVICE returns data from device, so we need to provide an output buffer. In our case, we might just add 512 bytes of data to the end of ATA_PASS_THROGH_EX
structure. You must set DataTransferLength to 512 for IDENTIFY DEVICE command and DataBufferOffset to sizeof ATA_PASS_THROUGH_EX.

typedef struct _ATA_PASS_THROUGH_EX_WITH_BUFFERS 
{
USHORT    Length;
USHORT    AtaFlags;
BYTE     PathId;
BYTE     TargetId;
BYTE     Lun;
BYTE     ReservedAsUchar;
ULONG     DataTransferLength;
ULONG     TimeOutValue;
ULONG     ReservedAsUlong;
ULONG_PTR DataBufferOffset;
IDEREGS     PreviousTaskFile;
IDEREGS     CurrentTaskFile;
UCHAR ucDataBuf[512];
} ATA_PASS_THROUGH_EX_WITH_BUFFERS;

And here is an example of getting device identification data from HDD:

BOOL rez = false;
DWORD size1, bytesRet;
ATA_PASS_THROUGH_EX_WITH_BUFFERS aptexb;
void *ptr;

aptexb.Length = sizeof ATA_PASS_THROUGH_EX;
aptexb.AtaFlags = ATA_FLAGS_DATA_IN;
aptexb.DataTransferLength = 512;
aptexb.DataBufferOffset = sizeof ATA_PASS_THROUGH_EX;    
aptexb.CurrentTaskFile.bCommandReg = ATA_IDENTIFYDEVICE;
aptexb.CurrentTaskFile.bSectorCountReg = 1;
aptexb.TimeOutValue = 1;
size1 = sizeof ATA_PASS_THROUGH_EX;

bytesRet = 0;
rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptexb, size1, &aptexb,
            sizeof ATA_PASS_THROUGH_EX_WITH_BUFFERS, &bytesRet, NULL);

ptr = (void *)(&aptexb.ucDataBuf);
memcpy(hddid, ptr, sizeof IDENTIFY_DEVICE_DATA);

Don’t miss with sizes in DeviceIoControl according to your command. See more on MSDN:

  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff559309(v=vs.85).aspx
  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff551323(v=vs.85).aspx

To get current APM level, you must read device identification data from drive. The format of this struct is quite tricky (it’s called IDENTIFY_DEVICE_DATA in Windows DDK) but I took it from hdreg.h file for Linux because you won’t find the CurAPMValues field in Microsoft version. The struct also contains a lot of useful data (for example APM support by HDD) — see atahdd.h in project.

Points of Interest

1. The difference in data alignment between OS and Hardware.

The funny thing about some data blocks which are returned by the drive is that they use 1-byte data alignment — but Windows don’t know about that. So when you’re defining these structures you must also define the data alignment with #pragma pack(push,1) and back #pragma pack(pop) like this:

#pragma pack(push, 1)
typedef struct _SMART_ATTRIBUTE
{
	UCHAR Id;
	USHORT StatusFlags;
	UCHAR CurrValue;
	UCHAR WorstValue;
	UCHAR RawData[6];
	UCHAR Rezerved;
} SMART_ATTRIBUTE;

typedef struct _SMART_DATA
 {
	 WORD Version;
	 SMART_ATTRIBUTE Attributes[30];
 } SMART_DATA;
#pragma pack(pop)

2. Output buffer for DeviceIoControl IOCTL_ATA_PASS_THROUGH with ‘Non-Data’ ATA commands.

MS DDK says that you don’t need to provide input/output buffers along with the ATA_PASS_THROUGH_EX structure if an ATA command doesn’t require data. So for the ATA DISABLE/SET APM commands ( which are ‘Non-Data’ commands) you might use ATA_PASS_THROUGH_EX structure without buffers, like this:

rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptex, sizeof ATA_PASS_THROUGH_EX, &aptex,
	sizeof ATA_PASS_THROUGH_EX, &bytesRet, NULL);

This worked fine with the Intel SATA driver, but after I uninstalled it this DeviceIoControl call fails. Now I have a MS ‘ATA Channel 0’ driver and must provide an output buffer even if the ATA DISABLE/SET APM commands don’t get/return any data. I checked this on the four PCs and result was the same.  It seems different ATA drivers have different understanding of ATA specification.

rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptexb, sizeof ATA_PASS_THROUGH_EX, &aptexb,
	sizeof ATA_PASS_THROUGH_EX_WITH_BUFFERS, &bytesRet, NULL);

And now the code works fine with both MS and Intel drivers. So it would be a good idea to provide an output buffer even if the driver does’t return any data. And here is the full example from code:

BOOL SetAPM(HANDLE hDrive, WORD APMVal, BOOL Disable)
{
	BOOL rez = false;
	DWORD size1, bytesRet;
	ATA_PASS_THROUGH_EX_WITH_BUFFERS aptex;

	aptex.Length = sizeof ATA_PASS_THROUGH_EX;
	aptex.AtaFlags = ATA_FLAGS_DATA_IN;
	aptex.DataTransferLength = 512;
	aptex.DataBufferOffset = sizeof ATA_PASS_THROUGH_EX;	
	aptex.TimeOutValue = 3;
	aptex.CurrentTaskFile.bCommandReg = WIN_SETFEATURES;
	aptex.CurrentTaskFile.bSectorCountReg = 0;
	size1 = sizeof ATA_PASS_THROUGH_EX;

		if (Disable)
		{
			aptex.CurrentTaskFile.bFeaturesReg = SETFEATURES_DIS_APM;	
		}
		else
		{
			aptex.CurrentTaskFile.bFeaturesReg = SETFEATURES_EN_APM;		
			aptex.CurrentTaskFile.bSectorCountReg = (BYTE)APMVal;
		}

	bytesRet = 0;
	rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptex, size1, &aptex,
					sizeof ATA_PASS_THROUGH_EX_WITH_BUFFERS, &bytesRet, NULL);
	
	return rez;
}

Conclusion.

Well it looks scary but I think everyone can fill several fields in struct and call one or two API functions … The main thing is — don’t send wrong commands to your HDD.

And don’t forget that you need the administrative rights in Windows7-8 to open HDD device. If you want to disable APM for HDD, then you’ll have to create a task which will run «apmdisable.exe -dis» with maximum rights at startup (or at logon) because after powering off the hard drive will return to its default settings. To get command-line keys for apmdisable.exe, simple run it.

Future Improvements

You may also acquire the SMART data from the HDD in a similar way (you just use an another ATA command). It would be good to check your HDD at startup to see if there are any problems. And you may turn on/off the HDD features with other commands. We even might finish with the thing like hdparm for Linux.

History

  • 08-25-2014 I’ve updated source and article due to serious bug with the output buffer in DeviceIoControl
       which had led to the ‘Invalid Parameters’ error in DeviceIoControl (see «Points of Interest» section above).
  • 19-09-2013 There was a nasty bug with data alignment in structures so I’ve updated source. And now it can
        read the SMART data from device.
  • 19-09-2013 First release.

I’m not a professional programmer, but I’m an engineer and have been ill with programming
since school and now I’m actually writing programs, but… for PLCs.

  • Download application — 29.6 KB
  • Download VS2010 project — 18.7 KB

Image 1

Introduction

This tip is about setting the Advanced Power Management level for your laptop drive in Windows. Well, some hard drives create quite annoying sounds (like hissing and clicks) due to aggressive APM system. I’ve bought a Hitachi HGST drive recently and it creates these nasty sounds and when you are working in silence (or sleeping near), it’s very annoying. It’s said that it may also damage your HDD (at least it will decrease its life). There are several programs but they either aren’t open or vague ports from Linux. I was surprised by the fact that there is no such program. So the old saying is true: If you want to do something better — do it by yourself.

Background

To set APM, you have to send ATA commands to a hard drive. This must be done with DeviceIoControl and for this, you should install Windows DDK with its libraries but we are not going to develop a driver so it would be better to create own small header (atahdd.h in source) with several IOCTL constants and data types. To learn more about ATA commands, see ATA spec.

Basically, you open HDD device with CreateFile("\.PhisycalDrive0 ...), fill in the ATA_PASS_THROUGH_EX structure (with the data buffer if necessary) and send it to drive with DeviceIoControl(hDrive,IOCTL_ATA_PASS_THROUGH...) with an appropriate IOCTL code.
here is an example of Disable APM command:

hDrive = CreateFile(dskName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                0, OPEN_EXISTING, 0, NULL);
BOOL rez = false;
DWORD size1, bytesRet;
ATA_PASS_THROUGH_EX aptex;

aptex.Length = sizeof ATA_PASS_THROUGH_EX;
aptex.AtaFlags = ATA_FLAGS_DATA_IN;
aptex.DataTransferLength = 512;
aptex.DataBufferOffset = sizeof ATA_PASS_THROUGH_EX;    
aptex.TimeOutValue = 1;
aptex.CurrentTaskFile.bCommandReg = ATA_SETFEATURES;
size1 = sizeof ATA_PASS_THROUGH_EX;

aptex.CurrentTaskFile.bFeaturesReg = SETFEATURES_DIS_APM;
aptex.CurrentTaskFile.bSectorCountReg = 0;    

bytesRet = 0;
rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptex, size1, &aptex,
            sizeof ATA_PASS_THROUGH, &bytesRet, NULL);

We place the ATA command and subcommand codes to CurrTaskFile member of ATA_PASS_THROUGH_EX
structure which is an IDEREGS struct. Not all fields are necessary — it depends on ATA command. You must understand what you’re doing — for example don’t send WRITE SECTORS command without a reason.

typedef struct _IDEREGS
{
UCHAR bFeaturesReg;
UCHAR bSectorCountReg;
UCHAR bSectorNumberReg;
UCHAR bCylLowReg;
UCHAR bCylHighReg;
UCHAR bDriveHeadReg;
UCHAR bCommandReg;
UCHAR bReserved;
} IDEREGS;

For ATA SETFEATURES command, we don’t need a data buffer so we use ATA_PASS_THROUGH_EX structure without the buffer. Other ATA commands, like ATA IDENTIFYDEVICE returns data from device, so we need to provide an output buffer. In our case, we might just add 512 bytes of data to the end of ATA_PASS_THROGH_EX
structure. You must set DataTransferLength to 512 for IDENTIFY DEVICE command and DataBufferOffset to sizeof ATA_PASS_THROUGH_EX.

typedef struct _ATA_PASS_THROUGH_EX_WITH_BUFFERS 
{
USHORT    Length;
USHORT    AtaFlags;
BYTE     PathId;
BYTE     TargetId;
BYTE     Lun;
BYTE     ReservedAsUchar;
ULONG     DataTransferLength;
ULONG     TimeOutValue;
ULONG     ReservedAsUlong;
ULONG_PTR DataBufferOffset;
IDEREGS     PreviousTaskFile;
IDEREGS     CurrentTaskFile;
UCHAR ucDataBuf[512];
} ATA_PASS_THROUGH_EX_WITH_BUFFERS;

And here is an example of getting device identification data from HDD:

BOOL rez = false;
DWORD size1, bytesRet;
ATA_PASS_THROUGH_EX_WITH_BUFFERS aptexb;
void *ptr;

aptexb.Length = sizeof ATA_PASS_THROUGH_EX;
aptexb.AtaFlags = ATA_FLAGS_DATA_IN;
aptexb.DataTransferLength = 512;
aptexb.DataBufferOffset = sizeof ATA_PASS_THROUGH_EX;    
aptexb.CurrentTaskFile.bCommandReg = ATA_IDENTIFYDEVICE;
aptexb.CurrentTaskFile.bSectorCountReg = 1;
aptexb.TimeOutValue = 1;
size1 = sizeof ATA_PASS_THROUGH_EX;

bytesRet = 0;
rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptexb, size1, &aptexb,
            sizeof ATA_PASS_THROUGH_EX_WITH_BUFFERS, &bytesRet, NULL);

ptr = (void *)(&aptexb.ucDataBuf);
memcpy(hddid, ptr, sizeof IDENTIFY_DEVICE_DATA);

Don’t miss with sizes in DeviceIoControl according to your command. See more on MSDN:

  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff559309(v=vs.85).aspx
  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff551323(v=vs.85).aspx

To get current APM level, you must read device identification data from drive. The format of this struct is quite tricky (it’s called IDENTIFY_DEVICE_DATA in Windows DDK) but I took it from hdreg.h file for Linux because you won’t find the CurAPMValues field in Microsoft version. The struct also contains a lot of useful data (for example APM support by HDD) — see atahdd.h in project.

Points of Interest

1. The difference in data alignment between OS and Hardware.

The funny thing about some data blocks which are returned by the drive is that they use 1-byte data alignment — but Windows don’t know about that. So when you’re defining these structures you must also define the data alignment with #pragma pack(push,1) and back #pragma pack(pop) like this:

#pragma pack(push, 1)
typedef struct _SMART_ATTRIBUTE
{
	UCHAR Id;
	USHORT StatusFlags;
	UCHAR CurrValue;
	UCHAR WorstValue;
	UCHAR RawData[6];
	UCHAR Rezerved;
} SMART_ATTRIBUTE;

typedef struct _SMART_DATA
 {
	 WORD Version;
	 SMART_ATTRIBUTE Attributes[30];
 } SMART_DATA;
#pragma pack(pop)

2. Output buffer for DeviceIoControl IOCTL_ATA_PASS_THROUGH with ‘Non-Data’ ATA commands.

MS DDK says that you don’t need to provide input/output buffers along with the ATA_PASS_THROUGH_EX structure if an ATA command doesn’t require data. So for the ATA DISABLE/SET APM commands ( which are ‘Non-Data’ commands) you might use ATA_PASS_THROUGH_EX structure without buffers, like this:

rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptex, sizeof ATA_PASS_THROUGH_EX, &aptex,
	sizeof ATA_PASS_THROUGH_EX, &bytesRet, NULL);

This worked fine with the Intel SATA driver, but after I uninstalled it this DeviceIoControl call fails. Now I have a MS ‘ATA Channel 0’ driver and must provide an output buffer even if the ATA DISABLE/SET APM commands don’t get/return any data. I checked this on the four PCs and result was the same.  It seems different ATA drivers have different understanding of ATA specification.

rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptexb, sizeof ATA_PASS_THROUGH_EX, &aptexb,
	sizeof ATA_PASS_THROUGH_EX_WITH_BUFFERS, &bytesRet, NULL);

And now the code works fine with both MS and Intel drivers. So it would be a good idea to provide an output buffer even if the driver does’t return any data. And here is the full example from code:

BOOL SetAPM(HANDLE hDrive, WORD APMVal, BOOL Disable)
{
	BOOL rez = false;
	DWORD size1, bytesRet;
	ATA_PASS_THROUGH_EX_WITH_BUFFERS aptex;

	aptex.Length = sizeof ATA_PASS_THROUGH_EX;
	aptex.AtaFlags = ATA_FLAGS_DATA_IN;
	aptex.DataTransferLength = 512;
	aptex.DataBufferOffset = sizeof ATA_PASS_THROUGH_EX;	
	aptex.TimeOutValue = 3;
	aptex.CurrentTaskFile.bCommandReg = WIN_SETFEATURES;
	aptex.CurrentTaskFile.bSectorCountReg = 0;
	size1 = sizeof ATA_PASS_THROUGH_EX;

		if (Disable)
		{
			aptex.CurrentTaskFile.bFeaturesReg = SETFEATURES_DIS_APM;	
		}
		else
		{
			aptex.CurrentTaskFile.bFeaturesReg = SETFEATURES_EN_APM;		
			aptex.CurrentTaskFile.bSectorCountReg = (BYTE)APMVal;
		}

	bytesRet = 0;
	rez = DeviceIoControl(hDrive, IOCTL_ATA_PASS_THROUGH, &aptex, size1, &aptex,
					sizeof ATA_PASS_THROUGH_EX_WITH_BUFFERS, &bytesRet, NULL);
	
	return rez;
}

Conclusion.

Well it looks scary but I think everyone can fill several fields in struct and call one or two API functions … The main thing is — don’t send wrong commands to your HDD.

And don’t forget that you need the administrative rights in Windows7-8 to open HDD device. If you want to disable APM for HDD, then you’ll have to create a task which will run «apmdisable.exe -dis» with maximum rights at startup (or at logon) because after powering off the hard drive will return to its default settings. To get command-line keys for apmdisable.exe, simple run it.

Future Improvements

You may also acquire the SMART data from the HDD in a similar way (you just use an another ATA command). It would be good to check your HDD at startup to see if there are any problems. And you may turn on/off the HDD features with other commands. We even might finish with the thing like hdparm for Linux.

History

  • 08-25-2014 I’ve updated source and article due to serious bug with the output buffer in DeviceIoControl
       which had led to the ‘Invalid Parameters’ error in DeviceIoControl (see «Points of Interest» section above).
  • 19-09-2013 There was a nasty bug with data alignment in structures so I’ve updated source. And now it can
        read the SMART data from device.
  • 19-09-2013 First release.

I’m not a professional programmer, but I’m an engineer and have been ill with programming
since school and now I’m actually writing programs, but… for PLCs.

Понравилась статья? Поделить с друзьями:
  • Как изменить apk файл на компьютере
  • Как изменить 2 группу инвалидности на первую
  • Как изменить apk файл на андроид
  • Как изменить 100 грамм муки
  • Как изменить apk на ipa