Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I recently installed Suse 10.0 OSS and I am generally happy with the OS, except for one thing: I can't get my modem to work.
I have a Zoom 2949L external V.90 modem that I bought a while ago, and it works perfectly for XP. But I have tried to get this beast working in three separate distros (FC5, Mandriva LE 2006 and now Suse 10.0), and they all act the same.
XP lists the modem as being on COM 2, so in Suse I set a link as follows:
ln -s /dev/modem /dev/ttyS1
When I attempt to query the modem from within kppp, it'll either tell me that it can't open the modem lock file or it'll query the modem but none of the ATI responses will be there. In addition, the commands will be completely blank. I assume the right port is selected because whenever I attempt to reset the modem, lights flash on the front of it, but I can't enter AT commands on it.
I have also attempted using setserial as follows:
setserial ttyS1 autoconfig
Again, without success.
I know that this modem works because one time after doing something that I can't recall, I was able to dial out and connect using the terminal option within kppp.
All of this is being done within my normal non-root account using su whenever necessary. Should I be logged into root for any or all of this?
Any help would be greatly appreciated, as well as detailed instructions (I'm not really a noob, just someone with very little patience for smartass hardware that doesn't behave how it should.)
Try accessing your modem as root. Does it work then? If it does, then the modem has its permissions set such that only root can access it. You then need to set it up so that a regular user acn access the modem.
I remember that when I set up the modem, I selected that the connection could be started up manually. That wouldn't be the same as making it available for non-root users, would it? If not, how would I go about doing that?
To linux, the modem is a character device (i.e. a special type of file but nonetheless a file). Like any other file, it has file permission settings and those need to be set so that users other than root can read from and write to that file. Further, the actual device file, and not any links that point to it, needs to have its permission settings set. The links that then point to the device file will then fall in line accordingly.
Going by my Mandrake 9.0, /dev/ttySi (where i=0, 1, 2, etc.) was a link to /dev/tts/i, which were the actual character devices. Looking at /dev/tts/i, the permissions set for the devices were rw for owner = <logged in user>, rw for group = tty and none for everyone else. Given that the owner of the character device was set to whichever user was currently logged in, one of the functions of the login script on my Mandrake 9.0 is to set up the character devices for use by the logged in user.
Applying what I see with my Mandrake 9.0 linux to your Suse 10.0 linux, I would suggest the following:
(1) expect /dev/ttyS1 to be a link;
(2) follow the link and see where it goes;
(3) remove all of the links that you have so far created so as to restore the modem as to how Suse originally set it up;
(4) log in as a regular user and see what permissions are set for the modem. If it still belongs to root and root only, then that would suggest that no login scripts are playing with it. If that is the case, then log back out and login as root on a virtual terminal console (e.g. <CTRL>-<ALT>-<F1>) and change the group name of the modem to group modem (assuming that that is not already the case) and set the group permissions to rw. Return to the X console (<CTRL>-<ALT>-<F7>) and log back in as a regular user. Are the modem's permissions and ownership still the same? If so, add your regular user to the modem group.
(5) In any case, if no Suse login scripts are playing with your modem, you should always leave root as the owner and give access to regular users only through the modem's group permissions.
Once you can access the modem as a regular user, you should be able to use programs like KPPP to set up the modem. I wouldn't bother with setserial.
I'm not sure how to do the entire permissions deal, but I was able to confirm that the modem is responding.
I took a suggestion off of the Club Mandriva site (I decided to remove Suse and replace it with Mandriva), and they said to do "echo > /dev/ttyS1" to see if the modem responds. It did, but I ended up reinstalling Suse.
I did the same thing with Suse and it worked again, but I'm now back where I was. KPPP still acts like it's querying the modem, but the ATIs come up blank. wvdialconf still doesn't see the modem at all, so it can't set anything up. I've tried creating a symbolic link to /dev/modem and "setserial /dev/ttyS1 autoconfig auto_irq" and the results are all the same--absolutely nothing.
I've even tried connecting from within root, but nothing.
One interesting thing I noticed was that Mandriva actually caught the modem during installation whereas Suse didn't.
One more possible clue: is your modem plugged into the COM port and powered up when you boot up linux? If it isn't, when linux boots it might not be building the necessary device file in /dev and that might be causing your problem. Another related problem might be that your modem might require a kernel module that is not normally loaded but I don't know what the name of that kernel module might be. I have tagged this post so that someone who does know the kernel module name can be alerted to this and give the name of that module.
If you haven't already, try booting up linux with the modem plugged in and powered up, to see what happens. Either way, please post back your results.
"It's also an older modem (2000), and I am looking at getting a newer one."
Since it is an external modem (i.e. a hardware modem), its age shouldn't make a difference.
But I'm still not clear on where in /dev your modem resides. In other words, what is the name of the character device file that ties directly to the modem? I'm not looking for links here (i.e. not /dev/ttyS1) but the name of the actual character device file.
I finally got sick of screwing around with Suse about the modem, so I attempted to install Ubuntu over it.
For some reason, the installation didn't work, so I ended up putting Suse back on again. This time, however, it recognized the modem as an "AT modem." I attempted to get online, and...well, let's just say that this is being written in Konqueror as we speak.
Now, all I have to do is update my system piece by piece over the next week or so.
Looks like the threat of replacement finally got it to shape up and fly right. Funny how it didn't do that with Fedora or Mandriva...
One thing has been established: your modem can be made to work with your linux, since it already worked once. It appears that a shell script somewhere is changing the modem's permissions so that it doesn't work with KPPP. It all comes back to what the modem's character device file's permissions are and to find those out you need to look at the actual modem character device file.
"I'm not sure what you mean. About all I know is that it's supposed to be on COM2 in XP, and that that would correspond to /dev/ttyS1."
Forget windows XP where devices and files are different. In linux, everything is a file with a pathname and a filename, be it an actual file on disk or a piece of hardware such as a modem. Since everthing in linux is a file, you can look at everything simply by using a file manager (e.g. konqueror) and while running as a regular user (which is recommended). Linux makes it even easier. It puts all of its hardware device files in /dev. Consequently, /dev is where you need to browse with your file manager.
On my system, /dev/ttyS0 and /dev/modem are both links to /dev/tts/0 and /dev/tts/0 is the actual character device file. It is a snap to tell a link from the actual character device file. In the GUI file manager (e.g. konqueror), simply right click on and select "properties" for each of the items (e.g. /dev/ttyS0) that you want to know about. If the item is a link, you will see a "points to..." somewhere on the properties window. If the item is the actual file, you will see a size.
So, browse /dev with your file manager, look for the items mentioned here and post back here where your actual modem character device file is and what links to it currently exist on your system?