Parallax LCD Output Correct on 1.8.9 and Incorrect on 1.8.10+

I work at an educational institution and we use Parallax LCD’s (link to product) (link to data sheet) along with Arduino Uno’s (R3). We have been using the same sample code for years without issues but this year encountered undesirable behaviors with newer IDE versions. I have attached the sample .ino we use, but it may not be very useful without a comparable LCD to connect to.

The behavior we are seeing is that when using the SoftwareSerial library instead of the regular TX pin, text does not seem to print correctly and the cursor location seems to move around so that characters end up where they shouldn’t be. Reverting to IDE 1.8.9 fixes the issue, and 1.8.10 and 1.8.12 definitely have it. This is across dozens of computers and Uno boards so I’m pretty confident the issue is tied to the SoftwareSerial library and not another factor.

This is what it looks like on 1.8.9 (which is what it is supposed to look like)

This is what it looks like on 1.8.10+ running exactly the same sketch (outcome is consistent across LCD’s, Unos, and computers - it is always wrong the same way)

I checked the GitHub listings for known bugs relating to SoftwareSerial and I don’t see anything that looks like this in open issues.

For right now, we can just revert versions to 1.8.9 and be OK.

I am trying to figure out
-if this is actually a bug OR
-some kind of change in how the library works that makes this expected behavior and we need to code differently OR
-something else?

Basically I’ve done as much testing as I can think of, and I am confident the issue relates to either changes in the IDE in general or SoftwareSerial.h in particular between 1.8.9 and 1.8.10. I just don’t know what to do next to further narrow this down or what would be most helpful to report as a bug. Any ideas?


LCD_Sample_Code.ino (2.26 KB)

What about version 1.8.12?

Yes, the problematic behavior is still present in 1.8.12. This is where we first noticed it. I checked every version going back until it worked, and found that all 1.8.9 worked and 1.8.10 through 1.8.12 didn't. Can anyone help figure out if this is a known bug or issue or recommend the best way to report this for future fixes?


Interesting, it may be possible to open an issue in the repository.

I did my best to open an issue, visible here.

I am not sure that was the best possible report and would welcome additional perspective either here or appended to the Github issue.

I also verified this behavior still happens in the hourly build as of time of posting, so it is definitely still current.

It's very unlikely that the issue is dependent on the Arduino IDE version. More likely, it is tied to the version of Arduino AVR Boards.

The Arduino AVR Boards version is loosely tied to the Arduino IDE version because each release of the Arduino IDE comes with a bundled copy of Arduino AVR Boards at the latest version at the time of the release. This is why you might see a difference when using one IDE version vs. another.

However, with Boards Manager (Tools > Board > Boards Manager), it is possible to use any version of Arduino AVR Boards with any version of the Arduino IDE. For this reason, it doesn't really make sense to mention only the Arduino IDE version when talking about this type of bug.

Try this:

  • Start Arduino IDE 1.8.9
  • Tools > Board > Boards Manager
  • Wait for the downloads to finish.
  • Note the version number of Arduino AVR Boards that is installed.
  • Start Arduino IDE 1.8.12
  • Upload your LCD sketch to your Arduino board.
  • Verify the problem still occurs.
  • Tools > Board > Boards Manager
  • Wait for the download to finish.
  • Click on "Arduino AVR Boards".
  • From the "Select version" dropdown menu, select the version of Arduino AVR Boards that you noted was in use with Arduino IDE 1.8.9
  • Click the "Install" button.
  • Wait for the installation to finish.
  • Click the "Close" button.
  • Upload your LCD sketch to your Arduino board.
  • Check to see if the problem still occurs.

In the event the pert's instructions do work (I think they will - I agree with his assessment), I'm very curious to know the two versions involved...

Performing the tests recommended by pert yielded the predicted results.

On 1.8.9 with AVR version 1.6.23, there is no problem.

On 1.8.12 with AVR 1.8.2, the problem exists.

On 1.8.12 with AVR 1.6.23, there is no problem.

I also verified the problem exists in AVR 1.8.1, which was the only version visible to me between 1.6.23 and 1.8.2.

Is there something specific I should do with regards to updating my bug report based on this information / to help it get to the right people?