How to change baudrate of ESP8266 (12e) permanently? IMPORTANT: DO NOT USE AT+IPR=9600! (see update)

I have an ESP8266 12E module that communicates at 115,200 bauds. Since I use it with an Arduino Nano with SoftwareSerial things get messy. So I found that I should reduce the baud rate of the ESP module.

I found this link on how to do it.

I am wondering


Is this a permanent change or do you need to do this every time after the module is powered?
Can I achieve the same by sending the command from the Arduino over SoftSerial? Well, I guess not since I tried and I always get an error on AT+CIOBAUD=9600 or AT+IPR=9600.
I read somewhere that in newer firmware versions of the ESP8266, the baud rate defaults to 9,600. Can anyone confirm this and if so, is it better to flash this newer firmware?


The module's vendor:

Ai-Thinker Technology Co.,Ltd.


I think the current version of the firmware is 0.3.0. If I send  AT+GMR I get:

sending AT+GMR

response: ?AT¥TJÕ¨H(Q�²•ÉÍ¥½¹é‚r¢‚r‚r‚BÕ��Â’‚ŠªŠ¢Ò¢ªÒªÂJm
 SDK versioo:0.3.0
 Ai�½½
 ‚Šj


Again some garbage because of the baud rate which is too high.

Other info on the module:

sending AT+RST
response: ?AT+RST
OK
WRT
"%M
&lt;99CT
 ets Jan  8 2013,rst catse:2, boot lode:(3,7)
load 0x40100000ntail 4
chksum 0x89
ld tail 4
chm3 tail 8 r 0 aM
 ón't use rtc mem dat`
sl��oÌÿ
Ai-Thinker Technology Co.,Ltd.


UPDATE

(*) I used an FTDI232 module to send AT+IPR=9600 to my ESP8266-12E module and I bricked it!

DO NOT USE AT+IPR=9600 ON AN ESP8266(-12E).

I did not manage to recover it so far! I tried re-flashing it but I get Invalid head exceptions.

On a new module I sent the AT+CIOBAUD=9600 command and it worked. Permanently!

My module specs:

AT+GMR 
AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
Depending on how recent a version of the AT Instruction Set interpreter your chip has, the two instructions you tried may not be valid ones; they are not listed in Espressif's ESP8266 AT Instruction Set document. Searches for either "CIOBAUD" or "IPR" in the current document (version 1.5.3) return no results. 

The baud rate commands are now "AT+UART_CUR" and "AT+UART_DEF" which configure the entire UART for the current session or the current and future sessions, respectively. The manual's prototype for the command is:

AT+UART_DEF=&lt;baudrate&gt;, &lt;databits&gt;, &lt;stopbits&gt;, &lt;parity&gt;, &lt;flow control&gt;
Example:
AT+UART_DEF=115200, 8, 1, 0, 3


I have used these and can confirm that they work.

What I've found using software serial is that it can push 115200 baud well enough to send commands to the device (though I wouldn't build an application that depends on it) but it can only read reliably up to 9600 baud. I've been able to change my devices' baud rates from 115200 baud to 9600 over software serial; you just have to expect garbage coming back and ignore it:

// Set ESP8266 baud rate to 9600. You only need to do this once per device
set software serial baud to 115200;
send "AT+UART_DEF=9600,8,1,0,0";
set software serial baud to 9600;
// From now on, communicate with your device at 9600 baud.