diff --git a/.github/actions/setup-base/action.yml b/.github/actions/setup-base/action.yml new file mode 100644 index 000000000..1791f80ae --- /dev/null +++ b/.github/actions/setup-base/action.yml @@ -0,0 +1,41 @@ +name: 'Setup Build Base Composite Action' +description: 'Base build actions for Meshtastic Platform IO steps' + +runs: + using: "composite" + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + submodules: "recursive" + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - name: Install cppcheck + shell: bash + run: | + sudo apt-get install -y cppcheck + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.x + + - name: Cache python libs + uses: actions/cache@v3 + id: cache-pip # needed in if test + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip + + - name: Upgrade python tools + shell: bash + run: | + python -m pip install --upgrade pip + pip install -U platformio adafruit-nrfutil + pip install -U meshtastic --pre + + - name: Upgrade platformio + shell: bash + run: | + pio upgrade \ No newline at end of file diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml new file mode 100644 index 000000000..6d5dd9863 --- /dev/null +++ b/.github/workflows/build_esp32.yml @@ -0,0 +1,54 @@ +name: Build ESP32 + +on: + workflow_call: + inputs: + board: + required: true + type: string + +jobs: + build-esp32: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base + + - name: Pull web ui + uses: dsaltares/fetch-gh-release-asset@master + with: + repo: "meshtastic/web" + file: "build.tar" + target: "build.tar" + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Unpack web ui + run: | + tar -xf build.tar -C data/static + rm build.tar + + - name: Build ESP32 + run: bin/build-esp32.sh ${{ inputs.board }} + + - name: Pull OTA Firmware + uses: dsaltares/fetch-gh-release-asset@master + with: + repo: "meshtastic/firmware-ota" + file: "firmware.bin" + target: "release/bleota.bin" + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Get release version string + shell: bash + run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v3 + with: + name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.bin + release/*.elf diff --git a/.github/workflows/build_nrf52.yml b/.github/workflows/build_nrf52.yml new file mode 100644 index 000000000..cdf43c22e --- /dev/null +++ b/.github/workflows/build_nrf52.yml @@ -0,0 +1,33 @@ +name: Build NRF52 + +on: + workflow_call: + inputs: + board: + required: true + type: string + +jobs: + build-nrf52: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base + + - name: Build NRF52 + run: bin/build-nrf52.sh ${{ inputs.board }} + + - name: Get release version string + run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v3 + with: + name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.uf2 + release/*.elf + release/*.zip \ No newline at end of file diff --git a/.github/workflows/build_rpi2040.yml b/.github/workflows/build_rpi2040.yml new file mode 100644 index 000000000..fb7e3db5b --- /dev/null +++ b/.github/workflows/build_rpi2040.yml @@ -0,0 +1,32 @@ +name: Build RPI2040 + +on: + workflow_call: + inputs: + board: + required: true + type: string + +jobs: + build-rpi2040: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base + + - name: Build Raspberry Pi 2040 + run: ./bin/build-rpi2040.sh ${{ inputs.board }} + + - name: Get release version string + run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v3 + with: + name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.uf2 + release/*.elf \ No newline at end of file diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index 5ec4854da..2440b2ed3 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -23,52 +23,22 @@ jobs: matrix: include: - board: rak11200 - - board: tlora-v1 - board: tlora-v2-1-1.6 - board: tbeam - board: heltec-v2.1 - board: meshtastic-diy-v1 - board: rak4631 - board: t-echo - - board: nano-g1 - board: station-g1 - board: m5stack-coreink - board: tbeam-s3-core - # - board: pico runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: "recursive" - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Install cppcheck - run: | - sudo apt-get install -y cppcheck - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - id: cache-pip # needed in if test - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Upgrade python tools and install platformio - run: | - python -m pip install --upgrade pip - pip install -U platformio - - - name: Upgrade platformio - run: | - pio upgrade + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base - name: Check ${{ matrix.board }} run: bin/check-all.sh ${{ matrix.board }} @@ -97,73 +67,9 @@ jobs: - board: m5stack-core - board: m5stack-coreink - board: tbeam-s3-core - - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: "recursive" - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - id: cache-pip # needed in if test - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Upgrade python tools - run: | - python -m pip install --upgrade pip - pip install -U platformio adafruit-nrfutil - - - name: Upgrade platformio - run: | - pio upgrade - - - name: Pull web ui - uses: dsaltares/fetch-gh-release-asset@master - with: - repo: "meshtastic/web" - file: "build.tar" - target: "build.tar" - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Unpack web ui - run: | - tar -xf build.tar -C data/static - rm build.tar - - - name: Build ESP32 - run: bin/build-esp32.sh ${{ matrix.board }} - - - name: Pull OTA Firmware - uses: dsaltares/fetch-gh-release-asset@master - with: - repo: "meshtastic/firmware-ota" - file: "firmware.bin" - target: "release/bleota.bin" - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT - id: version - - - name: Store binaries as an artifact - uses: actions/upload-artifact@v3 - with: - name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip - path: | - release/*.bin - release/*.elf - retention-days: 30 + uses: ./.github/workflows/build_esp32.yml + with: + board: ${{ matrix.board }} build-nrf52: strategy: @@ -176,53 +82,9 @@ jobs: - board: t-echo - board: pca10059_diy_eink - board: feather_diy - - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: "recursive" - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - id: cache-pip # needed in if test - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Upgrade python tools - run: | - python -m pip install --upgrade pip - pip install -U platformio adafruit-nrfutil - - - name: Upgrade platformio - run: | - pio upgrade - - - name: Build NRF52 - run: bin/build-nrf52.sh ${{ matrix.board }} - - - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT - id: version - - - name: Store binaries as an artifact - uses: actions/upload-artifact@v3 - with: - name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip - path: | - release/*.uf2 - release/*.elf - release/*.zip - retention-days: 30 + uses: ./.github/workflows/build_nrf52.yml + with: + board: ${{ matrix.board }} build-rpi2040: strategy: @@ -231,84 +93,17 @@ jobs: matrix: include: - board: pico - - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: "recursive" - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - id: cache-pip # needed in if test - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Upgrade python tools - run: | - python -m pip install --upgrade pip - pip install -U platformio adafruit-nrfutil - - - name: Upgrade platformio - run: | - pio upgrade - - - name: Build Raspberry Pi 2040 - run: ./bin/build-rpi2040.sh ${{ matrix.board }} - - - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT - id: version - - - name: Store binaries as an artifact - uses: actions/upload-artifact@v3 - with: - name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip - path: | - release/*.uf2 - release/*.elf - retention-days: 30 + uses: ./.github/workflows/build_rpi2040.yml + with: + board: ${{ matrix.board }} build-native: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: "recursive" - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - id: cache-pip # needed in if test - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Upgrade python tools - run: | - python -m pip install --upgrade pip - pip install -U platformio adafruit-nrfutil - pip install -U meshtastic --pre - - - name: Upgrade platformio - run: | - pio upgrade + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base # We now run integration test before other build steps (to quickly see runtime failures) - name: Build for native @@ -335,8 +130,27 @@ jobs: release/meshtasticd_linux_amd64 release/device-*.sh release/device-*.bat - retention-days: 30 + + - name: Docker login + if: ${{ github.event_name == 'workflow_dispatch' }} + uses: docker/login-action@v2 + with: + username: meshtastic + password: ${{ secrets.DOCKER_TOKEN }} + - name: Docker setup + if: ${{ github.event_name == 'workflow_dispatch' }} + uses: docker/setup-buildx-action@v2 + + - name: Docker build and push + if: ${{ github.event_name == 'workflow_dispatch' }} + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + push: true + tags: meshtastic/device-simulator:latest + after-checks: runs-on: ubuntu-latest needs: [check] diff --git a/.github/workflows/sec_sast_flawfinder.yml b/.github/workflows/sec_sast_flawfinder.yml new file mode 100644 index 000000000..e2ba44090 --- /dev/null +++ b/.github/workflows/sec_sast_flawfinder.yml @@ -0,0 +1,40 @@ +--- +name: Flawfinder Scan + +on: + push: + branches: [master, develop] + paths-ignore: + - "**.md" + - "version.properties" + +jobs: + flawfinder: + runs-on: ubuntu-latest + name: Flawfinder + + steps: + # step 1 + - name: clone application source code + uses: actions/checkout@v3 + + # step 2 + - name: flawfinder_scan + uses: david-a-wheeler/flawfinder@2.0.19 + with: + arguments: '--sarif ./' + output: 'flawfinder_report.sarif' + + # step 3 + - name: save report as pipeline artifact + uses: actions/upload-artifact@v3 + with: + name: flawfinder_report.sarif + path: flawfinder_report.sarif + + # step 4 + - name: publish code scanning alerts + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: flawfinder_report.sarif + category: flawfinder diff --git a/.github/workflows/sec_sast_semgrep_cron.yml b/.github/workflows/sec_sast_semgrep_cron.yml new file mode 100644 index 000000000..426250280 --- /dev/null +++ b/.github/workflows/sec_sast_semgrep_cron.yml @@ -0,0 +1,44 @@ +--- +name: Semgrep Full Scan + +on: + workflow_dispatch: + branches: + - master + schedule: + - cron: '0 1 * * 6' + +jobs: + + semgrep-full: + runs-on: ubuntu-latest + container: + image: returntocorp/semgrep + + steps: + + # step 1 + - name: clone application source code + uses: actions/checkout@v3 + + # step 2 + - name: full scan + run: | + semgrep \ + --sarif --output report.sarif \ + --metrics=off \ + --config="p/default" + + # step 3 + - name: save report as pipeline artifact + uses: actions/upload-artifact@v3 + with: + name: report.sarif + path: report.sarif + + # step 4 + - name: publish code scanning alerts + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: report.sarif + category: semgrep diff --git a/.github/workflows/sec_sast_semgrep_pull.yml b/.github/workflows/sec_sast_semgrep_pull.yml new file mode 100644 index 000000000..8fe3632b4 --- /dev/null +++ b/.github/workflows/sec_sast_semgrep_pull.yml @@ -0,0 +1,28 @@ +--- +name: Semgrep Differential Scan +on: + pull_request + +jobs: + + semgrep-diff: + runs-on: ubuntu-latest + container: + image: returntocorp/semgrep + + steps: + + # step 1 + - name: clone application source code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # step 2 + - name: differential scan + run: | + semgrep scan \ + --error \ + --metrics=off \ + --baseline-commit ${{ github.event.pull_request.base.sha }} \ + --config="p/default" diff --git a/.semgrepignore b/.semgrepignore new file mode 100644 index 000000000..10fcb5f75 --- /dev/null +++ b/.semgrepignore @@ -0,0 +1,2 @@ +.github/workflows/main_matrix.yml +src/mesh/compression/unishox2.c diff --git a/Dockerfile b/Dockerfile index 0ce4e3326..8e3cd2154 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,41 @@ FROM debian:bullseye-slim AS builder -RUN apt-get update -RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install wget python3 g++ zip python3-venv git vim -RUN wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py; chmod +x get-platformio.py -RUN python3 get-platformio.py -RUN git clone https://github.com/meshtastic/firmware --recurse-submodules -RUN cd firmware -RUN chmod +x ./firmware/bin/build-native.sh -RUN . ~/.platformio/penv/bin/activate; cd firmware; sh ./bin/build-native.sh + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Etc/UTC + +# http://bugs.python.org/issue19846 +# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK. +ENV LANG C.UTF-8 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Install build deps +USER root +RUN apt-get update && \ + apt-get -y install wget python3 g++ zip python3-venv git vim ca-certificates + +# create a non-priveleged user & group +RUN groupadd -g 1000 mesh && useradd -ml -u 1000 -g 1000 mesh + +USER mesh +RUN wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -qO /tmp/get-platformio.py && \ + chmod +x /tmp/get-platformio.py && \ + python3 /tmp/get-platformio.py && \ + git clone https://github.com/meshtastic/firmware --recurse-submodules /tmp/firmware && \ + cd /tmp/firmware && \ + chmod +x /tmp/firmware/bin/build-native.sh && \ + source ~/.platformio/penv/bin/activate && \ + ./bin/build-native.sh FROM frolvlad/alpine-glibc -WORKDIR /root/ -COPY --from=builder /firmware/release/meshtasticd_linux_amd64 ./ -RUN apk --update add --no-cache g++ -CMD sh -cx "./meshtasticd_linux_amd64 --hwid '$RANDOM'" \ No newline at end of file + +RUN apk --update add --no-cache g++ shadow && \ + groupadd -g 1000 mesh && useradd -ml -u 1000 -g 1000 mesh + +COPY --from=builder /tmp/firmware/release/meshtasticd_linux_amd64 /home/mesh/ + +USER mesh +WORKDIR /home/mesh +CMD sh -cx "./meshtasticd_linux_amd64 --hwid '$RANDOM'" + +HEALTHCHECK NONE diff --git a/README.md b/README.md index 6432803e4..5bae2f345 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This repository contains the device firmware for the Meshtastic project. -**[Building Instructions](https://meshtastic.org/docs/developers/Firmware/build)** +**[Building Instructions](https://meshtastic.org/docs/development/firmware/build)** **[Flashing Instructions](https://meshtastic.org/docs/getting-started/flashing-firmware/)** ## Stats diff --git a/bin/build-esp32.sh b/bin/build-esp32.sh index 12961864f..5a2044a35 100755 --- a/bin/build-esp32.sh +++ b/bin/build-esp32.sh @@ -10,9 +10,6 @@ OUTDIR=release/ rm -f $OUTDIR/firmware* rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/bin/build-native.sh b/bin/build-native.sh index b620a01d8..8bc262860 100755 --- a/bin/build-native.sh +++ b/bin/build-native.sh @@ -12,9 +12,6 @@ rm -f $OUTDIR/firmware* mkdir -p $OUTDIR/ rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/bin/build-nrf52.sh b/bin/build-nrf52.sh index 6c723e28f..a9980f486 100755 --- a/bin/build-nrf52.sh +++ b/bin/build-nrf52.sh @@ -10,9 +10,6 @@ OUTDIR=release/ rm -f $OUTDIR/firmware* rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/bin/build-rpi2040.sh b/bin/build-rpi2040.sh index 670f570f1..fe0725085 100755 --- a/bin/build-rpi2040.sh +++ b/bin/build-rpi2040.sh @@ -10,9 +10,6 @@ OUTDIR=release/ rm -f $OUTDIR/firmware* rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/src/mesh/SX126xInterface.cpp b/src/mesh/SX126xInterface.cpp index 257d8fd04..20c8056e2 100644 --- a/src/mesh/SX126xInterface.cpp +++ b/src/mesh/SX126xInterface.cpp @@ -25,11 +25,11 @@ bool SX126xInterface::init() pinMode(SX126X_POWER_EN, OUTPUT); #endif -#ifdef SX126X_RXEN // set not rx or tx mode +#if defined(SX126X_RXEN) && (SX126X_RXEN != RADIOLIB_NC) // set not rx or tx mode digitalWrite(SX126X_RXEN, LOW); // Set low before becoming an output pinMode(SX126X_RXEN, OUTPUT); #endif -#ifdef SX126X_TXEN +#if defined(SX126X_TXEN) && (SX126X_TXEN != RADIOLIB_NC) digitalWrite(SX126X_TXEN, LOW); pinMode(SX126X_TXEN, OUTPUT); #endif @@ -66,7 +66,7 @@ bool SX126xInterface::init() DEBUG_MSG("Current limit set to %f\n", currentLimit); DEBUG_MSG("Current limit set result %d\n", res); -#ifdef SX126X_TXEN +#if defined(SX126X_TXEN) && (SX126X_TXEN != RADIOLIB_NC) // lora.begin sets Dio2 as RF switch control, which is not true if we are manually controlling RX and TX if (res == RADIOLIB_ERR_NONE) res = lora.setDio2AsRfSwitch(true); @@ -167,12 +167,16 @@ void SX126xInterface::setStandby() checkNotification(); // handle any pending interrupts before we force standby int err = lora.standby(); + + if (err != RADIOLIB_ERR_NONE) + DEBUG_MSG("SX126x standby failed with error %d\n", err); + assert(err == RADIOLIB_ERR_NONE); -#ifdef SX126X_RXEN // we have RXEN/TXEN control - turn off RX and TX power +#if defined(SX126X_RXEN) && (SX126X_RXEN != RADIOLIB_NC) // we have RXEN/TXEN control - turn off RX and TX power digitalWrite(SX126X_RXEN, LOW); #endif -#ifdef SX126X_TXEN +#if defined(SX126X_TXEN) && (SX126X_TXEN != RADIOLIB_NC) digitalWrite(SX126X_TXEN, LOW); #endif @@ -197,10 +201,10 @@ void SX126xInterface::addReceiveMetadata(MeshPacket *mp) template void SX126xInterface::configHardwareForSend() { -#ifdef SX126X_TXEN // we have RXEN/TXEN control - turn on TX power / off RX power +#if defined(SX126X_TXEN) && (SX126X_TXEN != RADIOLIB_NC) // we have RXEN/TXEN control - turn on TX power / off RX power digitalWrite(SX126X_TXEN, HIGH); #endif -#ifdef SX126X_RXEN +#if defined(SX126X_RXEN) && (SX126X_RXEN != RADIOLIB_NC) digitalWrite(SX126X_RXEN, LOW); #endif @@ -219,10 +223,10 @@ void SX126xInterface::startReceive() setStandby(); -#ifdef SX126X_RXEN // we have RXEN/TXEN control - turn on RX power / off TX power +#if defined(SX126X_RXEN) && (SX126X_RXEN != RADIOLIB_NC) // we have RXEN/TXEN control - turn on RX power / off TX power digitalWrite(SX126X_RXEN, HIGH); #endif -#ifdef SX126X_TXEN +#if defined(SX126X_TXEN) && (SX126X_TXEN != RADIOLIB_NC) digitalWrite(SX126X_TXEN, LOW); #endif diff --git a/variants/rak11200/variant.h b/variants/rak11200/variant.h index 0962d4f45..569f8f9de 100644 --- a/variants/rak11200/variant.h +++ b/variants/rak11200/variant.h @@ -59,11 +59,11 @@ static const uint8_t SCK = 33; // https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13300/ -#define LORA_DIO0 -1 // a No connect on the SX1262/SX1268 module -#define LORA_RESET WB_IO4 // RST for SX1276, and for SX1262/SX1268 -#define LORA_DIO1 WB_IO6 // IRQ for SX1262/SX1268 -#define LORA_DIO2 WB_IO5 // BUSY for SX1262/SX1268 -#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262/SX1268, if DIO3 is high the TXCO is enabled +#define LORA_DIO0 RADIOLIB_NC // a No connect on the SX1262/SX1268 module +#define LORA_RESET WB_IO4 // RST for SX1276, and for SX1262/SX1268 +#define LORA_DIO1 WB_IO6 // IRQ for SX1262/SX1268 +#define LORA_DIO2 WB_IO5 // BUSY for SX1262/SX1268 +#define LORA_DIO3 RADIOLIB_NC // Not connected on PCB, but internally on the TTGO SX1262/SX1268, if DIO3 is high the TXCO is enabled #undef RF95_SCK #define RF95_SCK SCK @@ -75,10 +75,9 @@ static const uint8_t SCK = 33; #define RF95_NSS SS #define USE_SX1262 -#define SX126X_CS (SS)// NSS for SX126X -#define SX126X_DIO1 (LORA_DIO1) -#define SX126X_BUSY (LORA_DIO2) -#define SX126X_RESET (LORA_RESET) -#define SX126X_TXEN (-1) -#define SX126X_RXEN (WB_IO3) +#define SX126X_CS SS// NSS for SX126X +#define SX126X_DIO1 LORA_DIO1 +#define SX126X_BUSY LORA_DIO2 +#define SX126X_RESET LORA_RESET +#define SX126X_POWER_EN WB_IO3 #define SX126X_E22 // DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3