Compare commits

...

66 Commits

Author SHA1 Message Date
Kolan Sh 87b1bc751a Auto reconfigure on nvidia-drivers rebuild. (works for Gentoo) 2012-10-13 23:20:57 +04:00
Kolan Sh 906db09e41 Fixed: flock: timeout cannot be zero 2012-09-29 16:19:44 +04:00
Kolan Sh 115c5151f1 Makefile fixed 2012-05-19 14:25:08 +04:00
Kolan Sh 1e312098ae Manifest created 2012-05-19 14:15:18 +04:00
Kolan Sh 3dcdfa10ec SRC_URI from 9999.ebuild removed 2012-05-19 14:12:28 +04:00
Kolan Sh b367e25435 More readable warning for X-server errors. 2012-05-18 00:56:48 +04:00
Kolan Sh 24badcb2fb Show nVidia X-server error log. 2012-05-18 00:44:23 +04:00
Kolan Sh 74f4dacc9a small fix 2012-05-17 20:26:23 +04:00
Kolan Sh 8ebb0c6f90 Check is Snail daemon is running. 2012-05-17 20:25:12 +04:00
Kolan Sh 82b80f6038 Added acpi_call rule for Lenovo T420 (Product Name: 41786VU) laptop 2012-05-16 18:50:45 +04:00
Kolan Sh 13acbebb29 small fix 2012-05-16 18:26:28 +04:00
Kolan Sh 1e5cf1fa07 9999-ebuild created but not tested. 2012-05-16 18:18:27 +04:00
Kolan Sh 54c0ab5125 More debug messages in nvrun script. 2012-05-16 18:02:16 +04:00
Kolan Sh ff414cebfd small fix 2012-05-16 18:02:10 +04:00
Kolan Sh 9b3e0113ca sys-power/bbswitch added to Gentoo ebuild dependencies. 2012-05-16 17:42:36 +04:00
Kolan Sh b0a367d8cd FIXME: baseboard-product-name or 41786VU to the ThinkPad T420 list? 2012-05-16 17:39:16 +04:00
Kolan Sh b82852047e FIXME: Test with baseboard-product-name instead of system-product-name? 2012-05-16 17:35:42 +04:00
Kolan Sh 7347ff2e9a nvidia-current kernel module name on Ubuntu 2012-05-16 02:26:25 +04:00
Kolan Sh eb8b54f5ac Gentoo ebuild updated 2012-05-16 01:59:12 +04:00
Kolan Sh 25cc887c25 Test for nVidia kernel module fixed 2012-05-16 01:48:09 +04:00
Kolan Sh 4d6bf1b256 Power ON/OFF methodics improved. 2012-05-16 01:44:16 +04:00
Kolan Sh 5b59f169e3 snail pwr off TRIES := 48 2012-05-16 00:00:50 +04:00
Kolan Sh 80028b2005 snail pwr off TRIES := 24 2012-05-15 23:42:24 +04:00
Kolan Sh 4a2acbbf06 Configure messages with prompt for manual reconfigure. 2012-05-15 23:33:15 +04:00
Kolan Sh 3e4ea058b8 r300 and r600 is spare in the list 2012-05-15 22:59:17 +04:00
Kolan Sh a15b1d2117 Don't mix switch methods. 2012-05-15 22:23:19 +04:00
Kolan Sh a374be74ce Power off sleep changed to 0.1s 2012-05-15 22:01:07 +04:00
Kolan Sh 59b4525a81 Increase timeout for acpi_call method 2012-05-15 20:56:14 +04:00
Kolan Sh 75eb8f9fdb Gentoo ebuild updated 2012-05-15 20:04:31 +04:00
Kolan Sh f29f8fa32a 32-bit libraries was not correctly installed. Fixed. 2012-05-15 20:02:57 +04:00
Kolan Sh e2a6252c76 Gentoo ebuild updated 2012-05-15 17:47:22 +04:00
Kolan Sh 695ecc7306 Remove broken or incorrect symlinks 2012-05-15 17:29:42 +04:00
Kolan Sh 93d452832e libnvidia-tls.so symlink on Debian-6 changed 2012-05-15 17:25:52 +04:00
Kolan Sh 8e077bbba3 Slashes in LD_PRELOAD 2012-05-15 17:10:04 +04:00
Kolan Sh 84be3fa6e3 LD_PRELOAD finally fixed. 2012-05-15 17:02:25 +04:00
Kolan Sh d7fce6d10f LD_PRLELOAD bugfix merged. 2012-05-15 16:00:39 +04:00
Kolan Sh d100e88e36 fixed bug with LD_PRELOAD library list 2012-05-15 15:58:57 +04:00
Kolan Sh b9586b1870 Merge commit '39ea202' 2012-05-15 14:40:30 +04:00
Kolan Sh 39ea202df2 TRIES reduced 2012-05-15 14:40:19 +04:00
Kolan Sh 969eb80026 Merge commit '16bb1e0' 2012-05-15 13:32:29 +04:00
Kolan Sh 16bb1e08e4 Improper symlink on Fedora fixed 2012-05-15 13:32:14 +04:00
kolan 70c774de20 Waiting for nVidia chip to power on is updated to 2 seconds 2012-05-15 12:12:55 +04:00
kolan 9e2d683478 Restart snail.watcher on Uprade in all other distros 2012-05-15 12:02:24 +04:00
Kolan Sh b040c57d84 Restarting snail-watcher on Upgade in Fedora 2012-05-15 05:14:49 +04:00
Kolan Sh c84542b1cf Gentoo ebuild updated 2012-05-15 04:50:37 +04:00
Kolan Sh f8a5cb7ecb nvrun wait timeout reduced 2012-05-15 04:38:58 +04:00
Kolan Sh 905823610d Stability improved. Latency reduced. Also fixes #76. 2012-05-15 04:29:29 +04:00
Kolan Sh 2afa920ce7 Gentoo ebuild updated 2012-05-15 01:17:50 +04:00
Kolan Sh 30981196a3 Merge commit '29e2e51' 2012-05-15 01:14:41 +04:00
Kolan Sh 29e2e510c2 Fixed bug with multilib preload libraries. 2012-05-15 01:13:24 +04:00
Kolan Sh 5cb8cce033 Gentoo ebuild 2012-05-14 01:08:06 +04:00
Kolan Sh 2c348e50fe README updated 2012-05-13 19:39:57 +04:00
Kolan Sh 81b9877b2e multilib for Ubuntu 12.04 2012-05-13 18:32:44 +04:00
Kolan Sh 4aef233f2b multilib for Ubuntu 12.04 2012-05-13 18:11:07 +04:00
kolan c37ed3c8e0 multilibs for Debian-6 (previous was for Wheezy) 2012-05-13 09:48:25 -04:00
Kolan Sh 47ea4e747a multilib for Verne 2012-05-13 17:14:23 +04:00
kolan 1431123410 Merge branch 'develop' of git://git.backbone.ws/snail/snail into develop 2012-05-13 16:49:16 +04:00
kolan 8e7f3f3332 Trying to add multilib on Debian 6.0 2012-05-13 16:49:12 +04:00
Kolan Sh 6a6558d99d Flush request queue after X-server start 2012-05-13 15:19:49 +04:00
Kolan Sh 2b98295e12 Gentoo lib32 symlinks changed 2012-05-13 14:52:06 +04:00
Kolan Sh 21cddd9d2b Uninstallation of 32bit lib*faker.so 2012-05-13 13:42:49 +04:00
Kolan Sh deae038661 Installation of 32bit lib*faker.so 2012-05-13 13:41:50 +04:00
Kolan Sh f6bb5d475b less warning messages 2012-05-13 13:33:39 +04:00
Kolan Sh 1c3cd44d3f Makefile and rules for Gentoo updated 2012-05-13 13:22:15 +04:00
Kolan Sh 798409ddbc Trying to add 32-bit support for applications like Doom-3 on multilib x86_64 platforms. 2012-05-13 13:09:41 +04:00
Kolan Sh f5f24b84f0 README updated 2012-05-12 00:33:28 +04:00
13 changed files with 327 additions and 280 deletions

