MP3-TF-16P aka DFPlayer Mini .. another cheap sound module

i just found this mp3 module, ii is sold on aliexpress as MP3-TF-16P or on DFRobot website as DFPlayer mini

on DFRobot website there is also a support page where u can find also the libray and example code with manual

this module is similar to this but it's not the same, it is better because does support the serial communications with arduino

it also has a LM4871 build in amplifier (3w@3ohm or 2,5w@4ohm)

what i don't understand is:does it support stereo speaker out? from what i can see, the earphone out supports 2 DAC channels while is not clear about the speakers (SPK1 and SPK2 = 2 channels??)

Hi I"m looking for a voice/audio player for my project, a module with SDcard support.

I have a WTV020-SD-16P and it's very very hard to find a sdcard for it,. I tryed 3 and none works.

I ordered a DFPlayer - A Mini MP3 Player (always on the road) I think it's the best for the price.

DFPlayer is mono with SPK_1 and SPK_2. But it's stéréo (for earphone and amplifier) with DAC_R and DAC_L. - Stereo, humm:

Can see Audio Left and Audio Right but not Stereo.

I'm waiting for this DFPlayer mini, i will try it and report infos.

(As you can read, i'm not english, just a french:)

I have received my DFPlayer Mini.

I was unable to make this WTV020M01 works. It's a S*t !!! (Most people can't make this S*t working. You MUST have a Sandisk 2Go SD Card, but mine doesn't works.

So, I try this DFPlayer mini. No luck with my Arduino nano but... Why not try with my Arduino Uno.. and :

It Works !!! Nice sound with a 0.5W 8Ohms Speaker. I try several speakers and it works great.

I try a Kingston 2Gb SD Card.

  • FAT/FAT 32 : Works.
  • Mp3, wav : Works.

The library is really poor but can be improved. I will probably do it after my project.

I thinks it can works why my Nano, it's my fault, i try later.

Just one thing, You must unwire TX/RX for upload sketch to Arduino. I think Software serial is possible.

For my project, a Arduino Darts with voices, the library is perfect, just play (n° file).

  • Several tests later...

For the price, DFPlayer Mini is perfect !!!

I found a new library :

Thanks for sharing this info. I saw this module on Alieexpress before and wondered how well it really worked. The 2 Gb limitation was slightly offputting to me. (Not because of the size, but the availability of suitable SD cards)

I have a question for you: Is it a requirement that the files are named like, 2.mp3, 3.mp3 etc? Or can you also use names like songa.mp3, songb.mp3 etc.

3 days i'm working with this DFPlayer and... humm.. my brain will explode ;/

very strange behavior.

  • It's a pain to use this module with RX/TX from arduino (Hardware Serial). You MUST unplug RX/TX for upload to Arduino. It's very very boring but i know this problem (as serial bluetooth module and others serial devices).

So, use le news library and/or use Software Serial is recommended.

The problems identified :

  • Time to boot is random, i don't know why sometime it take 1s, some time 20s...
  • Easy to crash if you send commands too quick or....random crash/random start...
  • Sound at 100% (30/30) is nice but sound at 35% (10/30) or others is crackle. (must use 100% volume or sound isn't perfect).
  • I read everything I could find on the DFPlayer but the information is contradictory.
  • 0-2999 files (really 0 ?? :) - 100 folders of 255 files (100 * 255 = 25500).
  • folder names 001, 002, 003, but news library use folder "mp3"
  • 1st library i found is very very incomplete. 2nd is incomplete too.
  • Use external Power to try DFPlayer, don't works with 5v supplied by Arduino. The sound cuts.
  • If you power down the DFPlayer, do it 5 seconds mini.
  • TTL is 3.3v so USE 1kOms between (Arduinot TX) and (DFPlayer RX) (i will try level shifter) cd4050
  • USE 5V (external power supply, i use 5v 2a) to power DFPlayer. 3.3V powered doesn't works.

  • All samples i try are playing by DFPlayer (22khz, 44khz, wav, mp3).

  • samples names are not only xxxx.mp3 (copy/paste mp3/wav on SDcard and play. (sample are called 1, 2, 3, ... by DFPlayer). +2Gb and 8Gb mSD card work.

I don't use any DFPlayer library for playing samples with DFPlayer. I use only "SoftwareSerial"

Just to try DFPlayer if it works :

  • Format mSD (FAT or FAT32).
  • put wav file on mSD.
  • name it : 01.wav.


// **************************************************


SoftwareSerial mySerial(10, 11); // RX, TX uint8_t play1[10] = { 0X7E, 0xFF, 0x06, 0X03, 00, 00, 0x01, 0xFE, 0xF7, 0XEF};

void setup() { mySerial.begin(9600); delay(1000); }

void loop() { for (int i=0; i<10; i++) { mySerial.write( play1 *); }* * delay(2000);* *}* _// **************************************************_ *I put screen capture, see the forum doesn't print my sketch correctly.* *![](* *This module isn't perfect bu it works.* *I don't know if i can use it for my project, i want a playeur module, fast ans without bugs.* *> I have a question for you: Is it a requirement that the files are named like, 2.mp3, 3.mp3 etc? Or can you also use names like songa.mp3, songb.mp3 etc.* Name as you want and create folders but : I don't know/understand how it works I try it again and again.. next post... Edit : I create "reset" fonction and i do this at boot time. - mySerial.begin(9600); - delay(400); - rst(); - delay(400); - vol(30); - delay(400); And it boot fast, no bug... (for this time...). I think i can reduce wait time between serial commands. Edit: it appears that with .mp3 instead of .wav, the "clap ! sound" at start playing isn't as high. Bur for looping sample, i think it can be a problem. Now i will try it folders can be used.

Thanks for sharing all that you have learned about this module. I guess its a case of you get what you pay for. It is a cheap module which is probably good enough for a toy or joke gadget. But not really suitable for an advanced project requiring reliability and predictability.

Today i tried to make folders working, but no luck, no work.
I don’t know why, i have understood the DFPlayer protocol and i send the good commands.

  • Equalizers (Normal/Pop/rock/Jazz/Classic/Base/…) Works !
    In the DFPlayer manual, i saw : Only 6 EQ, same in the DFRonbot Wiki.
    But i don’t remember where, i saw 10 EQ, i try this and there seems to be 11 equalizers (0-10) NOT SURE.

I always have a small “clap” sound before playing each sample (i tried others .mp3).

I tried 4 speackers, no hardware issue.
I will try level shifter soon for TTL (3.3) TX

Today, i want to try playing files named 001.mp3, 002.mp3, 003.mp3...

  • I put 43 mp3 on SDcard, the 43 numbers of a darts games. 25.50.

Files are namad : 00.1mp3 002.mp3 ... 022.mp3 024.mp3 ...

There's no 023.mp3 ...

If i send a command to DFPlayer to play sample 001 to 022, it play 001.mp3 to 022.mp3 but, if i ask to play file name 023, it play 024.mp3.

The DFPlayer doesn't care of files names, it play files as they are in folder structure. You can name the files as you want, it doesn't care.

It's a pain to organize the mp3 on sdcard.

something else, i always have a "clap" sound at startup playing sample, It i put volume to 0 (0-30) i always have this "clap". If your sample start immediately, probably no hear this "clap" but it there is a silent before, a "bad clap" is announcing the sample.

Is anyone know a samples player module, cheap and i2c controlled ? SPI, no needed. Serial, humm.... But I2C can be a good solution.

hi i purchased this muodle and test it times and times but dont work. i dont know whats problem!! :( please help me

I can't. Why ?

Tell me more, tell me all.

SD card format, SD card files. Wires, speaker, arduino, sketch...

i used a sd card that writed on that micro sd TM,2GB without any other thing .similar this attached pic:
format of file is 001.mp3,002.mp3,003mp3,…
sd card forma:fat/fat32
speaker : 0.5 watt,8ohm
i use switch command based on second pic without any other controller.
power supply: 3.3-5.5 v examined
notice ; when the player supplied by 4V and higher voltage blue LED is lights and busy pin is 2.2V to 3v


Is your speaker ok ? try it.

  • What is your 5v power ? How many "mA" . I use a 1A 5V to power the DFP.
  • Try another SDcard.
  • Try .wav files. Try this mp3 : ""

I use DFP with arduino only. Can you try it with arduino ?

tnx downloaded it i dont have arduino i try with other speaker and sd micro for next two days and go back again tnx u again ;)

first excuse me for bad english :cold_sweat: i tested module again and again with this micros: 1: 4gb gigastone 2: 2gb taiwan 3: 2gb team 4: erased ! but reaction of module: 1: led off,busy 1, no sound 2: led on,busy 0, no sound 3: led on,busy 0, no sound 4: led on,busy 0, low voice (zzzziiizz) by these result can i conclude that module is ok or damaged? notice: i run without controller but tomorrow try it. and module dont react to increasing volume

hi friends i send to module a cmd for playing those attached files with uart port but dont hear any clear voice please help me,please

Hum, i don’t know why your DFP doesn’t work.
Mine work great.

What is your power Supply ?
Have you try to format your mSD with : “HP USB Disk Storage Format Tool” ?
Is you speaker works ?

Im currently working on a project to play random audio tracks when no sound is detected, the random track played when there is no sound MUST start from the beginning. When sound is detected the DFPlayer must stop playing or pause. The DFPlayer is connected to the Arduino via serial connection. Ive spent 3 days playing with the serial code but cant get it to work, the DFPlayer works fine stand alone but not via serial can someone please help. Ive included my code but have removed all the code to send via serial if someone can help its driving me mad.

int soundSensorpin=A4;
int soundReading=0;
int soundThreshold=300;
int relay1pin=9;
int relay2pin=10;

void setup() {
    // initialize the button pin as a input:
pinMode(relay1pin, OUTPUT);
pinMode(relay2pin, OUTPUT);
pinMode(soundSensorpin, INPUT);

 // initialize serial communication:
       //setup code for player if needed 
    void loop() {
  static uint32_t ts = millis();
  static uint16_t counter = 0;

  // If the counter > 0 then count down by 1.  If it reaches 0 then switch back to music.
  if (millis() - ts > 0) {
    if (counter > 0) {
      if (counter == 0) {
        //code here needs to play random track starting from the beginning of track
        digitalWrite(relay1pin, LOW); // relay open
        digitalWrite(relay2pin, HIGH); // relay close

  // If there is sound, then switch to speech, and set the counter to 1000.
  soundReading = analogRead(soundSensorpin);
  if (soundReading > soundThreshold) {
    counter = 5000;
   //code here needs to stop or pause player

    digitalWrite(relay1pin, HIGH); // relay close
    digitalWrite(relay2pin, LOW); // relay open


u can find code, library and examples here

the problem of this module is that if you don't use the library above u have to calculate checksum for each serial string..

the serial connection need 100ohm resistor (3.3 volts vs. 5volts arduino) the manual states 1k ohm but i guess it's not correct

everytime after uploaded the code to arduino it needs to unplug the power to works with the new code

many times it doesnt' do what requested in the code

this module is not reliable, i prefer the WT5001M02-28P much more.

Hello, All!

Please tell me how to calculate the checksum?

I need a module from a total of seven control commands:

  1. Play. 0X7E, 0xFF, 0x06, 0X03, 00, 00, 0x01, 0xFE, 0xF7, 0XEF

  2. Loop. 0X7E, 0xFF, 0x06, 0X11, 00, 00, 0x01, ?? , ?? , 0XEF

  3. Pause. 0X7E, 0xFF, 0x06, 0X0E, 00, 00, 0x00, ?? , ?? , 0XEF

  4. Volume level 0. 0X7E, 0xFF, 0x06, 0X06, 00, 00, 0x00, ?? , ?? , 0XEF

  5. Volume level 10. 0X7E, 0xFF, 0x06, 0X06, 00, 00, 0x0A, ?? , ?? , 0XEF

  6. Volume level 20. 0X7E, 0xFF, 0x06, 0X06, 00, 00, 0x14, ?? , ?? , 0XEF

  7. Volume level 30. 0X7E, 0xFF, 0x06, 0X06, 00, 00, 0x1E, ?? , ?? , 0XEF

I am familiar (thank you, Ironic62) with the format of these commands, but do not know how to calculate the checksum.

Help me, please ...

Thank you.