OpenWrt Forum Archive

Topic: 3G / HSPA Router with SIM CARD slot

The content of this topic has been archived between 6 Apr 2018 and 20 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

anarchy99 wrote:

if you read previous posts on this topic you'll see Kyklas has made backup so you could ask him to send you dump.

Thanks, I read it. I had that impression (he was able to run it). I hope Kyklas reads this post. do you know if there is a way to contact him? (my email address is paolo.ulm(at)gmail.com)

anarchy99 wrote:

no, for .rmt firmware another syntax should be used, if it is possible to update .rmt firmware from tftp which i'm not sure of.

don't try to flash anymore firmwares for now before you screw it completely.

instead try to see what firmware version 3G modem has and what version it had before if you can remember. this should be somewhere under maintenance or device info in webinterface.

i know when i was playing with mine i managed to upgrade it from 1.7 to 2.2 but i don't remember if i ever made a downgrade back to 1.7

I will not run the flash command. I was just wondering about the syntax of it.

Before I had FW_GS3_R1N89.rmt (R1N89 was the latest) then I downgraded to FW_GS3_R1A63.rmt (R1A63). now I am stuck to (R1A63) and I cannot upgrade it any more since the upgrade process stops immediately and the Globesurfer reboot without upgrading.

anarchy99 wrote:

also what i've experienced a few times is that it would not connect just like yours, sometimes you have to wait up to 20 minutes for device to settle itself (i read this somewhere on option website or manual that came with fw update).

can you check your APN configuration and other provider specific settings are correct? does it detect network at all?

I have waited for hours but no changes. I have also checked the apn configuration : it is ok.

A strange thing: If I manually scan for networks available (carries) it does not find any. Probably the old firmware I installed was about a different country with different frequencies.... no idea.

Thanks again for your time

another piece of info.
probably I have understood why my globesurferIII+ is not allowing to update firmware any more. when I downgraded it I installed a firmware that was done for globesurferIII (R1A63) and not for globesurferIII+ R1Nxx. What a mistake!!!!

To whom it concernes:
I built a 4G Router using "pcengines.ch" APU board + Sierra MC7710 (LTE-Modem card mPCIe), running Voyage (debian based small LINUX).
No need to fiddle around with FW-flashes, as APU-board even can be equipped with various flash storage media.
And Voyage allows usage of newest LINUX-drivers for the 3G/4G-Modem.
Price definitely is competitive to Globalsurfer, as I have seen.

anarchy99 wrote:

please copy the output of flash_layout command and it should become more clear.

Thanks.

I will do it in 3 / 4 hours (I do not have the router with me now)

thanks again

anarchy99 wrote:

please copy the output of flash_layout command and it should become more clear.

here it is . thanks again

flash> layout
Flash layout:

Section 00 Type UNKNOWN    Range 0x00000000-0x00040000 MaxSize 0x00040000
        No more information.

Section 01 Type IMAGE      Range 0x00040000-0x00840000 MaxSize 0x007FFF6C
        Size 0x007C7000 Name 'Downloaded at: Sat Sep 27 21:19:38 2014'
        Checksum 0x3EE330EF Counter 0x0000021D Start Offset 0x00000000

Section 02 Type IMAGE      Range 0x00840000-0x01040000 MaxSize 0x007FFF6C
        Size 0x00000000 Name ''
        Checksum 0x00000363 Counter 0x00000000 Start Offset 0x00000000

Section 03 Type UNKNOWN    Range 0x01040000-0x01FA0000 MaxSize 0x00F5FF6C
        Size 0x00000000 Name ''
        Checksum 0x00000363 Counter 0x00000000 Start Offset 0x00000000

Section 04 Type CONF       Range 0x01FA0000-0x01FC0000 MaxSize 0x0001FF6C
        Size 0x00004480 Name 'rg_conf'
        Checksum 0x0022367F Counter 0x00000272 Start Offset 0x00000000

Section 05 Type CONF       Range 0x01FC0000-0x01FE0000 MaxSize 0x0001FF6C
        Size 0x00004497 Name 'rg_conf'
        Checksum 0x002286B8 Counter 0x00000273 Start Offset 0x00000000

