Problem with COM

lawson_whitney at juno.com lawson_whitney at juno.com
Mon Feb 11 12:46:07 CST 2002


On Mon, 11 Feb 2002, [utf-8] Duško Rusmir wrote:

> No at all 38400 : 20 = 1920
> Right is 115200 : 20 = 5760
> 5760 don't work although it is a possible dividor 20!
>
I think you misunderstand me.  The baud_base of a 16550a _is_ 115200.
There is no way for setserial to change it.  It is not progammable.
You are allowed to change it in case you have some other hardware,
but if you do, you only make the comm driver calculate the wrong divisor
for whatever speed the app asks for, and generally confuse everyone.

In this example, I set the baud base to 38400, open the comm port at
38400, and the actaul DTE speed reported by the modem is 115200.
Then I use a speed of 19200, and the DTE speed is 57600.  Unfortunately,
neither of my modems will work at 5760, so I can't show you exactly that

with a baud_base 115200 spd_cust divisor 20
38400 is really 5760.  19200 is 19200.  57600 is 57600.  but 38400 is
5760.

Script started on Mon Feb 11 13:01:40 2002
[whit at giftie whit]$ su -c "setserial /dev/tts/2 baud_base 38400"
Password:
[whit at giftie whit]$ setserial -a /dev/tts/2
/dev/tts/2, Line 2, UART: 16550A, Port: 0x03e8, IRQ: 4
	Baud_base: 38400, close_delay: 50, divisor: 4
	closing_wait: 3000, closing_wait2: infinte
	Flags: spd_normal skip_test

[whit at giftie whit]$ cu -s 38400 -l /dev/tts/2
Connected.
ATI4
USRobotics Courier V.Everything Settings...

   B0  C1  E1  F1  L2  M1  Q0  V1  X6
   BAUD=115200 PARITY=N  WORDLEN=8
   DIAL=PULSE  ON HOOK   TIMER

OK
~.
Disconnected.
[whit at giftie whit]$ cu -s 19200 -l /dev/tts/2
Connected.
ATI4
USRobotics Courier V.Everything Settings...

   B0  C1  E1  F1  L2  M1  Q0  V1  X6
   BAUD=57600  PARITY=N  WORDLEN=8
   DIAL=PULSE  ON HOOK   TIMER

OK
~.
Disconnected.
[whit at giftie whit]$ su -c "setserial /dev/tts/2 baud_base 115200"
Password:
[whit at giftie whit]$ setserial /dev/tts/3 spd_cust divisor 20
[whit at giftie whit]$ setserial -a /dev/tts/3
/dev/tts/3, Line 3, UART: 16550A, Port: 0x02e8, IRQ: 5
	Baud_base: 115200, close_delay: 50, divisor: 20
	closing_wait: 3000, closing_wait2: infinte
	Flags: spd_cust

[whit at giftie whit]$ cu -s 38400 -l /dev/tts/3
Connected.
ATDT 7403328770
NO DIALTONE
ATDT 7043328770
NO DIALTONE
~.
Disconnected.
[whit at giftie whit]$ exit

Script done on Mon Feb 11 13:12:46 2002
>
> 9600 works also fine.
> 115200 : 12 = 9600 but it works whit 115200 and divisor 0!!!
>
The serial driver only uses divisor when the comm port is opened at
38400 and the spd_cust flag is set.  otherwise it calculates a divisor
from speed and baud_base.

> > > I thing the handling of COM Port on these BaudRate is't good.
> >
> > I'm  telling you, 5726 isn't _possible_ with a standard UART.
>
> Yes, I can't get 5726 from 38400, 57600 or 115200 at all, but it
> works in Windoze very well. I think it is a Way to get 5726, but
> Gates don't give the source.
>
Windows might give the appearance of working at 5726, but I bet it is
really using 5760 or 7200 or something.
>
> I have tryied some possibility.
> Take a Look on Attachment Wine-COM.tgz, please.
>
> Thanks much, I am waiting for resolution.
>
AFAICT, you didn't try it the way I suggested.

baud_base 115200 spd_cust divisor 20
_and_
... baudrate 38400
in one of the logs.

Lawson

Truth can never be told so as to be understood, and not be believed.
                                - William Blake






More information about the wine-users mailing list