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

UniATA TroubleShooter/FAQ

Answers

Q: Which .INF should be used and which controller should be chosen from list ?
A1: Really, this doesn't make sense to driver. But it is important to PnP manager, which controls driver loading. Unfortunately, I'm don't know how to create universal INF clearly. So, you may try to install "Standard Dual Channel PCI BusMaster IDE Controller" from ATA version of .INF (the one with 'h' suffix in filename). If system decide that some other driver match your controller better, try to chose your controller in list. If this doesn't work too, try the same with SCSI version of .INF (the one without 'h' suffix in filename).
A2: Brutal way. Force PnP manager to load UniATA regardless of presence of matching (from PnP manager's point of view) devices:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#CC_0101]
"Service"="uniata"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\primary_ide_channel]
"Service"="uniata"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\secondary_ide_channel]
"Service"="uniata"
Alternatively, you can install UniATA in old good way - via .REG file (uniata_w2k.reg). Works not only under 2000, but under XP too.

Q: How to integrate UniATA into WinPE ?
A: Information is taken from KtP's site - http://bearwindows.zcm.com.au/winnt4.htm, this methos works for WinPE too.
  • copy uniata.sys to \I386 (\minint)
  • make the following changes in txtsetup.sif
[SourceDisksFiles]

...
uniata.sys = 1,,,,,,_3,4,0,0
...

[SCSI.Load]
uniata = uniata.sys,4 ;must be first line!!!
...

[SCSI]
...
uniata = "Universal ATA driver"
...

Q: It doesn't work with my (new) machine, HDD, CD/DVD...
A: Unplesant thing. But the problem is fixable. I would be very thankful, if you attach to your bug-report letter the following information:
  • what happens, how particulary it doesn't work,
  • OS version (e.g. Windows 2000 sp3),
  • UniATA driver version (e.g. uniata 30g),
  • full dump of your PCI devices derived with PciDumpc.exe utility
    http://alter.org.ua/soft/win/ntpcidump
  • and list of devices, connected to IDE bus (e.g. Primary Master - HDD, Secondary Master - CD-ROM, Secondary Slave - ZIP). The list of IDE devices can also be obtained with atactl.exe. This utility is included in UniATA package since v 0.30g. It doesn't require driver to be installed.
  • if blue screen appears, please make photo or any other kind of snapshot of displayed info.
This will help me to find what goes wrong much quicker.

Q: After installing UniATA driver system goes to reboot instantly.
A: Most probably it should be a Blue Screen of Death. To make sure and get more details about error please do the following:
  • remove driver from system (see also How to remove UniATA using direct Registry access ?)
  • enter My Computer -> Properties -> Advanced -> Startup and Recovery -> Parameters
  • un-check Automatically reboot checkbox
  • install driver again
  • if blue screen appears, please make photo or any other kind of snapshot of displayed info.

Q: Works, but with some problems.
A: I'll need debug messages:
  • install DbgPrint Dump:
    DbgPrintLog.exe -full -T DTN -wd X:\dir_for_logs -drv 1 -svc A -drvopt DoNotPassMessagesDown 1
        -drvopt StopOnBufferOverflow 1 -drvopt BufferSize 16384 -ovw --nowait DbgDump_init.log
    
    Note 1: replace X:\dir_for_logs with proper directory name (it must exist).
    Note 2: Pay attention, that you shall derive single command line when making copy/paste.
  • replace uniata.sys in System32\drivers directory for Debug-version.
  • reboot computer
  • log into in system
  • take logs from X:\dir_for_logs directory (file is named DbgDump_init.log). These logs shall describe driver init process.
  • change settings of DbgPrint Dump:
    DbgPrintLog.exe -drv M -svc M -drvopt DoNotPassMessagesDown 1
        -drvopt StopOnBufferOverflow 0 -drvopt BufferSize 16384
    
  • and run it again:
    DbgPrintLog.exe -full -T DTN -wd X:\dir_for_logs -ovw DbgDump.log
    
  • reproduce your problem
  • stop logging tool (press Esc in its console) and get logs (file is named DbgDump.log).
  • send me all captured logs. And please, pack them with ZIP or some other archiver.