Section 06 Type FACTORY    Range 0x01FE0000-0x01FF0000 MaxSize 0x0000FF6C
        Size 0x00001284 Name 'rg_factory'
        Checksum 0x0004EA23 Counter 0x00000115 Start Offset 0x00000000

Section 07 Type UNKNOWN    Range 0x01FF0000-0x02000000 MaxSize 0x00010000
        No more information.

Total 8 sections found.

Returned 0
flash>

anarchy99 wrote:

flash load -u tftp://192.168.1.1/openwrt-GlobeSurfer3-squashfs.bin -r 0x00040000

it will take several minutes, don't interrupt anything.

thanks again.

I will do so. and get back to you with the feedback.

I saw in other areas of this forum that it was release a (I think a sorth of) "stable" version of openwrt with the recent drivers for globesurfer III+ and probably it was included in the very last version of openwrt.

to make it short... do you think it will work with my globesurfer iii+ ?

Thanks again

anarchy99 wrote:

if the 3G modem firmware was not corrupted by downgrade it will work. you'll just need to modify the GPIO script located in /etc/init.d/

sorry to abuse of your patience but what does it mean ? (I apologise for my ignorance)

will it be accessible via web (with luci) ?

anarchy99 wrote:

you have router. it has 3G miniPCIe modem inside. the router has it's own flash and firmware and 3G modem has it's own too. with some firmware updates you can update modem firmware too. if you didn't 'break' modem firmware it will work with openwrt.

luci is included in that image so yes, you can access it via web. but you will need to access it via ssh and modify the script to the values Kyklas posted in https://forum.openwrt.org/viewtopic.php … 5#p215585. i think i named the script 3G but i'm not sure.

make a reboot and then your 3G modem should be enabled

hi anarchy99 and thanks once more for your kind help. it is not easy to deal with newbies like me... I know.

I have been able to flash the bin you made available. !great success!
now I can log to luci interface. If i "TELNET 192.168.1.1 22" the GSIII+ replies. I am still study how to use ssh with telnet I just receive a first line of reply from the router and I do not know how to proceed (this is a problem caused of my ignorance. I will try to document myself over the weekend.)

Due to the fact I am new to this environment I still have not managed to change the GPIO as suggested by you. I think this is the reason why I cannot still connect to the carrier. I will work on it.

question1: did you meant the following as far as GPIO settings are concerned (from what I read in the post they are needed to switch on the modem)?

root@OpenWrt:~# cat /etc/init.d/gtm661
#!/bin/sh /etc/rc.common

START=11

cd /sys/class/gpio

echo 4 > export
echo 5 > export

cd

echo out >  /sys/devices/virtual/gpio/gpio4/direction
echo 1 > /sys/devices/virtual/gpio/gpio4/value

echo out >  /sys/devices/virtual/gpio/gpio5/direction
echo 1 > /sys/devices/virtual/gpio/gpio5/value

echo out >  /sys/devices/virtual/gpio/gpio4/direction
echo 1 > /sys/devices/virtual/gpio/gpio4/value

echo out >  /sys/devices/virtual/gpio/gpio5/direction
echo 1 > /sys/devices/virtual/gpio/gpio5/value

echo out >  /sys/devices/virtual/gpio/gpio4/direction
echo 1 > /sys/devices/virtual/gpio/gpio4/value

echo out >  /sys/devices/virtual/gpio/gpio5/direction
echo 1 > /sys/devices/virtual/gpio/gpio5/value

echo out >  /sys/devices/virtual/gpio/gpio4/direction
echo 1 > /sys/devices/virtual/gpio/gpio4/value

echo out >  /sys/devices/virtual/gpio/gpio5/direction
echo 1 > /sys/devices/virtual/gpio/gpio5/value

question2: do you think I could come back to my old firmware (FW_GS3_R1N89.rmt) if I upload it with openwrt interface relevant to the firmware upgrade?

a super thanks you again.

It is WORKING !!!! back to life !!!!!

Thank you anarchy99 . THANK YOU !!

I would not be able to do it without your help.

THANKS AGAIN !!! if you came to Italy I own you a pizza (where are you from by the way) !!!

I will test it and get back to this post with my findings.

last question a)
Do you know if there is a package (maybe with web interface) to:

