Installing a PCMCIA Device for QNX

Start the driver

The pcmciatrap utility can be very useful in determining which PCMCIA driver to start and how to start it.
pcmciatrap - Autodetect PCMCIA adapter and optionally start correct driver.
pcmciatrap  [options] [query]   Print command line necessary to start driver.
pcmciatrap  [options] start     Start driver.
 -q      Quiet output
 -v      Verbose output for debugging.
Entering pcmciatrap start will start the appropriate PCMCIA driver for your system.

Once this has been done you can use the pin command to view PCMCIA statistics.

pin - display information about PCMCIA devices and servers (QNX)
pin [options]...  [command]
 -n node           Information about server on this node
 -s socket         Information about this socket only (1 based)
 status            Show status of each socket (default)
 resources         Port, irq and memory resources
 config            Attempt to make configuration file entries
 cis               Decode CIS on card
 clear             Clear all resource tables on server
 file              Cause server to reread configuration file
For example pin will display the number of slots you have and details of any devices currently inserted. It should look something like this:
Sock  Win  Type    Flags            PID    Base   Size   IRQ  Base   Size  DMA
1          Empty   ----MF---------- None
2          Empty   ----MF---------- None


Configuring the Resources Required

The next step is to tell QNX which resources can be safely used by the inserted cards. The PCMCIA Manager attempts to allocate resources to the cards as they are inserted and we need to nake sure that it won't allocate resources that are required elsewhere. To do this we need to edit the /etc/config/pcmcia.node file. The file on my system looks like this:
memory = 0xd0000-0xd1fff
ports = 0x280-0x29f, 0x300-0x33f
rports = 0x2e8+8, 0x3e8+8, 0x170+8, 0x376+2
irqs = 12,7,5,3
This tells the PCMCIA Manager that we are definig the resource set that it may use. This is obligatory.
memory = 0xd0000-0xd1fff
This allocates a range of memory into which the PCMCIA Manager can put inserted cards.
ports = 0x280-0x29f, 0x300-0x33f
These are the I/O ports that the cards can use. The PCMCIA Manager uses the range on a best-fit, first-come first-served basis. If you have insufficient ports then not all the devices will be able to start.
rports = 0x2e8+8, 0x3e8+8 0x170+8 0x376+2
This represents the range of ports that the PCMCIA Manager MUST not use.
irqs = 12,7,5,3
The valid range of interrupts that can be assigned to cards as they are inserted.

Configure Cards

Before QNX can auto-detect and configure the cards you must tell it about them. Take a look at the /etc/config/ file for a list of all those currently supported. Entries follow the same format as the pin configoutput:
; socket 1
manufacturer = "Socket Communications Inc"
product = "Socket EA PCMCIA LAN Adapter Revision E"
info1 = "Ethernet ID 00C01B006B0D"
regbase = 0x10000
config = 0x01, 0x0601, irq any, io any+32 (width=16)
config = 0x03, 0x0601, irq any, io 0x2a0-0x2bf (width=16)
config = 0x05, 0x0601, irq any, io 0x2c0-0x2df (width=16)
config = 0x07, 0x0601, irq any, io 0x2e0-0x2ff (width=16)
config = 0x09, 0x0601, irq any, io 0x300-0x31f (width=16)
config = 0x0b, 0x0601, irq any, io 0x320-0x33f (width=16)
config = 0x0d, 0x0601, irq any, io 0x340-0x35f (width=16)
config = 0x0f, 0x0601, irq any, io 0x360-0x37f (width=16)
register = 0, 0x40, 0x40     ; level mode interrupts
Any lines that begin with '#' or ';' are treated as comments and ignored.
Tells the PCMCIA Manager that we are specifying a device description.
manufacturer = "Socket Communications Inc"
The Manufacturers ID is used by the PCMCIA Manager to find the best match to the information retrieved from the Card Information Structure (CIS) when the card is inserted. This can include wildcards like * ?.
product = "Socket EA PCMCIA LAN Adapter Revision E"
This is the product specifier as designated by the card manufacturer. When more than one card from a manufacturer is inserted the product line will be read to determine which is which. Wildcards are acceptable in this field.
info1 = "Ethernet ID 00C01B006B0D"
There are two optional info lines info1 and info2 which contain manufacturer specific information about the card.
regbase = 0x10000
This line tells the server where in the card register space the configuration registers reside. By default it will be 0x100.
config = 0x01, 0x0601, irq any, io any+32 (width=16)
config = 0x03, 0x0601, irq any, io 0x2a0-0x2bf (width=16)
config = 0x05, 0x0601, irq any, io 0x2c0-0x2df (width=16)
config = 0x07, 0x0601, irq any, io 0x2e0-0x2ff (width=16)
config = 0x09, 0x0601, irq any, io 0x300-0x31f (width=16)
config = 0x0b, 0x0601, irq any, io 0x320-0x33f (width=16)
config = 0x0d, 0x0601, irq any, io 0x340-0x35f (width=16)
config = 0x0f, 0x0601, irq any, io 0x360-0x37f (width=16)
This is broken down into the following fields:
This is a numeric constant that indicates the configuration index value to be written to the card configuration register.
The type of card that is inserted. High order byte is generic and the low order byte is specific.
  • 0x0201 Serial/ modem devices with 8250/16450 devices
  • 0x0301 PC Parallel ports
  • 0x0401 ATA Hard Disk
  • 0x0501 VGA Adaptor
  • 0x0601 NE2000 compatible network card
  • 0x0602 NCR Wavelan Card
  • 0x8001 Adaptec T340 SCSI Adaptor (NCR53C400)
  • 0x8101 New Media .WAVJammer
