Skip to content

Conversation

@weebl2000
Copy link

@weebl2000 weebl2000 commented Dec 19, 2025

I was experiencing very bad RX with my heltec v4 so I investigated and debugged.

**UPDATE 23/12/2025, latest findings **

The original implementation had incorrect understanding of the GC1109 FEM control pins. GPIO46 was incorrectly treated as a TX/RX switch, but it's actually the CPS (PA mode select) pin. The actual TX/RX path switching is handled by DIO2 → CTX directly on the PCB.

GC1109 Control Logic (from datasheet)

Mode CSD (GPIO2) CTX (DIO2) CPS (GPIO46)
Shutdown 0 X X
Receive LNA 1 0 X (don't care)
Transmit bypass 1 1 0 (~1dB loss)
Transmit PA 1 1 1 (full PA)

Pin Mapping

Define GPIO GC1109 Pin Function
P_LORA_PA_POWER 7 - VFEM_Ctrl - Powers GC1109 LDO
P_LORA_PA_EN 2 CSD (pin 4) Chip enable (HIGH=on)
P_LORA_PA_TX_EN 46 CPS (pin 5) PA mode (HIGH=full PA, LOW=bypass)
- DIO2 CTX (pin 6) TX/RX path (automatic via SX126X_DIO2_AS_RF_SWITCH)

Summary of Changes

HeltecV4Board.cpp

  • CPS toggling in callbacks: onBeforeTransmit() sets CPS=HIGH for full PA mode, onAfterTransmit() sets CPS=LOW
  • Deep sleep: Hold all three FEM pins (PA_POWER, PA_EN, PA_TX_EN) to maintain RX wake capability
  • Wake-up: Release holds with rtc_gpio_hold_dis() for all pins

platformio.ini

  • Removed SX126X_RXEN and SX126X_TXEN - these caused a conflict where both RadioLib and our callbacks tried to control GPIO46
  • Kept SX126X_DIO2_AS_RF_SWITCH=true - this is correct and handles CTX (TX/RX path) automatically

How It Works Now

  1. TX/RX path switching: Handled automatically by SX1262 DIO2 → GC1109 CTX (hardware)
  2. PA mode selection: Handled by our callbacks toggling GPIO46 (CPS)
    - HIGH before TX → full PA enabled (+30dB internal, attenuated to ~+11dB net)
    - LOW after TX → ready for RX (CPS is "don't care" in RX mode)
  3. Power sequencing: GPIO7 (LDO) → GPIO2 (CSD) → GPIO46 (CPS) per datasheet requirement

UPDATE 23/12/2025

Thoroughly reviewed against the GC1109 datasheet and WiFi_LoRa_32_V4.2.pdf. The same fix has been applied to Heltec Tracker V2 which uses the identical GC1109 FEM (CSD on GPIO4 instead of GPIO2).

Turns out everything handling the LNA/PA is completely fine, the only problem was the SX1262 boosted gain was enabled. If you disable this the RX is golden. 🥇

UPDATE 23/12/2025

Having tested this myself I see excellent results with RX. Apart from that, multiple people have tested the firmware and notice a big improvement in being able to receive signals.

UPDATE 24/12/2025
Some users reported bootloop, this was probably caused by holding pin 46. We shouldn't hold that pin so removed that.

Update 2: avoid touching CPS pin at all unless we want to TX.

firmware to test, with latest changes 24/12/2025 - should fix bootloop issues

a8463655cfa23522c5bb93f3dae69746d642034149b79b7103b9f217850e53af  heltec_tracker_v2_main+RX_fix_companion_radio_ble.bin
e50e7a9d8987802382d09d8e1ca2ca738c8ca0dbfd9e31d65b4a54254a2b302d  heltec_tracker_v2_main+RX_fix_repeater.bin
5877ecca96c036ecdf4c1e2e74b1f2c4a3b45c25a65ff05c7c9aa855719421f8  heltec_v4_main+RX_fix_companion_radio_ble.bin
f5aebe63b2159b522768c9ef590bd30ae5a511e65f4c83dfa906a9b2e8782eb1  heltec_v4_main+RX_fix_repeater.bin

@fschrempf
Copy link
Contributor

According to @jbrazio here, it depends on the antenna whether RX boosted gain is benefitial or not. So if you disable it, it might help you but make things worse for others. If that's true, then we should leave this as is an go for the solution in #1164.

@weebl2000 weebl2000 force-pushed the heltec_v4_fix_RX_sensitivity branch from 7dcc916 to d84784e Compare December 19, 2025 18:56
@weebl2000
Copy link
Author

According to @jbrazio here, it depends on the antenna whether RX boosted gain is benefitial or not. So if you disable it, it might help you but make things worse for others. If that's true, then we should leave this as is an go for the solution in #1164.

Yeah maybe, I haven't tested with a lot of antennas yet. There's definitely something funky going on with the PA/LNA and the RX gain though.

@weebl2000 weebl2000 force-pushed the heltec_v4_fix_RX_sensitivity branch from d84784e to dcfea36 Compare December 19, 2025 19:58
@weebl2000
Copy link
Author

According to @jbrazio here, it depends on the antenna whether RX boosted gain is benefitial or not. So if you disable it, it might help you but make things worse for others. If that's true, then we should leave this as is an go for the solution in #1164.

It'

According to @jbrazio here, it depends on the antenna whether RX boosted gain is benefitial or not. So if you disable it, it might help you but make things worse for others. If that's true, then we should leave this as is an go for the solution in #1164.

Yeah maybe, I haven't tested with a lot of antennas yet. There's definitely something funky going on with the PA/LNA and the RX gain though.

@fschrempf It gets more tricky. But I think we actually might just need to set SX126X_DIO2_AS_RF_SWITCH=false since we are handling the TX/RX mode on the PA/LNA. But I am getting variying results with improvements or not. I will try running tests for longer to really see a difference 👀

@weebl2000
Copy link
Author

weebl2000 commented Dec 20, 2025

Updated with latest finding. I have tested for limited time but RX is heaps better, so others please do test!

The root cause was that RadioLib didn't know about the external GC1109
RF switch. Without the SX126X_RXEN/TXEN definitions, RadioLib never
called setRfSwitchPins(), so it couldn't automatically manage PA_TX_EN
during RX/TX transitions.
@weebl2000 weebl2000 force-pushed the heltec_v4_fix_RX_sensitivity branch from bc5e4be to 044505d Compare December 20, 2025 17:43
@weebl2000 weebl2000 changed the title Disable SX126X_RX_BOOSTED_GAIN for Heltec v4 Fix GC1109 FEM LNA being used for Heltec v4 RX Dec 20, 2025
@weebl2000
Copy link
Author

weebl2000 commented Dec 20, 2025

@dt267
Copy link

dt267 commented Dec 21, 2025

Screenshot 2025-12-21 152807

@perry99
Copy link

perry99 commented Dec 21, 2025

I was asked to build the firmware, here you go for ble companion and repeater

The repeater is also a companion firmware:-(

@weebl2000
Copy link
Author

Oops let me check

@weebl2000
Copy link
Author

I was asked to build the firmware, here you go for ble companion and repeater

The repeater is also a companion firmware:-(

Try now. Same URL.

sha256sum *bin
14f0617247fb9599d66e2f93796dbca628f82a0f0b4590b548eba18f10eac134  heltec_v4_main+RX_fix_companion_radio_ble.bin
41fa50ff5d1dd33bdd6367d6ebbcee2df464ac650717a27897caa195a7b103e3  heltec_v4_main+RX_fix_repeater.bin

@perry99
Copy link

perry99 commented Dec 21, 2025

I was asked to build the firmware, here you go for ble companion and repeater

The repeater is also a companion firmware:-(

Try now. Same URL.

sha256sum *bin
14f0617247fb9599d66e2f93796dbca628f82a0f0b4590b548eba18f10eac134  heltec_v4_main+RX_fix_companion_radio_ble.bin
41fa50ff5d1dd33bdd6367d6ebbcee2df464ac650717a27897caa195a7b103e3  heltec_v4_main+RX_fix_repeater.bin

Thank you!

@weebl2000 weebl2000 force-pushed the heltec_v4_fix_RX_sensitivity branch from 683ac76 to 2736011 Compare December 21, 2025 11:43
@Heronimonimo
Copy link

For those running the observer uplink firmware, there is a version to test compiled with this fix: https://discord.com/channels/1343693475589263471/1417491962675593296/1452383493295439903

Running that here but don't see a significant difference yet.

@weebl2000
Copy link
Author

weebl2000 commented Dec 21, 2025

For those running the observer uplink firmware, there is a version to test compiled with this fix: https://discord.com/channels/1343693475589263471/1417491962675593296/1452383493295439903

Running that here but don't see a significant difference yet.

For observer firmware, if you never enable the TX path I would guess the LNA stays properly enabled and you wouldn't see much difference.

If I kept TX low always I also saw great reception with the current firmware. Only after sending once would the RX deteriorate.

@Heronimonimo
Copy link

For those running the observer uplink firmware, there is a version to test compiled with this fix: https://discord.com/channels/1343693475589263471/1417491962675593296/1452383493295439903
Running that here but don't see a significant difference yet.

For observer firmware, if you never enable the TX path I would guess the LNA stays properly enabled and you wouldn't see much difference.

If I kept TX low always I also saw great reception with the current firmware. Only after sending once would the RX deteriorate.

Observers are repeater firmware with mqtt uplink. So they do use TX a lot. Will keep monitoring the effect on my repeater.

@weebl2000
Copy link
Author

For those running the observer uplink firmware, there is a version to test compiled with this fix: https://discord.com/channels/1343693475589263471/1417491962675593296/1452383493295439903
Running that here but don't see a significant difference yet.

For observer firmware, if you never enable the TX path I would guess the LNA stays properly enabled and you wouldn't see much difference.
If I kept TX low always I also saw great reception with the current firmware. Only after sending once would the RX deteriorate.

Observers are repeater firmware with mqtt uplink. So they do use TX a lot. Will keep monitoring the effect on my repeater.

Ah okay. Only easy way to test is having two devices next to each other or otherwise testing with nodes at the edge of your reach.

@Quency-D
Copy link
Contributor

@fschrempf It gets more tricky. But I think we actually might just need to set SX126X_DIO2_AS_RF_SWITCH=false since we are handling the TX/RX mode on the PA/LNA. But I am getting variying results with improvements or not. I will try running tests for longer to really see a difference 👀

The definition SX126X_DIO2_AS_RF_SWITCH=false seems problematic because it requires controlling the CTX pin to ensure proper transmit/receive switching. The PA_TX_EN (CPS) pin is only for controlling transmit bypass.
image

@weebl2000 weebl2000 changed the title Fix GC1109 FEM LNA being used for Heltec v4 RX 🔧 Fix GC1109 FEM LNA being used for Heltec v4 RX Dec 22, 2025
@dt267
Copy link

dt267 commented Dec 23, 2025

Screenshot 2025-12-23 080804

This is the way I fixed V4'LNA problem, bypassed it.

@Quency-D
Copy link
Contributor

Screenshot 2025-12-23 080804 This is the way I fixed V4'LNA problem, bypassed it.

Did you use a flying wire? How did the test go?

@dt267
Copy link

dt267 commented Dec 23, 2025

IMG_6925
Two weeks ago, running fine up to now, one repeater and one companion

@weebl2000
Copy link
Author

IMG_6925 Two weeks ago, running fine up to now, one repeater and one companion

Would be interesting to see if you can notice a difference with the fixed firmware and no bypass vs the bypass.

@dt267
Copy link

dt267 commented Dec 23, 2025

basically, there is no firmware fixed way

@weebl2000
Copy link
Author

Easiest way to test is to have two devices side-by-side, one with old and one with new firmware. Then look at RX log to see number of packets coming in.

Okay, thank you!

Digged deeper, and made some changes. I think the logic is sound now. GPIO 46 was treated as a TX/RX switch, but it's not. It's simply CPS (PA mode select, low=bypass, high=full PA TX). DIO2 switch on the CX1262 chip is handling the TX/RX path automatically, so we shouldn't be messing with it ourselves.

Updated the PR to reflect this.

@stgruenbaum-hash
Copy link

I was experiencing very bad RX with my heltec v4 so I investigated and debugged.

**UPDATE 23/12/2025, latest findings **

The original implementation had incorrect understanding of the GC1109 FEM control pins. GPIO46 was incorrectly treated as a TX/RX switch, but it's actually the CPS (PA mode select) pin. The actual TX/RX path switching is handled by DIO2 → CTX directly on the PCB.

GC1109 Control Logic (from datasheet)

Mode CSD (GPIO2) CTX (DIO2) CPS (GPIO46)
Shutdown 0 X X
Receive LNA 1 0 X (don't care)
Transmit bypass 1 1 0 (~1dB loss)
Transmit PA 1 1 1 (full PA)
Pin Mapping

Define GPIO GC1109 Pin Function
P_LORA_PA_POWER 7 - VFEM_Ctrl - Powers GC1109 LDO
P_LORA_PA_EN 2 CSD (pin 4) Chip enable (HIGH=on)
P_LORA_PA_TX_EN 46 CPS (pin 5) PA mode (HIGH=full PA, LOW=bypass)

  • DIO2 CTX (pin 6) TX/RX path (automatic via SX126X_DIO2_AS_RF_SWITCH)
    Summary of Changes

HeltecV4Board.cpp

  • CPS toggling in callbacks: onBeforeTransmit() sets CPS=HIGH for full PA mode, onAfterTransmit() sets CPS=LOW
  • Deep sleep: Hold all three FEM pins (PA_POWER, PA_EN, PA_TX_EN) to maintain RX wake capability
  • Wake-up: Release holds with rtc_gpio_hold_dis() for all pins

platformio.ini

  • Removed SX126X_RXEN and SX126X_TXEN - these caused a conflict where both RadioLib and our callbacks tried to control GPIO46
  • Kept SX126X_DIO2_AS_RF_SWITCH=true - this is correct and handles CTX (TX/RX path) automatically

How It Works Now

  1. TX/RX path switching: Handled automatically by SX1262 DIO2 → GC1109 CTX (hardware)
  2. PA mode selection: Handled by our callbacks toggling GPIO46 (CPS)
    • HIGH before TX → full PA enabled (+30dB internal, attenuated to ~+11dB net)
    • LOW after TX → ready for RX (CPS is "don't care" in RX mode)
  3. Power sequencing: GPIO7 (LDO) → GPIO2 (CSD) → GPIO46 (CPS) per datasheet requirement

UPDATE 23/12/2025

Thoroughly reviewed against the GC1109 datasheet and WiFi_LoRa_32_V4.2.pdf. The same fix has been applied to Heltec Tracker V2 which uses the identical GC1109 FEM (CSD on GPIO4 instead of GPIO2).

Turns out everything handling the LNA/PA is completely fine, the only problem was the SX1262 boosted gain was enabled. If you disable this the RX is golden. 🥇

UPDATE 23/12/2025

Having tested this myself I see excellent results with RX. Apart from that, multiple people have tested the firmware and notice a big improvement in being able to receive signals.

firmware to test, with latest changes 23/12/2025

08e00ec138a2fd4b0f2f7197060509a27e8ead6aa7bc4c00707d2231a345c793  heltec_tracker_v2_main+RX_fix_companion_radio_ble.bin
a7fbca1849f11f1c418e0d2a986274fc23784f902581e0e0623da523e663129a  heltec_tracker_v2_main+RX_fix_repeater.bin
b6e206c60883814cf59d323c095f8924f2c15df3fb613bb70037b45a8eac02cf  heltec_v4_main+RX_fix_companion_radio_ble.bin
ac58eb0ea5aa6bafae67ead70e12a8bc04641455ada60c9f250aa51ac0961f49  heltec_v4_main+RX_fix_repeater.bin

@stgruenbaum-hash
Copy link

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

@weebl2000
Copy link
Author

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

@stgruenbaum-hash
Copy link

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

@weebl2000
Copy link
Author

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:

7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

@weebl2000
Copy link
Author

PXL_20251223_233439461
Flashed the firmware and repeater is OK.

@stgruenbaum-hash
Copy link

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:

7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

@weebl2000
Copy link
Author

weebl2000 commented Dec 23, 2025

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:
7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

Do you see the meshcore logo when it boots or does it die before that?

If the official firmware still works: what are your tx settings? (mainly tx power)

@stgruenbaum-hash
Copy link

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:
7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

Do you see the meshcore logo when it boots or does it die before that?

Screen keeps black. Just hear my USB-Port disconnecting, connecting, disconnecting, connectiong, ...

@weebl2000
Copy link
Author

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:
7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

Do you see the meshcore logo when it boots or does it die before that?

Screen keeps black. Just hear my USB-Port disconnecting, connecting, disconnecting, connectiong, ...

Can you check on a different USB power supply? Or perhaps different USB cable to make sure it's not a low-power issue.

@stgruenbaum-hash
Copy link

stgruenbaum-hash commented Dec 23, 2025

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:
7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

Do you see the meshcore logo when it boots or does it die before that?

Screen keeps black. Just hear my USB-Port disconnecting, connecting, disconnecting, connectiong, ...

Can you check on a different USB power supply? Or perhaps different USB cable to make sure it's not a low-power issue.

Ok, tried both. Different cable and port -> Same behaviour. Flashing back to official firmware also worked well with old cable and old port. Have to go off for today. Sometimes, best ideas arise from dreaming ;-)

@weebl2000
Copy link
Author

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:
7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

Do you see the meshcore logo when it boots or does it die before that?

Screen keeps black. Just hear my USB-Port disconnecting, connecting, disconnecting, connectiong, ...

Can you check on a different USB power supply? Or perhaps different USB cable to make sure it's not a low-power issue.

Ok, tried both. Different cable and port -> Same behaviour. Flashing back to official firmware also worked well with old cable and old port. Have to go off for today. Sometimes, best ideas arise from dreaming ;-)

👍🏽 let me know if you have more time to troubleshoot, seems like an interesting find!

@IoTThinks
Copy link

IoTThinks commented Dec 24, 2025

@weebl2000 Love the fix and your debug process.
How is the signal performance (TX/RX) of your fix for Heltec v4 at 22dBm/29dBm compared to an original firmware at 22dBm?

I'm getting a Heltec v4 now, so I'm a bit worried.

@weebl2000
Copy link
Author

@weebl2000 Love the fix and your debug process. How is the signal performance (TX/RX) of your fix for Heltec v4 at 22dBm/29dBm compared to an original firmware at 22dBm?

I'm getting a Heltec v4 now, so I'm a bit worried.

RX is very much improved with this fix!

@stgruenbaum-hash
Copy link

sha256sum

Tried to flash this H4 firmware for Repeater, finished with success but ends in a booting loop. Got back to official firmware and tried again this custom firmware but unfortunatelly same behaviour.

That's strange. Can you verify the sha256sum?

Yes, verified. It is correct.

I've just rebuilt to make sure it's the correct one. Can you download again (incognito window to make sure), new sum:
7e03e9183c8eaf88fd4ffa87705f6858f463c30690811d794ecbc64149755129 heltec_v4_main+RX_fix_repeater.bin

Sorry, unfortunatelly on my device same behaviour. Tried it twice. Flashing is successfull. But after pressing RST Button I am in a boot loop.

Do you see the meshcore logo when it boots or does it die before that?

Screen keeps black. Just hear my USB-Port disconnecting, connecting, disconnecting, connectiong, ...

Can you check on a different USB power supply? Or perhaps different USB cable to make sure it's not a low-power issue.

Ok, tried both. Different cable and port -> Same behaviour. Flashing back to official firmware also worked well with old cable and old port. Have to go off for today. Sometimes, best ideas arise from dreaming ;-)

👍🏽 let me know if you have more time to troubleshoot, seems like an interesting find!

Of course, I will try again as soon as have my next free timeslot, maybe tonight. I also now have a second V4 for testing purpose and will try to flash it. Maybe it is/was a Hardware-Issue. Let me know which feedback and details you need.

@weebl2000
Copy link
Author

👍🏽 let me know if you have more time to troubleshoot, seems like an interesting find!

Of course, I will try again as soon as have my next free timeslot, maybe tonight. I also now have a second V4 for testing purpose and will try to flash it. Maybe it is/was a Hardware-Issue. Let me know which feedback and details you need.

I think I've found the problem. We were holding pin 46 (connected to CPS on GC1109) during sleep, but that might cause issues when booting. It shouldn't be held anyway because the LNA doesn't care for CPS state during receive. Built new images, same links.

@stgruenbaum-hash
Copy link

I think I've found the problem. We were holding pin 46 (connected to CPS on GC1109) during sleep, but that might cause issues when booting. It shouldn't be held anyway because the LNA doesn't care for CPS state during receive. Built new images, same links.

Flashed with new custom firmware.
ab3d7db01d3d0279afc0a91bb6157cf252e6d0e0fde1f04d826b3a8eb36b0bd3
Both v4 devices. Unfortunatelly again boot loop.

Set pinmode output/input too to make sure
@weebl2000
Copy link
Author

I think I've found the problem. We were holding pin 46 (connected to CPS on GC1109) during sleep, but that might cause issues when booting. It shouldn't be held anyway because the LNA doesn't care for CPS state during receive. Built new images, same links.

Flashed with new custom firmware. ab3d7db01d3d0279afc0a91bb6157cf252e6d0e0fde1f04d826b3a8eb36b0bd3 Both v4 devices. Unfortunatelly again boot loop.

Made some more changes, now not touching pin 46 at all unless we want to TX. Working locally. Built it and updated the images + hashes.

@stgruenbaum-hash
Copy link

Made some more changes, now not touching pin 46 at all unless we want to TX. Working locally. Built it and updated the images + hashes.

Still no change after flashing. Again boot loop.

@weebl2000
Copy link
Author

weebl2000 commented Dec 24, 2025

Made some more changes, now not touching pin 46 at all unless we want to TX. Working locally. Built it and updated the images + hashes.

Still no change after flashing. Again boot loop.

I've created a build that enables debug and waits 15 seconds before doing anything so you can attach to the serial monitor.

Can you try flashing this https://x230.weebl.me/public/heltec_v4_repeater_debug_boot.bin and then attaching serial right after booting? You can use any serial monitor, like meshcore/meshtastic web flasher.

image

Hopefully that helps narrow down the problem.

@stgruenbaum-hash
Copy link

stgruenbaum-hash commented Dec 24, 2025

Can you try flashing this https://x230.weebl.me/public/heltec_v4_repeater_debug_boot.bin and then attaching serial right after booting? You can use any serial monitor, like meshcore/meshtastic web flasher.

image Hopefully that helps narrow down the problem.

Thank you for investing so much time in helping me.

I flashed with your firmware and tried to connect serial. Unfortunatelly, there is not much time because between connect and disconnect there are only 1 - 2 seconds. But anyway I think this was a good idea. Looks like flashed file is not OK because SHA-256 comparison failed.

This is what Serial console shows until disconnect:


Welcome to MeshCore serial console.
Click on the cursor to get all supported commands.

load:0x4037d238,len:0x8ccc
load:0x4037d238,len:0x8ccc
load:0x600fe000,len:0x2c
SHA-256 comparison failed:
Calculated: d489b00f98bdb389316a2b0673e0a5a2bd6b2d270514a4ecbcc737e957bb79c5
Expected: 73a51bd00e8508fbbc61dfd66f8f8a0f8642c268d462bfe66d1a9f8aa49df3cc
Attempting to boot anyway...
entry 0x403771a4
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x7 (TG0WDT_SYS_RST),boot:0x28 (SPI_FAST_FLASH_BOOT)
Saved PC:0x403743c0
SPIWP:0xee
mode:DIO, clock div:1
load:0x3c0c0020,len:0x41334

*** Terminal disconnected: NetworkError: The device has been lost.

Is there maybe a generel problem in the way I try to load custom firmware? I use option "custom firmware" of Meshcore Webflasher and choose the downloaded file. That's all.

@weebl2000
Copy link
Author

*** Terminal disconnected: NetworkError: The device has been lost.

Is there maybe a generel problem in the way I try to load custom firmware? I use option "custom firmware" of Meshcore Webflasher and choose the downloaded file. That's all.

Can you try erasing the ESP fully before flashing? (maybe backup your private key first using get prv.key command)

You can use esptool

esptool.py --chip esp32s3 erase_flash

@stgruenbaum-hash
Copy link

stgruenbaum-hash commented Dec 24, 2025

Can you try erasing the ESP fully before flashing? (maybe backup your private key first using get prv.key command)

You can use esptool

esptool.py --chip esp32s3 erase_flash

Don't have Python installed. Is there also another way before I go installing it??

I did chose "Erase Flash" every time I used the Webflasher for this custom firmware. Isn't this the same?
Flashing back to offical Community Meshcore Heltec V4 works well.

Btw. after flashing again now Console shows this. No problem with SHA256 comparison.


Welcome to MeshCore serial console.
Click on the cursor to get all supported commands.

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x7 (TG0WDT_SYS_RST),boot:0x28 (SPI_FAST_FLASH_BOOT)
Saved PC:0x400454e9
SPIWP:0xee
mode:DIO, clock div:1
load:0x3c0c0020,len:0x41334
ets_loader.c 79
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x7 (TG0WDT_SYS_RST),boot:0x28 (SPI_FAST_FLASH_BOOT)
Saved PC:0x400454e9
SPIWP:0xee
mode:DIO, clock div:1
load:0x3c0c0020,len:0x41334

*** Terminal disconnected: NetworkError: The device has been lost.

@JvM-nl
Copy link

JvM-nl commented Dec 24, 2025

@stgruenbaum-hash
Why not try it a little different.
Install the main version and setup after that is runiing just upgrade without Erase Flash

Just to figureout if it helps

@stgruenbaum-hash
Copy link

@stgruenbaum-hash Why not try it a little different. Install the main version and setup after that is runiing just upgrade without Erase Flash

Just to figureout if it helps

This works !!!! Thank you very much for this hint! Great, will flash roof-top v4 next day and see if RX will get better. Thank you all for your support.

@JvM-nl
Copy link

JvM-nl commented Dec 24, 2025

Now its the question for @weebl2000 why a fresh install not work. Maybe generate keys. No idea I hope you/he will find

@JvM-nl
Copy link

JvM-nl commented Dec 24, 2025

Last version with sha256sum f5aebe63b2159b522768c9ef590bd30ae5a511e65f4c83dfa906a9b2e8782eb1 works very nice here.
After a short test I see neighbours stronger signals from far - are now almost 0.
I hope more people will test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants