On 2014-03-11 16:59, Linus Torvalds wrote:
On Tue, Mar 11, 2014 at 6:27 AM, Jef Driesen jef@libdivecomputer.org wrote:
I wonder if this is another case where the tcdrain() function isn't waiting properly until all bytes have been send out.
Assuming it is ftdi, we should have at least *tried* to do it since 3.8, but I really won't guarantee that it works. I'm assuming Hamish has something newer than that, but who knows.. As usual, I think Debian "stable" (also known as "bat shit crazy") is some ancient 3.2 kernel still, but all other distros should be much more up-to-date.
We had a similar problem with Suunto devices before.
As you know (but perhaps others don't) this isn't a Suunto problem per se - the actual *real* legacy serial cable should work fine, because on a real UART we generally have an easy way to check whether the send buffer has actually flushed out.
But the USB people originally (consciously) decided to not make USB -> serial be a standard, because their argument was that USB should replace serial lines, and USB serial dongles were thus "invalid". Morons with an agenda. As a result, there is no actual standard USB serial conversion model, and every single USB serial chip is a "hack" pretty much by definition.
And with simplex being *so* unusual, it doesn't get a lot of attention and testing, and since it's not some generic standard, it's always per-dongle-chip-driver.
With USB being the Universal *Serial* Bus, it's kind of funny that one thing it doesn't do very well is serial communication :-)
Isn't USB CDC-ACM supposed to be the standardized way for emulating legacy serial communication over USB? There are a few dive computer using it (Mares Icon HD and Dive Rite Nitek Q), but these are all using a microchip internally. So although they do present themselves to the outside as a legacy serial port, at no point there is any conversion to real serial communication necessary (because that microchip speaks native usb). So that's quite different from using a usb-serial conversion chip from ftdi or prolific, which really has to emulate serial communication on one end.
Jef