Hi, kind souls! Happy boxing day.
I spent quite a few hours recently trying to get this to work. Here’s my context: An old laptop with a broken screen (90% of the built-in display is unreadable and the remaining 10% is flickery). I’m hoping open source can save it, Garuda in particular, so that it can function as a gaming machine for older or not-so-resource-intensive games. The catch is that I’m trying not to wipe out the not-completely-dead-yet Win7 install until I’m sure Linux can do better, so everything has to be without a reboot because I’m running off the Garuda live USB (unless you can tell me how to help it persist changes). An additional challenge is that the USB stick available to me only has 8GB, so there isn’t room to do a full update (though this doesn’t seem fully necessary since I seem to be able to install drivers and dependencies without that step. I’m not clear on why so many GBs need updating on a fresh USB image anyway, but that’s not my main question.)
My goal is to run some games via Heroic that work (or used to work on this machine) OK in the Epic Games Store under Windows (resource-unintensive ones like while true: learn(), Drawful 2, and the Jackbox Party Pack… though even Surviving Mars was almost playable at one point, if pretty annoyingly laggy), plus, if possible, some newer (but still resource-unintensive) ones that currently don’t run at all under Windows (like Moving Out and/or TerraTech). My goal to achieve that goal is to get nvidia actively rendering for a given game or app, if not the entire xorg. Doesn’t have to be hi-res when gaming though, or 60 fps or anything, just…playable.
The laptop has this:
lspci | grep -E "VGA|3D"
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 620M/630M/635M/640M LE] (rev a1)
This GeForce GT 630M is old enough, I guess, that the nvidia driver Garuda automatically installs is too new, making it fall back to the built-in Intel for everything. So, as far as I can tell, my choices are 390xx or Nouveau.
Here’s as far as I’ve gotten:
- Boot to live USB: Doesn’t seem to matter whether I choose proprietary or not, nvidia gets installed either way
- First run
xrandr --output LVDS-1 --off --output HDMI-1 --auto
for sanity so that only the external display is active. - Using Garuda Welcome → Garuda Settings Manager, remove the nvidia driver.
sudo pacman -R nvidia-dkms nvidia-utils lib32-nvidia-utils
- Unless Nouveau is the answer (I haven’t tried it yet, because it’s said to be slower) the next step seems to be
sudo pacman -Sy nvidia-390xx-dkms
- then
sudo systemctl restart display-manager
I forget if utils are also needed but e.g. nvidia-smi seems to show that the driver is installed, but not active for xorg or anything else:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.157 Driver Version: 390.157 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GT 630M Off | 00000000:01:00.0 N/A | N/A |
| N/A 50C P0 N/A / N/A | 0MiB / 964MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
I’ve tried activating it via sample Xorg configs I’ve found (sorry, I forget which ones now, a few days later) but these tend to make the external screen blank and revert to only the laptop display when I restart the display manager, so I’m not clear if it’s because I don’t know how to configure Xorg, there’s a syntax error in the .conf, or a problem with the card or it’s impossible to achieve my goal (NVIDIA GeForce GT 630M Specs | TechPowerUp GPU Database suggests this may be the case, but on the other hand, if the nvidia can render and then pass to the intel as bumblebee says, then…it should work OK, right?)
My next step isn’t clear. The GPU is too old for PRIME, it seems. Do I need bumblebee? Primusrun? Something else? I’ve tried these together and get e.g.:
$ optirun glxgears
[ 9877.200630] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
[ 9877.200670] [ERROR]Aborting because fallback start is disabled.
$ primusrun glxgears
primus: fatal: Bumblebee daemon reported: error: [XORG] (EE) No devices detected.
But e.g. video-hybrid-intel-nvidia-390xx-bumblebee
doesn’t seem to be available on Garuda (anymore?).
Here’s the full info:
$ garuda-inxi
System:
Kernel: 6.6.29-1-lts arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
clocksource: tsc avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/boot/vmlinuz-x86_64 lang=en_US keytable=us tz=UTC
misobasedir=garuda root=miso:LABEL=GARUDA_XFCE_BIRDOFPREY quiet
systemd.show_status=1 checksum=y systemd.unified_cgroup_hierarchy=1
driver=nonfree nouveau.modeset=0 i915.modeset=1 radeon.modeset=1
Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 wm: xfwm4 v: 4.18.0
with: xfce4-panel tools: xfce4-screensaver avail: xautolock vt: 7
dm: LightDM v: 1.32.0 Distro: Garuda base: Arch Linux
Machine:
Type: Laptop System: Acer product: V3-771 v: V1.02
serial: <superuser required>
Mobo: Acer model: VA70_HC v: Type2 - Board Version
serial: <superuser required> part-nu: Type1Sku0 uuid: <superuser required>
UEFI-[Legacy]: Insyde v: 1.02 date: 03/06/2012
Battery:
ID-1: BAT0 charge: 29.6 Wh (74.6%) condition: 39.7/48.4 Wh (82.0%)
power: 0.0 W volts: 6.9 min: 10.8 model: AS10D31 type: Li-ion serial: N/A
status: not charging
CPU:
Info: model: Intel Core i3-2350M bits: 64 type: MT MCP arch: Sandy Bridge
gen: core 2 level: v2 built: 2010-12 process: Intel 32nm family: 6
model-id: 0x2A (42) stepping: 7 microcode: 0x2F
Topology: cpus: 1x cores: 2 tpc: 2 threads: 4 smt: enabled cache:
L1: 128 KiB desc: d-2x32 KiB; i-2x32 KiB L2: 512 KiB desc: 2x256 KiB
L3: 3 MiB desc: 1x3 MiB
Speed (MHz): avg: 799 high: 800 min/max: 800/2300 scaling:
driver: intel_cpufreq governor: schedutil cores: 1: 798 2: 800 3: 800 4: 800
bogomips: 18367
Flags: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: Intel 2nd Generation Core Processor Family Integrated Graphics
vendor: Acer Incorporated ALI driver: i915 v: kernel arch: Gen-6
code: Sandybridge process: Intel 32nm built: 2011 ports: active: HDMI-A-1
off: LVDS-1 empty: DP-1,VGA-1 bus-ID: 00:02.0 chip-ID: 8086:0116
class-ID: 0300
Device-2: NVIDIA GF108M [GeForce GT 620M/630M/635M/640M LE]
vendor: Acer Incorporated ALI driver: nvidia v: 390.157
alternate: nouveau,nvidia_drm non-free: series: 390.xx+
status: legacy (EOL~2022-11-22) last: release: 390.157 kernel: 6.0
xorg: 1.21 arch: Fermi code: GF1xx process: 40/28nm built: 2010-2016 pcie:
gen: 1 speed: 2.5 GT/s lanes: 16 bus-ID: 01:00.0 chip-ID: 10de:0de9
class-ID: 0300
Device-3: Chicony 1.3M HD WebCam driver: uvcvideo type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-1.1:3 chip-ID: 04f2:b2dc
class-ID: 0e02 serial: <filter>
Display: x11 server: X.Org v: 21.1.13 compositor: xfwm4 v: 4.18.0 driver:
X: loaded: modesetting alternate: fbdev,intel,vesa dri: crocus gpu: i915
display-ID: :0.0 screens: 1
Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x286mm (20.00x11.26")
s-diag: 583mm (22.95")
Monitor-1: HDMI-A-1 mapped: HDMI-1 model: DGM CVTE TV built: 2010
res: 1920x1080 hz: 60 dpi: 85 size: 575x323mm (22.64x12.72")
diag: 1171mm (46.1") ratio: 15:9, 16:10 modes: max: 1920x1080 min: 720x400
Monitor-2: LVDS-1 note: disabled pos: primary model: LG Display 0x0340
built: 2011 res: 1920x1080 dpi: 106 gamma: 1.2 size: 383x215mm (15.08x8.46")
diag: 439mm (17.3") ratio: 16:9 modes: 1600x900
API: EGL v: 1.5 hw: drv: intel crocus drv: nvidia platforms: device: 0
egl: 1.4 drv: nvidia surfaceless: drv: crocus x11: drv: crocus
inactive: gbm,wayland
API: OpenGL v: 3.3 vendor: intel mesa v: 24.0.5-arch1.1 glx-v: 1.4
direct-render: yes renderer: Mesa Intel HD Graphics 3000 (SNB GT2)
device-ID: 8086:0116 memory: 1.46 GiB unified: yes
API: Vulkan v: 1.3.279 layers: 5 device: 0 type: cpu name: llvmpipe (LLVM
17.0.6 256 bits) driver: mesa llvmpipe v: 24.0.5-arch1.1 (LLVM 17.0.6)
device-ID: 10005:0000 surfaces: xcb,xlib
Audio:
Device-1: Intel 7 Series/C216 Family High Definition Audio
vendor: Acer Incorporated ALI driver: snd_hda_intel v: kernel
bus-ID: 00:1b.0 chip-ID: 8086:1e20 class-ID: 0403
Device-2: NVIDIA GF108 High Definition Audio driver: snd_hda_intel
v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 16 bus-ID: 01:00.1
chip-ID: 10de:0bea class-ID: 0403
API: ALSA v: k6.6.29-1-lts status: kernel-api tools: N/A
Server-1: PipeWire v: 1.0.5 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Qualcomm Atheros AR9462 Wireless Network Adapter vendor: Lite-On
driver: ath9k v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
bus-ID: 0d:00.0 chip-ID: 168c:0034 class-ID: 0280
IF: wlp13s0 state: up mac: <filter>
Device-2: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
vendor: Acer Incorporated ALI driver: atl1c v: kernel pcie: gen: 1
speed: 2.5 GT/s lanes: 1 port: 2000 bus-ID: 0e:00.0 chip-ID: 1969:1083
class-ID: 0200
IF: enp14s0 state: down mac: <filter>
Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
Device-1: Lite-On driver: btusb v: 0.8 type: USB rev: 1.1 speed: 12 Mb/s
lanes: 1 mode: 1.1 bus-ID: 2-1.6:4 chip-ID: 04ca:3006 class-ID: e001
Report: btmgmt ID: hci0 rfk-id: 3 state: up address: <filter> bt-v: 4.1
lmp-v: 7 status: discoverable: no pairing: no class-ID: 6c010c
Drives:
Local Storage: total: 473.26 GiB used: 0 KiB (0.0%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/sda maj-min: 8:0 vendor: Toshiba model: MQ01ABD050
size: 465.76 GiB block-size: physical: 4096 B logical: 512 B speed: 3.0 Gb/s
tech: HDD rpm: 5400 serial: <filter> fw-rev: 1U scheme: MBR
ID-2: /dev/sdb maj-min: 8:16 model: General USB Flash Disk size: 7.5 GiB
block-size: physical: 512 B logical: 512 B type: USB rev: 2.0 spd: 480 Mb/s
lanes: 1 mode: 2.0 tech: SSD serial: <filter> fw-rev: 2.00 scheme: MBR
SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
Partition:
Message: No partition data found.
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 5.63 GiB used: 863.8 MiB (15.0%)
priority: 100 comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 4
dev: /dev/zram0
Sensors:
System Temperatures: cpu: 54.0 C mobo: N/A
Fan Speeds (rpm): N/A
Info:
Memory: total: 6 GiB note: est. available: 5.63 GiB used: 3.87 GiB (68.7%)
Processes: 209 Power: uptime: 2h 52m states: freeze,mem,disk suspend: deep
avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
suspend, test_resume image: 2.22 GiB services: upowerd,xfce4-power-manager
Init: systemd v: 255 default: graphical tool: systemctl
Packages: pm: pacman pkgs: 1328 libs: 402 tools: paru Compilers:
gcc: 13.2.1 Shell: garuda-inxi default: Bash v: 5.2.26
running-in: xfce4-terminal inxi: 3.3.34
Garuda (2.6.26-1):
System install date: 2024-12-26
Last full system update: 2024-12-26 ↻
Is partially upgraded: Yes
Relevant software: snapper NetworkManager dracut
Windows dual boot: <superuser required>
Failed units: snapper-cleanup.service
Anyway, some way to get the “ancient” nvidia rendering everything (or select programs/games, anyway) to the HDMI, and nothing to the built-in display, would be really great. Thank you in advance for any wisdom and knowledge you can share with me.