LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Joe Barr <joe@pjprimer.com>
Cc: Linux Kernel mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Serial port blues
Date: Sat, 20 Jan 2007 23:07:38 -0800	[thread overview]
Message-ID: <45B3113A.7070006@zytor.com> (raw)
In-Reply-To: <1169242654.20402.154.camel@warthawg-desktop>

Joe Barr wrote:
> I'm forwarding this post by the author of a great little program for
> digital amateur radio on Linux, because I'm curious whether or not the
> problem he is seeing can be resolved outside the kernel.
> 
> All comments welcome on/off list.
>
> Thanks,
> Joe Barr
> K1GPL

[...]

> 
> I've spent the last day staring at the oscilloscope and pins RTS and DTR 
> on the serial output for 4 different computers running 4 different 
> versions of Linux.  Also have exhausted the search on the internet for 
> information regarding both the latency and jitter associated with ioctl 
> calls to the serial driver (both ttyS and ttyUSB).  I'm sure it is out 
> there somewhere, I just cannot find it.
> 
> I am now convinced that the current serial port drivers available to us 
> on the Linux platform WILL NOT support CW and/or RTTY that is software 
> generated in a satisfactory manner.
> 
> To test the latency and jitter of the ioctl calls to set or clear RTS 
> and / or DTR I built a basic square wave generator with microsecond 
> timing precision.  The timing could be derived either from the select 
> system call or by controlled i/o to the sound card.  Both provide very 
> precise timing of the program loop.  Each time through the loop either 
> the RTS/DTR was set or cleared.  The timing jitter for each 1/2 cycle 
> was from 0 to +4 msec.  This varied between systems as each had 
> different cpu clock rates.  The jitter is caused by the asynchronous 
> response of the kernel to the request to control the port.  ioctl 
> requests apparantly do not have a very high priority for the kernel.  
> They are probably just serviced by a first-in first-out interrupt 
> service request loop.  That type of jitter is tolerable up to about 20 
> wpm CW.  It totally wipes out the ability to generate an FSK signal on 
> the DTR or RTS pin.

Okay, here he's using bit-banging of the DTR and RTS pins to generate a 
fairly high precision output wave.  This is not really the

> Direct access to the serial port(s) is a kernel perogative in Linux.  
> Only kernel level drivers are allowed such port access.

So write a kernel driver.  It's not like we're locking anybody out. 
There is certainly enough Amateur Radio/Linux crossover that a kernel 
enhancement to support Amateur Radio is going to get frowned upon.

> So ... bottom line is that all of my attempts over the past couple of 
> months to provide CW and / or FSK output signal have been to fraught 
> with pitfalls.  The CW seems OK for slow speed keying, but the FSK seems 
> impossible to achieve.
> 
> The FSK using the UART is also limited by the Linux operating system and 
> the current drivers.  That limitation excludes the use of 45 or 56 baud 
> BAUDOT.

That is true at the moment (due to unfortunate design choices made early 
on), but this is already in the process of being changed:

http://lkml.org/lkml/2006/10/18/280

> Until such time as new information becomes available I am going to 
> comment out all references to CW and / or FSK via RTS/DTR.  I also 
> question how useful the FSK on TxD (UART derived) might be to most users 
> since the 45.45 baudrate is not available in the serial port driver.  
> That function will also be commented out.
> 
> All this should not really come as a surprise since Linux is not a 
> real-time operating system. By the way, I did try the tests with the 
> test program running with nice -20.  Not much difference.

See again how he should be using real-time priority rather than nice -20.

> Sorry folks, but we win some and lose some.
> 
> 73, Dave, W1HKJ

	-hpa


  parent reply	other threads:[~2007-01-21  7:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-19 21:37 Joe Barr
2007-01-20 17:36 ` Willy Tarreau
2007-01-21  5:54   ` Theodore Tso
2007-01-21  7:05     ` Willy Tarreau
2007-01-21 14:04       ` Johannes Stezenbach
     [not found]         ` <2f4958ff0701210650w4fa0138di6a5026de8a0823dc@mail.gmail.com>
2007-01-21 14:58           ` Willy Tarreau
     [not found]             ` <2f4958ff0701210710r743c1821n9af23a050c847a7@mail.gmail.com>
2007-01-21 18:52               ` Theodore Tso
     [not found]                 ` <2f4958ff0701211105p4f7e3e86x8aaf14566112bc51@mail.gmail.com>
2007-01-21 19:30                   ` Theodore Tso
2007-01-21 18:55       ` Theodore Tso
2007-01-21  5:09 ` Stuart MacDonald
2007-01-21  7:07 ` H. Peter Anvin [this message]
2007-01-21  7:08 ` H. Peter Anvin
2007-01-21 20:44   ` H. Peter Anvin
2007-01-22 11:37 ` Alan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45B3113A.7070006@zytor.com \
    --to=hpa@zytor.com \
    --cc=joe@pjprimer.com \
    --cc=linux-kernel@vger.kernel.org \
    --subject='Re: Serial port blues' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).