Универсальный драйвер, твой выход из сумрака
Время на прочтение3 мин
Количество просмотров63K
Вот есть же на свете люди, которые в одиночку пилят свои гениальные долгострои, бросают, снова продолжают… А об их проектах никто не знает. Alter, автор драйвера UniATA, один из них.
Подготавливая очередной топик с новостями из жизни команды ReactOS, я с изумлением осознал факт, что такая гениальная разработка как UniATA не только ни разу не упоминалась на хабре, но так и пользуется незаслуженным забвением в интернете. UniATA — это универсальный во всех смыслах этого слова драйвер ATA-устройств, разрабатываемый с 2002 года. Ключевой особенностью является то, что драйвер не требует переустановки OS при смене IDE контроллера или мaтеринской платы.
Проект остро нуждается в тестерах!
UPD Alter обнаружил этот топик и получил +10 к морали, в результате вышла
Версия 0.42h
- Первые тесты AHCI ATAPI прошли успешно.
- SATA и AHCI ATAPI теперь не переключаются в PIO-режим для исполнения команд отличных от чтения и записи.
- Добавлена поддержка эмуляции SCSI-команд READ16/WRITE16/VERIFY16/READ_CAPACITY16. Это нужно для расширения адресного пространства LBA до 64 бит, что дает возможнлсть работать с дисками более 2Тб, которые используют более 32 бит для LBA. Note: дисковые драйверы верхнего уровня тоже должны поддерживать эту возможность.
UniATA на данный момент обеспечивает поддержку:
- NT3.51 (в т.ч. на i386), NT4, 2000, XP, 2003, 2005, Vista, 7, ReactOS
- всей линейки режимов DMA, UDMA0-UDMA6 (ATA-16/25/33/44/66/100/133) на известных контроллерах и базового DMA — на совместимых
- жестких дисков объемом больше 128Gb (LBA-48, EnableBigLba)
- SerialATA (SATA, SATA-2, SATA-3), AHCI rev. 0.95 — 1.30
- большого списка IDE controllers, а также любых других ATA/ATAPI совместимых контроллеров.
- горячая замена IDE устройств в OS младше w2k
- внутреннюю очередь команд и исполнение операций чтения/записи в более оптимальной последовательности
- user-mode утилиту atactl для управления ATA/ATAPI устройствами. Можно находу менять режим передачи данных (PIO/DMA/UDMA).
- настройки кеширования, скорости и многого другого в Registry
- список плохих/ненадежных блоков, чтобы драйвер не мучал диск, а сразу возвращал ошибку (Nikolai Vorontsov).
Зачем и кому нужен такой драйвер? Рассказываю: UniATA имеет смысл поставить, если к новой материнской плате не прилагаются драйвера для вашей старой операционки. Или наоборот — есть старая плата, на которую нужно водрузить новую винду. Конечно, есть стандартные встроенные драйвера, которые наверняка это железо опознают и будут с ним работать. Но как… В PIO режиме, т.е. 0.5-3 Мб/сек. А UniATA будет работать в DMA или UltraDMA режиме, что существенно (иногда даже в 10 раз) быстрее. А вот еще одна проблема — новые винты объемом больше 128 Гб (LBA-48 или BigLba). В старых операционках их поддержка не предусмотрена вообще, а новые требуют последних Service Pack’ов. Поддержка таких винтов в UniATA встроена. И наконец — ситуация смены материнской платы. Обычно это нетривиальная задача. Если просто сделать замену, драйвера от предыдущей платы не опознают новый IDE контроллер и система не загрузится. Придется возвращать плату назад, принудительно менять драйвера на стандартные, снова менять плату и устанавливать новые. О том, чтобы ходить со своим загрузочным винчестеров к друзьям в гости (или на работу) можно забыть (либо довольствоваться скоростью 0.5-3 Мб/сек). Поскольку UniATA поддерживает большой список контроллеров и в дополнение к списку понимает почти любые стандартные (обычные onboard primary/secondary), такая проблема тоже оказывается решенной. UniATA также понимает новые SATA и AHCI контроллеры. Ниже можно почитать более подробный (и более технический) список полезностей.
Скачать сам драйвер, исходники, посмотреть историю версий можно по ссылке
alter.org.ua/ru/soft/win/uni_ata
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
I’m not sure if you can replace PCIIDE.SYS with UNIATA, since PCIIDE (and PCIIDEX) is used by other ATA drivers like port driver. It does common work for ATA controllers and leave controller-specific staff for vendor’s drivers.
To avoid conflicts I tried to disable both these drivers.
UNIATA can be used instead of other drivers of onboard dual-channel IDE controllers in most cases.
I know only about some problems with ICH4, but there was no possibility to debug driver with this controller.
Another thing, that I was proposed is to add the following registry values:
HKLM, "system\currentcontrolset\control\CriticalDeviceDatabase\pci#CC_0101", "Service", %REG_SZ%, "uniata"
HKLM, "system\currentcontrolset\control\CriticalDeviceDatabase\primary_ide_channel", "Service", %REG_SZ%, "uniata"
HKLM, "system\currentcontrolset\control\CriticalDeviceDatabase\secondary_ide_channel", "Service", %REG_SZ%, "uniata"
this guarantees, that UNIATA shall be loaded by PNP manager, but I could not integrate these settings into INF file.
What about 2 INFs for XP:
I’ve made them because it doesn’t matter for driver, how the controller is exposed to system in device manager. Because actually system requires storage devices to be representred as SCSI. There is some difference for PNP manager only. In some cases it likes MassStorage/SCSI INF, in other — IDE. I don’t know why.
I’d be thankful for any help on it.
We finally entered the «Universal driver» era; so, after the Universal VGA/SVGA driver, here’s the news:
Who and why need this driver ? Let me tell you: it worth installing UniATA if vendor of your new motherboard do not want to supply you with drivers for your old OS. Or vice versa, you have old motherboard and want to install new Windows with it. Of course, it is possible to use standard (generic) drivers those most probably supports this hardware. But what about performance ? You will have PIO mode with 0.5 — 3 Mb/sec transfer rate. UniATA shall use DMA or UltraDMA and have up to 10 times better performance. There is still one common problem with modern hard driver of more than 128 Gb capacity (also known as LBA-48 or BigLba). Old OSes do not support such drives at all, new ones require latest Service Packs. UniATA has built-in support for large drives. And at last — upgrade or downgrade of the motherboard. If you simply connect your harddisk to different motherboard, the driver of the previous one shall not recognize new IDE controller. And the system shall not boot. You will have to connect everything back, change IDE drivers to generic ones, reboot and reconnect hardware again, then change drivers to new ones. You cannot even think about walking with bootable harddrive to some other computers. Or resign yourself to have 0.5 — 3 Mb/sec transfer rate. Since UniATA supports numerous IDE controllers and in addition is capable of driving all standard (onboard primary/secondary) controllers, this problem also appears to be solved. Below you can find more detailed and more technical feature list.
Supported devices:
* Acard ATP850 ATA-33, ATP860A ATA-66, ATP860R ATA-66, ATP865A ATA-133, ATP865R ATA-133
* ALI M5289 SATA, M5288 SATA2, M5287 SATA, M5281 SATA
M5229 UDMA6 ATA-133, M5229 UDMA5 ATA-100, M5229 UDMA4 ATA-66
M5229 UDMA2 ATA-33, M5229 WDMA2 IDE DMA
* AMD 756 ATA-66, 766 ATA-100, 768 ATA-100, 8111 ATA-133
* ATI IXP200 ATA-100, IXP300 ATA-133, IXP400 ATA-133
IXP300 SATA, IXP400 SATA, IXP400 SATA
* HighPoint HPT372 ATA-133, HPT370 ATA-100, HPT368 ATA-66, HPT366 ATA-66
HPT372 ATA-133, HPT372 ATA-66, HPT302 ATA-133, HPT371 ATA-133, HPT374 ATA-133
* Intel PIIX IDE DMA, PIIX3 IDE DMA, PIIX4 ATA-44, PIIX4 ATA-33, PIIX4 ATA-33
ICH0 ATA-33, ICH ATA-66, ICH ATA-66
ICH2 ATA-100, ICH2 ATA-100, ICH3 ATA-100, ICH3 ATA-100
ICH4 ATA-100, ICH4 ATA-100
ICH5 EB ATA-100,ICH5 EB1 SATA, ICH5 EB2 SATA
6300ESB ATA-100, 6300ESB1 SATA, 6300ESB2 SATA
ICH6 ATA-100, ICH6 SATA, ICH6M SATA
ICH7 ATA-100, ICH7 SATA2
63XXESB2 ATA-100, 63XXESB2 SATA2
ICH8 SATA2, ICH8M SATA2
* nVidia nForce ATA-100
nForce2 ATA-133, nForce2 Pro ATA-133, nForce2 Pro S1 SATA
nForce3 ATA-133, nForce3 Pro ATA-133, nForce3 Pro S1 SATA, nForce3 Pro S2 SATA
nForce MCP ATA-133, nForce MCP S1 SATA, nForce MCP S2 SATA
nForce CK804 ATA-133, nForce CK804 S1 SATA2, nForce CK804 S2 SATA2
nForce MCP51 ATA-133, nForce MCP51 S1 SATA2, nForce MCP51 S2 SATA2
nForce MCP55 ATA-133, nForce MCP55 S1 SATA2, nForce MCP55 S2 SATA2
* National Geode SC1100 ATA-33
* Promise PDC20246 ATA-33, PDC20262 ATA-66, PDC20263 ATA-66
PDC20265 ATA-100, PDC20267 ATA-100, PDC20268 ATA-100, PDC20269 ATA-133
PDC20270 ATA-100, PDC20271 ATA-133, PDC20275 ATA-133, PDC20276 ATA-133, PDC20277 ATA-133
PDC20318 SATA, PDC20319 SATA, PDC20371 SATA, PDC20375 SATA
PDC20376 SATA, PDC20377 SATA, PDC20378 SATA, PDC20379 SATA
PDC20617 ATA-133, PDC20618 ATA-133, PDC20619 ATA-133, PDC20620 ATA-133
* ServerWorks ROSB4 ATA-33, CSB5 ATA-100, CSB5 ATA-66, CSB6 ATA-100, CSB6 ATA-66
HT1000 ATA-100, HT1000 SATA, HT1000 SATA, K2 SATA, Frodo4 SATA, Frodo8 SATA
* SiI 3114 SATA, 3512 SATA, 3112 SATA
0680 ATA-133
* CMD 649 ATA-100, 648 ATA-66, 646U2 ATA-33, 646 IDE DMA, 640 IDE
* SiS ATA-xxx
* VIA ATA-xxx, 6410 ATA-133, 6420 SATA, 6421 SATA, 8237A SATA
* Cypress 82C693 IDE DMA
* Cenatek Rocket Drive IDE DMA
* Cyrix 5530 ATA-33
* RZ 100x IDE
* ITE IT8172 ATA-33, IT8212F ATA-133
* HiNT VXII EIDE IDE DMA
Marco Ravich
—
>>Forward Agency
In progress we (always) trust.
Tired of slightly newer motherboards preventing you from installing your favorite operating system? Well say no more! Simply use this SATA driver to enjoy even Windows NT 3.51 on newer hardware! Just be sure to use accessories and components that have compatible drivers! No more blue screens of death just because the manufacturer refuses to provide a driver themselves! Take control of your PC and enjoy; the way you want it!
Features:
-PATA/SATA/AHCI support
-DMA/UDMA support (up to ATA-133) on known and generic DMA on unknown controllers.
-128gb+ hard drive support.
-2TB+ hard drive support.
-SATA, SATA-2, and SATA-3.
-AHCI rev. 0.95 — 1.30 support.
-Support of contiguous set of modes UDMA0-UDMA6.
-Support of many IDE controllers and generic ATA/ATAPI.
-No reinstall required for migrating to different IDE controller or motherboard.
-Change data transfer mode (PIO/DMA/UDMA) on the fly.
-Tweaking of cache, transfer modes and many other registry settings.
-List of bad/unreliable blocks, to prevent driver from treating HDD but return error immediately.
-NEW SCT Command Transport support (used by smartmontools)
-Hot swap for IDE devices under OSes prior older than Windows 2000
Requirements:
-Windows NT3.51/NT4/2000/XP/2003/Vista/7/ReactOS
Instructions:
1. Unzip files into folder.
2. Search for a readme file. Ensure the file matches your operating system!
3. Follow given instructions!
Notes:
-This SATA driver does not support RAID!
-Driver does NOT support Windows 9x! You will need this [link to be added] driver instead!
—This driver should be implementable through nLite or NTLite, if desired to make a fresh installation with bundled drivers.
Components:
BusMaster_v47a (200KB)
Screenshots:
[To be added]
-
Собственно написал я ATA драйвер, который должен работать в всех OS семейства NT и со всеми более-менее стандартными ATA контроллерами:
http://alter.org.ua/soft/win/uni_ata/
Приглашаются желающие потестировать, что-нибудь дописать или покритиковать
На текущий момент состояние примерно такое:
1) Понимает (по крайней мере должен) кучу ATA контроллеров.
Сейчас протестирован на ряде VIA, piix4e (поглкивает),
ICHxxx (кроме ICH4, на которов виснет),
некоторых SiS и некоторых Ali.
2) Работает в NT4, 2000 и XP. В 2003 не пробовал.
3) Умеет LBA48.
4) Не всегда ставится из INF’а
PS. Установлен у меня во всех OS’ах
самые последние alpha- здесь:
http://alter.org.ua/soft/win/uni_ata/BusMaster_v30j1.rar
http://alter.org.ua/soft/win/uni_ata/BusMaster_v30j1_Dbg.rar
http://alter.org.ua/soft/win/uni_ata/BusMaster_v30j1_src.rar
—
Alter, http://alter.org.ua
-
je_
New Member
- Публикаций:
-
0
- Регистрация:
- 27 янв 2004
- Сообщения:
- 143
а ZeroFill это ATA комманда?
-
AFAIK, есть
1) SECURITY_ERASE_UNIT для обнуления поверхности и
2) CFA_ERASE_SECTORS — для очистки оддельных секторов на Compact Flash с IDE интерфейсом
еще конечно существует
3) FORMAT_TRACK, но оня уже давно ушла в разряд vendor-specific & not recommended to be used.
—
Alter, http://alter.org.ua