?
Solved

Getting mgetty+sendfax to work in LINUX

Posted on 2007-10-02
15
Medium Priority
?
488 Views
Last Modified: 2013-12-27
I've just installed a connexant intenal fax modem into a LINUX RHEL4 box.  I've also downloaded and installed the modem driver from linuxiant for the LINUX kernal on the box.  I would like to use mgetty+sendfax but get errors.  Starting with senfax I get the error 'Trying fax device '/dev/ttyS0 ... locked'.  The internal modem is installed in the second of the black slots in the machine.  The first slot is white and does not have the proper shape for the internal modem. Can someone here help me get mgetty+sendfax up and running?  If so, let me know if you need additional information to start.  THANKS!
0
Comment
Question by:cspiro
  • 6
  • 5
  • 2
  • +1
14 Comments
 
LVL 13

Expert Comment

by:WizRd-Linux
ID: 20011663
Firstly check the output of "dmesg", this will tell you what serial port the modem can be addressed on.  Once you have this there would be a configuration file for sendfax somewhere that you can specify the Serial port, or alternatively you could do it from the command line.
0
 

Author Comment

by:cspiro
ID: 20014179
What a relief to hear from a human being who knows what I'm talking about.  

I ran dmesg and found that something is on ttyS0.  Here is abbreviated output:
[root@spiroc ~]# dmesg | grep "ttyS0"
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

Also, here is the output for lspci -v:
04:01.0 Communication controller: Conexant HSF 56k Data/Fax Modem
        Subsystem: Conexant: Unknown device 200f
        Flags: bus master, medium devsel, latency 64, IRQ 177
        Memory at dfbf0000 (32-bit, non-prefetchable) [size=64K]
        I/O ports at dcf8 [size=8]
        Capabilities: [40] Power Management version 2

Mysteriosly, after rebooting the linux box and I try sendfax I get this:
[root@spiroc ~]# sendfax 8069931111 /home/mdws/private/fax.g3
Trying fax device '/dev/ttyS0'... OK.
The modem doesn't respond!

The sendfax.config file is as follows:
[root@spiroc mgetty+sendfax]# cat sendfax.config
#
# sendfax configuration file
#
# this is a sample configuration file, see mgetty.info for details
#
# comment lines start with a "#", empty lines are ignored

# ----- global section -----
#
# In this section, you put the global defaults, per-port stuff is below

# tell everybody what's going on
verbose y

# ... and send everything to the log file (quite detailed)
debug 5

# which devices to use for outgoing faxes
#fax-devices modem
fax-devices ttyS0

# which fax number to transmit to the receiving station
fax-id 8139861111

# which command is used to dial out? (Could be ATD, ATDP, ATX3D0W...)
# dial-prefix ATDT

# try transmitting every page three times, continue if 3rd try fails as well
max-tries 3
max-tries-continue y

# ----- port specific section -----
#
# Here you can put things that are valid only for one line, not the others
#

# Modem on ttyS0 needs special initialization to do h/w handshaking
 port ttyS0
 modem-handshake AT&K4

# Modem on ttyS1 doesn't work reliably in class 2.0, use class 2 instead
# port ttyS1
# modem-type cls2

When looking at the sendfax log, I get:

