From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from snark.thyrsus.com (static-71-162-243-5.phlapa.fios.verizon.net [71.162.243.5]) by huchra.bufferbloat.net (Postfix) with ESMTP id A0D4B20069D for ; Wed, 14 Mar 2012 03:49:39 -0700 (PDT) Received: by snark.thyrsus.com (Postfix, from userid 1000) id 697EA40617; Wed, 14 Mar 2012 06:49:20 -0400 (EDT) From: esr@thyrsus.com (Eric S. Raymond) To: thumbgps-devel@lists.bufferbloat.net Message-Id: <20120314104920.697EA40617@snark.thyrsus.com> Date: Wed, 14 Mar 2012 06:49:20 -0400 (EDT) Subject: [Thumbgps-devel] USB handshake signals and Linux X-BeenThere: thumbgps-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Mar 2012 10:49:39 -0000 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. -- Eric S. Raymond 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