Confirmed Working Code

arduino

#define MODEM_RST       5
#define MODEM_PWKEY     4
#define MODEM_POWER_ON  23
#define MODEM_TX        27
#define MODEM_RX        26
 
void setup() {
  Serial.begin(115200);
 
  pinMode(MODEM_PWKEY, OUTPUT);
  pinMode(MODEM_RST, OUTPUT);
  pinMode(MODEM_POWER_ON, OUTPUT);
  digitalWrite(MODEM_PWKEY, LOW);
  digitalWrite(MODEM_RST, HIGH);
  digitalWrite(MODEM_POWER_ON, HIGH);
 
  Serial1.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
  delay(6000);
 
  Serial.println("Ready. Monitor: 115200, 'Both NL & CR'. Type commands.");
}
 
void loop() {
  if (Serial.available()) Serial1.write(Serial.read());
  if (Serial1.available()) Serial.write(Serial1.read());
}

This code is a plain serial pass-through. After flashing it, open the Serial Monitor at 115200 baud with line ending set to “Both NL & CR”. Dial or answer a call first, and only once the call is connected, type the commands from the “Audio Settings” section below — they do not apply automatically and must be sent fresh after every reboot.

Pinout

Pin Function GPIO
RST5
PWKEY4
POWER ON23
TX27
RX26

Audio Settings

AT+CHFA=0

Main audio channel (NORMAL_AUDIO). This is the default on boot.

AT+CHFA=1

Auxiliary audio channel (AUX_AUDIO). Confirmed working value for the SPK/MIC breakout pads on cheap/clone TTGO T-Call SIM800L V1.4 boards.

AT+CHFA=2

Main channel, hands-free mode (HANDFREE_AUDIO).

AT+CHFA=3

Auxiliary channel, hands-free mode (AUX_HANDFREE_AUDIO).

AT+CLVL=99

Speaker volume. Use 99 for clearer audio on smaller speakers, since they vibrate more; consider securing the speaker with rubber gaskets so it doesn't rattle.

AT+CMIC=0,13

Mic gain. This is the best setting found for an electret condenser microphone (ECM).

CHFA resets to 0 on every power cycle or reset, it does not persist. AT+CHFA=1 is the confirmed working value for the SPK/MIC breakout pads on cheap/clone TTGO T-Call SIM800L V1.4 boards — this needs to be set again after every reboot, along with CLVL and CMIC, since none of these settings survive a restart.

Tips

  • Make sure of a clean solder joint and low-resistance wires.
  • Avoid larger, older speakers. 32 ohms is recommended; any speaker from a keypad phone or landline telephone will work.
  • Some landline speakers are below 8 ohms or above 32 ohms — test with a multimeter in continuity/beep mode before using one.
  • For a microphone, use an Electret Condenser Microphone (ECM) for best performance. Phone/landline microphones work too.
  • On older TTGO boards (v1.4 and earlier), there are TVS protection diodes on one of the mic and speaker solder pads — check them with a multimeter.

Don'ts

  • Don't use damaged old wires, like worn jumper wires or thick wires. Always prefer low-resistance wire.
  • Don't use too much flux on the solder joint, it can cause a cold solder joint.