# [HOWTO] Usb cellphone setup (vx6100/vx4400)

## xaos5

I still have some unsolved things before I can finish this guide! Look at my posts near the end to help me!

Ok, I got a new cord that works great with linux and detects my phone as a vx6000 even though its a vx6100 but that doesn't matter. This is a guide to help setup your phone to use it to its fullest capabilities.

Requirements:

-Linux 2.6.x kernel

-udev

-wvdial

-bitpim

-ppp

Kernel Modules required

usb modem:

```
 Device Drivers -> USB Support -> <*> USB Modem (CDC ACM) Support
```

usb support:

```
 Device Drivers -> USB Support -> [*]   USB device filesystem

 Device Drivers -> USB Support -> <*>   EHCI HCD (USB 2.0) support 

 Device Drivers -> USB Support -> <*>   OHCI HCD support 
```

NOTE: You may have to apply other modules but this setup should work in most cases.

Need packages

This should be self-explanatory (use emerge -av to show USE flags and for it to ask if you want them emerged):

```
emerge ppp wvdial bitpim
```

In order to allow users to use this you need to add them to the dialout group, to do this type this in:

```
usermod -aG dialout username
```

Configuring wvdial

make sure you have your phone plugged in and is on. Now we need to have wvdial make a configuration file and detect your phone. As root enter this command:

```
wvdialconf /etc/wvdial.conf
```

this should output something like this:

```
Scanning your serial ports for a modem.

ttyS0<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud

ttyS0<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 115200 baud

ttyS0<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.

Port Scan<*1>: S1   S2   S3

ttyACM0<*1>: ATQ0 V1 E1 -- OK

ttyACM0<*1>: ATQ0 V1 E1 Z -- OK

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 -- OK

ttyACM0<*1>: Modem Identifier: ATI -- ERROR

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 +FCLASS=0 -- OK

Found an USB modem on /dev/ttyACM0.

Modem configuration written to /etc/wvdial.conf.

ttyACM0<Info>: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
```

As you can see it detected my phone on /dev/ttyACM0, which may be different in your case. If you try to run wvdial, it will complain about not having a valid phone number, username, and password. We need to now edit our configuration file we just created with your favorite text editor still as root:

```
nano /etc/wvdial.conf
```

You can replace nano with vi, gedit, kwrite, etc. Here is my /etc/wvdial.conf:

```
[Dialer Defaults]

Modem = /dev/ttyACM0

Baud = 460800

Init1 = ATZ

Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0

;ISDN = 0

Modem Type = USB Modem

 Phone = 802-1880

 Username = test

 Password = test
```

You can commend out ISDN = 0 and edit it to your liking. That phone number is a juno access number which I don't have an account, so I just used test/test as a user/pass for testing purposes.

You can now type in wvdial and it should work. Try to ping something with the ping command like so:

```
ping -c 5 www.google.com
```

If you don't get a ping you might have to setup your name servers:

```
nano w /etc/resolve.conf
```

enter your nameserver information, it might look something like this:

```
nameserver xx.xx.xx.x

nameserver xx.xx.xx.x
```

First one should be your ISP's DNS and second one should be your ISP's secondary DNS address.

This is still a work in progress and i'm tired, I'll add the rest laterLast edited by xaos5 on Sun Dec 25, 2005 3:09 pm; edited 3 times in total

----------

## xaos5

bump

----------

## Jarhead

Same problem....  Has anyone found a solution?

----------

## xaos5

I haven't found one, if you find anything let me know, I don't think there are any drivers for this cord, thats what I get for buying a cheap one off of ebay...

----------

## Jarhead

I just have a straight USB cable with an adapter that plugs into the bottom of the phone.  I don't understand why I would need a special module for it...  Has anyone gotten this working with their machine?

----------

## Jarhead

This is what lsusb gives me:

```

Bus 001 Device 002: ID 1004:6000 LG Electronics, Inc. VX4400/VX6000 Cellphone

```

----------

