Compare commits
98 Commits
Author | SHA1 | Date |
---|---|---|
Kolan Sh | 87b1bc751a | |
Kolan Sh | 906db09e41 | |
Kolan Sh | 115c5151f1 | |
Kolan Sh | 1e312098ae | |
Kolan Sh | 3dcdfa10ec | |
Kolan Sh | b367e25435 | |
Kolan Sh | 24badcb2fb | |
Kolan Sh | 74f4dacc9a | |
Kolan Sh | 8ebb0c6f90 | |
Kolan Sh | 82b80f6038 | |
Kolan Sh | 13acbebb29 | |
Kolan Sh | 1e5cf1fa07 | |
Kolan Sh | 54c0ab5125 | |
Kolan Sh | ff414cebfd | |
Kolan Sh | 9b3e0113ca | |
Kolan Sh | b0a367d8cd | |
Kolan Sh | b82852047e | |
Kolan Sh | 7347ff2e9a | |
Kolan Sh | eb8b54f5ac | |
Kolan Sh | 25cc887c25 | |
Kolan Sh | 4d6bf1b256 | |
Kolan Sh | 5b59f169e3 | |
Kolan Sh | 80028b2005 | |
Kolan Sh | 4a2acbbf06 | |
Kolan Sh | 3e4ea058b8 | |
Kolan Sh | a15b1d2117 | |
Kolan Sh | a374be74ce | |
Kolan Sh | 59b4525a81 | |
Kolan Sh | 75eb8f9fdb | |
Kolan Sh | f29f8fa32a | |
Kolan Sh | e2a6252c76 | |
Kolan Sh | 695ecc7306 | |
Kolan Sh | 93d452832e | |
Kolan Sh | 8e077bbba3 | |
Kolan Sh | 84be3fa6e3 | |
Kolan Sh | d7fce6d10f | |
Kolan Sh | d100e88e36 | |
Kolan Sh | b9586b1870 | |
Kolan Sh | 39ea202df2 | |
Kolan Sh | 969eb80026 | |
Kolan Sh | 16bb1e08e4 | |
kolan | 70c774de20 | |
kolan | 9e2d683478 | |
Kolan Sh | b040c57d84 | |
Kolan Sh | c84542b1cf | |
Kolan Sh | f8a5cb7ecb | |
Kolan Sh | 905823610d | |
Kolan Sh | 2afa920ce7 | |
Kolan Sh | 30981196a3 | |
Kolan Sh | 29e2e510c2 | |
Kolan Sh | 5cb8cce033 | |
Kolan Sh | 2c348e50fe | |
Kolan Sh | 81b9877b2e | |
Kolan Sh | 4aef233f2b | |
kolan | c37ed3c8e0 | |
Kolan Sh | 47ea4e747a | |
kolan | 1431123410 | |
kolan | 8e7f3f3332 | |
Kolan Sh | 6a6558d99d | |
Kolan Sh | 2b98295e12 | |
Kolan Sh | 21cddd9d2b | |
Kolan Sh | deae038661 | |
Kolan Sh | f6bb5d475b | |
Kolan Sh | 1c3cd44d3f | |
Kolan Sh | 798409ddbc | |
Kolan Sh | f5f24b84f0 | |
Kolan Sh | d0d596453f | |
Kolan Sh | 53c6096e12 | |
Kolan Sh | 5ab8dd3fea | |
Kolan Sh | 0824959805 | |
Kolan Sh | 852c8ea99d | |
Kolan Sh | ae952acf61 | |
Kolan Sh | 177e816d19 | |
Kolan Sh | bdc0353397 | |
Kolan Sh | 812288e0b8 | |
Kolan Sh | 991b106393 | |
Kolan | dedfdb5bd0 | |
Kolan | 612f5e31b0 | |
Kolan | 092418a5c6 | |
Kolan Sh | 3138697a21 | |
Kolan Sh | a0f7459f18 | |
kolan | d6444f186c | |
Kolan Sh | 413abffbaf | |
Kolan Sh | abbca96337 | |
Kolan Sh | 43dc115c52 | |
Kolan Sh | 1c198679d2 | |
Kolan Sh | e3ff58991a | |
Kolan Sh | 0c71d68fed | |
Kolan Sh | de265dda5e | |
Kolan Sh | d0a2bfe4fe | |
Kolan Sh | 3e69113a6e | |
Kolan Sh | f558f4c808 | |
Kolan Sh | 95424ec4b0 | |
Kolan Sh | 4c49d9d40a | |
Kolan Sh | 6651c663bb | |
Kolan Sh | 137559106b | |
Kolan Sh | 7e67c7f4cf | |
Kolan Sh | f836d22d61 |
48
Makefile
48
Makefile
|
@ -10,17 +10,51 @@ install:
|
|||
install bin/* ${DESTDIR}/${PREFIX}/bin
|
||||
install -d ${DESTDIR}/${PREFIX}/sbin
|
||||
install sbin/* ${DESTDIR}/${PREFIX}/sbin
|
||||
install -d ${DESTDIR}/${PREFIX}/lib64
|
||||
install lib64/*.so ${DESTDIR}/${PREFIX}/lib64
|
||||
install -d ${DESTDIR}/${PREFIX}/lib64/snail
|
||||
install -d ${DESTDIR}/${PREFIX}/share
|
||||
install -d ${DESTDIR}/${PREFIX}/share/snail
|
||||
install -d ${DESTDIR}/${PREFIX}/share/snail/init.d
|
||||
install share/init.d/* ${DESTDIR}/${PREFIX}/share/snail/init.d
|
||||
if test x86_64 = `uname -m` ; then \
|
||||
if test -d /usr/lib32 ; then \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib32; \
|
||||
install lib32/*.so ${DESTDIR}/${PREFIX}/lib32; \
|
||||
else \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib; \
|
||||
install lib32/*.so ${DESTDIR}/${PREFIX}/lib; \
|
||||
fi; \
|
||||
if test -d /usr/lib64 ; then \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib64; \
|
||||
install lib64/*.so ${DESTDIR}/${PREFIX}/lib64; \
|
||||
else \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib; \
|
||||
install lib64/*.so ${DESTDIR}/${PREFIX}/lib; \
|
||||
fi; \
|
||||
if test ! -d /usr/lib ; then \
|
||||
ln -sf lib64 /usr/lib; \
|
||||
fi; \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib/snail/lib32; \
|
||||
else \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib; \
|
||||
install lib32/*.so ${DESTDIR}/${PREFIX}/lib; \
|
||||
install -d ${DESTDIR}/${PREFIX}/lib/snail; \
|
||||
fi; \
|
||||
install -d ${DESTDIR}/${PREFIX}/share/snail/init.d; \
|
||||
install share/init.d/* ${DESTDIR}/${PREFIX}/share/snail/init.d ; \
|
||||
if test -d /lib/modules/`uname -r` ; then \
|
||||
mkdir -p ${DESTDIR}/lib/modules/`uname -r`/video \
|
||||
touch ${DESTDIR}/lib/modules/`uname -r`/video/snail_autorebuild ; \
|
||||
elif test -d /lib64/modules/`uname -r` ; then \
|
||||
mkdir -p ${DESTDIR}/lib64/modules/`uname -r`/video \
|
||||
touch ${DESTDIR}/lib64/modules/`uname -r`/video/snail_autorebuild ; \
|
||||
fi
|
||||
|
||||
uninstall:
|
||||
rm -f ${DESTDIR}/etc/X11/xorg.conf.*.snail
|
||||
rm -f ${DESTDIR}/etc/init.d/snail*
|
||||
rm -f ${DESTDIR}/etc/systemd/system/snail*
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib/libdlfaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib/libgefaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib/librrfaker.so
|
||||
rm -rf ${DESTDIR}/${PREFIX}/lib/snail
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib32/libdlfaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib32/libgefaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib32/librrfaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib64/libdlfaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib64/libgefaker.so
|
||||
rm -f ${DESTDIR}/${PREFIX}/lib64/librrfaker.so
|
||||
|
|
7
README
7
README
|
@ -5,6 +5,7 @@ Features
|
|||
Auto power off for second X-server and nVidia chip.
|
||||
Easy installation (look at Wiki).
|
||||
Multiuser access.
|
||||
Multilib support.
|
||||
Run in a way nvrun app.
|
||||
|
||||
Tested distros
|
||||
|
@ -12,7 +13,11 @@ Tested distros
|
|||
Gentoo amd64
|
||||
Debian Squeeze amd64
|
||||
Debian Wheezy amd64
|
||||
Fedora 16 (Verne) x86_64
|
||||
Ubuntu 12.04 x86_64
|
||||
|
||||
Supported Models: M11XR2, 1015PN, 1215N, K42Jc, K52Jc, N53Jf, N53Jg, N71Jv, N73Jf, P52Jc, PL80Jt, U30Jc, U33Jc, U35Jc, U36Jc, UL80Jt, N53Sn, U41Sv, N53Sv, N61Jv, N73Sv, P31Jg, U43Jc, UL30Vt, E6420, InspironN5110, XPSL702X, Vostro3300, Vostro3500, XPS15, ThinkPadT410, ThinkPadT420.
|
||||
Supported Models: All that supported by bbswitch, vgaswitcheroo (most of laptops with recent Linux kernel) + several by acpi_call (M11XR2, 1015PN, 1215N,
|
||||
K42Jc, K52Jc, N53Jf, N53Jg, N71Jv, N73Jf, P52Jc, PL80Jt, U30Jc, U33Jc, U35Jc, U36Jc, UL80Jt, N53Sn, U41Sv, N53Sv, N61Jv, N73Sv, P31Jg, U43Jc, UL30Vt, E6420,
|
||||
InspironN5110, XPSL702X, Vostro3300, Vostro3500, XPS15, ThinkPadT410, ThinkPadT420).
|
||||
|
||||
Video on YouTube: http://www.youtube.com/watch?v=c6RH69j-gMY&feature=plcp&context=C3f5cbeeUDOEgsToPDskLOX8DnELkwYsi2QZ7_phwJ
|
||||
|
|
28
bin/nvrun
28
bin/nvrun
|
@ -2,26 +2,34 @@
|
|||
|
||||
PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
||||
|
||||
TIMEOUT=10 # wait timeout for X server start
|
||||
let INTEL_IF_FAIL=1 # run on Intel if nVidia fails
|
||||
TIMEOUT=8 # wait timeout for X server start
|
||||
|
||||
LOCK_FILE=/tmp/.snail.lock
|
||||
FIFO_FILE=/tmp/.snail.fifo
|
||||
|
||||
[ ! -f $LOCK_FILE ] && echo "Snail daemon is not running. Please start it." && exit -1
|
||||
|
||||
{
|
||||
echo -n > $FIFO_FILE &
|
||||
flock -w 1 -s 9
|
||||
if [ 0 -ne $? ]; then
|
||||
(nohup echo -n > $FIFO_FILE &>/dev/null)&
|
||||
flock -w $TIMEOUT -s 9
|
||||
fi
|
||||
|
||||
if [ 0 -eq $? ]; then
|
||||
echo "Running $@ on nVidia"
|
||||
echo "Trying to run $@ on nVidia"
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail
|
||||
snail.vglrun -d :1 "$@"
|
||||
echo "Application $@ was performed on nVidia"
|
||||
LD_PRELOAD="/usr/lib/snail/lib32/libGL.so.1 \
|
||||
/usr/lib/snail/lib32/libnvidia-tls.so \
|
||||
/usr/lib/snail/lib32/libnvidia-glcore.so" \
|
||||
snail.vglrun -d :8293 "$@" 2>/dev/null \
|
||||
&& echo "Application $@ was performed on nVidia ;-)" && exit 0
|
||||
|
||||
elif [ 0 -ne $INTEL_IF_FAIL ]; then
|
||||
echo "Running $@ on Intel"
|
||||
"$@"
|
||||
echo "Application $@ was performed on Intel"
|
||||
echo "nvrun $@ returns an error. Here is nVidia X-server error log:"
|
||||
grep '] (EE) ' /var/log/Xorg.8293.log
|
||||
|
||||
else
|
||||
echo "Timout received for 'power on' request to Snail-daemon ;-("
|
||||
fi
|
||||
|
||||
flock -u 9
|
||||
|
|
|
@ -1,22 +1,3 @@
|
|||
Section "Files"
|
||||
FontPath "/usr/share/fonts/misc:unscaled"
|
||||
FontPath "/usr/share/fonts/75dpi:unscaled"
|
||||
FontPath "/usr/share/fonts/100dpi:unscaled"
|
||||
FontPath "/usr/share/fonts/corefonts"
|
||||
FontPath "/usr/share/fonts/freefonts"
|
||||
FontPath "/usr/share/fonts/terminus"
|
||||
FontPath "/usr/share/fonts/ttf-bitstream-vera"
|
||||
FontPath "/usr/share/fonts/unifont"
|
||||
FontPath "/usr/share/fonts/artwiz-latin1"
|
||||
FontPath "/usr/share/fonts/cronyx"
|
||||
FontPath "/usr/share/fonts/cyrillic"
|
||||
FontPath "/usr/share/fonts/dejavu"
|
||||
FontPath "/usr/share/fonts/droid"
|
||||
FontPath "/usr/share/fonts/intlfonts"
|
||||
FontPath "/usr/share/fonts/liberation-fonts"
|
||||
FontPath "/usr/share/fonts/urw-fonts"
|
||||
EndSection
|
||||
|
||||
Section "Device"
|
||||
Identifier "Device0"
|
||||
Driver "intel"
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,34 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=4
|
||||
inherit eutils
|
||||
|
||||
DESCRIPTION="Snail - nVidia Optimus support"
|
||||
|
||||
SRC_URI="ftp://backbone.ws/projects/snail/${P}.tar.bz2"
|
||||
|
||||
HOMEPAGE="https://chili.backbone.ws/projects/snail"
|
||||
|
||||
KEYWORDS="-* ~x86 ~amd64"
|
||||
|
||||
SLOT="0"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
|
||||
IUSE=""
|
||||
|
||||
DEPEND="x11-drivers/nvidia-drivers
|
||||
sys-apps/dmidecode"
|
||||
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
src_install() {
|
||||
emake install DESTDIR="${D}" || die
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
snail.configure
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
DIST snail-1.2.6.tar.bz2 628927 RMD160 64a1c556fc72729ea19e25355769b528187d9542 SHA1 d7381c4c86dcd3c08ceb8d88e2a882aafa90a9d7 SHA256 3b4f81d3a2b46281bf494343ecdf0980b231cfe558e57f1403ea873ddcc35196
|
||||
EBUILD snail-1.2.6.ebuild 976 RMD160 3f6d32cf30f0f98ef51a6c18c8a2912baca69e62 SHA1 413f601abf3b8ce458e07b8dfd3f49012d769fd1 SHA256 0d623003f723d520a901af0d096c7055a33b69427f9394788230605898e22d42
|
||||
EBUILD snail-9999.ebuild 919 RMD160 406c48d01df438632f76564877867da5c300e2ea SHA1 af8e6f07f6846800ac4695b68da5f4a0daf1e929 SHA256 6f3866d6f6c5466627563042425a2dc7d1144a64d6edb04c1e57a0be676263d1
|
|
@ -0,0 +1,53 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=4
|
||||
|
||||
inherit eutils
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI=${EGIT_REPO_URI:-"git://github.com/backbone/snail.git"}
|
||||
inherit git-2
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="ftp://backbone.ws/projects/snail/${P}.tar.bz2"
|
||||
KEYWORDS="-* ~x86 ~amd64"
|
||||
fi
|
||||
|
||||
DESCRIPTION="Snail - nVidia Optimus support"
|
||||
|
||||
SRC_URI="ftp://backbone.ws/projects/snail/${P}.tar.bz2"
|
||||
|
||||
HOMEPAGE="https://chili.backbone.ws/projects/snail"
|
||||
|
||||
SLOT="0"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
|
||||
IUSE=""
|
||||
|
||||
DEPEND="x11-drivers/nvidia-drivers
|
||||
sys-power/bbswitch
|
||||
sys-apps/dmidecode"
|
||||
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
src_prepare() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
emake install DESTDIR="${D}"
|
||||
else
|
||||
emake install DESTDIR="${D}" || die
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
snail.configure
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=4
|
||||
|
||||
inherit eutils
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI=${EGIT_REPO_URI:-"git://github.com/backbone/snail.git"}
|
||||
inherit git-2
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="ftp://backbone.ws/projects/snail/${P}.tar.bz2"
|
||||
KEYWORDS="-* ~x86 ~amd64"
|
||||
fi
|
||||
|
||||
DESCRIPTION="Snail - nVidia Optimus support"
|
||||
|
||||
HOMEPAGE="https://chili.backbone.ws/projects/snail"
|
||||
|
||||
SLOT="0"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
|
||||
IUSE=""
|
||||
|
||||
DEPEND="x11-drivers/nvidia-drivers
|
||||
sys-power/bbswitch
|
||||
sys-apps/dmidecode"
|
||||
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
src_prepare() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
emake install DESTDIR="${D}"
|
||||
else
|
||||
emake install DESTDIR="${D}" || die
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
snail.configure
|
||||
}
|
|
@ -20,6 +20,15 @@ FIFO_FILE=/tmp/.snail.fifo
|
|||
|
||||
$XSERVER_STOP_CMD && snail.nv_pwr_off # stop X service
|
||||
|
||||
sigterm ()
|
||||
{
|
||||
rm -f $LOCK_FILE
|
||||
rm -f $FIFO_FILE
|
||||
exit 0
|
||||
}
|
||||
|
||||
trap sigterm SIGTERM
|
||||
|
||||
touch $LOCK_FILE && chown root:video $LOCK_FILE && chmod 660 $LOCK_FILE # create lock file
|
||||
rm -f $FIFO_FILE && mkfifo --mode 660 $FIFO_FILE && chgrp video $FIFO_FILE # create fifo
|
||||
|
||||
|
@ -29,8 +38,10 @@ rm -f $FIFO_FILE && mkfifo --mode 660 $FIFO_FILE && chgrp video $FIFO_FILE # cre
|
|||
|
||||
while [ 1 ]; do
|
||||
read <$FIFO_FILE
|
||||
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||
snail.nv_pwr_on && $XSERVER_START_CMD # starting X server
|
||||
flock -u 9
|
||||
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||
flock 9
|
||||
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||
$XSERVER_STOP_CMD && snail.nv_pwr_off # stopping X server
|
||||
|
|
|
@ -1,29 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Test for acpi_call/vgaswitcheroo"
|
||||
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
modprobe bbswitch &>/dev/null
|
||||
modprobe acpi_call &>/dev/null
|
||||
if [ -f /proc/acpi/bbswitch ]; then
|
||||
echo "bbswitch is OK! ;-)"
|
||||
elif [ -f /proc/acpi/call ]; then
|
||||
echo "acpi_call is OK! ;-)"
|
||||
elif [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
echo "vgaswitcheroo is OK! ;-)"
|
||||
else
|
||||
if [ -f /proc/acpi/call ]; then
|
||||
echo "acpi_call is OK! ;-)"
|
||||
else
|
||||
modprobe acpi_call
|
||||
if [ -f /proc/acpi/call ]; then
|
||||
echo "Warning: Please configure acpi_call module for autoloading on system startup!"
|
||||
else
|
||||
echo "No vgaswitcheroo/acpi_call found. Please configure/install one of them! ;-("
|
||||
echo "No bbswitch/acpi_call/vgaswitcheroo found. Please configure/install one of them! ;-("
|
||||
echo "Also You can run 'snail.configure' manually when the problem is resolved."
|
||||
exit -1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Test for nVidia driver"
|
||||
snail.nv_pwr_on && snail.nv_pwr_off
|
||||
modinfo nvidia &>/dev/null || modinfo nvidia-current &>/dev/null
|
||||
if [ 0 -eq $? ]; then
|
||||
echo "nVidia driver is OK! ;-)"
|
||||
echo "nVidia kernel module found! ;-)"
|
||||
else
|
||||
echo "Test failed ;-("
|
||||
echo "nVidia kernel module not found ;-("
|
||||
echo "Probably you need to install standart nVidia driver or make a bug report..."
|
||||
echo "Also You can run 'snail.configure' manually when the problem is resolved."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
|
@ -32,7 +31,7 @@ which dmidecode &>/dev/null
|
|||
if [ 0 -eq $? ]; then
|
||||
echo "dmidecode utility is OK! ;-)"
|
||||
else
|
||||
echo "Please install dmidecode and run the script again."
|
||||
echo "Please install dmidecode and run the 'snail.configure' script again."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
|
@ -46,6 +45,12 @@ if [ -f /etc/gentoo-release ]; then
|
|||
DISTRIB_DESCRIPTION=`cat /etc/gentoo-release`
|
||||
DISTRIB_RELEASE=${DISTRIB_DESCRIPTION##* }
|
||||
DISTRIB_CODENAME=gentoo
|
||||
elif [ -f /etc/lsb-release ]; then
|
||||
DISTRIB_ID=`grep ^DISTRIB_ID /etc/lsb-release | cut -d= -f2`
|
||||
DISTRIB_RELEASE=`grep ^DISTRIB_RELEASE /etc/lsb-release | cut -d= -f2`
|
||||
DISTRIB_CODENAME=`grep ^DISTRIB_CODENAME /etc/lsb-release | cut -d= -f2`
|
||||
DISTRIB_DESCRIPTION=`grep ^DISTRIB_DESCRIPTION /etc/lsb-release | cut -d= -f2`
|
||||
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
DISTRIB_ID=debian
|
||||
DISTRIB_RELEASE=`cat /etc/debian_version`
|
||||
|
@ -77,6 +82,9 @@ elif [ -f /etc/fedora-release ]; then
|
|||
DISTRIB_RELEASE=${DISTRIB_RELEASE##* }
|
||||
DISTRIB_CODENAME=${DISTRIB_DESCRIPTION##*\(}
|
||||
DISTRIB_CODENAME=${DISTRIB_CODENAME%%\)*}
|
||||
elif [ -f /etc/issue ]; then
|
||||
DISTRIB_ID=`cut -d" " -f1 /etc/issue | head -n1`
|
||||
DISTRIB_RELEASE=`cut -d" " -f2 /etc/issue | head -n1`
|
||||
else
|
||||
DISTRIB_DESCRIPTION=`cat /etc/*release* | head -n1`
|
||||
DISTRIB_ID=`echo ${DISTRIB_DESCRIPTION%% *} | tr 'A-Z' 'a-z'`
|
||||
|
@ -92,7 +100,8 @@ echo "DISTRIB_CODENAME=$DISTRIB_CODENAME"
|
|||
|
||||
SNAIL_INIT_D_PATH=/usr/share/snail/init.d
|
||||
echo "Copying system init scripts (SysV/OpenRC/Systemd), start snail-watcher, configuring kernel modules and OpenGL libraries"
|
||||
[[ -d /usr/lib64/snail && ! -d /usr/lib/snail ]] && ln -s /usr/lib64/snail /usr/lib/snail
|
||||
rm -f /usr/lib/snail/* &>/dev/null
|
||||
rm -f /usr/lib/snail/lib32/* &>/dev/null
|
||||
case "$DISTRIB_ID" in
|
||||
"gentoo")
|
||||
cp -f $SNAIL_INIT_D_PATH/snail-watcher.openrc /etc/init.d/snail-watcher
|
||||
|
@ -103,19 +112,22 @@ case "$DISTRIB_ID" in
|
|||
eselect rc stop snail-xserver
|
||||
eselect rc restart snail-watcher
|
||||
|
||||
grep acpi_call /etc/conf.d/modules || echo 'modules="${modules} acpi_call' >> /etc/conf.d/modules
|
||||
grep bbswitch /etc/conf.d/modules || echo 'modules="${modules} bbswitch"' >> /etc/conf.d/modules
|
||||
grep acpi_call /etc/conf.d/modules || echo 'modules="${modules} acpi_call"' >> /etc/conf.d/modules
|
||||
|
||||
eselect opengl set xorg-x11
|
||||
for arch in 32bit 64bit; do
|
||||
for chip in i915 i965 r300 r600 sw; do
|
||||
for chip in i915 i965 sw; do
|
||||
eselect mesa set $arch $chip classic &>/dev/null;
|
||||
done;
|
||||
done
|
||||
ln -sf /usr/lib/opengl/nvidia/lib/libGL.so.[0-9][0-9]* /usr/lib/snail/libGL.so.1
|
||||
ln -sf /usr/lib32/opengl/nvidia/lib/libGL.so.1 /usr/lib/snail/lib32/libGL.so.1
|
||||
ln -sf /usr/lib/xorg/modules/libfb.so /usr/lib/snail/libfb.so
|
||||
ln -sf /usr/lib/xorg/modules/libwfb.so /usr/lib/snail/libwfb.so
|
||||
ln -sf /usr/lib/opengl/nvidia/extensions/libglx.so.[0-9][0-9]* /usr/lib/snail/libglx.so
|
||||
ln -sf /usr/lib/opengl/nvidia/lib/libnvidia-tls.so.[0-9][0-9]* /usr/lib/snail/
|
||||
ln -sf /usr/lib32/opengl/nvidia/lib/libnvidia-tls.so /usr/lib/snail/lib32/libnvidia-tls.so
|
||||
ln -sf /usr/lib/xorg/modules/drivers/nvidia_drv.so /usr/lib/snail/nvidia_drv.so
|
||||
;;
|
||||
|
||||
|
@ -125,9 +137,12 @@ case "$DISTRIB_ID" in
|
|||
update-rc.d snail-xserver remove
|
||||
update-rc.d snail-watcher defaults
|
||||
/etc/init.d/snail-xserver stop
|
||||
/etc/init.d/snail-watcher stop
|
||||
/etc/init.d/snail-watcher start
|
||||
|
||||
grep '^bbswitch$' /etc/modules || echo bbswitch >> /etc/modules
|
||||
grep '^acpi_call$' /etc/modules || echo acpi_call >> /etc/modules
|
||||
|
||||
case "$DISTRIB_RELEASE" in
|
||||
6.?.?)
|
||||
# nVidia driver installed from Debian repositories
|
||||
|
@ -157,6 +172,13 @@ case "$DISTRIB_ID" in
|
|||
mv -f /usr/lib/libGL.so.* /tmp
|
||||
apt-get install --reinstall libgl1-mesa-glx
|
||||
mv -f /tmp/libGL.so.* /usr/lib
|
||||
|
||||
rm -f /usr/lib32/libGL.so.1
|
||||
rm -f /usr/lib32/libGL.so
|
||||
ln -sf libGL.so.1.2 /usr/lib32/libGL.so.1
|
||||
ln -sf libGL.so.1 /usr/lib32/libGL.so
|
||||
ln -sf /usr/lib32/libGL.so.[0-9][0-9]* /usr/lib/snail/lib32/libGL.so.1
|
||||
ln -sf /usr/lib32/tls/libnvidia-tls.so.[0-9][0-9]* /usr/lib/snail/lib32/libnvidia-tls.so
|
||||
fi
|
||||
;;
|
||||
|
||||
|
@ -165,6 +187,10 @@ case "$DISTRIB_ID" in
|
|||
ln -sf /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1 /etc/alternatives/glx--libGL.so.1-x86_64-linux-gnu
|
||||
rm -f /etc/alternatives/glx--linux-libglx.so
|
||||
ln -sf /usr/lib/xorg/modules/extensions/libglx.so /etc/alternatives/glx--linux-libglx.so
|
||||
rm -f /etc/alternatives/ia32-libGL.so.1
|
||||
ln -sf /usr/lib32/nvidia/diversions/libGL.so.1.2 /etc/alternatives/ia32-libGL.so.1
|
||||
rm -f /etc/alternatives/ia32-libGL.so
|
||||
ln -sf /usr/lib32/nvidia/diversions/libGL.so.1.2 /etc/alternatives/ia32-libGL.so
|
||||
|
||||
ln -sf /usr/lib/xorg/modules/libfb.so /usr/lib/snail/libfb.so
|
||||
ln -sf /usr/lib/xorg/modules/libwfb.so /usr/lib/snail/libwfb.so
|
||||
|
@ -172,6 +198,47 @@ case "$DISTRIB_ID" in
|
|||
ln -sf /usr/lib/x86_64-linux-gnu/nvidia/current/libGL.so.1 /usr/lib/snail/libGL.so.1
|
||||
ln -sf /etc/alternatives/nvidia/libglx.so /usr/lib/snail/libglx.so
|
||||
ln -sf /usr/lib/nvidia/nvidia/nvidia_drv.so /usr/lib/snail/nvidia_drv.so
|
||||
ln -sf /usr/lib32/nvidia/libGL.so.1 /usr/lib/snail/lib32/libGL.so.1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "No rules for Your distribution. Please make a bug report."
|
||||
exit -1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"Ubuntu")
|
||||
cp -f $SNAIL_INIT_D_PATH/snail-watcher.sysv /etc/init.d/snail-watcher
|
||||
cp -f $SNAIL_INIT_D_PATH/snail-xserver.sysv /etc/init.d/snail-xserver
|
||||
update-rc.d snail-xserver remove
|
||||
update-rc.d snail-watcher defaults
|
||||
/etc/init.d/snail-xserver stop
|
||||
/etc/init.d/snail-watcher stop
|
||||
/etc/init.d/snail-watcher start
|
||||
|
||||
grep '^bbswitch$' /etc/modules || echo bbswitch >> /etc/modules
|
||||
grep '^acpi_call$' /etc/modules || echo acpi_call >> /etc/modules
|
||||
|
||||
case "$DISTRIB_RELEASE" in
|
||||
12.*)
|
||||
rm -f /etc/alternatives/x86_64-linux-gnu_gl_conf
|
||||
ln -sf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf /etc/alternatives/x86_64-linux-gnu_gl_conf
|
||||
ldconfig
|
||||
rm -f /usr/lib/x86_64-linux-gnu/xorg/extra-modules
|
||||
ln -sf /usr/lib/nvidia-current/libGL.so.1 /usr/lib/snail/libGL.so.1
|
||||
ln -sf /usr/lib/xorg/modules/libfb.so /usr/lib/snail/libfb.so
|
||||
ln -sf /usr/lib/nvidia-current/xorg/libglx.so /usr/lib/snail/libglx.so
|
||||
ln -sf /usr/lib/nvidia-current/libnvidia-glcore.so.[0-9][0-9]* /usr/lib/snail/
|
||||
ln -sf /usr/lib/nvidia-current/tls/libnvidia-tls.so.[0-9][0-9]* /usr/lib/snail/
|
||||
ln -sf /usr/lib/xorg/modules/libwfb.so /usr/lib/snail/libwfb.so
|
||||
ln -sf /usr/lib/nvidia-current/xorg/nvidia_drv.so /usr/lib/snail/nvidia_drv.so
|
||||
|
||||
rm -f /etc/alternatives/i386-linux-gnu_gl_conf
|
||||
ln -sf /usr/lib/i386-linux-gnu/mesa/ld.so.conf /etc/alternatives/i386-linux-gnu_gl_conf
|
||||
ln -sf /usr/lib32/nvidia-current/libGL.so.1 /usr/lib/snail/lib32/libGL.so.1
|
||||
ln -sf /usr/lib32/nvidia-current/tls/libnvidia-tls.so.[0-9][0-9]* /usr/lib/snail/lib32/libnvidia-tls.so
|
||||
ln -sf /usr/lib32/nvidia-current/libnvidia-glcore.so.[0-9][0-9]* /usr/lib/snail/lib32/libnvidia-glcore.so
|
||||
;;
|
||||
|
||||
*)
|
||||
|
@ -184,10 +251,13 @@ case "$DISTRIB_ID" in
|
|||
"fedora")
|
||||
case "$DISTRIB_CODENAME" in
|
||||
Verne)
|
||||
echo bbswitch > /etc/modules-load.d/snail.conf
|
||||
echo acpi_call > /etc/modules-load.d/snail.conf
|
||||
cp -f $SNAIL_INIT_D_PATH/snail-watcher.systemd /etc/systemd/system/snail-watcher.service
|
||||
cp -f $SNAIL_INIT_D_PATH/snail-xserver.systemd /etc/systemd/system/snail-xserver.service
|
||||
systemctl --system daemon-reload
|
||||
systemctl stop snail-xserver.service
|
||||
systemctl stop snail-watcher.service
|
||||
systemctl start snail-watcher.service
|
||||
systemctl enable snail-watcher.service
|
||||
ln -sf /usr/lib64/xorg/modules/libfb.so /usr/lib/snail/libfb.so
|
||||
|
@ -197,6 +267,7 @@ case "$DISTRIB_ID" in
|
|||
rm -f /usr/lib64/nvidia/libGL.so.1
|
||||
ln -sf /usr/lib64/nvidia/libGL.so.[0-9][0-9]* /usr/lib/snail/libGL.so.1
|
||||
ln -sf /usr/lib64/xorg/modules/extensions/nvidia/libglx.so.[0-9][0-9]* /usr/lib/snail/libglx.so
|
||||
ln -sf /usr/lib/nvidia/libGL.so.1 /usr/lib/snail/lib32/libGL.so.1
|
||||
;;
|
||||
|
||||
*)
|
||||
|
@ -213,6 +284,10 @@ case "$DISTRIB_ID" in
|
|||
esac
|
||||
|
||||
echo "Creating backups of original xorg.conf.* files and replacing with snail's versions..."
|
||||
if [[ ! -f /etc/X11/xorg.conf.nvidia.snail \
|
||||
&& ! -f /etc/X11/xorg.conf.intel.snail \
|
||||
|| "`grep 'Driver *\"intel\"' /etc/X11/xorg.conf`" == "" \
|
||||
|| "`grep 'BusID *"PCI:[0-9]:[0-9]:[0-9]' /etc/X11/xorg.conf{,.nvidia} | wc -l`" != 2 ]]; then
|
||||
[[ -f /etc/X11/xorg.conf && ! -f /etc/X11/xorg.conf.snail-bkp ]] && mv /etc/X11/xorg.conf /etc/X11/xorg.conf.snail-bkp
|
||||
[[ -f /etc/X11/xorg.conf.intel && ! -f /etc/X11/xorg.conf.intel.snail-bkp ]] && mv /etc/X11/xorg.conf.intel /etc/X11/xorg.conf.intel.snail-bkp
|
||||
[[ -f /etc/X11/xorg.conf.nvidia && ! -f /etc/X11/xorg.conf.nvidia.snail-bkp ]] && mv /etc/X11/xorg.conf.nvidia /etc/X11/xorg.conf.nvidia.snail-bkp
|
||||
|
@ -222,8 +297,9 @@ ln -sf xorg.conf.intel /etc/X11/xorg.conf
|
|||
|
||||
echo "Recognizing BusID of both chips and set it in xorg.conf.* files..."
|
||||
BusIDIntel="PCI:`lspci | grep VGA | grep Intel | cut -d" " -f1 | sed 's~\.~\:~g ; s~0\([0-9]\)~\1~g'`"
|
||||
BusIDNvidia="PCI:`lspci | grep VGA | grep nVidia | cut -d" " -f1 | sed 's~\.~\:~g ; s~0\([0-9]\)~\1~g'`"
|
||||
BusIDNvidia="PCI:`lspci | grep VGA | grep -i nVidia | cut -d" " -f1 | sed 's~\.~\:~g ; s~0\([0-9]\)~\1~g'`"
|
||||
sed -i "s~BusIDIntel~$BusIDIntel~" /etc/X11/xorg.conf.intel
|
||||
sed -i "s~BusIDNvidia~$BusIDNvidia~" /etc/X11/xorg.conf.nvidia
|
||||
fi
|
||||
|
||||
echo "`basename -- $0` is complete! ;-)"
|
||||
|
|
|
@ -1,116 +1,85 @@
|
|||
#!/bin/bash
|
||||
|
||||
TRIES=8
|
||||
rmmod -w nvidia &>/dev/null
|
||||
|
||||
lsmod | grep '^nouveau ' >/dev/null && modprobe -rf nouveau &>/dev/null
|
||||
|
||||
# Trying vgaswitcheroo method
|
||||
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
let tries=$TRIES
|
||||
while [ 0 -lt $tries ]; do
|
||||
modprobe -r nvidia \
|
||||
&& echo 'OFF DIS' > /sys/kernel/debug/vgaswitcheroo/switch \
|
||||
# Trying bbswitch method
|
||||
if [ -f /proc/acpi/bbswitch ]; then
|
||||
echo 'OFF' > /proc/acpi/bbswitch \
|
||||
&& a=`cat /proc/acpi/bbswitch` \
|
||||
&& [ OFF == ${a##* } ] \
|
||||
&& echo "nVidia chip powered off using bbswitch" \
|
||||
&& exit 0
|
||||
|
||||
sleep 0.01
|
||||
let tries--
|
||||
echo "tries left: $tries"
|
||||
done
|
||||
echo "Cann't power off nVidia chip ;-("
|
||||
echo "Cann't power off nVidia chip using bbswitch"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Trying acpi_call method
|
||||
if [ -f /proc/acpi/call ]; then
|
||||
model=`dmidecode $@ -s system-product-name`
|
||||
tries=$TRIES
|
||||
while [ 0 -lt $tries ]; do
|
||||
model=`dmidecode -s system-product-name`
|
||||
case "$model" in
|
||||
M11XR2)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.P0P2.PEGP.NVOP 0 0x100 0x1A {255,255,255,255}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.P0P2.PEGP._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P2.PEGP.NVOP 0 0x100 0x1A {255,255,255,255}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.P0P2.PEGP._PS3' > /proc/acpi/call
|
||||
;;
|
||||
1015PN)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\OSGS 0x03' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\OSGS 0x03' > /proc/acpi/call
|
||||
;;
|
||||
1215N)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.P0P4.GFX0._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.P0P4.GFX0._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P4.GFX0._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.P0P4.GFX0._PS3' > /proc/acpi/call
|
||||
;;
|
||||
K42Jc|K52Jc|N53Jf|N53Jg|N71Jv|N73Jf|P52Jc|PL80Jt|U30Jc|U33Jc|U35Jc|U36Jc|UL80Jt)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call
|
||||
;;
|
||||
N61Jv|N73Sv)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEGR.GFX0.DOFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEGR.GFX0.DOFF' > /proc/acpi/call
|
||||
;;
|
||||
P31Jg)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call
|
||||
;;
|
||||
U43Jc)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.RP00.VGA._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.RP00.VGA._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.RP00.VGA._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.RP00.VGA._PS3' > /proc/acpi/call
|
||||
;;
|
||||
UL30Vt)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call
|
||||
;;
|
||||
E6420)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call
|
||||
;;
|
||||
InspironN5110|XPSL702X)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.PEGP._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._PS3' > /proc/acpi/call
|
||||
;;
|
||||
Vostro3300|Vostro3500)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call
|
||||
;;
|
||||
XPS15)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call
|
||||
;;
|
||||
ThinkPadT410)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call
|
||||
;;
|
||||
ThinkPadT420)
|
||||
modprobe -r nvidia \
|
||||
&& echo '\_SB.PCI0.PEG.VID._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
|
||||
&& exit 0
|
||||
ThinkPadT420|41786VU)
|
||||
echo '\_SB.PCI0.PEG.VID._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call
|
||||
;;
|
||||
*) echo "Snail: unknown Notebook model: $model"; exit -1
|
||||
;;
|
||||
esac
|
||||
|
||||
sleep 0.01
|
||||
let tries--
|
||||
echo "tries left: $tries"
|
||||
done
|
||||
echo "acpi_call used to power OFF nVidia chip"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Cann't power off nVidia chip"
|
||||
# Trying vgaswitcheroo method
|
||||
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
echo 'OFF' > /sys/kernel/debug/vgaswitcheroo/switch \
|
||||
&& echo "nVidia chip powered off using vgaswitcheroo" \
|
||||
&& exit 0
|
||||
|
||||
echo "Cann't power off nVidia chip using vgaswitcheroo"
|
||||
exit -1
|
||||
fi
|
||||
|
|
|
@ -1,116 +1,81 @@
|
|||
#!/bin/bash
|
||||
|
||||
TRIES=8
|
||||
# lsmod | grep '^nouveau ' >/dev/null && modprobe -rf nouveau &>/dev/null
|
||||
|
||||
lsmod | grep '^nouveau ' >/dev/null && modprobe -rf nouveau &>/dev/null
|
||||
# Trying bbswitch method
|
||||
if [ -f /proc/acpi/bbswitch ]; then
|
||||
echo 'ON' > /proc/acpi/bbswitch
|
||||
a=`cat /proc/acpi/bbswitch`
|
||||
[ ON == ${a##* } ] && echo "nVidia chip powered ON using bbswitch" && exit 0
|
||||
|
||||
# Trying vgaswitcheroo method
|
||||
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
let tries=$TRIES
|
||||
while [ 0 -lt $tries ]; do
|
||||
echo 'ON DIS' > /sys/kernel/debug/vgaswitcheroo/switch \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
|
||||
sleep 0.01
|
||||
let tries--
|
||||
echo "tries left: $tries"
|
||||
done
|
||||
echo "Cann't power on nVidia chip ;-("
|
||||
echo "Cann't power on nVidia chip using bbswitch"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Trying acpi_call method
|
||||
if [ -f /proc/acpi/call ]; then
|
||||
model=`dmidecode $@ -s system-product-name`
|
||||
tries=$TRIES
|
||||
while [ 0 -lt $tries ]; do
|
||||
model=`dmidecode -s system-product-name`
|
||||
case "$model" in
|
||||
M11XR2)
|
||||
echo '\_SB.PCI0.P0P2.PEGP._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P2.PEGP._PS0' > /proc/acpi/call
|
||||
;;
|
||||
1015PN)
|
||||
echo '\_SB.PCI0.P0P4.DGPU.DON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P4.DGPU.DON' > /proc/acpi/call
|
||||
;;
|
||||
1215N)
|
||||
echo '\_SB.PCI0.P0P4.GFX0._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P4.GFX0._PS0' > /proc/acpi/call
|
||||
;;
|
||||
K42Jc|K52Jc|N53Jf|N53Jg|N71Jv|N73Jf|P52Jc|PL80Jt|U30Jc|U33Jc|U35Jc|U36Jc|UL80Jt)
|
||||
echo '\_SB.PCI0.PEG1.GFX0.DON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG1.GFX0.DON' > /proc/acpi/call
|
||||
;;
|
||||
N53Sn|U41Sv|N53Sv)
|
||||
echo '\_SB.PCI0.PEG0.GFX0.DON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.GFX0.DON' > /proc/acpi/call
|
||||
;;
|
||||
N61Jv|N73Sv)
|
||||
echo '\_SB.PCI0.PEGR.GFX0.DON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEGR.GFX0.DON' > /proc/acpi/call
|
||||
;;
|
||||
P31Jg)
|
||||
echo '\_SB.PCI0.PEG1.GFX0._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG1.GFX0._PS0' > /proc/acpi/call
|
||||
;;
|
||||
U43Jc)
|
||||
echo '\_SB.PCI0.RP00.VGA._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.RP00.VGA._PS0' > /proc/acpi/call
|
||||
;;
|
||||
UL30Vt)
|
||||
echo '\_SB.PCI0.P0P1.VGA._ON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P1.VGA._ON' > /proc/acpi/call
|
||||
;;
|
||||
E6420)
|
||||
echo '\_SB.PCI0.PEG0.VID._ON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.VID._ON' > /proc/acpi/call
|
||||
;;
|
||||
InspironN5110|XPSL702X)
|
||||
echo '\_SB.PCI0.PEG0.PEGP._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.PEGP._PS0' > /proc/acpi/call
|
||||
;;
|
||||
Vostro3300|Vostro3500)
|
||||
echo '\_SB.PCI0.P0P1.PEGP._ON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.P0P1.PEGP._ON' > /proc/acpi/call
|
||||
;;
|
||||
XPS15)
|
||||
echo '\_SB.PCI0.PEG0.PEGP._ON' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
echo '\_SB.PCI0.PEG0.PEGP._ON' > /proc/acpi/call
|
||||
;;
|
||||
ThinkPadT410)
|
||||
echo '\_SB.PCI0.PEG.VID._ON' > /proc/acpi/call \
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
&& echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call
|
||||
;;
|
||||
ThinkPadT420)
|
||||
echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call \
|
||||
&& modprobe nvidia \
|
||||
&& exit 0
|
||||
ThinkPadT420|41786VU)
|
||||
echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call
|
||||
;;
|
||||
*) echo "Snail: unknown Notebook model: $model"; exit -1
|
||||
*) echo "Snail (acpi_call method): unknown Notebook model: $model"; exit -1
|
||||
;;
|
||||
esac
|
||||
|
||||
sleep 0.01
|
||||
let tries--
|
||||
echo "tries left: $tries"
|
||||
done
|
||||
echo "acpi_call used to power ON nVidia chip"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Cann't power on nVidia chip"
|
||||
# Trying vgaswitcheroo method
|
||||
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
|
||||
echo 'ON' > /sys/kernel/debug/vgaswitcheroo/switch \
|
||||
&& echo "nVidia chip powered ON using vgaswitcheroo" \
|
||||
&& exit 0
|
||||
|
||||
echo "Cann't power on nVidia chip using vgaswitcheroo"
|
||||
exit -1
|
||||
fi
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
PATH=$PATH:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
|
||||
DAEMON=/usr/bin/X
|
||||
DAEMON_ARGS="-ac -config /etc/X11/xorg.conf.nvidia -sharevts -modulepath /usr/lib/snail -nolisten tcp -noreset :1 vt9"
|
||||
DAEMON_ARGS="-ac -config /etc/X11/xorg.conf.nvidia -sharevts -modulepath /usr/lib/snail -nolisten tcp -noreset :8293 vt9"
|
||||
PIDFILE=/var/run/snail-xserver.pid
|
||||
|
||||
start() {
|
||||
ebegin "Starting Snail nVidia Optimus"
|
||||
snail.nv_pwr_on || eend -1
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail:/usr/lib/snail/lib
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail
|
||||
pid=`cat $PIDFILE 2>/dev/null`
|
||||
rm -f $PIDFILE
|
||||
[ -z $pid ] || ! pgrep -s $pid X &>/dev/null && \
|
||||
|
|
|
@ -3,6 +3,6 @@ Description=Daemon to auto start/stop power up/down nVidia graphics.
|
|||
After=syslog.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/bash -c '(nohup /usr/bin/X -ac -config /etc/X11/xorg.conf.nvidia -sharevts -modulepath /usr/lib/snail -nolisten tcp -noreset :1 vt9 &>/dev/null)&'
|
||||
ExecStart=/bin/bash -c '(nohup /usr/bin/X -ac -config /etc/X11/xorg.conf.nvidia -sharevts -modulepath /usr/lib/snail -nolisten tcp -noreset :8293 vt9 &>/dev/null)&'
|
||||
ExecStop=/usr/sbin/snail.nv_pwr_off
|
||||
Type=forking
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
PATH=$PATH:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
|
||||
DAEMON=/usr/bin/X
|
||||
DAEMON_ARGS="-ac -config /etc/X11/xorg.conf.nvidia -sharevts -modulepath /usr/lib/snail -nolisten tcp -noreset :1 vt9"
|
||||
DAEMON_ARGS="-ac -config /etc/X11/xorg.conf.nvidia -sharevts -modulepath /usr/lib/snail -nolisten tcp -noreset :8293 vt9"
|
||||
PIDFILE=/var/run/snail-xserver.pid
|
||||
|
||||
# Get lsb functions
|
||||
|
@ -27,7 +27,7 @@ case "$1" in
|
|||
start)
|
||||
log_begin_msg "Starting Snail nVidia Optimus"
|
||||
snail.nv_pwr_on || log_end_msg 1
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail:/usr/lib/snail/lib
|
||||
export LD_LIBRARY_PATH=/usr/lib/snail
|
||||
pid=`cat $PIDFILE 2>/dev/null`
|
||||
rm -f $PIDFILE
|
||||
[ -z $pid ] || ! pgrep -s $pid X &>/dev/null && \
|
||||
|
|
Loading…
Reference in New Issue