[Thumbgps-devel] USB handshake signals and Linux

Eric S. Raymond esr at thyrsus.com
Wed Mar 14 06:49:20 EDT 2012


Since the Plane Jane design concept depends on the host system being
able to see USB events corresponding to serial handshaking state
changes, I went looking for information on which handshake signals
from which serial-to-USB adapters actually propagate these signals
through. I focused on Linux becase that's the kernel for the 
bufferbloat deployment.

My list of adapters is taken from the gpsd udev rules file. This
enumerates all the USB-to-serial chips we've observed in the wild
since 2005. Note that the PL2303 is by far the most common, with
15 of 20 device types for which we know the USB chip using
it. Weighted by device volume the PL2303's share would be far higher.

PL2303: From source/linux/drivers/usb/serial/pl2303.c in 2.6.11.8,
there are defines UART_DCD, UART_RING, UART_CTS and UART_DSR and code
to implement looking at these signals in the TIOCMGET and TIOCMIWAIT 
ioctl handlers.  A bug fix for TIOCMIWAIT was merged in 2006.

FTDI SIO: (8U232AM / FT232): There is a comment in the kernel source
file drivers/usb/serial/ftdi_sio.c from 2.6, in the implementation of
TIOCMIWAIT, that specifically says "Wait for any of the 4 modem inputs
(DCD,RI,DSR,CTS) to change". I found no bug reports or fixes relating
to this feature.

Cypress M8/CY7C64013: Like the FTDI; TIOCMIWAIT is implemented for 
all four handshake lines.  I found no bugs relating to this feature.

Cygnal Integrated Products, Inc. CP210x: Like the FTDI and Cypress M8;
TIOCMIWAIT is implemented for all four handshake lines. The code was
reworked in 2010.

Note: there is a known TIOCMIWAIT bug in the *device-independent* part
of the serial-device layer: speed or other serial-parameter changes
during a TIOCMIWAIT call will hang it. GPSD has had to work around
this.

Conclusion: if we can get 1PPS to the input side of any of these
adapters, the Linux host will be able to see it.  
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

Rifles, muskets, long-bows and hand-grenades are inherently democratic
weapons.  A complex weapon makes the strong stronger, while a simple
weapon -- so long as there is no answer to it -- gives claws to the
weak.
        -- George Orwell, "You and the Atom Bomb", 1945



More information about the Thumbgps-devel mailing list