[root@mdwebsolutions log]# tail -100 sendfax.log
10/04 08:40:21  sendfax: experimental test release 1.1.31-Jul24
10/04 08:40:21   sendfax.c compiled at Aug 20 2004, 14:58:30
10/04 08:40:21  sending fax to 8069931111
10/04 08:40:21  checking /home/mdws/private/fax.g3
10/04 08:40:21   makelock(ttyS0) called
10/04 08:40:21   do_makelock: lock='/var/lock/LCK..ttyS0'
10/04 08:40:21   lock made
10/04 08:40:21   tss: set speed to 38400 (017)
10/04 08:40:21   tio_set_flow_control( HARD )
10/04 08:40:21 yS0   fax_open_device succeeded, ttyS0 -> 4
10/04 08:40:21 yS0   reading specific data for port 'ttyS0'
10/04 08:40:21 yS0   reading /etc/mgetty+sendfax/sendfax.config...
10/04 08:40:21 yS0   conf lib: read: 'verbose y'
10/04 08:40:21 yS0   conf lib: read: 'debug 5'
10/04 08:40:21 yS0   conf lib: read: 'fax-devices ttyS0'
10/04 08:40:21 yS0   conf lib: read: 'fax-id 8139863330'
10/04 08:40:21 yS0   conf lib: read: 'max-tries 3'
10/04 08:40:21 yS0   conf lib: read: 'max-tries-continue y'
10/04 08:40:21 yS0   conf lib: read: 'port ttyS0'
10/04 08:40:21 yS0   section: port ttyS0, **found**
10/04 08:40:21 yS0   conf lib: read: 'modem-handshake AT&K4'
10/04 08:40:21 yS0   key: 'fax-devices', type=1, flags=4, data=(ignored)
10/04 08:40:21 yS0   key: 'modem-init', type=1, flags=0, data=(empty)
10/04 08:40:21 yS0   key: 'modem-handshake', type=1, flags=3, data=AT&K4
10/04 08:40:21 yS0   key: 'modem-type', type=1, flags=1, data=auto
10/04 08:40:21 yS0   key: 'modem-quirks', type=0, flags=0, data=(empty)
10/04 08:40:21 yS0   key: 'fax-send-flow', type=4, flags=1, data=7
10/04 08:40:21 yS0   key: 'fax-rec-flow', type=4, flags=1, data=7
10/04 08:40:21 yS0   key: 'max-tries', type=0, flags=3, data=3
10/04 08:40:21 yS0   key: 'max-tries-continue', type=3, flags=3, data=TRUE
10/04 08:40:21 yS0   key: 'speed', type=0, flags=1, data=38400
10/04 08:40:21 yS0   key: 'switchbd', type=0, flags=1, data=0
10/04 08:40:21 yS0   key: 'open-delay', type=0, flags=0, data=(empty)
10/04 08:40:21 yS0   key: 'ignore-carrier', type=3, flags=1, data=TRUE
10/04 08:40:21 yS0   key: 'dial-prefix', type=1, flags=1, data=ATD
10/04 08:40:21 yS0   key: 'fax-id', type=1, flags=3, data=8139863330
10/04 08:40:21 yS0   key: 'poll-dir', type=1, flags=1, data=.
10/04 08:40:21 yS0   key: 'normal-res', type=3, flags=1, data=FALSE
10/04 08:40:21 yS0   key: 'fax-min-speed', type=0, flags=1, data=0
10/04 08:40:21 yS0   key: 'fax-max-speed', type=0, flags=1, data=14400
10/04 08:40:21 yS0   key: 'debug', type=0, flags=3, data=5
10/04 08:40:21 yS0   key: 'verbose', type=3, flags=2, data=TRUE
10/04 08:40:21 yS0   key: '', type=3, flags=1, data=FALSE
10/04 08:40:21 yS0   key: 'page-header', type=1, flags=0, data=(empty)
10/04 08:40:21 yS0   key: '', type=3, flags=1, data=FALSE
10/04 08:40:21 yS0   key: '', type=3, flags=1, data=FALSE
10/04 08:40:21 yS0   key: '', type=1, flags=1, data=
10/04 08:40:21 yS0   tss: set speed to 38400 (017)
10/04 08:40:21 yS0  mdm_send: 'ATV1Q0'
10/04 08:40:31 yS0  Warning: got alarm signal!
10/04 08:40:31 yS0  mdm_read_byte: read returned -1: Interrupted system call
10/04 08:40:31 yS0  mdm_get_line: cannot read byte, return: Interrupted system call -> ERROR
10/04 08:40:32 yS0  mdm_send: 'ATV1Q0'
10/04 08:40:42 yS0  Warning: got alarm signal!
10/04 08:40:42 yS0  mdm_read_byte: read returned -1: Interrupted system call
10/04 08:40:42 yS0  mdm_get_line: cannot read byte, return: Interrupted system call -> ERROR
10/04 08:40:42 ##### failed initializing modem, dev=ttyS0, acct=""

So it looks as if the modem is not being properly initialized.

Do you know how I can troubleshoot this?

Thanks!

0
 
LVL 13

Expert Comment

by:WizRd-Linux
ID: 20018303
Okay, appreciate all the information and the fact that the modem appears to be answering when you initially open the port is a good thing.

