[Frage] FritzBox 7270 mit Vodafone LTE Turbobox verbinden?

Es wurde lediglich die Kommunikation des LTE-Modems LG FM300 (Vodafone TurboBox) mit dem Mehrzweckrouter Vodafone EasyBox 803 zum Zwecke des Internetzugangs untersucht. Nach dem Einschalten verhaelt sich das FM300 auf der Netzwerkleitung passiv. Die EasyBox pingt zumaechst auf VLAN mit ID 99 die TurboBox an und fuehrt dann auf VLAN 99 folgenden Telnet Dialog mit AT-Befehlen auf Port 10000: (ungerade Zeilen sendet EasyBox, gerade Zeilen TurboBox)

AT%LG_STS
%LG_STS: 0, 1, 3, 0, -150, 0, 0 (Status ohne PIN, ohne ausreichende Feldstaerke und ohne Internetempfang)

AT%LG_ICCID
%LG_ICCID:xxxxxxxxxxxxxxxxxxxx

AT%LG_IS_SIM_LOCK
%LG_IS_SIM_LOCK:1

AT+CPIN="xxxx" (xxxx ersetzen durch die PIN der Vodafone SIM Karte)
OK

AT+CIMI
xxxxxxxxxxxxxxx

AT%LG_GMR
%LG_GMR: FM300, xxxxxxxxxxxxxxx, FM300-00-V11c-262-02-JUN-29-2011, REV_1.0+VDFA.1.0

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"
OK

es folgt das sog. "Geschnatter", jede Sekunde die Statusabfrage

AT%LG_STS
%LG_STS: 0, 0, 3, 1, -101, 2, 0 (Status bei aktiviertem Internetzugang)

und ca. alle 33s zusaetzlich dieser Dialog:

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"
OK

Der Status enthaelt Zustandsdaten ueber erhaltene PIN, freigeschalteten Internetzugang, VOIP Zugang und die LTE Empfangsfeldstaerke. Werte von -150 bedeuten "kein Empfang", bei -101 war die Kontrollanzeige der TurboBox gruen.

Die Turbobox benutzt das VLAN mit der ID 99 nur zur Steuerung, die Internetdaten laufen ueber VLAN mit ID 132. Es genuegt ein DHCP Discover Aufruf auf VLAN 132, um von Vodafone eine Internet IP Adresse zugewiesen zu bekommen, dann das VLAN 132 Geraet als Standard Gateway in die Routertabelle und fertig.

Fuer die Nachbildung des EasyBox Dialogs habe ich ein schlichtes expect Skript geschrieben, dazu eine Startdatei fuer das init.d Verzeichnis. Ist aber alles noch ein sehr frueher Versuch. Verbindungsabbrueche, der 24h-Abbruch, Fehlerzustaende, Softwareupdate, Modemreset usw. habe ich bisher noch nicht mitgeschnitten. Ich lasse das Steuerskript mal einfach weiterlaufen. Seit 13h laeuft es mit aktiviertem und nutzbarem Internetzugang.

Den Zugriff zu dem 55km von mir entfernten Server mit dem virtuellen Router mache ich ueber ein zusaetzliches EasyBox - TurboBox Paar und ein OpenVPN. Vorbereitet ist das Einschleifen eines Hubs zwischen diese beiden Boxen und das laengerfristige Mitschneiden des Verkehrs einer ganzen Woche auf VPN 99 mit WireShark auf dem Server.

Leider ist das kein vordringliches Vorhaben und meine Kunden lassen mir dafuer nicht allzuviel Zeit ....
Die Skripte werde ich hier nicht veroeffentlichen, bin aber per E-Mail ansprechbar.
 
Respekt!

Die betreffende Kommunikation hab ich jetzt in Kashras Mitschnitt auch gefunden :)

Jetzt gilt es "nur" das für FritzBox / Freetz noch umzusetzen. Nur dafür fehlen mir die nötigen Programmierkenntnisse...
 
Hallo ombraun,

habe einen ähnlichen Mitschnitt wie du Ihn aufgezeichnet hat. Allerdings habe ich nicht nur die Zeile mit
AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"

sondern zusätzlich noch die Zeile

AT%LG_CGDCONT=2,"IP","fixed.voice.vodafone.de"

enthalten. Das bedeutet für mich es werden zwei Verbindungen aufgebaut - eine als reine Datensession (für Internettraffic) und die zweite für den Sprachanteil.

Ausserdem habe ich nicht deinen Hinweise bzgl. den VLAN ID's in meinem Trace gesehen - ansonsten sieht es sehr ähnlich aus. Woran machst du die VLAN ID's fest, diese tauchen in meinem Trace nicht auf!:confused:
 
[Edit frank_m24: Mehrere Beiträge zusammengefasst. Man kann seine Beiträge auch editieren.]
Hallo heinoforever,

Entschuldigung fuer die spaete Antwort: wie oben beschrieben: ".. nur .. zum Zwecke des Internetzugangs untersucht."

Die Vodafone easy-box liefert natuerlich zusaetzlich zum Internetzugang einen Telefonanschluss. Beim Aufbau der Verbindung zum LTE-Modem FM300 und nach Erreichen der erforderlichen FM300 Flags wird er, wie von dir beschrieben, durch Senden von AT%LG_CGDCONT=2,"IP","fixed.voice.vodafone.de" an das Modem FM300 angemeldet. FM300 und easy-box verwenden dann untereinander das VLAN 232 fuer die SIP Verbindung. Nach Senden von DHCPDISCOVER auf VLAN 232 erhaelt die easy-box (von z.B. dem Server 192.168.201.2) eine IP-Adresse in einem privaten 10.x.x.x Netz (z.B. 10.98.172.180) und die Adressen von zwei DNS-Servern in einem privaten 10.x.x.x Netz (z.B. 10.218.247.134 und 10.218.247.102). Mit einem SRV Request (_sip._udp.<Telefon-Vorwahl, z.B.069>.sip.lte.arcor.de) an einen dieser beiden DNS-Server erhaelt die easy-box dann Namen und IP-Adresse des zustaendigen SIP-Servers (z.B. sbc.stg9-10-nbg1.sip.lte.arcor.de und 10.218.247.236).