Specifies what resources this configuration requires. POssible values are:
Specifies the IRQ to assign to the card. Multiple values can be used by specifying irq | irq | irq and any of those entered may be used.
The IO port range that may be used.The following options are valied:
  • start - end
  • start + length
  • ANY + length
  • width=8
  • width=16
  • offset=
    offset is not currently supported
  • mem
    to specify a 4K page aligned memory range.
NOTE: You will not ordinarily have to create one of these descriptions by hand.

The /etc/config/ file contains an up to date list of all descriptions that are known to currently work with QNX. If your card does not appear in this file it can be added by doing the following:

	pin config > /tmp/pin.cfg
	cat /tmp/pin.cfg >> /etc/config/
Once this has been done slay the PCMCIA Manager and re-start it and issue the pin command. You should now see something like this:
Sock  Win  Type    Flags            PID    Base   Size   IRQ  Base   Size  DMA
1     0    NE2000  C---I-+--------W None   0x280  32     5                     
2          Empty   ----MF---------- None
Take a note of these settings because you will need them when starting the driver for the card.

Start the Driver

All that remains is for your to start the appropriate device driver to talk to your hardware. QNX allows for the dynamic starting and stopping of device drivers from the command line. So in our example above with the NE2000 compatible Network card you would enter:
	Net.ether1000 -l2 -i5 -p 280 &

Automatically Launching the Driver when the Card is Inserted

Work in progressUnder Construction Work In Progress

For more details please see the PcmciaLaunch documentation.

 QNX4 Configuration Files 


This is the alternate boot image. During booting the QNX boot loader will display the message


	Press ESC to boot alternate OS

By pressing the escape key at this point QNX will load this file instead of /.boot. If you have made some changes to your boot image, copy the old version to /.altboot and then if you have any problems you can at least get your system to how it was, rather than re-installing it.



This is the Operating System boot image that is loaded into RAM by the QNX boot loader when the machine is powered up. It must reside within the first 1024 cylinders of the hard disk (a PC BIOS limitation, not a problem with QNX) and should be smaller than 512K, although future revisions of QNX will address this issue.



The default QNX installation assumes that your machine is node 1, so it creates hard.1. This will need to be changed if you are running in a networked configuration. Also, you may wish to customise the QNX system that you are running. This file contains the parts of the Operating System that you wish to include in your /.boot file. An example may look like this:


    $ 52000 Proc32 
    $ 1 Slib16
    $ 1 Slib32
    $ 8000 Fsys
    $ 1000 Fsys.eide
    $ 1000 mount -p /dev/hd0 /dev/hd0t77 /
    $ 1000 sinit TERM=qnx

To convert this information into a QNX boot file you need to perform the following:

    cd /boot
    buildqnx -v build/hard.1 images/hard.1
    cp images/hard.1 /.boot

Everything in the boot configuration file is relative to the /boot directory, unless it has a full pathname. (See the difference between sys/Proc32 and /bin/Fsys.) So the make must be performed in the /boot directory. Also it is a good idea to link it with a disk driver so that QNX can load things like sysinit from the disk once it has started; this is the d= option. A file called /boot/images/hard.1 will be created. This is your new QNX boot image. For QNX to be able to use it you must copy it into the /.boot file.



QNX is a multi-tasking, multi-user system. This means that more than one user can connect to a machine running QNX and work on it, whether through terminals or a network. What happens if two users try to print a file at the same time? To save worrying about this QNX has a thing called a spooler. This is a queue management system. All files to be printed go into the queue and depending on a set of rules QNX will send the files to a printer as soon as one is available.

/etc/config/lpsrvr tells QNX about the queues, printers and rules that it should use when performing these functions. A typical file would look like this:


    co=lps -F4 -P12 $(spfile) > $(device)
    co=cat $(spfile) > $(device)

The file is split into sections and each section is delimited by the square brackets, [ ]. The first section must exist but everything else is optional. It tells QNX which spooler to use. /qnx/spooler2 is the default spooler for node 2, /qnx/spooler3 would be the default spooler for node 3 and so on. It also tells QNX where it should store the jobs until they are ready to be rinted, /usr/spool/lp in this case.

The first item [doc] describes a queue to QNX. The queue is called doc and any job that ends up here should be sent, eventually, to the device represented in lpt (the target). The co command tells QNX that it must do the following processing on the file after it has queued it but before it copies it to the device. In this case it formats plain text into PostScript output.

The second item is another queue, called ps. This one just does a straight copy of the files to the device.

The third item [-lpt] is a target device. This is indicated by the "-" preceding the name. It says that the device to be used by target lpt is the parallel port on node 2. It could have been any printer device on any node in the network. For example //12/dev/par3.

This example shows how we can use the queue mechanism so that both Postscript jobs and text documents can share the same PostScript printer. It is possible to have more than one target and any queue can send to any target or a number of targets may be specified so that if the first is unavailable the second will be tried and so on.



Each QNX machine on a network must have it's own unique logical node number. These start at one and generally increment each time a new node is added. This is fine but how does each machine know the address of any other on a network.

For historical reasons the default QNX network type is Arcnet. Each node on an Arcnet network can have a node number ranging from 1 to 255 so the default contents of this file are:



This means that Arcnet physical node 1 is QNX logical node 1, and so on. This isn't particularly helpful if you want to run Ethernet between your QNX machines. You need to change the contents of this file so QNX knows how to map logical node numbers to real life physical network addresses. For example:


1   1   02cf1f09ed23
2   1   02cf1f23a234
3   1   02cf1f876ad0

The left column is the QNX logical node number. The middle column is the QNX logical network number (more about this in a minute). The right column is the physical address of the network adaptor in the machine. Each of the three QNX nodes described in the above example must have an identical copy of this file if they are to communicate together.

QNX also supports many networks in a single machine. The limit currently is about 37 networks in a single machine but since that is far more than the number of slots in a PC you don't have to worry. The middle column above is to tell QNX which network to route traffic down to get to it's destination. So I could mix Arcnet and Ethernet networks like this:

1   1   02cf1f09ed23
2   1   02cf1f23a234
3   1   02cf1f876ad0
1   2   1
4   2   2
5   2   3

I have added an Arcnet network and two extra nodes (logically 4 and 5) with Arcnet ids 2 and 3. I have to put node 1 in twice because it has two network connections.

Node 1 is sitting on both networks. There is a utility in QNX called netbridge that would allow me to use node 1 as a bridge between both networks. This is outside the scope of this document and if you would like further information please mail



Once the system has booted the first thing it does is process this file. If you are running on node 3 and /etc/config/sysinit.3 exists then that is processed instead of the default. This file simply contains a list of QNX commands and comments. A simple example would be:


#set time zone and get clock from PC hardware
rtc -l hw
#Start device manager and console, serial and parallel device drivers
Dev &
Dev.con -n 4 &
#Need to reopen /dev/con1 for STDERR,etc.
reopen //0/dev/con1
Dev.ser &
Dev.par &
#Start Floating Point emulator - Many QNX apps need this
#Not necssary on 486 or better
emu87 &
#Start Network manager and arcnet device driver
Net &
Net.arcnet &
#Sort out node mapping
netmap -f
#Spawn logins on the console devices
tinit -t /dev/con1 -T /dev/con[2-4] &

It can be thought of as a cross between DOS' autoexec.bat and config.sys. Any of the QNX device drivers and system managers can be started and stopped from the command line but having them all started in sysinit is more convenient.



This file is used by the system to determine to which group users belong. A typical example may look like this:


    sales::100:gary trevor ralph tracy
    technical::101:bob imogen

The first two lines are for system use only and must exist, the rest are optional. In this example we have set up two groups sales and technical. Sales have group id 100 assigned to them and technical have group id 101. Each group has a list of users associated with it. Access to everything in QNX is based upon permissions. It is possible to allow a file to be read by sales although the technical department can both read and write it.



This file contains the sign on banner that is displayed on the console when the system boots up. The default is:


  Welcome to QNX 4.23
  Copyright (c) QNX Software Systems Ltd.1982,1994

You can change this to read anything you like.



This isn't really a file but a directory that contains all the licenses to run QNX or it's applications. Each file in here is 100 bytes in length and corresponds to a particular utility in the QNX system. If you had installed QNX and the RunDOS DOS emulator then your /etc/licenses directory would contain two files that would look a bit like this:



If you had a two node QNX network then you would need both QNX licenses in this directory because as far as QNX is concerned you only have 1 licensed copy so it will not talk to anyone else.

QNX license files cannot be copied; if you try to copy them they simply will not work. You must use the license utility to transfer them from the original floppy disk to the /etc/licenses directory on your hard drive.

With the advent of QNX 4.23A this style of licensing is becoming less and less common, moving to the new style licensing. These new style licenses are kept in the /.licenses file and look like this:

tcprt.00766641-0r22-08ab-1i73-0k56-0174 (1 node)
phinx.00200541-0dez-5ib9-2924-b7r6-f511 (2 node, 0597 expire)
  nto.00276259-0faf-9420-9998-f1rb-09c5 (1 node)
 vpro.00054687-060a-ke03-jat5-9879-3fe9 (20 node, 0897 expire)

The advantages of the new style are that timed licenses can be given and that you can ring up and get a new license number over the phone for a product which is included on your QNX CD-ROM.



This file is printed as part of the standard /etc/profile. It is used for displaying messages to all users as they login. For example you may want all users to know that a certain printer is not available today. This is a convenient way of ensuring that they will all see the message.



This contains information about users on the system. Based on the /etc/group discussion earlier, it might look like this:


gary:x:100:100:Gary Jones:/bin/sh
trevor:x:101:100:Trevor Smith:/bin/sh
ralph:x:102:100:Ralph White:/bin/sh
tracy::103:100:Tracy Brown:/bin/sh
bob:x:104:101:Robert Harris:/bin/sh
imogen:x:105:101:Imogen Clarke:/bin/sh

