Hello,

I've tried to set up my 14KBaud modem with the isapnp tools
supplied with my linux distribution from redhat (5.1).  The
tools seem to work fine, but then I can't seem to
use the modem.

The enclosed document is a Unix Text file with everything I
tried.

It includes:
A output from the pnpdump command.
A configuration file I use when I run isapnp.
The output from running isapnp with debug on.
The output from setserial which shows my serial settings for
my /dev/cua* devices.
The little C program I used to try to contact the modem.

I also tried using some standard modem tools in Linux to
contact
the modem after programming it, but to no avail.

Any help would be appreciated.

Jim Becker
[EMAIL PROTECTED]


# Here is the result I got when I ran pnpdump from the command
# line as root.
# Jim


# $Id: pnpdump.c,v 1.10 1997/07/14 22:30:47 fox Exp $
# This is free software, see the sources for details.
# This software has NO WARRANTY, use at your OWN RISK
#
# For details of this file format, see isapnp.conf(5)
#
# For latest information on isapnp and pnpdump see:
# http://www.roestock.demon.co.uk/isapnptools/
#
# Compiler flags: -DREALTIME -DNEEDSETSCHEDULER
#
# Trying port address 0203
# Board 1 has serial identifier 88 00 00 24 80 04 00 63 4e

# (DEBUG)
(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)

# Card 1: (serial identifier 88 00 00 24 80 04 00 63 4e)
# SSC0004 Serial No 9344 [checksum 88]
# Version 1.0, Vendor version 1.0
# ANSI string -->Sierra AccuSound FaxModem, Voice, Speakerphone, SQ3230<--
#
# Logical device id SSC0000
#     Device support I/O range check register
#
# Edit the entries below to uncomment out the configuration required.
# Note that only the first value of any range is given, this may be changed if required
# Don't forget to uncomment the activate (ACT Y) when happy

(CONFIGURE SSC0004/9344 (LD 0

# Multiple choice time, choose one only !

#     Start dependent functions: priority preferred
#       Fixed IO base address 0x03f8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x03f8))
#       IRQ 4.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 4 (MODE +E)))

#       Start dependent functions: priority preferred
#       Fixed IO base address 0x02f8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x02f8))
#       IRQ 3.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))

#       Start dependent functions: priority preferred
#       Fixed IO base address 0x03e8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x03e8))
#       IRQ 4.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 4 (MODE +E)))

#       Start dependent functions: priority preferred
#       Fixed IO base address 0x02e8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x02e8))
#       IRQ 3.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Fixed IO base address 0x02f8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x02f8))
#       IRQ 3, 4, 5, 7, 9, 10, 11 or 12.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Fixed IO base address 0x03f8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x03f8))
#       IRQ 3, 4, 5, 7, 9, 10, 11 or 12.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Fixed IO base address 0x03e8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x03e8))
#       IRQ 3, 4, 5, 7, 9, 10, 11 or 12.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Fixed IO base address 0x02e8
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x02e8))
#       IRQ 3, 4, 5, 7, 9, 10, 11 or 12.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))

#     End dependent functions
#     ANSI string -->FAX/Modem<--
# (ACT Y)
))
#
# Logical device id SSC0001
#
# Edit the entries below to uncomment out the configuration required.
# Note that only the first value of any range is given, this may be changed if required
# Don't forget to uncomment the activate (ACT Y) when happy

(CONFIGURE SSC0004/9344 (LD 1

# Multiple choice time, choose one only !

#     Start dependent functions: priority preferred
#       IRQ 10, 11 or 12.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 10 (MODE +E)))
#       First DMA channel 3.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
# (DMA 0 (CHANNEL 3))

#       Start dependent functions: priority acceptable
#       IRQ 3, 4, 5, 7, 9, 10, 11 or 12.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))
#       First DMA channel 1.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
# (DMA 0 (CHANNEL 1))

#       Start dependent functions: priority acceptable
#       *** ERROR *** No IRQ specified!
#       First DMA channel 3.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
# (DMA 0 (CHANNEL 3))

#       Start dependent functions: priority acceptable
#       *** ERROR *** No IRQ specified!
#       First DMA channel 1.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
# (DMA 0 (CHANNEL 1))

`#     End dependent functions
#     ANSI string -->Modem Voice<--
# (ACT Y)
))
# End tag... Checksum 0x00 (OK)

# Returns all cards to the "Wait for Key" state
(WAITFORKEY)




# Here is the configuration file I wrote for isapnp.
# Jim


(DEBUG)
# Tell the driver to use port 0x0203

(READPORT 0x0203)


# Tell the driver to find and isolate all the PNP cards

(ISOLATE)

# Now tell it to display to standard out the cards found

(IDENTIFY *)

# Now configure the board 

# Configure Card1, device (LD) 0, identified by SSC0004 Serial #9344

(CONFIGURE SSC0004/9344 (LD 0

# Configure the IO

(IO 0 (BASE 0x02e8))

#Use IRQ 5, interrupt register 0.
(INT 0 (IRQ 3 (MODE +E)))

#Actually turn it on.
(ACT Y)

))

(WAITFORKEY)


# Here are the results I got when I ran isapnp with the above configuration
# file.

Got DEBUG
Got READPORT 0x0203
Got ISOLATE
Got IDENTIFY *
Got CONFIGURE SSC0004/9344
Got LD 0
Got IO
Got 0
Got BASE 0x02e8
Got INT
Got 0
Got IRQ 3
Got MODE +E
Got ACT
Got Y
Got WAITFORKEY
Executing READPORT 0x0203
Executing ISOLATE
Board 1 has serial identifier 88 00 00 24 80 04 00 63 4e (SSC0004/9344)
Executing IDENTIFY *
Board 1 has Identity 88 00 00 24 80 04 00 63 4e:  SSC0004 Serial No 9344 [checksum 88]
Executing CONFIGURE SSC0004/9344
Found board SSC0004/9344 as Card Select Number 1
Executing LD 0
Executing 0
Executing BASE 0x02e8
Executing 0
Executing IRQ 3
Executing MODE +E
Executing Y
Executing WAITFORKEY

# Then when I do a setserial, it explains that my serial portts are set
# this way:

/dev/cua3, UART: unknown, Port: 0x02e8, IRQ: 3
/dev/cua2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/cua1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/cua0, UART: 16550A, Port: 0x03f8, IRQ: 4


# So I should have set up my modem to match /dev/cua3.


# When I write a simple program that looks like this:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/errno.h>
#include <unistd.h>



extern int errno;




main()
{
       int modem;
       int return_val;
       char buffer[256];

       modem = open("/dev/cua3", O_RDWR);

       if (modem == -1) {
          printf("Tried to open cua3, got: %d\n", modem);
          exit(1);
       }

       printf("Sending a ATDT to the modem\n");

       return_val = write(modem, "ATDT", 4);

       if (return_val == -1) {
          printf("Could not write to the modem, Error = %d\n", errno);
          perror("Error is:");
          close(modem);
          exit(1);
       }
       close (modem);
       
}


# The result I get from running this is -1 during the write operation.
# The errno is set to 5, I/O Error.


Reply via email to