Getting USB modem to work

Booting, installing, newbie
Message
Author
User avatar
malderson
Posts: 49
Joined: Thu 15 Nov 2007, 21:34
Location: Wisconsin, USA

Success!

#21 Post by malderson »

Success! I'm sending this using the Zoom modem! And you are right. It's faster than the modem in my IBM R50 laptop. THANK YOU!

What finally worked was the last method Mouldy suggested. Just to recap for anyone else who tries this (since it all ended up scattered through numerous threads) here is what finally worked for Puppy 3.01 live CD install (not necessarily in this exact order). It helps to have a computer on broadband available for the downloads. The sfs files are about 50+ M each:

Following Mouldy's directions:

Downloaded and installed devx_301.sfs and kernel-src_301.sfs. This is done for live CD version by placing them in the same place on the harddrive as pup_save.2fs. Reboot. When the sfs wizard pops up, select both to add to puppy. Reboot.

Install procps-3.2.7.pet and dgcmodem-1.03-i686.pet.

It took me a couple tries to figure out where the kernel files were (they are in usr/scr/linux-2.6.21.7). Then, in a terminal, enter at the command prompt (hopefully receiving similar resposes):
# dgcconfig
Conexant DGC USB modem driver, version 1.03

If you need assistance or more information, please go to:
http://www.linuxant.com/

When reporting a problem for the first time, please send
us the file generated by "dgcconfig --dumpdiag".

No pre-built modules for: unknown-unknown linux-2.6.21.7 i686

Trying to automatically build the driver modules...
(this requires a C compiler and proper kernel sources to be installed)

Where is the linux source build directory that matches your running kernel?
[/lib/modules/2.6.21.7/build] /usr/src/linux-2.6.21.7

Building modules for kernel 2.6.21.7, using source directory
/usr/src/linux-2.6.21.7. Please wait...
done.

The /dev/modem alias (symlink) points to ttySL0
#
If you don't get the symlink line, the install failed.
Continue at prompt:
# modprobe cdc-acm

# mknod /dev/ttyACM0 c 166 0
# rm /dev/modem
# ln -s /dev/ttyACM0 /dev/modem
#


Try to connect with Pupdial. I had to manually build the file /etc/wvdial.conf, as it didn't exist yet, and Pup could not find the modem without it. (The help button at the bottom of Pupdialer has guidance.)

Success!
Reboot. Now when I tried to connect, it said /dev/modem had too many symbolic layers! When I checked, /dev/modem seemed to be pointing at itself! Opened a terminal and entered:
# modprobe cdc-acm

# rm /dev/modem
# ln -s /dev/ttyACM0 /dev/modem
#
Pupdial could connect again!

Opened /etc/rc.d/rc.local in Geany and add the lines:
modprobe cdc-acm
rm /dev/modem
ln -s /dev/ttyACM0 /dev/modem
Rebooted several times, and can connect each time! Hoorah!

Thanks again to Mouldy and to Muggins. I will continue to watch this thread just in case there is any further progress, like a PET that didn't require the .sfs files. But even as is, Mouldy has created a workable solution even a newbie can handle! :-)

User avatar
rerwin
Posts: 2017
Joined: Wed 24 Aug 2005, 22:50
Location: Maine, USA

dgc driver integration into Puppy

#22 Post by rerwin »

Thanks. mouldy, for the IDs.

After I posted above I dug deeper into the other thread, as well, and see that the problem is much more than I initially thought. I have spent the past few weeks (!) muddling through my modem improvements I submitted for 4beta, I feel I know enough to be really dangerous in this area.

I am eager to try integrating this modem into the puppy modem initialization procedure. I would like to work with you and the others to eventually get this dgc stuff into the official puppy. I read the linuxant license for the dgcmodem package and see that it is a standard GPL license, allowing open distribution of it. So we can add it to Puppy.

We start with the IDs I found at linuxant, which includes yours:
# USB ID 0572:1320
# USB ID 0572:1321
# USB ID 0572:1322
# USB ID 0572:1323
# USB ID 0572:1324
# USB ID 0572:1328
# USB ID 0572:1329
# USB ID 0803:3095

I need to get them into /etc/rc.d/MODULESCONFIG and add code to read these IDs as "usb overrides".

I examined the tar.gz and dotpet files, as well as the dgcconfig script. I think that part is over my head. It is not clear what driver module(s) you end up with. The overrides need a specific driver to load. So I am stuck there.

Does this package require purchase of a "key" to unlock the speed restriction (14.4 kbs) as do other Linuxant "free" drivers? It appears that the other such drivers are not inside Puppy, so this one probably should not be, either. What about "regions" that I see code for in dgcconfig?

