0
\$\begingroup\$

32u4 based "USB Serial Ports" refuse to send data to the PC unless DTR on the PC software side is set to high. If the PC software does not set DTR to true (high?), then Serial.print() on Arduino goes into a black hole, and the software never gets the responses from the Arduino.

I need to get a third party software package to work with my Arduino Pro Micro based device. This software sets DTR to false, which works fine with many other devices. Aruino receives data from the PC just fine, it's only the arduino responses that are lost.

End result...the software can send commands to my device, but because the PC software does not set DTR to true (high?), my Serial.print() responses are not received...the 32u4 essentially blocks the responses because DTR is low...even though serial data is going TO the arduino.

PIC microcontrollers, and Arduino UNO's etc., don't require DTR to be set high on the PC side for USB serial to work, FTDI chips seem to ignore DTR, so this third party software works fine with most other devices.

Modifying my hardware is not an option. How can I, in software/firmware, hack this device to ignore DTR so this third party PC software can see serial data from the device?

\$\endgroup\$
  • \$\begingroup\$ I suspect that the behavior has to do with the USB drivers involved, not the hardware attached. At least on a Mac, communication with a FDTI chip runs through a different driver than communication with an USB ATmega, and I suspect it’s the same for other platforms. \$\endgroup\$ – microtherion Sep 11 '14 at 21:24
  • \$\begingroup\$ It's handled inside the 32u4 microcontroller's built-in Serial to USB function. Arduino has no access to DTR. I WANT to ignore DTR, but can't find a way to. FTDI chips seem to (incorrectly?) ignore DTR. Most other devices for this purpose are FTDI based, so it's not been a problem for the software vendor. \$\endgroup\$ – starvingmind Sep 11 '14 at 21:26
  • \$\begingroup\$ So you have an Arduino and Mega32U4 USB/Serial bridge? Do you have source code and exposed programming pads at the 32U4? \$\endgroup\$ – venny Sep 11 '14 at 21:34
  • \$\begingroup\$ It is arduino pro Micro, connected direct to USB on Windows....actually, a custom board with a pro micro mounted to it. \$\endgroup\$ – starvingmind Sep 11 '14 at 21:49
1
\$\begingroup\$

Hmm, upon further review, digging through the Arduino source for the USB serial code, it looks to me like the DTR check is at line 224 (first line of size_t Serial_::write(const uint8_t *buffer, size_t size)). I’m not terribly optimistic about disabling it (you’ll probably flood some buffer), but it might be worth a try.

\$\endgroup\$
  • \$\begingroup\$ As much as I hate to say this, as it's an ugly hack, it worked, and is probably the best solution to my issue. :-) Thank you. \$\endgroup\$ – starvingmind Sep 12 '14 at 2:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.