Compare commits

...

98 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
Kolan Sh d0d596453f X-server number changed to 8293 2012-05-12 00:20:40 +04:00
Kolan Sh 53c6096e12 Gentoo ebuild for v1.1.0 added 2012-05-08 19:25:27 +04:00
Kolan Sh 5ab8dd3fea xorg.conf replace conditions fixed 2012-05-08 18:17:29 +04:00
Kolan Sh 0824959805 /etc/gentoo-release is preferable then /etc/issue 2012-05-08 18:07:19 +04:00
Kolan Sh 852c8ea99d Support for all 12.* Ubuntu releases 2012-05-08 17:45:44 +04:00
Kolan Sh ae952acf61 Ubuntu 12.04 LTS support added 2012-05-08 17:42:31 +04:00
Kolan Sh 177e816d19 Changes to Makefile. 2012-05-08 17:24:32 +04:00
Kolan Sh bdc0353397 Test for architecture in Makefile. 2012-05-08 17:07:41 +04:00
Kolan Sh 812288e0b8 ldconfig when ld.so.conf changed 2012-05-08 16:55:53 +04:00
Kolan Sh 991b106393 Trying to add Ubuntu 12.04 LTS support... 2012-05-08 16:44:50 +04:00
Kolan dedfdb5bd0 Distribution detection for Ubuntu 2012-05-08 15:42:00 +04:00
Kolan 612f5e31b0 Remove xorg.conf which doesn't contain intel driver. 2012-05-08 14:49:46 +04:00
Kolan 092418a5c6 modprobe -r -> rmmod 2012-05-08 14:44:56 +04:00
Kolan Sh 3138697a21 lib*faker.so updated and 32bit versions added 2012-05-07 11:35:15 +04:00
Kolan Sh a0f7459f18 xorg.conf replace condition 2012-05-06 22:09:09 +04:00
kolan d6444f186c Conditionals in Makefile 2012-05-06 22:04:53 +04:00
Kolan Sh 413abffbaf Remove improperly configured xorg.conf by packet managers 2012-05-06 21:15:41 +04:00
Kolan Sh abbca96337 Merge branch 'master' into develop 2012-05-06 21:12:30 +04:00
Kolan Sh 43dc115c52 Don't replace already configured xorg.conf.* files 2012-04-22 13:29:39 +04:00
Kolan Sh 1c198679d2 Trying to add 32bit support 2012-04-20 12:24:38 +04:00
Kolan Sh e3ff58991a Added tag v1.0.1 for changeset 70034d91287b 2012-04-16 19:51:08 +04:00
Kolan Sh 0c71d68fed README updated 2012-04-16 19:50:30 +04:00
Kolan Sh de265dda5e Remove OS-specific records in xorg.conf.intel 2012-04-16 18:24:27 +04:00
Kolan Sh d0a2bfe4fe modules in snail.configure 2012-04-15 23:03:23 +04:00
Kolan Sh 3e69113a6e Remove systemd config files on make uninstall. Fixes #69 2012-04-15 22:07:40 +04:00
Kolan Sh f558f4c808 bbswitch in snail.configure 2012-04-15 22:05:05 +04:00
Kolan Sh 95424ec4b0 develop branch with bbswitch support merged 2012-04-15 21:31:28 +04:00
Kolan Sh 4c49d9d40a bbswitch support 2012-04-15 21:31:08 +04:00
Kolan Sh 6651c663bb master merged 2012-04-15 21:25:15 +04:00
Kolan Sh 137559106b Try all power methods with higher priority for acpi_call 2012-04-10 10:44:12 +04:00
Kolan Sh 7e67c7f4cf vgaswitcheroo comands fixed 2012-04-09 23:05:50 +04:00
Kolan Sh f836d22d61 Added tag v1.0.0 for changeset d141eaa23dbf 2012-04-08 21:02:03 +04:00
21 changed files with 438 additions and 316 deletions

View File

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

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

View File

@ -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 $TIMEOUT -s 9
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"
export LD_LIBRARY_PATH=/usr/lib/snail
snail.vglrun -d :1 "$@"
echo "Application $@ was performed on nVidia"
echo "Trying to run $@ on nVidia"
export LD_LIBRARY_PATH=/usr/lib/snail
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
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
echo "Running $@ on Intel"
"$@"
echo "Application $@ was performed on Intel"
else
echo "Timout received for 'power on' request to Snail-daemon ;-("
fi
flock -u 9

View File

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

BIN
lib32/libdlfaker.so Normal file

Binary file not shown.

BIN
lib32/libgefaker.so Normal file

Binary file not shown.

BIN
lib32/librrfaker.so Normal file

Binary file not shown.

0
lib64/libdlfaker.so Executable file → Normal file
View File

0
lib64/libgefaker.so Executable file → Normal file
View File

0
lib64/librrfaker.so Executable file → Normal file
View File

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

View File