Sollte ich mal Zeit dafuer haben, werde ich mit einem IP-Telefon oder mit einem snom ONE Server versuchen, eine SIP VOIP Verbindung mit diesen Daten aufzubauen. Fuer meinen Kunden war nur die Internetverbindung zum Aufbau eines VPNs in seine Firma wichtig, der Rest ist Kuer. Sein Linux LTE-Router laeuft jetzt seit ueber 14 Tagen stabil.

Wenn du Wireshark (z.B. Version 1.65) zum Paketeschnueffeln verwendest, findest du ein Fenster, das die Beschreibung eines von dir ausgewaehlten Pakets enthaelt, typischerweise mit "Frame xxx: xxx Bytes ..." beginnt, in der zweiten Zeile "Ethernet II ..." und dann in der dritten z.B. "802.1Q Virtual LAN, ..... ID: 232". Das ist dann die Beschreibung eines Pakets aus dem VLAN 232.

easy-box und FM300 benutzen also VLAN 99 zur Steuerung, VLAN 132 fuer Internetzugang und default gateway und VLAN 232 fuer die VOIP Verbindung.

[Beitrag 2:]
Hallo Kashra,

erst jetzt Antwort auf deine Anfrage vom 2012-02-18: ich gebe das von mir geschriebene expect Skript, das die Vodafone easy-box ersetzt, bei Interesse gerne weiter, auch wenn es noch etliche dringend auszufuellende Codeluecken enthaelt. Es laeuft bei mir unter RHEL 5.7 (CentOS 5.7, Scientific Linux 5.7).Bitte per PM anfragen.
 
Ließe sich die LTE-Internetverbindung nicht auch über einen eingesteckten LTE-Stick (z.B. Huawei E398/Vodafone K5005) herstellen oder erfordern die Vodafone "LTE zu Hause" SIM-Karten irgendwelche sonderbaren Einwahlprozeduren? Solange man die Vodafone-Telefonie nicht nutzt, wäre ein Stick vielleicht ein stromsparenderer workaround.
 
Nein, über die Sticks geht das nicht wirklich. Eine Inetverbindung wäre zwar machbar, aber nicht mit dem 50 Mbit Speed und nicht mit einer "echten" IP, sondern nur im NAT-Netz von Vodafone, da die Sticks den Zugangspunkt fest in der Firmware integriert haben. Aber ich habe es dank ombraun´s Hilfe hinbekommen auch ohne die Easybox, also nur mit der Turbobox eine Einwahl hinzubekommen. Und ich muss sagen, es funktioniert bestens.

So gehts: Man konfiguriert für seine Netzwerkkarte zwei VLANs mit der ID 99 und 132 und gibt der Netzwerkkarte VLAN ID 99 die IP 10.0.0.3. Auf der VLAN ID 132 lässt man einen DHCP Client lauschen, also unter Windows müsste man da nix einstellen und unter Linux das Interface für DHCP konfigurieren.
Jetzt logt man mit telnet auf 10.0.0.1 port 10000 ein also einfach "telnet 10.0.0.1 10000" eingeben.

// Zuvor empfiehlt es sich noch die PIN Prüfung der Sim Karte auszuschalten. Wenn man nicht gerade in einer WG wohnt dürfte hier auch kein Sicherheitsrisiko durch entstehen, da die Karte ja in der Turbobox steckt und man sie für gewöhnlich ja nicht mit aus dem Haus nimmt.

dann den Status abfragen:

AT%LG_STS

man sollte dann eine Rückmledung bekommen die in etwa so aussieht:

%LG_STS: 0, 1, 3, 0, -150, 0, 0

als nächstes die Verbindung aufbauen mit folgendem Befehl:

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"

anschließend mit

AT%LG_STS

kontrollieren.

Jetzt sollte da wo vorher "-150" stand eine andere, größere Zahl stehen, also z.B. "-90"

Der DHCP Client auf der VLAN ID 132 sollte nun in der Lage sein eine IP Adresse vom Vodafone DHCP zu beziehen. Fertig.
Die Verbidung bleibt solange erhalten bis eine technische Störung sie unterbricht. Mit dem Befehl

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"

kann man sie jederzeit wieder aufbauen. Der Befehl kann auch regelmäßig "vorsorglich" z.B. per Skript übermittelt werden.

Jetzt kannst Du nach Belieben Deine Verbindung ins Internet konfigurieren, also z.B. Deine Internettelefone über einen SIP Provider Deiner Wahl nutzen, individuelle Firewall und Weiterleitungsregeln erstellen und wirklich sehr schnelle Downloads machen.
Es ist sogar möglich Quality of Service bzw. DSCP zu nutzen und individuell zu konfigurieren. Gerade für SIP Telefonie und Online-Gaming sehr nützlich.

Viel Spaß damit.

Ach ja, das LG FM300 (Turbobox) ist übrigens ein wirklich sehr gutes Modem. Ich habe zwei externe Antennen (Dachantennen) angeschlossen und es bietet eine sehr stabile Verbindung und ermöglicht den Anschluss von zwei bzw. einer Doppelantenne.
 
Zuletzt bearbeitet:
Hi,

Als kleine Ergänzung (da ich heute selber das Vergnügen hatte, das FM300 direkt anzusteuern):

Die DHCP Leasetime sollte nicht zu groß gewählt werden (3600s funktioniert derzeit). Das hiesige
FM300 hat die unangenehme Eigenart, auf ein DHCP Renew (DHCPREQUEST zur Unicastadresse) nicht zu reagieren. Erst nach Ablauf der Rebind-Zeit mit einen REQ auf die Broadcastadresse gibt es wieder Antwort. Das wäre nicht schlimm, wenn er den Client
nicht nach einer mir nicht bekannten Zeit rausschmeißt und fortan weder auf DHCP noch auf die Kontrollverbindung reagiert.