1) receive and send SMS
2) DDNS service (like dyndns)
3) monthly data  traffic counter

last question b)
is there an autoupdate of openwrt?
what happen if I update it? do I have to play with the "enable3G" file again?


super thanks again.

thanks for the links.

..umhhh probably I was celebrating too quickly .

unfortunately from a first test the router is not stable.

it restarts several times if i connect to internet. especially it look very sensitive to heavy navigation (if I go to websites with a lot of images and links) the router crashes and then it reboots.

if I remember well this (not stable) was experience also by Kyklas. do you know if/how he solved it?

thanks again

thanks again.

now my "/etc/config/network" has a part with "config interface 'wan'" not with "
config interface 'wwan'"

now it is:

code wrote:

config interface 'wan'
    option _orig_ifname 'eth0.0'
    option _orig_bridge 'false'
    option proto '3g'
    option apn 'ibox.tim.it'
    option device '/dev/ttyHS3'
    option service 'umts_only'

and with this configuration it works but quite often it crashes

Kyklas configuration was:

code wrote:

config interface 'wwan'
    option ifname 'hso0'
    option proto 'hso'
    option apn '<your apn>'
    option pincode '<your pin>'
    option device '/dev/ttyHS2'

should my configuration become the following?

code wrote:

config interface 'wan'
    option _orig_ifname 'eth0.0'
    option _orig_bridge 'false'
    option ifname 'hso0'
        option proto 'hso'
    option apn 'ibox.tim.it'
    option device '/dev/ttyHS3'
    option service 'umts_only'

thanks again

(Last edited by paolo.ulm on 5 Oct 2014, 08:29)

I entered your setting, now it is stable. :-)
thanks again.

Initially i created a new interface ( so I had "wanold" and "wan") but when the router started the interface did not start automatically.  now the only wan is the one with your settings and the interface starts and connects automatically .

I noticed that when the router boots the wifi is not available, even if it was when i switched it off. If i click on "save and apply" in the wifi interface (luci) it starts. any trick to starts it automatically?

thanks again. I am very happy. now I can use again my globesurfer.

anarchy99 wrote:

you can try to put the following lines in your System->Startup script in luci at the bottom, before exit line

iwconfig wl0 txpower off
iwconfig wl0 txpower auto

on GS3 wifi start after reboot but network is unreachable, so i used these startup commands to restart wifi. it might work on GS3+ too

thanks again for the tip.
with the setting you gave me now it starts automatically but it looks like if the wifi has no access to the internet while the lan has.
Unfortunately I have not had a lot of time to test it.
As soon as it is more clear I will get back to this forum with detailed info.

Thanks again for your patience.

anarchy99 wrote:

you can try to put the following lines in your System->Startup script in luci at the bottom, before exit line

iwconfig wl0 txpower off
iwconfig wl0 txpower auto

on GS3 wifi start after reboot but network is unreachable, so i used these startup commands to restart wifi. it might work on GS3+ too

I run other tests. now it is clear.

putting your line in the luci's startup scripts the WIFI turns on together with the router but it seems that the wifi does not communicate with the LAN nor the WAN. So if a computer is connected to wiFI it is not even released an IP  through the DHCP.

if I go to wifi interface (of luci) and I click disable and then I click enable after this the WIFI is working properly.

another issue: do you think there is a way to run a ping every 15 minutes and if ping does not reply to reboot the router?

thanks again... of course

that is strange because the ethernet port has dhcp working.
I will try to play with it according to your suggestion.

thanks again. you are extremely useful

