2 # Copyright (c) 2020 Project CHIP Authors
3 # Copyright (c) 2018 Nest Labs, Inc.
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
19 # Configuration options CHIP within the ESP32 ESP-IDF environment.
23 # Options for configuring CHIP core
27 menu "General Options"
29 config MAX_EXCHANGE_CONTEXTS
30 int "Max CHIP Exchange Contexts"
34 The maximum number of simultaneously active CHIP exchange contexts.
36 An exchange context object is used to track the state of an ongoing CHIP message
37 exchange (conversation) with a peer, e.g. a cloud service, a mobile application, or
45 The maximum number of simultaneously active CHIP Binding objects.
47 A Binding object is used to configure how the local device communicates with
48 a remote entity, be it a cloud service, a mobile application, or another device.
55 The maximum number of peer nodes that the local node can communicate with using
56 connectionless communication (e.g. UDP). This value sizes a table that tracks
57 communication state with peer nodes by their CHIP node id.
59 config MAX_UNSOLICITED_MESSAGE_HANDLERS
60 int "Max Unsolicited Message Handlers"
64 The maximum number of simultaneously active unsolicited message handlers.
66 Applications or protocol libraries acting as a CHIP server register unsolicited
67 message handlers with the CHIP message layer to direct incoming messages to
70 config RMP_TIMER_DEFAULT_PERIOD_SHIFT
71 int "Default WRMP Timer Tick Interval Shift (ms)"
75 The default interval shift, in milliseconds (e.g. 6 bits shift
76 = 64ms), at which items in the WRMP pending message list are
77 processed for the purpose of retransmission or timeout.
79 This value can be overridden by the application at runtime.
82 bool "Enable Pigweed RPC library"
85 Link the application with the library containing Pigweed RPC functionalities
87 # TODO: add log level selection
89 endmenu # "General Options"
91 menu "Networking Options"
93 config NUM_TCP_ENDPOINTS
94 int "Max TCP EndPoints"
97 The maximum number of simultaneously active TCP EndPoint objects.
99 CHIP generally needs one TCP EndPoint object for each active CHIP TCP
100 connection, plus up to 3 additional EndPoints to listen for incoming
103 config NUM_UDP_ENDPOINTS
104 int "Max UDP EndPoints"
107 The maximum number of simultaneously active UDP EndPoint objects.
109 CHIP generally needs one UDP EndPoint object for each local network
110 interface, plus 2 additional EndPoints for general UDP communcation.
112 config MAX_CONNECTIONS
113 int "Max CHIP Connections"
117 The maximum number of simultaneously active CHIP connections, either locally
118 or remotely initiated. This limit covers both CHIP TCP connections, and
119 CHIP-over-BLE (WoBLE) connections.
121 config DEFAULT_INCOMING_CONNECTION_IDLE_TIMEOUT
122 int "Default Incoming Connection Idle Timeout (ms)"
126 The maximum amount of time, in milliseconds, that an idle inbound
127 CHIP connection will be allowed to exist before being closed.
129 This is a default value that can be overridden at runtime by the
132 A value of 0 disables automatic closing of idle connections.
134 endmenu # "Networking Options"
136 menu "System Options"
139 int "Max System Timers"
142 The maximum number of simultaneously timers in the CHIP System Layer.
144 endmenu # "System Options"
146 menu "Security Options"
148 config MAX_SESSION_KEYS
149 int "Max Session Keys"
153 The maximum number of simultaneously active session keys.
155 config DEFAULT_SECURITY_SESSION_ESTABLISHMENT_TIMEOUT
156 int "Default Security Session Establishment Timeout (ms)"
160 The default amount of time, in milliseconds, after which an in-progess
161 session establishment will fail due to a timeout.
163 This value can be overridden by the application at runtime.
165 config DEFAULT_SECURITY_SESSION_IDLE_TIMEOUT
166 int "Default Security Session Idle Timeout (ms)"
170 The default minimum amount of time, in milliseconds, that an unreserved
171 and idle security session will be allowed to exist before being destroyed.
172 In practice, unreserved idle sessions can exist for up to twice this value.
174 This value can be overridden by the application at runtime.
178 config ENABLE_PASE_INITIATOR
179 bool "Enable PASE Initiator"
182 Enable support for initiating PASE security sessions with a remote node.
184 This feature is rarely needed in device applications of CHIP.
186 (PASE = Password Authenticated Session Establishment).
188 config ENABLE_PASE_RESPONDER
189 bool "Enable PASE Responder"
192 Enable support for responding to a request from a remote node to initiate
193 a PASE security session.
195 This feature is necessary to support standard CHIP pairing.
197 (PASE = Password Authenticated Session Establishment).
199 config ENABLE_CASE_INITIATOR
200 bool "Enable CASE Initiator"
203 Enable support for initiating CASE security sessions with a remote node.
205 This feature is necessary to support interacting with CHIP cloud services.
207 (CASE = Certificate Authenticated Session Establishment).
209 config ENABLE_CASE_RESPONDER
210 bool "Enable CASE Responder"
213 Enable support for responding to a request from a remote note to initiate
214 a CASE security session.
216 This feature is necessary to support standard CHIP pairing.
218 (CASE = Certificate Authenticated Session Establishment).
220 endmenu # "Protocols"
224 config USE_APP_GROUP_KEYS_FOR_MSG_ENC
225 bool "Enable Group Keys for CHIP Message Encryption"
228 Enable the use of application group keys for CHIP message encryption.
230 config MAX_CACHED_MSG_ENC_APP_KEYS
231 int "Group Key Cache Size"
234 depends on USE_APP_GROUP_KEYS_FOR_MSG_ENC
236 The size of the cache (in number of keys) used to store derived application
237 group encryption keys.
239 This value is only meaningful when group keys are enabled for CHIP message
242 config MAX_APPLICATION_EPOCH_KEYS
243 int "Max Application Epoch Keys"
247 The maximum number of simultaneously supported application epoch keys.
249 (Epoch keys are a kind of symmetric key that gets mixed together with
250 other key material to form a group encryption key which can be used
251 for private communication amongst a set of related CHIP nodes).
253 This value should be set to the maximum number of epoch keys that
254 can be simultaneously provisioned on the local CHIP node. The
255 maximum supported value is 8, however, in most cases only two such
256 keys will exist at any given point in time.
258 config MAX_APPLICATION_GROUPS
259 int "Max Application Master Keys"
263 The maximum number of simultaneously supported application group master keys.
265 (Application group master keys are a kind of symmetric key that gets mixed
266 together with other key material to form a group encryption key which can
267 be used for private communication amongst a set of related CHIP nodes).
269 This value should be set to the number of CHIP application groups
270 in which the local CHIP device will be a member.
272 endmenu # "Group Keys"
276 config SECURITY_TEST_MODE
277 bool "Enable CHIP Security Test Mode"
280 Enable various features that make it easier to debug secure CHIP communication.
282 WARNING: This option makes it possible to circumvent basic CHIP security functionality,
283 including message encryption. Because of this it SHOULD NEVER BE ENABLED IN PRODUCTION BUILDS.
285 config DISABLE_PROVISIONING_AUTH
286 bool "Disable Provisioning Authentication Checks"
289 Disable authentication checks for CHIP provisioning operations. This makes it possible to
290 perform device provisioning operations (e.g. adding a network or joining a fabric) without
291 establishing a secure session.
293 WARNING: This option makes it possible to circumvent basic CHIP security functionality.
294 Because of this it SHOULD NEVER BE ENABLED IN PRODUCTION BUILDS.
296 config DEBUG_CERT_VALIDATION
297 bool "Enable Certificate Validation Debugging"
300 Enable support for debugging output from certificate validation.
302 endmenu # "Debugging"
304 endmenu # "Security Options"
310 # Options for configuring the CHIP Device Layer
312 menu "CHIP Device Layer"
314 menu "General Options"
315 config CHIP_PROJECT_CONFIG
316 string "CHIP Project Configuration file"
319 CHIP's project configuration file location.
321 config CHIP_TASK_STACK_SIZE
322 int "CHIP Task Stack Size"
326 The size (in bytes) of the CHIP task stack.
328 config CHIP_TASK_PRIORITY
329 int "CHIP Task Priority"
333 The priority of the CHIP task.
335 On the ESP32 platform this value is added to ESP_TASK_PRIO_MIN to determine the FreeRTOS priority value.
337 config MAX_EVENT_QUEUE_SIZE
338 int "Max Event Queue Size"
342 The maximum number of events that can be held in the CHIP Platform event queue.
344 config SERVICE_DIRECTORY_CACHE_SIZE
345 int "CHIP Service Directory Cache Size"
349 The size (in bytes) of the service directory cache. This limits the maximum size of the directory
350 that can be returned in response to a service directory query.
354 menu "Device Identification Options"
356 config DEVICE_VENDOR_ID
357 hex "Device Vendor Id"
361 The device vendor id (in hex). This a CHIP-assigned id for the organization responsible for producing the device.
362 Defaults to CHIP (0x235A).
364 config DEVICE_PRODUCT_ID
365 hex "Device Product Id"
369 The device product id (in hex). This is a unique id assigned by the device vendor to identify the product or device type.
370 Defaults to a CHIP-assigned id designating a non-production or test "product".
372 config DEFAULT_DEVICE_PRODUCT_REVISION
373 int "Default Device Product Revision"
377 The default device product revision.
379 Product revisions are specific to a particular device vendor and product id, and typically
380 correspond to a revision of the physical device, a change to its packaging, and/or a change
381 to its marketing presentation. This value is generally *not* incremented for device software
384 This is a default value which is used when a product revision has not been stored in device
385 persistent storage (e.g. by a factory provisioning process).
387 config DEVICE_FIRMWARE_REVISION
388 string "Device Firmware Revision"
391 A string identifying the firmware revision running on the device.
395 menu "WiFi Station Options"
397 config DEFAULT_WIFI_SSID
398 string "Default WiFi SSID"
401 The SSID of network to connect to if no WiFi station configuration exists in NV storage
402 at the time the device boots.
404 This option is for testing only and should be disabled in production releases.
406 config DEFAULT_WIFI_PASSWORD
407 string "Default WiFi Password"
410 The password for the default WiFi network.
412 This option is for testing only and should be disabled in production releases.
414 config WIFI_STATION_RECONNECT_INTERVAL
415 int "WiFi Station Interface Reconnect Interval (ms)"
419 The interval at which the CHIP platform will attempt to reconnect to the configured WiFi network (in milliseconds).
421 config MAX_SCAN_NETWORKS_RESULTS
422 int "Max ScanNetworks Results"
426 The maximum number of networks to return as a result of a CHIP NetworkProvisioning:ScanNetworks request.
428 config WIFI_SCAN_COMPLETION_TIMEOUT
429 int "WiFi Scan Completion Timeout (ms)"
433 The amount of time (in milliseconds) after which the CHIP platform will timeout a WiFi scan
434 operation that hasn't completed. A value of 0 will disable the timeout logic.
436 config WIFI_CONNECTIVITY_TIMEOUT
437 int "WiFi Connectivity Timeout (ms)"
441 The amount of time (in milliseconds) to wait for Internet connectivity to be established on
442 the device's WiFi station interface during a Network Provisioning TestConnectivity operation.
446 menu "WiFi AP Options"
448 config WIFI_AP_SSID_PREFIX
449 string "WiFi AP SSID Prefix"
452 A prefix string used in forming the WiFi soft-AP SSID. The remainder of the SSID
453 consists of the final two bytes of the device's primary WiFi MAC address in hex.
455 config WIFI_AP_CHANNEL
456 int "WiFi AP Channel"
460 The WiFi channel number to be used by the soft-AP.
462 config WIFI_AP_MAX_STATIONS
463 int "WiFi AP Max Allowed Stations"
467 The maximum number of stations allowed to connect to the soft-AP.
469 config WIFI_AP_BEACON_INTERVAL
470 int "WiFi AP Beacon Interval (ms)"
474 The beacon interval (in milliseconds) for the WiFi soft-AP.
476 config WIFI_AP_IDLE_TIMEOUT
477 int "WiFi AP Idle Timeout (ms)"
481 The amount of time (in milliseconds) after which the CHIP platform will deactivate the soft-AP
488 config ENABLE_CHIPOBLE
489 bool "Enable CHIP-over-BLE (CHIPoBLE) Support"
492 Enables support for sending and receiving CHIP messages over a BLE connection.
494 NOTE: This feature depends on BLE central support being enabled in ESP-IDF. In
495 particular, the ESP-IDF features CONFIG_BT_ENABLED and CONFIG_GATTS_ENABLE must
498 config BLE_DEVICE_NAME_PREFIX
499 string "BLE Device Name Prefix"
501 depends on ENABLE_CHIPOBLE
503 A prefix string used in forming the BLE device name. The remainder of the name
504 consists of the final two bytes of the device's CHIP node id in hex.
506 NOTE: The device layer limits the total length of a device name to 16 characters.
507 However, due to other data sent in WoBLE advertise packets, the device name
508 may need to be shorter.
510 config BLE_FAST_ADVERTISING_INTERVAL_MIN
511 int "Fast Advertising Min Interval"
513 depends on ENABLE_CHIPOBLE
515 The minimum interval (in units of 0.625ms) at which the device will send BLE advertisements while
516 in fast advertising mode.
518 config BLE_FAST_ADVERTISING_INTERVAL_MAX
519 int "Fast Advertising Max Interval"
521 depends on ENABLE_CHIPOBLE
523 The maximum interval (in units of 0.625ms) at which the device will send BLE advertisements while
524 in fast advertising mode.
526 config BLE_SLOW_ADVERTISING_INTERVAL_MIN
527 int "Slow Advertising Min Interval"
529 depends on ENABLE_CHIPOBLE
531 The minimum interval (in units of 0.625ms) at which the device will send BLE advertisements while
532 in slow advertising mode.
534 config BLE_SLOW_ADVERTISING_INTERVAL_MAX
535 int "Slow Advertising Max Interval"
537 depends on ENABLE_CHIPOBLE
539 The maximum interval (in units of 0.625ms) at which the device will send BLE advertisements while
540 in slow advertising mode.
542 config CHIPOBLE_SINGLE_CONNECTION
543 bool "Single Connection Mode"
545 depends on ENABLE_CHIPOBLE
547 Limit support for CHIP-over-BLE (WoBLE) to a single inbound connection.
549 When set, WoBLE advertisements will stop while a WoBLE connection is active.
551 config CHIPOBLE_DISABLE_ADVERTISING_WHEN_PROVISIONED
552 bool "Disable Advertising when Provisioned"
554 depends on ENABLE_CHIPOBLE
556 Automatically disable CHIP-over-BLE (WoBLE) advertising when the device transitions
557 to a fully provisioned state.
561 menu "CHIP Trait Manager"
563 config ENABLE_TRAIT_MANAGER
564 bool "Enable Trait Manager"
567 Enable support for the CHIP Trait Manager.
569 The Trait Manager is an experimental feature of the CHIP Device Layer.
573 menu "Time Sync Options"
575 config ENABLE_SERVICE_DIRECTORY_TIME_SYNC
576 bool "Enable Service Directory Time Sync"
579 Enables synchronizing the device real-time clock using information returned during
580 a CHIP service directory query. For any device that uses the CHIP service directory
581 to lookup a tunnel server, enabling this option will result in the real time clock being
582 synchronized every time the service tunnel is established.
584 config ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
585 bool "Enable Time Service Time Sync"
588 Enables synchronizing the device's real time clock with a remote CHIP Time service
589 using the CHIP Time Sync protocol.
591 config CHIP_TIME_SERVICE_ENDPOINT_ID
592 hex "CHIP Time Service Endpoint Id"
593 default 18B4300200000005
594 depends on ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
596 Specifies the service endpoint id of the CHIP Time Sync service to be used to synchronize time.
598 config DEFAULT_TIME_SYNC_INTERVAL
599 int "Time Sync Interval (seconds)"
601 depends on ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
603 Specifies the minimum interval (in seconds) at which the device should synchronize its real time
604 clock with the configured CHIP Time Sync server.
606 config TIME_SYNC_TIMEOUT
607 int "Time Sync Timeout (ms)"
609 depends on ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
611 Specifies the maximum amount of time (in milliseconds) to wait for a response from a
612 CHIP Time Sync server.
616 menu "Service Provisioning Options"
618 config SERVICE_PROVISIONING_ENDPOINT_ID
619 hex "CHIP Service Provisioning Endpoint Id"
620 default 18B4300200000010
622 Specifies the service endpoint id of the CHIP Service Provisioning service. When a device
623 undergoes service provisioning, this is the endpoint to which it will send its Pair Device
626 config SERVICE_PROVISIONING_CONNECTIVITY_TIMEOUT
627 int "Service Provisioning Connectivity Timeout (ms)"
630 The maximum amount of time (in milliseconds) to wait for service connectivity during the device
631 service provisioning step. More specifically, this is the maximum amount of time the device will
632 wait for connectivity to be established with the service at the point where the device waiting
633 to send a Pair Device to Account request to the Service Provisioning service.
635 config SERVICE_PROVISIONING_REQUEST_TIMEOUT
636 int "Service Provisioning Request Timeout (ms)"
639 Specifies the maximum amount of time (in milliseconds) to wait for a response from the Service
640 Provisioning service.
644 menu "Testing Options"
646 config ENABLE_TEST_DEVICE_IDENTITY
647 int "Use Test Device Identity"
651 Enables the use of a hard-coded CHIP device id and credentials if no device id is
652 found in CHIP NV storage. The value specifies which of 256 identities, numbered 1
653 through 256, is to be used. A value of 0 disables use of a test identity.
655 This option is for testing only and should not be enabled in production releases.
657 config USE_TEST_SERIAL_NUMBER
658 string "Use Test Serial Number"
661 Specifies a hard-coded device serial number to be used if none is found in CHIP NV storage.
662 Setting the value to an empty string disables the feature.
664 Note that any string up to 32 characters can be used here. This value is a unique identifier
665 assigned to each device by the device vendor.
667 This option is for testing only and should not be enabled in production releases.
669 config USE_TEST_SETUP_PIN_CODE
670 int "Use Test Setup Pin Code"
674 Specifies a hard-coded device setup pin code to be used if none is found in CHIP NV storage.
675 Setting the value to 0 disables the feature.
677 Note that any decimal integer number between 00000000 and 99999999 can be used here.
679 This option is for testing only and should not be enabled in production releases.
681 config USE_TEST_SETUP_DISCRIMINATOR
682 hex "Use Test Setup discriminator"
686 Specifies a hard-coded device discriminator to be used if none is found in CHIP NV storage.
687 Setting the value to 0x0 disables the feature.
689 Note that any integer number between 0x000 and 0xFFF can be used here.
691 This option is for testing only and should not be enabled in production releases.
693 config ENABLE_FIXED_TUNNEL_SERVER
694 bool "Use Fixed Tunnel Server"
697 Forces the use of a service tunnel server at a fixed IP address and port. This
698 bypasses the need for a directory query to the service directory endpoint to
699 determine the tunnel server address. When enabled, this option allows devices
700 that haven't been service provisioned to establish a service tunnel.
702 config TUNNEL_SERVER_ADDRESS
703 string "Tunnel Server Address"
705 depends on ENABLE_FIXED_TUNNEL_SERVER
707 The IP address and port of the server to which the device should establish a service tunnel.
708 The supplied address must be a dot-notation IP address--not a host name. The port number is
709 optional; if present it should be separated from the IP address with a colon (e.g. 192.168.1.100:11097).
711 config LOG_PROVISIONING_HASH
712 bool "Enable Provisioning Hash Logging"
715 Compute and log a hash of the device's provisioning data on boot. The generated hash value confirms
716 to the form described in the CHIP: Factory Provisioning Specification.
720 menu "Network Telemetry Options"
722 config ENABLE_WIFI_TELEMETRY
723 bool "Enable WiFi Telemetry"
726 Enable automatically uploading Wi-Fi telemetry via trait on an interval.
728 config ENABLE_THREAD_TELEMETRY
729 bool "Enable Thread Telemetry"
732 Enable automatically uploading minimal Thread telemetry and topology via trait on an interval.
734 config ENABLE_THREAD_TELEMETRY_FULL
735 bool "Enable Full Thread Telemetry"
738 Enable automatically uploading all Thread telemetry and topology via trait on an interval.
739 This is suitable for products that have router capability.
741 This option can be enabled only when Thread telemetry is enabled.
743 config ENABLE_TUNNEL_TELEMETRY
744 bool "Enable CHIP Tunnel Telemetry"
747 Enable automatically uploading CHIP tunnel telemetry via trait on an interval.
751 menu "Event Logging Options"
753 config EVENT_LOGGING_CRIT_BUFFER_SIZE
754 int "Event Logging Critical Production Buffer Size"
758 A size, in bytes, of the individual critical production event logging buffer.
760 This critical production event buffer must exist.
762 config EVENT_LOGGING_PROD_BUFFER_SIZE
763 int "Event Logging Production Buffer Size"
767 A size, in bytes, of the individual production event logging buffer.
769 This critical production event buffer must exist.
771 config EVENT_LOGGING_INFO_BUFFER_SIZE
772 int "Event Logging Info Buffer Size"
776 A size, in bytes, of the individual info event logging buffer.
778 When size is set to 0, the info event buffer and all support
779 for the info level events are disabled.
781 config EVENT_LOGGING_DEBUG_BUFFER_SIZE
782 int "Event Logging Debug Buffer Size"
786 A size, in bytes, of the individual debug event logging buffer.
788 When size is set to 0, the debug event buffer and all support
789 for the debug level events are disabled.