A Little Research: ESP32C3 and Bluetooth Standards
Introduction
On this website, I frequently summarize how to connect an ESP32 with a PS4 controller (DUALSHOCK 4) via Bluetooth. This article is about my research into whether I could also connect the ESP32C3 to a PS4 controller.
▼This is the ESP32C3. Despite its tiny size, it supports Bluetooth and WiFi.

For starters, I tried compiling the PS4Controller.h library (which I used with the standard ESP32) for the ESP32C3, but it resulted in an error. Similar issues have been reported in the GitHub Issues section.
▼It was almost identical to this issue:
https://github.com/aed3/PS4-esp32/issues/52
There were other issues on GitHub as well, and among them was an opinion that the Bluetooth standards for the PS4 controller and the ESP32C3 are actually different.
▼This is the issue in question:
https://github.com/aed3/PS4-esp32/issues/32
If a connection is physically impossible at the hardware level, there’s no point in forcing it. So, I decided to look into the Bluetooth standards.
▼Previous articles:
About the ESP32C3
The ESP32C3 is one of the relatively newer microcontrollers in the ESP32 series. I wanted to use the ESP32C3 because it is much smaller than the standard ESP32 I’ve been using. Just like with Arduino, I don't usually need that many pins, so a smaller size is preferable.
Additionally, the ESP32C3 has terminals for a battery and even comes with a built-in battery charger function. While modules for charging batteries are sold separately, having it built-in eliminates the need for them, making it even more suitable for miniaturization.
There are several types of C3 boards, and the one I purchased is the "Seeed Studio XIAO ESP32C3." Note that when selecting the board in the Arduino IDE, I couldn't upload the code unless I specified the exact XIAO version of the ESP32C3.
▼Here is the ESP32 and the ESP32C3 side-by-side. The C3 comes with an antenna.

The wires extending from the board are for measuring the battery voltage through a pin. This method was introduced on the Seeed Studio forum.
▼This is the post I referred to:
https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535
▼I tried soldering it by following the example. It’s a bit scary to solder in such an unstable arrangement…

▼The product page for the XIAO ESP32C3 is here:
https://akizukidenshi.com/catalog/g/g117454
▼Datasheet:
https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf
About Bluetooth Standards
Bluetooth has different versions. The main problem is that some versions are not compatible with each other.
▼Bluetooth 4.0 and later are not compatible with Bluetooth 3.0 and earlier.
http://qa.elecom.co.jp/faq_detail.html?id=4055
This is something we don't usually notice when using everyday Bluetooth devices. I assume many consumer products are designed to support older standards as well. It’s worth noting that Bluetooth 4.0 and later is called Bluetooth Low Energy (BLE), while 3.0 and earlier is often referred to as Bluetooth Classic.
▼This page provides a clear explanation of the differences between Bluetooth Classic and BLE. Apparently, BLE can identify the presence, distance, and even the direction of a device. It has some fascinating features despite being low-power. I wonder if these can be fully utilized in microcontrollers.
Bluetooth 技術概要|Bluetooth® Technology Website
https://www.tjsys.co.jp/focuson/clme-bluetooth/bt-difference.htm
▼As of now, the latest version seems to be Bluetooth 5.4.
https://www.silabs.com/blog/the-new-bluetooth-5-4-what-you-should-know-first
▼A page that also mentions the BLE Library for Arduino IDE:
http://marchan.e5.valueserver.jp/cabin/comp/jbox/arc212/doc21201.html#sect6
Bluetooth on ESP32C3
The datasheet specifies: "Bluetooth LE: Bluetooth 5, Bluetooth mesh."
▼Series comparison of ESP32. According to this, the C3 only supports Bluetooth 5.0. Note that "BR/EDR" listed in the standard ESP32 column is another name for Bluetooth Classic.
https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32c3/hw-reference/chip-series-comparison.html
Bluetooth on the PS4 Controller
On Sony's technical specifications page, it states: "Bluetooth Ver2.1+EDR compliant." It turns out to be a surprisingly old version.
▼The PS4 console itself is listed as "Bluetooth v4.0," but does it implicitly support Classic as well?
https://www.playstation.com/ja-jp/ps4/tech-specs/
▼Here is a page with detailed information about the controller's data format:
https://www.psdevwiki.com/ps4/DS4-BT#Bluetooth_Addressing
Finally
To summarize:
- The ESP32C3 supports Bluetooth 5.0 (BLE) only.
- The PS4 controller uses Bluetooth Classic.
- Bluetooth Classic and Bluetooth 5.0 (BLE) are not compatible.
Therefore, it seems that the C3 and the DUALSHOCK 4 cannot communicate with each other. I am not an expert on Bluetooth, so there might be some mistakes in my findings. If anyone knows a way to connect them, I would appreciate the help.
By the way, the PS5 controller (DualSense) reportedly uses Bluetooth 5.1. If a library becomes available, it might be possible to connect it to the C3. (I personally don't want to try writing a library from scratch...)
▼iPhone 8 and later models are equipped with Bluetooth 5.0. In fact, I was able to communicate between the C3 and an iPhone app. I plan to summarize that in a separate article.
https://time-space.kddi.com/ict-keywords/20190909/2738


