Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Not raising DTR #3
When I connect to a USR Courier modem, it's clear that DTR is not being raised. Upon starting picocom the RS (RTS) LED comes on, but not the TR (DTR) LED.The modem echoes AT commands but won't respond, unless I flip DIP switch 1 from "DTR Normal" to "DTR Always On" at which point it works.
Starting minicom I get the same, unless I issue "hang-up line" (meta-H) command; after that DTR is raised.
This could of course be bugs in picocom and minicom (not ported correctly to OSX) rather than the osx PL2303 driver. I tried to recompile the driver with debugging enabled; however when I go into USB Prober > USB Logger, select level 7 and hit Start, I still don't see any messages from the driver. The same is true after unload/load and even a full system reboot. I know I'm doing something wrong here, but I don't know what it is.
From dmesg I just get this:
If I issue the Picocom key to toggle DTR (^A ^T) then nothing happens on DTR but each time it says DTR is up:
If I issue the Picocom key to pulse DTR (^A ^P) then I get
Running picocom under dtruss and typing ^A ^T shows:
picocom source shows that for non-Linux systems, to drop DTR it calls tcsetattr after using cfsetospeed and cfsetispeed to B0, and to raise DTR it just tcsetattr's back to the right settings. This looks like something of a frig because there is no more specific API, but in any case I think it is the driver's responsibility to raise DTR when the port is opened: see http://www.steve.org.uk/Reference/Unix/faq_4.html#SEC54
I found a simple workaround: disable DTR/DSR handshaking in the driver.
In my opinion, using DTR/DSR for handshaking is misguided. This is what RTS and CTS are for. If your incoming buffer fills and you drop DTR, then most modems will drop the call!!
However in any case it seems that it doesn't work properly, because DTR isn't raised in the first place.