In so einem Fall kann man aber zumindest über den Telnet-Zugang in der Busybox einen reboot veranlassen.

MfG
MB
 
Hallo,

habe auch das LG FM300 im Einsatz. Kommunikation und Verbindungsaufbau auf VLAN99 klappt wunderbar.

Allerdings habe ich Probleme beim DHCPREQUEST, bzw. mit einem IP Konflikt.
Router soll eine PFSense werden, also eine FreeBSD Firewall/Router Distri.
Lass ich dort auf einem Interface mit VLAN132 auf eine DHCP Adresse warten, erhalte ich folgende Konfig:

Code:
IP: 178.14.XXX.91
Subnet mask: 255.255.255.0
Gateway: gleich IP 178.14.XXX.91

DNS1: 195.50.140.118
DNS2: 195.50.140.182

Kurz nachdem das Interface die DHCP Adresse erhalten hat sehe ich im Syslog:

Code:
 [B]kernel: arp: 00:1c:62:xx:82:b7 is using my IP address 178.14.xxx.91 on em1_vlan132![/B]

Hinter der MAC verbirgt sich ein LG Electronics Gerät, also vermutlich die LTE FM300 Turbobox.
Das scheint die PFSense durcheinander zu bringen, da sowohl das WAN Interface (DHCP Client) als auch das LTE Modem die gleiche Adresse bekommen.

Der Fehler ist dann der, dass über das LTE Interface keine Daten fließen, und ein Ping nach draußen so aussieht:

Code:
Ping output:
PING 8.8.8.8 (8.8.8.8) from 178.14.xxx.91: 56 data bytes
36 bytes from localhost (127.0.0.1): [B]Time to live exceeded[/B]
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 044f   0 0000  01  01 c0e1 178.14.xxx.91  8.8.8.8 

36 bytes from localhost (127.0.0.1): [B]Time to live exceeded[/B]
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 a3ca   0 0000  01  01 2166 178.14.xxx.91  8.8.8.8 

36 bytes from localhost (127.0.0.1): [B]Time to live exceeded[/B]
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 3072   0 0000  01  01 94be 178.14.xxx.91  8.8.8.8 


--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

Mache ich stattdessen auf einer debian Maschine ein Interface mit vlan132 kriege ich die gleiche IP, es gibt keinen ARP Konflikt, und ich bekomme Daten nach draußen. Funktioniert also.
Was läuft denn da unter FreeBSD anders?
Jemand eine Idee?

Danke & VG
Micha
 
Hallo,

auch ich bin an einer Lösung interessiert bei der man Vodafone LTE - Turbobox - Fritzbox 7270 miteinander konfiguriert und in vollem Umfang (VOIP, DynDNS, VPN,..) nutzen könnte.

Seit dem letzten Update sind ja noch mal einige Monate vergangen, eventuelle News....?!

1. Geht es (Internet & Telefon) nun irgendwie oder nicht...?
Die Antwort darauf kommt bei mir noch nicht so wirklich aus den Beiträgen heraus.

2. Wenn ja, wie? - eventuell hat jemand eine Anleitung..?

Die ja schon mehrfach (auch in anderen Foren) angesprochene Problematik bezüglich Zugangsdaten von Vodafone Privatkunden, sollte ja zu umgehen sein.

Siehe:
http://www.arcor-user-forum.de/sprachpasswort-der-easybox-802-auslesen-anleitung-2448/
http://www.arcor-user-forum.de/sprachpasswort-aus-easyboxen-auslesen-ultimative-methode-4550/

Über fundierte Antworten würde ich mich sehr freuen..?!

Gruß
TC330
 
Zuletzt bearbeitet:
1. Geht es (Internet & Telefon) nun irgendwie oder nicht...?
Die Antwort darauf kommt bei mir noch nicht so wirklich aus den Beiträgen heraus.

Ja geht, ich hab das heute "per Hand" getestet. Ich werde demnächst eine ausführliche Anleitung für Ubuntu schreiben.

Vielen Dank nochmal an ombraun.
 
Guten abend,

bin neu hier und es ist sehr lobendswert wie Ihr Euer Wissen teilt.

Ich haben genau den gleichen Fall wie in diesem Tread beschrieben.
Lte Turbobox und EB 803 vorhanden, genau wie die 7270.
Wurde die EB gerne dazwischen weg haben...
... die sagt mir überhaupt nicht zu.
Wäre es möglich das jemand da eine Anleitung für Leien wie mich schreibt!?
Schön wäre der Internetzugang, die Telefonie und wenn Dyndns weiterhin über die FB laufen könnte war das auch klasse.

Danke im voraus.
 
Hi. Ich versuche gerade die Turbobox an einen OpenWRT-Router zum laufen zu bekommen.

Ich habe die VLANs wie beschrieben eingerichtet. Wenn die TB von der Easybox initialisiert wurde und ich sie anschließend an den Router anschließe, funktioniert es auch schon. Das eigentliche Problem liegt bei der Steuerung.

Wenn ich "telnet 10.0.0.1 10000" aufrufe (sollte da ein Prompt kommen?) und anschließend "AT%LG_STS<Enter>" eingebe erhalte ich keine antwort.

Über "telnet 10.0.0.1" kann ich mich auf der Turbobox einloggen. "netstat -l" zeigt an das auf port 10000 gelauscht wird. Offensichtlich mache ich irgendwas falsch.

Würde mich freuen wenn mir jemand weiterhelfen könnte.
 
LG FM300 (TurboBox) - weitere AT-Kommandos

Schönen guten Morgen,

Ich habe 2 Fragen / Anregungen:

1.)
ein Teil der im LG FM300 verwendeten AT-Befehle scheinen ja LG-speziefisch zu sein

