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.