## xaos5

Im thinking of buying a new cable, as I completely wiped out my windows partition with debian etch, don't know if that was a wise choice yet. at least I have a pure legal system now  :Very Happy: 

----------

## Jarhead

The phone is recognized, so I don't think it is the cable in my case.  Does anybody know what the deal is?

----------

## xaos5

If anybody has a cord that works with this phone i'm up for suggestions, I have some money to burn now   :Very Happy: 

would a straight usb cord work by any chance without the serial convertor?

----------

## quag7

I have the VX6100 working with Bitpim via USB.

I am using a "USB Data Cable" by a company called INSTEN, which has a sticker on it saying VX6000 (though I am using it with a VX6100).  I bought this cable for $.49 (49 cents) from eforcity.com via an ebay auction.   I don't know if the kind of cable I used makes a difference.  This cable works, and it is about as cheap as any kind of cable gets (< $1.00)...

I struggled with this for awhile, until I thought to:

(1) Plug the phone into the USB cable

(2) Turn the phone (which was on) off.

(3) Turn the phone back on again.

I was getting an error about the port being in use up to this point, but power cycling the phone suddenly made it available (this should have occurred to me sooner).

I used the bitpim that is in portage - as of this writing, that is 0.7.33

I emerged this.

Then, I recompiled my kernel with:

Device Drivers ->

  USB Support ->

    <*> USB Modem (CDC ACM) Support 

Obviously also I had all the basic USB stuff - Support for Host Side USB, USB Device Filesystem, UHCI HCD  (UHCI is appropriate for my motherboard)

Kernel version 2.6.14-gentoo-r2

Created this file:

/etc/hotplug/usb/usbcell

Contents of which were:

```
#!/bin/bash

if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]

then

        chown quag7 "${DEVICE}"

        chgrp restricted "${DEVICE}"

        chmod 660 "${DEVICE}"

fi
```

This is owned by root and set to executable by root.  Note -- In the above, you will want to set a different user and group to chown/chgrp the phone to.

In /etc/hotplug/usb.usermap I added this line (the only line in this file):

```
usbcell 0x0003 0x1004 0x6000 0 0 0 0 0 0 0 0 0
```

Then I restarted hotplug (as root):

/etc/init.d/hotplug restart

Then, I started bitpim.

I turned the phone off completely, closing it shut and letting it power down.

Then I opened it and turned it on.

In bitpim I went to Edit - Settings

I selected the middle Browse button next to Com Port.

In Available Ports I highlighted: 

(*) USB Device - Vendor LG Electronics Product VX Series Phone (Direct USB Connection) (Interface Diagnostics Interface)

I clicked OK

I made sure LG-VX6100 was selected for Phone Type.

The Com Port now appeared as: usb::001::007::2

I clicked OK.

Then I went to Data - Get Data and it was able to pull down the info from my phone, as well as write data back.

On my system, I have to power down, then power on the phone every time I run bitpim, which is a minor nuisance.

However, it does finally work for me.

---

Oh, also, as you probably know, your VX6100 can be used as a modem (it *is* a modem).  That is to say, you can connect it to a computer and use it to dial into an ISP or a BBS or what have you.  It actually has the full AT command set and dials normally this way.

Set any communication programs you have to use (as "serial"): /dev/ttyACM0

You may have to reset (power cycle) the phone; I'm not sure.  

However, I just dialed out to a BBS using the VX6100 as a modem using minicom (in portage), which was kind of cool.  I've heard you can send faxes too but I haven't attempted this.  I can see some good uses for this with laptops, such as connecting to the internet from inside a car or an outdoor area devoid WiFi connections.   When you do, you'll see a "DATA CALL" screen pop up on the phone itself.

I got a surprisingly good connection speed too.

Not bad for a 49 cent cable  :Smile: 

----------

## xaos5

sweet, I knew it was possible. I found this right here: http://store.eforcity.com/clge6000dat1.html could you pm me or post here the ebay # so I can see exactly what you got? that link is showing $9.99 which is a bit more then what you mentioned above.

