How can I get linux to recognize a digiboard?

I have an ISA PC8 card, on which I am trying to use the first 4 ports. Does anyone know what I should do to get my OS to recognize the first 4 ports on the digiboard as /dev/ttyS4 ... /dev/ttyS7?

I have gone through so many combinations of setting the dip switches on the board, on to "mknod" and "setserial", etc. But it doesn't seem to work.

After mknod, I used setserial and got the following result (I'm not so worried about ttyS2 and ttyS3):

# setserial -g /dev/ttyS?
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
/dev/ttyS4, UART: 16650, Port: 0x01a0, IRQ: 2
/dev/ttyS5, UART: 16650, Port: 0x01a8, IRQ: 2
/dev/ttyS6, UART: 16650, Port: 0x01b0, IRQ: 2
/dev/ttyS7, UART: 16650, Port: 0x01b8, IRQ: 2

I've tried the above settings with UART 16550A also.


I use a simple program which opens /dev/ttyS4 and /dev/ttyS5, writes into the former (which succeeds), and attempts to read from the latter (which fails). The two ports are connected via a null modem cable. The read() operation returns EAGAIN, indicating no data were available at the port to read.

int main()
{
        int res, fd1, fd2;
        char buf1[255], buf2[255];

        fd1 = open("/dev/ttyS4", O_RDWR| O_NDELAY);
        fd2 = open("/dev/ttyS5", O_RDWR| O_NDELAY);

        sprintf(buf1, "this is a test", sizeof("this is a test"));

        res = write(fd1, buf1, strlen(buf1));
        res = read(fd2, buf2, 5);

        return 0;
}

The dip switch settings of the first 4 digiboard ports and of the digiboard irq match the settings of /dev/ttyS4 ... /dev/ttyS7 as listed above.

However, I noticed that none of several combinations of the setserial command did not affect the irq values listed in /proc/interrupts.

Thanks in advance.

Raja Hayek.

Reply via email to