Motorola v195 with T-Mobile on Gentoo Linux

The Motorola_v195 can be used as a modem to connect a laptop to the internet wherever cell phone reception is good enough given the right provider plan. I have the internet plan as an add-on to my T-Mobile account..

kernel

A mini-usb cable will connect the phone to the laptop. Before connecting, build it a driver. Set

...
CONFIG_USB_ACM=m
...

in /usr/src/linux/.config (I am using kernel 2.6.20)

then recompile the kernel:

mount /boot
cd /usr/src/linux
make && make modules_install && make install
umount /boot 

Make sure the phone is on and connect the cable. Wait a second or two..

dmesg | tail

should mumble something to the effect of

...
usb 2-2: new full speed USB device using uhci_hcd and address 3
usb 2-2: configuration #1 chosen from 2 choices
cdc_acm 2-2:1.0: ttyACM0: USB ACM device
usbcore: registered new driver cdc_acm
drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters
...

You can also check if the new device exists

ls /dev/ttyACM*

Dial-Up using PPP

The gentoo init script method worked for getting the connection to the GPRS network. I plucked the configuration settings from T-Mobile’s Mac_OS_X_guide. You might want to keep an eye on their settings in case they change.

If you don’t already have PPP:

emerge -av ppp

Create a link for the init script:

ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0

Here is my /etc/conf.d/net:

 # /etc/conf.d/net:
 # $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/conf.d/net,v 1.7 2002/11/18 19:39:22 azarah Exp $
 config_eth0=( "null" )
 config_eth1=( "dhcp" )
 dhcpcd_eth1="-t 10"
 gateways_eth1="192.168.0.1"
 dhcp_eth1="release nontp nonis nosendhost"
 #-----------------------------------------------------------------------------
 # PPP
 config_ppp0=( "ppp" )
 #
 # Each PPP interface requires an interface to use as a "Link"
 link_ppp0="/dev/ttyACM0"   # Most PPP links will use a serial port
 #
 # PPP requires at least a username. You can optionally set a password here too
 # If you don't, then it will use the password specified in /etc/ppp/*-secrets
 # against the specified username
 #username_ppp0='user'
 #password_ppp0='password'
 # NOTE: You can set a blank password like so
 #password_ppp0=
 #
 # The PPP daemon has many options you can specify - although there are many
 # and may seem daunting, it is recommended that you read the pppd man page
 # before enabling any of them
 pppd_ppp0=(
 # "maxfail 0" # WARNING: It's not recommended you use this
 #   # if you don't specify maxfail then we assume 0
  "updetach"  # If not set, "/etc/init.d/net.ppp0 start" will return
 #   # immediately,  without waiting the link to come up
 #   # for the first time.
 #   # Do not use it for dial-on-demand links!
  "debug"  # Enables syslog debugging
  "noauth" # Do not require the peer to authenticate itself
  "defaultroute" # Make this PPP interface the default route
  "usepeerdns" # Use the DNS settings provided by PPP
 #
 # On demand options
 # "demand"  # Enable dial on demand
 # "idle 30"  # Link goes down after 30 seconds of inactivity
 # "10.112.112.112:10.112.112.113" # Phony IP addresses
  "ipcp-accept-remote" # Accept the peers idea of remote address
  "ipcp-accept-local" # Accept the peers idea of local address
  "holdoff 3"  # Wait 3 seconds after link dies before re-starting
 #
 # Dead peer detection
 # "lcp-echo-interval 15" # Send a LCP echo every 15 seconds
 # "lcp-echo-failure 3" # Make peer dead after 3 consective
 #    # echo-requests
 # 
 # Compression options - use these to completely disable compression
 # novj
  noaccomp noccp nobsdcomp nodeflate nopcomp novjccomp
 #
 # Dial-up settings
 # "lock"    # Lock serial port
  "115200"   # Set the serial port baud rate
 # "modem crtscts"   # Enable hardware flow control
 # "192.168.0.1:192.168.0.2" # Local and remote IP addresses
 )
 #
 # Dial-up PPP users need to specify at least one telephone number
 phone_number_ppp0=( "*99#" ) # Maximum 2 phone numbers are supported
 # They will also need a chat script - here's a good one
 chat_ppp0=(
 # 'ABORT' 'BUSY'
  'ABORT' 'ERROR'
 # 'ABORT' 'NO ANSWER'
 # 'ABORT' 'NO CARRIER'
 # 'ABORT' 'NO DIALTONE'
 # 'ABORT' 'Invalid Login'
 # 'ABORT' 'Login incorrect'
  'TIMEOUT' '5'
  '' 'AT+IPR=115200'
  'OK' 'ATZ'
  'OK' 'AT+cgdcont=1,"IP","internet3.voicestream.com"' # Put your modem initialization string here
  'OK' 'ATDT\T'
  'TIMEOUT' '60'
  'CONNECT' ''
  'TIMEOUT' '5'
  '~--' ''
 )

A few things to note:

  • The eth0 and eth1 settings (top of file) are irrelevant, but the gateway is set only for eth1, so as long as ppp0 is the only device that is started (up,) the gateway will come from the PPP connection. This is because routing problems will likely be related to interference from other interfaces.
  • Username and password are not specified
  • The only compression option not disabled is “novj” because the T-Mobile instructions ask to use TCP Header Compression
  • The serial port baud rate is set to “115200”
  • The chat script has most of the ABORT lines commented out — e.g.; we’re not looking for a dial tone
  • The
        '' 'AT+IPR=115200'
    

    chat line will ask the v195 to set it’s baud rate to match PPP (115,200)

Start and stop the connection with the usual suspects:

/etc/init.d/net.ppp0 start
/etc/init.d/net.ppp0 stop

The start script should reply with

 * Starting ppp0
 *   Bringing up ppp0
 *     ppp
 *       Running pppd ...
 *       ppp0 received address xxx.xxx.xxx.xxx/yy

ifconfig ppp0 should confirm this. Go ahead and check your spam,err.. email while you’re out in Coldspot, Saskatchewan.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.