home | help
GAMMU-SMSD(1)			      Gammu			   GAMMU-SMSD(1)

NAME
     gammu-smsd - SMS daemon for Gammu

SYNOPSIS
	gammu-smsd [OPTION]...

DESCRIPTION
     This manual page documents briefly the gammu-smsd command.

     gammu-smsd is a program that periodically scans GSM modem for received mes-
     sages,  stores  them in defined storage and also sends messages enqueued in
     this storage.

     The daemon can  reload  configuration  file  after  sending  hangup  signal
     (SIGHUP) and properly terminates itself on SIGINT and SIGTERM.

     Program  accepts  following options (please note that long options might be
     not accepted on some platforms):

     -h, --help
	    Shows help.

     -v, --version
	    Shows version information and compiled in features.

     -c, --config=file
	    Configuration file to use, default is /etc/gammu-smsdrc, on  Windows
	    there  is  no  default  and configuration file path has to be always
	    specified.

	    If you run SMSD as a system daemon (or service), it  is  recommended
	    to	use  absolute  path  to  configuration file as startup directory
	    might be different than you expect.

	    See gammu-smsdrc for configuration file documentation.

     -p, --pid=file
	    Lock file for storing pid, empty for no locking.  Not  supported  on
	    Windows.

     -U, --user=user
	    Drop daemon privileges to chosen user after starting.

     -G, --group=group
	    Drop daemon privileges to chosen group after starting.

     -d, --daemon
	    Daemonize program on startup. Not supported on Windows.

     -i, --install-service
	    Installs SMSD as a Windows service.

     -u, --uninstall-service
	    Uninstalls SMSD as a Windows service.

     -s, --start-service
	    Starts SMSD Windows service.

     -k, --stop-service
	    Stops SMSD Windows service.

     -f, --max-failures=count
	    Terminate  after  defined number of failures. Use 0 to not terminate
	    (this is default).

     -X, --suicide=seconds
	    Kills itself after number of seconds.

     -S, --run-service
	    Runs pogram as SMSD Windows service. This should not be  used  manu-
	    ally, but only Windows Service manager should use this command.

     -n, --service-name=name
	    Defines  name  of a Windows service. Each service requires an unique
	    name, so if you want to run several SMSD instances, you have to name
	    each service differently. Default is "GammuSMSD".

     -l, --use-log
	    Use logging as configured in config file (default).

     -L, --no-use-log
	    Do not use logging as configured in config file.

     -e, --install-event-log
	    Installs Windows EventLog description to registry.

	    New in version 1.31.90.

     -E, --uninstall-event-log
	    Uninstalls Windows EventLog description to registry.

	    New in version 1.31.90.

SIGNALS
     SMSD can be controlled using following POSIX signals (if your platform sup-
     ports this):

     SIGHUP
	    Reload configuration and reconnect to phone.

     SIGINT, SIGTERM
	    Gracefully shutdown the daemon.

     SIGALRM
	    Used internally for gammu-smsd -X

     SIGUSR1
	    Suspends SMSD operation, closing connection to phone and database.

     SIGUSR2
	    Resumes SMSD operation (after previous suspend).

     Changed in version 1.22.91: Added support for SIGHUP.

     Changed in version 1.22.95: Added support for SIGALRM.

     Changed in version 1.31.90: Added support for SIGUSR1 and SIGUSR2.

EXAMPLES
   Linux/Unix Examples
     Start SMSD as a daemon on Linux:

	gammu-smsd --config /etc/gammu-smsdrc --pid /var/run/gammu-smsd.pid --daemon

     Start SMSD as a daemon on Linux with reduced privileges:

	gammu-smsd --config /etc/gammu-smsdrc --pid /var/run/gammu-smsd.pid --daemon --user gammu --group gammu

   SMSD as a system wide daemon
     To use SMSD as a daemon, you might want to use init script which is shipped
     with Gammu in contrib/init directory. It is not installed by  default,  ei-
     ther install it manually or check INSTALL file for instructions.

     Under Windows 7 you might need to disable UAC (user account control) before
     you will be able to install SMSD service.

   Windows Service Examples
     Install Gammu SMSD Windows service:

	gammu-smsd.exe -c c:\Gammu\smsdrc -i

     Install two instances of SMSD Windows service:

	gammu-smsd.exe -c c:\Gammu\smsdrc-1 -n Gammu-first-phone -i

	gammu-smsd.exe -c c:\Gammu\smsdrc-2 -n Gammu-second-phone -i

     To uninstall a Windows service:

	gammu-smsd.exe -u

   Troubleshooting Windows Service
     If  Gammu	fails to start as a Windows service (you will usually get "Error
     1053: The service did not respond to the start  or  control  request  in  a
     timely  fashion"),  first	check your SMSD logs. If they do not contain any
     useful hint, try starting SMSD manually with exactly same parameters as you
     installed the service (without -i).

     For example the command line can look like:

	gammu-smsd.exe -c smsdrc

     You now should be able to get errors from SMSD even if it fails to start as
     a service.

   Invoking Gammu and suspending SMSD
     As you can not run Gammu and Gammu SMSD at same time on signle device,  you
     can workaround this limitation by suspending SMSD temporarily using SIGUSR1
     and SIGUSR2 signals (see also Signals):

	SMSD_PID=`pidof gammu-smsd`
	if [ -z "$SMSD_PID" ] ; then
	    echo "Failed to figure out SMSD PID!"
	else
	    kill -SIGUSR1 $SMSD_PID
	    gammu identify
	    kill -SIGUSR2 $SMSD_PID
	fi

     Or even create a gammu-safe script:

	#!/bin/bash
	SMSD_PID=`pidof gammu-smsd`
	if [ -z "$SMSD_PID" ] ; then
	  gammu $@
	else
	  tty=$(lsof |grep -E "gammu-sms\s+$SMSD_PID\s+.*/dev/tty*"|awk {'print $NF'})
	  kill -SIGUSR1 $SMSD_PID
	  while test "$(fuser $ttyfuser $tty 2> /dev/null|xargs)" = $SMSD_PID
	  do
	    sleep 1
	  done
	  sleep 1
	  gammu $@
	  kill -SIGUSR2 $SMSD_PID
	  while test "$(fuser $ttyfuser $tty 2> /dev/null|xargs)" != $SMSD_PID
	  do
	    sleep 1
	  done
	  sleep 1
	fi

KNOWN LIMITATIONS
     You  can  not use same phone by more programs in same time. However in case
     you did not enable locking in [gammu] section, it might be  able  to  start
     the  communication  with  phone from more programs. In this case neither of
     the programs will probably work, see Invoking Gammu and suspending SMSD for
     workaround.

     There is no way to detect that SMS message is reply to another  by  looking
     at  message  headers.  The only way to achieve this is to add some token to
     the message and let the user include it in the message on reply.

AUTHOR
     Michal AihaA <michal@cihar.com>

COPYRIGHT
     2009-2015, Michal AihaA <michal@cihar.com>

1.42.0				  Oct 03, 2020			   GAMMU-SMSD(1)

home | help