Alter.Org.UA  
 << Back Home RU ru   Donate Donate www/www1/www2

Universal ATA driver for Windows NT3.51/NT4/2000/XP/2003/Vista/7/ReactOS
With PATA/SATA/AHCI 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) or channels
  • Include - force UniATA to initialize specified controller(s)
  • NumberChannels - limit number of available channels on specified controller(s)
  • PortMask - initialize channels (ports) of SATA/AHCI controllers according to bitmask.
  • 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
  • Force80pin - do not check PATA cable type (80/40 pins)
  • ReadCacheEnable - enable/disable IDE device hardware read cache
  • WriteCacheEnable - enable/disable IDE device hardware write cache
  • AdvancedPowerMode - power management
  • AcousticMgmt - acoustic management
  • 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
  • HwFlagsOverride - explicit override of all controller-specific flags for particular device (for debugging), see. bm_devs.h
  • HwFlagsAdd - explicit override of separate controller-specific flags for particular device (for debugging), see. bm_devs.h
  • LogToDisplay - enable/disable output of Debug messages to blue screen during NT4 boot
  • PrintLogo - enable/disable output of UniATA Logo messages to blue screen during NT4 boot
  • IgnoreIsaCompatiblePci - disable support of ISA/PCI Compatible (Legacy) 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
  • IgnoreAhci - disable support of AHCI PCI IDE controllers
  • NativePCIMode - try to switch PCI IDE controllers from Compatible (Legacy) to Native Mode
  • PortBase - base I/O port address for ISA and MicroChannel (MCA) IDE controllers
  • Irq - interrupt vector (IRQ) for ISA and MicroChannel (MCA) IDE controllers
  • VirtualBox - adjust timing options for VirtualBox (deprecated)
  • VirtualMachineType - adjust timing options for specific virtual machine
  • WaitBusyCount - number of BUSY waiting loops
  • WaitBusyDelay - single BUSY wait delay in microseconds.
  • WaitBusyLongCount - number of BUSY waiting loops for long wait cycle
  • WaitBusyLongDelay - single BUSY wait delay in microseconds. (for long wait cycle)
  • WaitDrqDelay - single DRQ wait delay in microseconds.
  • DriveSelectNanoDelay - delay after Drive Select wait in nanoseconds.
  • AtapiSendDisableIntr - don't mask interrupts during ATAPI command sending
  • AtapiDmaZeroTransfer - keep ATAPI device in DMA mode when running commands without data transfer
  • AtapiDmaControlCmd - keep ATAPI device in DMA mode when running control commands with data transfer
  • AtapiDmaRawRead - use DMA when reading raw sectors from CD
  • AtapiDmaReadWrite - use DMA when reading/writing regular (2048 bytes) sectors on CD/DVD
  • AtapiNoDma - do not use DMA for ATAPI

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

Setting this value to DWORD:0x00000001 prevents UniATA from initializing specific channel of controller IDE_I\Chan_C. This value has higher priority than Include.

For example, IDE_1\Chan_0 or Ven_VVVV\Dev_DDDD\Chan_0 prevents UniATA from initializing 2nd channel of Compatible IDE and thus release IRQ 15.

Appeared since UniATA 0.45e


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:NumberChannels (default = 0x00000000)

Setting of this value limits number of available channels.

Appeared since UniATA 0.29a


DWORD:PortMask (default = 0xffffffff)

This parameter allows selective initialization of SATA/AHCI ports. Lower bit corresponds to the 1st channel. Bit value of 1 means that channel should be initialized, 0 - do not touch.

Appeared since UniATA 0.45e


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
                                   0x48        SATA-300
                                   0x49        SATA-600

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:AdvancedPowerMode (default = 0x00000080)

This value manages device power saving mode.

0          disable
0x01       min power, standby allowed
...        intermediate power modes with standby
0x80       min power, standby not allowed (default)
...        intermediate power modes without standby
0xfe       max performance

Appeared since UniATA 0.43c1


DWORD:AcousticMgmt (default = 0x00000080)

This value manages device acoustic management mode.

0          disable
0x80       min acoustic level (default)
...        intermediate acoustic levels
0xfe       max performance

Appeared since UniATA 0.43c1


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...
  • DWORD:GeomType = 0x00000003
    
    User-specified geometry. C/H/S values are read from DWORD:C, DWORD:H, DWORD:S

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


DWORD:VirtualMachineType    (default = 0x00000000)

This value sets virtual machine type and influence on VM-specific driver adjustments.

You can find list of valid values below

0       Autodetect (default)
1       Real PC, not a VM
2       VirtualBox
3       VMWare
4       QEmu
5       Bochs

Appeared since UniATA 0.40a1


DWORD:HwFlagsOverride    (default = 0x00000000)
DWORD:HwFlagsAdd         (default = 0x00000000)

explicit override of all or set separate controller-specific flags for particular device (for debugging)

You can find list of valid values below

UNIATA_SIMPLEX_ONLY     0x40000000
UNIATA_NO_SLAVE         0x20000000
UNIATA_SATA             0x10000000
UNIATA_NO_DPC           0x08000000
UNIATA_NO_DPC_ATAPI     0x04000000
UNIATA_AHCI             0x02000000
UNIATA_NO80CHK          0x01000000

Appeared since UniATA 0.30i


DWORD:Force80pin (default = 0x00000000)

Setting this value to DWORD:0x00000001 prevents UniATA from detecting PATA cable type (80/40 pins). Alows to workaround chips with improper cable detection.

0x00000000 - enable
0x00000001 - disable

Appeared since UniATA 0.45d


UniATA driver home
Please send your comments and propositions here: Mail to alterX@alter.org.ua (remove X)  
<< Back designed by Alter aka Alexander A. Telyatnikov powered by Apache+PHP under FBSD © 2002-2017