Pygate - ethernet reliability issues



  • @Gijs My issue seems to be related to ethernet communication. I don't seem to have the same issue using wifi for communication (and power from POE). Have tried two different brands of switch (ubnt + cisco) with same results with eventual ethernet drop out.

    I believe both switches saw the POE module as 10FDX if that makes any difference.


  • Global Moderator

    Hi,
    I believe the issue is not heat related (I just tested the Pygate (with the lora concentrator disabled)) and PyEthernet. Applied heat with a heatgun and checked the ping times. I was not able to find any differences, with heat applied of about 100*C.

    Now I did some further testing, and sometimes pings are not getting through with the Gateway enabled or disabled. I cannot seem to reproduce the case of @tronto Where the ping times significantly increase after a few timeouts.

    Pings are generally <10ms on our network, with few going above that..

    Also, I see no relation in the lost pings compared to the Pygate dropping any lora packets, but please do let us know of your findings!

    Btw @schmelpe, you mention OTAA not joining being a known Pygate problem, could you elaborate? I believe the issue you are referring to has to do with frequency plan settings not being in sync..

    Best,
    Gijs



  • @peterp Using a pygate lora gateway. Attached is a photo of ping results from local network using dhcp and POE+ ethernet. Happens every time. Disabled lora gateway and trying with WIFI (powered via POE) to narrow it down. Will follow up.

    Screen Shot 2020-08-13 at 12.06.36 PM.png



  • @jcaron I found an interesting thing.....

    DHCP Lease is set to 8 hours on my router.

    • During my tests yesterday, my Pygate stops answering to a PING after 1 or 2 minutes after powering up the device (remember, it runs 15 days or so 24/7 and was really hot). Yesterday afternoon I disconnected the Pygate because one of my Sensors didn't Join via OTAA (a known PyGate problem).

    • This morning I powerded up the PyGate again (ca. 29°C room temperature) and the PyGate always answers to a PING.

    ##########################################
    ### PyGate powerded up in "cold" condition
    ##########################################
    PS C:\WINDOWS\system32> date
    
    Wednesday, August 12, 2020 12:05:15 PM
    
    PS C:\WINDOWS\system32> ping 192.168.1.5
    
    Pinging 192.168.1.5 with 32 bytes of data:
    Reply from 192.168.1.5: bytes=32 time=6ms TTL=255
    Reply from 192.168.1.5: bytes=32 time=2ms TTL=255
    Reply from 192.168.1.5: bytes=32 time=2ms TTL=255
    Reply from 192.168.1.5: bytes=32 time=2ms TTL=255
    
    Ping statistics for 192.168.1.5:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 2ms, Maximum = 6ms, Average = 3ms
    PS C:\WINDOWS\system32> date
    
    ##########################################
    ### PyGate is in "warm/hot" condition
    ##########################################
    PS C:\WINDOWS\system32> date
    
    Wednesday, August 12, 2020 12:21:35 PM
    
    PS C:\WINDOWS\system32> ping 192.168.1.5
    
    Pinging 192.168.1.5 with 32 bytes of data:
    Reply from 192.168.1.5: bytes=32 time=76ms TTL=255
    Request timed out.
    Request timed out.
    Request timed out.
    
    Ping statistics for 192.168.1.5:
        Packets: Sent = 4, Received = 1, Lost = 3 (75% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 76ms, Maximum = 76ms, Average = 76ms
    
    PS C:\WINDOWS\system32> date
    
    Wednesday, August 12, 2020 12:26:08 PM
    
    
    PS C:\WINDOWS\system32> ping 192.168.1.5
    
    Pinging 192.168.1.5 with 32 bytes of data:
    Reply from 192.168.1.5: bytes=32 time=843ms TTL=255
    Request timed out.
    Reply from 192.168.1.5: bytes=32 time=421ms TTL=255
    Request timed out.
    
    Ping statistics for 192.168.1.5:
        Packets: Sent = 4, Received = 2, Lost = 2 (50% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 421ms, Maximum = 843ms, Average = 632ms
    PS C:\WINDOWS\system32>
    

    As you can see, the PyGate starts stop responding to a PING request when it becomes warm/hot...

    But, the connection to TTN is working and refreshes every 30 seconds. Only PING is no longer working.
    Don't know how to figure out the problem.

    Hope this helps
    Peter



  • @schmelpe given the timeframes announced by several people (hours or days) I was wondering if maybe there was a link with DHCP lease times or something similar. But if you see issues after a few minutes, unless your DHCP leases are extremely short, that’s probably not the culprit.

    Is the “stops pinging after a few minutes” repeatable? Is it always the same time/number of pings? Are you pinging from a box on the same network or a different one?



  • Hi,
    ok. I can confirm that the PyGate with WiPy3 stops responding to PING requests a few minutes after startup with PoE.
    But I can't confirm that the PyGate didn't work anymore. The Gateways status within the TTN Console is updated every 30 Seconds or so for the last 15 days.

    Hope this helps
    Peter


  • Global Moderator

    @thinginnovations said in Pygate - ethernet reliability issues:

    @peterp Pygate is the lora gateway!

    Sure. I was trying to suggest steps to narrow down the problem.

    I.e., establish an eth connection and use it continuously for some up/downloads, but do NOT use the gateway functionality. Is the connection stable? If yes, then the counter test could be gateway over WiFi.



  • I've changed the LoPy4 for a WiPy3, still using POE Ethernet for backhaul to The Things Network. It barely lasts overnight.



  • @peterp Pygate is the lora gateway!


  • Global Moderator

    @tronto said in Pygate - ethernet reliability issues:

    @thinginnovations I'm having a similar issue that you describe. Unit powers up fine, and after a period of time (30 min~) the latency from a ping increases dramatically (1ms to 1000ms) and the unit loses connectivity fully and has to be power cycled to respond again.

    Is this with or without lora gateway? Can you reproduce it without gateway? Is it happening once, sometimes, always? Is it with POE or just Ethernet?



  • @thinginnovations I'm having a similar issue that you describe. Unit powers up fine, and after a period of time (30 min~) the latency from a ping increases dramatically (1ms to 1000ms) and the unit loses connectivity fully and has to be power cycled to respond again.



  • Lopy4 here buy got a wipy 3 on order as I need the lopy4 elsewhere



  • I'm using the WiPy 3.0 with PyGate.



  • Hi,
    I cannot confirm your problem.
    For me, the Pygate with PoE has been working correctly for several days.
    Unfortunately you do not specify which board you use on the PyGate, so only a few general tips:

    • Is the firmware on the board up to date and did you select PyGate in the firmware programming tool?

    • Did you cut off the pins of the RJ45 socket on the bottom of the PoE module to prevent shortcuts with the heatsink?

    • Maybe your PyGate or PoE module is defective. In this case, please contact sales@pycom.io.

    Here is my code that works with Ethernet:
    boot.py

    # boot.py -- run on boot-up
    import machine
    import pycom
    
    # We want to save a little bit power
    # Disable Heartbeat LED
    pycom.heartbeat_on_boot(False)
    # Disable WIFI completely
    pycom.wifi_on_boot(False)
    # Proceed with main.py
    machine.main('main.py')
    

    main.py

    from network import ETH
    from machine import RTC
    import time
    import machine
    import pycom
    
    # Define callback function for Pygate events
    def machine_cb (arg):
        evt = machine.events()
        if (evt & machine.PYGATE_START_EVT):
            # Green
            pycom.rgbled(0x103300)
        elif (evt & machine.PYGATE_ERROR_EVT):
            # Red
            pycom.rgbled(0x331000)
        elif (evt & machine.PYGATE_STOP_EVT):
            # RGB off
            pycom.rgbled(0x000000)
    
    # register callback function
    machine.callback(trigger = (machine.PYGATE_START_EVT | machine.PYGATE_STOP_EVT | machine.PYGATE_ERROR_EVT), handler=machine_cb)
    
    # Connect to Ethernet Network
    eth = ETH()
    eth.ifconfig(config=('172.17.1.5','255.255.255.0','172.17.1.1','172.17.1.1'))
    
    while not eth.isconnected():
        time.sleep(1)
    
    print("")
    print("ETH Connection established")
    
    # Sync time via NTP server for GW timestamps on Events
    rtc = RTC()
    rtc.ntp_sync(server="0.de.pool.ntp.org")
    
    # Read the GW config file from Filesystem
    fp = open('/flash/config.json','r')
    buf = fp.read()
    
    # Start the Pygate
    machine.pygate_init(buf)
    

    Hope this helps, best regards
    Peter


Log in to reply
 

Pycom on Twitter