Let's look closely at the entry for gary to determine what it all means. 'gary' is the login id that will be used. The semicolons are field separators and can be ignored for our purposes. The 'x' indicates that gary has a password associated with his account. (In fact all the users except tracy have a password.) 101 is gary's user number. 100 is gary's group number (if you look back at /etc/group this is group 100 - sales). Gary jones is his real name - if you do anything like electronic mail or some system logging functions then gary would be expanded to Gary Jones by QNX. /bin/sh is the command interpreter that gary will be using.



This file contains a list of instructions and macros that are executed when any user logs into QNX. It does things like check the users mailbox and sets any environment variables that are required. For example the search path PATH is set here. When a user logs in /etc/profile is run and then the .profile file in the user's home directory. Anything that is set or unset in the user's .profile file over-rides the settings made in /etc/profile. It is a good way of restricting a particular user or granting a particular user extra privileges.

A typical file would look like this:

    export PATH=$PATH:./:/bin32:/usr/bin/X11:/usr/lib/X11:/etc
    umask 2
    if [ ! ­f .hushlogin ]; then
        cat /etc/motd
    date "+%x%t[ %I:%M %p ]"
    if[ $LOGNAME != "root" ]; then
        test ­s $MAIL && echo "You have mail."
    stty quit 1C term=$TERM
    export DBDPATH=/usr/db
    export DBFPATH=/usr/db
    export LPSRVR=/qnx/spooler2
    export LPDEST=doc


This file holds all the passwords for the users. They are encrypted and mean nothing to anyone looking at them but it would look something like this:


QNX Disaster Recovery

The QNX filesystem is very robust. Data is usually written to a cache before it gets written to disk. Whilst the data is in the cache it is ordered so that it can be written with a single sweep of the heads across the disk platter when the cache is flushed. The cache is flushed every two seconds but the system administrator can set this interval. This caching also be disabled.

All critical filesystem data, such as bitmap blocks or directory entries are written immediately to disk, bypassing the cache. In the event that multiple pieces of critical data are to be written concurrently they are ordered in such a way that if the power goes down midway through the operation the filesystem will come up sane and at worst a few blocks will have been assigned that aren't used. Unfortunately, you've lost the last two seconds worth of data in the cache but your system is able to get up and running immediately. Even if the worst happens and you have a corrupt filesystem, QNX has a series of utilities that are designed to repair and rebuild damaged filesystems. These will be discussed here.



This is the main tool that you will use in recovering damaged or corrupted filesystems. It checks the directory structure of the entire disk partition, reports any inconsistencies and fixes them if possible. In addition to this is verifies the overall disk block allocation and optionally writes a new /.bitmap file.

chkfsys requires that the filesystem is idle - it CANNOT be run whilst users or applications are making use of the filesystem as this would lead to inconsistencies in the newly created data. If you can't afford to shutdown your application to run chkfsys you can run it in read-only mode where it will just report it's findings and not try to fix anything.

It starts at the root and works down the filesystem, building an in-memory copy of what the /.bitmap file should be. Once it has finished this it checks that against the /.bitmap and asks the user if it should write a new /.bitmap. Whilst it is doing this it will try and tidy up any little problems that it finds. It will clear busy bits on files and re-write the files size if it differs from the amount of data in the file and things like this.



This utility creates the following:

  • boot block
  • root block
  • bitmap blocks
  • root directory
  • inode file (/.inodes)

Once these have been created it is up to Fsys to maintain them. Running dinit on a filesystem will effectively clean it. chkfsys assumes that your root block has been unaffected by the disk corruption. Sometimes this is not the case; you can run dinit -r to rewrite a blank root directory and then by running chkfsys it will be able to rebuild the filesystem from there. This should be used with extreme caution.



This utility creates and maintains the partition block on a hard disk. This can be used to re-build partitions or re-create missing or damaged partition loaders.



This utility allows you to read and write the raw data on a disk and to fix problems at a bits and bytes level. This cannot be used on a disk that has open files on it.



This lets you removes files from the disk without returning the used blocks to the free list. This is useful if two files occupy the same space on the disk or the directory entry has become damaged. To recover the blocks and check the filesystem, run chkfsys.


QNX Information Gathering Functions

There are several utilities in QNX that allow you to see what's going on inside the OS and it components. Probably the most widely used is the sin command. it stands for System INformation. For more details please see the entry in the user guide. Sin outputs information about all running processes, their versions, system interrupt handler, proxies, memory usage and a whole host of other pieces of information.

The next is stty. This allows you to take a look at what is happening on any of the QNX character based devices, including consoles, serial and parallel ports and change their values. It displays the status of the hardware signals, the mode that the device is operating in and the parameters that it is currently using.

Netinfo is particularly useful when trying to diagnose QNX networking problems. Any time something strange happens on any of the QNX networks an event is logged to netinfo. Netinfo includes the time of the event and an english explanation of what the error means.

Traceinfo queries the Process Manager's internal table of trace events. When an interesting event or a problem occurs most QNX processes log an error within this table. Traceinfo allows users to see what events have been generated. It is especially useful for debugging Interrupt handlers, where the standard print commands cannot be used.


A Beginner's Guide to QUICs 


Table of Contents

PART 1 - Accessing QUICS


  1. Internet: telnet / ftp /
  2. Setting up Your Internal Modem Configuration
  3. Setting up Your External Modem Configuration
  4. Help with qtalk

