Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
N10 - ESPHome - ARM CPU streams continuously, Modbus requests never transmitted
#1
Hello,

I am trying to integrate a new N10 board with ESPHome (v2026.8.0) and Home Assistant. After extensive testing I have isolated the problem precisely and hope someone who has successfully set up an N10 with ESPHome can help, or that KinCony staff can clarify some undocumented behaviour.

Board: KinCony N10 (ESP32-S3-WROOM-1U N16R8, 16MB flash)
ESPHome version: 2026.8.0
Chip: Freshly erased with esptool before first flash

SYMPTOM

ESPHome's modbus_controller never transmits a single request to the BL0910 ARM CPU. The UART RX line (GPIO10) is flooded with data from the moment power is applied, before ESPHome sends anything. Because ESPHome's Modbus component sees a perpetually busy bus, its frame-guard logic refuses to ever transmit. Every log shows thousands of "Clearing buffer of 2 bytes — timeout after partial response" messages and zero TX lines.

DIAGNOSTIC STEPS COMPLETED

1. Bare UART only (no modbus: component)
RX line completely silent for 60+ seconds. Confirmed the ARM CPU does NOT stream data unprovoked.

2. modbus: component, slave address 1, 115200 baud (ESPHome Devices reference config)
Continuous noise on RX, zero TX ever logged.

3. modbus: component, slave address 100, 38400 baud (per KinCony's own protocol document)
Same continuous noise, BUT real data bursts appeared embedded in the RX stream. This is the only configuration where the ARM CPU visibly responds — confirmed it is responding to address 100, not address 1.

4. All baud rates tested: 9600, 19200, 38400, 115200 with slave address 100.
Best results at 38400 (real data bursts visible). Other baud rates produce background patterns consistent with framing mismatch.

5. Boot drain lambda (on_boot reads and discards all RX bytes before modbus_controller initialises)
No effect, TX still never appears.

WHAT I BELIEVE IS HAPPENING

When ESPHome's modbus: component initialises, something causes the ARM CPU to enter a continuous streaming state. Once streaming starts, ESPHome can never transmit. Without the modbus: component, the ARM CPU stays completely quiet.

QUESTIONS

1. Does the N10 ARM CPU require the KCS factory firmware to run first and perform an initialisation before it will behave as a standard Modbus RTU slave? Has anyone successfully used ESPHome on a freshly-erased N10?

2. Can anyone confirm the correct slave address? Our testing points to 100, not 1 as shown in the ESPHome Devices reference config.

3. Can anyone confirm the correct baud rate? KinCony's protocol document says 38400; the ESPHome Devices reference says 115200. Our best results were at 38400.

4. Is there a known way to suppress the ARM CPU's startup streaming from ESPHome, so the Modbus component can get its first request out?

MINIMAL REPRODUCING CONFIG

Code:
esphome:
  name: n10-test
esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: arduino
logger:
  hardware_uart: USB_SERIAL_JTAG
api:
ethernet:
  type: W5500
  clk_pin: GPIO42
  mosi_pin: GPIO43
  miso_pin: GPIO44
  cs_pin: GPIO41
  interrupt_pin: GPIO2
  reset_pin: GPIO1
uart:
  id: uart_bl0910
  tx_pin: GPIO9
  rx_pin: GPIO10
  baud_rate: 38400
  stop_bits: 1
  data_bits: 8
  parity: NONE
  debug:
    direction: BOTH
modbus:
  uart_id: uart_bl0910
modbus_controller:
  - id: energy_meter
    address: 100
    update_interval: 30s
sensor:
  - platform: modbus_controller
    modbus_controller_id: energy_meter
    address: 162
    register_type: holding
    name: "Line Voltage"
    unit_of_measurement: V
    value_type: U_WORD
    filters:
      - multiply: 0.01

Any help appreciated. Thank you.
Reply
#2
1. N10 ARM CPU already can work well, just suggest you update for newest firmware by USB-RS485 adapter. here is newest ARM CPU firmware: https://www.kincony.com/forum/showthread.php?tid=9169

2. you can use KCS v3 fimrware or ESPHome. if you use ESPHome, not MUST need download KCS firmware fistly. we suggest you use by KCS v3 ,enable mqtt auto discovery is very easy integrate to home assistant.

if you want use by ESPHome, here is yaml file for N10: https://www.kincony.com/forum/showthread.php?tid=9154

3. ARM to ESP32 serial port use by : 115200bps 8 N 1
ARM's RS485 port use by : 38400bps 8 N 1

how ARM CPU work with N60/N30/N20/N10:

1: ARM CPU read all data from BL0910 chip, there are two communication interface: a. RS485 b. Serial port.
  a: you can use USB-RS485 adapter read BL0910 raw data by RS485 via modbus. the label on balck shell showed RS485 A and B.
  b: ESP32 connect with ARM CPU by serial port. it also can read RAW data by modbus protocol.
these two communication interface running same modubs protocol.
for example:
register address begin 100 is first BL0910 chip all data.
register address begin 200 is second BL0910 chip all data.
register address begin 300 is third BL0910 chip all data.
register address begin 400 is fourth BL0910 chip all data.
register address begin 500 is fifth BL0910 chip all data.
register address begin 600 is sixth BL0910 chip all data.

so if you are using N60, you can read all RAW data from 100,200,300,400,500,600 address.
if you are using N30, you can read all RAW data from 100,200,300 address.
if you are using N20, you can read all RAW data from 100,200 address.
if you are using N10, you can read all RAW data from 100 address.

these is data struct:
https://www.kincony.com/forum/showthread.php?tid=8413

here is modbus protocol:
https://www.kincony.com/forum/showthread.php?tid=8641

2:
not MUST use 2000:1 CT clamp sensor, how to chose CT sensor, see here , it have formula:
https://www.kincony.com/forum/showthread.php?tid=8488

3: last thread have showed, The maximum differential voltage at each CT sensor input port is +-700mV.

4: you can read any BL0910 RAW data from register. point 1 have showed the way.
Reply


Forum Jump:


Users browsing this thread:
1 Guest(s)