@ -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 acpi_call > /etc/modules-load.d/snail.conf
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,17 +284,22 @@ case "$DISTRIB_ID" in
esac
echo "Creating backups of original xorg.conf.* files and replacing with snail's versions..."
[[ -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
cp -f /etc/X11/xorg.conf.intel.snail /etc/X11/xorg.conf.intel
cp -f /etc/X11/xorg.conf.nvidia.snail /etc/X11/xorg.conf.nvidia
ln -sf xorg.conf.intel /etc/X11/xorg.conf
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
cp -f /etc/X11/xorg.conf.intel.snail /etc/X11/xorg.conf.intel
cp -f /etc/X11/xorg.conf.nvidia.snail /etc/X11/xorg.conf.nvidia
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'`"
sed -i "s~BusIDIntel~$BusIDIntel~" /etc/X11/xorg.conf.intel
sed -i "s~BusIDNvidia~$BusIDNvidia~" /etc/X11/xorg.conf.nvidia
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 -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! ;-)"

View File

@ -1,116 +1,85 @@
#!/bin/bash
TRIES=8
rmmod -w nvidia &>/dev/null
lsmod | grep '^nouveau ' >/dev/null && modprobe -rf nouveau &>/dev/null
# 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
# 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 \
&& 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
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
;;
1015PN)
modprobe -r nvidia \
&& echo '\OSGS 0x03' > /proc/acpi/call \
&& exit 0
;;
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
;;
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
;;
N61Jv|N73Sv)
modprobe -r nvidia \
&& echo '\_SB.PCI0.PEGR.GFX0.DOFF' > /proc/acpi/call \
&& exit 0
;;
P31Jg)
modprobe -r nvidia \
&& echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call \
&& exit 0
;;
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
;;
UL30Vt)
modprobe -r nvidia \
&& echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call \
&& exit 0
;;
E6420)
modprobe -r nvidia \
&& echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call \
&& exit 0
;;
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
;;
Vostro3300|Vostro3500)
modprobe -r nvidia \
&& echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call \
&& exit 0
;;
XPS15)
modprobe -r nvidia \
&& echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call \
&& exit 0
;;
ThinkPadT410)
modprobe -r nvidia \
&& echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
&& echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call \
&& exit 0
;;
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
;;
*) echo "Snail: unknown Notebook model: $model"; exit -1
;;
esac
model=`dmidecode -s system-product-name`
case "$model" in
M11XR2)
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)
echo '\OSGS 0x03' > /proc/acpi/call
;;
1215N)
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)
echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call
;;
N61Jv|N73Sv)
echo '\_SB.PCI0.PEGR.GFX0.DOFF' > /proc/acpi/call
;;
P31Jg)
echo '\_SB.PCI0.PEG1.GFX0._PS3' > /proc/acpi/call
;;
U43Jc)
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)
echo '\_SB.PCI0.P0P1.VGA._OFF' > /proc/acpi/call
;;
E6420)
echo '\_SB.PCI0.PEG0.VID._OFF' > /proc/acpi/call
;;
InspironN5110|XPSL702X)
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)
echo '\_SB.PCI0.P0P1.PEGP._OFF' > /proc/acpi/call
;;
XPS15)
echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call
;;
ThinkPadT410)
echo '\_SB.PCI0.PEG.VID._PS3' > /proc/acpi/call \
&& echo '\_SB.PCI0.PEG.VID._OFF' > /proc/acpi/call
;;
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"
exit -1
# 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

View File

@ -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
case "$model" in
M11XR2)
echo '\_SB.PCI0.P0P2.PEGP._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
1015PN)
echo '\_SB.PCI0.P0P4.DGPU.DON' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
1215N)
echo '\_SB.PCI0.P0P4.GFX0._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
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
;;
N53Sn|U41Sv|N53Sv)
echo '\_SB.PCI0.PEG0.GFX0.DON' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
N61Jv|N73Sv)
echo '\_SB.PCI0.PEGR.GFX0.DON' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
P31Jg)
echo '\_SB.PCI0.PEG1.GFX0._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
U43Jc)
echo '\_SB.PCI0.RP00.VGA._PS0' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
UL30Vt)
echo '\_SB.PCI0.P0P1.VGA._ON' > /proc/acpi/call \
&& modprobe nvidia \
&& exit 0
;;
E6420)
echo '\_SB.PCI0.PEG0.VID._ON' > /proc/acpi/call \
&& 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
model=`dmidecode -s system-product-name`
case "$model" in
M11XR2)
echo '\_SB.PCI0.P0P2.PEGP._PS0' > /proc/acpi/call
;;
1015PN)
echo '\_SB.PCI0.P0P4.DGPU.DON' > /proc/acpi/call
;;
1215N)
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
;;
N53Sn|U41Sv|N53Sv)
echo '\_SB.PCI0.PEG0.GFX0.DON' > /proc/acpi/call
;;
N61Jv|N73Sv)
echo '\_SB.PCI0.PEGR.GFX0.DON' > /proc/acpi/call
;;
P31Jg)
echo '\_SB.PCI0.PEG1.GFX0._PS0' > /proc/acpi/call
;;
U43Jc)
echo '\_SB.PCI0.RP00.VGA._PS0' > /proc/acpi/call
;;
UL30Vt)
echo '\_SB.PCI0.P0P1.VGA._ON' > /proc/acpi/call
;;
E6420)
echo '\_SB.PCI0.PEG0.VID._ON' > /proc/acpi/call
;;
InspironN5110|XPSL702X)
echo '\_SB.PCI0.PEG0.PEGP._PS0' > /proc/acpi/call
;;
Vostro3300|Vostro3500)
echo '\_SB.PCI0.P0P1.PEGP._ON' > /proc/acpi/call
;;
XPS15)
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
;;
ThinkPadT420|41786VU)
echo '\_SB.PCI0.PEG.VID._PS0' > /proc/acpi/call
;;
*) 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"
exit -1
# 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

View File

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

View File

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

View File

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