Titel: Linux: Yaps konfigurieren
Autor: Hans-Michael Gerhards (HM-Gerhards@gmx.de)
URL: http://home.arcor.de/hm-gerhards/linux/linux_yaps.html


Linux: Yaps konfigurieren

Yaps ist ein Programm, daß es erlaubt, von heimischen PC aus Kurzmitteilungen (SMS) in die meisten deutschen Handy-Netze zu senden.
Momentan unterstützen D1 T-Mobil, D2 Vodafone sowie E-Plus diesen Service. Nach eigenen Angaben existiert eine solche Anbindung bei O2 (früher VIAG Interkom) derzeit noch nicht.

Vorweg noch eine kurze Warnung: Das Senden dieser SMS mit Yaps ist, anders als bei entsprechenden Diensten im Internet, nicht kostenlos. Vielmehr ruft Yaps zum Senden einen SMS-Gateway im jeweiligen Mobilfunknetz an, es werden die Telefongebühren für diesen Anruf fällig. Die meisten Telefon-Provider rechnen aber im Minutentakt ab, deshalb kann ein solcher Anruf von ca. 3 bis 10 Sekunden Dauer leicht mit 30 Cent zu Buche schlagen. Empfehlenswert ist es, sich nach Call-by-Call-Angeboten umzuschauen, die sekundengenau abrechnen!

Bevor wir zur Konfiguration von Yaps kommen können, muß das Programm ersteinmal installiert werden. Den meisten Distributionen liegt es mittlerweile bei, ansonsten ist die momentan aktuelle Version 0.96 auch im Internet zu finden: http://www.ibiblio.org/pub/Linux/apps/serialcomm/machines/yaps-0.96.tar.gz. (Tips zum Entpacken und Kompilieren finden sich unter Programme aus den Sourcen installieren.)

Die Hauptkonfigurationsdatei von Yaps heißt /etc/yaps.rc
In ihr befinden sich alle wesentlichen Einstellungen. Die Konfiguration unterscheidet sich etwas für die Benutzer von Modem und ISDN-Karten. Einige anfängliche Einstellungen sind jedoch allgemeingültig vorzunehmen.
Dazu stellt man zuerst das unter Linux gültige Locking ein, zu finden in der modem section. Hier einzutragen ist
lock prefix /var/lock/LCK.
Die anderen Locking-Methoden müssen natürlichen auskommentiert werden.
Dann sind noch einige Vorwahlnummern für die deutschen Mobilfunknetze nachzutragen, die yaps.rc ist in dieser Beziehung nicht mehr ganz aktuell.

Die service section sollte dann etwa folgendermaßen aussehen (Auszug):
  [D1]
    protocol	tap
    valid-pid	0160|0170|0171|0175
    #change-pid	-
    convert	no-8bit,cv-d1
  (...)
  #
  #	D2 (by Mannesmann Mobilfunk)
  #
  [D2]
    modem	standard-d2
    protocol	ucp
    valid-pid	0172|0173
    #change-pid	-
    convert	*no-8bit,cv-default
  (...)
  #
  #	E+ (by ???)
  #	!! UNTESTED !!
  #
  [E+]
    protocol	tap
    valid-pid	0177|0178
    #change-pid	-
    convert	*no-8bit,cv-default
  (...)
Manche Mobilfunkdienste erlauben es auch, die Festnetzrufnummer des PC durch eine selbstgewählte Rufnummer zu ersetzen (z.B. die eigene Handynummer). Diese Einstellung kann am Anfang der Datei in der global section unter dem Stichwort call-id vorgenommen werden.
Beispiel:
  #	This is the default caller-id. If the protocol/service allowes
  #	it, this is inserted in the message (and the receiver gets this
  #	as the sender's number)
  call-id	+491701234567
  #
An dieser Stelle ist die Konfiguration für die Modembenutzer fast schon beendet. Sie müssen lediglich noch in der modem section das richtige Modem-Device einstellen, z.B. /dev/ttyS0 für die erste serielle Schnittstelle (unter Win bekannt als COM1).

Während der Modembenutzer an dieser Stelle schon fertig ist, sind für den Besitzer einer ISDN-Karte noch mehrere Arbeitsschritte nötig.
Da Yaps nur ein Modem ansprechen kann, muß mit Hilfe des Paketes Isdn4Linux ein Modem emuliert werden. Der dafür zuständige Daemon heißt iprofd.