AT%LG_STS

----> %LG_STS: 0, 1, 3, 0, -150, 0, 0

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"

Kennt ihr Quellen, in welchen diese LG-AT-Befehle spezifiziert / dokumentiert sind ?

Bzw. hat jemand schon mal mit Standard-AT-Befehlen experimentiert und z.B.

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"

ersetzt durch Standard:

AT+CGDCONT=1,"IP","fixed.data.vodafone.de"

Der Befehl wird scheinbar problemlos angenommen - funktioniert aber dann noch die LTE-Verbindung ?
--> Ich kann leider (noch) nicht testen, da ich noch keine LTE-taugliche Sim habe.

Auch die folgenden Befehle werden angenommen und mit OK bestätigt:

AT +CGATT?
AT +CGATT=?

AT +CGACT?
AT +CGACT=?

AT +CGPADDR?
AT +CGPADDR=?


2.)
lässt sich das FM300, zusätzlich zu Vodafone, auch für weitere LTE-Provider einsetzen - bei gleicher Frequenz natürlich.
Kennt jemand den "CGDCONT - Aufbau" für:

- Telekom
- O2

Besten Dank und viele Grüße an das Forum
 
Hab mein Problem gefunden. Hab Wireshark laufen lassen, wobei mir aufgefallen ist das <Enter> nur \n überträgt, benötigt wird natürlich \r\n.
Der Busybox-Version von telnet fehlt die Option zum umschalten. Mit
Code:
echo -ne 'AT%LG_STS\r\n' | nc 10.0.0.1 10000
konnte ich zumindest in Wireshark sehen, dass es funktioniert.
 
So hab heute endlich auch den Asterisk vernünftig zum laufen bekommen. Hier mal mein Setup:

* FM300 über original Ethernetkabel an Pandaboard
* Ubuntu 12.10 auf dem Pandaboard
* Pandaboard macht WLAN AP
* Pandaboard hat Asterisk-Server für VOIP

FM300
/etc/init/fm300d.conf:
Code:
# fm300 - LTE connection via LG FM300
#
# This service talks to the LG FM300 LTE modem to establish an internet connection. 

description	"fm300"

start on net-device-added INTERFACE=vlan99
stop on net-device-removed INTERFACE=vlan99

respawn
respawn limit 10 5

exec /usr/bin/expect /usr/local/sbin/fm300d

Das expect-Skript habe ich versucht etwas modularer zu gestalten:
/usr/local/sbin/fm300d:
Code:
#!/usr/bin/expect -f
#
# (C) 2012 Hard+Soft Braun
# Otto-Michael Braun <[email protected]>
# (C) 2013 Manuel Stahl <[email protected]>
# 2012-02-16 initial version
# 2012-03-04 beta test version
# 2012-12-18 modifications for Ubuntu
#
# expect script for LG FM300 LTE-Modem and Ubuntu
#
set DATE            /bin/date
set KILL            /bin/kill
set IFUP            /sbin/ifup
set IFDOWN          /sbin/ifdown
set VCONFIG         /sbin/vconfig
set PING            /bin/ping
set SLEEP           /bin/sleep
set TELNET          /usr/bin/telnet
set FM300D_CONF     /etc/default/fm300
#
set FM300_IF_CTRL   vlan99
set FM300_IF_DATA   vlan132
set FM300_IF_VOIP   vlan232
set FM300_IP        10.0.0.1
set FM300_PORT      10000
set FM300_PIN       ""
set FM300_AREACODE  ""
set FM300_TELNUMBER ""
set TIMER_33        100
set TIMER_30        30
#

proc LOG MESSAGE {
  exec /usr/bin/logger -p kern.info -t fm300d "$MESSAGE"
  puts "$MESSAGE"
}

#
source $FM300D_CONF
# todo: pin should be checked as four digit number
if { [string compare $FM300_PIN ""] == 0 } {
  LOG "FM300_PIN not defined in $FM300D_CONF"
  exit
}

if { [string compare $FM300_AREACODE ""] == 0 } {
  LOG "FM300_AREACODE not defined in $FM300D_CONF"
  exit
}

if { [string compare $FM300_TELNUMBER ""] == 0 } {
  LOG "FM300_TELNUMBER not defined in $FM300D_CONF"
  exit
}

#
set LG_CGDCONT1    "AT%LG_CGDCONT=1,\"IP\",\"fixed.data.vodafone.de\"\r"
set LG_CGDCONT2    "AT%LG_CGDCONT=2,\"IP\",\"fixed.voice.vodafone.de\"\r"
set LG_CIMI        "AT+CIMI\r"
set LG_CPIN        "AT+CPIN=\"$FM300_PIN\"\r"
set LG_GMR         "AT%LG_GMR\r"
set LG_ICCID       "AT%LG_ICCID\r"
set LG_IS_SIM_LOCK "AT%LG_IS_SIM_LOCK\r"
set LG_STATUS      "AT%LG_STS\r"
#

proc fm300_unlock_sim TELNET_ID {
  global LG_ICCID LG_IS_SIM_LOCK LG_CPIN LG_CIMI LG_GMR
  set spawn_id $TELNET_ID
  send $LG_ICCID
  expect {
    timeout { LOG "timeout sending LG_ICCID"; break }
    -indices -re "%LG_ICCID:(.*)" {
      set EXP_LIST [split $expect_out(0,string) : ]
      set MY_ICCID [lindex $EXP_LIST 1]
      LOG "iccid: $MY_ICCID"
    }
  }

  send $LG_IS_SIM_LOCK
  expect {
    timeout { LOG "timeout sending LG_IS_SIM_LOCK"; break }
    -indices -re "%LG_IS_SIM_LOCK:(.*)" {
      set EXP_LIST [split $expect_out(0,string) : ]
      set MY_SIMLOCK [string trim [lindex $EXP_LIST 1]]
      LOG "sim locked: $MY_SIMLOCK"

#     check sim locked
      if { [string compare $MY_SIMLOCK "1"] == 0 } {
        send $LG_CPIN
        expect {
          timeout { LOG "timeout sending LG_CPIN"; break }
          "OK" {
             LOG "PIN set successfully"
          #   todo: handling wrong PIN !!!
          }
        }
      }
    }
  }

  send $LG_CIMI
  expect {
    timeout {
      LOG "timeout sending LG_CIMI"
      break
    }
    \[0-9]*\n {
      set MY_IMEI $expect_out(0,string)
#     (todo: check string length)
      LOG "IMEI: $MY_IMEI"
    }
  }

  send $LG_GMR
  expect {
    timeout {
      LOG "timeout sending LG_GMR"
      break
    }
    -indices -re "%LG_GMR:(.*)" {
      set MY_GMR $expect_out(0,string)
      LOG "GMR: $MY_GMR"
    }
  }
}


