Blog Image

Linux^2

What you may find here

In this blog you'll mainly find all things Linux - problems, solutions, reports, rants, tips & tricks etc. with the occasional off-topic entry thrown in. You never would have guessed looking at the URL, huh?
In diesem Blog findet ihr hauptsächlich Themen rund um Linux - Probleme, Lösungen, Berichte, Meinungen, Tips & Tricks und dazwischen ein paar überhaupt nicht dazu passende Einträge. Wärt ihr bei der URL nie drauf gekommen, ne?

Mailt mal! Email me!

gsm-ussd 0.2.3: Rundum besser!

gsm-ussd Posted on Di, Mai 18, 2010 14:25:06

Na ja, was soll ich sonst schon anderes sagen?!? smiley

Kurz & gut: v0.2.3 ist raus.

Um aber mal ernsthaft zu werden: Ein Update wird angeraten. Je nach Kombination von Modem und SIM-Karte (speziell Huawei E160/O2-SIM, wie auch O2-Reseller wie Tchibo/FONIC) lassen die Standardeinstellungen gsm-ussd in seinen vorherigen Inkarnationen scheitern.

Was hat sich also seit Version 0.2.2 getan?

  1. Das Echo der seriellen Schnittstelle wird explizit ausgeschaltet, das Echo des Modems explizit eingeschaltet. Wie oben erwähnt gibt es Modem/SIM-Kombinationen, in denen beide Echos eingeschaltet sind, was zu einigen Problemen führt…
  2. Ursprüngliche Einstellungen der seriellen Schnittstelle werden auch bei Fehler oder Abbruch durch Ctrl-C restauriert.
  3. xussd fragt jetzt nur nach der PIN, wenn im ersten Anlauf festgestellt wird, dass sie benötigt wird. Bedenkt bitte, dass wie bei jeder SIM-Karte drei Falscheingaben zur Sperre führen, die per PUK gelöst werden muss!
  4. Es können mehrere USSD-Abfragen an der Kommandozeile angegeben werden, die dann sequentiell abgearbeitet werden.

Hier die Dateien zum Download:
http://linux.zum-quadrat.de/downloads/gsm-ussd_0.2.3-0.tar.gz
http://linux.zum-quadrat.de/downloads/gsm-ussd-0.2.3-0.noarch.rpm
http://linux.zum-quadrat.de/downloads/gsm-ussd_0.2.3-0_all.deb

Immer den aktuellsten Download und die Verweise auf ältere Versionen könnt ihr unter http://linux.zum-quadrat.de/downloads/index.html finden.

Der Vollständigkeit halber der Verweis auf das öffentliche Repository auf github.com:
http://github.com/JochenHoch2/gsm-ussd.git
oder
git://github.com/JochenHoch2/gsm-ussd.git

Wie immer wünsche ich Euch damit viel Spaß. Meldet Euch ruhig bei mir mit Erfolgen & Problemen!

Tschüß,
Jochen



gsm-ussd 0.2.2: Ein Release zu weit!

gsm-ussd Posted on Di, Mai 11, 2010 10:53:06

Grüße, Erdlinge!

Und weil’s so schön war, ein weiteres Release von gsm-ussd:
v0.2.2 ist raus.

Wie Euch vielleicht aufgefallen ist, gab es keine Benachrichtigung für Version 0.2.1. Was nicht daran liegt, dass ich nicht zählen kann, sondern daran, dass ich noch mal meinen eigenen Kopf vergesse… smiley Die Dateien sind auch zum Download verfügbar – ich habe nur vergessen, dies auch bekannt zu geben.

