Is anyone getting over 60kB/s when using Linux with NeoConnect Prime?

orin76

Expert Member
Joined
Sep 2, 2005
Messages
1,671
Reaction score
88
Location
Cape Town, South Africa
I've been trying to get Neotel working fully on a linux machine so I can use it as a gateway for my windows computers. I've tried OpenSuse 10.3, 11, Ubuntu 8.04 and now I'm on Ubuntu Intrepid (8.10 Beta), but I can't seem to overcome the speed limitation of the usbserial driver. My speed maxes out at about 470kb/s (I get 1000+ on Windows). I've spent many hours over the last 3 days googling and I've found numerous reference to using modprobe option, patching the usbserial driver or the airprime driver, but the procedures are a bit over my head and the solutions I tried gave errors.

I'm sure there must be some Linux users here who don't have a Masters in Computer Science and are getting 100kB/s or more on Neotel. Please help!!!
 
Just ran a speedtest from my windows machine and got 726kbps. I don't remember every getting a result that slow on windows, but it's still much faster than the speeds I get when using the usbserial driver in Linux.
 
I seem to have managed to solve my problem. Just ran a speed test and got 1096 kbps on Ubuntu 8.10 beta. That's more like it. I finally figured out how the option driver works. All I had to do was add the vendor and device information for the Neotel phone to the option.c file and recompile the module. The device is now immediately picked up when I plug it in, just like in Windows.
 
Did you get the same result from using modprobe usbserial VendorID:ProductID?

