1

I purchased a generic 8-pin ESP8266 off Amazon. It came loaded with some "AT" command firmware that acted like a modem. I connected the module to an FTDI1232 which is a USB connected UART that acts like a serial port.

Here is the USB ID:

Bus 002 Device 010: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

It appears as /dev/ttyUSB0 in my system. I installed CuteCom on my Ubuntu 14.04 machine, selected a speed of 115200, no parity, 8 bit characters and 1 stop bit. I was able to communicate normally to send and receive data using CuteCom.

However, I don't really have much usage for this default firmware. I downloaded the latest version of Arduino IDE and then added in ESP8266 support via an additional core package.

To program this device, I connected the ESP8266 based off this diagram.

enter image description here

This is basically the circuit I already had, but I had to add the RTS & DTR lines to complete this.

I created a very simple sketch like this

void setup(){
  Serial.begin(115200); // 8 bit char, no parity, 1 stop bit
  while(!Serial){};
}

void loop(){
  int v = Serial.read();
  if(-1 != v){
    Serial.write((uint8_t)v);
  }else{
    delay(10)
  }
}

This is a basic "echo" type sketch that should write back whatever is written to the device.

After uploading the sketch I can use the Tools -> Serial Monitor to interact with the sketch. I created a couple more, including one that transformed the data sent and then echo'd it back. They all work.

At this point CuteCom, didn't work at all. After much searching for the reason, I eventually looked at the implementation of the Serial Monitor in the java code. What I found is this line

  !BaseNoGui.getBoardPreferences().getBoolean("serial.disableRTS"),
  !BaseNoGui.getBoardPreferences().getBoolean("serial.disableDTR"));

From: https://github.com/arduino/Arduino/blob/ee1967cd530ceb9a1d638875e385157e90d532e8/arduino-core/src/processing/app/Serial.java#L68

It appears that basically each "board" (the nomenclature for the code that lets the SDK talk to the ESP8266 here) defines whether or not RTS & DTR should be enabled. The code then calls the jccs library to enable or disable RTS & CTS.

At this point I disconnected the lines from my ESP8266 that were connected to RTS & CTS. I was able to use CuteCom again to talk to my new sketch I had uploaded. However, I don't want to have to disconnect & reconnect my lines each time I program from the Arduino IDE.

Obviously it's possible to talk to the device without disconnecting them as the "Serial Monitor" in the Arduino IDE works just fine.

How can I get a serial terminal emulator in Ubuntu 14.04 that will let me ignore RTS & DTR? I'd also accept commands to put the port in this mode so it can be used with socat or similar.

It's probably irrelevant, but here is a photo of the actual devices

enter image description here

  • Disabling it via stty didn't work? (man stty). – dirkt Aug 27 '18 at 5:50
  • Other serial programs are screen minicom picocom arduino-serial, python serial.Serial(). – meuh Aug 27 '18 at 9:44
  • Looks like CuteCom (at least in Debian 9) will always assert DTR and RTS when opening the serial port, even when you set Flow Control to None. Try other programs as listed by @meuh. – telcoM Aug 27 '18 at 9:57

Your Answer

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

Browse other questions tagged or ask your own question.