View File

@ -11,6 +11,13 @@ install:
install -d ${DESTDIR}/${PREFIX}/sbin install -d ${DESTDIR}/${PREFIX}/sbin
install sbin/* ${DESTDIR}/${PREFIX}/sbin install sbin/* ${DESTDIR}/${PREFIX}/sbin
if test x86_64 = `uname -m` ; then \ 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 \ if test -d /usr/lib64 ; then \
install -d ${DESTDIR}/${PREFIX}/lib64; \ install -d ${DESTDIR}/${PREFIX}/lib64; \
install lib64/*.so ${DESTDIR}/${PREFIX}/lib64; \ install lib64/*.so ${DESTDIR}/${PREFIX}/lib64; \
@ -21,16 +28,21 @@ install:
if test ! -d /usr/lib ; then \ if test ! -d /usr/lib ; then \
ln -sf lib64 /usr/lib; \ ln -sf lib64 /usr/lib; \
fi; \ fi; \
install -d ${DESTDIR}/${PREFIX}/lib/snail; \ install -d ${DESTDIR}/${PREFIX}/lib/snail/lib32; \
else \ else \
install -d ${DESTDIR}/${PREFIX}/lib; \ install -d ${DESTDIR}/${PREFIX}/lib; \
install lib32/*.so ${DESTDIR}/${PREFIX}/lib; \ install lib32/*.so ${DESTDIR}/${PREFIX}/lib; \
install -d ${DESTDIR}/${PREFIX}/lib/snail; \ install -d ${DESTDIR}/${PREFIX}/lib/snail; \
fi; \ fi; \
install -d ${DESTDIR}/${PREFIX}/share; \
install -d ${DESTDIR}/${PREFIX}/share/snail; \
install -d ${DESTDIR}/${PREFIX}/share/snail/init.d; \ install -d ${DESTDIR}/${PREFIX}/share/snail/init.d; \
install share/init.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: uninstall:
rm -f ${DESTDIR}/etc/X11/xorg.conf.*.snail rm -f ${DESTDIR}/etc/X11/xorg.conf.*.snail
@ -40,6 +52,9 @@ uninstall:
rm -f ${DESTDIR}/${PREFIX}/lib/libgefaker.so rm -f ${DESTDIR}/${PREFIX}/lib/libgefaker.so
rm -f ${DESTDIR}/${PREFIX}/lib/librrfaker.so rm -f ${DESTDIR}/${PREFIX}/lib/librrfaker.so
rm -rf ${DESTDIR}/${PREFIX}/lib/snail 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/libdlfaker.so
rm -f ${DESTDIR}/${PREFIX}/lib64/libgefaker.so rm -f ${DESTDIR}/${PREFIX}/lib64/libgefaker.so
rm -f ${DESTDIR}/${PREFIX}/lib64/librrfaker.so rm -f ${DESTDIR}/${PREFIX}/lib64/librrfaker.so

2
README
View File

@ -5,6 +5,7 @@ Features
Auto power off for second X-server and nVidia chip. Auto power off for second X-server and nVidia chip.
Easy installation (look at Wiki). Easy installation (look at Wiki).
Multiuser access. Multiuser access.
Multilib support.
Run in a way nvrun app. Run in a way nvrun app.
Tested distros Tested distros
@ -13,6 +14,7 @@ Tested distros
Debian Squeeze amd64 Debian Squeeze amd64
Debian Wheezy amd64 Debian Wheezy amd64
Fedora 16 (Verne) x86_64 Fedora 16 (Verne) x86_64
Ubuntu 12.04 x86_64
Supported Models: All that supported by bbswitch, vgaswitcheroo (most of laptops with recent Linux kernel) + several by acpi_call (M11XR2, 1015PN, 1215N, 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, K42Jc, K52Jc, N53Jf, N53Jg, N71Jv, N73Jf, P52Jc, PL80Jt, U30Jc, U33Jc, U35Jc, U36Jc, UL80Jt, N53Sn, U41Sv, N53Sv, N61Jv, N73Sv, P31Jg, U43Jc, UL30Vt, E6420,

View File

@ -2,26 +2,34 @@
PATH=/usr/local/sbin:/usr/local/bin:$PATH PATH=/usr/local/sbin:/usr/local/bin:$PATH
TIMEOUT=10 # wait timeout for X server start TIMEOUT=8 # wait timeout for X server start
let INTEL_IF_FAIL=1 # run on Intel if nVidia fails
LOCK_FILE=/tmp/.snail.lock LOCK_FILE=/tmp/.snail.lock
FIFO_FILE=/tmp/.snail.fifo 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
flock -w $TIMEOUT -s 9 if [ 0 -ne $? ]; then
(nohup echo -n > $FIFO_FILE &>/dev/null)&
flock -w $TIMEOUT -s 9
fi
if [ 0 -eq $? ]; then if [ 0 -eq $? ]; then
echo "Running $@ on nVidia" echo "Trying to run $@ on nVidia"
export LD_LIBRARY_PATH=/usr/lib/snail export LD_LIBRARY_PATH=/usr/lib/snail
snail.vglrun -d :8293 "$@" LD_PRELOAD="/usr/lib/snail/lib32/libGL.so.1 \
echo "Application $@ was performed on nVidia" /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
echo "nvrun $@ returns an error. Here is nVidia X-server error log:"
grep '] (EE) ' /var/log/Xorg.8293.log
elif [ 0 -ne $INTEL_IF_FAIL ]; then else
echo "Running $@ on Intel" echo "Timout received for 'power on' request to Snail-daemon ;-("
"$@"
echo "Application $@ was performed on Intel"
fi fi
flock -u 9 flock -u 9

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -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
}

View File

@ -20,6 +20,15 @@ FIFO_FILE=/tmp/.snail.fifo
$XSERVER_STOP_CMD && snail.nv_pwr_off # stop X service $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 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 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 while [ 1 ]; do
read <$FIFO_FILE read <$FIFO_FILE
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
snail.nv_pwr_on && $XSERVER_START_CMD # starting X server snail.nv_pwr_on && $XSERVER_START_CMD # starting X server
flock -u 9 flock -u 9
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
flock 9 flock 9
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
$XSERVER_STOP_CMD && snail.nv_pwr_off # stopping X server $XSERVER_STOP_CMD && snail.nv_pwr_off # stopping X server

View File

@ -11,16 +11,18 @@ elif [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
echo "vgaswitcheroo is OK! ;-)" echo "vgaswitcheroo is OK! ;-)"
else else
echo "No bbswitch/acpi_call/vgaswitcheroo 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 exit -1
fi fi
echo "Test for nVidia driver" 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 if [ 0 -eq $? ]; then
echo "nVidia driver is OK! ;-)" echo "nVidia kernel module found! ;-)"
else 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 "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 exit -1
fi fi
@ -29,7 +31,7 @@ which dmidecode &>/dev/null
if [ 0 -eq $? ]; then if [ 0 -eq $? ]; then
echo "dmidecode utility is OK! ;-)" echo "dmidecode utility is OK! ;-)"
else else
echo "Please install dmidecode and run the script again." echo "Please install dmidecode and run the 'snail.configure' script again."
exit -1 exit -1
fi fi
@ -98,6 +100,8 @@ echo "DISTRIB_CODENAME=$DISTRIB_CODENAME"
SNAIL_INIT_D_PATH=/usr/share/snail/init.d 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" echo "Copying system init scripts (SysV/OpenRC/Systemd), start snail-watcher, configuring kernel modules and OpenGL libraries"
rm -f /usr/lib/snail/* &>/dev/null
rm -f /usr/lib/snail/lib32/* &>/dev/null
case "$DISTRIB_ID" in case "$DISTRIB_ID" in
"gentoo") "gentoo")
cp -f $SNAIL_INIT_D_PATH/snail-watcher.openrc /etc/init.d/snail-watcher cp -f $SNAIL_INIT_D_PATH/snail-watcher.openrc /etc/init.d/snail-watcher
@ -113,15 +117,17 @@ case "$DISTRIB_ID" in
eselect opengl set xorg-x11 eselect opengl set xorg-x11
for arch in 32bit 64bit; do 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; eselect mesa set $arch $chip classic &>/dev/null;
done; done;
done done
ln -sf /usr/lib/opengl/nvidia/lib/libGL.so.[0-9][0-9]* /usr/lib/snail/libGL.so.1 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/libfb.so /usr/lib/snail/libfb.so
ln -sf /usr/lib/xorg/modules/libwfb.so /usr/lib/snail/libwfb.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/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/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 ln -sf /usr/lib/xorg/modules/drivers/nvidia_drv.so /usr/lib/snail/nvidia_drv.so
;; ;;
@ -131,6 +137,7 @@ case "$DISTRIB_ID" in
update-rc.d snail-xserver remove update-rc.d snail-xserver remove
update-rc.d snail-watcher defaults update-rc.d snail-watcher defaults
/etc/init.d/snail-xserver stop /etc/init.d/snail-xserver stop
/etc/init.d/snail-watcher stop
/etc/init.d/snail-watcher start /etc/init.d/snail-watcher start
grep '^bbswitch$' /etc/modules || echo bbswitch >> /etc/modules grep '^bbswitch$' /etc/modules || echo bbswitch >> /etc/modules
@ -165,6 +172,13 @@ case "$DISTRIB_ID" in
mv -f /usr/lib/libGL.so.* /tmp mv -f /usr/lib/libGL.so.* /tmp
apt-get install --reinstall libgl1-mesa-glx apt-get install --reinstall libgl1-mesa-glx
mv -f /tmp/libGL.so.* /usr/lib 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 fi
;; ;;
@ -173,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 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 rm -f /etc/alternatives/glx--linux-libglx.so
ln -sf /usr/lib/xorg/modules/extensions/libglx.so /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/libfb.so /usr/lib/snail/libfb.so
ln -sf /usr/lib/xorg/modules/libwfb.so /usr/lib/snail/libwfb.so ln -sf /usr/lib/xorg/modules/libwfb.so /usr/lib/snail/libwfb.so
@ -180,6 +198,7 @@ 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 /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 /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/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
;; ;;
*) *)
@ -195,6 +214,7 @@ case "$DISTRIB_ID" in
update-rc.d snail-xserver remove update-rc.d snail-xserver remove
update-rc.d snail-watcher defaults update-rc.d snail-watcher defaults
/etc/init.d/snail-xserver stop /etc/init.d/snail-xserver stop
/etc/init.d/snail-watcher stop
/etc/init.d/snail-watcher start /etc/init.d/snail-watcher start
grep '^bbswitch$' /etc/modules || echo bbswitch >> /etc/modules grep '^bbswitch$' /etc/modules || echo bbswitch >> /etc/modules
@ -213,6 +233,12 @@ case "$DISTRIB_ID" in
ln -sf /usr/lib/nvidia-current/tls/libnvidia-tls.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/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 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
;; ;;
*) *)
@ -230,6 +256,8 @@ case "$DISTRIB_ID" in
cp -f $SNAIL_INIT_D_PATH/snail-watcher.systemd /etc/systemd/system/snail-watcher.service 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 cp -f $SNAIL_INIT_D_PATH/snail-xserver.systemd /etc/systemd/system/snail-xserver.service
systemctl --system daemon-reload systemctl --system daemon-reload
systemctl stop snail-xserver.service
systemctl stop snail-watcher.service
systemctl start snail-watcher.service systemctl start snail-watcher.service
systemctl enable snail-watcher.service systemctl enable snail-watcher.service
ln -sf /usr/lib64/xorg/modules/libfb.so /usr/lib/snail/libfb.so ln -sf /usr/lib64/xorg/modules/libfb.so /usr/lib/snail/libfb.so
@ -239,6 +267,7 @@ case "$DISTRIB_ID" in
rm -f /usr/lib64/nvidia/libGL.so.1 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/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/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
;; ;;
*) *)

View File

@ -1,128 +1,85 @@
#!/bin/bash #!/bin/bash
TRIES=8 rmmod -w nvidia &>/dev/null
lsmod | grep '^nouveau ' >/dev/null && rmmod -f nouveau &>/dev/null
# Trying bbswitch method # Trying bbswitch method
if [ -f /proc/acpi/bbswitch ]; then if [ -f /proc/acpi/bbswitch ]; then
let tries=$TRIES echo 'OFF' > /proc/acpi/bbswitch \
while [ 0 -lt $tries ]; do && a=`cat /proc/acpi/bbswitch` \
rmmod nvidia \ && [ OFF == ${a##* } ] \
&& echo 'OFF' > /proc/acpi/bbswitch \ && echo "nVidia chip powered off using bbswitch" \
&& exit 0 && exit 0
sleep 0.01 echo "Cann't power off nVidia chip using bbswitch"
let tries-- exit -1
echo "tries left: $tries"
done
fi fi
# Trying acpi_call method # Trying acpi_call method
if [ -f /proc/acpi/call ]; then if [ -f /proc/acpi/call ]; then
model=`dmidecode $@ -s system-product-name` model=`dmidecode -s system-product-name`
tries=$TRIES case "$model" in
while [ 0 -lt $tries ]; do M11XR2)
case "$model" in echo '\_SB.PCI0.P0P2.PEGP.NVOP 0 0x100 0x1A {255,255,255,255}' > /proc/acpi/call \
M11XR2) && echo '\_SB.PCI0.P0P2.PEGP._PS3' > /proc/acpi/call
rmmod nvidia \ ;;
&& echo '\_SB.PCI0.P0P2.PEGP.NVOP 0 0x100 0x1A {255,255,255,255}' > /proc/acpi/call \ 1015PN)
&& echo '\_SB.PCI0.P0P2.PEGP._PS3' > /proc/acpi/call \ echo '\OSGS 0x03' > /proc/acpi/call
&& exit 0 ;;
;; 1215N)
1015PN) 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 \
rmmod nvidia \ && echo '\_SB.PCI0.P0P4.GFX0._PS3' > /proc/acpi/call
&& echo '\OSGS 0x03' > /proc/acpi/call \ ;;
&& exit 0 K42Jc|K52Jc|N53Jf|N53Jg|N71Jv|N73Jf|P52Jc|PL80Jt|U30Jc|U33Jc|U35Jc|U36Jc|UL80Jt)
;; echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call
1215N) ;;
rmmod nvidia \ N61Jv|N73Sv)
&& 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.PEGR.GFX0.DOFF' > /proc/acpi/call
&& echo '\_SB.PCI0.P0P4.GFX0._PS3' > /proc/acpi/call \ ;;
&& exit 0 P31Jg)
;; echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call
K42Jc|K52Jc|N53Jf|N53Jg|N71Jv|N73Jf|P52Jc|PL80Jt|U30Jc|U33Jc|U35Jc|U36Jc|UL80Jt) ;;
rmmod nvidia \ U43Jc)
&& echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call \ 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 \
&& exit 0 && echo '\_SB.PCI0.RP00.VGA._PS3' > /proc/acpi/call
;; ;;
N61Jv|N73Sv) UL30Vt)
rmmod nvidia \ echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call
&& echo '\_SB.PCI0.PEGR.GFX0.DOFF' > /proc/acpi/call \ ;;
&& exit 0 E6420)
;; echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call
P31Jg) ;;
rmmod nvidia \ InspironN5110|XPSL702X)
&& echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call \ 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 \
&& exit 0 && echo '\_SB.PCI0.PEG0.PEGP._PS3' > /proc/acpi/call
;; ;;
U43Jc) Vostro3300|Vostro3500)
rmmod nvidia \ echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call
&& 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 \ XPS15)
&& exit 0 echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call
;; ;;
UL30Vt) ThinkPadT410)
rmmod nvidia \ echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
&& echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call \ && echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call
&& exit 0 ;;
;; ThinkPadT420|41786VU)
E6420) 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 \
rmmod nvidia \ && echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call
&& echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call \ ;;
&& exit 0 *) echo "Snail: unknown Notebook model: $model"; exit -1
;; ;;
InspironN5110|XPSL702X) esac
rmmod 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
;;
Vostro3300|Vostro3500)
rmmod nvidia \
&& echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call \
&& exit 0
;;
XPS15)
rmmod nvidia \
&& echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call \
&& exit 0
;;
ThinkPadT410)
rmmod nvidia \
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
&& echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call \
&& exit 0
;;
ThinkPadT420)
rmmod 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
;;
*) echo "Snail: unknown Notebook model: $model"; exit -1
;;
esac
sleep 0.01 echo "acpi_call used to power OFF nVidia chip"
let tries-- exit 0
echo "tries left: $tries"
done
fi fi
# Trying vgaswitcheroo method # Trying vgaswitcheroo method
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
let tries=$TRIES echo 'OFF' > /sys/kernel/debug/vgaswitcheroo/switch \
while [ 0 -lt $tries ]; do && echo "nVidia chip powered off using vgaswitcheroo" \
rmmod nvidia \ && exit 0
&& echo 'OFF' > /sys/kernel/debug/vgaswitcheroo/switch \
&& exit 0
sleep 0.01 echo "Cann't power off nVidia chip using vgaswitcheroo"
let tries-- exit -1
echo "tries left: $tries"
done
fi fi
echo "Cann't power off nVidia chip"
exit -1

View File

@ -1,129 +1,81 @@
#!/bin/bash #!/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 # Trying bbswitch method
if [ -f /proc/acpi/bbswitch ]; then if [ -f /proc/acpi/bbswitch ]; then
let tries=$TRIES echo 'ON' > /proc/acpi/bbswitch
while [ 0 -lt $tries ]; do a=`cat /proc/acpi/bbswitch`
echo 'ON' > /proc/acpi/bbswitch \ [ ON == ${a##* } ] && echo "nVidia chip powered ON using bbswitch" && exit 0
&& modprobe nvidia \
&& exit 0
sleep 0.01
let tries--
echo "tries left: $tries"
done
echo "Cann't power on nVidia chip using bbswitch"
exit -1
fi fi
# Trying acpi_call method # Trying acpi_call method
if [ -f /proc/acpi/call ]; then if [ -f /proc/acpi/call ]; then
model=`dmidecode $@ -s system-product-name` model=`dmidecode -s system-product-name`
tries=$TRIES case "$model" in
while [ 0 -lt $tries ]; do M11XR2)
case "$model" in echo '\_SB.PCI0.P0P2.PEGP._PS0' > /proc/acpi/call
M11XR2) ;;
echo '\_SB.PCI0.P0P2.PEGP._PS0' > /proc/acpi/call \ 1015PN)
&& modprobe nvidia \ echo '\_SB.PCI0.P0P4.DGPU.DON' > /proc/acpi/call
&& exit 0 ;;
;; 1215N)
1015PN) echo '\_SB.PCI0.P0P4.GFX0._PS0' > /proc/acpi/call
echo '\_SB.PCI0.P0P4.DGPU.DON' > /proc/acpi/call \ ;;
&& modprobe nvidia \ K42Jc|K52Jc|N53Jf|N53Jg|N71Jv|N73Jf|P52Jc|PL80Jt|U30Jc|U33Jc|U35Jc|U36Jc|UL80Jt)
&& exit 0 echo '\_SB.PCI0.PEG1.GFX0.DON' > /proc/acpi/call
;; ;;
1215N) N53Sn|U41Sv|N53Sv)
echo '\_SB.PCI0.P0P4.GFX0._PS0' > /proc/acpi/call \ echo '\_SB.PCI0.PEG0.GFX0.DON' > /proc/acpi/call
&& modprobe nvidia \ ;;
&& exit 0 N61Jv|N73Sv)
;; echo '\_SB.PCI0.PEGR.GFX0.DON' > /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 \ P31Jg)
&& modprobe nvidia \ echo '\_SB.PCI0.PEG1.GFX0._PS0' > /proc/acpi/call
&& exit 0 ;;
;; U43Jc)
N53Sn|U41Sv|N53Sv) echo '\_SB.PCI0.RP00.VGA._PS0' > /proc/acpi/call
echo '\_SB.PCI0.PEG0.GFX0.DON' > /proc/acpi/call \ ;;
&& modprobe nvidia \ UL30Vt)
&& exit 0 echo '\_SB.PCI0.P0P1.VGA._ON' > /proc/acpi/call
;; ;;
N61Jv|N73Sv) E6420)
echo '\_SB.PCI0.PEGR.GFX0.DON' > /proc/acpi/call \ echo '\_SB.PCI0.PEG0.VID._ON' > /proc/acpi/call
&& modprobe nvidia \ ;;
&& exit 0 InspironN5110|XPSL702X)
;; echo '\_SB.PCI0.PEG0.PEGP._PS0' > /proc/acpi/call
P31Jg) ;;
echo '\_SB.PCI0.PEG1.GFX0._PS0' > /proc/acpi/call \ Vostro3300|Vostro3500)
&& modprobe nvidia \ echo '\_SB.PCI0.P0P1.PEGP._ON' > /proc/acpi/call
&& exit 0 ;;
;; XPS15)
U43Jc) echo '\_SB.PCI0.PEG0.PEGP._ON' > /proc/acpi/call
echo '\_SB.PCI0.RP00.VGA._PS0' > /proc/acpi/call \ ;;
&& modprobe nvidia \ ThinkPadT410)
&& exit 0 echo '\_SB.PCI0.PEG.VID._ON' > /proc/acpi/call \
;; && echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call
UL30Vt) ;;
echo '\_SB.PCI0.P0P1.VGA._ON' > /proc/acpi/call \ ThinkPadT420|41786VU)
&& modprobe nvidia \ echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call
&& exit 0 ;;
;; *) echo "Snail (acpi_call method): unknown Notebook model: $model"; exit -1
E6420) ;;
echo '\_SB.PCI0.PEG0.VID._ON' > /proc/acpi/call \ esac
&& modprobe nvidia \
&& exit 0
;;
InspironN5110|XPSL702X)
echo '\_SB.PCI0.PEG0.PEGP._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
Vostro3300|Vostro3500)
echo '\_SB.PCI0.P0P1.PEGP._ON' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
XPS15)
echo '\_SB.PCI0.PEG0.PEGP._ON' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
ThinkPadT410)
echo '\_SB.PCI0.PEG.VID._ON' > /proc/acpi/call \
&& echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
ThinkPadT420)
echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
*) echo "Snail: unknown Notebook model: $model"; exit -1
;;
esac
sleep 0.01 echo "acpi_call used to power ON nVidia chip"
let tries-- exit 0
echo "tries left: $tries"
done
fi fi
# Trying vgaswitcheroo method # Trying vgaswitcheroo method
if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then if [ -f /sys/kernel/debug/vgaswitcheroo/switch ]; then
let tries=$TRIES echo 'ON' > /sys/kernel/debug/vgaswitcheroo/switch \
while [ 0 -lt $tries ]; do && echo "nVidia chip powered ON using vgaswitcheroo" \
echo 'ON' > /sys/kernel/debug/vgaswitcheroo/switch \ && exit 0
&& modprobe nvidia \
&& exit 0
sleep 0.01 echo "Cann't power on nVidia chip using vgaswitcheroo"
let tries-- exit -1
echo "tries left: $tries"
done
fi fi
echo "Cann't power on nVidia chip"
exit -1

View File

@ -8,7 +8,7 @@ PIDFILE=/var/run/snail-xserver.pid
start() { start() {
ebegin "Starting Snail nVidia Optimus" ebegin "Starting Snail nVidia Optimus"
snail.nv_pwr_on || eend -1 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` pid=`cat $PIDFILE 2>/dev/null`
rm -f $PIDFILE rm -f $PIDFILE
[ -z $pid ] || ! pgrep -s $pid X &>/dev/null && \ [ -z $pid ] || ! pgrep -s $pid X &>/dev/null && \

2
share/init.d/snail-xserver.sysv Executable file → Normal file
View File

@ -27,7 +27,7 @@ case "$1" in
start) start)
log_begin_msg "Starting Snail nVidia Optimus" log_begin_msg "Starting Snail nVidia Optimus"
snail.nv_pwr_on || log_end_msg 1 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` pid=`cat $PIDFILE 2>/dev/null`
rm -f $PIDFILE rm -f $PIDFILE
[ -z $pid ] || ! pgrep -s $pid X &>/dev/null && \ [ -z $pid ] || ! pgrep -s $pid X &>/dev/null && \