Alter.Org.UA
 << Back Home EN en   Donate Donate

UniATA TroubleShooter/FAQ

Answers

Q: Из какого .INF устанавливать и какой контроллер выбирать в списке ?
A1: На самом деле это не имеет значения. Для драйвера. А вот для PnP-менеджера, управляющего загрузкой драйверов, - имеет. К сожалению я пока не знаю какое именно. Есть смысл сначала попробовать поставить "Standard Dual Channel PCI BusMaster IDE Controller" из ATA версии INF'а (это та, что с суффиксом 'h' в конце имени файла). Если система будет считать, что есть более подходящий драйвер, попробовать уже точно указать модель. Если и это не помогает - тогда то же самое со SCSI версией .INF'а (без суффикса 'h' в конце имени файла).
A2: Установить жестким хаком. А именно - заставить PnP грузить UniATA независимо от наличия подходящего (с точки зрения PnP менеджера) контроллера:
[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"
Либо вообще установить старым добрым методом - через .REG файл (uniata_w2k.reg). Подходит не только для 2000, но и для XP.

Q: Как прикрутить UniATA к дистрибутиву WinPE ?
A: Взято с сайта KtP - http://bearwindows.zcm.com.au/winnt4.htm, говорят, для WinPE этот метод тоже работает.
  • скопируйте uniata.sys в \I386 (\minint)
  • отредактируйте 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: А у меня (на новой машине, с моим новым HDD, CD/DVD) не работает...
A: Нехорошо конечно. Но принципиально поправимо. Я буду очень благодарен, если в bug-report'е вы укажите:
  • как именно не работает,
  • версию вашей ОС (например Windows 2000 sp3),
  • версию UniATA (например uniata 30g),
  • результаты работы утилиты PciDumpc.exe
    http://alter.org.ua/soft/win/ntpcidump
    - полную информацию о PCI устройствах,
  • а также список IDE устройств (например Primary Master - HDD, Secondary Master - CD-ROM, Secondary Slave - ZIP). Список IDE устройств можно получить при помощи утилиты atactl.exe, входящей в комплект поставки начиная с версии 0.30g, установка самого драйвера для этого не требуется.
  • если появляется синий экран, сфотографируйте или запишите что там было.
Это очень поможет мне разобраться, что же именно не работает.

Q: После установки UniATA машина постоянно перезагружается.
A: Скорее всего это должен был быть синий экран. Чтобы убедиться, а заодно узнать детали происходящего сделайте вот что:
  • удалите драйвер из системы (см. также Как удалить UniATA используя прямой доступ к Registry ?)
  • зайдите в Мой компьютер -> Свойства -> Дополнительно -> Загрузка и восстановление -> Параметры, а английской системе это будет My Computer -> Properties -> Advanced -> Startup and Recovery -> Parameters
  • снимите отметку Выполнить автоматическую перезагрузку (Automatically reboot)
  • снова установите драйвер
  • если появляется синий экран, сфотографируйте или запишите что там было.

Q: Работает, но как-то не так.
A: Потребуется собрать логи:
  • установите 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: Вместо X:\dir_for_logs подставьте имя каталога, который реально существует на вашем компьютере.
    Note 2: При копировании обратите внимание, что это все должна быть одна строка.
  • замените драйвер uniata.sys в каталоге System32\drivers на Debug-версию.
  • перезагрузитесь и после входа в систему заберите из каталога X:\dir_for_logs полученые логи. (файл DbgDump_init.log) Это будет информация о инициализации драйвера.
  • измените настройки DbgPrint Dump:
    DbgPrintLog.exe -drv M -svc M -drvopt DoNotPassMessagesDown 1
        -drvopt StopOnBufferOverflow 0 -drvopt BufferSize 16384
    
  • снова запустите сборщик логов:
    DbgPrintLog.exe -full -T DTN -wd X:\dir_for_logs -ovw DbgDump.log
    
  • воспроизведите проблему
  • остановите сбор логов (Esc в его консоли) и заберите логи.
  • отправьте все собранное мне, желательно в архиве.
PS. Более подробно о сборе логов написано здесь: WinDbg HOWTO для тестировщиков
Q: При установке в NT4 вместе с OS (когда инсталятор спрашивает про Дополнительные SCSI/RAID контроллеры) выдается ошибка
  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
и наступает Page Fault.
A: Кажется в 29b исправил. Но если все равно не работает, попробуйте вот что:
После первой фазы копирования файлов во время reboot'а загрузиться с дискеты/CD и подменить файл atapi.sys (хранится во временном каталоге) на uniata.sys (переименовав atapi.sys, естественно, чтобы иметь путь к отступлению). После этого перезагрузиться и продолжить установку. Но уже с другим драйвером.

Q: В Менеджере Устройств пишется Конфликт Ресурсов...
A: Пока не знаю как исправлять. Жить не мешает.
На всякий случай можно проверить, каким драйвером обслуживаются ваши контроллеры с помощью свежей утилиты atactl.exe.

Q: После установки UniATA в w2k/XP перестал работать hibernate.
A: Знаю. Пока думаю как исправлять.

Q: Как собрать UniATA из исходников ?
A: Отныне в архив с исходниками вложен файл building.txt. Кроме того, о сборке UniATA можно почитать здесь: http://alter.org.ua/soft/win/uni_ata/building.txt

Q: Как удалить UniATA используя прямой доступ к Registry ?
A:
NT4
  • Установить
    [HKLM\System\CurrentControlSet\Services\Atapi]
    "Start"=dword:00000000
    
  • Удалить
    [HKLM\System\CurrentControlSet\Services\UniATA]
    
w2k/XP
  • Установить
    [HKLM\System\CurrentControlSet\Services\Atapi]
    "Start"=dword:00000000
    [HKLM\System\CurrentControlSet\Services\PciIde]
    "Start"=dword:00000000
    [HKLM\System\CurrentControlSet\Services\PciIdex]
    "Start"=dword:00000000
    
  • Заходим в
    [HKLM\System\CurrentControlSet\Services\UniATA\Enum]
    
  • Находим там значения вида
    "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"
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    и запоминаем подчеркнутую часть
  • Заходим в
    [HKLM\System\CurrentControlSet\Enum\PCI]
    
    и находим там ключи с именами, которые мы запомнили в предудущем пункте. В моем примере это будут
    [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]
    
    а во всех их подключах меняем
    [HKLM\System\CurrentControlSet\Enum\PCI\VEN_1106&DEV_0571&SUBSYS_05711106&REV_06\2&ebb567f&0&48]
    "Service"="UniATA"
    
    на
    [HKLM\System\CurrentControlSet\Enum\PCI\VEN_1106&DEV_0571&SUBSYS_05711106&REV_06\2&ebb567f&0&48]
    "Service"="Atapi"
    
    Обратите внимание, "Atapi" - это некий стандартный драйвер, еще возможные вариант стандартных драйверов - "pciide" и "pciidex". Для Intel'овских контроллеров это скорее всего будет "intelide", для VIA - "viadsk" или "viaide", в общем поищите подходящих кандитатов в ветке
    [HKLM\System\CurrentControlSet\Services]
    
  • Заходим в ключи
    [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]
    
    Там тоже может потребоваться редактировани значения "Service".
  • Удалить
    [HKLM\System\CurrentControlSet\Services\UniATA]
    
Если CurrentControlSet отсутствует - это обычно бывает, если работать например из ERD Commander'а или рядом стоящей рабочей ОС, смотрим в
[HKEY_LOCAL_MACHINE\SYSTEM\Select]
"Current"=dword:00000001
Это и будет номер ControlSet'a. В приведенном примере вместо CurrentControlSet следует использовать ControlSet001.

См. также


UniATA driver home
Писать сюда: FB or mail alterX@alter.org.ua (remove X)   Share
<< Back Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2024