Inkplate 10 ESP-IDF fails to boot without MCP23017 chip

Customer:

I recently acquired an Inkplate 10 that arrived without an MCP23017 chip due to component shortage. After setting up my tools and building firmware following the instructions, the device aborts early in the boot process.

Is this a supported configuration with the ESP-IDF library? Will I have better luck with micropython or arduino?

The log shows:

D (11454) Wire: Initializing...
D (11454) EInk10: Initializing...
D (11454) Wire: Initializing...
D (11474) EInk10: MCP initialized.
ESP_ERROR_CHECK failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x4008bbb4
file: ".pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/src/services/wire.cpp" line 73
func: void Wire::end_transmission()
expression: i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_RATE_MS)

abort() was called at PC 0x4008bbb7 on core 1

Backtrace:0x4008367a:0x3ffc7bc0 0x4008e159:0x3ffc7be0 :0x3ffc7c00 0x4008bbb7:0x3ffc7c70 0x400d2fdc:0x3ffc7c90 0x400d3b0b:0x3ffc7cb0 0x400d3c38:0x3ffc7cd0 0x400d3242:0x3ffc7cf0 0x400d2297:0x3ffc7d20 0x400d20e6:0x3ffc7d40 :0x3ffc7d70
#0 0x4008367a:0x3ffc7bc0 in panic_abort at C:\platformio\packages\framework-espidf\components\esp_system/panic.c:393
#1 0x4008e159:0x3ffc7be0 in esp_system_abort at C:\platformio\packages\framework-espidf\components\esp_system/system_api.c:112
#2 :0x3ffc7c00 in abort at C:\platformio\packages\framework-espidf\components\newlib/abort.c:46
#3 0x4008bbb7:0x3ffc7c70 in _esp_error_check_failed at C:\platformio\packages\framework-espidf\components\esp_common\src/esp_err.c:42
#4 0x400d2fdc:0x3ffc7c90 in Wire::end_transmission() at .pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/src/services/wire.cpp:73 (discriminator 1)
#5 0x400d3b0b:0x3ffc7cb0 in MCP23017::update_register(MCP23017::Reg, unsigned char) at .pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/src/drivers/mcp23017.cpp:124
#6 0x400d3c38:0x3ffc7cd0 in MCP23017::set_direction(MCP23017::Pin, MCP23017::PinMode) at .pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/src/drivers/mcp23017.cpp:164
#7 0x400d3242:0x3ffc7cf0 in EInk10::setup() at .pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/src/drivers/eink_10.cpp:100 (discriminator 2)
#8 0x400d2297:0x3ffc7d20 in InkPlatePlatform::setup() at .pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/src/drivers/inkplate_platform.cpp:30
#9 0x400d20e6:0x3ffc7d40 in Inkplate::begin() at .pio/libdeps/inkplate-10-debug/ESP-IDF-Inkplate/include/graphical/inkplate.hpp:31
(inlined by) mainTask(void*) at src/main.cpp:24
#10 :0x3ffc7d70 in vPortTaskWrapper at C:\platformio\packages\framework-espidf\components\freertos\port\xtensa/port.c:168

It appears to be trying and failing to write to the missing chip.

Originally submitted via email support on 22 April 2022. Migrated to the forum for community visibility.

Soldered Support:

The ESP-IDF library was initially expecting the MCP23017 chip. Support for running without it is being developed.

Customer:

I’ve had better luck with the Micropython libraries and got the board to boot and display on the screen. However, I’m unable to read battery status or temperature.

Soldered Support:

Updated code for ESP-IDF has been released that resolves the issue with missing MCP23017 chips. You can now use ESP-IDF.