From 7e9ddf7ac724409630a0b4b5640a62c84e799e18 Mon Sep 17 00:00:00 2001 From: lygris Date: Thu, 13 Nov 2025 11:39:21 -0600 Subject: [PATCH 01/13] Add CC1101 docs --- content/components/_index.md | 1 + content/components/cc1101.md | 130 ++++++++++++++++++++++++++ content/components/images/cc1101.webp | Bin 0 -> 22576 bytes 3 files changed, 131 insertions(+) create mode 100644 content/components/cc1101.md create mode 100644 content/components/images/cc1101.webp diff --git a/content/components/_index.md b/content/components/_index.md index b00c2c89ff..ad39461cc4 100644 --- a/content/components/_index.md +++ b/content/components/_index.md @@ -1036,6 +1036,7 @@ Used for creating infrared (IR) or radio frequency (RF) remote control transmitt ESPHome to cellular networks. **Does not encompass Wi-Fi.** {{< imgtable >}} +"CC1101","components/cc1101","cc1101.webp","" "IR Remote Climate","components/climate/climate_ir","air-conditioner-ir.svg","dark-invert" "Remote Receiver","components/remote_receiver","remote.svg","dark-invert" "Remote Transmitter","components/remote_transmitter","remote.svg","dark-invert" diff --git a/content/components/cc1101.md b/content/components/cc1101.md new file mode 100644 index 0000000000..9b4e056142 --- /dev/null +++ b/content/components/cc1101.md @@ -0,0 +1,130 @@ +--- +title: CC1101 Low-Power Sub-1 GHz RF Transceiver +description: Instructions for setting up CC1101 RF Transceiver in ESPHome. +image: cc1101.webp +keywords: [cc1101] +--- + + +The **CC1101** component provides a driver for the **Texas Instruments CC1101** Sub-1 GHz RF Transceiver. +It allows you to transmit and receive raw RF signals (ASK/OOK, FSK, etc.) using the standard +[Remote Transmitter](remote_transmitter.md) and [Remote Receiver](remote_receiver.md) components. + +This component requires the [SPI Component](spi.md) to be enabled. + +{{< img src="cc1101.webp" alt="Image" width="50.0%" class="align-center" >}} + +## Component Configuration + +```yaml +# Minimal Example +cc1101: + cs_pin: GPIOXX + gdo0_pin: GPIOXX +```` + +## Configuration Variables + + - **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. + - **gdo0\_pin** (**Required**, [Pin](pin.md)): The GDO0 pin on the CC1101. This pin is used for sending and + receiving interrupt signals and raw data. + - **id** (*Optional*, [ID](id.md)): Manually specify the ID used for code generation. + - **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-70` to `11`. Default: `11`. + - **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. + Default: `0dB`. + - **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. + - **tuner** (*Optional*): Fine-tuning for the radio frequency settings. See [Tuner Configuration](https://www.google.com/search?q=%23tuner-configuration). + - **agc** (*Optional*): Advanced Automatic Gain Control settings. See [AGC Configuration](https://www.google.com/search?q=%23agc-configuration). + +## Tuner Configuration + +```yaml +# Example Tuner Configuration +cc1101: + cs_pin: GPIOXX + gdo0_pin: GPIOXX + tuner: + frequency: 433.92MHz + modulation: ASK/OOK + bandwidth: 203kHz + symbol_rate: 5000 +``` + + - **frequency** (*Optional*, frequency): The operating frequency (e.g., `433.92MHz`). Range: `300MHz` to + `928MHz`. Default: `433.92MHz`. + - **bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: + `203kHz`. + - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. + - **modulation** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, + `GFSK`, `MSK`. + - **deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. + - **channel** (*Optional*, int): Channel number (added to base frequency). + - **channel\_spacing** (*Optional*, frequency): Spacing between channels. + - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. + +## AGC Configuration +```yaml +# Example AGC Configuration +cc1101: + cs_pin: GPIOXX + gdo0_pin: GPIOXX + tuner: + frequency: 433.92MHz + modulation: ASK/OOK + bandwidth: 203kHz + symbol_rate: 5000 + agc: + magn_target: 24dB + max_lna_gain: 2.6dB + max_dvga_gan: -3 +``` + +Advanced users can fine-tune the Automatic Gain Control (AGC) settings. + + - **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). + - **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. + - **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. + +## Integration with Remote Receiver/Transmitter + +To use the CC1101 for receiving or transmitting signals, you must configure the standard +[Remote Receiver](https://www.google.com/search?q=remote_receiver.md) or [Remote Transmitter](https://www.google.com/search?q=remote_transmitter.md) components to use the **GDO0 pin** +defined in your CC1101 configuration. + +```yaml +# Example: Receiving raw data via GDO0 +remote_receiver: + pin: GPIOXX # Must match the 'gdo0_pin' in cc1101 config or GDO2 pin if connected + dump: all + +# Example: Transmitting raw data via GDO0 +remote_transmitter: + pin: GPIOXX # Must match the 'gdo0_pin' in cc1101 config or GDO2 pin if connected + carrier_duty_percent: 100% +``` + +## Troubleshooting + +### "FF0F was found" Error + +If you see a log entry stating `FF0F was found` or similar invalid versions (e.g., `0000`, `FFFF`) during +setup, this indicates an SPI communication failure. + + * Check your wiring, especially the **MISO** and **CSN** lines. + * Ensure the module is powered with a stable 3.3V source. + * This component implements a "burst read" fix specifically to address this issue on some CC1101 silicon revisions, + so persistent errors are likely physical connection issues. + +### Reset Issues + +This component uses a robust, non-blocking state machine that polls the `CHIP_RDYn` signal on the MISO line during +startup. This prevents race conditions where the ESP32 might attempt to configure the chip before the crystal has +stabilized. If you experience timeouts during the `RES` command, check your power supply stability. + +## See Also + + - [I²C Bus](/components/i2c) + - [Remote Receiver](/components/remote_receiver) + - [Remote Transmitter](/components/remote_transmitter) + - [SPI Component](/components/spi) + - [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) \ No newline at end of file diff --git a/content/components/images/cc1101.webp b/content/components/images/cc1101.webp new file mode 100644 index 0000000000000000000000000000000000000000..602fce4c5d62a017fb72c3c965f854d499114245 GIT binary patch literal 22576 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 Date: Thu, 13 Nov 2025 11:53:37 -0600 Subject: [PATCH 02/13] lint fixes --- content/components/cc1101.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index 9b4e056142..7795ed2db7 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -5,7 +5,6 @@ image: cc1101.webp keywords: [cc1101] --- - The **CC1101** component provides a driver for the **Texas Instruments CC1101** Sub-1 GHz RF Transceiver. It allows you to transmit and receive raw RF signals (ASK/OOK, FSK, etc.) using the standard [Remote Transmitter](remote_transmitter.md) and [Remote Receiver](remote_receiver.md) components. @@ -21,6 +20,7 @@ This component requires the [SPI Component](spi.md) to be enabled. cc1101: cs_pin: GPIOXX gdo0_pin: GPIOXX + ```` ## Configuration Variables @@ -28,10 +28,12 @@ cc1101: - **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. - **gdo0\_pin** (**Required**, [Pin](pin.md)): The GDO0 pin on the CC1101. This pin is used for sending and receiving interrupt signals and raw data. + - **id** (*Optional*, [ID](id.md)): Manually specify the ID used for code generation. - **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-70` to `11`. Default: `11`. - **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. Default: `0dB`. + - **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. - **tuner** (*Optional*): Fine-tuning for the radio frequency settings. See [Tuner Configuration](https://www.google.com/search?q=%23tuner-configuration). - **agc** (*Optional*): Advanced Automatic Gain Control settings. See [AGC Configuration](https://www.google.com/search?q=%23agc-configuration). @@ -52,17 +54,21 @@ cc1101: - **frequency** (*Optional*, frequency): The operating frequency (e.g., `433.92MHz`). Range: `300MHz` to `928MHz`. Default: `433.92MHz`. + - **bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. + - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. - **modulation** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. + - **deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. - **channel** (*Optional*, int): Channel number (added to base frequency). - **channel\_spacing** (*Optional*, frequency): Spacing between channels. - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. ## AGC Configuration + ```yaml # Example AGC Configuration cc1101: @@ -127,4 +133,4 @@ stabilized. If you experience timeouts during the `RES` command, check your powe - [Remote Receiver](/components/remote_receiver) - [Remote Transmitter](/components/remote_transmitter) - [SPI Component](/components/spi) - - [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) \ No newline at end of file + - [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) From 193427e96726e72e8d94ac37a23bc26e266bce3f Mon Sep 17 00:00:00 2001 From: lygris Date: Thu, 13 Nov 2025 12:05:45 -0600 Subject: [PATCH 03/13] More lint fixes --- content/components/cc1101.md | 52 ++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index 7795ed2db7..4be55b8fed 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -25,18 +25,18 @@ cc1101: ## Configuration Variables - - **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. - - **gdo0\_pin** (**Required**, [Pin](pin.md)): The GDO0 pin on the CC1101. This pin is used for sending and - receiving interrupt signals and raw data. +- **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. +- **gdo0\_pin** (**Required**, [Pin](pin.md)): The GDO0 pin on the CC1101. This pin is used for sending and + receiving interrupt signals and raw data. - - **id** (*Optional*, [ID](id.md)): Manually specify the ID used for code generation. - - **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-70` to `11`. Default: `11`. - - **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. - Default: `0dB`. +- **id** (*Optional*, [ID](id.md)): Manually specify the ID used for code generation. +- **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-70` to `11`. Default: `11`. +- **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. + Default: `0dB`. - - **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. - - **tuner** (*Optional*): Fine-tuning for the radio frequency settings. See [Tuner Configuration](https://www.google.com/search?q=%23tuner-configuration). - - **agc** (*Optional*): Advanced Automatic Gain Control settings. See [AGC Configuration](https://www.google.com/search?q=%23agc-configuration). +- **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. +- **tuner** (*Optional*): Fine-tuning for the radio frequency settings. See [Tuner Configuration](https://www.google.com/search?q=%23tuner-configuration). +- **agc** (*Optional*): Advanced Automatic Gain Control settings. See [AGC Configuration](https://www.google.com/search?q=%23agc-configuration). ## Tuner Configuration @@ -52,20 +52,20 @@ cc1101: symbol_rate: 5000 ``` - - **frequency** (*Optional*, frequency): The operating frequency (e.g., `433.92MHz`). Range: `300MHz` to +- **frequency** (*Optional*, frequency): The operating frequency (e.g., `433.92MHz`). Range: `300MHz` to `928MHz`. Default: `433.92MHz`. - - **bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: +- **bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. - - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. - - **modulation** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, +- **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. +- **modulation** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. - - **deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. - - **channel** (*Optional*, int): Channel number (added to base frequency). - - **channel\_spacing** (*Optional*, frequency): Spacing between channels. - - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. +- **deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. +- **channel** (*Optional*, int): Channel number (added to base frequency). +- **channel\_spacing** (*Optional*, frequency): Spacing between channels. +- **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. ## AGC Configuration @@ -87,9 +87,9 @@ cc1101: Advanced users can fine-tune the Automatic Gain Control (AGC) settings. - - **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). - - **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. - - **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. +- **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). +- **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. +- **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. ## Integration with Remote Receiver/Transmitter @@ -129,8 +129,8 @@ stabilized. If you experience timeouts during the `RES` command, check your powe ## See Also - - [I²C Bus](/components/i2c) - - [Remote Receiver](/components/remote_receiver) - - [Remote Transmitter](/components/remote_transmitter) - - [SPI Component](/components/spi) - - [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) +- [I²C Bus](/components/i2c) +- [Remote Receiver](/components/remote_receiver) +- [Remote Transmitter](/components/remote_transmitter) +- [SPI Component](/components/spi) +- [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) From db07657502df02a5c6e56d7e33d5740697163892 Mon Sep 17 00:00:00 2001 From: lygris Date: Thu, 13 Nov 2025 12:08:32 -0600 Subject: [PATCH 04/13] final lint fixes --- content/components/cc1101.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index 4be55b8fed..c37e0e7b10 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -116,9 +116,9 @@ remote_transmitter: If you see a log entry stating `FF0F was found` or similar invalid versions (e.g., `0000`, `FFFF`) during setup, this indicates an SPI communication failure. - * Check your wiring, especially the **MISO** and **CSN** lines. - * Ensure the module is powered with a stable 3.3V source. - * This component implements a "burst read" fix specifically to address this issue on some CC1101 silicon revisions, +- Check your wiring, especially the **MISO** and **CSN** lines. +- Ensure the module is powered with a stable 3.3V source. +- This component implements a "burst read" fix specifically to address this issue on some CC1101 silicon revisions, so persistent errors are likely physical connection issues. ### Reset Issues From ae1a4e5dff3e7b35d1a4f7d8594bd8cd3a83d19a Mon Sep 17 00:00:00 2001 From: lygris Date: Thu, 13 Nov 2025 12:17:50 -0600 Subject: [PATCH 05/13] fix img to be standard html --- content/components/cc1101.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index c37e0e7b10..32009a584c 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -11,7 +11,7 @@ It allows you to transmit and receive raw RF signals (ASK/OOK, FSK, etc.) using This component requires the [SPI Component](spi.md) to be enabled. -{{< img src="cc1101.webp" alt="Image" width="50.0%" class="align-center" >}} +Image ## Component Configuration From 88c38719b46f54cac64450e956d05d014b477e3c Mon Sep 17 00:00:00 2001 From: lygris Date: Sat, 15 Nov 2025 10:29:35 -0600 Subject: [PATCH 06/13] update with settings name changes --- content/components/cc1101.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index 32009a584c..bcb6088164 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -47,19 +47,19 @@ cc1101: gdo0_pin: GPIOXX tuner: frequency: 433.92MHz - modulation: ASK/OOK - bandwidth: 203kHz + modulation_type: ASK/OOK + filter_bandwidth: 203kHz symbol_rate: 5000 ``` - **frequency** (*Optional*, frequency): The operating frequency (e.g., `433.92MHz`). Range: `300MHz` to `928MHz`. Default: `433.92MHz`. -- **bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: +- **filter_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. -- **modulation** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, +- **modulation_type** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. - **deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. @@ -76,8 +76,8 @@ cc1101: gdo0_pin: GPIOXX tuner: frequency: 433.92MHz - modulation: ASK/OOK - bandwidth: 203kHz + modulation_type: ASK/OOK + filter_bandwidth: 203kHz symbol_rate: 5000 agc: magn_target: 24dB From bcdd7d6748abf49d31ada9a0955959bb4ea56087 Mon Sep 17 00:00:00 2001 From: lygris Date: Sat, 15 Nov 2025 16:03:10 -0600 Subject: [PATCH 07/13] Update Docs to match latest commit. --- content/components/cc1101.md | 157 ++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 75 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index bcb6088164..9876798d7a 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -20,112 +20,119 @@ This component requires the [SPI Component](spi.md) to be enabled. cc1101: cs_pin: GPIOXX gdo0_pin: GPIOXX - -```` + frequency: 433.92MHz +``` ## Configuration Variables -- **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. -- **gdo0\_pin** (**Required**, [Pin](pin.md)): The GDO0 pin on the CC1101. This pin is used for sending and - receiving interrupt signals and raw data. +### Hardware Settings -- **id** (*Optional*, [ID](id.md)): Manually specify the ID used for code generation. -- **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-70` to `11`. Default: `11`. -- **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. - Default: `0dB`. + - **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. + - **gdo0\_pin** (**Required**, [Pin](pin.md)): The pin connected to **GDO0** on the CC1101. + - **Note:** On ESP32, `remote_transmitter` **must** use the pin connected to **GDO0** to transmit successfully. -- **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. -- **tuner** (*Optional*): Fine-tuning for the radio frequency settings. See [Tuner Configuration](https://www.google.com/search?q=%23tuner-configuration). -- **agc** (*Optional*): Advanced Automatic Gain Control settings. See [AGC Configuration](https://www.google.com/search?q=%23agc-configuration). +### General Settings -## Tuner Configuration + - **frequency** (*Optional*, frequency): The operating frequency. Range: `300MHz` to `928MHz`. Default: `433.92MHz`. + - **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-30` to `11`. Default: `10`. + - **modulation\_type** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. + - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. + - **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. Default: `0dB`. + - **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. -```yaml -# Example Tuner Configuration -cc1101: - cs_pin: GPIOXX - gdo0_pin: GPIOXX - tuner: - frequency: 433.92MHz - modulation_type: ASK/OOK - filter_bandwidth: 203kHz - symbol_rate: 5000 -``` +### Tuner Settings + + - **filter\_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. + - **fsk\_deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. + + - **channel** (*Optional*, int): Channel number (added to base frequency). + - **channel\_spacing** (*Optional*, frequency): Spacing between channels. + - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. + + + + + + +### AGC (Automatic Gain Control) Settings -- **frequency** (*Optional*, frequency): The operating frequency (e.g., `433.92MHz`). Range: `300MHz` to - `928MHz`. Default: `433.92MHz`. +Advanced users can fine-tune the AGC dynamics. -- **filter_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: - `203kHz`. + - **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). + - **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. + - **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. + - **lna\_priority** (*Optional*, boolean): If true, decrease LNA gain before DVGA gain. + - **carrier\_sense\_abs\_thr** (*Optional*, int): Absolute RSSI threshold for Carrier Sense. + - **carrier\_sense\_rel\_thr** (*Optional*, enum): Relative RSSI threshold for Carrier Sense. + - **filter\_length\_fsk\_msk** (*Optional*, enum): Averaging length for FSK/MSK. + - **filter\_length\_ask\_ook** (*Optional*, enum): Averaging length for ASK/OOK. + - **freeze** (*Optional*, enum): AGC gain freeze behavior. + - **wait\_time** (*Optional*, enum): AGC wait time. + - **hyst\_level** (*Optional*, enum): AGC hysteresis level. -- **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. -- **modulation_type** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, - `GFSK`, `MSK`. +## Actions -- **deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. -- **channel** (*Optional*, int): Channel number (added to base frequency). -- **channel\_spacing** (*Optional*, frequency): Spacing between channels. -- **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. +This component provides actions to control the radio state, primarily used for coordinating transmission. -## AGC Configuration + - **cc1101.begin\_tx**: Wakes the radio and forces it into TX mode. This **must** be called before `remote_transmitter` starts sending data. + - **cc1101.end\_tx**: Puts the radio back into RX mode and resets the pin configuration to safe defaults. + - **cc1101.reset**: Resets the CC1101 chip and re-applies configuration. + +### Example Transmit Button ```yaml -# Example AGC Configuration -cc1101: - cs_pin: GPIOXX - gdo0_pin: GPIOXX - tuner: - frequency: 433.92MHz - modulation_type: ASK/OOK - filter_bandwidth: 203kHz - symbol_rate: 5000 - agc: - magn_target: 24dB - max_lna_gain: 2.6dB - max_dvga_gan: -3 +button: + - platform: template + name: "Send Signal" + on_press: + # 1. Wake up radio and enter TX mode (Blocking wait) + - cc1101.begin_tx: + + # 2. Send data using standard Remote Transmitter + - remote_transmitter.transmit_raw: + code: [1000, -1000, 1000, -1000] + repeat: 5 + + # 3. Return to RX mode + - cc1101.end_tx: ``` -Advanced users can fine-tune the Automatic Gain Control (AGC) settings. +## Integration with Remote Receiver/Transmitter -- **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). -- **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. -- **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. +### Wiring for ESP32 (Split Pins) -## Integration with Remote Receiver/Transmitter +The ESP32 RMT peripheral requires exclusive access to the TX pin. You cannot share a single pin for both RX and TX easily. -To use the CC1101 for receiving or transmitting signals, you must configure the standard -[Remote Receiver](https://www.google.com/search?q=remote_receiver.md) or [Remote Transmitter](https://www.google.com/search?q=remote_transmitter.md) components to use the **GDO0 pin** -defined in your CC1101 configuration. + * **GDO0 (Pin 3)**: Connect to the pin used by `remote_transmitter`. + * **GDO2 (Pin 8)**: Connect to the pin used by `remote_receiver`. ```yaml -# Example: Receiving raw data via GDO0 -remote_receiver: - pin: GPIOXX # Must match the 'gdo0_pin' in cc1101 config or GDO2 pin if connected - dump: all +cc1101: + gdo0_pin: GPIOXX # CC1101 GDO0 -# Example: Transmitting raw data via GDO0 remote_transmitter: - pin: GPIOXX # Must match the 'gdo0_pin' in cc1101 config or GDO2 pin if connected + pin: GPIOXX # Must match GDO0 carrier_duty_percent: 100% + +remote_receiver: + pin: GPIOXX2 # CC1101 GDO2 + dump: all ``` +### Wiring for ESP8266 (Single Pin) + +On ESP8266, you can wire **GDO0** to a single GPIO and use it for both TX and RX. + ## Troubleshooting ### "FF0F was found" Error -If you see a log entry stating `FF0F was found` or similar invalid versions (e.g., `0000`, `FFFF`) during -setup, this indicates an SPI communication failure. - -- Check your wiring, especially the **MISO** and **CSN** lines. -- Ensure the module is powered with a stable 3.3V source. -- This component implements a "burst read" fix specifically to address this issue on some CC1101 silicon revisions, - so persistent errors are likely physical connection issues. +If you see a log entry stating `FF0F`, `0000`, or `FFFF` during setup, this indicates an SPI communication failure. Check your wiring (MISO/MOSI/CS). -### Reset Issues +### No Signal during Transmit -This component uses a robust, non-blocking state machine that polls the `CHIP_RDYn` signal on the MISO line during -startup. This prevents race conditions where the ESP32 might attempt to configure the chip before the crystal has -stabilized. If you experience timeouts during the `RES` command, check your power supply stability. +1. **Check Pinout:** Ensure `remote_transmitter` is assigned to the pin physically connected to **GDO0**. The CC1101 **only** supports transmission via GDO0. ## See Also @@ -133,4 +140,4 @@ stabilized. If you experience timeouts during the `RES` command, check your powe - [Remote Receiver](/components/remote_receiver) - [Remote Transmitter](/components/remote_transmitter) - [SPI Component](/components/spi) -- [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) +- [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) \ No newline at end of file From 623264ff5213c45e51fa3b32c1ab68e4d73fe8a8 Mon Sep 17 00:00:00 2001 From: lygris Date: Tue, 18 Nov 2025 21:32:55 -0600 Subject: [PATCH 08/13] Requested Fixes --- content/components/cc1101.md | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index 9876798d7a..aa3c92f493 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -100,9 +100,23 @@ button: ## Integration with Remote Receiver/Transmitter -### Wiring for ESP32 (Split Pins) +### Wiring for Single Pin Usage -The ESP32 RMT peripheral requires exclusive access to the TX pin. You cannot share a single pin for both RX and TX easily. +Wire **GDO0** to a single GPIO and use it for both TX and RX. +```yaml +cc1101: + gdo0_pin: GPIOXX # CC1101 GDO0 + +remote_transmitter: + pin: GPIOXX # Must match GDO0 + carrier_duty_percent: 100% + +remote_receiver: + pin: GPIOXX # CC1101 GDO0 + dump: all +``` + +### Wiring for Split Pin Usage * **GDO0 (Pin 3)**: Connect to the pin used by `remote_transmitter`. * **GDO2 (Pin 8)**: Connect to the pin used by `remote_receiver`. @@ -116,14 +130,10 @@ remote_transmitter: carrier_duty_percent: 100% remote_receiver: - pin: GPIOXX2 # CC1101 GDO2 + pin: GPIOXX # CC1101 GDO2 dump: all ``` -### Wiring for ESP8266 (Single Pin) - -On ESP8266, you can wire **GDO0** to a single GPIO and use it for both TX and RX. - ## Troubleshooting ### "FF0F was found" Error From 39f3e19c42d4100a031fa98db9520c038eae414b Mon Sep 17 00:00:00 2001 From: lygris Date: Tue, 18 Nov 2025 21:44:37 -0600 Subject: [PATCH 09/13] missed these ones --- content/components/cc1101.md | 47 ++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index aa3c92f493..df6e766c98 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -105,14 +105,36 @@ button: Wire **GDO0** to a single GPIO and use it for both TX and RX. ```yaml cc1101: - gdo0_pin: GPIOXX # CC1101 GDO0 + gdo0_pin: + pin: + number: GPIOXX # CC1101 GDO0 + mode: + input: true + output: true + pullup: true + open_drain: true + allow_other_uses: true remote_transmitter: - pin: GPIOXX # Must match GDO0 + pin: + number: GPIOXX # Must match GDO0 + mode: + input: true + output: true + pullup: true + open_drain: true + allow_other_uses: true carrier_duty_percent: 100% remote_receiver: - pin: GPIOXX # CC1101 GDO0 + pin: + number: GPIOXX # Must match GDO0 + mode: + input: true + output: true + pullup: true + open_drain: true + allow_other_uses: true dump: all ``` @@ -123,10 +145,25 @@ remote_receiver: ```yaml cc1101: - gdo0_pin: GPIOXX # CC1101 GDO0 + gdo0_pin: + pin: + number: GPIOXX # Must match GDO0 + mode: + input: true + output: true + pullup: true + open_drain: true + allow_other_uses: true remote_transmitter: - pin: GPIOXX # Must match GDO0 + pin: + number: GPIOXX # Must match GDO0 + mode: + input: true + output: true + pullup: true + open_drain: true + allow_other_uses: true carrier_duty_percent: 100% remote_receiver: From 8d076327fe9d312ff788f574587cce0ef94ad59b Mon Sep 17 00:00:00 2001 From: lygris Date: Tue, 18 Nov 2025 21:49:33 -0600 Subject: [PATCH 10/13] lint fixes --- content/components/cc1101.md | 73 ++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index df6e766c98..e09ed1226b 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -27,75 +27,75 @@ cc1101: ### Hardware Settings - - **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. - - **gdo0\_pin** (**Required**, [Pin](pin.md)): The pin connected to **GDO0** on the CC1101. - - **Note:** On ESP32, `remote_transmitter` **must** use the pin connected to **GDO0** to transmit successfully. +- **cs\_pin** (**Required**, [Pin](pin.md)): The SPI Chip Select (CSN) pin connected to the module. +- **gdo0\_pin** (**Required**, [Pin](pin.md)): The pin connected to **GDO0** on the CC1101. +- **Note:** `remote_transmitter` **must** use the pin connected to **GDO0** to transmit successfully. ### General Settings - - **frequency** (*Optional*, frequency): The operating frequency. Range: `300MHz` to `928MHz`. Default: `433.92MHz`. - - **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-30` to `11`. Default: `10`. - - **modulation\_type** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. - - **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. - - **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. Default: `0dB`. - - **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. +- **frequency** (*Optional*, frequency): The operating frequency. Range: `300MHz` to `928MHz`. Default: `433.92MHz`. +- **output\_power** (*Optional*, float): The transmission power in dBm. Range: `-30` to `11`. Default: `10`. +- **modulation\_type** (*Optional*, enum): The modulation format. Options: `ASK/OOK` (default), `2-FSK`, `4-FSK`, `GFSK`, `MSK`. +- **symbol\_rate** (*Optional*, int): The symbol rate in Baud. Range: `600` to `500000`. Default: `5000`. +- **rx\_attenuation** (*Optional*, enum): Internal RX attenuation. Options: `0dB`, `6dB`, `12dB`, `18dB`. Default: `0dB`. +- **dc\_blocking\_filter** (*Optional*, boolean): Enable the digital DC blocking filter. Default: `True`. ### Tuner Settings - - **filter\_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. - - **fsk\_deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. +- **filter\_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. +- **fsk\_deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. - - **channel** (*Optional*, int): Channel number (added to base frequency). - - **channel\_spacing** (*Optional*, frequency): Spacing between channels. - - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. +- **channel** (*Optional*, int): Channel number (added to base frequency). +- **channel\_spacing** (*Optional*, frequency): Spacing between channels. +- **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. +- **pktlen** (*Optional*, int): Packet length config. --> ### AGC (Automatic Gain Control) Settings Advanced users can fine-tune the AGC dynamics. - - **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). - - **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. - - **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. - - **lna\_priority** (*Optional*, boolean): If true, decrease LNA gain before DVGA gain. - - **carrier\_sense\_abs\_thr** (*Optional*, int): Absolute RSSI threshold for Carrier Sense. - - **carrier\_sense\_rel\_thr** (*Optional*, enum): Relative RSSI threshold for Carrier Sense. - - **filter\_length\_fsk\_msk** (*Optional*, enum): Averaging length for FSK/MSK. - - **filter\_length\_ask\_ook** (*Optional*, enum): Averaging length for ASK/OOK. - - **freeze** (*Optional*, enum): AGC gain freeze behavior. - - **wait\_time** (*Optional*, enum): AGC wait time. - - **hyst\_level** (*Optional*, enum): AGC hysteresis level. +- **magn\_target** (*Optional*, dB): Target signal amplitude. Range: `24dB` to `42dB` in increments of 3(eg. `33dB`). +- **max\_lna\_gain** (*Optional*, dB): Maximum LNA gain reduction. Options: `Default`, `2.6dB`, `6.1dB`, `7.4dB`, `9.2dB`, `11.5dB`, `14.6dB`, `17.1dB`. +- **max\_dvga\_gain** (*Optional*, enum): Maximum Digital Variable Gain reduction. Options: `Default`, `-1`, `-2`, `-3`. +- **lna\_priority** (*Optional*, boolean): If true, decrease LNA gain before DVGA gain. +- **carrier\_sense\_abs\_thr** (*Optional*, int): Absolute RSSI threshold for Carrier Sense. +- **carrier\_sense\_rel\_thr** (*Optional*, enum): Relative RSSI threshold for Carrier Sense. +- **filter\_length\_fsk\_msk** (*Optional*, enum): Averaging length for FSK/MSK. +- **filter\_length\_ask\_ook** (*Optional*, enum): Averaging length for ASK/OOK. +- **freeze** (*Optional*, enum): AGC gain freeze behavior. +- **wait\_time** (*Optional*, enum): AGC wait time. +- **hyst\_level** (*Optional*, enum): AGC hysteresis level. ## Actions This component provides actions to control the radio state, primarily used for coordinating transmission. - - **cc1101.begin\_tx**: Wakes the radio and forces it into TX mode. This **must** be called before `remote_transmitter` starts sending data. - - **cc1101.end\_tx**: Puts the radio back into RX mode and resets the pin configuration to safe defaults. - - **cc1101.reset**: Resets the CC1101 chip and re-applies configuration. +- **cc1101.begin\_tx**: Wakes the radio and forces it into TX mode. This **must** be called before `remote_transmitter` starts sending data. +- **cc1101.end\_tx**: Puts the radio back into RX mode and resets the pin configuration to safe defaults. +- **cc1101.reset**: Resets the CC1101 chip and re-applies configuration. ### Example Transmit Button ```yaml button: - - platform: template +- platform: template name: "Send Signal" on_press: # 1. Wake up radio and enter TX mode (Blocking wait) - - cc1101.begin_tx: + - cc1101.begin_tx: # 2. Send data using standard Remote Transmitter - - remote_transmitter.transmit_raw: + - remote_transmitter.transmit_raw: code: [1000, -1000, 1000, -1000] repeat: 5 # 3. Return to RX mode - - cc1101.end_tx: + - cc1101.end_tx: ``` ## Integration with Remote Receiver/Transmitter @@ -103,6 +103,7 @@ button: ### Wiring for Single Pin Usage Wire **GDO0** to a single GPIO and use it for both TX and RX. + ```yaml cc1101: gdo0_pin: @@ -140,8 +141,8 @@ remote_receiver: ### Wiring for Split Pin Usage - * **GDO0 (Pin 3)**: Connect to the pin used by `remote_transmitter`. - * **GDO2 (Pin 8)**: Connect to the pin used by `remote_receiver`. +- **GDO0 (Pin 3)**: Connect to the pin used by `remote_transmitter`. +- **GDO2 (Pin 8)**: Connect to the pin used by `remote_receiver`. ```yaml cc1101: @@ -187,4 +188,4 @@ If you see a log entry stating `FF0F`, `0000`, or `FFFF` during setup, this indi - [Remote Receiver](/components/remote_receiver) - [Remote Transmitter](/components/remote_transmitter) - [SPI Component](/components/spi) -- [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) \ No newline at end of file +- [CC1101 Datasheet](https://www.ti.com/lit/ds/symlink/cc1101.pdf) From 8059126a62d8ca42adb792c93623b2fc8fc630d5 Mon Sep 17 00:00:00 2001 From: lygris Date: Tue, 18 Nov 2025 21:51:49 -0600 Subject: [PATCH 11/13] moar lint fixes --- content/components/cc1101.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index e09ed1226b..fdfa973d59 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -180,7 +180,7 @@ If you see a log entry stating `FF0F`, `0000`, or `FFFF` during setup, this indi ### No Signal during Transmit -1. **Check Pinout:** Ensure `remote_transmitter` is assigned to the pin physically connected to **GDO0**. The CC1101 **only** supports transmission via GDO0. +1. **Check Pinout:** Ensure `remote_transmitter` is assigned to the pin physically connected to **GDO0**. The CC1101 **only** supports transmission via GDO0. ## See Also From f6a156c8730d0be3c73ff6f8b141de3ca812140c Mon Sep 17 00:00:00 2001 From: lygris Date: Tue, 18 Nov 2025 21:56:34 -0600 Subject: [PATCH 12/13] add begin/end tx actions to examples --- content/components/cc1101.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index fdfa973d59..fa42bb6589 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -126,6 +126,12 @@ remote_transmitter: open_drain: true allow_other_uses: true carrier_duty_percent: 100% + on_transmit: + then: + - cc1101.begin_tx: + on_complete: + then: + - cc1101.end_tx: remote_receiver: pin: @@ -166,6 +172,12 @@ remote_transmitter: open_drain: true allow_other_uses: true carrier_duty_percent: 100% + on_transmit: + then: + - cc1101.begin_tx: + on_complete: + then: + - cc1101.end_tx: remote_receiver: pin: GPIOXX # CC1101 GDO2 From 9488c628af06c70430ab80efd8f1f5797548b6c3 Mon Sep 17 00:00:00 2001 From: lygris Date: Tue, 18 Nov 2025 22:01:25 -0600 Subject: [PATCH 13/13] Remove some commented lines and fix lint error --- content/components/cc1101.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/content/components/cc1101.md b/content/components/cc1101.md index fa42bb6589..494db25924 100644 --- a/content/components/cc1101.md +++ b/content/components/cc1101.md @@ -44,15 +44,9 @@ cc1101: - **filter\_bandwidth** (*Optional*, frequency): The receive filter bandwidth. Range: `58kHz` to `812kHz`. Default: `203kHz`. - **fsk\_deviation** (*Optional*, frequency): Frequency deviation for FSK/GFSK modulation. - - **channel** (*Optional*, int): Channel number (added to base frequency). - **channel\_spacing** (*Optional*, frequency): Spacing between channels. - **if\_frequency** (*Optional*, frequency): Intermediate Frequency. Default is optimized for 433MHz usage. - - - - - ### AGC (Automatic Gain Control) Settings @@ -192,7 +186,7 @@ If you see a log entry stating `FF0F`, `0000`, or `FFFF` during setup, this indi ### No Signal during Transmit -1. **Check Pinout:** Ensure `remote_transmitter` is assigned to the pin physically connected to **GDO0**. The CC1101 **only** supports transmission via GDO0. +- **Check Pinout:** Ensure `remote_transmitter` is assigned to the pin physically connected to **GDO0**. The CC1101 **only** supports transmission via GDO0. ## See Also