Bitcoin Forum
November 18, 2024, 08:36:47 PM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: « 1 ... 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 [363] 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 ... 416 »
  Print  
Author Topic: [OS] nvOC easy-to-use Linux Nvidia Mining  (Read 418244 times)
urnzwy
Newbie
*
Offline Offline

Activity: 44
Merit: 0


View Profile
February 08, 2018, 03:48:18 AM
Last edit: February 08, 2018, 04:28:45 AM by urnzwy
 #7241

Is there a script for a “rig offline” telegram notification that I’m missing? The telegram messages are awesome, but would be good to know if it powers down and stay down.

If system is going to be rebooted you will get notified from script that send the reboot command (watchdog or temp control), but if your rig freeze there is nothing to do.
You can set up an external watchdog like an RPi to check your rigs ping and ssh port and send you message if they were unreachable.

I'll look into the Pi, would be great to set it up to ping and then restart if needed. Of course, finding the issue of the freeze is my priority and I think I have an idea now.

I have two rigs both mining ZCL on Supernova and this has happened twice that both rigs will freeze within a minute of eachother. I saw the first time while being connected via teamviewer that the server "disconnects" briefly within the miner and that watchdog will then re-start the 3main, get hung up and freeze. I assume this is what happened again. I would point to a hardware issue, but both separately going down at the same time with no telegram errors? Too much of a coincidence. I don't have any of the cards overclocked at this point, both systems were up for almost two days before the last freeze.

Anything you can think of in this regard?

I am in the process of updating the miners and re-compiling. Thanks!
das0212
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
February 08, 2018, 03:15:21 PM
 #7242



nvOC v0019-2.0 Community Release - Miner Update Script


This script will check your nvOC miners and download new ones.
As requested, after download it will ask to recompile them.

Code:

Downloading and checking new miners for nvOC-v0019-2.x finished

Do you want to re-compile your miners (y/N)?  y

Checking if bn.h bignum error is fixed for compiling miners or not

Select miners to compile, (multiple comma separated values: 1,6,7)
1- ASccminer
2 -KTccminer
3 -KTccminer-cryptonight
4- KXccminer
5 -NAccminer
6- SPccminer
7- TPccminer
8- vertminer

Do your Choice: [1] [2] [3] [4] [5] [6] [7] [8]  [E]xit:

Good Job Bro...
please add also the option  "All of the above" to compile all miners
papampi
Full Member
***
Offline Offline

Activity: 686
Merit: 140


Linux FOREVER! Resistance is futile!!!


View Profile WWW
February 08, 2018, 03:24:29 PM
 #7243





nvOC v0019-2.0 Community Release - Miner Update Script


This script will check your nvOC miners and download new ones.
As requested, after download it will ask to recompile them.

Code:

Downloading and checking new miners for nvOC-v0019-2.x finished

Do you want to re-compile your miners (y/N)?  y

Checking if bn.h bignum error is fixed for compiling miners or not

Select miners to compile, (multiple comma separated values: 1,6,7)
1- ASccminer
2 -KTccminer
3 -KTccminer-cryptonight
4- KXccminer
5 -NAccminer
6- SPccminer
7- TPccminer
8- vertminer

Do your Choice: [1] [2] [3] [4] [5] [6] [7] [8]  [E]xit:


Miners Update Script:
Code:
cd /home/m1/Downloads
wget -N https://raw.githubusercontent.com/papampi/nvOC_miners/master/nvOC_miner_update.sh
bash /home/m1/Downloads/nvOC_miner_update.sh


Miner Versions:
Code:
Claymore                      10.6
ccminer Tpruvot               2.2.4
Bminer                        5.3.0
DSTM                          0.5.8
KlausT ccminer                8.20
KlaustT ccminer-cryptonight   2.06
Ethminer                      0.13.0
nanashi-ccminer               2.2-mod-r2
vertminer              1.0.2 Stable
ANXccminer              valexis-1.0