Connect to the modem using minicom (linux version of hyper terminal) make sure you set all the options correctly.  Once you have connected try typing ATD<phone number you own> and press enter.  This will cause the modem to dial the number, dialing your mobile phone will definately prove you can dial numbers.

If that is the case then we need to look at why sendfax is unable to dial.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

Author Comment

by:cspiro
ID: 20018650
Thanks again for the help.

When I first type 'minicom' at the command line it states initializing modem and then gives me the option to press CTRL-A and Z for the commands.  After doing that I go to 'O' (minicom configuration) and change the serial port to ttyS0 and save. Then I go to 'D' (dialing directory) where I have added my mobile number and then select 'Dial'.  At that point it tries to call and the time ticks off from 45->0.  I waited as it retried 5 times and never connected.  The error after each try is 'no connection. timed out'.

The server that the modem is in has no sound card so I don't know if it is getting a dial tone.  However, if I unplug the telephone line from the server internal fax modem into an external fax machine, I do get a dial tone on the fax machine.  The server fax modem has two openings, one with a picture of a phone next to it and the other with the word 'data' next to it.  I've tried putting the phone line into both openings but to no avail.

Do you think the modem is no good?  Just in case I've ordered a linux compatible multitech external modem.  The sendfax manual stated that all multitechs have worked very well with the program.  It will take several days to get here.

Do you have any other recommendations until then.  If I can get it to work with the conexant modem, I'll send the multitech back for a refund.

Thanks, much...
0
 
LVL 35

Expert Comment

by:Duncan Roe
ID: 20019371
I suspect ttyS0 is your regular serial port (to which you would connect an external modem) and your modem is elsewhere - possibly ttyS4. From your earlier posts:
ttyS0 at I/O 0x3f8
Communication controller: Conexant HSF 56k Data/Fax Modem ... I/O ports at dcf8 ...
The I/O ports are different between the 2 devices so they are different devices.

With minicom, I would use "minicom -o" to stop it trying to initialise the modem. This also ignores lock files, so don't use it on ttyS0 while mgetty is running. Use "minicom -s" to select other serial ports to try: possibly ttyS4 as I mentioned earlier (tyS0 - ttyS3 are usually reserved for 8250 / 16550 ports. Your PCI is not one of these.
0
 
LVL 35

Expert Comment

by:Duncan Roe
ID: 20019480
To go looking for a second port, you might find it easier to use setserial. E.g. on my system:

13:15:11# setserial -a -g /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000
        Flags: spd_normal skip_test

/dev/ttyS1, Line 1, UART: 16550A, Port: 0x02f8, IRQ: 3
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000
        Flags: spd_normal skip_test

/dev/ttyS2, Line 2, UART: unknown, Port: 0x03e8, IRQ: 4
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000
        Flags: spd_normal skip_test

/dev/ttyS3, Line 3, UART: unknown, Port: 0x02e8, IRQ: 3
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000
        Flags: spd_normal

/dev/ttyS4: No such device or address


I have legacy COM1 & COM2 ports. "UART: unknown" means no UART present in the above. Also I have no PCI serial.
You may want to modprobe PCI serial support "modprobe 8250_pci" and possibly "modprobe 8250_pnp" before running setserial.
If you do identify a serial port and want to test it with minicom, a good string to type is "AT&V<Cr>" which will display modem configuration. (<Cr> means touch Enter key)
0
 

Author Comment

by:cspiro
ID: 20021990
duncan roe, thanks for the additional input!

I have tried as best I can to do those things that you recommended.

Before doing set serial, I tried modprobe with these results:
[root@mdwebsolutions ~]# modprobe 8250_pci
FATAL: Module 8250_pci not found.
[root@mdwebsolutions ~]# modprobe 8250_pnp
FATAL: Module 8250_pnp not found.

At this point I went ahead with setserial and got this result:
[root@spiroc ~]# setserial -a -g /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
        Baud_base: 115200, close_delay: 500, divisor: 0
        closing_wait: 30000
        Flags: spd_normal skip_test auto_irq

/dev/ttyS1, Line 1, UART: unknown, Port: 0x02f8, IRQ: 3
        Baud_base: 115200, close_delay: 500, divisor: 0
        closing_wait: 30000
        Flags: spd_normal skip_test auto_irq

/dev/ttyS2, Line 2, UART: unknown, Port: 0x03e8, IRQ: 4
        Baud_base: 115200, close_delay: 500, divisor: 0
        closing_wait: 30000
        Flags: spd_normal skip_test auto_irq

/dev/ttyS3, Line 3, UART: unknown, Port: 0x02e8, IRQ: 3
        Baud_base: 115200, close_delay: 500, divisor: 0
        closing_wait: 30000
        Flags: spd_normal auto_irq

/dev/ttyS4, Line 4, UART: unknown, Port: 0x0000, IRQ: 0
        Baud_base: 0, close_delay: 500, divisor: 0
        closing_wait: 30000
        Flags: spd_normal

The /dev directory has ttyS{1-67} and I tried set serial with all of them but everyone except for S0 showed the same 'UART: unknown' result.

Regarding minicom, I have often seen instruction on the web to enter AT, but I have no idea where to enter it.  When I open minicom, it states to press CTRL-A and Z for help, but other than following those instructions I can not get any keyboard response within minicom. In other words if I press the key 'A' nothing happens.  What am I missing?

Thanks!


0
 
LVL 35

Accepted Solution

by:
Duncan Roe earned 2000 total points
ID: 20026387
AT is the lead-in code for almost all Hayes modem commands (i.e. the command set used by almost all modems). You can find out more if you Google for "Hayes command set".
For sure you will need PCI serial support. Odd that RHEL4 doesn't have it, but nothing much about redhat surprises me any more. Just to be certain, please post your output from "zcat /proc/config.gz | grep 8250". On my system I get:

11:58:27$ zcat /proc/config.gz | grep 8250
CONFIG_SERIAL_8250=m
CONFIG_SERIAL_8250_PCI=m
CONFIG_SERIAL_8250_PNP=m
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
# Non-8250 serial port support

Unless your config.gz shows serial PCI support, you will need to reconfigure your kernel before you can use your internal modem. OTOH, once you get your external modem and plug it in to ttyS0, it should "just work".

0
 

Author Comment

by:cspiro
ID: 20030087
Believe it or not, when I entered 'zcat /proc/config.gz' the result was 'No such file or directory'.  So, I did a find on the file 'config.gz' and came up with nothing for the whole server!
0
 
LVL 35

Expert Comment

by:Duncan Roe
ID: 20031323
OK, it just means redhat didn't see fit to configure"Enable access to .config through /proc/config.gz" when they built the kernel. That is a pity. RH does, however, ship the actual config files in /usr/src/linux/configs. If you find there is no /usr/src/linux on your system, you should be able to install it from your distribution CDs. Inside the configs directory will be the files corresponding to the various possible flavors of linux you can install, for instance on my system:

08:29:49$ ls configs
kernel-2.6.5-x86_64-smp.config  kernel-2.6.5-x86_64.config

(your revisions should be newer - I only have an old Fedora Core 2 partition that isn't normally mounted).
What *is* the kernel version of your RHEL4 system btw?

Once you locate your config, you can do the grep as above. However, PCI serial support wasn't always called CONFIG_SERIAL_8250_PCI. Also in the latest kernels it's no longer a separate option: it's bundled with CONFIG_SERIAL_8250. It may just be that your kernel doesn't realize the card is a serial controller.

Since you have ordered an external modem, I think your best bet for now is to run with that, when it arrives.
0
 

Author Comment

by:cspiro
ID: 20080661
The MultiTech modem worked like a charm.  Case solved
0
 
LVL 35

Expert Comment

by:Duncan Roe
ID: 20081791
Yes I thought it might
0
 
LVL 35

Expert Comment

by:Duncan Roe
ID: 21329737
I don't think the asker deserves any points back at all. He walked away from the original problem and followed my later advice to wait for the external modem. If he feels replies by other experts were also helpful, he should split the points.
0
 
LVL 1

Expert Comment

by:Vee_Mod
ID: 21392884
Force accepted.
Vee_Mod
Experts Exchange Moderator
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hi there, This article summarizes what you need if you are going to set up your home or small business Network Attached Storage (NAS) to be accessible from the internet. Of course there are configuration differences based on your NAS or router ma…
The purpose of this article is to fix the unknown display problem in Linux Mint operating system. After installing the OS if you see Display monitor is not recognized then we can install "MESA" utilities to fix this problem or we can install additio…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signal…
Suggested Courses
Course of the Month17 days, 3 hours left to enroll

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question