[HOWTO] 7170 mit UMTS Stick

fusel

Neuer User
Mitglied seit
13 Jan 2006
Beiträge
26
Punkte für Reaktionen
0
Punkte
1
[Howto] UMTS/GPRS Internetzugang mit der Fritzbox 7170 und dem USB Surftick E160 von Huawei

Nachdem ich von einigen Leuten gefragt worden bin wie ich den Internetzugang über die Fritzbox 7170 und einen UMTS Stick
realisiert habe, habe ich mich entschlossen ein kleines HowTo zusammenzuschreiben.

Das wichtigste Vorweg:
Diese Anleitung beschreibt nur wie es bei mir funktioniert. Bei den vielen unterschiedlichen Konfigurationen die es so gibt kann ich für keinerlei Funktion oder Fehlfunktion garantieren.
Ich lehne jedefalls jegliche Verantwortung audrücklich ab !
Die Nachahmung geschied ausdrücklich auf euer EIGENES RISIKO !
Insbesondere sollte auf die korrekte Einstellung des APN geachtet werden, sonst kann es ja nach Mobilfunktarif SEHR TEUER werden.
Grundlegende Linux und Freetz Kenntnisse sowie eine Funktionsfähige Build Umgebung sind Vorraussetzung.
Wahrscheinlich wird es noch viel Verbessungspotetial geben. Verbesserungsvorschläge sind ausdrücklich Willkommen, also her damit !


1. Grundvoraustzung

-Fritz Box 7170 (andere sollten evtl. auch möglich sein)

-Freetz stable 1.1 (andere versionen ungetestet)

-UMTS UBS-Stick (E160) andere sollten auch funktionieren sofern es
Linux Treiber gibt die eine AT Schnittstelle haben

-Angegebene Pfade liegen grundsätzlich unterhalb der Freetz Buildumgebung

2. Kernelmodul "option" einbinden
-in der Datei "kernel/Config.in" in dem Menu "drivers" folgendes hinzufügen:
Code:
	config FREETZ_MODULE_option
		bool "option.ko"
		select FREETZ_MODULE_usbserial
		default n

-danach:
Code:
        make kernel-menuconfig
aufrufen und unter
-> Device Drivers -> USB Support -> USB Serial Converter support -> <M> USB Option PCMCIA serial driver anwählen

-danach die Freetz Konfiguration mit
Code:
	make menuconfig
aufrufen und unter Advanced Options -> Kernel Module -> Drivers folgdende Optionen anwählen:

[*] ppp-async
[*] ppp-deflate
[*] ppp-generic
[*] slhc
[*] option
[*] usbserial
(wenn nicht schon automatisch gewählt)

3. -Verzeichniss erstellen "root/etc/ppp"

-Symlink root/ppp/resolv.conf nach root/etc/resolv.conf erstellen für die DNS Namensauflösung

-Datei erstellen: root/etc/ppp/3g.ppp
Code:
/dev/ttyUSB0
460800
idle 10000
lock
crtscts
modem
noauth
usepeerdns
replacedefaultroute
defaultroute
noipdefault
noccp
nobsdcomp
novj
user "egal"
password "egal"
connect "/sbin/chat -V -E -f /etc/ppp/3g.chat"
nodetach

-Datei erstellen: root/etc/3g.chat
Code:
ABORT   BUSY
ABORT   'NO CARRIER'
ABORT   ERROR
REPORT  CONNECT
TIMEOUT 10
""      "AT&F"
OK      "ATE1"
OK      'AT+CGDCONT=1,"IP","$APN"'
SAY     "Einwahl...."
TIMEOUT 10
OK      "ATD*99#"
CONNECT ' '

-Paket comgt crosscompilieren und das Binary "gcom" nach root/sbin kopieren

-Paket ppp crosskompilieren und das Binary "pppd" und "chat" nach root/sbin kopieren

Kleiner Tip: Wenn man keine Lust auf Crosskompilieren hat kann man sich die Vorkompilerten Binarys vom OpenWRT Projekt (AR7) nehmen. (aus den .ipk extraieren)

4. Wenn man möchte kann man ein root/etc/hotplug ein script anlegen oder modifizieren das die Kernelmodule automatisch beim einstecken des Sticks lädt. Ich habe dazu das Script storage angepasst. Weil das Script von AVM stammt werde ich es hier auch nicht posten. Dieser Schritt ist optional.

5. Zum Schluss braucht man nur noch ein Script das die Einwahl steuert:
z.b root/sbin/umts
Code:
#!/bin/sh
####################################################
#rmmod vfat										# Optional durch /etc/hotplug ersetzt
#rmmod fat										# Optional durch /etc/hotplug ersetzt
#rmmod nls_cp437								# Optional durch /etc/hotplug ersetzt
#rmmod nls_iso8859-1							# Optional durch /etc/hotplug ersetzt
#rmmod sd-mod									# Optional durch /etc/hotplug ersetzt
#rmmod usb-storage								# Optional durch /etc/hotplug ersetzt
#rmmod scsi_mod									# Optional durch /etc/hotplug ersetzt 
# modprobe option								# Optional durch /etc/hotplug ersetzt
# modprobe ppp-async							# Optional durch /etc/hotplug ersetzt
#####################################################
rm /var/tmp/avm-resolv.conf				
ln -sf /etc/resolv.conf /var/tmp/avm-resolv.conf	# Symlink fuer AVM/DNS
export COMGTPIN="1234"							# Sim-Pin  *ToDO aus WebIF
export APN="surfo2"								# APN	   *ToDo aus WebIF
/sbin/gcom -d /dev/ttyUSB0 PIN						# PIN setzten		
#/sbin/set_3g-gprs								# Optional UMTS vor GPRS verwenden
/sbin/pppd file /etc/ppp/3g.ppp					# Einwahlscript
Wichtig ist das vor der "modprode option" die evtl. geladendenen Module vom USB Storage entladen werden sonst kann es passieren das die module für den UMTS Stick nicht richtig funktionieren. Nachdem der Treiber geladen ist können evtl. die Storage Treiber nachgelden werden. Der COMGTPIN und der APN muss nach eigenen Vorgaben angepasst werden.

So sieht es aus wenn es dann funktioniert:
Code:
/var/mod/root # /sbin/umts
SIM ready
Waiting for Registration..(120 sec max)
Registered on Home network: "o2 - de",2
Signal Quality: 16,99
OK
AT&F
OK
ATE1
OKEinwahl....
AT+CGDCONT=1,"IP","surfo2"
OK
ATD*99#
CONNECTchat:  Jan 01 01:04:41 CONNECT
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
CHAP authentication succeeded
CHAP authentication succeeded
kernel does not support PPP filtering
Could not determine remote IP address: defaulting to 10.64.64.64
replacing old default route to dsl [0.0.0.0]
local  IP address 10.*.*.*
remote IP address 10.64.64.64
primary   DNS address 193.*.*.*
secondary DNS address 193.*.*.*

ToDo: PIN,APN,Signalstärke und Ein-, Auswahl über Weboberfläche, Überprüfung der Firewallfinktionalität

Viel Spass damit
Gruß fusel
 
Zuletzt bearbeitet:
Vielen danke! Bei mir funktioniert es leider noch nicht so ganz. Aber der Reihen nach:
zu 1) ich hab es mit einer 7170 und dem aktuellen Trunk ausprobiert
zu 2) wir komplett ersetzt durch meinen angehängten Patch. Es muss nur unter "Webinterfaces" das pppd-cgi ausgewählt werden. Evtl noch "make kernel-dirclean && make busybox-dirclean"
zu 3)
pppd wird auomatisch mitgebaut
chat wird als BusyBox-Applet mitgebaut
comgt fehlt noch
Das Verzeichnis /etc/ppp/peers wird durch den Patch nach /tmp/flash/ppp/peers verlinkt. Die Skripte liegen dann im Flash und sind veränderbar. Man kann dann auch mir "pppd call FILE" die entsprechende Verbindung anwählen.

