Hi ArchLinux-Community,

letzte Woche habe ich Arch Linux auf meinen Media-PC mit Intel Atom und NVIDIA 9400 geupdatet.
Dabei wurde auch der NVIDIA-Treiber von 295.53-1 zu 304.37 aktualisiert.

Jedoch habe ich jetzt das Problem, dass wenn der Media-PC aus dem Suspend to RAM (pm-suspend) aufwacht, kein Ton mehr über HDMI ausgegeben wird.

Beendet ich den X-Server und starte ihn mit "startx" wieder neu, funktioniert es wieder. Also kann es meiner Meinung nach nicht an einem hängenden Dienst (/etc/rc.d) liegen.

Gibt es einen Befehl, den ich ausführen könnte, damit der XServer sich im laufenden Betrieb neu initialisiert?
Hat jemand noch eine andere Idee?


Viele Grüße aus Oberfranken,
Nico
5 Tage später
Auch die erneute Aktualisierung vom Paket "nvidia" hat mein Problem nicht gelöst. (304.43-1)

Allerdings habe ich mich dann dazu entschlossen den letzten funktionierenden NVIDIA-Treiber händisch nach zu installieren, um die neuere Version zu überschreiben. Das hat funktioniert, ich habe auch wieder Ton nach dem Suspend to RAM (pm-suspend)!

Workaround 64-Bit
pacman -S base-devel linux-headers
wget ftp://download.nvidia.com/XFree86/Linux-x86_64/295.71/NVIDIA-Linux-x86_64-295.71-no-compat32.run
chmod 700 NVIDIA-Linux-x86_64-295.71-no-compat32.run
# X-Server beenden
./NVIDIA-Linux-x86_64-295.71-no-compat32.run
# Neustart
Workaround 32-Bit
pacman -S base-devel linux-headers
wget ftp://download.nvidia.com/XFree86/Linux-x86_64/295.71/NVIDIA-Linux-x86_64-295.71.run
chmod 700 NVIDIA-Linux-x86_64-295.71.run
# X-Server beenden
./NVIDIA-Linux-x86_64-295.71.run
# Neustart
Gruß Nico
Wieso hast du den nvidia-Treiber an unserem geliebten Paketmanager vorbei installiert? Das könnte noch unangenehm werden…

Downgrades lassen sich besser mit den Binaries aus dem pacman-cache machen, oder wenn man dort nichts (mehr) hat dann gabs da ein paar server (sorry die Adresse hab ich grad nicht parat) die auch ältere Pakete anbieten.
mannohneschuh schriebWieso hast du den nvidia-Treiber an unserem geliebten Paketmanager vorbei installiert? Das könnte noch unangenehm werden…

Downgrades lassen sich besser mit den Binaries aus dem pacman-cache machen, oder wenn man dort nichts (mehr) hat dann gabs da ein paar server (sorry die Adresse hab ich grad nicht parat) die auch ältere Pakete anbieten.
Hi mannohneschuh, darum:
pacman -U http://arm.konnichi.com/extra/os/x86_64/nvidia-utils-295.53-1-x86_64.pkg.tar.xz http://arm.konnichi.com/extra/os/x86_64/nvidia-295.53-2-x86_64.pkg.tar.xz
...
:: nvidia: benötigt linux<3.5
uname -a
Linux elfriede 3.5.3-1-ARCH #1 SMP PREEMPT Sun Aug 26 09:14:51 CEST 2012 x86_64 GNU/Linux
OK, irgendwie habe ich dich wohl falsch verstanden. Ich hatte nicht bemerkt das 295.53 der letzte funktionierende Treiber war, und du die Versionen danach bereits getestet hast. Aus deinem OP schloß ich das du von 295.53-1 gleich zu 304.37 gekommen bist… dazwischen liegen ja noch ein paar (mindestens eine) Versionen. Hast du bereits den LTS-Kernel mit den nvidia-lts getestet?

AFAIR kann man noch was an den hooks der pm-utils drehen. Also bestimmte Treiber vor dem suspend entladen und wieder laden wenn der Rechner aufwacht. ich habe das aber noch nie gebraucht und mich daher nie damit beschäftigt.
_nico schrieb
mannohneschuh schriebauf http://arm.konnichi.com gibts doch aber auch mehr als nur 295.53-1.
Der letzte der funktionierte, war nun mal 295.53. Es gibt dort nunmal nur 295.53-1 und 295.53-2, beide wollen den Kernel kleiner 3.5.
Ist jetzt zwar ohnehin zu spät, aber du hättest dir auch mit dem originalen PKGBUILD für nvidia-295.53 (etwas angepasst) ein nvidia-paket bauen können, das angepasste PKGBUILD:
# $Id$
# Maintainer : Thomas Baechler <thomas@archlinux.org>

pkgname=nvidia
pkgver=295.53
_extramodules=extramodules-3.5-ARCH
pkgrel=1
pkgdesc="NVIDIA drivers for linux."
arch=('i686' 'x86_64')
url="http://www.nvidia.com/"
depends=('linux>=3.5' 'linux<3.6' "nvidia-utils=${pkgver}")
makedepends=('linux-headers>=3.5' 'linux-headers<3.6')
conflicts=('nvidia-96xx' 'nvidia-173xx')
license=('custom')
install=nvidia.install
options=(!strip)

if [ "$CARCH" = "i686" ]; then
    _arch='x86'
    _pkg="NVIDIA-Linux-${_arch}-${pkgver}"
    source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
    md5sums=('af353274ab078cb90aba428ca1f00f0e')
