Universal ATA driver for Windows NT3.51/NT4/2000/XP With PATA/SATA support
UniATA Registry settings
Overview
UniATA driver can be tuned via Registry keys.
You can create the hierachy of sub-keys with parameters under
HKLM\System\CurrentControlSet\Services\UniATA
Registry key. The most global settings are placed in
HKLM\System\CurrentControlSet\Services\UniATA\Parameters
More specific options can be placed under specially named sub-keys.
When looking for option value driver walk through settings tree in the following order:
Parameters
Parameters\Chan_C
Parameters\Chan_C\Lun_L
Parameters\IDE_I Appeared since UniATA 0.38d
Parameters\IDE_I\Chan_C Appeared since UniATA 0.38d
Parameters\IDE_I\Chan_C\Lun_L Appeared since UniATA 0.38d
for PCI:
Parameters\Ven_VVVV
Parameters\Ven_VVVV\Dev_DDDD
Parameters\Ven_VVVV\Dev_DDDD\Chan_C
Parameters\Ven_VVVV\Dev_DDDD\Chan_C\Lun_L
Parameters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX
Parameters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX\Chan_C
Parameters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX\Chan_C\Lun_L
for ISA: Appeared since UniATA 0.38d
Parameters\ISA_X
Parameters\ISA_X\Chan_C
Parameters\ISA_X\Chan_C\Lun_L
for MicroChannel (MCA): Appeared since UniATA 0.38d
Parameters\MCA_X
Parameters\MCA_X\Chan_C
Parameters\MCA_X\Chan_C\Lun_L
where
C - IDE channel. 0 - Primary, 1 - Secondary. Maximum valid value is 7.
L - Device id on IDE channel. 0 - Master, 1 - Slave).
I - Sequential number of controller in system. Is assigned durring initial device
detection. UniATA looks for ISA-bridged compatible IDE controllers, then for
regular PCI controllers, then for ISA and MicroChannel.
VVVV is Vendor ID (see PCI Dump)
DDDD is Device ID, see the same place.
XXXXXXXX is PCI address in 32-bit form (HEX).
X - Sequential number of ISA or MCA device. 0 and 1 are usually represent Primary
and Secondary IDE controllers. However, if they can be bridged to PCI bus,
it this case 0 and 1 has no meaning for ISA. Maximum valid value is 3.
The last found value overrides all previous occurances.
Example
If we have
Parameters\Ven_8086
DWORD:Exclude=0x00000001
but
Parameters\Ven_8086\Dev_7111
DWORD:Exclude=0x00000000
the final value for
Exclude option for device Ven_8086\Dev_7111 will be 0x00000000.
Options
- Exclude -
prevent UniATA from initializing specified controller(s)
- Include -
force UniATA to initialize specified controller(s)
- ForceSimplex -
do not use controller channels simultaneously
- SkipRaids -
do not initialize IDE Raid controllers
- MaxTransferMode -
specify maximum supported by controller transfer mode (PIO/DMA/UDMA)
- PreferedTransferMode -
specify prefered transfer mode (PIO/DMA/UDMA) for controller or connected device
- ReadCacheEnable -
enable/disable IDE device hardware read cache
- WriteCacheEnable -
enable/disable IDE device hardware write cache
- ReorderEnable -
enable/disable request queue optimal reordering
- GeomType -
select algorithm used for determining logical geometry of hard disks
- Hidden -
hide device
- ReadOnly -
block write requests to HDD
- LogToDisplay -
enable/disable output of Debug messages to blue screen during NT4 boot
- IgnoreIsaCompatiblePci -
disable support of ISA/PCI Compatible IDE controllers or their separate channels
- IgnoreNativePci -
disable support of Native PCI IDE controllers
- IgnoreIsa -
disable support of ISA IDE controllers
- IgnoreMca -
disable support of MicroChannel (MCA) IDE controllers
- PortBase -
base I/O port address for ISA and MicroChannel (MCA) IDE controllers
- Irq -
interrupt vector (IRQ) for ISA and MicroChannel (MCA) IDE controllers
Option details
DWORD:Exclude (default = 0x00000000)
Setting this value to DWORD:0x00000001 prevents UniATA from initializing
controllers
of type (Ven_VVVV\Dev_DDDD)
or vendor (Ven_VVVV)
specified in key name. This value has lower priority
than Include.
Appeared since
UniATA 0.29a
DWORD:Include (default = 0x00000000)
Setting this value to DWORD:0x00000001 forces UniATA to initialize
controllers
of type (Ven_VVVV\Dev_DDDD)
or vendor (Ven_VVVV)
specified in key name. This option
overrides Exclude settings.
Appeared since
UniATA 0.29a
DWORD:ForceSimplex
Setting this value to DWORD:0x00000001 prevents UniATA from using
controller channels simultaneously. In simplex mode only one channel
is functioning at any moment of time. This mode was introduced as
workaround for bugs in the controllers listed below. The default value
is DWORD:0x00000000. But for buggy controllers it is DWORD:0x00000001.
0640/1095 /* CMD 640 known bad, no DMA */
0601/1039
1000/1042 /* RZ 100? known bad, no DMA */
1001/1042
8172/1283 /* IT8172 IDE controller */
Appeared since
UniATA 0.29h
DWORD:SkipRaids (default = 0x00000000)
Setting this value to DWORD:0x00000001 prevents UniATA from initializing
controllers detected as IDE Raid. This value has higher priority
than Include.
Appeared since
UniATA 0.26
DWORD:MaxTransferMode (default = 0xffffffff)
This value sets maximum available transfer mode for specified controller,
IDE channel (Chan_C)
or single IDE\ATAPI device (Chan_C\Lun_L).
If you set speed lower than default for this device nothing outstanding will happen.
It will just become slower. But setting higher value may lead to interesting
results... If there are no backward-compatible newer and faster models, nothing
will happen at all. Because there is no code for switching controller to faster mode.
In this case transfer mode will be set to default. If such models exist, we shall
get to real overclocking :) It may work, may not work, may crash sometimes.
Please find acceptable values below. The vendor (that is me ;) has no responsibility
for results of using other values.
0xffffffff use default 0x20 WDMA/WDMA0
0x00 PIO 0x21 WDMA1
0x01 PIO (no RDY) 0x22 WDMA2
0x08 PIO0 0x40 UDMA/UDMA0 (ATA-16)
0x09 PIO1 0x41 UDMA1 (ATA-25)
0x0a PIO2 0x42 UDMA2 (ATA-33)
0x0b PIO3 0x43 UDMA3 (ATA-44)
0x0c PIO4 0x44 UDMA4 (ATA-66)
0x0d PIO5 0x45 UDMA5 (ATA-100)
0x46 UDMA6 (ATA-133)
0x47 SATA-150
Appeared since
UniATA 0.30i
DWORD:PreferedTransferMode (default = 0xffffffff)
This value sets prefered transfer mode for specified controller, channel or separate device.
This option is intended for initializing device in slower mode than supported.
Cannot exceed MaxTransferMode.
Appeared since
UniATA 0.30i
DWORD:ReadCacheEnable (default = 0x00000001)
This value allows enabling/disabling device read cache.
0x00000000 - disable
0x00000001 - enable
Appeared since
UniATA 0.30i
DWORD:WriteCacheEnable (default = 0x00000001)
This value allows enabling/disabling device write cache.
0x00000000 - disable
0x00000001 - enable
Appeared since
UniATA 0.30i
DWORD:ReorderEnable (default = 0x00000001)
This value allows enabling/disabling device request queue reordering for best performance.
0x00000000 - disable
0x00000001 - enable
Appeared since
UniATA 0.31
DWORD:GeomType (default = 0xffffffff)
This value selects prefered method for determining drive geometry (number of cylinders,
heads and sectors per track). It is known, that for a long time these parameters have no
physical meaning and describe so called logical geometry (for compatibility issues).
The trouble is that numerous drives report logical geometry which doesn't correspond
their real capacity. Thus, the driver must invent this geometry itseves. There are several methods:
-
DWORD:GeomType = 0x00000000
"Standard" - 63 sectors per track, 255 heads and calculated number of cylinders.
Can be used with drives up to 502 Gb (or 539 commercial Gb, those are 1000000000 bytes)
-
DWORD:GeomType = 0x00000001
"UniATA" - the history of appearance of this methos is lost in the past. At the first, UniATA attempts
to fit number of heads and sectors per track into 1-127 range. If not succeded, the range is extended to
1-32767. Number of cylindes is always kept less than 65536. This method makes rather inessential capacity limitation
- 36000 terabytes.
-
DWORD:GeomType = 0x00000002
Keep original geometry reported by the device. There is high probability, that not all disk space will be available.
But if some one need such mode, let it be...
Appeared since
UniATA 0.31e
DWORD:Hidden (default = 0x00000000)
This value allows to disable device detection and initialization. Further you
can enable device with atactl.exe.
Also note, that hidden devices can be accessed with special IOCTLs via UniATA communication virtual device.
0x00000000 - enable
0x00000001 - disable
Appeared since
UniATA 0.38d
DWORD:ReadOnly (default = 0x00000000)
This value allows to enable write protection on HDD.
-
DWORD:ReadOnly = 0x00000000
operate normally, no write protection.
-
DWORD:ReadOnly = 0x00000001
return error for all write requests.
-
DWORD:ReadOnly = 0x00000002
ignore write requests and return successfull status
Appeared since
UniATA 0.39d
DWORD:LogToDisplay (default = 0x00000000)
This value enables/disables output of Debug messages to display (on blue screen during NT4 boot).
This option is available with Debug build of UniATA only.
It shall not work with newer OSes.
0x00000000 - disable
0x00000001 - enable
Appeared since
UniATA 0.31b
DWORD:IgnoreIsaCompatiblePci (default = 0x00000000)
Setting this value to DWORD:0x00000001 prevents UniATA from detecting and initializing
PCI IDE controllers operating in ISA Compatible Mode or its Primary/Secondary channel.
Usually, these are onboard IDE controllers. This value has higher priority
than Include.
0x00000000 - enable
0x00000001 - disable
Appeared since
UniATA 0.31b
DWORD:IgnoreNativePci (default = 0x00000000)
Setting this value to DWORD:0x00000001 prevents UniATA from detecting and initializing PCI IDE
controllers operating in Native Mode.
Usually, these are additional IDE/RAID controllers. This value has higher priority
than Include.
0x00000000 - enable
0x00000001 - disable
Appeared since
UniATA 0.31b
DWORD:IgnoreIsa (default = 0x00000000)
Setting this value to DWORD:0x00000001 prevents UniATA from detecting and initializing ISA IDE
controllers.
Usually, these are onboard IDE controllers on old Motherboards. This value has higher priority
than Include.
0x00000000 - enable
0x00000001 - disable
Appeared since
UniATA 0.31b
DWORD:IgnoreMca (default = 0x00000000)
Setting this value to DWORD:0x00000001 prevents UniATA from detecting and initializing MCA IDE
controllers.
Usually, these are onboard IDE controllers on old Motherboards. This value has higher priority
than Include.
0x00000000 - enable
0x00000001 - disable
Appeared since
UniATA 0.31b
DWORD:PortBase
DWORD:Irq
These values set base address of control ports I/O range and interrupt vector (IRQ) for ISA and MCA controllers.
Please find "standard" values (used by default). Two first ones are quite standard, I'm not sure if you need
to tune them. But you may need to tune other two ones. Especially if you use additional ISA IDE controllers,
e.g. from ESS-1868.
ISA_0 PortBase 0x1F0 Irq 14
ISA_1 PortBase 0x170 Irq 15
ISA_2 PortBase 0x1E8 Irq 11
ISA_3 PortBase 0x168 Irq 10
Appeared since
UniATA 0.38d
UniATA driver home
Please send your comments and propositions here: alterX@alter.org.ua (remove X)
|