Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. Linux gateway don't receive Ack

Linux gateway don't receive Ack

Scheduled Pinned Locked Moved Troubleshooting
16 Posts 5 Posters 1.7k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F freynder

    @mfalkvidd said in Linux gateway don't receive Ack:

    @freynder internaltorssi will convert the internal value to rssi. So I don’t think that’s the case.

    Yes, that's my point. Both values in the comparison are in internal format so the comparison should be RSSI_internal < LIMIT_internal.

    Suppose an excellent RSSI: -30dbI . RSSI_internal = 60
    Limit is -95dbi. LIMIT_internal = 190
    so 60 < 190
    The function will return false although RSSI is excellent.

    mfalkviddM Offline
    mfalkviddM Offline
    mfalkvidd
    Mod
    wrote on last edited by mfalkvidd
    #7

    @freynder but if RSSI is excellent, it means someone else must be sending and the channel isn't free. So maybe the correct value is returned anyway in your calculation example (but the comparison is still strange)

    F 1 Reply Last reply
    0
    • mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by mfalkvidd
      #8

      If the code was refactored like this I think it would do exactly the same thing, but it would be easier to follow:

      LOCAL bool RFM69_channelFree(void)
      {
      	// returns true if channel activity under RFM69_CSMA_LIMIT_DBM
      	const int16_t RSSI = RFM69_internalToRSSI(RFM69_readRSSI());
      	RFM69_DEBUG(PSTR("RFM69:CSMA:RSSI=%" PRIi16 "\n"), RSSI);
      	return (RSSI <= MY_RFM69_CSMA_LIMIT_DBM);
      }
      
      F 1 Reply Last reply
      0
      • mfalkviddM mfalkvidd

        If the code was refactored like this I think it would do exactly the same thing, but it would be easier to follow:

        LOCAL bool RFM69_channelFree(void)
        {
        	// returns true if channel activity under RFM69_CSMA_LIMIT_DBM
        	const int16_t RSSI = RFM69_internalToRSSI(RFM69_readRSSI());
        	RFM69_DEBUG(PSTR("RFM69:CSMA:RSSI=%" PRIi16 "\n"), RSSI);
        	return (RSSI <= MY_RFM69_CSMA_LIMIT_DBM);
        }
        
        F Offline
        F Offline
        freynder
        wrote on last edited by
        #9

        @mfalkvidd said in Linux gateway don't receive Ack:

        If the code was refactored like this I think it would do exactly the same thing, but it would be easier to follow:

        LOCAL bool RFM69_channelFree(void)
        {
        	// returns true if channel activity under RFM69_CSMA_LIMIT_DBM
        	const int16_t RSSI = RFM69_internalToRSSI(RFM69_readRSSI());
        	RFM69_DEBUG(PSTR("RFM69:CSMA:RSSI=%" PRIi16 "\n"), RSSI);
        	return (RSSI <= MY_RFM69_CSMA_LIMIT_DBM);
        }
        

        I think the comparsion should be > in this case. (e.g. -30 > -95)

        rozpruwaczR 1 Reply Last reply
        0
        • F freynder

          @mfalkvidd said in Linux gateway don't receive Ack:

          If the code was refactored like this I think it would do exactly the same thing, but it would be easier to follow:

          LOCAL bool RFM69_channelFree(void)
          {
          	// returns true if channel activity under RFM69_CSMA_LIMIT_DBM
          	const int16_t RSSI = RFM69_internalToRSSI(RFM69_readRSSI());
          	RFM69_DEBUG(PSTR("RFM69:CSMA:RSSI=%" PRIi16 "\n"), RSSI);
          	return (RSSI <= MY_RFM69_CSMA_LIMIT_DBM);
          }
          

          I think the comparsion should be > in this case. (e.g. -30 > -95)

          rozpruwaczR Offline
          rozpruwaczR Offline
          rozpruwacz
          wrote on last edited by
          #10

          @freynder no, the function is correct. Before sending the rssi value read by this function should be lower than treshold -80dbm is not lower than - 95dbm. You should get rssi reprted around - 100dbm in this function but for some reason you have higher values.

          F 1 Reply Last reply
          0
          • rozpruwaczR rozpruwacz

            @freynder no, the function is correct. Before sending the rssi value read by this function should be lower than treshold -80dbm is not lower than - 95dbm. You should get rssi reprted around - 100dbm in this function but for some reason you have higher values.

            F Offline
            F Offline
            freynder
            wrote on last edited by
            #11

            @rozpruwacz

            Ok, I must be missing something then. You say that the rssi should be around -100dbm for the channel to be clear? So lower is better for checking channel clearance? I thought higher was better.

            rozpruwaczR 1 Reply Last reply
            0
            • F freynder

              @rozpruwacz

              Ok, I must be missing something then. You say that the rssi should be around -100dbm for the channel to be clear? So lower is better for checking channel clearance? I thought higher was better.

              rozpruwaczR Offline
              rozpruwaczR Offline
              rozpruwacz
              wrote on last edited by
              #12

              @freynder yes, the lower the better. You may be confused by this because the rssi is "Received Signal Strength Indication" so the higher the better, but in this function this indicator is used to check that nothing is receiving

              F 1 Reply Last reply
              0
              • rozpruwaczR rozpruwacz

                @freynder yes, the lower the better. You may be confused by this because the rssi is "Received Signal Strength Indication" so the higher the better, but in this function this indicator is used to check that nothing is receiving

                F Offline
                F Offline
                freynder
                wrote on last edited by
                #13

                @rozpruwacz Ok, got it now. Thank you very much.

                1 Reply Last reply
                0
                • mfalkviddM mfalkvidd

                  @freynder but if RSSI is excellent, it means someone else must be sending and the channel isn't free. So maybe the correct value is returned anyway in your calculation example (but the comparison is still strange)

                  F Offline
                  F Offline
                  freynder
                  wrote on last edited by
                  #14

                  @mfalkvidd said in Linux gateway don't receive Ack:

                  @freynder but if RSSI is excellent, it means someone else must be sending and the channel isn't free. So maybe the correct value is returned anyway in your calculation example (but the comparison is still strange)

                  Indeed you were right. I had a wrong understanding on how RSSI was measured. It appears to be an indication of "the amount of energy available within the receiver channel bandwidth", so if nobody is sending it will be low.

                  1 Reply Last reply
                  0
                  • scalzS Offline
                    scalzS Offline
                    scalz
                    Hardware Contributor
                    wrote on last edited by scalz
                    #15

                    And for newcomers, about rfm69 channel free, it helps to avoid some collisions, but this function+automatic powertransmit tuning helps to be better at FCC compatibility. RFM69 can go up to +20 dBm so it could create some mess in air..
                    FCC is related to

                    • hardware. Still, you can buy a fcc module but as soon as you place it on a custom board, so not exact same shape as manufacturer, FCC is not valid anymore. FCC is tested with specific manufacturer design, and when you change shape and layout of pcb, rf is not same as before, so FCC not ok ;)
                    • and software. You can have a FCC device, but if rf stack in framework don't check channel free etc then it's not FCC too
                    1 Reply Last reply
                    1
                    • D Offline
                      D Offline
                      diogoc
                      wrote on last edited by
                      #16

                      Ok, I understand now that the modules are measuring the noise signal strenght before sending someting.
                      Apparently the noise level is high, but with the other gateway I get low values.
                      It seems to be the linux gateway that is generating the noise ???
                      The RFM69 is powered by a separated LDO and capacitors, so I don't think it is a power supply problem.

                      The RFM69 linux driver is the same that arduino RFM69 driver? Could be some missing register parameterization?

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      18

                      Online

                      11.7k

                      Users

                      11.2k

                      Topics

                      113.0k

                      Posts


                      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • MySensors
                      • OpenHardware.io
                      • Categories
                      • Recent
                      • Tags
                      • Popular