SUMMARY: zs driver DTR toggling takes too long

David L. Markowitz (
Thu, 02 Oct 1997 17:32:07 -0700

I only received one response, but it was enough to trigger my own
memory of related problems under SunOS 4. The result of further
discussions with Sun are that this behavior is built into the zs
driver, no patch is available, and they aren't interested in
making one available.

Thanks to:
Ed Romascan <ed@magma.COM>

My original question:

>Solaris 2.5.1 & 2.6, SS20, Zilog 8530 serial port driver (zs),
>Litronic Argus 210.
>I am porting some code from Windows 95 and NT which talks to a
>serially-interfaced smartcard reader. This reader uses the state of
>the DTR line to control its LED. The code toggles the LED on and off
>around I/O's to give the familiar blinking LED when I/O is occurring.
>This can be done under Solaris using either:
> bits = TIOCM_DTR;
> ioctl(fd, TIOCMBIS, &bits);
> ioctl(fd, TIOCMBIC, &bits);
> ioctl(fd, TIOCSDTR, NULL);
> ioctl(fd, TIOCCDTR, NULL);
>I have tried both, with the same results: the LED works properly, but
>state changes to it (on or off) take over one second! If I turn it on
>repeatedly, but never off, or vice versa, it runs quickly - only real
>changes take so long. I timed a loop of ten repetitions, once on and
>once off each time through the loop, and it took 29 seconds of real
>time, but 0 user time and 0 system time.
>Is there any way to speed this up? A driver patch/hack? Third party
>serial ports and driver? Anything???

Ed's response:
> When you toggle DTR from active to inactive the line must stay inactive for
> some minimum period to reset all those old modems out there.

> The period on our Magma cards is set to 250ms. I would guess that Sun's
> setting is longer.

> You could try one of our two port boards, our LC2+1Sp costs $275.

> Take a look at

David L. Markowitz Director, UNIX Software Litronic Industries