TexasGaz
(Texas Gaz)
May 10, 2026, 6:36am
1
Aloha All, after a week or two of trying, I have to reach out for help. I am powering the device on USB-C and need 5V power on the Grove Port A and on the MBUS to power PZEMs via the M5Bottom (I am in the process of upgrading from an M5Stack Core Basic). Even with the most basic of yaml configs, I am getting nothing on BUS_OUT or VBUS (Port A and MBUS) I've tried everything I can think of with regards to the AW9523b outputs and I'm at a loss. Any help is greatly appreciated. Yaml below (note the interval is just an attempt to test for voltage at Port A);
esphome:
name: xxxxxxx
friendly_name: xxxxxx
external_components:
- source: github://KinDR007/VictronMPPT-ESPHOME@main
- source: github://Fabian-Schmidt/esphome-victron_ble
- source: github://m5stack/esphome-yaml/components
components: [axp2101, aw88298, aw9523b ]
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
psram:
mode: quad
speed: 80MHz
# Enable logging
logger:
level: VERY_VERBOSE
logs:
aw9523b: VERY_VERBOSE
output: VERY_VERBOSE
# Enable Home Assistant API
api:
encryption:
key: xxxxxxxxxxx
ota:
- platform: xxxxxx
password: xxxxxx
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
xxxxxx
captive_portal:
i2c:
- id: bus_internal
sda: GPIO12
scl: GPIO11
axp2101:
id: axp2101_pmu
i2c_id: bus_internal
aw9523b:
- id: aw9523b_hub
i2c_id: bus_internal
output:
- platform: aw9523b
aw9523b_id: aw9523b_hub
id: bus_out_en_out
pin: 1
- platform: aw9523b
aw9523b_id: aw9523b_hub
id: boost_en_out
pin: 15
interval:
- interval: 10s
then:
- logger.log: "STEP 1: BOOST ON"
- output.turn_on: boost_en_out
- delay: 250ms
- logger.log: "STEP 2: BUS ENABLE"
- output.turn_on: bus_out_en_out
- delay: 5s
- logger.log: "STEP 3: BUS DISABLE"
- output.turn_off: bus_out_en_out
- delay: 250ms
- logger.log: "STEP 4: BOOST OFF"
- output.turn_off: boost_en_out
Karosm
(Karosm)
May 10, 2026, 8:04am
2
Try with boost disabled since you are on usb-c power.
TexasGaz
(Texas Gaz)
May 11, 2026, 4:54am
3
Thanks for the suggestion, I gave that a try, still no power present. Log is below for information;
[18:48:49.261][C][logger:219]: Logger:
[18:48:49.261][C][logger:219]: Max Level: VERY_VERBOSE
[18:48:49.261][C][logger:219]: Initial Level: VERY_VERBOSE
[18:48:49.266][C][logger:226]: Log Baud Rate: 115200
[18:48:49.266][C][logger:226]: Hardware UART: USB_SERIAL_JTAG
[18:48:49.266][C][logger:235]: Task Log Buffer Size: 768 bytes
[18:48:49.267][C][logger:241]: Level for 'aw9523b': VERY_VERBOSE
[18:48:49.267][C][logger:241]: Level for 'output': VERY_VERBOSE
[18:48:49.268][W][logger:251]: VERY_VERBOSE logging is active — significant performance impact, short-term debugging only
[18:48:49.268][W][logger:251]: May cause connection instability. Set log level to DEBUG or lower for long-term use.
[18:48:49.271][VV][api.service:013]: send_message list_entities_done_response: ListEntitiesDoneResponse {}
[18:48:49.282][VV][api.service:020]: on_subscribe_states_request: {}
[18:48:49.282][C][i2c.idf:092]: I2C Bus:
[18:48:49.282][C][i2c.idf:093]: SDA Pin: GPIO12
[18:48:49.282][C][i2c.idf:093]: SCL Pin: GPIO11
[18:48:49.282][C][i2c.idf:093]: Frequency: 50000 Hz
[18:48:49.283][C][i2c.idf:103]: Recovery: bus successfully recovered
[18:48:49.283][C][i2c.idf:113]: Results from bus scan:
[18:48:49.283][C][i2c.idf:119]: Found device at address 0x34
[18:48:49.284][C][i2c.idf:119]: Found device at address 0x40
[18:48:49.292][C][i2c.idf:119]: Found device at address 0x51
[18:48:49.293][C][i2c.idf:119]: Found device at address 0x58
[18:48:49.293][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.293][V][i2c.idf:154]: 0x34 TX 80
[18:48:49.301][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.302][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.302][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.302][V][i2c.idf:154]: 0x34 TX 82
[18:48:49.305][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.306][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.309][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.309][V][i2c.idf:154]: 0x34 TX 80
[18:48:49.312][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.320][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.320][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.321][V][i2c.idf:154]: 0x34 TX 83
[18:48:49.330][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.331][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.331][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.331][V][i2c.idf:154]: 0x34 TX 80
[18:48:49.334][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.334][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.335][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.336][V][i2c.idf:154]: 0x34 TX 84
[18:48:49.339][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.344][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.345][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.345][V][i2c.idf:154]: 0x34 TX 80
[18:48:49.347][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.355][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.355][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.355][V][i2c.idf:154]: 0x34 TX 85
[18:48:49.358][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.358][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.362][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.362][V][i2c.idf:154]: 0x34 TX 80
[18:48:49.372][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.372][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.373][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.373][V][i2c.idf:154]: 0x34 TX 86
[18:48:49.375][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.376][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.389][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.390][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.390][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.390][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.390][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.390][V][i2c.idf:154]: 0x34 TX 92
[18:48:49.392][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.392][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.393][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.395][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.406][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.406][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.407][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.407][V][i2c.idf:154]: 0x34 TX 93
[18:48:49.410][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.410][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.410][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.411][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.417][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.422][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.423][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.423][V][i2c.idf:154]: 0x34 TX 94
[18:48:49.425][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.426][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.432][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.432][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.436][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.436][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.437][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.437][V][i2c.idf:154]: 0x34 TX 95
[18:48:49.443][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.446][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.447][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.447][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.449][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.458][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.458][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.459][V][i2c.idf:154]: 0x34 TX 96
[18:48:49.462][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.462][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.462][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.464][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.473][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.473][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.474][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.474][V][i2c.idf:154]: 0x34 TX 97
[18:48:49.476][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.476][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.497][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.498][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.510][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.511][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.511][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.511][V][i2c.idf:154]: 0x34 TX 98
[18:48:49.512][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.512][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.512][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.512][V][i2c.idf:154]: 0x34 TX 90
[18:48:49.513][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.513][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.513][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.513][V][i2c.idf:154]: 0x34 TX 99
[18:48:49.514][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.514][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.514][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.515][V][i2c.idf:154]: 0x34 TX 91
[18:48:49.515][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.515][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.519][V][i2c.idf:141]: Writing 1 bytes, reading 1 bytes
[18:48:49.519][V][i2c.idf:154]: 0x34 TX 9A
[18:48:49.524][V][i2c.idf:167]: 0x34 RX bytes 1
[18:48:49.528][V][i2c.idf:186]: Sending 7 jobs
[18:48:49.528][C][axp2101:143]: AXP2101:
[18:48:49.528][C][axp2101:143]: DC1 : + Voltage: 3300 mV
[18:48:49.528][C][axp2101:143]: DC2 : - Voltage: 1200 mV
[18:48:49.528][C][axp2101:143]: DC3 : + Voltage: 3300 mV
[18:48:49.528][C][axp2101:143]: DC4 : - Voltage: 1800 mV
[18:48:49.528][C][axp2101:143]: DC5 : - Voltage: 1400 mV
[18:48:49.528][C][axp2101:143]: ALDO1 : + Voltage: 1800 mV
[18:48:49.528][C][axp2101:143]: ALDO2 : + Voltage: 3300 mV
[18:48:49.528][C][axp2101:143]: ALDO3 : + Voltage: 3300 mV
[18:48:49.528][C][axp2101:143]: ALDO4 : + Voltage: 3300 mV
[18:48:49.528][C][axp2101:143]: BLDO1 : + Voltage: 2800 mV
[18:48:49.528][C][axp2101:143]: BLDO2 : + Voltage: 1500 mV
[18:48:49.528][C][axp2101:143]: CPUSLDO: - Voltage: 1200 mV
[18:48:49.528][C][axp2101:143]: DLDO1 : - Voltage: 3300 mV
[18:48:49.528][C][axp2101:143]: DLDO2 : - Voltage: 1900 mV
[18:48:49.532][D][main:459]: STEP 2: BUS ENABLE
[18:48:49.534][V][i2c.idf:141]: Writing 2 bytes, reading 0 bytes
[18:48:49.537][V][i2c.idf:154]: 0x58 TX 25:FF
[18:48:49.538][V][i2c.idf:186]: Sending 4 jobs
[18:48:49.538][C][aw9523b:148]: AW9523B:
[18:48:49.538][C][aw9523b:148]: P0 drive mode: OPEN_DRAIN
[18:48:49.538][C][aw9523b:148]: LED Max Current: 37mA
[18:48:49.541][C][aw9523b:153]: Address: 0x58
[18:48:49.560][C][psram:016]: PSRAM:
[18:48:49.560][C][psram:019]: Available: YES
[18:48:49.561][C][psram:021]: Size: 8192 KB
[18:48:49.590][C][aw9523b.output:015]: AW9523B Float Output:
[18:48:49.590][C][aw9523b.output:015]: Pin: 1
[18:48:49.610][C][captive_portal:134]: Captive Portal:
[18:48:49.610][C][wifi:1505]: WiFi:
[18:48:49.610][C][wifi:1505]: Local MAC: xxxx
[18:48:49.610][C][wifi:1505]: Connected: YES
[18:48:49.611][C][wifi:1216]: IP Address: xxxx
[18:48:49.613][C][wifi:1227]: SSID: [redacted]
[18:48:49.613][C][wifi:1227]: BSSID: [redacted]
[18:48:49.613][C][wifi:1227]: Hostname: 'm5stackdiscocores3se'
[18:48:49.613][C][wifi:1227]: Signal strength: -65 dB ▂▄▆█
[18:48:49.613][C][wifi:1227]: Channel: 6
[18:48:49.613][C][wifi:1227]: Subnet: 255.255.252.0
[18:48:49.613][C][wifi:1227]: Gateway: xxxx
[18:48:49.613][C][wifi:1227]: DNS1: xxxx
[18:48:49.613][C][wifi:1227]: DNS2: 0.0.0.0
[18:48:49.630][C][esphome.ota:071]: Over-The-Air updates:
[18:48:49.630][C][esphome.ota:071]: Address: m5stackdiscocores3se.local:3232
[18:48:49.630][C][esphome.ota:071]: Version: 2
[18:48:49.631][C][esphome.ota:078]: Password configured
[18:48:49.632][C][safe_mode:026]: Safe Mode:
[18:48:49.632][C][safe_mode:026]: Successful after: 60s
[18:48:49.632][C][safe_mode:026]: Invoke after: 10 attempts
[18:48:49.632][C][safe_mode:026]: Duration: 300s
[18:48:49.637][C][safe_mode:043]: Bootloader rollback: supported
[18:48:49.650][C][web_server.ota:256]: Web Server OTA
[18:48:49.651][C][api:235]: Server:
[18:48:49.651][C][api:235]: Address: m5stackdiscocores3se.local:6053
[18:48:49.651][C][api:235]: Listen backlog: 4
[18:48:49.651][C][api:235]: Max connections: 8
[18:48:49.652][C][api:242]: Noise encryption: YES
[18:48:49.658][C][mdns:194]: mDNS:
[18:48:49.658][C][mdns:194]: Hostname: m5stackdiscocores3se
[18:48:49.662][V][mdns:199]: Services:
[18:48:49.662][V][mdns:201]: - _esphomelib, _tcp, 6053
[18:48:49.662][V][mdns:204]: TXT: friendly_name = M5StackDiscoCoreS3SE
[18:48:49.664][V][mdns:204]: TXT: version = 2026.4.5
[18:48:49.670][V][mdns:204]: TXT: mac = xxxx
[18:48:49.671][V][mdns:204]: TXT: platform = ESP32
[18:48:49.671][V][mdns:204]: TXT: board = esp32-s3-devkitc-1
[18:48:49.674][V][mdns:204]: TXT: network = wifi
[18:48:49.674][V][mdns:204]: TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[18:48:54.537][D][main:469]: STEP 3: BUS DISABLE
[18:48:54.542][V][i2c.idf:141]: Writing 2 bytes, reading 0 bytes
[18:48:54.545][V][i2c.idf:154]: 0x58 TX 25:00
[18:48:54.545][V][i2c.idf:186]: Sending 4 jobs
[18:48:59.532][D][main:459]: STEP 2: BUS ENABLE
[18:48:59.534][V][i2c.idf:141]: Writing 2 bytes, reading 0 bytes
[18:48:59.541][V][i2c.idf:154]: 0x58 TX 25:FF
[18:48:59.542][V][i2c.idf:186]: Sending 4 jobs
[18:49:04.544][D][main:469]: STEP 3: BUS DISABLE
[18:49:04.545][V][i2c.idf:141]: Writing 2 bytes, reading 0 bytes
[18:49:04.548][V][i2c.idf:154]: 0x58 TX 25:00
[18:49:04.549][V][i2c.idf:186]: Sending 4 jobs
[18:49:09.562][D][main:459]: STEP 2: BUS ENABLE
[18:49:09.562][V][i2c.idf:141]: Writing 2 bytes, reading 0 bytes
[18:49:09.613][V][i2c.idf:154]: 0x58 TX 25:FF
[18:49:09.613][V][i2c.idf:186]: Sending 4 jobs
Karosm
(Karosm)
May 11, 2026, 5:41am
4
Did you try turning off pin 4 (OTG EN)?
TexasGaz
(Texas Gaz)
May 11, 2026, 6:31am
5
Interestingly enough, if I define the OTG pin (I think pin 5 right?) as an output (and don't even turn it on or off), the update fails during boot after OTA and rolls back. Would it help to see a log of that?
Karosm
(Karosm)
May 11, 2026, 8:50am
6
Sounds tricky. M5Stack example cores3-satellite-base has pin 5 defined as output though.
Try to add this parameter to aw9523b config:
p0_drive_mode: PUSH_PULL
TexasGaz
(Texas Gaz)
May 12, 2026, 7:05am
7
Thanks for the suggestion. I have already messed around with that parameter to no avail. I did try again, and unfortunately still no 5v. I think it has something to do with the external components, as the syntax that is specified here M5Stack CoreS3 - ESPHome Devices , no longer works, and I had to figure that out myself. In my setup, I have an M5Tab connected to Port A for UART data only, no power. I may just pull power from the Tab5 and power the CoreS3 SE through Port A (and hopefully M5Bottom through the MBUS) and have a working solution.
Karosm
(Karosm)
May 12, 2026, 8:21am
8
Those external components seems to be regularly maintained. Problem is likely on the syntax how physical pin is linked. Library example uses gpio-switch. Try the cores3 example there, it does use PUSH_PULL and gives you switches for pins interested. Or just copy the code for aw9523b and gpio switches
# IO Expander
aw9523b:
id: aw9523b_hub
i2c_id: bsp_bus
p0_drive_mode: PUSH_PULL
switch:
- platform: gpio
name: "BUS_OUT_EN"
pin:
aw9523b_id: aw9523b_hub
number: 1
# BUS_OUT_EN = 0
restore_mode: RESTORE_DEFAULT_OFF
- platform: gpio
name: "USB_OTG_EN"
pin:
aw9523b_id: aw9523b_hub
number: 5
# USB_OTG_EN = 0
restore_mode: RESTORE_DEFAULT_OFF
- platform: gpio
name: "BOOST_EN"
pin:
aw9523b_id: aw9523b_hub
number: 15
# BOOST_EN
restore_mode: RESTORE_DEFAULT_ON
TexasGaz
(Texas Gaz)
May 13, 2026, 6:59am
9
Thanks again for taking the time to try and help me with this. I removed all of the previous 'Output' commands and replaced them with the 'Switch' example code you provided. It successfully compiled and updated. Unfortunately, still no 5v on Port A or MBus. Am I the only guy with this issue, or is everyone else running the CoreS3 (SE) without 5v on Port A and MBus? Where did you find the sample code you provided? Thanks again.
Karosm
(Karosm)
May 13, 2026, 7:09am
10
From the link on your code for external component.
Try the whole example for voice assistant there, just like it is.
TexasGaz
(Texas Gaz)
May 17, 2026, 6:22am
11
Aloha all, I have found another solution in the meantime. The CoreS3 SE Port A is UART TX and RX data to/from a Tab5. By adding a wire and powering Port A 5v from the Tab5, the 5v on the MBus comes alive, allowing a RS485 TTL converter and other components to be powered via the M5Bus from the M5Bottom (from the Core Basic) as intended. The CoreS3 SE is also powered by USB-C, as per one of the advertised power configurations on the M5 Docs page. I'll keep my eyes open for an update on the External Components to allow power via USB-C only. Thanks