Good Job Bro...
please add also the option  "All of the above" to compile all miners

Glad so many liked it.
Good idea for "All" option, Added.


Code:
Do your Choice: [A]LL [1] [2] [3] [4] [5] [6] [7] [8] [E]xit

Rig4p
Newbie
*
Offline Offline

Activity: 59
Merit: 0


View Profile
February 08, 2018, 10:41:48 PM
 #7244

So I have now tried the standard MPH_EQUIHASH switcher, MPH_ETHASH switcher and the SALFTER_MPH_PROFIT switchers from nvOC.
I have not yet tried the WTM switcher. That's next.  Smiley
I auto_exchange to ZEC on the MPH pool and that also works very well.
I have noticed from my test runs that I gain very little additional ZEC, if any additional, using these switchers than just pointing all my GPUs directly at ZEC.

It seems that the switching occurs often and is based on something like instantaneous profit margin on an exchange.
If that is what is happening, there is very little chance to:
have the miners switch
get the coin mined
into the wallet
confirmed
onto the exchange
and the exchange made before the switching equation is no longer valid
 
And frequently the switch formula will select a coin that only has the highest margin for a very short time, so if you make the time between profit checks too long your wasting time mining a suddenly low-profit coin.
It would seem that auto switching would be more advantageous if one had many rigs that could start the profit checking timeout in a staggered manner.
That way it is more likely that only one rig would be stuck mining a short-time-most-profitable coin.

Can someone help me with what I am missing in my thinking?
My farm is not that large so the benefits may be so small that I can't measure them.
The work done on the switchers is fantastic but I don't yet see the benefit.
Thanks.
CryptAtomeTrader44
Full Member
***
Offline Offline

Activity: 340
Merit: 103

It is easier to break an atom than partialities AE


View Profile
February 08, 2018, 11:44:22 PM
Last edit: February 18, 2018, 04:03:30 PM by CryptAtomeTrader44
Merited by damNmad (1)
 #7245

whattomine has just added Innova Coin to the possible coin selection in its comprarative list.
If you want to add it to your WTM_SWITCHER list, it's still easy:

To add Innova (INN) (Neoscrypt) to the selection of cryptocurrency in 1bash script file and therefore also in the WTM switch:

1 / Find TZC Variables in 1bash file (just below the VIVO variables, you will copy / paste as a template Under TZC lines):

Code:
# Innova (INN)
# ## No Need to add add stratum+tcp:// to server address
INN_WORKER="$WORKERNAME"
INN_ADDRESS="INN_Wallet_Address" # Donwnload InnovaCoin Wallet and Blockchain to obtain an address, avoid mining on cryptopia address
INN_POOL="pool.unimining.net" # 0.5% pool fee, Yiimp type Pool
INN_PORT="4235"
INN_PWD="c=INN"
INN_INTENSITY="17"


Add this below to the 0miner script file (in the same way below the command to launch the TZC ccminer and you can copy TZC but be careful to replace TZC_ by INN_ in the whole command):
Code:
	if [ $COIN == "INN" ]
then
HCD='/home/m1/KTccminer/ccminer'
ADDR="$INN_ADDRESS.$INN_WORKER"
screen -dmSL miner $HCD -a neoscrypt -o stratum+tcp://$INN_POOL:$INN_PORT -u $ADDR -p $INN_PWD -i $INN_INTENSITY
fi

At the end of 1 bash file, you can also add INN coin in ALGO_SPECIFIC_OC section, Like This :

Code:
if [ $ALGO_SPECIFIC_OC == "YES" ]
then
  # Neoscrypt
  if [ $COIN == "FTC" -o $COIN == "ORB" -o $COIN == "PXC" -o $COIN == "VIVO" -o $COIN == "TZC" -o $COIN == "GBX" -o $COIN == "CRC" -o $COIN == "INN" -o $COIN == "DSR" -o $COIN == "NICE-NEOSCRYPT" ]
  then
    ALGORITHM="NEOSCRYPT"
    POWERLIMIT_WATTS=80
    __CORE_OVERCLOCK=150
    MEMORY_OVERCLOCK=800
  fi