----------

## quag7

Appears to be the same picture as in the auction: 

Auction #: 5836634552

Though the cable does not look exactly like that - the big chunky part in the middle of the cable, does not exist.  However the same pic was used in the auction I bought it from, so it's probably the same thing.  There's a Buy It Now link on that same auction so they must have a whole bunch for sale.  The price there on ebay is still $.49

----------

## xaos5

ok I commited to buying it, I hope this works. If not, wasted $7.48 after shipping.

----------

## geekmug

If you are using udev (which you should be), the hotplug script should be replaced with added a rule to udev. Create a file /etc/udev/rules.d/99-usbcell.rules which contains:

```
KERNEL=="ttyACM[0-9]*", NAME="%k", GROUP="tty", MODE="0660"
```

That will create the device node with the group assigned to "tty" and the mod set to be rw for owner and group. Any user that needs to use the device needs to be a member of the tty group then. If one so desired to create a different group, then the change is trivial.

----------

## quag7

Thanks, the udev line works well.

I would also note that the bitpim in Portage is fairly old.  I made an overlay and simply took bitpim-0.7.33.ebuild and made a new ebuild from that (no changes) to bitpim-0.8.04.ebuild.

This updated version of bitpim works a little better; it can grab SMS and call history as well (0.7.33 can't).  It still can't write calendar entries to the phone, but that limitation is expressly listed in the docs.

I also get a whole mess of errors if I try to import an mp3 or wav file into the ringtones section.  Bitpim pops up a dialog for converting wavs to mp3 or to transcode mp3s to a lower bitrate.   It could be some kind of configuration problem on my system with Python.  I'm having trouble figuring that out from the errors.

But no matter, really - LAME can encode an mp3 appropriate for a ringtone on the VX6100 with:

```
lame -m m -q 0 -b 32 --cbr --resample 22.05 ./input.wav ./output.mp3
```

You could also use an .mp3 for input; it will transcode.

bitpim won't pop up that resample dialog for mp3s imported with these settings.  I used Audacity to amplify the volume significantly first.  

Another thing I did was set one of my systems up to answer calls on my spare line.  I can use the VX6100 connected to my laptop now to dial into my home system and either use it as a remote shell connection in minicom, or else start a PPP connection.  This is pretty nice because it means I don't have to pay for an extra dialup ISP connection.  I'm sure people have been doing this for years but it's new for me.  Now I can easily get internet access while on the road for only the cost of plan minutes (or none if I do it after peak which is likely to be the case most often).  I don't have to look for WiFi which is nice since most of the time I want to get on the net remotely I'm out on the highway or in the desert somewhere.  Performance via this method tends to be fairly slow but acceptable (through Verizon here in Tucson).

----------

## xaos5

 *quag7 wrote:*   

> Another thing I did was set one of my systems up to answer calls on my spare line.  I can use the VX6100 connected to my laptop now to dial into my home system and either use it as a remote shell connection in minicom, or else start a PPP connection.  This is pretty nice because it means I don't have to pay for an extra dialup ISP connection.  I'm sure people have been doing this for years but it's new for me.  Now I can easily get internet access while on the road for only the cost of plan minutes (or none if I do it after peak which is likely to be the case most often).  I don't have to look for WiFi which is nice since most of the time I want to get on the net remotely I'm out on the highway or in the desert somewhere.  Performance via this method tends to be fairly slow but acceptable (through Verizon here in Tucson).

 

I was wondering how you set that up? Just a normal ppp connection or something? The way I seen it work as you sign up for verizons web browsing on the phone then you could use that to your computer. I've seen some people using their new 3G network with really fast speeds.

----------

## xaos5

lsusb:

```
Bus 003 Device 004: ID 1004:6000 LG Electronics, Inc. VX4400/VX6000 Cellphone
```

bitpim 0.7.34:

```
Property     Value               Description 

active       True                Your operating system shows this driver and port is correctly configured

available    False               It was not possible to open this port

name         usb::003::004::1
```

```
Automatic

===== Ports not available =====

USB Device - Vendor LG Electronics Product VX Series Phone (Direct USB Connection) (Interface Modem Interface) 

USB Device - Vendor LG Electronics Product VX Series Phone (Direct USB Connection) (Interface Diagnostics Interface)
```

Everything is compiled into my kernel for usb except the one mentioned above (USB_ACM). I don't use hotplug but it seems like its being detected just fine, is there a way to do this without using hotplug?

EDIT: USB Device - Vendor LG Electronics Product VX Series Phone (Direct USB Connection) (Interface Diagnostics Interface) is availble and works while running bitpim as root. How can I set the permissions for a normal user to use it?

----------

## xaos5

ok bitpim found a usb modem on /dev/ttyACM0 but kppp can't query the modem. what am I doing wrong?

```
# dmesg

cdc_acm 3-2:1.0: ttyACM0: USB ACM device

usbcore: registered new driver cdc_acm

drivers/usb/class/cdc-acm.c: v0.23:USB Abstract Control Model driver for USB modems and ISDN adapters
```

```
# cat /dev/ttyACM0
```

returns nothing, just comes right back to the command line.

----------

## quag7

Try minicom, and see if you can send it basic AT commands...I don't personally know anything about kppp.  But if you can get AT responses, then you can make some assumptions about what to try next.

----------

## xaos5

I can only use the device with root access. I have to run bitpim as root which is somewhat annoying. How can I change the permissions so that I can use it as a normal user?

/etc/udev/rules.d/50-udev.rules:

```
KERNEL=="ttyACM[0-9]*", NAME="%k", GROUP="users", MODE="0660"
```

do I have to change anything afterwords like a reboot or something?

----------

## xaos5

ok, I'm trying to get my cellphone working as a non-root user which is turning out to be a pain!

I found it listed in my /sys:

```
localhost david # udevinfo -a -p /sys/class/usb_device/usbdev3.4

udevinfo starts with the device the node belongs to and then walks up the

device chain, to print for every device found, all possibly useful attributes

in the udev key format.

Only attributes within one device section may be used together in one rule,

to match the device for which the node will be created.

device '/sys/class/usb_device/usbdev3.4' has major:minor 189:259

  looking at class device '/sys/class/usb_device/usbdev3.4':

    KERNEL=="usbdev3.4"

    SUBSYSTEM=="usb_device"

    SYSFS{dev}=="189:259"

follow the "device"-link to the physical device:

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-2' :

    BUS=="usb"

    ID=="3-2"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="02"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="16"

    SYSFS{bMaxPower}=="100mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 3"

    SYSFS{bcdDevice}=="0000"

    SYSFS{bmAttributes}=="e0"

    SYSFS{configuration}==""

    SYSFS{devnum}=="4"

    SYSFS{idProduct}=="6000"

    SYSFS{idVendor}=="1004"

    SYSFS{manufacturer}=="LG CDMA USB Modem"

    SYSFS{maxchild}=="0"

    SYSFS{product}=="Qualcomm CDMA Technologies MSM"

    SYSFS{speed}=="12"

    SYSFS{version}==" 1.01"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3':

    BUS=="usb"

    ID=="usb3"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="09"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="8"

    SYSFS{bMaxPower}=="  0mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0206"

    SYSFS{bmAttributes}=="e0"

    SYSFS{configuration}==""

    SYSFS{devnum}=="1"

    SYSFS{idProduct}=="0000"

    SYSFS{idVendor}=="0000"

    SYSFS{manufacturer}=="Linux 2.6.14-ck5 ohci_hcd"

    SYSFS{maxchild}=="3"

    SYSFS{product}=="OHCI Host Controller"

    SYSFS{serial}=="0000:00:02.1"

    SYSFS{speed}=="12"

    SYSFS{version}==" 1.10"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1':

    BUS=="pci"

    ID=="0000:00:02.1"

    DRIVER=="ohci_hcd"

    SYSFS{class}=="0x0c0310"

    SYSFS{device}=="0x0067"

    SYSFS{irq}=="16"

    SYSFS{local_cpus}=="ff"

    SYSFS{modalias}=="pci:v000010DEd00000067sv000010DEsd00000C11bc0Csc03i10"

    SYSFS{subsystem_device}=="0x0c11"

    SYSFS{subsystem_vendor}=="0x10de"

    SYSFS{vendor}=="0x10de"

  looking at the device chain at '/sys/devices/pci0000:00':

    BUS==""

    ID=="pci0000:00"

    DRIVER=="unknown"
```

lsusb:

```
localhost david # lsusb

Bus 003 Device 004: ID 1004:6000 LG Electronics, Inc. VX4400/VX6000 Cellphone

Bus 003 Device 002: ID 046d:c00e Logitech, Inc. M-BJ69 Optical Wheel Mouse

Bus 003 Device 001: ID 0000:0000

Bus 002 Device 002: ID 046d:c30a Logitech, Inc.

Bus 002 Device 001: ID 0000:0000

Bus 001 Device 001: ID 0000:0000
```

```
localhost david # ls /dev

adsp     hda1     loop5      ram10   snd     tty18  tty33  tty49  tty7       vcs2

audio    hda2     loop6      ram11   sound   tty19  tty34  tty5   tty8       vcs3

bus      hdb      loop7      ram12   stderr  tty2   tty35  tty50  tty9       vcs4

cdrom    hdb1     lp0        ram13   stdin   tty20  tty36  tty51  ttyACM0    vcs5

cdrw     hdc      mem        ram14   stdout  tty21  tty37  tty52  ttyS0      vcs6

console  hpet     misc       ram15   tts     tty22  tty38  tty53  ttyS1      vcs7

core     initctl  mixer      ram2    tty     tty23  tty39  tty54  ttyS2      vcsa

cpu      input    null       ram3    tty0    tty24  tty4   tty55  ttyS3      vcsa1

disk     kmem     nvidia0    ram4    tty1    tty25  tty40  tty56  urandom    vcsa12

dsp      kmsg     nvidiactl  ram5    tty10   tty26  tty41  tty57  usbdev1.1  vcsa2

dvd      log      parport0   ram6    tty11   tty27  tty42  tty58  usbdev2.1  vcsa3

dvdrw    loop     port       ram7    tty12   tty28  tty43  tty59  usbdev2.2  vcsa4

fb       loop0    psaux      ram8    tty13   tty29  tty44  tty6   usbdev3.1  vcsa5

fb0      loop1    ptmx       ram9    tty14   tty3   tty45  tty60  usbdev3.2  vcsa6

fd       loop2    pts        random  tty15   tty30  tty46  tty61  vcs        vcsa7

full     loop3    ram0       rd      tty16   tty31  tty47  tty62  vcs1       zero

hda      loop4    ram1       shm     tty17   tty32  tty48  tty63  vcs12

```

/dev/ttyACM0 is linked as a modem (my phone works as a modem) which I have been able to successfully write udev rules for.

I am using bitpim and it sees three things:

-USB modem (/dev/ttyACM0)

-USB Device - Vendor LG Electronics Product VX Series Phone (Direct USB Connection) (Interface Modem Interface)

-USB Device - Vendor LG Electronics Product VX Series Phone (Direct USB Connection) (Interface Diagnostics Interface)

The 3rd option works only as root, so i'm figuring I have to write some udev rules to allow others to use it. Heres the problem though, I have no clue how to do that if I can't find it in /dev . Assuming it should be /dev/usbdev3.4

----------

## xaos5

bump

----------

## Jarhead

Has anybody found out how to fix the python configuration problem?  Functionality is hit and miss because of it.  For instance, I can generally get the phone data but can't write to it.  I have python set in my USE flags and it still doesn't work...

----------