proc fm300_status TELNET_ID {
  global IFUP LG_STATUS LG_CGDCONT1 LG_CGDCONT2 FM300_IF_DATA FM300_IF_VOIP
# telnet status from lg fm300 every second
  while 1 {
    set spawn_id $TELNET_ID
    set timeout 3
    send $LG_STATUS
    expect {
      eof {
        LOG "telnet exited"
        return
      }
      timeout {
        LOG "timeout sending LG_STATUS"
        return
      }
      -indices -re "%LG_STS:(.*)" { 
#        LOG "$expect_out(0,string)"
        set EXP_LIST [split $expect_out(0,string)]
        set STAT_1 [string trim [lindex $EXP_LIST 1] ,]
        set STAT_2 [string trim [lindex $EXP_LIST 2] ,]
        set STAT_3 [string trim [lindex $EXP_LIST 3] ,]
        set STAT_4 [string trim [lindex $EXP_LIST 4] ,]
        set STAT_5 [string trim [lindex $EXP_LIST 5] ,]
        set STAT_6 [string trim [lindex $EXP_LIST 6] ,]
        set STAT_7 [string trim [lindex $EXP_LIST 7] ,]

#       check second value of lg status (sim card locked)
        if { [string compare $STAT_2 "1" ] == 0 } { fm300_unlock_sim $TELNET_ID }

        if { [string compare $STAT_2 "0" ] == 0 &&
             [string compare $STAT_6 "0" ] == 0 } {
          send $LG_CGDCONT1
          expect {
            timeout { LOG "timeout sending LG_CGDCONT1"; return }
            "OK" { LOG "LG_CGDCONT1 sent successfully" } 
          }
        }

#             [string compare $STAT_3 "3" ] == 0 &&
        if { [string compare $STAT_2 "0" ] == 0 &&
             [string compare $STAT_6 "2" ] == 0 &&
             [string compare $STAT_7 "0" ] == 0 } {
          send $LG_CGDCONT2
          expect {
            timeout { LOG "timeout sending LG_CGDCONT2"; return }
            "OK" { LOG "LG_CGDCONT2 sent successfully" } 
          }
        }

        if { $STAT_5 > -150 } {
          if {[string compare $STAT_6 "2" ] == 0} {
            LOG "enable $FM300_IF_DATA (DATA)"
            catch {exec $IFUP $FM300_IF_DATA}
          } else {
#            LOG "shutdown $FM300_IF_DATA (DATA)"
#            catch {exec $IFDOWN $FM300_IF_DATA}
          }
          if {[string compare $STAT_7 "2" ] == 0} {
            LOG "enable $FM300_IF_VOIP (VOIP)"
#            catch {exec $VCONFIG add eth0 232}
            catch {exec $IFUP $FM300_IF_VOIP}
          } else {
#            LOG "shutdown $FM300_IF_VOIP (VOIP)"
#            catch {exec $IFDOWN $FM300_IF_VOIP}
          }
        }

      }
    }
    sleep 2
  }
}

proc fm300_connect {} {
  global KILL TELNET FM300_IP FM300_PORT
# telnet connection took more than 10s to answer 2012-02-17
  set timeout 40
  spawn $TELNET $FM300_IP $FM300_PORT
  set TELNET_PID NONE
  expect_after {
    LOG "telnet terminated abnormally"
#    eof break
    }
  expect {
    "Escape" {
      LOG "telnet lg fm300 on port 10000 successful"
      set TELNET_PID [exp_pid]
      fm300_status $spawn_id
      catch { exec $KILL $TELNET_PID }
      LOG "finished telnet session"
    }
    "Unable"  {
#     telnet lg fm300 failed
      LOG "timeout starting telnet session, waiting 10s"
# TODO correctly close telnet
    }
  }
}


LOG "starting fm300d"
#LOG "using pin $FM300_PIN"
  
# ping lg fm300 every 10s if not available
spawn $PING $FM300_IP -i 10
set PING_ID $spawn_id

while 1 {
  set spawn_id $PING_ID
  expect {
    "Unreachable" {
      LOG "timeout ping fm300d"
#      continue
    }
    "time" {
      LOG "lg fm300 available on net"
      fm300_connect
      LOG "exit telnet"
    }
  }
}
interact

VLAN support:
/etc/modules:
Code:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

# VLAN support
8021q

/etc/network/interfaces:
Code:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

# LM300 CTRL
auto vlan99
iface vlan99 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    vlan-raw-device eth0

# LM300 DATA
iface vlan132 inet dhcp
    post-up iptables-restore /etc/iptables_nat.cfg
    vlan-raw-device eth0

# LM300 VOIP
iface vlan232 inet dhcp
    pre-up grep -q 232 /proc/net/vlan/config || vconfig add eth0 232
    post-up route add -net 10.0.0.0/8 vlan232
    vlan-raw.device eth0

