A public technical documentation edition covering module overview, chip solution, pin definitions, performance parameters, reference circuit, AT command configuration, PCB layout guidelines, module usage and application experiments with open-source driver and sample code.
The BLE Bluetooth module based on EBYTE E104-BT02 implements Bluetooth communication using the E104-BT02 serial-to-BLE module. The module is built on the Dialog DA14580 solution, operates in the 2.4GHz ISM band, and integrates the BLE protocol stack, advertising and connection management, transparent transmission and serial AT-command configuration. The module operating voltage is 2.5~3.6V (3.3V recommended); the carrier board in this project accepts +5V input and regulates it to the module supply through an AMS1117-3.3V.
The module supports master/slave role switching. Users can exchange data with an external MCU over UART, and in configuration mode can modify the device name, baud rate, advertising, UUID, MTU, MAC binding and power-related parameters. By default the module works in slave role with advertising enabled, UART 19200bps, no parity and 1 stop bit — suitable for smart home, industrial telemetry, automated data acquisition, wearables and BLE human-machine interaction scenarios.
Supports the BLE 5.1 standard and is compatible with common BLE Central devices.
Supports master/slave integration; the master can connect to up to 2 slave modules.
Supports UART transparent transmission, default 19200bps, 8N1.
Supports low-power sleep, UART wake-up, data-valid indication and connection-status indication.
Supports 16-bit / 128-bit UUID, MTU 20~128 bytes, Beacon / iBeacon advertising and Bluetooth sniffing.
Comes with an on-board PCB antenna; module size approx. 14.6mm × 21.9mm.
This module adopts the E104-BT02 BLE serial communication module design with the Dialog DA14580 as the core solution. The module already integrates RF, protocol stack and serial transparent transmission internally, so the external host MCU does not need to configure the DA14580 registers directly — it only needs to control the MODE, WKP, RESET_H and UART interfaces per this manual.
The DA14580 is an SoC solution for low-power Bluetooth applications. The E104-BT02 builds on it by integrating BLE protocol processing, UART transparent transmission and parameter storage. The official product datasheet describes the current module as BLE 5.1; early Specification summaries still state BLE 4.2, so both the module firmware version should be recorded for certification, interoperability and production traceability.
The E104-BT02 is a 20-pin, 1.27mm-pitch SMD module. The table below is compiled from the official product datasheet. Keep the reserved pins P01, P02, P07, P10, P12, P13 and P15 unconnected to external logic.
| Pin | Name | Function |
|---|---|---|
| P00 | MOD | Mode control: pull low to enter AT configuration, release to resume transparent transmission |
| P03 | APP | Data-valid indication: low level indicates the module is outputting serial data |
| P04 | MTX | UART data output (module → host RX) |
| P05 | MRX | UART data input (host TX → module) |
| P06 | WKP | Wake-up control: falling edge wakes, rising edge sleeps |
| P11 | STA | Connection-status output: low level indicates BLE connected |
| P14 | — | Role initialization (high level or floating = slave) |
| RESET_H | RST | Hardware reset |
| Others | — | Reserved pins, do not connect to external logic |
The official documentation does not provide a detailed internal block diagram of the DA14580. Combining the external functions of the E104-BT02, the module can be abstracted as the data path "UART interface → module firmware → BLE protocol stack / GATT → RF antenna". P00/MOD, P06/WKP, RESET_H and P14 handle module state, wake-up, reset and role initialization, while P03/APP and P11/STA provide status outputs.
| Functional Unit | Input | Output / Function |
|---|---|---|
| UART transparent transmission | P05 / MRX | P04 / MTX; bidirectional UART ↔ BLE data bridging |
| BLE protocol stack | Advertising, scanning, connection parameters | GATT services, Notify / Write, Beacon |
| Mode control | P00 / MOD, P06 / WKP | Transparent transmission, AT configuration, sleep, wake-up |
| Status output | Internal module state | P03 data-valid, P11 connection status |
| Parameter storage | AT commands | Device name, baud rate, MTU, UUID etc. saved across power cycles |
The main performance parameters of the E104-BT02 are listed below; values are from the official E104-BT02 product datasheet. Typical values are affected by advertising, connection, LED load, power supply and PCB layout.
| Parameter | Min | Typical | Max / Notes |
|---|---|---|---|
| Supply voltage | 2.5V | 3.3V | 3.6V; exceeding 3.6V may damage |
| Communication level | GND | 3.3V | 5V TTL risks damage |
| Operating band | 2379MHz | — | 2496MHz |
| TX current | — | 3.4mA | Typical |
| RX current | — | 3.7mA | Depends on software shutdown conditions |
| Sleep current | — | 3μA | Typical; state-dependent |
| TX power | — | 0dBm | 1mW |
| RX sensitivity | -93.5dBm | -94dBm | -94.5dBm |
| Reference range | — | 70m | Clear open air, height approx. 2.5m |
| Bluetooth protocol | — | BLE 5.1 | Early summary files state BLE 4.2 |
| Module size | — | 14.6 × 21.9mm | SMD, 1.27mm pitch |
The reference circuit of the carrier board in this project consists of +5V input, 3.3V regulation, power filtering, the E104-BT02 module, UART / wake-up interface, MODE control, connection-status LED and power LED.
U2 uses an AMS1117-3.3V to convert the carrier-board +5V input to the +3.3V required by the module. C1 and C2 provide input/output filtering and module supply decoupling. When designing, check the regulator dropout, heating and power-on overshoot to ensure the module VCC never exceeds 3.6V.
The E104-BT02 is the core functional device: VCC connects to +3.3V, GND to system ground; P04 / P05 handle UART, P06 is wake-up, P00 is mode control, and P11 outputs connection status. Reserved pins are left floating per the official pin definition.
In the schematic, LED1 indicates +5V power and LED2, driven by the P11 net, indicates the Bluetooth connection state. The MODE-related button or interface pulls P00 low to enter AT configuration and resumes transparent transmission when released. LED current should be included in low-power measurements.
The schematic labels CN1 as a 4-pin connector with nets +5V, P06, MTX and MRX; H1 is the MODE-related interface / button connection. Before mass production, add Pin1 orientation and wiring order to the PCB silkscreen and assembly drawings to avoid connector direction errors.
The E104-BT02 is a plug-and-play module; there is no need to configure DA14580 registers externally. All common settings are configured via UART AT commands and saved to the module after successful configuration. Before executing AT commands, the module must be awake and P00/MOD must be pulled low.
| Configuration Item | Default | Notes |
|---|---|---|
| UART | 19200bps / no parity / 1 stop bit | Host serial port must match |
| Role | Slave | P14 high or floating |
| Device name | E104-BT02 | Up to 18 ASCII bytes |
| Advertising | Enabled / 1s | Slave waits for connection |
| MTU | 20 bytes | Configurable 20~128, takes effect on next connection |
| Data-output indication | Enabled | P03 outputs low to indicate |
The internal E104-BT02 acts as the core: it wraps the data stream sent by the external MCU over UART into BLE data for wireless transmission, and restores BLE-received data into a UART data stream output to the MCU. The module does not parse user data content — it only performs the bidirectional transparent conversion of "serial electrical signal → BLE wireless data → serial electrical signal".
| Data Direction | Module Pin | Host Connection |
|---|---|---|
| Host → BLE | P05 / MRX | Host TX → E104 P05 |
| BLE → Host | P04 / MTX | E104 P04 → Host RX |
| Data-valid | P03 / APP | Low level indicates the module is outputting serial data |
| Connection status | P11 / STA | Low level indicates BLE connected |
AT commands uniformly use the <command> format without appending CR, LF or CRLF. Common commands in configuration mode:
| Command | Function | Notes |
|---|---|---|
| Reset protocol stack | Reset | Not equivalent to hardware RESET_H |
| Restore factory defaults | Factory restore | High-impact operation |
| Set UART baud rate | Set serial parameters | Takes effect after exiting configuration |
| Read baud rate | Read current serial parameters | Returns current configuration |
| Set device name | Set name | Up to 18 ASCII bytes |
| Read device name | Read name | Returns device name |
| Enable/disable advertising | Advertising control | Used in slave role |
| Read connection status | Status query | Valid when connected |
| Read local MAC | MAC query | Returns hexadecimal address |
| Disconnect current link | Disconnect | Active disconnect |
| Set MTU | MTU configuration | 20~128, takes effect on next connection |
| Enable UART wake-up | Wake-up config | Wake on RX falling edge |
| Control data-valid indication | Status indication | Affects P03 |
| Over-the-air config authentication | Authentication setting | Default 123456 |
Command differences: The AT manual, product datasheet and early Specification files come from different historical versions. Before importing into software, rely on the actual firmware echo and record the firmware version and any abnormal returns.
Keep the area under and around the on-board antenna clear per official recommendations: no copper pour, no traces.
Place the antenna tip near the carrier-board edge and avoid metal enclosures, batteries, screws, shields and high-speed digital lines nearby.
Provide multi-point ground return for the module GND; place the supply filter capacitor close to VCC / GND; do not route UART or LED lines through the antenna area.
After changing module orientation, antenna clearance, enclosure material or grounding structure, re-test range, RSSI, throughput and reconnection.
To obtain the circuit source project, follow the official WeChat account 【Freak 嵌入式】.
This module requires attention to three things at the same time: UART direction, MODE configuration level and WKP wake-up state. Recommended hardware connections:
| E104-BT02 | Carrier Board / Host | Notes |
|---|---|---|
| P04 / MTX | Host UART RX | E104 → host |
| P05 / MRX | Host UART TX | Host → E104 |
| P00 / MOD | Mode control | LOW = configuration, HIGH / floating = transparent |
| P06 / WKP | Wake-up control | Falling edge wakes, rising edge sleeps |
| VCC / GND | 3.3V / common ground | Never apply 5V logic to I/O |
The verified RP2040 wiring uses UART0: GP16 TX → carrier MTX/TX → E104 P05 RX; E104 P04 TX → carrier MRX/RX → GP17 RX. GP16 / GP17 here are only test connections, not mandatory GPIO assignments of the driver.
Important note: The carrier-board net names in this project use host-perspective naming: the MTX/TX net connects to module P05 (module RX), and the MRX/RX net connects to module P04 (module TX). Follow the actual schematic nets — do not cross-connect based on names alone.
Connect the module to the GraftPort-RP2040 development board's UART0 interface using an HY2.0-4P cable:
| Dev Board Pin | Module Pin | Description |
|---|---|---|
| Pin 16 | MTX | UART data line, corresponds to the board TX pin |
| Pin 17 | MRX | UART data line, corresponds to the board RX pin |
The following uses a Raspberry Pi Pico / RP2040, MicroPython and a phone BLE Central as an example to complete AT queries and bidirectional BLE/UART transparent transmission. Before the experiment, confirm the module is powered correctly, the host and module share a common ground, and prepare a connection that can control P00/MOD.
Search for the driver package e104bt02_driver on uPyPI (https://upypi.net/zh/ ), copy the local install command, and import the module driver library via the mip tool:
mpremote mip install https://upypi.net/pkgs/e104bt02_driver/1.3.1
After importing the EBYTE E104-BT02 serial-to-BLE module driver code, copy the main.py code into your project:
Flash the code, open a terminal, connect to the host with the mpremote tool and run main.py:
Keep P06/WKP in the awake state.
Hold MODE so P00/MOD is low.
Read the module baud rate, name, state, MTU, role and MAC address.
Release MODE so P00/MOD returns high.
Open the WeChat mini-program (Bluetooth Serial — Jiangxie Tech / 江协科技).
Use the Bluetooth assistant to connect to the E104-BT02.
Set the receive and send UUIDs (e.g. FFF1 Notify / FFF2 Write).
Observe both ends working.
| Item | UART Baud Rate | Module Name | Bluetooth State | MTU | Working Role | MAC Address |
|---|---|---|---|---|---|---|
| Query Result | 19200 | E104-BT02 | Advertising / Connected | 20~128 | Slave | XX:XX:XX |
Driver library: e104bt02_driver (v1.3.1)
Install command: mpremote mip install https://upypi.net/pkgs/e104bt02_driver/1.3.1
For more content, see the original article: Feishu Wiki

🌟 Tell us what you need. We'll send you the best deal Shipping notice: For door-to-door / DDP service to the US, Canada, and Europe 👉 Shop on RobotShop How to Order:👉Submit Your Request 🎓Free Samples for University Students—University-Sponsorship Applications |