Did you just add under static struct usb_device_id option_ids[] = {
in /usr/src/linux/drivers/usb/serial/option.c

{ USB_DEVICE(0x????, 0x????) },

Do you also get the problem, where some reported that when it disconnects, they have to unload the usbserial module and reload it to get it working again?

Good work!
 
@orin76 Thanx

Working on a Linux readme and will look into this. Also considered on updating gnome-ppp for Neotel to add add in the USB reloading.
 
Did you get the same result from using modprobe usbserial VendorID:ProductID?
No. When using modprobe usbserial, I was getting approx. 60kB/s max.

Did you just add under static struct usb_device_id option_ids[] = {
in /usr/src/linux/drivers/usb/serial/option.c

{ USB_DEVICE(0x????, 0x????) },
Exactly.

Do you also get the problem, where some reported that when it disconnects, they have to unload the usbserial module and reload it to get it working again?

Good work!
I tested it last night and is seems to disconnect and reconnect without any issues. When I have time today, I'll do some more in-depth testing.
 
On a side note, how did you stumble across this? Knew that you had to edit that specific file.
 
On a side note, how did you stumble across this? Knew that you had to edit that specific file.

After hours of googling, I stumbled across this blog entry which describes how to modify airprime.c to recognise different high speed mobile devices. Since Ubuntu 8.10 beta did not have airprime, I tried option.c and noticed that it had a similar struct in the code to airprime.c. I then substituted option.c for airprime.c in the blog procedure and everything worked.
 
I'm using Gentoo, and my kernel is still 2.6.24

I noticed in /usr/src/linux/drivers/usb/serial/airprime.c that it states:
AirPrime CDMA Wireless Serial USB driver

In option.c it states: USB Driver for GSM modems

You probably want to use those bigger buffers in airprime.c
Funny why that driver is missing from Ubuntu Beta.

Thanks for you contribution!
 
I came across several posts in kernel development discussion groups where the developers/maintainers stated that the airprime driver was obsolete and and people should rather use option. That's probably why the Ubuntu guys decided to dump it from 8.10. I just wish they'd made it as easy to use as usbserial. I'd love to just be able to use modprobe and specify my product and vendor data without having to modify code and recompile every time I upgrade my kernel.
 
They must have changed the buffers in the newer kernels. I looked at my option.c file and noticed
Code:
{ USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
{ USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
So it appears that you are correct, they must have adapted the options.c for HSDPA that is high speed GSM and high speed CDMA. I'll stick with options.c

Ignore my previous post then.
 
After hours of googling, I stumbled across this blog entry which describes how to modify airprime.c to recognise different high speed mobile devices. Since Ubuntu 8.10 beta did not have airprime, I tried option.c and noticed that it had a similar struct in the code to airprime.c. I then substituted option.c for airprime.c in the blog procedure and everything worked.

+1

I was going to look into airprime.c ext month once my exams where over. I came accross another blog that refered to this but I forgot to tag it. From what I understand is that the Neotel device is very similar to one in Finland and they use the airprime hack for its drivers.

But any way, cool and will look into this.
 
Thanks for the tip. I wouldn't have noticed the problem if you hadn't mentioned it.
I've added the neotel device parameters to option.c, but now usbserial fails to create /dev/ttyUSB0 when I modprobe option. Without 'option' usbserial still works when I pass it the device parameters on the command-line, but only up to 60KB/s. Any ideas?
 
Never mind. I wasn't loading the new 'option'. Doh!
Got it loaded, but downloads still max out at 60KB/s. I'm using kernel 2.6.24-21 from Ubuntu 8.04. I'd very much like to avoid upgrading to 8.10. I like the LTS versions.
 
What are you talking about ? Please speak english.I would love to switch to Linux, but I cant even get my Neotel phone to connect.
I must be really old school, can remember dos commands, but linux is really greek to me.
I have read all the help files, but it is still byond my capability.
Much easier to connect usb and it gets picked up by windows.
 
Robocop. The beauty of Linux is that it can be as simple or as complex as you want it to be. There is a _lot_ of accessible complexity that the average user doesn't want to know about. Linux does every thing better than anything else (except games). If you're a gamer, get a console. Once you start digging into the workings of Linux, it becomes a game of effectively infinite depth. No one can know all the intricacies of all the subsystems of what makes a modern Linux distribution.
Download one of the desktop Ubuntu CDs. Boot directly from the CD and give Linux a try. It won't even change one byte on your hard-drive.
 
Yeah .... !!!!

Ubuntu8.04

Cool everybody, I just got mine sorted. I can now use my gnome-ppp without having to unplug my neotel device each time I drop the connection. I just connected and disconnected a couple of time to confirm it work.

Here is my readme I used:
Code:
As root:
    $ apt-get install linux-headers-`uname -r` linux-source build-essentials
    $ cd /usr/src
    $ tar xjvf linux-source-2.6.24
    $ cd /usr/src/linux-source-2.6.24/drivers/usb/serial
    $ vi option.c  

    Now add: Line 125

        // +++ chrisb 2008-10-24
        #define NEOTEL_DEVICE_VENDOR_ID             0x1d09
        #define NEOTEL_DEVICE_PRODUCT_ID            0x4000
        // +++

        static struct usb_device_id option_ids[] = {

               { USB_DEVICE(NEOTEL_DEVICE_VENDOR_ID, NEOTEL_DEVICE_PRODUCT_ID) },

    To compile:

     $  make -C /lib/modules/`uname -r`/build M=`pwd`

             make: Entering directory `/usr/src/linux-headers-2.6.24-21-generic'
               LD      /usr/src/linux-source-2.6.24/drivers/usb/serial/built-in.o
               CC [M]  /usr/src/linux-source-2.6.24/drivers/usb/serial/usb-serial.o
               CC [M]  /usr/src/linux-source-2.6.24/drivers/usb/serial/generic.o
               CC [M]  /usr/src/linux-source-2.6.24/drivers/usb/serial/bus.o
             ....
             make: Leaving directory `/usr/src/linux-headers-2.6.24-21-generic'

    Now move the drivers:

   $ cp option.ko /lib/modules/2.6.24-21-generic/kernel/drivers/usb/serial/option.ko

    You also need to load the new option

    $ vi /etc/modules

    And just add to the bottom of the list: 

        option

    Now Reboot or reload the "option" module


UPDATE: I just ran neotel speed test and my download speeds are awesome: http://speedtest.neotel.co.za/

Download Speed: 946 kbps (118.3 KB/sec transfer rate)
Upload Speed: 46 kbps (5.8 KB/sec transfer rate)

**Would like to mention that we are having super k@k connection in Somerset West tonight - could be the weather or something **
 
Last edited:
Yeah .... !!!!

Ubuntu8.04

Cool everybody, I just got mine sorted. I can now use my gnome-ppp without having to unplug my neotel device each time I drop the connection. I just connected and disconnected a couple of time to confirm it work.

Here is my readme I used:
Code:
As root:
    $ apt-get install linux-headers-`uname -r` linux-source build-essentials
    $ cd /usr/src
    $ tar xjvf linux-source-2.6.24
    $ cd /usr/src/linux-source-2.6.24/drivers/usb/serial
    $ vi option.c  

    Now add: Line 125

        // +++ chrisb 2008-10-24
        #define NEOTEL_DEVICE_VENDOR_ID             0x1d09
        #define NEOTEL_DEVICE_PRODUCT_ID            0x4000
        // +++

        static struct usb_device_id option_ids[] = {

               { USB_DEVICE(NEOTEL_DEVICE_VENDOR_ID, NEOTEL_DEVICE_PRODUCT_ID) },

    To compile:

     $  make -C /lib/modules/`uname -r`/build M=`pwd`

             make: Entering directory `/usr/src/linux-headers-2.6.24-21-generic'
               LD      /usr/src/linux-source-2.6.24/drivers/usb/serial/built-in.o
               CC [M]  /usr/src/linux-source-2.6.24/drivers/usb/serial/usb-serial.o
               CC [M]  /usr/src/linux-source-2.6.24/drivers/usb/serial/generic.o
               CC [M]  /usr/src/linux-source-2.6.24/drivers/usb/serial/bus.o
             ....
             make: Leaving directory `/usr/src/linux-headers-2.6.24-21-generic'

    Now move the drivers:

   $ cp option.ko /lib/modules/2.6.24-21-generic/kernel/drivers/usb/serial/option.ko

    You also need to load the new option

    $ vi /etc/modules

    And just add to the bottom of the list: 

        option

    Now Reboot or reload the "option" module


UPDATE: I just ran neotel speed test and my download speeds are awesome: http://speedtest.neotel.co.za/

Download Speed: 946 kbps (118.3 KB/sec transfer rate)
Upload Speed: 46 kbps (5.8 KB/sec transfer rate)

**Would like to mention that we are having super k@k connection in Somerset West tonight - could be the weather or something **

ugh why do people use vi...it is terrible
 
Top
Sign up to the MyBroadband newsletter
X