CC1101 Low-Power Sub-1 GHz RF Transceiver
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 and Remote Receiver components.
This component requires the SPI Component to be enabled.

Component Configuration
# Minimal Example
cc1101:
cs_pin: GPIOXX
gdo0_pin: GPIOXX
frequency: 433.92MHzConfiguration Variables
Hardware Settings
- cs_pin (Required, Pin): The SPI Chip Select (CSN) pin connected to the module.
- gdo0_pin (Required, Pin): The pin connected to GDO0 on the CC1101.
- Note:
remote_transmittermust use the pin connected to GDO0 to transmit successfully.
General Settings
- frequency (Optional, frequency): The operating frequency. Range:
300MHzto928MHz. Default:433.92MHz. - output_power (Optional, float): The transmission power in dBm. Range:
-30to11. 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:
600to500000. 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:
58kHzto812kHz. 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.
- 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:
24dBto42dBin 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_transmitterstarts 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
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:Integration with Remote Receiver/Transmitter
Wiring for Single Pin Usage
Wire GDO0 to a single GPIO and use it for both TX and RX.
cc1101:
gdo0_pin:
pin:
number: GPIOXX # CC1101 GDO0
mode:
input: true
output: true
pullup: true
open_drain: true
allow_other_uses: true
remote_transmitter:
pin:
number: GPIOXX # Must match GDO0
mode:
input: true
output: true
pullup: true
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:
number: GPIOXX # Must match GDO0
mode:
input: true
output: true
pullup: true
open_drain: true
allow_other_uses: true
dump: allWiring 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.
cc1101:
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:
number: GPIOXX # Must match GDO0
mode:
input: true
output: true
pullup: true
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
dump: allTroubleshooting
“FF0F was found” Error
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).
No Signal during Transmit
- Check Pinout: Ensure
remote_transmitteris assigned to the pin physically connected to GDO0. The CC1101 only supports transmission via GDO0.