Why are some of AT commands failing when others aren't?

I have an Arduino Uno hooked up to an esp8266. I have it setup as an access point. I can send data to it via a tcp client and print the data in the serial monitor. It seems to be working ok. However, when I issue some AT commands to the esp8266 it echos back misspelled commands instead of the command that I sent. When this happens the command doesn’t work. For instance, if I issue this command from the serial monitor: AT+GMR I get the following response:


AT vershon: 11 2016 08:09:56)
SDK version:0.5.4epa11

Note the echo’d command is AT+GLR not AT+GMR. Its not misspelled the same way every time and some commands don’t work. I’m a total noob so any help would be appreciated. Here’s my sketch:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
  // Open serial communications and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only

  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port

void loop() { // run over and over
   int incomingByte = 0;
  if (mySerial.available()>0) {
    String a = mySerial.readString();
    if (digitalRead(LED_BUILTIN) == HIGH){
      digitalWrite(LED_BUILTIN, LOW);
      digitalWrite(LED_BUILTIN, HIGH);
  if (Serial.available()) {

SoftwareSerial can't handle 115200 baud. send AT+UART_DEF=9600,8,1,0,0 to AT firmware. hopefully it goes thru. then set the SoftwareSerial to 9600 baud

You nailed it! Thanks for the help! Things are working much more consistent now.