Skip to content

3G modem Vodafone MD950

Peter Vojtek edited this page Aug 18, 2013 · 36 revisions

cheap device available from dx.com

Device works out of the box on Ubuntu 12.04 (via Network Manager). on RPi the device required bit more hacking to make use of it.

Default device lsusb status is 0471:1210 Philips (or NXP)

just for curiosity, the device can be mounted using:

mkdir /media/cd && mount /dev/sr0 /media/cd
ls /media/cd
autorun.exe  Autorun.inf  edge.tag  Setup.exe  wireless.ico

we run usb_modeswitch to switch the device to 3G modem. however, usb_modeswitch -v 0471 -p 1210 wont switch the device properly. this works:

usb_modeswitch -W -I -c /usr/share/usb_modeswitch/0471\:1210\:uMa\=Wisue -v 0471 -p 1210
lsusb
Bus 001 Device 005: ID 1dbc:0005

we run usb_modeswitch manually, so we set DisableSwitching=1 in /etc/usb_modeswitch.conf.

we can communicate with the device via /dev/ttyACM0, e.g.

screen /dev/ttyACM0 115200
AT
OK

now we try to create proper wvdial configuration using wvdialconf:

Editing `/etc/wvdial.conf'.

Scanning your serial ports for a modem.

ttyACM0<*1>: ATQ0 V1 E1 -- OK
ttyACM0<*1>: ATQ0 V1 E1 Z -- ERROR
ttyACM0<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- ERROR
ttyACM0<*1>: Modem Identifier: ATI -- WYLESS_600
ttyACM0<*1>: Speed 4800: AT -- OK
ttyACM0<*1>: Speed 9600: AT -- OK
ttyACM0<*1>: Speed 19200: AT -- OK
ttyACM0<*1>: Speed 38400: AT -- OK
ttyACM0<*1>: Speed 57600: AT -- OK
ttyACM0<*1>: Speed 115200: AT -- OK
ttyACM0<*1>: Speed 230400: AT -- OK
ttyACM0<*1>: Speed 460800: AT -- OK
ttyACM0<*1>: Max speed is 460800; that should be safe.
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK

Found an USB modem on /dev/ttyACM0.
/etc/wvdial.conf<Warn>: Can't open '/etc/wvdial.conf' for reading: No such file or directory
/etc/wvdial.conf<Warn>: ...starting with blank configuration.
Modem configuration written to /etc/wvdial.conf.
ttyACM0<Info>: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2"

content of wvdial.conf is:

[Dialer Defaults]
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Modem Type = USB Modem
; Phone = <Target Phone Number>
ISDN = 0
; Username = <Your Login Name>
Init1 = ATZ
; Password = <Your Password>
Modem = /dev/ttyACM0
Baud = 460800

if we try wvdial, we get:

wvdial
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
ERROR
--> Bad init string.

that is weird. one hour later, I got following wvdial.conf:

[Dialer Defaults]
Init1 = AT
;Init2 = AT+CPIN="0000"
Init4 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet"
Phone = *99***1#
ISDN = 1
Username = internet
Password = internet
Modem = /dev/ttyACM0
Baud = 460800
Stupid Mode = on

and now I connect successfully:

root@raspberrypi:~# wvdial
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: AT
AT
OK
--> Sending: AT+CGDCONT=1,"IP","internet"
AT+CGDCONT=1,"IP","internet"
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Mon Apr 29 20:32:42 2013
--> Pid of pppd: 4211
--> pppd: [10]gv[01]
--> Using interface ppp0
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> Authentication (PAP) started
--> pppd: [10]gv[01]
--> Authentication (PAP) successful
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> local  IP address 10.145.87.179
--> pppd: [10]gv[01]
--> remote IP address 192.200.1.21
--> pppd: [10]gv[01]
--> primary   DNS address 213.151.200.31
--> pppd: [10]gv[01]
--> secondary DNS address 85.237.225.250
--> pppd: [10]gv[01]
--> pppd: [10]gv[01]
--> Script /etc/ppp/ip-up run successful
--> Default route Ok.
--> warning, can't find address for `www.suse.de`
--> warning, address lookup does not work
--> Nameserver (DNS) failure, the connection may not work.
--> Connected... Press Ctrl-C to disconnect
--> pppd: [10]gv[01]

Other notes:

  • device is unable to list missed calls (AT returns CME ERROR: 23 - Memory Failure) - I assume the vendor did not intented the device to be used for calling at all.

Some useful links: