Arch Linux NVIDIA GT218 - hpaluch/hpaluch.github.io GitHub Wiki
WARNING! It is not yet howto article - but rather attempt to make research how to make old NVIDiA GT218 card usable under Linux.
Here is my experience with NVIDIA GT218 under Arch (and other Linux). It is quite bumpy with lot of questions but very few answers. Why? There are too many standards and too many drivers and libraries and each supports different card series with different maturity. It is really hard...
Some important notes: there are 2 very distinct drivers:
- Proprietary binary drivers from NVIDIA (I'm out of luck, because my support for my card was dropped in drivers > 340)
- Open source driver Nouveau
- Under very old X-Window branches (available under OpenBSD) you can also find
xf86-nv
driver - coming from NVIDIA(!), that was intentionally crippled in many ways (NVIDIA has only priority: to not reveal how their hardware works). This driver is no longer available under Linux. See https://lwn.net/Articles/380704/
Where to start: install inxi
with pacman -S --needed inxi
and get basic information
about my GPU (under XFCE4 + X11):
$ inxi -G --display
Graphics:
Device-1: NVIDIA GT218 [GeForce 210] driver: nouveau v: kernel
Display: server: X.Org v: 21.1.13 driver: X: loaded: nouveau
unloaded: fbdev,modesetting,vesa dri: nouveau gpu: nouveau
resolution: 1440x900~60Hz
API: EGL v: 1.4,1.5 drivers: nouveau,swrast
platforms: gbm,x11,surfaceless,device
API: OpenGL v: 4.5 compat-v: 3.3 vendor: mesa v: 24.0.6-arch1.2
renderer: NVA8
Above example uses xf86-video-nouveau
Now we can find several pages:
To find basic information on my card (GT218, NVA8 codename) we can look at:
- https://nouveau.freedesktop.org/CodeNames.html
- NV50 family (Tesla)
- Has unified shader architecture, can do GPGPU and CUDA, has virtual memory, quite different from previous cards.
- exact codename:
NVA8 (GT218)
includesGeForce 8400 GS, ION 2, GeForce 205, 210, G 210M, 305M, 310(M), 405 Quadro FX (380 LP, 380M), NVS (300, 2100M, 3100M)
Now we can find another source of information from Arch wiki:
- https://nouveau.freedesktop.org/FeatureMatrix.html
- remember our series:
NV50
, code name:NVA8
Here we can find for NV50
2D features | NV50 |
---|---|
basic 2D (EXA) 11) | DONE |
fast 2D (XRender) 11) | DONE |
play videos (Xv2) 2) | DONE |
video decoding accel (VDPAU/XvMC) | EXTFW |
3D features | NV50 |
---|---|
Primitives | DONE |
Textures | DONE |
Fixed pipe TCL | N/A |
Vertex programs | DONE7 |
Fragment programs | DONE7 |
Geometry programs | DONE7 |
Tessellation programs | N/A |
Other stuff (Output dual-link) omitted - not in my interest
Important footnotes:
-
EXTFW
means that the feature is usable, but requires firmware from the binary driver. In my case see Gentoo.
- Note Xv, not XvMC. See the "video decoding accel" line for accelerated decoding.
- It's slow, because proper power management isn't finished yet.
- Use modesetting DDX for 2D acceleration.
Yes, it is no typo - there are 2 X11 drivers for open-source Nouveau: (see https://wiki.archlinux.org/title/nouveau#Installation):
-
xf86-video-nouveau
- driver where major part is in X server -
modesetting
(whenxf86-video-nouveau
is not installed) - driver in kernel (I expect that it is also most similar to Wayland, but have no way to verify it)
There are 2 pointers from above Arch article:
- https://bugs.freedesktop.org/show_bug.cgi?id=94844#c3
- https://bbs.archlinux.org/viewtopic.php?id=263498
There is central page: https://wiki.archlinux.org/title/Hardware_video_acceleration
Following packages are suggested to install:
sudo pacman -S --needed libva-mesa-driver mesa-vdpau
Still have only one scenario where Video Acceleration really worked:
- on Gentoo having installed both mesa and old mesa-amber
- it is not possible to use this on Arch because these two packages are conflicting (and amber causes extremely slow rendering of all XFCE4 and components)
But even on Gentoo it causes trouble - for example eglinfo
will simply crash with signal 11, when
mesa-amber
is installed.
According to: https://github.com/ventureoo/nouveau-reclocking
- normal NVIDIA card starts in Power-save mode utilizing only 10% of card performance
- there is tip that it should work on Tesla G94-GT218 (and Fermi?) GPUs
Here is what can I see following https://wiki.archlinux.org/title/nouveau#Installation (must be run as root)
cat /sys/kernel/debug/dri/0/pstate
03: core 135 MHz shader 270 MHz memory 135 MHz
07: core 405 MHz shader 810 MHz memory 405 MHz
0f: core 520 MHz shader 1238 MHz memory 533 MHz
AC: core 405 MHz shader 810 MHz memory 405 MHz
WARNING! Any attempt to change it ended really badly:
echo 7 > /sys/kernel/debug/dri/0/pstate
dmesg -t
BUG: scheduling while atomic: kworker/0:0/8/0x00000002
Modules linked in: snd_seq_dummy snd_hrtimer nf_conntrack_netbios_ns nf_conntrack_broadcast nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib rfkill nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 ppdev nft_reject nf_log_syslog nft_log nft_ct nft_chain_nat nf_nat nf_conntrack nouveau nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables edac_mce_amd kvm_amd ccp mxm_wmi snd_hda_codec_realtek drm_gpuvm snd_hda_codec_generic snd_hda_codec_hdmi kvm drm_exec snd_hda_intel gpu_sched snd_intel_dspcfg snd_intel_sdw_acpi i2c_algo_bit snd_hda_codec drm_ttm_helper ttm drm_display_helper snd_seq snd_hda_core cec video irqbypass snd_seq_device snd_hwdep pcspkr wmi k8temp snd_pcm snd_timer snd soundcore sunrpc i2c_nforce2 parport_pc parport binfmt_misc pktcdvd loop nfnetlink dm_thin_pool dm_persistent_data dm_bio_prison firewire_ohci firewire_core ata_generic pata_acpi forcedeth crc_itu_t sata_nv pata_amd nv_tco serio_raw ip6_tables ip_tables fuse
CPU: 0 PID: 8 Comm: kworker/0:0 Not tainted 6.8.9-300.fc40.x86_64 #1
Hardware name: MSI MS-7250/MS-7250, BIOS V1.11 04/07/2008
Workqueue: events nvkm_pstate_work [nouveau]
Call Trace:
<TASK>
dump_stack_lvl+0x6a/0x90
__schedule_bug+0x56/0x70
__schedule+0x1109/0x1710
schedule+0x32/0xd0
gt215_pmu_send+0x263/0x2e0 [nouveau]
? __pfx_autoremove_wake_function+0x10/0x10
nvkm_memx_init+0x4a/0x130 [nouveau]
gt215_ram_calc+0x238/0x3ab0 [nouveau]
gt215_link_train.isra.0+0x156/0x1130 [nouveau]
? psi_group_change+0x243/0x4f0
gt215_ram_calc+0x428/0x3ab0 [nouveau]
nvkm_pstate_work+0x147/0x720 [nouveau]
process_one_work+0x172/0x330
worker_thread+0x273/0x3c0
? __pfx_worker_thread+0x10/0x10
kthread+0xe8/0x120
? __pfx_kthread+0x10/0x10
ret_from_fork+0x34/0x50
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1b/0x30
</TASK>
Other ways is to use kernel module parameters: https://nouveau.freedesktop.org/KernelModuleParameters.html
There is other way pointed out on https://github.com/polkaulfield/nouveau-reclocking-guide, but even using lowest possible value (3) I got corrupted screen. Added on grub:
nouveau.config=NvClkMode=3
Found this warning:
$ grep acpid ~/.local/share/xorg/Xorg.0.log
[ 76.632] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
Can be fixed with:
sudo pacman -S --needed acpid
sudo systemctl enable --now acpid
ACPId is also very useful when your computer freezes - you can try to shortly push Power button - if it is only console/gpu issue you should be able to safely shutdown your machine...