Skip to content
This repository was archived by the owner on Sep 10, 2024. It is now read-only.
This repository was archived by the owner on Sep 10, 2024. It is now read-only.

Pytrack 1.0 I2C initialization errors with LoPy4 #136

Description

@danalvarez

Hello,

I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

(sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

Traceback (most recent call last):
File "main.py", line 34, in <module>
File "/flash/lib/pycoproc_1.py", line 115, in __init__
File "/flash/lib/pycoproc_1.py", line 115, in __init__
Exception: Board not detected: I2C bus error
Traceback (most recent call last):
File "main.py", line 34, in <module>
File "/flash/lib/pycoproc_1.py", line 118, in __init__
File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
File "/flash/lib/pycoproc_1.py", line 134, in _write
OSError: I2C bus error
Tracback (most recent call last):
File "main.py", line 6, in <module>
File "/flash/lib/pytrack.py", line 68, in __init__
File "/flash/lib/pytrack.py", line 110, in poke_memory
File "/flash/lib/pytrack.py", line 75, in _write
OSError: I2C bus error

If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

For example, when running this code:

# See https://docs.pycom.io for more information regarding library specifics
import time
from pytrack import Pytrack
from L76GNSS import L76GNSS
pydone = False
while not pydone:
try:
print("trying to initialize Pytrack...")
py = Pytrack()
pydone = True
print("Pytrack init success!")
except Exception as e:
print(e)
time.sleep(2)
l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
while True:
print(l76.coordinates())

I get this output:

trying to initialize Pytrack...
I2C bus error
trying to initialize Pytrack...
I2C bus error
trying to initialize Pytrack...
I2C bus error
trying to initialize Pytrack...
Pytrack init success!
(None, None)
(None, None)
(None, None)

Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

20210308_174137

Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

20210308_175004

Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

Best,
Dan

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
    Skip to content
    This repository was archived by the owner on Sep 10, 2024. It is now read-only.
    This repository was archived by the owner on Sep 10, 2024. It is now read-only.

    Pytrack 1.0 I2C initialization errors with LoPy4 #136

    Description

    @danalvarez

    Hello,

    I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

    (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

    Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

    Traceback (most recent call last):
    File "main.py", line 34, in <module>
    File "/flash/lib/pycoproc_1.py", line 115, in __init__
    File "/flash/lib/pycoproc_1.py", line 115, in __init__
    Exception: Board not detected: I2C bus error
    
    Traceback (most recent call last):
    File "main.py", line 34, in <module>
    File "/flash/lib/pycoproc_1.py", line 118, in __init__
    File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
    File "/flash/lib/pycoproc_1.py", line 134, in _write
    OSError: I2C bus error
    
    Tracback (most recent call last):
    File "main.py", line 6, in <module>
    File "/flash/lib/pytrack.py", line 68, in __init__
    File "/flash/lib/pytrack.py", line 110, in poke_memory
    File "/flash/lib/pytrack.py", line 75, in _write
    OSError: I2C bus error
    

    If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

    For example, when running this code:

    # See https://docs.pycom.io for more information regarding library specifics
    import time
    from pytrack import Pytrack
    from L76GNSS import L76GNSS
    pydone = False
    while not pydone:
    try:
    print("trying to initialize Pytrack...")
    py = Pytrack()
    pydone = True
    print("Pytrack init success!")
    except Exception as e:
    print(e)
    time.sleep(2)
    l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
    while True:
    print(l76.coordinates())
    

    I get this output:

    trying to initialize Pytrack...
    I2C bus error
    trying to initialize Pytrack...
    I2C bus error
    trying to initialize Pytrack...
    I2C bus error
    trying to initialize Pytrack...
    Pytrack init success!
    (None, None)
    (None, None)
    (None, None)
    

    Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

    I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

    20210308_174137

    Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

    20210308_175004

    Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

    Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

    Best,
    Dan

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      No labels
      No labels

      Type

      No type

      Projects

      No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
      Skip to content
      This repository was archived by the owner on Sep 10, 2024. It is now read-only.
      This repository was archived by the owner on Sep 10, 2024. It is now read-only.

      Pytrack 1.0 I2C initialization errors with LoPy4 #136

      Description

      @danalvarez

      Hello,

      I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

      (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

      Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

      Traceback (most recent call last):
      File "main.py", line 34, in <module>
      File "/flash/lib/pycoproc_1.py", line 115, in __init__
      File "/flash/lib/pycoproc_1.py", line 115, in __init__
      Exception: Board not detected: I2C bus error
      
      Traceback (most recent call last):
      File "main.py", line 34, in <module>
      File "/flash/lib/pycoproc_1.py", line 118, in __init__
      File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
      File "/flash/lib/pycoproc_1.py", line 134, in _write
      OSError: I2C bus error
      
      Tracback (most recent call last):
      File "main.py", line 6, in <module>
      File "/flash/lib/pytrack.py", line 68, in __init__
      File "/flash/lib/pytrack.py", line 110, in poke_memory
      File "/flash/lib/pytrack.py", line 75, in _write
      OSError: I2C bus error
      

      If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

      For example, when running this code:

      # See https://docs.pycom.io for more information regarding library specifics
      import time
      from pytrack import Pytrack
      from L76GNSS import L76GNSS
      pydone = False
      while not pydone:
      try:
      print("trying to initialize Pytrack...")
      py = Pytrack()
      pydone = True
      print("Pytrack init success!")
      except Exception as e:
      print(e)
      time.sleep(2)
      l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
      while True:
      print(l76.coordinates())
      

      I get this output:

      trying to initialize Pytrack...
      I2C bus error
      trying to initialize Pytrack...
      I2C bus error
      trying to initialize Pytrack...
      I2C bus error
      trying to initialize Pytrack...
      Pytrack init success!
      (None, None)
      (None, None)
      (None, None)
      

      Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

      I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

      20210308_174137

      Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

      20210308_175004

      Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

      Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

      Best,
      Dan

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Type

        No type

        Projects

        No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
        Skip to content
        This repository was archived by the owner on Sep 10, 2024. It is now read-only.
        This repository was archived by the owner on Sep 10, 2024. It is now read-only.

        Pytrack 1.0 I2C initialization errors with LoPy4 #136

        Description

        @danalvarez

        Hello,

        I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

        (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

        Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

        Traceback (most recent call last):
        File "main.py", line 34, in <module>
        File "/flash/lib/pycoproc_1.py", line 115, in __init__
        File "/flash/lib/pycoproc_1.py", line 115, in __init__
        Exception: Board not detected: I2C bus error
        
        Traceback (most recent call last):
        File "main.py", line 34, in <module>
        File "/flash/lib/pycoproc_1.py", line 118, in __init__
        File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
        File "/flash/lib/pycoproc_1.py", line 134, in _write
        OSError: I2C bus error
        
        Tracback (most recent call last):
        File "main.py", line 6, in <module>
        File "/flash/lib/pytrack.py", line 68, in __init__
        File "/flash/lib/pytrack.py", line 110, in poke_memory
        File "/flash/lib/pytrack.py", line 75, in _write
        OSError: I2C bus error
        

        If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

        For example, when running this code:

        # See https://docs.pycom.io for more information regarding library specifics
        import time
        from pytrack import Pytrack
        from L76GNSS import L76GNSS
        pydone = False
        while not pydone:
        try:
        print("trying to initialize Pytrack...")
        py = Pytrack()
        pydone = True
        print("Pytrack init success!")
        except Exception as e:
        print(e)
        time.sleep(2)
        l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
        while True:
        print(l76.coordinates())
        

        I get this output:

        trying to initialize Pytrack...
        I2C bus error
        trying to initialize Pytrack...
        I2C bus error
        trying to initialize Pytrack...
        I2C bus error
        trying to initialize Pytrack...
        Pytrack init success!
        (None, None)
        (None, None)
        (None, None)
        

        Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

        I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

        20210308_174137

        Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

        20210308_175004

        Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

        Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

        Best,
        Dan

        Metadata

        Metadata

        Assignees

        No one assigned

          Labels

          No labels
          No labels

          Type

          No type

          Projects

          No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
          Skip to content
          This repository was archived by the owner on Sep 10, 2024. It is now read-only.
          This repository was archived by the owner on Sep 10, 2024. It is now read-only.

          Pytrack 1.0 I2C initialization errors with LoPy4 #136

          Description

          @danalvarez

          Hello,

          I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

          (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

          Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

          Traceback (most recent call last):
          File "main.py", line 34, in <module>
          File "/flash/lib/pycoproc_1.py", line 115, in __init__
          File "/flash/lib/pycoproc_1.py", line 115, in __init__
          Exception: Board not detected: I2C bus error
          
          Traceback (most recent call last):
          File "main.py", line 34, in <module>
          File "/flash/lib/pycoproc_1.py", line 118, in __init__
          File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
          File "/flash/lib/pycoproc_1.py", line 134, in _write
          OSError: I2C bus error
          
          Tracback (most recent call last):
          File "main.py", line 6, in <module>
          File "/flash/lib/pytrack.py", line 68, in __init__
          File "/flash/lib/pytrack.py", line 110, in poke_memory
          File "/flash/lib/pytrack.py", line 75, in _write
          OSError: I2C bus error
          

          If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

          For example, when running this code:

          # See https://docs.pycom.io for more information regarding library specifics
          import time
          from pytrack import Pytrack
          from L76GNSS import L76GNSS
          pydone = False
          while not pydone:
          try:
          print("trying to initialize Pytrack...")
          py = Pytrack()
          pydone = True
          print("Pytrack init success!")
          except Exception as e:
          print(e)
          time.sleep(2)
          l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
          while True:
          print(l76.coordinates())
          

          I get this output:

          trying to initialize Pytrack...
          I2C bus error
          trying to initialize Pytrack...
          I2C bus error
          trying to initialize Pytrack...
          I2C bus error
          trying to initialize Pytrack...
          Pytrack init success!
          (None, None)
          (None, None)
          (None, None)
          

          Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

          I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

          20210308_174137

          Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

          20210308_175004

          Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

          Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

          Best,
          Dan

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Type

            No type

            Projects

            No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
            Skip to content
            This repository was archived by the owner on Sep 10, 2024. It is now read-only.
            This repository was archived by the owner on Sep 10, 2024. It is now read-only.

            Pytrack 1.0 I2C initialization errors with LoPy4 #136

            Description

            @danalvarez

            Hello,

            I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

            (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

            Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

            Traceback (most recent call last):
            File "main.py", line 34, in <module>
            File "/flash/lib/pycoproc_1.py", line 115, in __init__
            File "/flash/lib/pycoproc_1.py", line 115, in __init__
            Exception: Board not detected: I2C bus error
            
            Traceback (most recent call last):
            File "main.py", line 34, in <module>
            File "/flash/lib/pycoproc_1.py", line 118, in __init__
            File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
            File "/flash/lib/pycoproc_1.py", line 134, in _write
            OSError: I2C bus error
            
            Tracback (most recent call last):
            File "main.py", line 6, in <module>
            File "/flash/lib/pytrack.py", line 68, in __init__
            File "/flash/lib/pytrack.py", line 110, in poke_memory
            File "/flash/lib/pytrack.py", line 75, in _write
            OSError: I2C bus error
            

            If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

            For example, when running this code:

            # See https://docs.pycom.io for more information regarding library specifics
            import time
            from pytrack import Pytrack
            from L76GNSS import L76GNSS
            pydone = False
            while not pydone:
            try:
            print("trying to initialize Pytrack...")
            py = Pytrack()
            pydone = True
            print("Pytrack init success!")
            except Exception as e:
            print(e)
            time.sleep(2)
            l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
            while True:
            print(l76.coordinates())
            

            I get this output:

            trying to initialize Pytrack...
            I2C bus error
            trying to initialize Pytrack...
            I2C bus error
            trying to initialize Pytrack...
            I2C bus error
            trying to initialize Pytrack...
            Pytrack init success!
            (None, None)
            (None, None)
            (None, None)
            

            Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

            I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

            20210308_174137

            Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

            20210308_175004

            Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

            Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

            Best,
            Dan

            Metadata

            Metadata

            Assignees

            No one assigned

              Labels

              No labels
              No labels

              Type

              No type

              Projects

              No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
              Skip to content
              This repository was archived by the owner on Sep 10, 2024. It is now read-only.
              This repository was archived by the owner on Sep 10, 2024. It is now read-only.

              Pytrack 1.0 I2C initialization errors with LoPy4 #136

              Description

              @danalvarez

              Hello,

              I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

              (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

              Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

              Traceback (most recent call last):
              File "main.py", line 34, in <module>
              File "/flash/lib/pycoproc_1.py", line 115, in __init__
              File "/flash/lib/pycoproc_1.py", line 115, in __init__
              Exception: Board not detected: I2C bus error
              
              Traceback (most recent call last):
              File "main.py", line 34, in <module>
              File "/flash/lib/pycoproc_1.py", line 118, in __init__
              File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
              File "/flash/lib/pycoproc_1.py", line 134, in _write
              OSError: I2C bus error
              
              Tracback (most recent call last):
              File "main.py", line 6, in <module>
              File "/flash/lib/pytrack.py", line 68, in __init__
              File "/flash/lib/pytrack.py", line 110, in poke_memory
              File "/flash/lib/pytrack.py", line 75, in _write
              OSError: I2C bus error
              

              If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

              For example, when running this code:

              # See https://docs.pycom.io for more information regarding library specifics
              import time
              from pytrack import Pytrack
              from L76GNSS import L76GNSS
              pydone = False
              while not pydone:
              try:
              print("trying to initialize Pytrack...")
              py = Pytrack()
              pydone = True
              print("Pytrack init success!")
              except Exception as e:
              print(e)
              time.sleep(2)
              l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
              while True:
              print(l76.coordinates())
              

              I get this output:

              trying to initialize Pytrack...
              I2C bus error
              trying to initialize Pytrack...
              I2C bus error
              trying to initialize Pytrack...
              I2C bus error
              trying to initialize Pytrack...
              Pytrack init success!
              (None, None)
              (None, None)
              (None, None)
              

              Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

              I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

              20210308_174137

              Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

              20210308_175004

              Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

              Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

              Best,
              Dan

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Type

                No type

                Projects

                No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Pytrack 1.0 I2C initialization errors with LoPy4 · Issue #136 · pycom/pycom-libraries · GitHub
                Skip to content
                This repository was archived by the owner on Sep 10, 2024. It is now read-only.
                This repository was archived by the owner on Sep 10, 2024. It is now read-only.

                Pytrack 1.0 I2C initialization errors with LoPy4 #136

                Description

                @danalvarez

                Hello,

                I have been attempting to use the Pytrack 1.0 with DFU 0.0.8 and a LoPy4 running the following firmware:

                (sysname='LoPy4', nodename='LoPy4', release='1.20.2.r0', version='v1.11-783192e on 2020-08-06', machine='LoPy4 with ESP32', lorawan='1.0.2', sigfox='1.0.1', pybytes='1.5.1')

                Unfortunately, initialization of the Pytrack module is spotty at best. I have used both the old pytrack.py library, as well as the pycoproc_1.py library. When I call either py=Pytrack() or py=Pycoproc(Pycoproc.PYTRACK), I keep getting I2C errors like these:

                Traceback (most recent call last):
                File "main.py", line 34, in <module>
                File "/flash/lib/pycoproc_1.py", line 115, in __init__
                File "/flash/lib/pycoproc_1.py", line 115, in __init__
                Exception: Board not detected: I2C bus error
                
                Traceback (most recent call last):
                File "main.py", line 34, in <module>
                File "/flash/lib/pycoproc_1.py", line 118, in __init__
                File "/flash/lib/pycoproc_1.py", line 173, in poke_memory
                File "/flash/lib/pycoproc_1.py", line 134, in _write
                OSError: I2C bus error
                
                Tracback (most recent call last):
                File "main.py", line 6, in <module>
                File "/flash/lib/pytrack.py", line 68, in __init__
                File "/flash/lib/pytrack.py", line 110, in poke_memory
                File "/flash/lib/pytrack.py", line 75, in _write
                OSError: I2C bus error
                

                If I add a while loop and try/except statements, the Pytrack sometimes initializes after several attempts, and then I am able to use the GPS module to get (lat,lon) coordinates. Basically, once it initializes it does not fail again, but the initialization is extremely difficult to achieve.

                For example, when running this code:

                # See https://docs.pycom.io for more information regarding library specifics
                import time
                from pytrack import Pytrack
                from L76GNSS import L76GNSS
                pydone = False
                while not pydone:
                try:
                print("trying to initialize Pytrack...")
                py = Pytrack()
                pydone = True
                print("Pytrack init success!")
                except Exception as e:
                print(e)
                time.sleep(2)
                l76 = L76GNSS(py, timeout = 60) # GSP timeout set to 60 seconds
                while True:
                print(l76.coordinates())
                

                I get this output:

                trying to initialize Pytrack...
                I2C bus error
                trying to initialize Pytrack...
                I2C bus error
                trying to initialize Pytrack...
                I2C bus error
                trying to initialize Pytrack...
                Pytrack init success!
                (None, None)
                (None, None)
                (None, None)
                

                Which shows that eventually the Pytrack is initialized and the GPS starts to work (eventually I get the correct coordinates instead of (None, None)).

                I attempted to read the I2C bus and I got two results. For an immediate initialization of the Pytrack, the SDA line looks like shown below. Note the very beginning seems to be the data sent to initialize the Pytrack and then we receive periodic data from the GPS.

                20210308_174137

                Then, a delayed initialization (in which the Pytrack only initializes after several attempts) looks like shown below. Note significant more data is sent on the SDA line before the line goes quiet and then the Pytrack initializes (which is shown by the periodic data pulses on the right of the image).

                20210308_175004

                Another thing that also happens is that sometimes the LoPy4 just hangs, without throwing any exceptions, and then only a power cycle works. This is mentioned in this thread already: https://forum.pycom.io/topic/5595/pytrack-i2c-causes-system-to-freeze

                Any ideas why the initialization of the Pytrack takes so many attempts? I have already tried to change the LoPy4 to no effect. I cannot change the Pytrack as it is the only module at my disposal.

                Best,
                Dan

                Metadata

                Metadata

                Assignees

                No one assigned

                  Labels

                  No labels
                  No labels

                  Type

                  No type

                  Projects

                  No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions