Home
Developer Resources
QNX RTOS v4
QNX RTOS v4 Knowledge Base

QNX RTOS v4 Knowledge Base

Foundry27
Foundry27
QNX RTOS v4 project
Resources

QNX RTOS v4 Knowledge Base

Title QNX4 Modem Support
Ref. No. QNX.000009440
Category(ies) Utilities, Configuration, Character I/O
Issue Which modems are supported in QNX4?


Solution Dev.ser is the driver which manages standard PC/AT and PCMCIA serial port devices in a QNX4 system, including multiport devices which appear as standard serial ports on the bus but which may share a common interrupt.

Most modems can be categorized into three types:

Winmodem, ISA, and PCI

Winmodems are host-based modems, which require less processing power of their own, making them less expensive than conventional modems (missing normal modem h/w components which are "emulated" by s/w).  These modems use vendor-supplied software to do the work of proper hardware modems.  Generally, they are all incompatible with each other, and most do not have documentation which is publically available.  QNX4 does not support these modem.

ISA modems plug into the ISA bus on the motherboard and must be assigned an I/O address and interrrupt, usually in hardware (jumpers or switches) or during software setup.  If the modem uses a non-standard I/O-interrupt combination, then Dev.ser must be started with the assigned I/O,int.  Starting Dev.ser with no options will cause it to scan the standard COM1(3f8,4) and COM2(2f8,3).

eg. If an ISA modem is to use I/O port 3e8 and irq 7, and COM1 is on board, then Dev.ser is started like this:

Dev.ser 3f8,4 3e8,7 &

This will give two device names managed by Dev.ser, /dev/ser1(COM1) and /dev/ser2(modem). If there is a PCI modem then Dev.ser will work with it, but Dev.ser will need to be started with the appropriate address and irq which the PCI BIOS has assigned to it.  Use the "show_pci" utility to query the PCI BIOS to get these values.

eg. From 3Com's USRobotics 56K faxmodem PCI, Model No. 5610

# show_pci -v
Vendor ID      = 12b9h,
Device ID      = 1008h,
PCI index      = 0h
Class Code    = 70002h Communication (Serial Controller) ProgIF=2
Revision ID    = 1h
Bus number    = 0
Device number  = 9
Function num  = 0
Status Reg    = 210h
Command Reg    = 101h
Header type    = 0h Single-function
BIST          = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 0h
Base Address  = IO@eff0h length 8 bytes
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = 1
PCI Int Pin    = INT A
Interrupt line = 9

This shows the i/o port as eff0 and the irq as 9, and if COM1 is on board, then Dev.ser is started like this:

Dev.ser 3f8,4 eff0,9 &

Most PCI modems should work, but Dev.ser does not handle all shared irq situations very well. (Yes, this can be difficult to avoid in PCI configurations as the user does not have direct control.)