Последнее изменение файла: 2003.03.17
Скопировано с www.bog.pp.ru: 2003.03.17
В статье для счастливых пользователей Linux и GPU NVIDIA приводится разница между массовыми моделями GPU от NVIDIA, описываются преимущества закрытых драйверов nvidia от входящих в поставку X Window System драйверов nv, приводятся процедуры установки версий Release 40 и Release 25, описываются параметры модуля ядра, опции драйвера nvidia для X, опции библиотеки OpenGL NVIDIA, различные способы использования TV-Out (телевизор вместо монитора; запуск второго X сервера; программа nvtv; TwinView), разгон видеокарты с помощью nvclock и как использовать датчики на видеоплате с помощью rivatv.
Почему GPU от NVIDIA? Потому что осталось всего 2 компании, производящих GPU потребительского уровня (т.е. дешевые) с нормальной скоростью 3D операций. От графконтроллеров ATI я отказался после 2 лет бесплодных ожиданий работоспособного драйвера OpenGL (после чего фирма мило заявила, что поддерживать такие старые чипы она не будет и скоро выпустит драйверы для новых графконтроллеров, подождите немного ;).
Разницу между сериями GPU от NVIDIA легче всего узнать на ее российском официальном сайте
На описании и тестировании конкретных моделей видеоплат специализируется сайт IXBT.
У меня под рукой оказалась ASUS V7700PRO/T/32M/PAL/R, о которой можно рассказать следующее (MB на чипсете Intel 845E, P4):
01:00.0 VGA compatible controller: nVidia Corporation NV15 [GeForce2 GTS; PCI ID 0x0150] (rev a4) (prog-if 00 [VGA])
Subsystem: Asustek Computer, Inc.: Unknown device 4026
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248 (1250ns min, 250ns max)
Interrupt: pin A routed to IRQ 10
Region 0: Memory at dc000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at d0000000 (32-bit, prefetchable) [size=128M]
Expansion ROM at <unassigned> [disabled] [size=64K]
Capabilities: [60] Power Management version 1
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [44] AGP version 2.0
Status: RQ=31 SBA- 64bit- FW+ Rate=x1,x2,x4
Command: RQ=31 SBA- AGP+ 64bit- FW+ Rate=x4
VideoRAM: 32768 kBytes
Detected TV Encoder: Chrontel 7007
Display 0: maximum pixel clock at 32 bpp: 300 MHz
Monitor0: Using hsync range of 30.00-97.00 kHz
Monitor0: Using vrefresh range of 50.00-180.00 Hz
Default mode "1600x1200": 202.5 MHz, 93.8 kHz, 75.0 Hz
Virtual screen size determined to be 1600 x 1200
DPI set to (75, 75)
AGP 4X successfully initialized
Setting mode "1600x1200"
Using XFree86 Acceleration Architecture (XAA)
Fast Writes: Supported SBA: Not Supported AGP Rates: 4x 2x 1x
Host Bridge: Intel i845 Fast Writes: Supported SBA: Supported AGP Rates: 4x 2x 1x (странно - я думал, что i845 поддерживает только 4x)
Status: Enabled Driver: NVIDIA (или AGPGART, в зависимости от настройки драйвера) AGP Rate: 4x Fast Writes: Enabled SBA: Disabled
Model: GeForce2 GTS IRQ: 10 (pin A routed to IRQ 10, пересекается с Intel 82801DB USB (Hub #1) и 82801DB ICH4 IDE) Video BIOS: 03.15.00.12 Card Type: AGP
GPU speed: 199.656 MHz -- Memory info -- Amount: 32 MB Type: 128 bit DDR Speed: 400.904 MHz
Входящий в состав XFree86 4.2.0 (Red Hat Linux 8.0, штатное ядро 2.4.18-14) драйвер nv работает с GeForce как с обычным SVGA, т.е. нет поддержки 3D и вывода видео. К тому же у него проблемы с разрешением 1600x1200 и выше.
Компания NVIDIA выпускает собственный драйвер nvidia (XFree86 4.0.1 и выше), поддерживающий аппаратно OpenGL, XVideo и прочие полезные возможности. К сожалению, он поставляется только в двоичном виде, что сильно осложняет его использование. Драйвер поддерживает любую видеокарту (GPU) или интегрированное графическое ядро (IGP), выпускаемые фирмой NVIDIA, и обеспечивает ускорение 2D операций и OpenGL.
Драйвер состоит из 2 частей: модуль ядра NVIDIA_kernel (NVdriver или nvidia.o в новой версии; больше 1 МБ закрытого кода работает в режиме ядра!) и пакет NVIDIA_GLX (драйвер XFree86 и библиотеки OpenGL). Версии пакетов должны совпадать. Модуль ядра жестко привязан к версии ядра Linux и д.б. переустановлен (пересобран) при смене или сборке ядра. NVIDIA поставляет пакеты в форме .rpm, .srpm и .tar.gz. Я рекомендую брать NVIDIA_kernel в виде .srpm и пересобирать его самостоятельно непосредственно перед установкой, а NVIDIA_GLX брать в виде готового RPM (все равно SRPM и .tar.gz не содержат ни одного исходного текста). Предполагается, что загрузка системы происходит в текстовом режиме (id:3:initdefault: в /etc/inittab), иначе у вас будут большие проблемы при неудачной установке. Перед установкой новой версии (или при смене ядра) надо самостоятельно удалить оба пакета (-U может сработать неправильно).
Предварительная подготовка для построения своего ядра: имеется пакет kernel-source-2.4.18-14, для которого было сделано
Версия 1.0-4191 (release 40) имеет множество улучшений по сравнению с предыдущей версией: OpenGL 1.4 вместо 1.3, GLX 1.3 вместо 1.2, поддержка AGP 3.0 (8x), вместо XFree86 XAA используется собственная архитектура акселератора 2D, поддержка нескольких отдельных экранов на GPU с TwinView (GeForce2 MX и любой GeForce4), перестал ронять приложения с плавающей арифметикой. Однако отзывы на нее резко отрицательные. Одновременно с небольшим ускорением 3D операций (glxgears на 15%) резко замедлились 2D операции. Их можно несколько ускорить, если установить одноцветный фон в Gnome и отключить в Nautilus опцию "nautilus draw icons on the desktop option", однако замедление относительно предыдущей версии остается двухкратным. Рекомендуется также запустить какое-нибудь приложение libGL (например, glxinfo ;). При попытке включить акселератор 2D (Option "RenderAccel" в /etc/X11/XF86Config) X сервер зацикливается через несколько минут работы.
Процедура установки аналогична предыдущей версии, только модуль ядра переименован из NVdriver в nvidia.o
alias char-major-195 nvidia install nvidia insmod -f nvidia # параметры по вкусу
В версии 1.0-3123 (release 25) добавлена поддержка GeForce4 MX, GeForce4 Ti 4800 SE и GeForce4 4200.
Процедура установки
alias char-major-195 NVdriver install nvidia insmod -f NVdriver # параметры модуля по вкусу
Fast Writes: Supported SBA: Not Supported AGP Rates: 4x 2x 1x Registers: 0x1f000017:0x1f000114
Host Bridge: Intel i845 Fast Writes: Supported SBA: Supported AGP Rates: 4x 2x 1x Registers: 0x1f000217:0x00000114
Status: Enabled Driver: AGPGART AGP Rate: 4x Fast Writes: Enabled SBA: Disabled
Model: GeForce2 GTS IRQ: 10 Video BIOS: 03.15.00.12.00 Card Type: AGP
NVRM version: NVIDIA Linux x86 NVdriver Kernel Module 1.0-3123 Tue Aug 27 15:56:48 PDT 2002 GCC version: gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
... 6191 frames in 5.0 seconds = 1238.200 FPS ... 434 frames in 5.0 seconds = 86.800 FPS (если растянуть окно на весь экран 1600x1200) ... 7393 frames in 5.0 seconds = 1478.600 FPS (версия 41.91) ... 452 frames in 5.0 seconds = 90.400 FPS (версия 41.91 на весь экран)
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.2
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
client glx vendor string: NVIDIA Corporation
client glx version string: 1.2
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync,
GLX_SGIX_swap_group, GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_ARB_get_proc_address
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce2 GTS/AGP/SSE2
OpenGL version string: 1.3.1 NVIDIA 29.60
OpenGL extensions:
...
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
Vis Vis Visual Trans buff lev render DB ste r g b a aux dep ste accum buffers MS MS
ID Depth Type parent size el type reo sz sz sz sz buf th ncl r g b a num bufs
----------------------------------------------------------------------------------------------------
0x21 24 TrueColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x22 24 DirectColor 0 32 0 rgba 1 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x23 24 TrueColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x24 24 TrueColor 0 32 0 rgba 0 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x25 24 TrueColor 0 32 0 rgba 0 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x26 24 DirectColor 0 32 0 rgba 1 0 8 8 8 8 0 24 8 16 16 16 16 0 0
0x27 24 DirectColor 0 32 0 rgba 0 0 8 8 8 0 0 24 8 16 16 16 16 0 0
0x28 24 DirectColor 0 32 0 rgba 0 0 8 8 8 8 0 24 8 16 16 16 16 0 0
X-Video Extension version 2.2
screen #0
Adaptor #0: "video4linux"
...
Adaptor #1: "NV10 Video Overlay"
number of ports: 1
port base: 70
operations supported: PutImage
supported visuals:
depth 24, visualID 0x21
depth 24, visualID 0x23
depth 24, visualID 0x24
depth 24, visualID 0x25
depth 24, visualID 0x22
depth 24, visualID 0x26
depth 24, visualID 0x27
depth 24, visualID 0x28
number of attributes: 9
"XV_DOUBLE_BUFFER" (range 0 to 1)
client settable attribute
client gettable attribute (current value is 1)
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 66046)
"XV_AUTOPAINT_COLORKEY" (range 0 to 1)
client settable attribute
client gettable attribute (current value is 1)
"XV_SET_DEFAULTS" (range 0 to 0)
client settable attribute
"XV_BRIGHTNESS" (range -512 to 511)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 8191)
client settable attribute
client gettable attribute (current value is 4096)
"XV_SATURATION" (range 0 to 8191)
client settable attribute
client gettable attribute (current value is 4096)
"XV_HUE" (range 0 to 360)
client settable attribute
client gettable attribute (current value is 0)
"XV_ITURBT_709" (range 0 to 1)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 2046 x 2046
Number of image formats: 4
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
Adaptor #2: "NV05 Video Blitter"
number of ports: 32
port base: 71
operations supported: PutImage
supported visuals:
depth 24, visualID 0x21
depth 24, visualID 0x23
depth 24, visualID 0x24
depth 24, visualID 0x25
depth 24, visualID 0x22
depth 24, visualID 0x26
depth 24, visualID 0x27
depth 24, visualID 0x28
no port attributes defined
maximum XvImage size: 2046 x 2046
Number of image formats: 5
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x3
guid: 03000000-0000-0010-8000-00aa00389b71
bits per pixel: 32
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0xff0000, 0xff00, 0xff
modinfo NVdriver показывает, что при загрузке модуля можно задавать следующие параметры (я привожу не весь список, описание в os-registry.c):
Опции задаются в секции Device файла /etc/X11/XF86Config (или /etc/X11/XF86Config-4 для старых дистрибутивов), я привожу только опции, специфические для драйвера nvidia (и то не все - например, я не использую лаптопов и нотебуков; см. также XF86Config(5x)):
Опции OpenGL задаются установкой переменных окружения перед запуском прикладной приграммы
_GL_FSAA_MODE=0 glxgears ... 6191 frames in 5.0 seconds = 1238.200 FPS 434 frames in 5.0 seconds = 86.800 FPS (если растянуть окно на весь экран 1600x1200) _GL_FSAA_MODE=4 glxgears ... 1965 frames in 5.0 seconds = 393.000 FPS 4 frames in 6.0 seconds = 0.667 FPS (если растянуть на весь экран) __GL_FSAA_MODE=3 glxgears ... 2920 frames in 5.0 seconds = 584.000 FPS 4 frames in 6.0 seconds = 0.667 FPS (если растянуть на весь экран)
Простейший способ вывести изображение на телевизор - отключить монитор! При загрузке компьютера видеоплата обнаружив, что телевизор является единственным устройством, подключенным к ней, начинает выводить изображение (прямо с первого собщения BIOS) на TV-Out.
При подключении телевизора к компьютеру необходимо их предварительно обесточить (выдернуть вилки из розеток!) и вынуть антенный кабель (и не втыкать его обратно, пока не рассоедините телевизор и компьютер!).
Если вам достаточно для работы а/ц режима, то дальше можете не читать, все уже сделано. Для запуска X Window System на телевизоре необходимо дополнить файл /etc/X11/XF86Config (обязательно после стандартного Layout!)
Section "ServerLayout"
Identifier "LayoutTV"
Screen "ScreenTV"
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
# VendorName и ModelName подставляйте свои (ни на что не влияют)
Section "Monitor"
Identifier "MonitorTV"
VendorName "Philips"
ModelName "21PT166B/60"
HorizSync 30.0 - 50.0
VertRefresh 50.0 - 60.0
EndSection
# Device должен соответствовать Identifier в секции Device (описание см. выше)
Section "Screen"
Identifier "ScreenTV"
Device "NVIDIA GeForce 2 GTS (generic)"
Monitor "MonitorTV"
DefaultDepth 24
SubSection "Display"
Depth 24
# для телевизионного кодировщика Bt871, Connexant 25871, GeForce4 (?)
# (тип кодировщика можно узнать из файла /var/log/XFree86.0.log в строке "Detected TV Encoder")
# можно задать режим "1024x768"
Modes "800x600" "640x480"
EndSubSection
# для адаптированных под Россию телевизоров именно PAL-B,
# хотя на моей плате задается джампером NTSC/PAL (на всякий случай ;)
Option "TVStandard" "PAL-B"
# "SVIDEO" или "COMPOSITE"
Option "TVOutFormat" "SVIDEO"
Option "ConnectedMonitor" "TV"
EndSection
Теперь можно запускать X и работать как на обычном мониторе, хотя и без удовольствия (фильмы смотрятся гораздо лучше, чем на мониторе):
startx -- -layout LayoutTv
Редактировать тексты, глядя на экран телевизора - невозможно, перезагружаться каждый раз, когда хочется посмотреть фильм - утомительно. Поэтому предлагается запустить два X сервера - каждый для своего устройства (напоминаю, что речь идет о GeForce 2, который не умеет выводить 2 независимых изображения). Конфигурация XF86Config совпадает с описанной в предыдущем разделе. Первый X сервер запускается как обычно (я запускаю его командой startx). Второй X сервер запускается командой (используется ключ -ac, потому что я не знаю другого способа снять защиту при такой форме запуска)
X -ac -layout LayoutTV :1
Теперь у нас "крутятся" сразу два X сервера с общей клавиатурой и мышкой. Переключения между ними производятся по нажатию Ctrl-Alt-F7 и Ctrl-Alt-F8 (предполагается наличие 6 виртуальных а/ц консолей, иначе клавиши будут другими). Закрывается сервер обычным сочетанием Ctrl-Alt-Backspace, главное не перепутать, какому серверу в момент нажатия принадлежит клавиатура.
Сразу после запуска "текущим" является второй сервер - ему принадлежит клавиатура, на его экран (телевизор) выводится изображение. Переключаемся обратно на первый сервер (Ctrl-Alt-F7) и запускаем, например, mplayer
DISPLAY=:1 mplayer -vo xv dvd://1
Пока он раскручивает диск, переключаемся на второй сервер (Ctrl-Alt-F8). По окончанию просмотра втрой сервер останавливать необязательно - он никому не мешает.
Преодолеть оставшееся чувство неудовлетворения поможет программа nvtv. Она позволяет гибко настраивать параметры вывода (вплоть до прямого доступа ко всем регистрам телевизионных кодировщиков и CRTC NVIDIA!) и выводить одновременно на монитор и телевизор для видеоплат без TwinView (к сожалению, одинаковое изображение). Не работает с GeForce3 и выше. Включена в состав xine.
Установка nvtv 0.4.3:
Для доступа к регистрам программе nvtv требуются либо права root (их можно обеспечить с помощью механизма suid или вспомогательного демона nvtvd), либо работающий драйвер NVIDIA (обеспечивается совместимость с версиями не старше 3123). Есть слухи, что nvtv работает с GeForce4, если тот проинициализирован фирменным драйвером. Исходный текст программы доступа к внутренним структурам драйвера NVIDIA (через /dev/nvidia*) представляет самостоятельный интерес. При использовании драйвер NVIDIA программу nvtv необходимо запускать после запуска X с ключом -N.
При запуске в графическом режиме nvtv предоставляет обширные (я бы даже сказал, что чрезмерно обширные) возможности по настройке формата вывода. Я рекомендую подсмотреть список режимов (закладка Mode, ключи -r и -s), доступных вашему ТВ кодировщику, а в дальнейшем использовать текстовый режим. Список режимов зависит от режима цветности, например, мой chrontel 7007 для SECAM выдает пустой список режимов. Включение вывода на телевизор одновремено с выводом на монитор и переход к разрешению 768x576:
nvtv -N -X -t -r 768,576 -s Large -S PAL -C SVHS
После этого изображение будет выводиться одновременно на телевизор и монитор. Монитор может не поддерживать выбранное разрешение и режим работы. В этом случае попробуйте другой режим. Например, мой монитор не любит режимы 800x600xLarge (обрезает картинку), 768x576xSmall (срывается кадр), 640x480xLarge (рекомендуемый для NTSC DVD 4:3 - мельтешение на экране, Small - нормально). Некоторые режимы невозможно смотреть ни на мониторе, ни на телевизоре (для меня такой режим - 800x450). Для нестандартных разрешений рекомендуется завести соответствующий Modeline в секции Monitor (основной монитор, не MonitorTV) и включить его в список Modes соответствующей подсекции Display, например (nvtv поменяет частоты синхронизации при использовании ключа -t)
Modeline "pal" 50.00 768 832 856 1000 576 590 595 630 -hsync -vsync ... Modes "1600x1200" "pal"
Виртуальное разрешение останется прежним (у меня 1600x1200), так что окно с фильмом приходится искать на этом бескрайнем поле и центрировать, а также бороться с излишним рвением некоторых программ к масштабированию и обеспечению "правильного" соотношения сторон (mplayer -noaspect). Надеюсь, что это умение придет к вам с опытом, описать это невозможно. Если ваш телевизор имеет возможность для просмотра широкоэкранных фильмов, то лучше использовать ее и выводить в режиме 4:3, чем использовать дискретное масштабирование плейера и режим вывода типа 800x450.
Выключение вывода на телевизор и возвращение исходного разрешения экрана:
nvtv -N -m -X -r 1600,1200
nvtv позволяет задавать в текстовом режиме множество параметров с помощью ключа --set (полный список и интервал значений выдается по nvtv -h, используемый ТВ кодировщик может поддерживать не все параметры):
Путем проб и ошибок можно подобрать режим, в котором и фильм будет прекрасно выглядеть на телевизионном экране (похоже, что некоторые фильмы специально кодируют так, чтобы их было невозможно смотреть на компьютерном мониторе - например, случайным образом меняют порядок полей) и меню плейера будет читаемо на мониторе.
GPU GeForce2 MX и GeForce4 имеют два CRTC и могут выводить 2 независимых изображения (с различным разрешением и частотой) на монитор и телевизор. Настройки задаются с помощью TwinView и не должны вызвать затруднений в простом случае (один монитор и один телевизор).
DPMS не работает на втором мониторе (ТВ) - может это и правильно?.
Утилита nvclock позволяет изменить частоту работы GPU и памяти.
Установка:
Утилита не сохраняет измененные значения частот в NVRAM, так что ее необходимо вызывать каждый раз после запуска X Windows (например, поместить в .xinitrc). Если запускать ее до X Windows, то требуются права root, а модуль nvidia может сбросить изменения. Ключи запуска:
Не все значения частоты памяти возможны, например у меня они устанавливаются с шагом 7 МГц (утилита сообщает реально установленную частоту). Утилита имеет свои представления о максимально возможных частотах. Их можно преодолеть с помощью ключа -f, но я не советую. Рекомендуется постепенно повышать частоту GPU (пока компьютер не зависнет ;), затем перезагрузиться и постепенно повышать частоту памяти (пока опять не зависнет ;). Не рекомендуется работать постоянно на максимально возможной частоте - это сильно сокращает время жизни видеоплаты и может привести к зависаниям при повышении температуры за бортом в самый неподходящий момент.
У меня получилось поднять частоты с 200/401 до 228/451 МГц (при этом используются ключи -n 228 -m 449). glxgears ускорилась с 1225 fps (87 fps при 1600x1200) до 1425 fps (101 fps при 1600x1200). x11perf (-all требует 3 часов работы, запускать на только что загруженном компьютере, необходимо выключить screensaver, отключить запуск updatedb и прочих программ, освободить левый верхний угол 800x800) отчетливо показывает какие операции выполняются CPU (не ускоряются совсем), GPU (ускоряются в 228/200 раза). Некоторые операции ведут себя странно. Например, putimagexy и getimagexy временно блокируют компьютер.
Для видеокарт с аппаратным контролем возможно извлечь значения температуры и частоты вращения вентилятора с помощью пакета rivatv. Основное назначение пакета - видеозахват, но в этом качестве я его не пробовал. (о видео захвате с помощью AverMedia TVPhone98 или аналогичных карт на Bt848/878 смотрите мою статью).
Установка:
modprobe rivatv
install rivatv insmod -f rivatv autoload=0
GeForce2-GTS
Model: Asus V7700 Deluxe # (на самом деле - Asus V7700Pro T)
Architecture: NV10 (NV15)
Access: Control [0xdc000000-0xdcffffff]
FB [0xd0000000-0xd7ffffff]
Interrupts: 0 out of 14876276 (DMA: 0, Overlay: 0, Missing: 14876276)
Device: available
VideoDecoder: unavailable
Tuner: unavailable
AudioDecoder: unavailable
AudioProcessor: unavailable
Параметры модуля rivatv
При запуске sensors-detect ошибочно ссылается на пакет rivatv как i2c-riva (в исходных текстах действительно есть i2c-riva.c, но при сборке он включается в rivatv.o)
Use driver `i2c-riva' for device 01:00.0: GeForce2 GTS Load `i2c-riva' (say NO if built into your kernel)? (YES/no)
Далее следуете всем указаниям, которые выдает sensors-detect. Пример моей борьбы (борьбы, потому что поддержка I2C реализована в Linux отвратительно) с датчиками смотрите в описании установки Red Hat 8.0.
Если все сделано правильно, то программа sensors среди прочей информации выдает (устройства с 1-50 по 1-57 - это нераспознанная информация: то ли настройка самой видеокарты, то ли настройка внешнего чипа TV-Out Chrontel 7007)
eeprom-i2c-1-50 Adapter: NVIDIA display adapter bus 0 Algorithm: Bit-shift algorithm ... eeprom-i2c-1-57 Adapter: NVIDIA display adapter bus 0 Algorithm: Bit-shift algorithm w83781d-i2c-0-2d Adapter: NVIDIA display adapter bus 1 Algorithm: Bit-shift algorithm VCore 1: +2.04 V (min = +0.00 V, max = +0.00 V) ALARM VCore 2: +1.52 V (min = +0.00 V, max = +0.00 V) ALARM +3.3V: +3.34 V (min = +2.97 V, max = +3.63 V) +5V: +4.89 V (min = +4.50 V, max = +5.48 V) +12V: +11.97 V (min = +10.79 V, max = +13.11 V) -12V: -0.14 V (min = -13.18 V, max = -10.78 V) ALARM -5V: -0.06 V (min = -5.48 V, max = -4.50 V) ALARM fan1: 7670 RPM (min = 3000 RPM, div = 2) fan2: 0 RPM (min = 3000 RPM, div = 2) ALARM fan3: 0 RPM (min = 3000 RPM, div = 2) ALARM temp1: +53°C (limit = +60°C, hysteresis = +50°C) temp2: +53.0°C (limit = +60°C, hysteresis = +50°C) temp3: +42.5°C (limit = +60°C, hysteresis = +50°C) vid: +0.000 V