PART 2 - Modem File Transfers


  1. Check-sums
  2. Downloading: QUICS -> local machine
  3. Uploading: QUICS
  4. Connecting to QUICS from a non-QNX System
    • Modem Protocols
    • File Transfer to the QNX Filesystem
    • Emulation

PART 3 - Setting up Your User Account


  1. New Accounts
  2. Maintaining Your Account

PART 4 - News Groups


  1. Using tin
  2. tin Batcher
  3. Posting to the News Groups
    • Posting to the News Groups
    • Before You Post
    • Article Guidelines
    • What to Post
    • What to Expect From the 'Experts' News Groups
  4. tin Commands

PART 5 - Service Plans


  1. Free
  2. Standard
  3. Gold

PART 6 - QUICS Directory Tree


  1. /updates
  2. /usr/free
  3. /u/y/your_home_directory
  4. /usr/free/docs/

PART 7 - Beta Software





Use telnet to read the newsgroups. Requires user id & password. See "Setting up User Accounts".
Use ftp for file transfers. Requires user id & password. You can access the /usr/free and /usr/free2 directories with 'anonymous' log-in.
world wide web:
Browse our web page, download free software. Check us out with any browser. You can not download files from the product updates directory (yet), nor can you view the news groups.


Assuming your machine is using standard serial ports and IRQ's, set the modem jumpers to a free IRQ and COM port address. Lets assume a standard COM3 definition: 3e8 IRQ: 5

First, let the serial I/O manager (Dev.ser) know about this device. Start Dev.ser in your sysinit. in the following way with the above hardware settings:

Dev.ser 3f8,4 2f8,3 3e8,5 & ( COM1 COM2 COM3 )

Now the COM ports are defined as above in sequential order. An "ls" of /dev/ should show ser1, ser2 and ser3.

Now set the baud with the stty command set.

stty baud=115200 < /dev/ser3

"baud" is the speed your computer communicates with the modem, not the line speed of the modem. You are now set up to use your modem with QNX:

>qtalk -m /dev/ser3

You are now in the qtalk program. For more information about qtalk and modems, see "Help with qtalk"

at> Should get "OK" reply
atz Resets the modem. "OK" reply
atdt0016135910934 A dial tone and the BBS menu as displayed below.

Your modem will dial QUICS; and you will be prompted to log-in. The 'at' commands are built into the firmware of your modem. If you have difficulty using the at command set, consult your modem manual. If your telephone system requires a dial string, such as '9' to get an outside line, use the following dial string instead.


The 'w' provides a wait state while a dial tone is being obtained.

Note: You can replace steps above with:

qtalk -m /dev/ser3 quics where the dial string "quics" is resolved from the file: /etc/config/qtalk


log-in to QUICS with your user ID, and Password.

To quit your session:



Modems are known to hang on occasion, a cold boot reset can often cure a temperamental modem. If your modem is not responding to the AT command set, it could be an MS-Windows modem only, which relies on software rather than firmware to implement the AT command


The following is the log-in greeting from QUICS, complete with our access phone numbers and Internet address:


      Welcome to the QNX Users Interactive Conferencing System.
      Internet: /
      Modem (Hunt Group):
      +1 613 591 0934   V34+/VFC/V32bis/Terbo/HST
      +1 613 591 0935   V34+/VFC/V32bis/Terbo/HST
      +1 613 591 0940   V34+/VFC/V32bis/Terbo/HST
      +1 613 591 1735   V34+/VFC/V32bis/Terbo/HST
      +1 613 591 3009   V34+/VFC/V32bis/Terbo/HST
      +1 613 591 3128   V34+/VFC/V32bis/Terbo/HST
      +1 613 591 6093   V34+/VFC/V32bis/Terbo/HST
Log-in as 'newuser' if you're a first time caller.
Welcome to QNX 4.23 Copyright (c) QNX Software Systems Ltd.


Your external modem will be connected to a standard serial port. If the serial port you wish to use is not at a standard address/IRQ, you may have to pass required arguments to Dev.ser Otherwise, use the internal modem instructions above.


Once the modem is configured, and a connection is made, you will want to know what qtalk can do for you. See the usage message for qtalk as well as the "Utilities Reference"

use qtalk

from within the qtalk program:



     Qtalk [4.81]
     Modem         : //37/dev/ser2
     Local echo    : disabled      
     Logging       : disabled
     Top bit       : displayed     
     Xfer protocol : qcp
     Command char  : 0x01 (^a)     
     Delete char   : 0x7f
     Terminal type : 
     b)rk, c)d, d)ial, h)angup, l)og,o)protocol options, q)uit 
     w/hangup, r)eceive s)end, t)ransfer protocol, w)rite, 
     x)exit w/o hangup, T)erm emul ?)more cmds

Selecting ? at the Command(?) prompt displays the interactive command set available with qtalk.



b - Send Break                   q - Quit & Hangup
c - Change directory             r - Receive a file
d - Dial System                  s - Send File
e - Toggle Local Echo            t - Select transfer protocol
h - Hangup                       w - Write File to Modem
l - Log File On/Off              x - Exit w/o Hangup
o - Modify protocol options      ! - Escape to shell
p - Toggle Parity Filter         I - Show current info
C - Command Character            D - Delete Character
T - Switch terminal emulation between QNX4, QNXS, and ANSI

