Alter.Org.UA Vote Against Software Patents
 << Back Home RU ru   www/www1/www2

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)
<< Back designed by Alter aka Alexander A. Telyatnikov powered by Apache+PHP under FBSD © 2002–2007