# WLAN AP
auto wlan0
iface wlan0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    hostapd /etc/hostapd/hostapd.conf
Offende Punkte:
* Weiß jemand, wie man dem vlan99 sagt, dass darüber nur die 10.0.0.1 erreichbar ist?
* Das vlan232 muss ich immer erst explizit anlegen, die anderen gehen automatisch

NAT:
/etc/iptables_nat.cfg:
Code:
# Generated by iptables-save v1.4.12 on Wed Dec 19 11:03:02 2012
*mangle
:PREROUTING ACCEPT [17525:4191654]
:INPUT ACCEPT [13864:2524681]
:FORWARD ACCEPT [3661:1666973]
:OUTPUT ACCEPT [19970:20710420]
:POSTROUTING ACCEPT [23631:22377393]
COMMIT
# Completed on Wed Dec 19 11:03:02 2012
# Generated by iptables-save v1.4.12 on Wed Dec 19 11:03:02 2012
*nat
:PREROUTING ACCEPT [247:16361]
:INPUT ACCEPT [168:11621]
:OUTPUT ACCEPT [134:9082]
:POSTROUTING ACCEPT [134:9082]
-A POSTROUTING -s 192.168.0.0/24 -o vlan132 -j MASQUERADE
COMMIT
# Completed on Wed Dec 19 11:03:02 2012
# Generated by iptables-save v1.4.12 on Wed Dec 19 11:03:02 2012
*filter
:INPUT ACCEPT [13863:2524629]
:FORWARD ACCEPT [1835:1280475]
:OUTPUT ACCEPT [19969:20710272]
-A FORWARD -s 192.0.0.0/8 -j ACCEPT
COMMIT
# Completed on Wed Dec 19 11:03:02 2012

/etc/sysctl.conf:
Code:
...
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
...

WLAN AP:
/etc/hostapd/hostapd.conf
Code:
ssid=<ssid>
interface=wlan0
driver=nl80211
channel=1
hw_mode=g
...

DHCP und DNS:
Gerade DNS ist etwas tricky, da uns über den DHCP-Request von vlan232 ein weiterer DNS-Server mitgeteilt wird. Der beantwortet aber nur die Anfragen für xxx.sip.lte.arcor.de. Mit folgender Konfiguration für dnsmasq geht es, wobei man sicherstellen muss, dass zuerst das vlan132 und danach das vlan232 eingerichtet werden.

/etc/dnsmasq.conf
Code:
# Configuration file for dnsmasq.
domain-needed
bogus-priv
strict-order
server=/sip.lte.arcor.de/10.218.247.134
server=/10.in-addr.arpa/10.218.247.134
local=/local/
interface=wlan0
dhcp-range=192.168.0.100,192.168.0.200,72h
dhcp-authoritative

VOIP:
* Asterisk aus den Paketquellen installiert

/etc/asterisk/sip.conf:
Code:
[general]
srvlookup=no
transport=udp
localnet=192.168.0.0/255.255.0.0
localnet=10.0.0.0/255.0.0.0
externrefresh=600
register => <telnumber>:<voice-password>:<telnumber>@<vorwahl>.sip.lte.arcor.de/<telnumber>

[arcor]
type=peer
context=incoming
username=<telnumber>
fromuser=<telnumber>
host=<vorwahl>.sip.lte.arcor.de
fromdomain=<vorwahl>.sip.lte.arcor.de
secret=<voice-password>
canreinvite=no
insecure=invite
dtmfmode=rfc2833
;disallow=all ; TODO: Hat hier jemand eine vollständige Liste?
;allow=g726
;allow=gsm
;allow=alaw
;allow=ulaw

[android-phone](!)
type=friend
context=users
host=dynamic
secret=<geheim>
canreinvite=no
mailbox=<telnumber>@default
deny=0.0.0.0/0
permit=192.168.0.0/24


[phone-A](android-phone)

[phone-B](android-phone)

/etc/asterisk/extensions.conf:
Code:
[globals]
AREACODE=<vorwahl>

[incoming]
exten => <telnumber>,1,Dial(SIP/phone-A&SIP/phone-B,20)
exten => <telnumber>,n,VoiceMail(<telnumber>@default,u)

[dialout]
; international
exten => _+XXXX.,1,Dial(SIP/arcor/${EXTEN})
exten => _+XXXX.,n,Congestion

; national
exten => _0XX.,1,Dial(SIP/arcor/${EXTEN})
exten => _0XX.,n,Congestion

; local
exten => _XXX.,1,Dial(SIP/arcor/${AREACODE}${EXTEN})
exten => _XXX.,n,Congestion


[users]
include => dialout
exten => 6000,1,VoiceMailMain(<telnumber>@default,s)
exten => 6001,1,Dial(SIP/phone-A,20)
exten => 6002,1,Dial(SIP/phone-B,20)

Das sollten die wichtigsten Einstellungen gewesen sein.

Gruß,
Manuel
 
  • Like
Reaktionen: Hobo2k
Hallo,
ich würde auch gerne die easybox ausmerzen. dazu habe ich noch ein paar fragen.

1) muss die easybox zusätzlich zu dem "alternativen" Linuxrouter auch noch über einen switch mit an der turbobox hängen, oder kann ich die turbobox direkt mit dem linuxrouter verbinden?

2) weiter vorne wird berichtet, dass man nun volle QoS funktionalität hat, diese option ist ja in der Easybox ausgegraut, kann es auch sein, dass damit auch die Trafficlimitierung aufgehoben ist, oder wird diese Providerseitig geregelt?

3) @thymythos, danke für deine Scriptbeispiele.
Eine frage habe ich dazu noch. Wozu dient dieser Teil deines fm300d Script:

Code:
source $FM300D_CONF
# todo: pin should be checked as four digit number
if { [string compare $FM300_PIN ""] == 0 } {
  LOG "FM300_PIN not defined in $FM300D_CONF"
  exit
}

if { [string compare $FM300_AREACODE ""] == 0 } {
  LOG "FM300_AREACODE not defined in $FM300D_CONF"
  exit
}

