I finally bought a UMTS account from Telenor for my Thinkpad X201i. I imagine myself working under a oak tree during the summer when I am on parental leave. So how to set it up under OpenBSD?
This is my setup
So how to set it up under OpenBSD.
There are two ways to connect your modem through ppp protocol, userland ppp(8) and as a kernel pppd(8).
Userland ppp is the first thing to try, until you know exactly how to connect to your service provider. Userland ppp provides much better interactivity and logging facilities which let you figure out all the peculiarities of your service provider.
There are roughly 3 steps to connect via ppp.
As always when checking for hardware driver support you need to check the dmesg output relating to the USB modem. In my case the USB modem show up as the following.
umsm0 at uhub2 port 2 configuration 1 interface 0 "HUAWEI Technology HUAWEI Mobile" rev 2.00/0.00 addr 3 ucom0 at umsm0
umsm1 at uhub2 port 2 configuration 1 interface 1 "HUAWEI Technology HUAWEI Mobile" rev 2.00/0.00 addr 3 ucom1 at umsm1
umsm2 at uhub2 port 2 configuration 1 interface 2 "HUAWEI Technology HUAWEI Mobile" rev 2.00/0.00 addr 3 ucom2 at umsm2
The E1750 modem is supported out of the box by OpenBSD. The E1750 device is supported by umsm(4) driver.
An usb tty compatible driver, ucom, in turn attach to the physical driver, umsm. The ucom driver is accessed through device names as /dev/cuaUx. In my case the modem seems to present three serial ports which is available through /dev/cuaU0 to /dev/cuaU2 via ucom0 to ucom2.
You need to figure out which device that can be used to connect. This may be dependent on the actual USB modem hardware used where only some of the serial ports support dial out connection. In my case the first port /dev/cuaU0 works!
The following /etc/ppp/ppp.conf is the final configuration that works for in my setup. Note that commands must be intedented in relation to labels.
default:
set log Phase Chat LCP IPCP CCP tun command connect
set device /dev/cuaU0
set speed 384000
telenor:
set phone "*99#"
set timeout 0
set ifaddr 192.168.0.199/0 10.0.0.0/0 255.255.255.0 0.0.0.0
set dial "ABORT ERROR ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" ATZ OK-ATZ-OK AT+CGDCONT=1,\\\"IP\\\",\\\"internet.telenor.se\\\" OK \\dATD\\T TIMEOUT 40 CONNECT"
add default HISADDR
enable dns
disable ipv6cp pred1 mppe
Everything in the ppp.conf file is described in detail in ppp(8). I spent a lot of time reading this specific manual page.
First line is important for debugging reasons as it defines what parts of the protocol that should be logged to syslog. To get log output (also described in ppp(8)) you need to add ppp logging to /etc/syslog.conf.
!ppp
*.*<TAB>/var/log/ppp.log
The next two lines (in the default section) specify the device and speed respectively.
The phone number configuration is one of two common dial strings for 3G modems. \T will be replaced by this string in the set dial command. Timeout of 0 means indefinite timeout.
You should really check out ppp(8) for a description of set ifaddr. This line roughly means I prefer to get 192.168.0.199 as local IP address but I accept any local address if I can’t get it. I also accept any remote address but give an example IP address.
I use the default dial string (suggested by /etc/ppp/ppp.conf.sample) but replace target domain with my providers domain, “internet.telenor.se”.
The next two commands allow default gateway and dns to be configured by remote service. The last line disable some functionality that didn’t seem to be supported by my provider (which I figured out by reading the log file).
Using this configuration I am able to connect to my provider. If you have problems figuring out the details from your provider you can setup the connection in interactive mode and call each command separately. See ppp(8) and references below on how to do that.
Interactive mode …
# ppp
Working in interactive mode
Using interface: tun0
ppp ON think> load telenor
ppp ON think> dial
Disconnect … TBD
Automatic mode …
ppp -auto telenor
Disconnect … TBD
TBD.