Ich habe zu dem hier aufgeführten Problem eine ganze Zeit lang suchen müssen. Aus diesem Grund habe gibt es hier eine Zusammenfassung. Da sehr viele Foren und dergleichen schon Vorwissen voraussetzen und ich mich schwer tat, hab ich alles nochmal “für Dummy’s wie mich” formuliert.
Was gibt es für ein Problem mit UMTS Sticks?
Ich bin im Besitz einer MultiSim SimCard. Also ich hab Quasi mehrere SimCards mit der gleichen Nummer. Eine davon hab ich in meinem Smartphone, die andere in meinem UMTS Stick ( Globetrotter Option 431 ).
Nun habe ich folgendes Problem: Sobald der UMTS Stick unter Strom ist ( ein aktives Hub reicht, es muss kein Rechner angeschlossen sein ) kann ich nicht mehr angerufen werden. Jeder Anruf wird vom UMTS Stick abgelehnt. Das ist wie als wenn man beim Handy die Rote Taste drückt.
Wie bringe ich meinen Stick dazu nicht die Rote Taste zu drücken?
So ein USB Stick ist ein Modem und wird mit sogenannten AT-Commandos konfiguriert.
Wie kann ich nun die AT Kommandos an meinen Stick schicken?
Als erstes muss man wissen, wie der Rechner den Stick anbindet. In vielen Internetseiten steht: /dev/ttyUSB0 und 1 in manchen steht auch /dev/tty/USB0, bei mir ist aber weder das Eine, noch das Andere vorhanden. Wie bekomme ich raus, was ich machen muss. Die Antwort ist recht einfach. Man sieht im Systemlog nach, was passiert wenn man den Stick einsteckt:
# tail -f /var/log/messages
Stick einstecken
… modem-manager[1086]: <info> (ttyHS1) opening serial port…
… modem-manager[1086]: <info> (ttyHS3) opening serial port…
… modem-manager[1086]: <info> (ttyHS2) opening serial port…
… modem-manager[1086]: <info> (ttyHS0) opening serial port…
Somit geht die Spur schon mal zu ttyHS*, nur welches davon ist richtig. Ich habe auf Recht einfache weise alles ausprobiert. Man sucht sich einen ATBefehl, welcher lediglich eine Information abruft und mit dem man nichts kaputt machen kann und testet alle durch.
man macht also 5 Terminals auf (root) und sieht sich in vier davon eines der tty’s an
# cat /dev/ttyHS0
# cat /dev/ttyHS1
# cat /dev/ttyHS2
# cat /dev/ttyHS3
Im fünften Terminal probiert man nun den den ausgewählten AT Befehl aus. Bei mir war es “AT I”, da er im BASIC Syntax vorhanden und mir Sinnvoll erschien. Also im fünften ist es nach und nach folgendes:
# echo -e “AT I\n\r” > /dev/ttyHS0
# echo -e “AT I\n\r” > /dev/ttyHS1
# echo -e “AT I\n\r” > /dev/ttyHS2
# echo -e “AT I\n\r” > /dev/ttyHS3
Scheinbar ist es bei manchen Systemen so, dass der Eingabe- und Ausgabekanal unterschiedlich ist, daher ist es besser immer alle zu sehen.
Bei mir ist die Ausgabe bei ttyHS0 gar keine. Bei ttyHS1 und 2 ist es folgende:
Manufacturer: Option N.V.
Model: GlobeTrotter HSUPA Modem
Revision: 1.8.0.0Hd (Date: Jan 14 2009, Time: 16:46:50)
NO CARRIER
Bei ttyHS3 folgende:
Manufacturer: Option N.V.
Model: GlobeTrotter HSUPA Modem
Revision: 1.8.0.0Hd (Date: Jan 14 2009, Time: 16:46:50)
OK
Da das ttyHS3 das einzige mit OK war, hab ich erstmal dieses weiter verwendet. Später haben alle ttys beim gleichen versuch alle OK ausgegeben. Wie man sein richtiges Terminal normalerweise rausbekommt ist mir nicht bekannt.
Gut dann hab ich den bei Tante Google gefundenen AT Code verwendet…
echo -e “AT_ODO=1\n\r” > /dev/ttyHS3
…und schon sollte ich wieder angerufen können während ich am Surven bin. Super. Den Stick abgesteckt an einem anderen Gerät angesteckt und… gleiches Problem wie vorher. Also was kann ich dagegen tun… der Code ist falsch.
In fast allen Foren steht “at_odo=1″ als Lösung. “at_odo?” gibt den aktuell Konfigurierten Wert aus. “at_odo” ist “Sprachservice aktiv”. Wenn der Sprachservice auf 1 gestellt ist, ist dieser nicht aktiv ( Wer auch immer sich das überlegt hat: 1 ist aus und 0 ist ein ). Das bedeutet, der Stick weiss das er nicht telefonieren kann und lehnt das Gespräch ab wodurch die Mailbox hingeht.Man muss dem Stick also mit “at_odo=0″ sagen, dass er telefonieren kann, dann lehnt er das gespräch nicht ab und lässt klingeln bis jemand hingeht…
Wenn ich nicht so müde wäre würde ich hier noch ewtas rumspielen, aber was solls, es funktioniert.
Andere Sticks haben laut dem Telefontreff-Forum folgende AT Codes:
- Option Wireless: AT_ODO=1 (ist falsch, siehe oben)
- Novatel Wireless: AT$NWRAT=0,1
- Huawei: AT^SYSCFG=2,2,3FFFFFFF,1,1
- Sonst: AT+CGCLASS=”CG”
- Sierra Wireless: AT!SELMODE=01 (bis jetzt ungetestet)
Weiterführende Information:
- Windows-Anwender kann eventuell damit geholfen werden. Das Telekom PDF ist allerdings etwas fehlerhaft (Speed Modus statt Speech Modus usw)
- Es gibt diverse Tools hierfür :
comgt, picocom, MWconn (Win) ixconn (Linux)
UPDATE (20.02.2013):
Ein neuer UMTS Stick ist im Haus (Huawei E5) und… selbes Problem wieder.
Der PS und CS Modus lässt sich aber auch hier mit AT Kommandos umschalten.
Linux
Unter Fedora 18 funktioniert das Ganze wie oben angegeben, jedoch muss man das Modem erst dem System nahe bringen:
- Modul laden:
modprobe usbserial
Kann sein, dass es nicht notwendig ist. Am Ende war das Modul nicht mehr geladen.
- USB Geräte Auflisten
lsusb
- USB Modus umschalten:
usb_modeswitch -v 12d1 -p 1c20 -H
Hier muss die richtige VendorID verwendet werden (siehe lsusb)
Der Rest funktioniert mit Linux wie oben beschrieben. AT Code ist der von Huawei.
MacOS
Hier mal was neues auf tonitonic.de => Eine Anleitung für MacOS. Ich habs am Anfang nicht hinbekommen unter Linux den USB Modus Umzuschalten (danke dafür Daniel B.) und hab das Problem unter Mac gelöst, da hier mein tty da war.
- Am USB Port einstecken und warten
- Terminal starten
- sudo screen /dev/tty.HUAWEIMobile-Pcui
- AT^SYSCFG=2,2,3FFFFFFF,1,1
- Enter (es kommt ein OK)
- Screen beenden: (Ctrl + a) k y
Die letzte Ziffer schaltet den Modus um. Mit AT^SYSCFG=2,2,3FFFFFFF,1,2 lässt sich der Hotspot wieder in seinen Grundzustand zurückschalten.