Don't mine directly to Cryptopia Wallet Address because if Maintenance on INN Blockchain, cryptopia will be slow to reput online a wallet, and you risk to mine in the void for all  the time cryptopia INN wallet could be offline or désynchronised of official Blockchain.
Download their smaller wallet. There is a portable wallet for windows users.
https://innovacoin.info/#wallets

To consult your pool balance :
https://www.unimining.net/?address=INN_Wallet Address

You can mine INN on other pools :
http://www.zpool.ca/site/mining => 2% pool fee
http://pool.hashrefinery.com/ => 1.25% pool fee
https://altminer.net/ => 0.9% fee
https://www.lycheebit.com/ => 1% fee

More pools on their webpage, I do not have all consulted :
https://innovacoin.info/pools/
CryptAtomeTrader44
Full Member
***
Offline Offline

Activity: 340
Merit: 103

It is easier to break an atom than partialities AE


View Profile
February 08, 2018, 11:50:28 PM
 #7246

Be carefull in Mining VIVO coin, i mine it but it seems that his blockchain is pericliting or desynchronize on severals pools.

If you are minning VIVO, Please let US a Message to tell everyone where is the good blockchain.

Because of this désynchonized VIVO blockchain, i prbably loose 0.5 Vivo ...even if bulwarkpool.com confims all blocks it mine on the wrong blockchain. But i think it's not a good solution to resolve.

I just saw thant hashraffinery seems to have the same problem but i'm not sure because they don't precise tha coins they are desynchronized

Please tell everyone what pool your are using.
hashmasta83
Newbie
*
Offline Offline

Activity: 28
Merit: 1


View Profile
February 09, 2018, 03:24:58 AM
 #7247

Is there a way to use MPH pool auto exchange feature using papampi WTM auto switching?  I have not tried this but i assume if i point all the different coins to the correct 72XXX ports that it would work?  Has anyone tried this or have any ideas on how to implement this in the code?
fk1
Full Member
***
Offline Offline

Activity: 216
Merit: 100


View Profile
February 09, 2018, 07:03:10 AM
 #7248

nvOC v0019-2.0 Community Release - Miner Update Script

@papampi: can this work also with latest rxOC?
papampi
Full Member
***
Offline Offline

Activity: 686
Merit: 140


Linux FOREVER! Resistance is futile!!!


View Profile WWW
February 09, 2018, 08:47:08 AM
Last edit: February 10, 2018, 06:54:42 AM by papampi
 #7249

Is there a way to use MPH pool auto exchange feature using papampi WTM auto switching?  I have not tried this but i assume if i point all the different coins to the correct 72XXX ports that it would work?  Has anyone tried this or have any ideas on how to implement this in the code?

Yes, and thats what I do
Just set your coins with normal 17xxx port and add them to wtm_coins

Edit:
Normal port 20xxx should be used, 17xxx is auto algo switch.

papampi
Full Member
***
Offline Offline

Activity: 686
Merit: 140


Linux FOREVER! Resistance is futile!!!


View Profile WWW
February 09, 2018, 08:49:26 AM
 #7250

nvOC v0019-2.0 Community Release - Miner Update Script

@papampi: can this work also with latest rxOC?

I dont have any amd rigs and dont use rxOC
But I think the set of compile miners has same path as rxOC, but others like ethminer, dstm, bminer, ... may have different path in rxOC that should be changed in 3main/1bash or move them to the appropriate location.

bytiges
Full Member
***
Offline Offline

Activity: 196
Merit: 100


View Profile
February 09, 2018, 08:49:42 AM
 #7251

@papampi re: hardware watchdog

Sorry for being brief here, but I'll try to give you some pointers.