For a complete discussion of what the interactive command set does, see the "Utilities Reference" guide. The section on "Modem File Transfers" makes use of the - Send File option.





When downloading files from QUICS, always get the original check-sum from the target file before downloading. This way you can verify the file you received is an exact duplicate (no file transfer errors) by comparing its check-sum with the original file's.

cksum target_file


980841296 3478 target_file

where: 980841296 is the "check-sum" and 3478 is the byte size

DOWNLOADING: QUICS to local machine

You can access files for downloading from two primary directory trees:


Once you're logged into QUICS with the modem, cd to the desired directory and download the file using the qcp protocol.

qcp se target_file

The target file will be sent to your local machine's current working directory.

UPLOADING: QUICS from local machine

You will typically need to upload files to QUICS so that a developer or tech-support representative can obtain a binary file from you. Do not mail binary (non text) files to us. We do not use Microsoft Mailers, and don't like receiving executables mailed to us as attachments. If you must send a binary file (compressed or otherwise), use the following instructions, and send the QNX recipient notification through e-mail that the requested files are in your user account; don't forget to state what your user account directory name is (typically its the same as your user id).

After logging in, cause the QUICS server to go into receive file mode:

qcp re

You will see a spade symbol to start scrolling across the screen. Return to qtalk's command menu with and invoke the send command:


Indicate the file name(s) from your local host's current directory ready for uploading:

Send file(s):this that other*

Wait for the prompt to return. The above sequence would have sent the files: this, that and all files starting with 'other', e.g.:




If you are trying to make a modem connection from a NON QNX system, the QCP protocol will not work, and the terminal emulation may need adjusting. If you're sending files to the QUICS server, the "X-modem" " Y-modem" and "Z-modem" protocols can be used, and will automatically be detected by QUICS. If you want to retrieve a file from QUICS using one of these protocols:


sx target_file
sb target_file
sz target_file


Once the file is on your local system, you can move it to the QNX Partition, if one exists, using the following procedure:


  1. Reboot the computer into the QNX operating system and start the DOS filesystem Manager:

    Dosfsys &

  2. This will mount all DOS partitions on drives that have been mounted with the "mount -p" command. Dosfsys will also mount your floppy drives.
    Note: Older versions of Dosfsys will only work with standard DOS FAT16 file systems. A newer release of Dosfsys will support the FAT32 for Win95.


  3. Locate the desired file in the DOS file system. Supposing the file is located in /dos/c/temp/target.file

    cp /dos/c/temp/target.file ./

    will copy the file into the current working directory. If the file is a binary file (executable), check the file for transfer errors.

  4. cksum target.file. The output should match the original cksum, if not the file has been corrupted.

If the above method can not be used because QNX is not installed to the same computer, you may want to try one of the following alternative methods:


  1. Dosfsys as above, but using a DOS formatted floppy disk to facilitate the transfer. Floppy drives are mounted by Dosfsys as /dos/a/ For this method to work, your file size must not exceed the floppy drive capacity.
  2. Network File System (N.F.S). If your local area network uses N.F.S., and you're QNX installation includes TCP/IP, you can transfer the files over the network.
  3. If you have TCP/IP, and you're transferring from WindowsNT or Win95, you may want to investigate SMBfsys. SMBfsys ships free with Windows NT & 95.


Using "Hyperterminal" under Win95, we suggest using the " ANSI" emulation. This emulation will give you the ability to read the QUICS news groups, but on screen editing will be difficult; other modem software may give better results. Hyperterminal gives you the option to select "ANSI" emulation by selecting:

  • File,
  • Properties,
  • Settings,
  • Emulation.

Your QUICS profile editor should be used to select "ANSI" for the QUICS server. Note, any changes to your 'profile', will not be effected until your next logged in session (see "Setting up your User Account"). If you're having difficulties posting to QUICS, because of poor terminal emulation, you can try this offline procedure.


  1. Using the editor of your choice, write your correspondence in text format offline; most editors allow you to save your file in plain text ASCII format.
  2. Connect to QUICS using your choice of modem software.
  3. Using your software, chose the "X-modem", or "Y-Modem" , or "Z-Modem" protocols for file transfer.
  4. Send the file to QUICS. QUICS will auto detect the modem protocol and automatically receive the file; storing it to your current working directory.
  5. Convert the text file to QNX 4 format:

    textto -l target_file.txt

  6. Enter the QUICS news groups:


    and select the newsgroup you wish to post to or reply to ('w' to post a new thread, 'f' to follow up on the current thread you have open).

  7. Move down to the part of the text where you want your dialog to be inserted. You may have to use the and keys (tin feature) to manipulate the cursor.
  8. If you're using the default "vi" editor


    for command mode. Read the uploaded file into the editor:

    r target_file.txt

    target_file.txt will be read into the editor from the current working directory. Go back to command mode again

    < shift > < : >

    Write and quit out of vi



  9. Your uploaded file is now posted to the newsgroup.




There is no cost or restriction for setting up accounts on our BBS, though you must register a product license to use QUICS.

