Success putting "esp32s3-cc1101-rtl_433" on ESP32-S3-N16R8 clone-board

I am running CC1101 + RTL-433 on some half random clone board, a ESP32-S3-N16R8.

First, I found an existing firmware for the CC1101 transceiver only. After many hours, I found that GPIO 23 is used for default initialization, and since this board has no pin 23, the initialization process makes everything crash and before another choice of pin can be set for SPI.

For this, I had to change af number of lines of code and for this pin 23 never to be tried. Then I could interface to the transceiver.

When wanting to add RTL-433 too, I was forced into creating a new platform definition. Lots of challenges with the compilation and the linking, got it all sorted out. Nothing was found of the “S3” part, so I ended up setting this:

[env:esp32s3-cc1101-rtl_433]

extends = env:esp32s3-dev-c1-ble

board_upload.flash_size = 16MB

board_build.partitions = default_16MB.csv

board_build.arduino.memory_type = qio_opi

lib_deps =

  ${env:esp32s3-dev-c1-ble.lib_deps}

  ${libraries.rtl_433_esp}

  jgromes/RadioLib@^7.7.1

build_flags =

  ${env:esp32s3-dev-c1-ble.build_flags}

  '-I.pio/libdeps/esp32s3-cc1101-rtl_433'

  '-UMQTT_HTTPS_FW_UPDATE'

  '-DRAW_SIGNAL_DEBUG'

  '-DPUBLISH_UNPARSED'

  '-Ddecoder_openmqttgateway=1'

  '-DZgatewayBT="BT"'

  '-DZgatewayRTL_433="rtl_433"'

  '-DRTL_433_LIB="rtl_433"'

  '-DRTL_FLEX=1'

  '-DRF_CC1101=1'

  '-DDEMOD_CC1101=1'

  '-DSTR_MODULE="CC1101"'

  '-DRF_MODULE_FREQUENCY=433.92'

  '-DRF_MODULE_CS=15'

  '-DRF_MODULE_SCK=16'

  '-DRF_MODULE_MISO=18'

  '-DRF_MODULE_MOSI=17'

  '-DRF_MODULE_GDO0=4'

  '-DRF_MODULE_GDO2=5'

The linking problems were numerous, to say the least. As part of this, I also addressed the N16R8 part and got access to all 16 MiB of flash (default is N8R2 or something?).

Except from not yet having everything documented, I am somewhat happy with the outcome. So much … resistance.

I am sure some of you know this plain-and-simple 44-pins board, I have used. But it has not been without challenges and I kind of am left with the impression that it is not that easy to address. Starting with GPIO 23 having to be reset before initialization.

If you think this board is “oh, so plain and simple” then consider giving me a hint. Maybe I can address it more easily, do much less work?

If you think this has a broader interest then I will consider this as a drive for getting this documented and beyond my own usages.

Kind regards,
Morten