Nun zu meinen Problem. Wenn ich den Stick einstecke, sehe ich dies
Code:
kernel: usb 1-1: new full speed USB device using ahci and address 3
kernel: option 1-1:1.0: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB0
kernel: SCSI subsystem initialized
kernel: Initializing USB Mass Storage driver...
kernel: usbcore: registered new driver usb-storage
kernel: USB Mass Storage support registered.
kernel: usb 1-1: USB disconnect, address 3
kernel: option ttyUSB0: Option 3G data card converter now disconnected from ttyUSB0
kernel: option 1-1:1.0: device disconnected
kernel: usbcore: deregistering driver usb-storage
kernel: usb 1-1: new full speed USB device using ahci and address 4
kernel: option 1-1:1.0: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB0
kernel: option 1-1:1.1: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB1
kernel: option 1-1:1.2: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB2
kernel: option 1-1:1.3: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB3
kernel: SCSI subsystem initialized
kernel: Initializing USB Mass Storage driver...
kernel: usbcore: registered new driver usb-storage
kernel: USB Mass Storage support registered.

und der Stick leuchtet nicht, weder grün noch blau. Wie sieht es bei dir aus?

Ein Anwahl ergibt
Code:
# pppd call 3g nodetach
pppd[1983]: pppd 2.4.4 started by root, uid 0
pppd[1983]: Connect script failed
pppd[1983]: Exit.

EDIT: Obsoleten Patch gelöscht
 
Zuletzt bearbeitet:
Hallo Cuma,

bei mir leuchet der Stick (am anfang grün blinkend) sobald die Box mit Spannung versorgt ist. ich weiß nicht ob dein Stick 100% baugleich mit meinem ist (Medion S4011). Die Blinkfrequenz/Farbe wechselt dann je nach Initalisierungsstufe. Es könnte sein das dein Stick nicht genügend Spannung aus dem USB Port bekommt. Das könnte man mit einem externen USB-Hub mit eigener Spannungsversorgung ausprobieren. Vielleicht hilft es auch den Stick schon vor dem einschalten einzustecken (Ich lasse Ihm immer drin). Aus deinem Log sehe ich das die USB-Mass-Storage Treiber vor dem Modemtreiber geladen werden. Bei mir funktioniert es nicht wenn vor dem laden der Modemmodule die USB-Mass-Storage Treiber (sd_mod,usb_storage,scsi_mod) geladen sind. Dann erstmal mir
Code:
rmmod vfat
rmmod fat	
rmmod nls_cp437
rmmod nls_iso8859-1
rmmod sd-mod
rmmod usb-storage
rmmod scsi_mod

und danach dann:
modprobe option
modprobe ppp_async
Es sieht zwar aus als währen die Module korrekt geladen aber es funktioniert dann nicht. (Damit habe ich auch schon viel Zeit verbracht !)
 
So, heute blink der Stick. Hab ihn mit einem Verlängerungskabel an die Box angeschlossen, er hat wohl mechanisch nicht ganz gepasst :-/ Unter Windows zeigt der Stick 500mA Verbrauch an, also das Maximum bei dem es noch funktionieren sollte. Einen aktiven Hub hab ich noch nicht ausprobiert. Ich glaube das problem liegt darin, dass der Stick einen Micro-SD Slot und eine Datenpartiotion als CD-Rom Emulation hat und deshalb die Massstorage-Treiber geladen werden. Hier mal ein paar Ausgaben:

Code:
 # lsmod
Module                  Size  Used by    Tainted: P
sch_sfq                 5088  4
sch_llq                 8896  1
sch_tbf                 5888  1
kdsldmod              878208  4
usbahcicore            26064  0
capi_codec            143040  0
isdn_fbox_fon4        899840  1 capi_codec
ubik2                  85440  2 capi_codec,isdn_fbox_fon4
tiatm                 112544  1 ubik2
jffs2                 108800  1
Piglet                 10656  0
usbcore               115760  2 usbahcicore
ipt_limit               1856  2
ipt_LOG                 7328  5
ipt_REJECT              4800  10
iptable_filter          2112  1
ip_tables              21088  4 ipt_limit,ipt_LOG,ipt_REJECT,iptable_filter
 

 # modprobe option
 # modprobe cdc-acm
 # modprobe ppp_async