if { [string compare $FM300_TELNUMBER ""] == 0 } {
  LOG "FM300_TELNUMBER not defined in $FM300D_CONF"
  exit
}

Sind diese Scripte auf Ubuntu Basis "Plug & Play" oder muss etwas bestimmtes am System angepasst werden?


Vielen Dank schon im Voraus.

Viele Grüße
Patrick
 
Hallo,
ich würde auch gerne die easybox ausmerzen. dazu habe ich noch ein paar fragen.

1) muss die easybox zusätzlich zu dem "alternativen" Linuxrouter auch noch über einen switch mit an der turbobox hängen, oder kann ich die turbobox direkt mit dem linuxrouter verbinden?
Die Easybox entfällt komplett.

2) weiter vorne wird berichtet, dass man nun volle QoS funktionalität hat, diese option ist ja in der Easybox ausgegraut, kann es auch sein, dass damit auch die Trafficlimitierung aufgehoben ist, oder wird diese Providerseitig geregelt?
Das ist natürlich auf Seiten des Providers geregelt. Volle QoS-Funktionalität bedeutet, man hat die Möglichkeit seinen Linuxrouter mit QoS zu konfigurieren, automatisch passiert da aber nichts.

3) @thymythos, danke für deine Scriptbeispiele.
Eine frage habe ich dazu noch. Wozu dient dieser Teil deines fm300d Script:

Code:
source $FM300D_CONF
# todo: pin should be checked as four digit number
if { [string compare $FM300_PIN ""] == 0 } {
  LOG "FM300_PIN not defined in $FM300D_CONF"
  exit
}

if { [string compare $FM300_AREACODE ""] == 0 } {
  LOG "FM300_AREACODE not defined in $FM300D_CONF"
  exit
}

if { [string compare $FM300_TELNUMBER ""] == 0 } {
  LOG "FM300_TELNUMBER not defined in $FM300D_CONF"
  exit
}

Sind diese Scripte auf Ubuntu Basis "Plug & Play" oder muss etwas bestimmtes am System angepasst werden?
Das fm300d-Skript bindet die Datei "/etc/default/fm300" ein. Dort kann man die PIN, den Areacode und die Telefonnummer konfigurieren.
Als "Plug & Play" würde ich das noch nicht bezeichnen, aber das waren die wesentlichen Dateien, die ich im Vergleich zu einem Stock-Ubuntu angepasst habe.

Gruß,
Manuel
 
Hallo,

so ich habe es doch alleine geschafft.

Jetzt läuft die Turbobox auch an meiner Fritzbox.


Ich muss nur noch sehen, wie ich die Verbindungsscripte in der Fritzbox umsetze.


Vielen Dank auf alle Fälle für die ganze Arbeit mit den Telnetbefehlen

Gruß sunfire
 
Zuletzt bearbeitet:
OpenWRT auf EasyBox mit LTE TurboBox

Hallo zusammen,

vielen Dank für die vielen Informationen hier im Forum.

Ich möchte gerne die Easybox 803 behalten und nur deren Firmware gegen OpenWRT tauschen, da ich Strom sparen und auch gerne die VoIP Funktionen der Easybox weiter nutzen möchte.

OpenWRT scheint es in der aktuellen Version auch für die EasyBox zu geben:
http://wiki.openwrt.org/toh/astoria/arv752dpw22
http://downloads.openwrt.org/attitude_adjustment/12.09/lantiq/danube/

Hat das schon mal jemand erfolgreich gemacht?

Als erstes muss natürlich die LTE-Verbindung hergestellt werden.
Um die Abhängigkeiten so gering wie möglich zu halten, habe ich das expect skript in bash umgeschrieben.
Code:
#!/bin/bash
#
# (C) 2013 Lars Täuber
# based on the ubuntu expect script from:
# (C) 2012 Hard+Soft Braun Otto-Michael Braun <[email protected]>
# and
# (C) 2013 Manuel Stahl <[email protected]>
#
# shell script for LG FM300 LTE-Modem and OpenWRT on EasyBox 803 connecting to Vodafone
#
#

 IFUP='/sbin/ifup'
SLEEP='/bin/sleep'

   FM300_CONF='/etc/default/fm300'
FM300_IF_DATA=vlan132
FM300_IF_VOIP=vlan232
     FM300_IP=10.0.0.1
   FM300_PORT=10000
     FM_PAUSE=30

function LOG {
  /usr/bin/logger -p kern.info -t fm300 "$1"
  echo "$1"
}


#
# read the config
. $FM300_CONF