Was hat sich also seit Version 0.2.0 getan?

  • Einige weitere Modems wurden getestet. Da sich herausstellte, dass nicht nur das E160, sondern auch noch andere Huawei-Modems den PDU Modus für USSD-Abfragen benötigen, hat das Skript jetzt eine Liste zum Prüfen und um automatisch den richtigen Modus zu benutzen. Ein Override über die Optionen „–cleartext/–no-cleartext“ ist selbstverständlich weiter möglich.
  • USSD-Antwortcodes werden im Debug-Modus mit ausgegeben und ein Antwortcode von 1 auch mit „Further action needed“ gemeldet. Es gibt wohl provider, die über USSD Anwendungen implementieren, bei denen man eine Kette von USSD-Abfragen senden muss, die setzen dann eine 1 als Antwortcode. Weiteres Testen war mir da leider nicht möglich, da ich keinen Provider habe, der wo etwas anbietet, aber nun wird es wenigstens gemeldet.
  • Werden Netzwerk-/Gerätfehler als Zahlen gemeldet, übersetzt das Skript diese Zahlen in menschenverständlichen Text (in Englisch).
  • Vor dem Versenden der Abfrage checkt gsm-ussd nun, ob das Modem im Netzwerk angemeldet ist und bricht ab, wenn es 10 Fehlversuche dabei hatte oder feststellt, dass das Modem nicht willens/berechtigt ist, sich in ein Netz einzuklinken. Dadurch konnte auch der hartkodierte 10-Sekunden-Schlaf nach Eingabe der PIN entfernt werden.
  • Die Dokumentation wurde auf den letzten Stand gebracht und um (deutsche?) O2 USSD-Abfragen ergänzt.

Hier die Dateien zum Download:
http://linux.zum-quadrat.de/downloads/gsm-ussd_0.2.2-0.tar.gz
http://linux.zum-quadrat.de/downloads/gsm-ussd-0.2.2-0.noarch.rpm
http://linux.zum-quadrat.de/downloads/gsm-ussd_0.2.2-0_all.deb

Und in Wirklichkeit ist das Projekt ja eigentlich auf github.com:
http://github.com/JochenHoch2/gsm-ussd.git
or
git://github.com/JochenHoch2/gsm-ussd.git

Viel Spass damit und meldet Euch mit Erfolgen & Misserfolgen im Einsatz!

Tschö denn,
Jochen



gsm-ussd 0.2.2: Hopping one release!

gsm-ussd Posted on Di, Mai 11, 2010 10:28:23

Greetings, humans!

The wheel never stops, so there’s a new release of gsm-ussd available:
v0.2.2 is out.

As you might have noticed, there was no announcement for version 0.2.1. That does not mean that I can’t count, just that I’d forget my own head next if it wasn’t screwed on. smiley The files are available for download, too, I just never came around to announcing it…

So what changed since v0.2.0?

  • Some more modems were tested. As some other Huawei modems need PDU mode too, there’s now a list of these modems to check against and automatically choose the right USSD query mode.
  • USSD response codes are shown in debug mode, a USSD response of 1 is reported as „Further action needed“. Some providers seem to build applications around USSD queries that need more than one USSD query to complete. This is now at least reported, but as I have no provider which does something like this, no further testing was possible.
  • If network/equipment errors are reported as numbers, these are translated into an human-understandable error message (in English).
  • Before sending the USSD query, gsm-ussd checks if the modem is registered in a network an aborts if 10 checks show the modem to be unregistered or if it’s not willing/allowed to register. This removes the need for the hardcoded 10 second sleep after entering the PIN.
  • Documentation was updated and now includes some (German) O2 USSD queries.

Here are the downloadable files:
http://linux.zum-quadrat.de/downloads/gsm-ussd_0.2.2-0.tar.gz
http://linux.zum-quadrat.de/downloads/gsm-ussd-0.2.2-0.noarch.rpm
http://linux.zum-quadrat.de/downloads/gsm-ussd_0.2.2-0_all.deb

As usual the reminder that the real project is on github.com:
http://github.com/JochenHoch2/gsm-ussd.git
or
git://github.com/JochenHoch2/gsm-ussd.git

Have fun and please report back what works and what breaks!

Bye for now,
Jochen



Nächster Kandidat: ixconn

gsm-ussd Posted on Mo, Mai 10, 2010 21:30:05