kernel: usbserial: Unknown parameter `option'
kernel: usbcore: registered new driver usbserial
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic
kernel: usbcore: registered new driver usbserial_generic
kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for Option 3G data card
kernel: usbcore: registered new driver option
kernel: drivers/usb/serial/option.c: Option Card (PC-Card to) USB to Serial Driver: v0.4
kernel: usbcore: registered new driver cdc_acm
kernel: drivers/usb/class/cdc-acm.c: v0.23:USB Abstract Control Model driver for USB modems and ISDN adapters
kernel: mcfw: group 0.0.0.0: query cpmac:0 10sec
kernel: CSLIP: code copyright 1989 Regents of the University of California
kernel: PPP generic driver version 2.4.2



 # lsmod
Module                  Size  Used by    Tainted: P
ppp_async              10048  0
crc_ccitt               1664  1 ppp_async
ppp_generic            27584  1 ppp_async
slhc                    7040  1 ppp_generic
cdc_acm                11984  0
option                  7328  0
usbserial              28736  1 option
sch_sfq                 5088  4
sch_llq                 8896  1
sch_tbf                 5888  1
kdsldmod              878208  4
usbahcicore            26064  0
capi_codec            143040  0
isdn_fbox_fon4        899840  1 capi_codec
ubik2                  85440  2 capi_codec,isdn_fbox_fon4
tiatm                 112544  1 ubik2
jffs2                 108800  1
Piglet                 10656  0
usbcore               115760  5 cdc_acm,option,usbserial,usbahcicore
ipt_limit               1856  2
ipt_LOG                 7328  5
ipt_REJECT              4800  10
iptable_filter          2112  1
ip_tables              21088  4 ipt_limit,ipt_LOG,ipt_REJECT,iptable_filter

Soweit also ok. Wenn ich das Modem jetzt einstecke blinkt es in Intervallen 2x grün blinken (eingeschaltet) und danach in Intervallen 1x blau (umts eingebucht).
Ausgabe dazu:
Code:
kernel: usb 1-1: new full speed USB device using ahci and address 6
kernel: option 1-1:1.0: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB0
kernel: SCSI subsystem initialized
kernel: Initializing USB Mass Storage driver...
kernel: usbcore: registered new driver usb-storage
kernel: USB Mass Storage support registered.

kernel: usb 1-1: USB disconnect, address 6
kernel: option ttyUSB0: Option 3G data card converter now disconnected from ttyUSB0
kernel: option 1-1:1.0: device disconnected
kernel: usbcore: deregistering driver usb-storage
kernel: usb 1-1: new full speed USB device using ahci and address 7
kernel: option 1-1:1.0: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB0
kernel: option 1-1:1.1: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB1
kernel: option 1-1:1.2: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB2
kernel: option 1-1:1.3: Option 3G data card converter detected
kernel: usb 1-1: Option 3G data card converter now attached to ttyUSB3
kernel: SCSI subsystem initialized
kernel: Initializing USB Mass Storage driver...
kernel: usbcore: registered new driver usb-storage
kernel: USB Mass Storage support registered.

Aufbau einer Wählverbindung ergibt immernoch "Connect script failed"
 
Du kannst mal versuchen 2 Telnet verbindungen aufzumachen und auf der einen:

Code:
cat /dev/ttyUSB0

und auf der anderen:

Code:
echo "ATZ" > /dev/ttyUSB0
einzugeben, dann sollte das folgendes auf der 1 Konsole herrauskommen:
Code:
/var/mod/root # cat /dev/ttyUSB0
ATZ


OK
Wenn das OK nicht kommt dann sind die Treiber nicht richtig geladen. Ich würde dann testhalber in der etc/hotplug/storage alle modprobe zu den Storagetreibern auskommerntieren so das diese keinesfalls am start geladen werden. Der USB Host ist in dieser hinsicht nach meiner ansicht recht anspruchsvoll.

PS: Wofür benutzt du das modul cdc-acm und wie integriere ich dein patch in den trunk ?
 
Zuletzt bearbeitet:
Das cdc-acm Modul hatte ich für versuche mit meinem Handy. Das ATZ funktioniert nur manchmal. Aus dem storage hatte ich alle modprobe gelöscht.
Ausgabe bei mehrmaligem "echo "ATZ" > /dev/ttyUSB0"
Code:
ATZ


OK

ATZA


NO CARRIER

ATZAA


NO CARRIER

ATZAA


NO CARRIER

ATZA


NO CARRIER

Es wird wohl manchmal ein "A" angehängt?!
 
Das hängt warscheinlich mit der Console zusammen ist bei mir auch so. Aber grundlegend scheint es ja zu funktionieren. Was sagt den die logdatei wenn du das script startest ?
 
Die Einwahl funktioniert nun! Ursache war das "chat" Programm. Im angehängten Patch wird nun das chat von pppd benutzt. Das Modem funktioniert bei mir auch wenn die usbstoreage Treiber schon geladen sind. Die Konfiguration kann man per Webinterface ändern, Verbindungsauf/abbau noch nicht. Per Konsole: "pppd call dun"
Kann jemand über die Änderungen in der pppd.mk schauen?

Hier habe ich ein paar AT Befehle für GSM-Modems gefunden:
Code:
Signal:
# echo "AT+CSQ" > /dev/ttyUSB0
+CSQ: 12,99

Netz
#echo "AT+COPS?" > /dev/ttyUSB0
+COPS: 0,0,"Vodafone.de",2

Pin
# echo "AT+CPIN?" > /dev/ttyUSB0
+CPIN: READY

Empfang
echo "AT+CSQ" > /dev/ttyUSB0
+CSQ: 12,99
Wie kann man die denn am besten über das Webinterface abrufen? Ein "cat /dev/ttyUSB0" ist da nicht möglich

EDIT: Obsoleten Patch gelöscht
 
Zuletzt bearbeitet:
Sieht gut aus. Im cgi brauchst du den Pfad nicht setzen. Das sollte libmodcgi machen.

Fehlt in deinem Patch nicht noch der Symlink von /etc/ppp? Oder ist der im pppd-Package?

MfG Oliver
 
Hab nachgeschaut, fast alle rc-Skripte setzten den Pfad:
Code:
 # l /usr/lib/cgi-bin/*.cgi|wc -l
19
 # grep ^PATH /usr/lib/cgi-bin/*.cgi|wc -l
18

Wo das /etc/ppp herkommt, konnte ich nicht nachvollziehen. Evtl hängt dies mit pptpd zusammen. Bei mir gibt es den Link jedenfalls:
Code:
 l /etc/ppp
lrwxrwxrwx    1 root     root           12 Oct 25 14:59 /etc/ppp -> /mod/etc/ppp
 
Hm, okay. Die libmodcgi setzt den Pfad wohl doch nicht. Aber warum muss der Pfad in den cgi-Skripten gesetzt werden!? Naja, ist vieleicht Off-Topic hier...

MfG Oliver
 
Ich hab's einfach kopiert :-]
 
gcom

Hi,

ich bin grad am basteln, jedoch gibts ein kleines Problem das ich irgendwie nicht lösen kann:

Code:
/sbin/umts: line 17: /sbin/gcom: not found

Wo finde ich denn das passende "gcom"?? (Am besten mit cross compiler prefix angaben :) )


Dann sollte es denk ich klappen :)


Thx schon mal im vorraus
 
Das steht doch oben. Lesen? Oder mach den Pin aus
 
cuma Das steht doch oben. Lesen? Oder mach den Pin aus

Das kann man auch netter sagen! Und nicht solche inkompetenten Post schreiben... Ohne PIN kann jeder... :groesste:

Wenn du lesen würdest, wüsstest du auch, das in diesem Post Fehler und wiedersprüche sind...

1. Wenn du mal comgt cross compiliert hättest, wüsstes du auch, das es keine gcom binary gibt!
2. Sondern eine comgt binary! :mad:

3. Außerdem:
...
...
Code:
connect "/sbin/chat -V -E -f /etc/ppp/3g.chat"

-Datei erstellen: root/etc/3g.chat
:confused: :confused: :confused: :confused: :confused:

Findet die Datei nicht, da er die 3g.chat im /etc/ppp Verzeichnis haben will...... :confused:


Braucht nix mehr schreiben, ich werds selber debuggen........

*Kopfschüttel*
:wayne:
 
Wünsche dir viel Spass dabei
 
Bitte mal testen: Trunk #3812

2do (aus Post 1):
-PIN
-Signalstärke & Netz (siehe Post #8, aber wie realisieren?)
-Firewall/iptables
-Fallback für DSL/Kabel-Ausfall?
 
Hat der andere auch behauptet, dafür Freetz auf einer 7170 benutzt zu haben? Denn _nur_ dann wärst du hier richtig.
 
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.