Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
2e05567
[Backport v1.5]: Enable TCP support for ESP platform (#42281)
sayondeep Dec 5, 2025
cf84d03
Integrate NXP MCU missing changes in v1.5-branch (#42289)
chapongatien Dec 9, 2025
43e7676
esp32: fix ICD configuration options (#42339) (#42385)
wqx6 Dec 15, 2025
c2ad2a5
esp32: fix issues for network commissioning test cases of incorrect s…
wqx6 Dec 15, 2025
f081ee1
[v1.5 Backport] Integrate NXP MCU missing changes in v1.5-branch (#42…
dinabenamar Jan 6, 2026
75b118e
[1.5-branch] Cherry-pick the latest Server Cluster Interface changes …
yufengwangca Jan 8, 2026
05b88c7
[1.5-branch] Migrate WebRTC Provider Cluster to Server Cluster Interf…
yufengwangca Jan 12, 2026
149cd8e
gitmodules: exclude unnecessary submodule cloning for esp32 (#42007) …
Alami-Amine Jan 14, 2026
9596bee
TestSystemCommands: Improve application startup detection to prevent …
j-ororke Jan 20, 2026
71131b3
[1.5-branch] Migrate TLS Client Management Cluster to code-driven (#4…
yufengwangca Jan 21, 2026
4cc8d10
[1.5-branch] Cherry-pick Migrate TLS Certificate Management Cluster t…
yufengwangca Jan 22, 2026
465a987
[Cherry Pick] cherry pick ACE_2_4 test and device reboot functionalit…
j-ororke Jan 22, 2026
d053a99
[1.5-branch] Cherry-pick Rename TlsCertificateManagementCluster to TL…
yufengwangca Jan 22, 2026
efeb730
[AVSUM] Handle spec updates to Pan and Tilt Min and Max Ranges (#4211…
marktrayer Jan 23, 2026
2713861
Cherry-pick revision conformance (#42757)
cecille Jan 23, 2026
7960f4e
Cherry-picks: PRs supporting provisional CDs (with correct base branc…
cecille Jan 23, 2026
9b7b393
Fix CMAF clip duration calculation and recorded file cleanup (#41699)…
vnkavali Jan 23, 2026
b06ccea
Fix Camera app crash on multiple start and stop sessions. (#42442) (#…
vnkavali Jan 23, 2026
1a67782
Cherry Pick -> [Chime] XML and Zap Regen for Chime Cluster updates pe…
marktrayer Jan 23, 2026
ddcc676
[AVSUM] Initial PR for conversion to Code Driven - Rename of cluster …
marktrayer Jan 23, 2026
2016f45
Cherry-pick to 1.5: PRs supporting pairing hint TCR (#42784)
cecille Jan 24, 2026
c4dae5d
[v1.5-branch CP] TC-SC-3.5: Fix Bug in Test Script, accepting DUT Com…
Alami-Amine Jan 24, 2026
27edb01
Cherry-pick to 1.5: 1.5.1 DM files (#42780)
cecille Jan 24, 2026
a609e45
[Cherry Pick] Camera AVSM changes for Code Driven Migration to 1.5.1 …
pidarped Jan 24, 2026
b97e510
Cherry-pick(#42273): Check for self-conflict on TLS ep update (#42765)
samadDotDev Jan 24, 2026
2e1971a
[Push AV] Fix issue in Motion Zone based clip recording (#42417) (#42…
vnkavali Jan 24, 2026
0453b26
Cherry pick -> [AVSUM] Migrate to use of the DefaultServerCluster (co…
marktrayer Jan 24, 2026
517a863
[Push AV] Refactor clip recorder with status enums and error handling…
vnkavali Jan 25, 2026
5d0b9fb
Cherry pick -> [Chime] PRs to convert Chime to Code Driven and new fu…
marktrayer Jan 25, 2026
9e80462
Disable kotlin static code analysis (#41933) (#42803)
andy31415 Jan 26, 2026
9b1078d
Cherry-pick(#42599, #42713, #42741): [Camera SDK 1.5.1] Push AV XML u…
vnkavali Jan 26, 2026
fbbfe99
Cherry-pick(#42367, #42368, #42370): [Push AV 1.5.1] Update upload se…
vnkavali Jan 29, 2026
4564cd2
[1.5-branch] Cherry pick [WebRTC] Support multiple streams during Web…
yufengwangca Jan 29, 2026
619988e
[CherryPick] Add CameraAVSM test scripts for test cases in CameraAVSM…
pidarped Jan 30, 2026
6d55d90
[1.5-branch] Cherry-pick Fix camera app crashes on unexpected SDPs (…
yufengwangca Feb 2, 2026
76396ec
[1.5-branch] Fix failed fabric removal due to TLS enpoint's fabric in…
yufengwangca Feb 5, 2026
f127376
[1.5-branch] Cherry-pick Parse and set ICE servers to PeerConnection …
yufengwangca Feb 6, 2026
5612d36
[Ameba] Cherry-pick fix for WiFi connection and server initialization…
pankore Feb 9, 2026
d0538c5
[Cherry-pick] Shot in the dark at fixing TCP memory leak in #42006 (#…
pidarped Feb 11, 2026
eae2f5f
Cherry-pick for v1.5-branch: Align TC-SC-4.1 and TC-SC-4.3 with updat…
raul-marquez-csa Mar 6, 2026
c2f80b7
scene/remove get max level attribute when serialize level control clu…
Jerry-ESP Mar 6, 2026
f211e8b
[Camera] Fix TC_WEBRTC_1_6 failure on not finding any WebRTC session …
marktrayer Mar 13, 2026
e9ecfc2
[MVE 1.5.1] [Push AV] Increase blind duration and transport expiry t…
raveendra-karu Mar 13, 2026
308d138
setup: add pydantic-core constraint for Python 3.13+ compatibility (#…
shubhamdp Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion config/esp32/args.gni
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ lwip_platform = "external"

#Enabling this causes some error
#chip_inet_config_enable_tun_endpoint = false
chip_inet_config_enable_tcp_endpoint = false
chip_inet_config_enable_udp_endpoint = true

chip_config_memory_management = "platform"
Expand Down
6 changes: 6 additions & 0 deletions config/esp32/components/chip/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,12 @@ if(CONFIG_DISABLE_IPV4)
endif()
endif()

if(CONFIG_ENABLE_TCP_TRANSPORT)
chip_gn_arg_append("chip_inet_config_enable_tcp_endpoint" "true")
else()
chip_gn_arg_append("chip_inet_config_enable_tcp_endpoint" "false")
endif()

if(CONFIG_DISABLE_READ_CLIENT)
chip_gn_arg_append("chip_enable_read_client" "false")
endif()
Expand Down
31 changes: 28 additions & 3 deletions config/esp32/components/chip/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ menu "CHIP Core"
default 8
help
The maximum number of simultaneously active CHIP exchange contexts.

An exchange context object is used to track the state of an ongoing CHIP message
exchange (conversation) with a peer, e.g. a cloud service, a mobile application, or
another device.
Expand Down Expand Up @@ -257,6 +257,14 @@ menu "CHIP Core"
Here, we are also enabling LWIP_CHECK_THREAD_SAFETY which will assert when
LwIP code gets called from any other context or without holding the LwIP lock.

config USE_LWIP_PBUF_RAM_PACKETBUFFER
bool "Use lwIP PBUF_RAM type for CHIP packet buffer"
default n
help
Enable this option to use lwIP PBUF_RAM type for CHIP packet buffer. Configure via
MAX_LARGE_BUFFER_SIZE_BYTES to support larger packets exceeding IPv6 MTU.
If not enabled, CHIP will use lwIP PBUF_POOL type for packet buffer.

endmenu # "Networking Options"

menu "System Options"
Expand Down Expand Up @@ -285,8 +293,8 @@ menu "CHIP Core"
depends on ENABLE_OTA_REQUESTOR
default n
help
Enable this option for delta OTA image updates.
Delta OTA updates allow for smaller, more efficient updates by only
Enable this option for delta OTA image updates.
Delta OTA updates allow for smaller, more efficient updates by only
sending the changes between the current and new firmware versions.

config OTA_AUTO_REBOOT_ON_APPLY
Expand Down Expand Up @@ -1214,6 +1222,23 @@ menu "CHIP Device Layer"

endmenu

menu "Matter TCP transport options"
config ENABLE_TCP_TRANSPORT
bool "Enable TCP transport"
select USE_LWIP_PBUF_RAM_PACKETBUFFER
default n
help
Enable TCP transport. If enabled, USE_LWIP_PBUF_RAM_PACKETBUFFER must be configured.

config MAX_LARGE_BUFFER_SIZE_BYTES
int "Max buffer size for TCP payloads"
depends on ENABLE_TCP_TRANSPORT
default 1530
help
Max TCP payload buffer size.

endmenu

menu "Network Commissioning Driver Endpoint Id"
config THREAD_NETWORK_COMMISSIONING_DRIVER
bool "Use the generic Thread network commissioning driver"
Expand Down
4 changes: 4 additions & 0 deletions src/platform/ESP32/CHIPPlatformConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,7 @@
#else
#define CHIP_SYSTEM_CONFIG_POOL_USE_HEAP 0
#endif

#ifdef CONFIG_MAX_LARGE_BUFFER_SIZE_BYTES
#define CHIP_SYSTEM_CONFIG_MAX_LARGE_BUFFER_SIZE_BYTES CONFIG_MAX_LARGE_BUFFER_SIZE_BYTES
#endif
4 changes: 4 additions & 0 deletions src/platform/ESP32/SystemPlatformConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,7 @@ struct ChipDeviceEvent;
#ifndef CHIP_SYSTEM_CONFIG_NUM_TIMERS
#define CHIP_SYSTEM_CONFIG_NUM_TIMERS CONFIG_NUM_TIMERS
#endif // CHIP_SYSTEM_CONFIG_NUM_TIMERS

#ifdef CONFIG_USE_LWIP_PBUF_RAM_PACKETBUFFER
#define CHIP_SYSTEM_CONFIG_PACKETBUFFER_LWIP_PBUF_RAM CONFIG_USE_LWIP_PBUF_RAM_PACKETBUFFER
#endif // CONFIG_USE_LWIP_PBUF_RAM_PACKETBUFFER
25 changes: 25 additions & 0 deletions src/system/SystemPacketBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -589,10 +589,35 @@ PacketBufferHandle PacketBufferHandle::New(size_t aAvailableSize, uint16_t aRese
}

#if CHIP_SYSTEM_CONFIG_USE_LWIP
#if CHIP_SYSTEM_CONFIG_PACKETBUFFER_LWIP_PBUF_RAM
// Allocate buffer using kMaxAllocSize instead of the requested size (lAllocSize).
//
// Rationale:
// 1. PBUF_RAM provides a contiguous payload buffer, ensuring consistent behavior
// with PBUF_POOL (non-chained) operations regardless of actual data size.
// 2. The standard lwIP pbuf structure lacks a field to store the actual allocated
// size. By always allocating kMaxAllocSize, AllocSize() can return a constant
// value (kMaxAllocSize) without needing to track the original allocation size.
//
// kMaxAllocSize configuration:
// - TCP: Configurable via CHIP_SYSTEM_CONFIG_MAX_LARGE_BUFFER_SIZE_BYTES to support
// larger packets exceeding IPv6 MTU. Note: This may result in unused buffer
// space; configure based on the maximum packet size requirements.
// - UDP: Fixed to LWIP_MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE)
//
// Despite allocating kMaxAllocSize, we still keep the validation for lAllocSize
// to fail early if the requested size exceeds the maximum capacity.
//
// This cast is safe because kLargeBufMaxSizeWithoutReserve has been statically
// asserted to fit in uint16_t.
lPacket = static_cast<PacketBuffer *>(
pbuf_alloc(PBUF_RAW, static_cast<uint16_t>(PacketBuffer::kMaxAllocSize), CHIP_SYSTEM_PACKETBUFFER_LWIP_PBUF_TYPE));
#else
// This cast is safe because lAllocSize is no larger than
// kMaxSizeWithoutReserve, which fits in uint16_t.
lPacket = static_cast<PacketBuffer *>(
pbuf_alloc(PBUF_RAW, static_cast<uint16_t>(lAllocSize), CHIP_SYSTEM_PACKETBUFFER_LWIP_PBUF_TYPE));
#endif

SYSTEM_STATS_UPDATE_LWIP_PBUF_COUNTS();

Expand Down
2 changes: 2 additions & 0 deletions src/system/SystemPacketBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ class DLL_EXPORT PacketBuffer : private pbuf
return LWIP_MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE) - kStructureSize;
else
return LWIP_MEM_ALIGN_SIZE(memp_sizes[this->pool]) - kStructureSize;
#elif CHIP_SYSTEM_CONFIG_PACKETBUFFER_LWIP_PBUF_RAM
return PacketBuffer::kMaxAllocSize;
#else
#error "Unimplemented PacketBuffer storage case"
#endif
Expand Down
Loading