ps. I saw watchdog was integrated in openwrt thanks ( https://dev.openwrt.org/ticket/2270 )

Dear Anarchy99,

Probably I can manage to find an original flash.bin exported from a working globesurfer III +.

If I can get it, what should I do to flash my globesurfer since it has openwrt now ?
is it possible?

super thank you as usual.

Ciao
Paolo

anarchy99 wrote:

you can install DDNS from software packages. search wiki for details.

thanks.

I saw that there are packages relevant to the various versions, eg:
../
12.09/                                             09-Jul-2014 08:05                   -
12.09-beta/                                        14-Oct-2012 21:01                   -
12.09-beta2/                                       05-Nov-2012 11:28                   -
12.09-rc1/                                         27-Nov-2012 22:53                   -
12.09-rc2/       

But I have not found the ones relevant to the version you gave me that appears like 12.09.1 .

does "12.09.1" mean "12.09-rc1"?
could I download the packages from "12.09/"?

Thanks

anarchy99 wrote:

you can try to put the following lines in your System->Startup script in luci at the bottom, before exit line

iwconfig wl0 txpower off
iwconfig wl0 txpower auto

on GS3 wifi start after reboot but network is unreachable, so i used these startup commands to restart wifi. it might work on GS3+ too

thanks anarchy.

on GS3+ I have been able to fix it adding "wifi" to the startup commands. now it is:

iwconfig wl0 txpower off
iwconfig wl0 txpower auto
wifi


Thanks again

Thanks anarchy,

It sounds difficult. I need to document myself, train myself and... a surgery room before doing it.

Is it so difficult to extract/export the flash from my globesurfer too?
I mean, how can I export the flash of my current configuration and keep it for the future in case I must do a recovery of my GS3+?

I am looking for a way to create a file like the one you gave me before. Is there an easy way to create a backup?

thanks again

Hi,

I had issue with OpenWRT 14.07 and the HSO driver. It seems that rfkill has been disabled by default in this version of OpenWRT. Making my own image with rfkill enabled (USE_RFKILL in Global build settings), I managed to have my modem working on TP-WR710N. I tested that also on my WR1043ND and to my surprise i had an error using hso and rfkill, i was missing input-core but it is not listed as a dependency.

I made modification to hso connection scripts. The network mode can be selected ( GSM or UMTS ). The PDP context used is # 2 so the modem GPS can use PDP context # 1 for A-GPS connection. The modem connection log can be viewed with logread. chat is still used for the connection.

To know if hso in the comgt package, i like to add hso to PKG_RELEASE in the makefile. I haven't tested authentication. The patch need to be applied in the comgt package directory ( package/comgt for 12.09 or package/network/utils/comgt 14.07)

diff --git a/Makefile b/Makefile
index 5324903..98c8502 100644
--- a/Makefile
+++ b/Makefile
@@ -50,7 +50,10 @@ define Package/comgt/install
     $(INSTALL_DIR) $(1)/etc/chatscripts
     $(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat
     $(INSTALL_DATA) ./files/evdo.chat $(1)/etc/chatscripts/evdo.chat
+    $(INSTALL_DATA) ./files/hso.chat $(1)/etc/chatscripts/hso.chat
+    $(INSTALL_DATA) ./files/hsohup.chat $(1)/etc/chatscripts/hsohup.chat
     $(INSTALL_DIR) $(1)/etc/gcom
+    $(INSTALL_DATA) ./files/setuser.gcom $(1)/etc/gcom/setuser.gcom
     $(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom
     $(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom
     $(INSTALL_DATA) ./files/getcardinfo.gcom $(1)/etc/gcom/getcardinfo.gcom
@@ -62,6 +65,7 @@ define Package/comgt/install
     $(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/tty/30-3g
     $(INSTALL_DIR) $(1)/lib/netifd/proto
     $(INSTALL_BIN) ./files/3g.sh $(1)/lib/netifd/proto/3g.sh
+    $(INSTALL_BIN) ./files/hso.sh $(1)/lib/netifd/proto/hso.sh
 endef
 
 $(eval $(call BuildPackage,comgt))
diff --git a/files/hso.chat b/files/hso.chat
new file mode 100644
index 0000000..cb87d5a
--- /dev/null
+++ b/files/hso.chat
@@ -0,0 +1,13 @@
+ABORT   BUSY
+ABORT   'NO CARRIER'
+ABORT   ERROR
+REPORT  CONNECT
+TIMEOUT 10
+""    "ATZ"
+OK    'AT+CGDCONT=2,"IP","$USE_APN"'
+SAY    "Service Mode $MODE"
+TIMEOUT 30
+OK    "AT_OPSYS=$MODE,2"
+OK    "AT_OWANCALL=2,1,0"
+OK    "\d\d\d\d\d\dAT_OWANDATA=2"
+OK    ""
diff --git a/files/hso.sh b/files/hso.sh
new file mode 100644
index 0000000..05ff818
--- /dev/null
+++ b/files/hso.sh
@@ -0,0 +1,137 @@
+#!/bin/sh
+INCLUDE_ONLY=1
+
+. ../netifd-proto.sh
+init_proto "$@"
+
+proto_hso_init_config() {
+
+    no_device=1
+    available=1
+        
+    proto_config_add_string "device"
+    proto_config_add_string "maxwait"
+    proto_config_add_string "apn"
+    proto_config_add_string "pincode"
+    proto_config_add_int "mtu"
+    proto_config_add_string "username"
+    proto_config_add_string "password"
+    proto_config_add_string "ifname"
+}
+
+
+proto_hso_setup() {
+
+    local iface="$1"
+    local chat="/etc/chatscripts/hso.chat"
+    
+    json_get_var device device
+    json_get_var maxwait maxwait
+    maxwait=${maxwait:-20}
+    while [ ! -e "$device" -a $maxwait -gt 0 ];do # wait for driver loading to catch up
+        maxwait=$(($maxwait - 1))
+        sleep 1
+    done
+
+    json_get_var apn apn
+    json_get_var pincode pincode
+    json_get_var mtu mtu
+    json_get_var service service
+    json_get_var username username
+    json_get_var password password
+    json_get_type ifnametype ifname
+    
+    if [ "$ifnametype" = "array" ]
+    then
+        json_select ifname
+        json_get_var ifname 1
+        json_select ".."
+    fi
+    
+    if [ "$ifnametype" = "string" ]
+    then
+        json_get_var ifname ifname
+    fi
+
+    # set pin if configured
+    if [ ! -z "$pincode" ]
+    then
+        PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
+            echo "$iface (hso): Failed to set the PIN code."
+            proto_notify_error "$iface" PIN_FAILED
+            return 1
+        }
+    fi
+
+    # set username and password if configured
+    if [ -n "$username" -a -n "$password" ]
+    then
+        USER="$username" PASS="$password" gcom -d "$device" -s /etc/gcom/setuser.gcom || {
+            echo "$iface (hso): Failed to set username and password."
+            proto_notify_error "$iface" AUTH_FAILED
+            return 1
+        }
+    fi
+    
+    
+    case "$service" in
+        umts_only) service_mode=1;;
+        gprs_only) service_mode=0;;
+        *) service_mode=3;;
+    esac
+    
+    local pip counter
+    local outputfile="/tmp/hsoout.$$"
+    while [ -z "$pip" -a "$counter" != "---------------" ]
+    do
+        sleep 2
+        rm -f $outputfile
+        ( USE_APN=$apn MODE=$service_mode /usr/sbin/chat -E -v -V -f $chat <$device > $device ) 2> $outputfile
+        iserror=`grep '^ERROR' $outputfile`
+        if [ -z "$iserror" ]
+        then
+            pip="`grep '^_OWANDATA' $outputfile | cut -d, -f2`"
+            gw="`grep '^_OWANDATA' $outputfile | cut -d, -f3`"
+            ns1="`grep '^_OWANDATA' $outputfile | cut -d, -f4`"
+            ns2="`grep '^_OWANDATA' $outputfile | cut -d, -f5`"
+        fi
+
+        counter="${counter}-"
+    done
+
+    rm -f $outputfile
+
+    if [ -z $pip ]
+    then
+        echo "$iface (hso): Failed to connect and obtain IP address."
+        return 1
+    fi
+
+    proto_init_update $ifname 1
+    proto_set_keep 1
+    proto_add_ipv4_address "$pip" 32
+    proto_add_dns_server "$ns1"
+    proto_add_dns_server "$ns2"
+    proto_add_ipv4_route "0.0.0.0" 0 $gw
+    proto_add_data
+    json_add_string "ppp-type" "hso"
+    proto_close_data
+    proto_send_update "$iface"
+    
+    touch /var/run/$ifname.pid
+}
+
+
+proto_hso_teardown() {
+
+    local config="$1"
+    local chat="/etc/chatscripts/hsohup.chat"
+
+    json_get_var device device
+    /usr/sbin/chat -v -f $chat <$device > $device    
+    
+    
+    killall gcom >/dev/null 2>/dev/null
+}
+
+add_protocol hso
diff --git a/files/hsohup.chat b/files/hsohup.chat
new file mode 100644
index 0000000..9e82183
--- /dev/null
+++ b/files/hsohup.chat
@@ -0,0 +1,8 @@
+ABORT   BUSY
+ABORT   'NO CARRIER'
+ABORT   ERROR
+REPORT  CONNECT
+SAY    "Hanging up..."
+TIMEOUT 30
+""    "AT_OWANCALL=2,0"
+OK    ""
diff --git a/files/setuser.gcom b/files/setuser.gcom
new file mode 100644
index 0000000..511d90b
--- /dev/null
+++ b/files/setuser.gcom
@@ -0,0 +1,29 @@
+# set username and password
+opengt
+ set com 115200n81
+ set senddelay 0.02
+ waitquiet 1 0.2
+ flash 0.1
+
+:start
+ print "Trying to set username and password\n"
+ send "AT$QCPDPP=1,1,"
+ send $env("USER")
+ send ","
+ send $env("PASS")
+ send "^m"
+
+ waitfor 15 "OK","ERR","ERROR"
+ if % = 0 goto continue
+ if % = 1 goto modeerror
+ if % = 2 goto modeerror
+
+ print "Timeout setting username and password!\n"
+ exit 1
+
+:modeerror
+ print "Error setting username and password!\n"
+ exit 1
+
+:continue
+ exit 0

The LuCI configuration interface that goes with this is base on http://git.openwrt.org/project/luci.git. You can changed which luci you are using on OpenWRT 12.09 by editing the LuCI repository in feeds.conf.default. The following patch adds luci-proto-hso package to LuCI protocols list. The patch need to be applied in feeds/luci directory, using svn doesn't work.

diff --git a/contrib/package/luci/Makefile b/contrib/package/luci/Makefile
index 5ee13d4..9154121 100644
--- a/contrib/package/luci/Makefile
+++ b/contrib/package/luci/Makefile
@@ -192,6 +192,7 @@ endef
 $(eval $(call protocol,ppp,Support for PPP/PPPoE/PPPoA/PPtP))
 $(eval $(call protocol,ipv6,Support for DHCPv6/6in4/6to4/6rd/DS-Lite))
 $(eval $(call protocol,3g,Support for 3G,+PACKAGE_luci-proto-3g:comgt))
+$(eval $(call protocol,hso,Support for hso,+PACKAGE_luci-proto-hso:comgt +PACKAGE_luci-proto-hso:kmod-usb-net-hso))
 $(eval $(call protocol,relay,Support for relayd pseudo bridges,+PACKAGE_luci-proto-relay:relayd))
 
 
diff --git a/protocols/hso/Makefile b/protocols/hso/Makefile
new file mode 100644
index 0000000..f7fac77
--- /dev/null
+++ b/protocols/hso/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk
diff --git a/protocols/hso/luasrc/model/cbi/admin_network/proto_hso.lua b/protocols/hso/luasrc/model/cbi/admin_network/proto_hso.lua
new file mode 100644
index 0000000..1515df1
--- /dev/null
+++ b/protocols/hso/luasrc/model/cbi/admin_network/proto_hso.lua
@@ -0,0 +1,158 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2011 Jo-Philipp Wich <xm@subsignal.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+local map, section, net = ...
+
+local hsoname,hsotype,hsointerface
+local device, apn, service, pincode, username, password
+local ipv6, maxwait, defaultroute, metric, peerdns, dns,
+      keepalive_failure, keepalive_interval, demand
+
+
+device = section:taboption("general", Value, "device", translate("Control interface"))
+device.rmempty = false
+
+local device_suggestions = nixio.fs.glob("/dev/ttyHS*")
+    or nixio.fs.glob("/dev/tts/*")
+
+if device_suggestions then
+    local node
+    for node in device_suggestions do
+        hsoname = string.gsub(node,"/dev/","")
+        hsotype = nixio.fs.readfile("/sys/class/tty/" .. hsoname .. "/hsotype")
+        device:value(node, hsotype .. " (" .. node ..")" )
+        if string.find(hsotype,"Application") ~= nil then
+            device.default = node
+        end
+    end
+end
+
+
+service = section:taboption("general", Value, "service", translate("Service Type"))
+service.default = "umts"
+service:value("umts", "UMTS/GPRS")
+service:value("umts_only", translate("UMTS only"))
+service:value("gprs_only", translate("GPRS only"))
+
+
+apn = section:taboption("general", Value, "apn", translate("APN"))
+
+
+pincode = section:taboption("general", Value, "pincode", translate("PIN"))
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+
+if luci.model.network:has_ipv6() then
+
+    ipv6 = section:taboption("advanced", Flag, "ipv6",
+        translate("Enable IPv6 negotiation on the PPP link"))
+
+    ipv6.default = ipv6.disabled
+
+end
+
+
+maxwait = section:taboption("advanced", Value, "maxwait",
+    translate("Modem init timeout"),
+    translate("Maximum amount of seconds to wait for the modem to become ready"))
+
+maxwait.placeholder = "20"
+maxwait.datatype    = "min(1)"
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+    translate("Use default gateway"),
+    translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+
+metric = section:taboption("advanced", Value, "metric",
+    translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+    translate("Use DNS servers advertised by peer"),
+    translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+    translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+    translate("LCP echo failure threshold"),
+    translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+    local v = m:get(section, "keepalive")
+    if v and #v > 0 then
+        return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+    end
+end
+
+function keepalive_failure.write() end
+function keepalive_failure.remove() end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+    translate("LCP echo interval"),
+    translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+    local v = m:get(section, "keepalive")
+    if v and #v > 0 then
+        return tonumber(v:match("^%d+[ ,]+(%d+)"))
+    end
+end
+
+function keepalive_interval.write(self, section, value)
+    local f = tonumber(keepalive_failure:formvalue(section)) or 0
+    local i = tonumber(value) or 5
+    if i < 1 then i = 1 end
+    if f > 0 then
+        m:set(section, "keepalive", "%d %d" %{ f, i })
+    else
+        m:del(section, "keepalive")
+    end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_interval.placeholder = "5"
+keepalive_interval.datatype    = "min(1)"
+
+
+demand = section:taboption("advanced", Value, "demand",
+    translate("Inactivity timeout"),
+    translate("Close inactive connection after the given amount of seconds, use 0 to persist connection"))
+
+demand.placeholder = "0"
+demand.datatype    = "uinteger"
diff --git a/protocols/hso/luasrc/model/network/proto_hso.lua b/protocols/hso/luasrc/model/network/proto_hso.lua
new file mode 100644
index 0000000..5323e83
--- /dev/null
+++ b/protocols/hso/luasrc/model/network/proto_hso.lua
@@ -0,0 +1,59 @@
+--[[
+LuCI - Network model - 3G, PPP, PPtP, PPPoE and PPPoA protocol extension
+
+Copyright 2011 Jo-Philipp Wich <xm@subsignal.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+
+local netmod = luci.model.network
+
+local _, p
+
+local proto = netmod:register_protocol("hso")
+
+function proto.ifname(self)
+        return "hso-" .. self.sid
+end
+
+function proto.get_i18n(self)
+    return luci.i18n.translate("HSO")
+end
+
+function proto.opkg_package(self)
+    return "comgt"
+end
+
+function proto.is_installed(self)
+    return nixio.fs.access("/lib/netifd/proto/hso.sh")
+end
+
+function proto.is_floating(self)
+    return false
+end
+
+function proto.is_virtual(self)
+    return false
+end
+
+function proto.get_interfaces(self)
+    return netmod.protocol.get_interfaces(self)
+end
+
+function proto.contains_interface(self, ifc)
+    return netmod.protocol.contains_interface(self, ifc)
+end
+
+netmod:register_pattern_virtual("^hso-%%w")
+

I may look to submit those patches for integration after people have tested them.

A sample of configuration in /etc/config/network

config interface 'wwan'
        option proto 'hso'
        option ifname 'hso0'
        option device '/dev/ttyHS3'
        option service 'umts'
        option apn '<APN>'
        option pincode '<PIN>'

(Last edited by Kyklas on 12 Oct 2014, 23:40)

paolo.ulm wrote:

Thanks anarchy,

It sounds difficult. I need to document myself, train myself and... a surgery room before doing it.

Is it so difficult to extract/export the flash from my globesurfer too?
I mean, how can I export the flash of my current configuration and keep it for the future in case I must do a recovery of my GS3+?

I am looking for a way to create a file like the one you gave me before. Is there an easy way to create a backup?

thanks again

From what i remember you can backup either from OpenRG ( GlobeSurfer firmware ) or CFE ( the bootloader which require to have a serial connection to the device pin)

I had in a file the following commands. I thing those are for the bootloader. I remember it being easier in the bootloader as it send you the dump to a tftp server. Change the 192.168.1.9 ip to your tftp server ip.

save 192.168.1.9:GS_Sec00_bc000000_bc040000_V2 bc000000 40000
save 192.168.1.9:GS_Sec01_bc040000_bc840000_V2 bc040000 800000
save 192.168.1.9:GS_Sec02_bc840000_bd040000_V2 bc840000 800000
save 192.168.1.9:GS_Sec03_bd040000_bdFA0000_V2 bd040000 F60000
save 192.168.1.9:GS_Sec04_bdFA0000_bdFC0000_V2 bdFA0000 20000
save 192.168.1.9:GS_Sec05_bdFC0000_bdFE0000_V2 bdFC0000 20000
save 192.168.1.9:GS_Sec06_bdFE0000_bdFF0000_V2 81FE0000 10000

save 192.168.1.9:GS_FlashDump_V2 bc000000 2000000

save 192.168.1.9:GS_FlashBackUP bc000000 2000000

Example to flash the dump back into the device from the bootloader

    Section 1
flash -offset=0x00040000 -noheader 192.168.1.9:openwrt-GS3+-squashfs.bin flash0
    Section 2
flash -offset=0x00840000 -noheader 192.168.1.9:GS_Sec02 flash0

Example to flash from OpenRG

load -u tftp://192.168.1.2/openwrt-GlobeSurfer3-squashfs.bin -r 0x00040000

I have some dump of the device if you want i can send you a link by private message.

(Last edited by Kyklas on 12 Oct 2014, 23:39)

nice to meet you Kyklas !!!
Without your help and (anarchy's) I would have never been able to install openwrt on my globesurfer 3 +!
as you will see from my posts I am really new to your world !

I saw there is a lot of work to install the latest openwrt on gs3+. (thanks for the post)

Kyklas wrote:

From what i remember you can backup either from OpenRG ( GlobeSurfer firmware ) or CFE ( the bootloader which require to have a serial connection to the device pin)

now I have been able to install openwrt on my gs3+ .

1) is using bootloader the only way to send the dump to a flash file from globesurfer?
2) do I need to sold a serial port to the pins ( http://postimg.org/image/9ew81ktyj/  ) to be able to run the commands with bootloader?

thansk again

Hi,

1) I have posted example command lines on how to backup GS frimware from the bootloader. I remember doing it from OpenRG but i don't have the command nor the device to be sure
2) You can solder connector to those pins and use wires with a USB to TLL serial converter ( 3.3V level ) to access the console of OpenRG or OpenWRT. Dealing with flash is sensible, doing it from the bootloader seems safer for me.

The version run on GS3+ is OpenWRT 12.09 with is not the latest.

Kyklas wrote:

Hi,

1) I have posted example command lines on how to backup GS frimware from the bootloader. I remember doing it from OpenRG but i don't have the command nor the device to be sure
2) You can solder connector to those pins and use wires with a USB to TLL serial converter ( 3.3V level ) to access the console of OpenRG or OpenWRT. Dealing with flash is sensible, doing it from the bootloader seems safer for me.

The version run on GS3+ is OpenWRT 12.09 with is not the latest.

thanks kyklas,
Unfortunately I am not a super expert in soldering and the possibilities to damage the gs3 are quite high.

I have found this page that speaks of flashing and so on... of course for me it is quite unreadable...   

http://www.cesareriva.com/cfe-bootloade … h-openwrt/

do you think I use this method to backup the gs?

thanks again

Changing subject,

I plugged an usb key (memory), followed all the tutorials, installed all the needed packages but still cannot see it.

it does not appear as \dev\sdax

have you been able to mount a usb disk into the globesurfer and making it work?

thanks again

The discussion might have continued from here.