Damit dieser beim Hochfahren des Rechners automatisch gestartet bzw. beim Herunterfahren beendet wird, legt man ein Start-/Stop-Skript im Verzeichnis /etc/rc.d/init.d an.
Es gibt veschiedene Möglichkeiten, dieses Skript zu gestalten, SuSE-Benutzer passen am einfachsten das Muster aus der Datei /etc/rc.d/init.d/skeleton entsprechend an. Das könnte dann so aussehen (für eine SuSE 7.0):
  #! /bin/sh
  # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany.
  #
  # Author: Hans-Michael Gerhards
  #
  # /sbin/init.d/iprofd
  #
  #   and symbolic its link
  #
  # /sbin/rciprofd
  #

  . /etc/rc.status
  . /etc/rc.config

  # Determine the base and follow a runlevel link name.
  base=${0##*/}
  link=${base#*[SK][0-9][0-9]}

  # First reset status of this service
  rc_reset
  case "$1" in
    start)
	echo -n "Starting iprof daemon: "
	## Start daemon with startproc(8). If this fails
	## the echo return value is set appropriate.

	startproc /usr/sbin/iprofd /var/run/iprofd.tmp

	# Remember status and be verbose
	rc_status -v
	;;
    stop)
	echo -n "Stopping iprof daemon: " 
	killproc -TERM /usr/sbin/iprofd

	# Remember status and be verbose
	rc_status -v
	;;
    restart)
	## If first returns OK call the second, if first or
	## second command fails, set echo return value.
	$0 stop  &&  $0 start

	# Remember status and be quiet
	rc_status
	;;
    reload)
	## Choose ONE of the following two cases:

	## First possibility: A few services accepts a signal
	## to reread the (changed) configuration.

	echo -n "Reload iprof daemon: "
	killproc -HUP /usr/sbin/iprofd
	rc_status -v
	;;
    status)
	echo -n "Checking for iprof daemon: "
	## Check status with checkproc(8), if process is running
	## checkproc will return with exit status 0.

	checkproc /usr/sbin/iprofd && echo OK || echo No process
	;;
    *)
	echo "Usage: $0 {start|stop|status|restart|reload}"
	exit 1
	;;
esac
rc_exit
Anschließend sind noch ein paar symbolische Links zu erstellen:
  ln -s /etc/rc.d/init.d/iprofd /sbin/rciprofd
  ln -s /etc/rc.d/init.d/iprofd /etc/rc.d/rc2.d/S55iprofd
  ln -s /etc/rc.d/init.d/iprofd /etc/rc.d/rc2.d/K55iprofd
  ln -s /etc/rc.d/init.d/iprofd /etc/rc.d/rc3.d/S55iprofd
  ln -s /etc/rc.d/init.d/iprofd /etc/rc.d/rc3.d/K55iprofd
Wer den Daemon einfach per Hand starten möchte, der kann dies auch einfach mit dem Befehl
 iprofd ‹temp-file›
erreichen (‹temp-file› ist beliebig).
Nun stehen die Devices /dev/ttyI0 bis /dev/ttyI63 zur Verfügung (nach dem y: großes i).
Eines davon (normalerweise /dev/ttyI0) trägt man in der modem section der yaps.rc ein.

Im Unterabschnitt der modem section sollte es jetzt so aussehen:
  #	Device
  #
  #	Typical a symbolic link to the real device
  device		/dev/ttyI0
Der nächste Unterabschnitt der modem section beschreibt den Init-String. Auch dieser ist für ISDN wie folgt zu ändern:
  #	Modem talk
  #
  # use the following init-string for isdn:
  # and change MSN to your MSN (what else...:-))
  init            \\r !200D ATZ\r <OK AT&EMSN\r <OK
wobei für MSN die eigene MSN bzw. Telefonnummer einzugeben ist.

Jetzt gilt es nur noch, die Einwahlnummern der Mobilfunkanbieter vom Modem-Gateway auf den ISDN-Gateway umzustellen. Diese lauten:

D10171 25 21 001
D20172 22 78 010
E-Plus0177 11 67

In der Datei yaps.rc sollte das dann so aussehen (Auszug):
  [D1]
  (...)
  # phone		01712092522
  # use this number for isdn-dialin:
  phone           01712521001
  (...)
  #
  [D2]
  (...)
  # phone		01722278020
  # use this number for isdn-dialin:
  phone           01722278010
  (...)
  #
  [E+]
  (...)
  phone		01771167
  (...)
Damit ist die Konfiguration auch für die ISDN-Benutzer abgeschlossen. Zum Versenden einer SMS-Nachricht dient der einfache Shell-Befehl
  yaps [Mobilfunknummer] "[SMS-Text]"
Natürlich muß man dazu die nötigen Zugriffsrechte haben. In den meisten Distributionen muß man dazu Mitglied der Gruppe dialout sein, oder die Rechte der devices ändern.

Übersteigt die Länge des Textes die üblichen 160 Zeichen, so wird je nach Anbieter entweder in mehrere Nachrichten aufgespalten oder nach 160 Zeichen abgeschnitten.

Wer seinen Nachrichtentext für die Archivierung aufheben möchte, der kann die Nachricht auch in eine Text-Datei schreiben und diese folgendermaßen senden:
yaps [Mobilfunknummer] +"[Dateipfad]"