Access QUICS using telnet or a modem connection. As a first time user, log-in as 'newuser' and follow the instructions provided. When you're done, you will be assigned a unique user ID, and a self chosen password. We recommend you write this information down on the inside cover of your QNX manuals. PLEASE NOTE: your user account is not private, all QNX personnel have access to your account. This facilitates file transfers between you and QNX.

When setting up the account, you will be automatically prompted to include service plan information and serial numbers for your QNX software. You can update this information at any time by using the 'profile' command from within QUICS. See the section on "Maintaining your Account".

Some users may have faxed their software registration form back to QNX - this does not update you QUICS account privileges. QUICS account privileges must be obtained by registering on-line.


When you update your user profile, your new account privileges will not take effect until your next active session.

log-in to QUICS via telnet or a modem connection which ever is convenient. Your account privileges are maintained with the profile command.



     Profile Editor
     ditor             (Default: vi)
     erminal Type      (vt100)
     eight             (25)
     idth              (80)
     ownload Command   (Default: qcp se)
     pload Command     (Default: qcp re)
     ast Updated       (197001010000.00)
     oin a service plan
     esign from a service plan
     erial Numbers

Your choice?s


     Serial Numbers
     dd a serial number to your profile
     elete a serial number from your profile
     ist serial numbers in your profile

Your choice?a

At this point you would add the serial number and password combination located on the back side of your product installation disk.

Since this information is only required to determine your /updates/ directory tree privileges, you are not required to register multiple licenses for the same product. Multiple users may register the same serial number and password for QUICS privileges.



USING 'tin'

'tin' is your access to our news groups. It, like other news group services provides an efficient method of communicating with QNX's own development team, as well as other QNX users.

The service plan you have chosen determines your privileges to write to the various news groups. If you have not purchased a service plan, you can only post to non 'experts' conferences, such as the 'user2user' groups (see "Service Plans").


You may wish to download the newsgroups to your local. machine. A "Simple Local New Reader" is available from:


To download the newsgroups for your newsreader, see:



This section provides some general guidelines to use when posting questions or replying in the news groups. An average of 200 postings are made to the news groups daily, following these guidelines will make it easier for everyone reading your article.



  • Read the relevant documentation.
  • Check for topics in the news groups that address your problem, your query may already be answered.



  • When responding to an article, delete all of the text from the original article that is not relevant to your dialog. This courtesy makes it easier for everyone to read your article quickly.
  • Avoid posting very short responses between large bodies of previous dialog; make sure your response is visible to the reader.
  • Take care to ensure you are posting to the correct newsgroup. You only get an answer if the appropriate audience is reached; very few developers have time to read news groups outside of their responsibility.


Include relevant information. This may or may not include the output from the following debug utilities. If you're not sure if the debug utility output is relevant, post it anyway. For any kind of software configuration issue, a "sin ver" is a must.

General Problems sin
sin ver
sin in
Hardware Problems show_pci -v
sin ir
Networking Problems netinfo -l
TCP/IP Problems netstat -an
netstat -rn
syslog file
PCMCIA Problems pin
Photon Graphics Driver Problems crttrap
SIGSEGV Problems The SIGSEGV Message as it appeared on your console.
The steps leading to the error and, if possible, a reproducible case.
The dump file captured by dumper & - don't post the contents upload it to your home directory.
The output of traceinfo.

If you are having difficulties configuring a hardware driver, remember to report the explicit error messages that you're getting, as well as how the driver is being invoked, i.e. what options are being used. Check the 'usage' statement for the driver in question, there is likely a "-v" option for verbose output. Capture the verbose output. Fsys and Net drivers have undocumented extra verbose options, start these drivers with -vvvvv to get this extra debug information.

If you're having difficulties with any part of the QNX API, refrain from posting large samples of source code. Example code should not exceed 50 lines and should be written in 'C'. Don't forget to include the version of operating system and tools that you're using. Your 'makefile' should also be provided.


If you have followed the above guidelines, you can expect a reply to your question within two business days, sometimes within the hour.

Q) I posted a question yesterday to the news groups, but I no longer see it among the list of articles. A) If you have read your own article, it becomes deleted from your list of unread articles. Articles are deleted with time, but never overnight. See "Using Tin Commands", 'r' to toggle.
Q) I don't see very many news groups. A) See "Using Tin Commands", 'y' to yank. There are over 90 news groups that you can freely read provided you have subscribed (no charge) to them all.
Q) My article in the experts newsgroup has not been answered, now what do I do? A) Your article may have not been answered for several legitimate reasons, such as:
  • The person with the answer is away
  • Your article was read, but an immediate answer was not available
  • There may be confusion regarding who is expected to reply.

In any case, if you do not receive an answer within the two business day guideline, we suggest you follow up you own question with a simple " ping" message. Following up your own thread in this way ensures your message is added to the "unread list" of newsgroup threads, thereby drawing attention to your unanswered issue.

Q) My question uncovered a bug in the shipped utility set, how do I recover the credit I used up from my Standard service plan? A) Anytime you discover an error in the documentation, or a bug in our software, you are entitled to have your credit returned. Just follow-up your article requesting the return of your credit and we will gladly oblige.
Q) Another user has posted a question in the experts newsgroup, and I would like to add some relevant information without using up any credits. A) Credits are only used when starting a new thread, following up will not cause any credits to be deducted, though you must have a service plan for write permissions to use the experts news groups.