you should look at ubuntu package watchdog and the watchdogd daemon. When implemented correctly (I hope it is) with the help of the kernel is should work as hardware watchdog timer (on mobos where the hardware watchdog can be enabled in bios or where it's enabled by default).

It works by starting watchdogd which is a daemon that will reset a watchdog (hardware bit in the cpu/mobo) once a minute. Once started, if watchdogd does not reset the timer, a hardware reset occurs.

Sometimes it's possible that there's a hardware issue with the gpus where a simple reset will not be good and you might need a physical power on-off.

hth, bytiges.
papampi
Full Member
***
Offline Offline

Activity: 686
Merit: 140


Linux FOREVER! Resistance is futile!!!


View Profile WWW
February 09, 2018, 09:56:23 AM
 #7252

@papampi re: hardware watchdog

Sorry for being brief here, but I'll try to give you some pointers.

you should look at ubuntu package watchdog and the watchdogd daemon. When implemented correctly (I hope it is) with the help of the kernel is should work as hardware watchdog timer (on mobos where the hardware watchdog can be enabled in bios or where it's enabled by default).

It works by starting watchdogd which is a daemon that will reset a watchdog (hardware bit in the cpu/mobo) once a minute. Once started, if watchdogd does not reset the timer, a hardware reset occurs.

Sometimes it's possible that there's a hardware issue with the gpus where a simple reset will not be good and you might need a physical power on-off.

hth, bytiges.

Thanks mate
I know how it works, and I can load watchdog manually but couldn't get it to auto start on system boot.
Also no idea which modules to remove from blacklist .


papampi
Full Member
***
Offline Offline

Activity: 686
Merit: 140


Linux FOREVER! Resistance is futile!!!


View Profile WWW
February 09, 2018, 09:58:15 AM
Last edit: February 09, 2018, 12:03:11 PM by papampi
 #7253

nvOC v0019-2.0 Community Release - Miner Update Script


This script will check your nvOC miners and download new ones.
As requested, after download it will ask to recompile them.

Code:

Downloading and checking new miners for nvOC-v0019-2.x finished

Do you want to re-compile your miners (y/N)?  y

Checking if bn.h bignum error is fixed for compiling miners or not

Select miners to compile, (multiple comma separated values: 1,6,7)
1- ASccminer
2 -KTccminer
3 -KTccminer-cryptonight
4- KXccminer
5 -NAccminer
6- SPccminer
7- TPccminer
8- vertminer

Do your Choice: [A]LL [1] [2] [3] [4] [5] [6] [7] [8] [E]xit:


Miners Update Script:
Code:
cd /home/m1/Downloads
wget -N https://raw.githubusercontent.com/papampi/nvOC_miners/master/nvOC_miner_update.sh
bash /home/m1/Downloads/nvOC_miner_update.sh


Miner Versions:
Code:
Claymore                      11.0
Tpruvot ccminer               2.2.4
Bminer                        5.3.0
DSTM                          0.5.8
KlausT ccminer                8.20
KlaustT ccminer-cryptonight   2.06
Ethminer                      0.13.0
nanashi-ccminer               2.2-mod-r2
vertminer              1.0.2 Stable
ANXccminer              valexis-1.0




Updated claymore to 11.0
Will add more options in 1bash and 0miner for 11.0 dual new blake2s and keccak coins

bytiges
Full Member
***
Offline Offline

Activity: 196
Merit: 100


View Profile
February 09, 2018, 12:49:24 PM
 #7254

Thanks mate
I know how it works, and I can load watchdog manually but couldn't get it to auto start on system boot.
Also no idea which modules to remove from blacklist .

watchdog install fails because /etc/init.d/gpu by th00bear does not complain to lsb requirements. You need to add the following to the header (from line 3 onwards):
Code:
### BEGIN INIT INFO
# Provides:          gpu
# Short-Description: th00ber gpu
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

Also there's an unbalanced quote in /lib/systemd/system/watchdog.service. The execstartpre line should have a single quote at the end ('):
Code:
ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module'
after that apt-get install watchdog (or apt-get -f install to fix it).

then

#systemctl start watchdog

then check that it's running with

#systemctl status watchdog

and finally enable at boot with

#systemctl enable watchdog

and don't forget to fine-tune with /etc/watchdog.conf
also a hardware driver needs to be specified in /etc/default/watchdog.
The drivers are in /lib/modules/$(uname -r)/kernel/drivers/watchdog
Usually (proper) mainboard manuals have the type of watchdog installed. On intel hardware, usually iTCO_wdt works.
You can use the softdog.ko module, but it's not as effective

After all this, I tried rebooting my nvoc rig and watchdog start is stuck in starting state. If I stop and start it by hand on the console, it will start but it won't start by itself. Perhaps there's an issue related to nvoc or not (my other ubuntu boxes start normally).

I tried looking for a fix for about an hour now, and still nogo. :/

EDIT: RE: Blacklisted modules:
There's no need to remove blacklisted modules. /etc/default/watchdog contains the module name to load and watchdog start will load it regardless of blacklist. This is something that cannot be automated because there's not reliable way to know if a hardware watchdog module is present. Some modules load and assume they work, creating the /dev/watchdog* devices. Other will check and fail. It's a mess in general.
papampi
Full Member
***
Offline Offline

Activity: 686
Merit: 140


Linux FOREVER! Resistance is futile!!!


View Profile WWW
February 09, 2018, 01:23:28 PM
Last edit: February 09, 2018, 01:34:39 PM by papampi
 #7255

Thanks mate
I know how it works, and I can load watchdog manually but couldn't get it to auto start on system boot.
Also no idea which modules to remove from blacklist .

watchdog install fails because /etc/init.d/gpu by th00bear does not complain to lsb requirements. You need to add the following to the header (from line 3 onwards):
Code:
### BEGIN INIT INFO
# Provides:          gpu
# Short-Description: th00ber gpu
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

Also there's an unbalanced quote in /lib/systemd/system/watchdog.service. The execstartpre line should have a single quote at the end ('):
Code:
ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module'
after that apt-get install watchdog (or apt-get -f install to fix it).