PS. You can find more detailed HOWTO for getting logs here: WinDbg HOWTO for QA engineers
Q: When installing UniATA in NT4 together with OS (when NT4 setup prompts for Addiditonal SCSI/RAID controllers) the following error messages appear:
  File caused an unexpected error (0) at
  line 1213 in D:\nt\private\ntos\boot\setup\oemdisk.c.

  Press any key to continue
.........................
  File caused an unexpected error (0) at
  line 1607 in D:\nt\private\ntos\boot\setup\arcdisp.c.

  Press any key to continue
then Page Fault comes.
A: Seems I have fixed it in 29b. But if it doesn't work, try this:
After 1st stage of file copying, during reboot, insert floppy/CD and boot from it. Then substitute atapi.sys from temporary folder for uniata.sys from UniATA distribution (rename atapi.sys, of course to be able to roll back). Reboot and continue installation. But already with new ATA driver.

Q: Device manager reports resource conflict...
A: Don't how to fix it. But it doesn't hinder to live.
You can check which driver handles your controllers with latest atactl.exe utility.

Q: Hibernate doesn't work after installing UniATA under w2k/XP.
A: I know. Now I'm thinking how to fix it.

Q: How to build UniATA from sources ?
A: Since now each archive with sources includes building.txt file. Among this you can read build-related information here: http://alter.org.ua/soft/win/uni_ata/building.txt

Q: How to remove UniATA using direct Registry access ?
A:
NT4
  • Set
    [HKLM\System\CurrentControlSet\Services\Atapi]
    "Start"=dword:00000000
    
  • Remove
    [HKLM\System\CurrentControlSet\Services\UniATA]
    
w2k/XP
  • Set
    [HKLM\System\CurrentControlSet\Services\Atapi]
    "Start"=dword:00000000
    [HKLM\System\CurrentControlSet\Services\PciIde]
    "Start"=dword:00000000
    [HKLM\System\CurrentControlSet\Services\PciIdex]
    "Start"=dword:00000000
    
  • Look at
    [HKLM\System\CurrentControlSet\Services\UniATA\Enum]
    
  • Find there values similar to the following
    "1"="PCI\VEN_1106&DEV_0571&SUBSYS_05711106&REV_06\2&ebb567f&0&39"
    "2"="PCI\VEN_1095&DEV_0649&SUBSYS_06491095&REV_02\2&ebb567f&0&48"
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    and remember the underlined part of these strings
  • Go to
    [HKLM\System\CurrentControlSet\Enum\PCI]
    
    and find there Keys with previously remembered names. In my case these would be the following:
    [HKLM\System\CurrentControlSet\Enum\PCI\VEN_1106&DEV_0571&SUBSYS_05711106&REV_06]
    [HKLM\System\CurrentControlSet\Enum\PCI\VEN_1095&DEV_0649&SUBSYS_06491095&REV_02]
    
    and in all sub-Keys change
    [HKLM\System\CurrentControlSet\Enum\PCI\VEN_1106&DEV_0571&SUBSYS_05711106&REV_06\2&ebb567f&0&48]
    "Service"="UniATA"
    
    to
    [HKLM\System\CurrentControlSet\Enum\PCI\VEN_1106&DEV_0571&SUBSYS_05711106&REV_06\2&ebb567f&0&48]
    "Service"="Atapi"
    
    Note, "Atapi" - is a kind of generic IDE driver. There are still 2 possible generic drivers - "pciide" and "pciidex". For Intel ATA controllers you probably should use "intelide", for VIA - "viadsk" or "viaide". You can look for suitable candidates in the following Registry subkey:
    [HKLM\System\CurrentControlSet\Services]
    
  • Look in the following sub-keys:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#CC_0101]
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\primary_ide_channel]
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\secondary_ide_channel]
    
    You may need to adjust "Service" value there too.
  • Remove
    [HKLM\System\CurrentControlSet\Services\UniATA]
    
If CurrentControlSet doesn't exist - this happens when you work in ERD commander or connected to registry from another OS on the same machine - look here:
[HKEY_LOCAL_MACHINE\SYSTEM\Select]
"Current"=dword:00000001
This value specifies number of the ControlSet, which is used as Current. In this example you should use ControlSet001 instead of CurrentControlSet.

See also:


UniATA driver home
Mail me here: Mail to alterX@alter.org.ua (remove X)  
<< Back designed by Alter aka Alexander A. Telyatnikov powered by Apache+PHP under FBSD © 2002-2014