Uuuund einen ganz speziellen Gruß an mein Brüderchen an dieser Stelle! Der ist zwar durch die Verwendung proprietärer Betriebssysteme geschlagen, erleichtert sich den Schmerz aber durch Einsatz von MWconn. Und das Programm hat mittlerweile einen kleinen Bruder, ixconn.

ixconn will eine Komplettlösung sein – Einwahl ins Internet, Anzeige verschiedener Statusdaten, USSD-Abfragen direkt vorgefertigt zur Guthabenabfrage, -aufladung, Homezone-Prüfung und so weiter.

Die Dokumentation (auch im PDF-Format direkt zum Download verfügbar) ist detailliert und nachvollziehbar. Leider schränkt sich die Software auf eine enge Betriebssystemwahl ein: Unterstützt wird Ubuntu x86. Die aktuelle Version 0.2 ist unter bzw. für Ubuntu 9.10 entstanden. Schon auf einem Kubuntu fehlen dem (laut ldd) statisch gebundenen Binary die libgnomeui-2.so.0 – so die Meldung beim Aufruf:

$ ldd /usr/bin/ixconn
not a dynamic executable
$ file /usr/bin/ixconn
/usr/bin/ixconn: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped
$ /usr/bin/ixconn
/usr/bin/ixconn: error while loading shared libraries: libgnomeui-2.so.0: cannot open shared object file: No such file or directory

Da eine Nachinstallation von libgnomeui-0 den halben GNOME-Desktop hinterherzieht, habe ich auf diesen Test erst mal verzichtet. Noch dazu, da es fraglich erscheint, ob ein x86-Binary mit der amd64-Library etwas anfangen kann. Zumindest im Paket „ia32-libs“ ist libgnomeui nicht enthalten.

Um es ganz klar zu sagen: Die oben angeführten Probleme liegen in der Auswahl meines Haupt-Desktops, eben KDE. Unter GNOME, wo die notwendigen Bibliotheken sowieso bereits installiert sind, wäre dies alles kein Problem. Auch die x86-Unterstützung mag Sinn machen, wenn man Netbooks als Zielgruppe ansieht. Ein 64-Bit-OS macht auf den kleinen Kisten sicherlich keinen Sinn. Wer jedoch einen „ausgewachsenen“ Laptop mit sich herumbuckelt, wird mit der Wahl der Architektur sicherlich hadern. Abhilfe scheint aber in Sicht: Über das Download-Forum von MWconn finden sich auch x64-Versionen des reinen ixconn-Binaries. Man kann also annehmen, dass es demnächst auch Pakete für ein 64-Bit Ubuntu geben wird.

Obwohl MWconn wie ixconn kostenlose Software ist, sind die Sourcen leider nicht zu haben. In der Windows-Welt durchaus üblich, mag das für andere ein Hinderungsgrund sein.

Bleibt zugegebenerweise der Eindruck, eigentlich keinen Eindruck bekommen zu haben. Mal sehen, ob ich im Rahmen einer Ubuntu-LiveCD nicht doch noch zu einem ixconn-Erlebnis kommen kann!



gammu: Kann’s auch!

gsm-ussd Posted on Mo, Mai 10, 2010 15:47:20

Unglaublich. Wenn’s mal regnet, dann gleich Ströme… B^)

Was ich damit sagen will? gammu kann auch USSDs versenden! Jedoch scheint der Umgang noch etwas hakelig zu sein. Eine erster Test mit einer ~/.gammurc mit Inhalt

[gammu]
port = /dev/ttyUSB1
connection = at

und dem Aufruf

gammu -c ~/.gammurc getussd ‚*100#‘

führt bei mir momentan nur zu Timeouts. Ich werde mir das später noch mal genauer ansehen und dann berichten.

Grüße,
Jochen



Ein Blick auf ussdq

gsm-ussd Posted on So, Mai 09, 2010 19:21:14