#
# check the values
[[ ${#FM300_PIN} -ne 4 ]]   && { LOG "no valid FM300_PIN defined in $FM300_CONF"; exit 1 }
[[ $FM300_AREACODE == 0 ]]  && { LOG "no FM300_AREACODE defined in $FM300_CONF" ; exit 1 }
[[ $FM300_TELNUMBER == 0 ]] && { LOG "no FM300_TELNUMBER defined in $FM300_CONF"; exit 1 }


LG_CGDCONT1='AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"\r'
LG_CGDCONT2='AT%LG_CGDCONT=2,"IP","fixed.voice.vodafone.de"\r'
    LG_CIMI="AT+CIMI\r"
    LG_CPIN='AT+CPIN="'$FM300_PIN'"\r'
     LG_GMR="AT%LG_GMR\r"
   LG_ICCID="AT%LG_ICCID\r"
LG_SIM_LOCK="AT%LG_IS_SIM_LOCK\r"
  LG_STATUS="AT%LG_STS\r"


function fm300_send_cmd {
  echo $1
  read -t 1 || return $?
  [[ "${REPLY}" != "OK" ]] && return 1
} <>/dev/tcp/$FM300_IP/$FM300_PORT 1>&0



function fm300_get_var {
  RETURN_VAR=""
  echo $1
  read -t 1 || return $?
  [[ -z "$REPLY" ]] && return 1
  RETURN_VAR="$REPLY"
} <>/dev/tcp/$FM300_IP/$FM300_PORT 1>&0



function fm300_unlock_sim {
  fm300_get_var $LG_SIM_LOCK   || return $?
  MY_SIMLOCK="${RETURN_VAR##*:}"

  if [[ $MY_SIMLOCK -ne 0 ]]
  then
    fm300_send_cmd $LG_CPIN    || return $?
    fm300_get_var $LG_SIM_LOCK || return $?
    [[ $MY_SIMLOCK -ne 0 ]]    && return 1
  fi
}

function fm300_identify {
  fm300_get_var $LG_ICCID || return $?
  MY_ICCID="${RETURN_VAR##*:}"

  fm300_get_var $LG_CIMI  || return $?
  MY_IMEI="${RETURN_VAR}"

  fm300_get_var $LG_GMR   || return $?
  MY_GMR=(${RETURN_VAR#*:})
}


function fm300_get_status {

# STATUS[2] = SIM card locked
# STATUS[5] = signal strength
# STATUS[6] = data channel open
# STATUS[7] = voip channel open

  FM300_STATUS=("")
  FM300_SIM_LOCK=""

  fm300_get_var $LG_STATUS || return $?
  FM300_STATUS=(${RETURN_VAR})
} <>/dev/tcp/$FM300_IP/$FM300_PORT 1>&0



function fm300_open_data_channel
{
  [[ ${FM300_STATUS[6]} -eq 0 ]]
  then
    PAUSE=3
    fm300_send_cmd $LG_CGDCONT1 || return 1
  fi
}



function fm300_open_voip_channel
{
  if [[ ${FM300_STATUS[7]} -eq 0 ]]
  then
    PAUSE=3
    fm300_send_cmd $LG_CGDCONT2 || return 1
  fi
}


function fm300_ifup
{
  if [[ $PAUSE -ne $FM300_PAUSE -a ${FM300_STATUS[5]%%,*} > -150 ]]
  then
    LOG "enable data interface"
    $IFUP $FM300_IF_DATA || return 5
    LOG "enable voip interface"
    $IFUP $FM300_IF_VOIP || return 5
  fi
}


LOG "start connecting to fm300"
#LOG "using pin $FM300_PIN"

fm300_identify          || { LOG "can't connect to fm300"        ; exit 1 }

while [ "endless" ]
do
  PAUSE=$FM300_PAUSE
  fm300_get_status        || { LOG "can't get FM300 status"      ; exit 2 }
  fm300_unlock_sim        || { LOG "can't unlock sim"            ; exit 3 }
  fm300_open_data_channel || { LOG "can't open data channel"     ; exit 4 }
  fm300_open_voip_channel || { LOG "can't open data channel"     ; exit 5 }
  fm300_ifup              || { LOG "problems enabling interfaces"; exit 6 }
  $SLEEP $PAUSE
done


Das ist allerdings noch nicht getestet.

Dann müsste ich irgendwie diese TXS Anschlüsse (TAE oder ISDN) zum laufen bringen. Da gab es mal für eine ältere OpenWRT-Version ein Programm: https://code.google.com/p/danube-voip/

Was meint Ihr dazu?
Evtl. sollte ich ein eigenes Thema aufmachen?

Danke und Grüße
Lars


Edit1: update script
 
Zuletzt bearbeitet:
Hallo liebes ip-phone Forum,

ich habe das gleiche Problem wie "The Freestyler", Post 48.

Zum Hintergrund: Ich nutze einen Asterisk Server, als Telefonanlage. Dort möchte ich dann direkt die VOIP Daten nutzen, ohne Easybox dazwischen. Diese blockt ankommende Anrufe. Ich kann vom Asterisk rauswählen, aber rein wird gleich von der Easybox angenommen. Entsprechende Ports (5060) kann man auch nicht weiterleiten. (Meldung wird für Systemzwecke genutzt!... oder so ähnlich)

Vorgeschaltet vor den Asterisk ist ein IPFire Firewall-Router. Dort ist dann auch Easybox bzw. nur Turbobox angeschlossen.

Ich habe jetzt auf dem IPFire, genau wie von Kashra (Post 46) die Turbobox angeschlossen und zwei Vlans (99, 132) eingerichtet (erstmal ohne VOIP bzw. VLAN 232) zum testen.

telnet zur Box klappt (SIM abfrage habe ich auf einem Handy ausgeschaltet, Status auslesen klappt und auch das aufbauen der Datenverbindung klappt.

AT%LG_CGDCONT=1,"IP","fixed.data.vodafone.de"
OK

Danach leitet die LED Grün an der Turbobox. Und die Statusabfrage zeit danach -89 statt -150 an.
Jetzt will ich mit einer DHCP Abfrage auf VLAN 132 eine IP-Adresse erhalten. Diese erhalte ich auch 47.xxx.xxx.xxx. Allerdings wird beim checken des DHCPclients festgestellt, dass ein Netzwerkgerät diese IP-Adresse auch schon hat (die Turbobox). Und so wird die Adresse nicht endgültig zugewiesen.

Als DHCP Client nutzt IPFire dhcpcd. Nicht wie bei den meisten anderen Linux Distributionen dhclient. Damit klappt es nämlich. Habe ich kurz durch anschließen der Turbobox an den Asterisk Server getestet.

Bei "The Freestyler" war ja auch das Problem, dass er mit Freebsd eventuell auch einen anderen DHCPClient benutzt hat.

Hat jemand eine Ahnung wie man IPFire bzw dhcpcd dazu überreden kann, ohne IP Konflikt eine Verbindung zur Turbobox aufzubauen. Oder liegt es gar nicht am DHCPClient. Sondern an einer anderen Sache, die ich übersehen habe.

Ich werde das LOG des dhcpcd nachliefern, kann in dem Moment logischerweise aber nicht ins Internet, daher habe ich es jetzt nicht parat.

Viele Grüße

Kristian
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.