In order to read the QUICS news groups, you will invoke the "tin" command. If you're a first time user, and would like some practice manipulating tin, post to: ""; this newsgroup was specifically designed for this purpose. All articles posted there are ignored. "tin" has three layers of context sensitive help, the following outlines some of the available commands. Using the 'h' command at anytime will provide you with a complete command list available for your use. The commands highlighted below with an '*' are worth trying out to discover their utility.

No News Group selected help:


     Read current group
    * Goto next group with unread news and enter it
c        Mark group read 
g        Choose a new group by name
j        * Down a line
k        * Up a line
hH       Command help (H=toggle mini help menu)
qQ       Quit
r        * Toggle display to show all subscribed to groups
s        * Subscribe to current group
u        Unsubscribe to current group
w        Post an article to current group
W        List articles posted by user
y        * Yank in subscribed/unsubscribed from .newsrc
z        Mark current group as unread

News Group Selected help:


     Read current article
    Goto next unread article or group
  forward a page
hH       Command help (H=toggle mini help menu)
j        Down a line
k        Up a line
m        Mail article/thread/hot/pattern/tagged articles
q        Return to previous level
Q        Quit
r        * Toggle display to show all / only unread articles
s        * Save article/thread/tagged articles to file
t        Tag current article for crossposting/mailing/saving
U        Untag all tagged articles
w        * Post an article to current group

Help when article is open for reading:


     Goto to next thread
    Goto next unread article
  forward a page
D        * Delete (cancel) current article that must have been posted by you
fF       * Post (f=copy text) a followup
hH       Command help (H=toggle mini help menu)
m        Mail article/thread/tagged articles to someone
q        Return to previous level
Q        Quit
rR       Reply through mail (r=copy text) to author
s        Save article/thread/tagged articles to file
w        Post an article to current group
W        * List articles posted by user
x        Crosspost current article to another group
zZ       Mark article (Z=thread) as unread


Contact your QNX distributor for ordering a service plan. See for more information about the service plans



  1. Free phone support. First come, first served.
  2. Free subscription to QNX News. Our quarterly magazine
  3. Access to QUICS: /usr/free, /updates, and tin. No write privileges to the 'experts' news groups.
  4. The free standard line phone number is 1 (613) 591-0941 Please DO NOT use any other number to reach Technical Support, the switch board operator will reject your call for specific technical support staff. If you are having difficulties getting through, please do not call our receptionist.
  5. The technical support department is staffed 8 AM to 6PM, Eastern Standard Time (EST) Monday - Friday, Canadian holidays excluded.
  6. From time to time, you may be asked to send your technical support representative e-mail regarding an outstanding issue. Once that issue has been resolved, we ask that you don't send any more mail directly to that individual concerning any new problems. Unsolicited mail may not be replied to in a timely fashion if the individual is away on holidays, training or is attending to other customer requests. If your service plan includes e-mail support, then use the given mail address for this service.



  1. All of the above privileges.
  2. Pay per use (on an account credit basis) for the following services:
    1. Fax Support.
    2. e-mail support (
    3. Ability to post questions to the 'experts' news groups. Credits are deducted only when you start a new thread in the news groups. All additional follow up in that thread is free, even if you did not start the thread but wish to add to the discussion.



  1. All of the above privileges with unlimited usage. There is no 'pay per use'.
  2. Priority phone support - separate phone lines are dedicated exclusively for Gold Plan clients. Callback within two hours during normal business hours. If the phone lines are busy, you will be given voice mail to leave your message. If your call is made late in the day, the two hour call back may extend into the first two hours of the next working day.(8 AM - 6:00 PM : EST).
  3. Priority fax and e-mail. Reply with in 24 Hours.

Please contact your QNX distributor for further details of these plans.





This directory contains all of the software updates that are freely available to you as upgrade software. Only those products that you have registered in your user profile will be displayed in this directory.

Many product directories such as /updates/qnx42/ have sub-directories such as "Alpha" and "Beta". Alpha software has not been widely tested in a Beta program or gone through any rigorous quality assurance testing. Software placed there typically addresses new problem reports and must be fully tested before it becomes part of the general release. Consult technical support before using. Software that is considered part of the general release is in the "Released" directory.

The Beta and Released directories typically contain 'readme' files and an "Update_info" file. The Update_info file is your guide to navigating the chosen directory. It tells you what's included in the specific archives and why; it may also include some installation information. You're always better off reading this file while you're connected to QUICS before downloading - this will ensure that you don't waste your time and money downloading the wrong files.


/usr/free & /usr/free2
Software found in /usr/free/ is free software that can be used with the QNX 4 operating system; this directory tree can also be accessed via , click on "free software". Each file in this directory has an accompanying 'readme'. The readme file explains the contents of the archive, and is displayed on the web. Point and click for immediate ftp transfer from your web browser.

/usr/free and /usr/free2 is NOT supported by QNX technical support.

Getting the archive installed on your hard drive after downloading:

gunzip -c target_file.tgz | pax -vr -f -


gzip -cd target_file.tgz | pax -vr

If you are interested in joining a Beta program and purchase your QNX products from an authorized QNX distributor, you should contact your distributor. 

Special Thanks to Allan Kleywegt ( for this information.

* plus shipping