Bevor ich auch nur die ersten Versuche in Richtung gsm-ussd unternommen habe, gehorchte ich natürlich erst mal dem Imperativ der Faulheit und durchsuchte das Netz, ob nicht schon jemand mein Problem gelöst hat. Wie man sieht, ohne Erfolg. Kaum hat man aber seine Arbeit vollendet, kommt der Hinweis auf das Programm, das man ganz zu Anfang gesucht hat… In diesem Fall: ussdq.

Caveat lector: Da ich hier als Autor von gsm-ussd schreibe, muss jeder selbst wissen, ob er meine Argumente und Meinungen auch teilen will oder möchte.

Eine Ursache, weshalb ich das Programm nicht gefunden haben mag, scheint darin zu liegen, dass der Autor sein Projekt nicht bei freshmeat.net eingetragen hat. Zwar liegt das Programm auf sourceforge.net öffentlich verfügbar und eine Suche nach seinem Namen hat auch Erfolg, aber eine Suche mit naheliegenden Stichwörtern hat – zumindest bei mir – keinen Treffer erbracht. Schade eigentlich, denn so hat das Programm einen Benutzer weniger und einen „Konkurrenten“ mehr…

An Voraussetzungen benötigt das Programm die Rumtime-Umgebung mit der Netzkomponente von Gambas, einer VisualBasic-ähnliche Programmiersprache und IDE. Ist diese installiert, ist die Inbetriebnahme von ussdq leicht:

$ ./configure
$ make
$ sudo make install

Wer nicht direkt installieren will, findet nach dem „make“ das Gambas-„Binary“ unter ussdq/ussdq.gambas. Von dort aus läßt es sich auch problemfrei aufrufen. Eine Man-Page existiert leider nicht, aber das README und die Online-Hilfe helfen weiter:

Usage
-e, –encoding Encoding used for 8-bit characters. You can use any 8-bit encoding by iconv (see iconv-l).
-d, –dcs Method of coding ussd-response. Used when the dcs in the answer modem not defined (gsm7|8bit|ucs2
-n, –no-pdu Assume ascii instead of pdu (for response only)
-f, –force-dcs Use the specified dcs, rather than received from the modem.
-t, –decode-this Decoding this modem response (debug function)
-v, –verbose Verbose output
-i, –in-pdu Encoding query in the PDU format

Grundsätzlich funktioniert ussdq so mit jedem Modem, welches USSD-Anfragen im Klartext versteht und selbst in die Netzwerkpräsentation umsetzen kann und auch die Antworten mit entsprechenden Encoding-Hinweisen versieht. Über die Optionen kann man dann verlangen, dass die USSD-Abfrage im PDU-Format übergeben wird (-i/–in-pdu) oder dass die Rückmeldung nach Vorgabe (statt nach Modem-Angabe) decodiert wird (-f/–force-dcs, -d/–dcs). Besitzt man nun ein Modem, dass mit den Standard-Vorgaben nicht funktioniert, muss man probieren, was funktioniert.

Nach einigem Testen habe ich so mein E160 (dessen Eigenheiten ja ein schlichtes, per picocom abgesetztes AT-Kommando unmöglich machen) mit folgenden Optionen zum Laufen bekommen:

ussdq.gambas -i -f -d 8bit /dev/ttyUSB1 ‚*100#‘

Im Vergleich zu meinem eigenen Programm gefällt mir ussdq erst mal gar nicht schlecht. Schließlich tut es erfolgreich seinen Zweck. Auf den zweiten Blick jedoch offenbaren sich auch Nachteile: Die obige Kommandozeile funktioniert schon nicht mehr bei der USSD-Abfrage „*135#“ (eigene Telefonnummer bei D1). Die zwangsweise vorgegebene 8bit-Kodierung passt nicht mehr und muss weggelassen werden. Wie man es dreht und wendet: Es gibt keine Möglichkeit, das Kommando so anzugeben, dass es bei beiden Abfragen gleichermaßen funktioniert. Sicherlich ist das zu einem gewissen Teil auch Huawei oder D1 anzukreiden, aber ein Problemfall ist es trotzdem.

In technischer Hinsicht gefällt mir die zusätzliche Abhängigkeit zu Gambas2 nicht. Für die Implementierung meines Skripts habe ich mit Bedacht Perl ausgesucht, da es bei jeder Standard-Linuxinstallation vorhanden sein sollte. Das zusätzlich benötigte Modul Expect ist bei allen mir bekannten Distributionen im Standardumfang des Repositories enthalten, was bei Gambas2 leider nicht der Fall ist (RHEL/SLES).

Weiterhin ist die Dokumentation zu ussdq mangelhaft. Kennt man sich mit USSD-Abfragen, Modems, GSM-Zeichensatz und den verschiedenen Kodierungsformaten aus, kommt man über kurz oder lang zu einer für’s eigene Modem passenden Kombination. Fehlt einem das Wissen, steht man den Optionen einigermaßen ratlos gegenüber.

Zu guter Letzt empfinde ich persönlich heutzutage ein einfaches Tar-Archiv als Download für zu wenig. Zwar ist die Installation per Dreiklang „./configure && make && make install“ nicht sehr schwierig, arbeitet aber wieder am Paketmanagementsystem der Distribution vorbei.

Ich hoffe, dass Victor Sidorov seine Arbeit an ussdq weiter fortsetzt. Das Projekt scheint ja – wie auch gsm-ussd – recht jung und aktiv. Aber meine eigene Arbeit an gsm-ussd werde ich deswegen nicht einstellen.



Wie man gsm-ussd debuggt

gsm-ussd Posted on So, Mai 09, 2010 12:30:29

Hi da draußen,

nehmen wir mal an, jemand hat Euch von gsm-ussd erzählt, ihr habt’s ausprobiert und – nix funktioniert. Was tun?

Beim Debuggen helfen ein paar Optionen zu gsm-ussd. Keine Bange, „Debuggen“ klingt hier schlimmer als es ist: In erster Linie dreht es sich darum, zu erfahren, was hinter den Kulissen tatsächlich passiert.

Die Option „-d“ oder „–debug“ macht gsm-ussd ziemlich geschwätzig. Alle Aktionen, abgesetzten Kommandos, erkannten Antworten usw. werden dann mitprotokolliert. Dies hilft, die Stelle zu erkennen, an der etwas schiefläuft. Die Option „-l“ oder „–logfile„, die einen Dateinamen als weiteres Argument benötigt, schreibt den Chat zwischen Programm und Modem unverändert in die benannte Datei. So kann man erkennen, warum bestimmte Ereignisse vielleicht nicht erkannt werden.

Wenn man nun also ein Problem hat, ruft man gsm-ussd wie folgt auf:

gsm-ussd -d
-l chat.out <…Optionen nach Bedarf…> 2>&1 |
tee gsm-ussd.out

Dies zeigt den Debug-Output an, schreibt ihn zusätzlich in die Datei gsm-ussd.out und legt das Chatlog in der Datei chat.out an. Mailt mir diese Dateien, ich werfe dann einen Blick darüber und schaue nach, wo das Problem liegt.

Weitere interessante Informationen in einem Fehlerbericht wäre zusätzlich der Output von „lsusb„.

Grüße,
Jochen



How to debug gsm-ussd

gsm-ussd Posted on Sa, Mai 08, 2010 23:24:05

Hi everyone,

suppose someone told you about gsm-ussd, you tried it – and it doesn’t work as expected. Now what to do?

There are some option you can supply to get debugging output. Don’t worry, it sounds scarier than it is! Option „-d“ or „–debug“ will make gsm-ussd quite verbose; every step in communicating with the modem is reported. Option „-l“ or „–logfile“ with a filename as argument will write the chat between gsm-ussd and the modem into the named log file.

So, if you have a problem, try the following command:

gsm-ussd -d -l chat.out <…further options as needed> 2>&1 | tee gsm-ussd.out

This will show you the debug output and create two files: chat.out containing the chat log and gsm-ussd.out containing the debugging output. Mail these files to me; I promise to take a look.

Cheers,
Jochen



« VorherigeWeiter »