then

#systemctl start watchdog

then check that it's running with

#systemctl status watchdog

and finally enable at boot with

#systemctl enable watchdog

and don't forget to fine-tune with /etc/watchdog.conf
also a hardware driver needs to be specified in /etc/default/watchdog.
The drivers are in /lib/modules/$(uname -r)/kernel/drivers/watchdog
Usually (proper) mainboard manuals have the type of watchdog installed. On intel hardware, usually iTCO_wdt works.
You can use the softdog.ko module, but it's not as effective

After all this, I tried rebooting my nvoc rig and watchdog start is stuck in starting state. If I stop and start it by hand on the console, it will start but it won't start by itself. Perhaps there's an issue related to nvoc or not (my other ubuntu boxes start normally).

I tried looking for a fix for about an hour now, and still nogo. :/

EDIT: RE: Blacklisted modules:
There's no need to remove blacklisted modules. /etc/default/watchdog contains the module name to load and watchdog start will load it regardless of blacklist. This is something that cannot be automated because there's not reliable way to know if a hardware watchdog module is present. Some modules load and assume they work, creating the /dev/watchdog* devices. Other will check and fail. It's a mess in general.

I was able to install/update watchdog with removing /etc/inint.d/gpu and then added it back, but your solution is definitely better to fix that script.
Then it got stuck at start at boot time too. Fixing the watchdog.service did not fix it either, may be we add it to rc.local so it start at boot?

Also I read there should be a watchdog in /dev, but after manual start it does not show up in there too.


Edit:
remove/purged then installed watchdog again, now /dev/watchdog show up with manual start

Edited /etc/init.d/watchdog:
Code:
run_watchdog=1