I am thinking that, at most, I could put in the recognition of the modems and reference to some generic driver name that would be a link to whatever the real driver is, as determined by the result of dgcconfig. Does it make any sense to even do that much? Some adjustment could be done in a "service script", but the running of dgcconfig probably should be independent of Puppy itself. It appears each user has to compile for himself or at least choose from country-specific flavors. Yech!

Maybe we should hash this out to see what's practical. An interesting, but daunting, project.
Richard

User avatar
mouldy
Posts: 663
Joined: Wed 04 May 2005, 21:47

#23 Post by mouldy »

This dgc driver unlike the other linuxant.com drivers is free with no speed restrictions. I wouldnt have made dotpet for it otherwise and I finally saw the GPL license.

I am also not stating things quite exact enough about the cdc-acm relationship. Here is a quote from another forum from somebody that obviously knows more than me:
jensbjorgensen wrote:So I purchased one of these modems for my eeepc. But I also hooked it up to my Gutsy Gibbon kubuntu desktop. The modem seems to implement a "normal" CDC ACM interface. Now, usually the linux kernel automatically picks these up. When this modem is connected the kernel sees the class of the device indicating it conforms to CDC ACM. It fails though because it cannot find the extra CDC ACM data in the USB descriptors for the device. However, I ran lsusb -v on the device and the output there *did* show the CDC descriptor info. Well, it turns out that the vendor can add extra descriptor information after the configuration, interface, setting, and endpoint. The driver looks for the data both on the interface and on the first endpoint of that interface. However, Zoom in all their wisdom stuck the extra data on the 2nd endpoint of the data (2nd) interface where the cdc-acm driver won't look for it. So the driver doesn't find it and you see in your kernel messages the error "Zero length descriptor references". I've created a very small patch to the driver that upon matching the idVendor and idProduct on the device looks for the CDC descriptor info after the 2nd endpoint on the 2nd interface. Once I did that the driver seems to work fine and the modem shows up on /dev/ttyACM0. I was able to interactively type AT commands to the modem. I didn't actually try a data call though I will try a fax though not today.

The weird thing I can't figure out is why Zoom bothered to license LinuxAnt's driver when all they needed to do was offer a little patch to the kernel. Go figure. When I get time I'll try to put together a proper patch and post it somewhere that it may make it into the trunk.
Unfortunately I've seen nothing more posted on this topic from this person. Been nice if he's posted his little patch, even a crude one.

User avatar
mouldy
Posts: 663
Joined: Wed 04 May 2005, 21:47

Re: Success!

#24 Post by mouldy »

malderson wrote:Success! I'm sending this using the Zoom modem! And you are right. It's faster than the modem in my IBM R50 laptop. THANK YOU!...<snip>
You've done very good job succinctly restating whole process in one single post and figuring out all the steps I gave in rather chopped up fashion. Just add that sometimes you can use the precompiled module. I got it to load/work around half the time I tried it. Unfortunately it doesnt always work. Compiling it yourself always works. Just real hassle to download stuff necessary to do it. Anybody needing to compile a dialup modem driver obviously has dialup, and the developement and kernel packages are not dialup friendly downloads.

By way congrats on getting it working. It is a good modem though at times it almost seems Zoom should pay me for the effort of getting it working rather than me paying them.

Wilsonb
Posts: 57
Joined: Wed 04 Jul 2007, 00:10

#25 Post by Wilsonb »

I think I am trying to do very similar thing as you. Please let me know.
I am still a green to all this and don't know what I'm doing..
Puppy 4 using Palm Treo 700p via USB as modem.
App and simple linux instructions here.
http://www.mobile-stream.com/usbmodem.html

I got this setup working under great Ubuntu without a problem.

Im trying to use it native Puppy build.
When I tried in Puppy and run the ;
pppd /dev/ttyACM0 call ppp-script-evdo-template
result;
Failed to open /dev/ttyACM0: No such device or address

The file is created when I typed;
mknod /dev/ttyACM0 c 166 0
The ttyACM0 file is empty. Should it be?

Puppy hardware-interfaces information
When I look in Hardinfo it recognizes the Treo Modem under USB device as;
product; Treo 755 USB Modem
manufacturer; Mobile Stream
kernel-Module= (none)



But wonder if the module is actually loading / recognizing.. I don't know enough about puppy / linux from here..

When using the connect wizard and select connect via dialup analog mode, it doesn't detect it.
Should it?

Being a different modem should I still use the
procps-3.2.7.pet & dgcmodem103.tar.gz ?
I assume from looking at it dgcmodem file are specific drivers for a different modem.

Am I making any sense?
Any ideas?

Please ... would like to get this working..

Post Reply