Hello,
I have also tried landscape and didn’t find a way to get it in Landscape.
Another problem: I have the version with battery and tried to get battery reporting running, without success.
Hello,
I have also tried landscape and didn’t find a way to get it in Landscape.
Another problem: I have the version with battery and tried to get battery reporting running, without success.
I also found another driver version for JC8012P4A1 collected from here (ESP32-P4 development board - #44 by KrX) that also works with rotation (some jd9365 driver) but I’m waiting for an official version to appear. I don’t want to start building a dashboard and after an update see that the video driver is no longer compatible with the new update
sensor:
- platform: adc
name: "Battery voltage"
pin: GPIO52
update_interval: 30s
attenuation: 12dB
samples: 10
Yes, you can get it now. It features a voltage divider circuit, where GPIO52≈1.8V indicates low battery, and GPIO52≈2.43V indicates full charge.
I’m also waiting for the addition of the rotation feature to start building.
I managed to turn it 90 degrees and make it functional, with a combination of several sources.
external_components:
light:
touchscreen:
display:
Can someone tell me which connector is used for the UART?
Anyone got the camera working with esphome ?
Thank you for sharing the solution, it works perfectly for me!
Huge thanks to everyone who shared their configurations here: your insights were instrumental in helping me finish my Weather Dashboard this week!
I wanted to take the time to share back my project in case it helps or inspires others!
That screen looks amazing! Great work. I am inspired ![]()
I see you have the screen rotated 90 degrees. In my experience this causes performance issues with MIPI-DSI displays. Does it get a little laggy? I am working on a way to use the build in PPA (2D graphics accelerator) to do rotation.
I haven’t compared landscape vs portrait performance, I had no idea rotation was done in software mode right now. I did notice that page animations were choppy so I removed those. Page transitions are relatively fast now. Also, since I don’t have any widgets it’s kind of hard to gauge responsiveness. Using the PPA seems like the way to go with this board though. I’m looking forward to trying that out!
great job! it looks cool and it is cool
Hi, I’m looking for a little help. I’ve been using Guition displays in smaller sizes and decided to try this version, JC8012P4A1. I’ve tried all the configs in this post and on GitHub, and for the most part everything is fine. I’m super happy with the screen quality at such a cheap price range (I’m using it in landscape).
The only issue I have, and wanted to see if anyone else has come across it, is that if I tap the same place on the screen while watching the logs, about 85% of the time I get the same coordinates, but then randomly the other 15% are totally different, sometimes even acting as though I’ve pressed another button.
I’m not sure whether to return it for a replacement to see if I get the same results, or try the same size screen from another manufacturer.
Edit: After some basic calculations, the random coordinates match the positions for portrait mode, suggesting that screen rotation isn’t working correctly.
Zkoušel jsem různou konfiguraci v chip pro mikrofon jc8012p4a1c_i_w_y ES7210 ale jedině kam jsem se dostal je :
Build:Jul 10 2024
rst:0x1 (POWERON),boot:0xf (SPI_FAST_FLASH_BOOT)
SPI mode:DIO, clock div:1
load:0x4ff33ce0,len:0x11dc
load:0x4ff29ed0,len:0xca0
load:0x4ff2cbd0,len:0x3348
entry 0x4ff29ed0
— BIT-BANG PROBUZENÍ ES7210 —
ES7210 nakonfigurován.
Has anyone been able to access the SD card slot to save and read data?
Just added info: https://www.aliexpress.com/s/wiki-ssr/article/esp32-display-panel
Looks awesome! How are you mounting it to the wall?
Anyone who might be "struggling" with this, please take a look at EspControl — No-Code Smart Home Touch Controller
It's using ESPHome but with a lot of features adding to it to allow for no-code creating and managing your (and some other) screens.
Used it on my 10.1" and setup was flawless.
Im looking for the same thing... Trying to interface another ESP32 w/ tx/rx....
I found this for this exact display:
but no matter what I try,
[15:09:02.220][I][uart_ui_tx:157]: Display: holding UI cmd 1.00 for UART (550ms
and on the external ESP32
[15:10:16.542][W][uart_rx_probe:248]: rx_ui_cmd: no state yet (no valid frame from display — check TX/RX/GND, pin swap)
So I'm sending the command, but it's not getting to the remote ESP. I had this working perfectly w/ a different (but similar) display. I think its just a matter of figuring out WHERE these GPIO's physically are and what numbers they are...
UPDATE:
mystery solved:
esphome:
platformio_options:
build_flags:
- -D CORE_DEBUG_LEVEL=0 # Disables Espressif low-level framework debug text
- -D ARDUINO_USB_CDC_ON_BOOT=0
logger:
baud_rate: 0
hardware_uart: USB_SERIAL_JTAG #<- NOT UART0!!!!
level: DEBUG
# Now you can safely define your sensor's UART bus
uart:
- id: sensor_uart_bus
tx_pin: GPIO37
rx_pin: GPIO38
baud_rate: 9600
I hope this helps someone else!
On board SD card slot unusable due to GPIO conflicts. Added external SD slot using GPIOs 28-34 via EXTEND2 connector.
Hi, for those who want to start with an ESPhome project here is some code that works on this display, tested on Core version 2026.6.0, Supervisor 2026.05.1, Operating System 17.3, Frontend 20260527.4, ESPHome 2026.5.3.
external_components:
- source: github://kvj/esphome@jd9365_gsl3680
refresh: 0s
components: [gsl3680, jd9365]
esphome:
name: "10-5"
esp32:
board: esp32-p4-evboard
cpu_frequency: 360MHz
flash_size: 16MB
framework:
type: esp-idf
advanced:
enable_idf_experimental_features: yes
logger:
hardware_uart: USB_SERIAL_JTAG
level: DEBUG
logs:
lvgl: DEBUG
display: DEBUG
app: DEBUG
esp_ldo:
- channel: 3
voltage: 2.5V
# Example minimal configuration entry
display:
- platform: mipi_dsi
model: JC8012P4A1
id: my_display
rotation: 0
esp32_hosted:
variant: ESP32C6
reset_pin: 54
cmd_pin: 19
clk_pin: 18
d0_pin: 14
d1_pin: 15
d2_pin: 16
d3_pin: 17
active_high: true
psram:
speed: 200MHz
# Enable Home Assistant API
api:
encryption:
key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
- platform: esphome
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wifi:
ssid: "xxxxxxxxxxxx"
password: "xxxxxxxxxxxxx"
manual_ip:
static_ip: 192.168.1.157
gateway: 192.168.1.1
subnet: 255.255.255.0
output:
# Backlight LED
- platform: ledc
pin: GPIO23
id: GPIO23
frequency: 100Hz
min_power: 0.03
zero_means_zero: true
light:
- platform: monochromatic
output: GPIO23
name: Backlight
id: backlight
restore_mode: RESTORE_DEFAULT_ON
i2c:
- id: i2c_bus
sda: GPIO7
scl: GPIO8
scan: true
frequency: 400kHz
touchscreen:
- platform: gsl3680
id: my_touch
reset_pin: GPIO22
interrupt_pin: GPIO21
transform:
swap_xy: false
mirror_x: true
lvgl:
rotation: 90
byte_order: little_endian
pages:
- id: page_1
bg_color: 0x0B4721
pad_all: 0
widgets:
- button:
id: button_0
x: 90
y: 140
width: 250
height: 115
bg_color: 0x4F46E5
border_width: 2
border_color: 0x39FC03
radius: 7
outline_color: 0xE00040
text_color: 0xFFFFFF
text_font: montserrat_18
widgets:
- label:
text: "Button"
text_color: 0xFFFFFF
- switch:
id: switch_1
x: 110
y: 288
width: 185
height: 60
state:
checked: true
bg_color: 0x4B5563
indicator:
checked:
bg_color: 0x10B981
knob:
bg_color: 0xFFFFFF
border_color: 0x9CA3AF
border_width: 1
- textarea:
id: text_1
x: 103
y: 400
width: 230
height: 55
placeholder_text: "Enter text here"
bg_color: 0x1F2937
border_width: 2
border_color: 0xD8F519
radius: 8
text_color: 0xFFFFFF
text_font: montserrat_20