And still wont start at boot
Code:
● watchdog.service - watchdog daemon
   Loaded: loaded (/lib/systemd/system/watchdog.service; static; vendor preset: enabled)
   Active: inactive (dead)



bytiges
Full Member
***
Offline Offline

Activity: 196
Merit: 100


View Profile
February 09, 2018, 02:00:15 PM
 #7256

@papampi:

the /dev/watchdog* device is created by the module (one device per loaded module is created). /etc/default/watchdog is where you specify the watchdog module to load at watchdog start.

both /etc/init.d/watchdog and the systemctl service look there and load it.

What happens at boot when you use rc.local is that the "start" command gets stuck and never returns. After some time you can do stop and start again and it works then, but not immediately after boot, which is "puzzling" me.

I tried to add a delay (120sec) in rc.local and it won't start watchdog regardless. So I'm trying variations here atm.



bytiges
Full Member
***
Offline Offline

Activity: 196
Merit: 100


View Profile
February 09, 2018, 03:17:28 PM
 #7257

@papampi:

I found a solution for starting watchdog from rc.local. Just call it like this:
Code:
(sleep 90 && systemctl restart watchdog.service)&
this will sleep a little before restarting watchdog, but it will do so in the background and allow for rc.local to terminate beforehand.

Now, on a intel mobo I'm loading the iTCO_wdt module and the dmesg output looks good:
Code:
[  120.924534] iTCO_vendor_support: vendor-support=0
[  120.927694] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.11
[  120.927729] iTCO_wdt: Found a Lynx Point TCO device (Version=2, TCOBASE=0x1860)
[  120.927827] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)

bytiges.
hashmasta83
Newbie
*
Offline Offline

Activity: 28
Merit: 1


View Profile
February 09, 2018, 04:03:51 PM
 #7258

Is there a way to use MPH pool auto exchange feature using papampi WTM auto switching?  I have not tried this but i assume if i point all the different coins to the correct 72XXX ports that it would work?  Has anyone tried this or have any ideas on how to implement this in the code?

Yes, and thats what I do
Just set your coins with normal 17xxx port and add them to wtm_coins

Epicly awesome feature, and version 2.0 is so much better, great work!
leenoox
Full Member
***
Offline Offline

Activity: 200
Merit: 101



View Profile
February 09, 2018, 07:17:13 PM
 #7259

@papampi:

I found a solution for starting watchdog from rc.local. Just call it like this:
Code:
(sleep 90 && systemctl restart watchdog.service)&
this will sleep a little before restarting watchdog, but it will do so in the background and allow for rc.local to terminate beforehand.

Now, on a intel mobo I'm loading the iTCO_wdt module and the dmesg output looks good:
Code:
[  120.924534] iTCO_vendor_support: vendor-support=0
[  120.927694] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.11
[  120.927729] iTCO_wdt: Found a Lynx Point TCO device (Version=2, TCOBASE=0x1860)
[  120.927827] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)

bytiges.

I was looking to implement the iTCO_wtd a while back. Too preoccupied  with other things...
Check this for testing iTCO:
http://www.madore.org/~david/linux/iTCO-wdt-test.html

Rig4p
Newbie
*
Offline Offline

Activity: 59
Merit: 0


View Profile
February 09, 2018, 09:02:18 PM
 #7260

Is there a way to use MPH pool auto exchange feature using papampi WTM auto switching?  I have not tried this but i assume if i point all the different coins to the correct 72XXX ports that it would work?  Has anyone tried this or have any ideas on how to implement this in the code?

Yes, and thats what I do
Just set your coins with normal 17xxx port and add them to wtm_coins

Do you only mine coins that are on MPH with your personal WTM list?
Or for coins not on MPH do you point to different pools inside nvOC and have them pay out to other places like your own wallet?

Still trying to get some advice on the profit switching question I mentioned a page or so back.  Smiley
Thanks!
Pages: « 1 ... 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 [363] 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 ... 416 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!