For anyone wanting to use a CC1101 with an ESP8266 I can confirm it works, here is my config. I used a Wemos D1 mini clone for this with ESP 2026.1.2 note I always use GPIO numbers but have included the D pin numbers in the comments, I’d check the pin numbering on the CC1101 module as there are different ones about.
esphome:
name: cc1101test
friendly_name: CC1101Test
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "removed"
ota:
- platform: esphome
password: "removed"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: WPA2 # Newish setting recommended to specify a minimum encryption of WPA2
# These are pinouts for a specific CC1101 module and D1 mini ESP8266 clone, check yours are the same
# 1:GND : G
# 2:Vcc : 3.3v
# 3:GD00 : GPIO4 : D2
# 4:CS : GPIO15 : D8
# 5:SCK : GPIO14 : D5
# 6:MOSI : GPIO13 : D7
# 7:MISO/GD01 : GPIO12 : D6
# 8:GD02 : GPIO5 : D1
spi:
clk_pin: GPIO14
mosi_pin: GPIO13
miso_pin: GPIO12
cc1101:
cs_pin: GPIO15
frequency: 433.92MHz
remote_transmitter:
pin: GPIO4 # Must match GDO0
carrier_duty_percent: 100%
on_transmit:
then:
- cc1101.begin_tx
on_complete:
then:
- cc1101.begin_rx
remote_receiver:
pin: GPIO5 # Must match GDO2
dump: raw # Change to 'all' to dump RC codes
tolerance: 50%
idle: 5ms # Remote control codes are often repeated multiple times, change to be slightly less than the gap between codes
binary_sensor:
- platform: remote_receiver
name: "Test Button Receive"
id: test1_sensor
internal: True
raw:
code: [-2452,1602,-350,
325,-676,325,-700,326,-675,676,-325,350,-676,675,-326,675,-325,676,-350,
325,-676,676,-350,650,-351,650,-375,326,-675,651,-350,676,-350,650,-351,
675,-325,351,-675,325,-676,325,-701,625,-376,325,-675,676,-325,350,-676,
675,-326,350,-676,325,-675,326,-675,350,-676,325,-676,325,-700,326,-675,
676,-325,350,-676,325,-676,675,-350,651,-350,326,-675,676,-350,650,-351]
on_state:
then:
- logger.log: "Test Button Received"
button:
- platform: template
name: "Test Button"
id: test1_button
on_press:
- remote_transmitter.transmit_raw:
code: [4885,-2452,1602,-350,
325,-676,325,-700,326,-675,676,-325,350,-676,675,-326,675,-325,676,-350,
325,-676,676,-350,650,-351,650,-375,326,-675,651,-350,676,-350,650,-351,
675,-325,351,-675,325,-676,325,-701,625,-376,325,-675,676,-325,350,-676,
675,-326,350,-676,325,-675,326,-675,350,-676,325,-676,325,-700,326,-675,
676,-325,350,-676,325,-676,675,-350,651,-350,326,-675,676,-350,650,-351]
repeat:
times: 6
wait_time: 90us
- logger.log: "Test Button Pressed"
sensor:
- platform: uptime
name: Uptime Sensor
- platform: wifi_signal
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""