elif [ "$CARCH" = "x86_64" ]; then
    _arch='x86_64'
   _pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32"
    source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
    md5sums=('c974ee20fc016c9fa9ef39fc2e298f8a')
fi

build() {
    _kernver="$(cat /lib/modules/${_extramodules}/version)"
    cd "${srcdir}"
    sh "${_pkg}.run" --extract-only
    cd "${_pkg}/kernel"
    make SYSSRC=/lib/modules/"${_kernver}/build" module
}

package() {
    install -D -m644 "${srcdir}/${_pkg}/kernel/nvidia.ko" \
        "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"
    install -d -m755 "${pkgdir}/usr/lib/modprobe.d"
    echo "blacklist nouveau" >> "${pkgdir}/usr/lib/modprobe.d/nvidia.conf"
    sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "${startdir}/nvidia.install"
    gzip "${pkgdir}/lib/modules/${_extramodules}/nvidia.ko"
}

die install-Datei für nvidia gibt es hier und das PKGBUILD für nvidia-utils ist hier. Vielleicht ist es ja beim nächsten Kernel-update hilfreich.
Ich habe mir das Problem noch mal genauer angeschaut:
  • nvidia <= 295.71 - keine Probleme
  • nvidia >= 302.07 - Ton-Problem nach dem Bereitschaftsmodus (Suspend-to-RAM)


Media-PC > HDMI (Ton u. Video) > AVR/Verstärker > HDMI (Video) > Fernseher
|
|--- 5.1 Soundsystem


Ein- und ausgeschaltet wird die Anlage über eine Harmony, der Media-PC brauch beim Ausschalten ca. 5 Sekunden länger - da er ja erst die PM-Hooks ausführen muss. AVR und TV sind logischerweise sofort aus!
  • Beim NVIDIA-Treiber <= 295.71 ist es egal in welcher Reihenfolge man die Anlage ausschaltet (Media-PC, TV, AVR) - der Media-PC brauch ca. 5 Sekunden, bis er aus ist (wie oben beschrieben).
  • Beim NVIDIA-Treiber >= 302.07 ist Reihenfolge relevant! Wenn man zuerst den Media-PC ausschaltet und die ca. 5 Sekunden wartet, bis er aus ist und erst dann den AVR und Fernseher ausschaltet, gibt es keine Ton-Probleme beim nächsten (gleichzeitigen) Einschalten über die Harmony.


Ich vermute, dass der NVIDIA-Treiber >= 302.07 irgendwie erkennt, dass der Verstärker nicht mehr eingeschaltet ist und dann so in den Bereitschaftsmodus geht. Nachdem Aufwachen aus dem Bereitschaftsmodus erkennt er dann nicht mehr automatisch, dass der Verstärker eingeschaltet ist ... o_0

Vielleicht sollte mal irgendwer, der dieses Problem in Englisch gut und verständlich beschreiben kann, einen Bug-Report bei NVIDIA erstellen - dazu bin ich leider nicht in der Lage.

mannohneschuh schriebOK, irgendwie habe ich dich wohl falsch verstanden. Ich hatte nicht bemerkt das 295.53 der letzte funktionierende Treiber war, und du die Versionen danach bereits getestet hast. Aus deinem OP schloß ich das du von 295.53-1 gleich zu 304.37 gekommen bist… dazwischen liegen ja noch ein paar (mindestens eine) Versionen. Hast du bereits den LTS-Kernel mit den nvidia-lts getestet?

AFAIR kann man noch was an den hooks der pm-utils drehen. Also bestimmte Treiber vor dem suspend entladen und wieder laden wenn der Rechner aufwacht. ich habe das aber noch nie gebraucht und mich daher nie damit beschäftigt.
  • nvidia <= 295.71 - keine Probleme
  • nvidia >= 302.07 - Ton-Problem nach dem Bereitschaftsmodus (Suspend-to-RAM)
Das mit dem LTS-Kernel und LTS-NVIDIA-Treiber macht wenig Sinn - da der LTS-NVIDIA-Treiber auch die Version 304.43 ist.

Mit Hooks von pm-utils kenne ich mich aus, habe, in diesem Fall, auch versucht etwas damit zuerreichen - ohne Erfolg.
portix schriebIst jetzt zwar ohnehin zu spät, aber du hättest dir auch mit dem originalen PKGBUILD für nvidia-295.53 (etwas angepasst) ein nvidia-paket bauen können, das angepasste PKGBUILD:

Vielleicht ist es ja beim nächsten Kernel-update hilfreich.
Danke für den Verschlag, vielleicht schaue ich mir die PKGBUILDs mal an oder vielleicht stellt auch jemand nvidia-295xx und nvidia-utils-295xx im AUR bereit. Bei einem Kernel-Update führe ich einfach das NVIDIA-Skript noch mal aus! ;-)
fs4000 schriebHier gibts auch neuere Versionen von der 295 Sparte: http://www.nvidia.com/object/linux_amd64_display_archive.html
In dem ist auch diese Lücke geschlossen: http://heise.de/-1658115
Vielen Dank, das ist wirklich ein Grund 295.53 nicht zu verwenden. Ich habe den Workaround für 295.71 aktualisiert.
Nvidia hat die Version 295.75 veröffentlicht. Mir verschließt sich allerdings der Sinn, denn auf der eigentlichen Downloadseite bieten sie den völlig veralteten 302.17 vom 15. Juni zum Download an.
2 Monate später
Hallo Community,

ich habe das Problem mit den neuen NVIDIA-Treibern nun mit einer PM-Hook bzw. SystemD-Hook gelöst.
Dazu habe ich einen langen Artikel auf meinem Blog geschrieben - ich hoffe es hilft.

Gruß Nico