Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy

Die sind in Köln, und von Köln und 10 EUR für 10 Jahre hatte @Ron auch was gesagt.

jop, die Karten von 1nce gibts leider nur für jemanden mit Umsatzsteuer. bei uns halt über die Uni.

1 Like

@tonke @clemens bezüglich der Pycom Module ist der Stand bei uns gerade, dass wir das noch nicht zum laufen gebracht haben. Erst muss man überhaupt die nb-iot firmware auf das sequans-Modul aufspielen um dann festzustellen, dass Band 8 noch nicht unterstützt wird.

Bei den neueren Pycom Modulen (ich denke mal so ab Anfang 2019) geht das jetzt aber wohl, da die eine neue core-firmware auf das sequans-Modul geschrieben haben, die auch Band 8 unterstützt. Wir wollen diese Woche das noch versuchen…

:edit
Haben jetzt Band 8 auf dem brandneu bestellten GPY Sequans Modul zum laufen gebracht, aber noch keine Verbindung zum Telekomnetz aufbauen können. AT+COPS schlägt noch fehl… wir arbeiten dran ;-)

2 Likes

@tonke hat nun auch welche in den Fingern, danke @Basti!

image

@Ron: Nun fragen wir uns natürlich, ob Ihr mit der Erschließung an dieser Stelle vielleicht schon weitergekommen seid und haben gleichzeitig ein paar Fragen.

  • Habt Ihr irgendwelche allgemeinen Tipps (außer “Unbedingt Antenne anschließen, sonst gehts kaputt!”) an uns, sobald wir uns dem Thema nähern?
  • Mit welchen Firmwarerevisionen (Pycom + Sequans) seid Ihr bei Euch in die Tests gegangen?

Bei Pycom gab es vor zwei Wochen ein Update bei der LTE Dokumentation (siehe diff).

Gerade die Signatur der lte.attach() Methode ist jetzt entweder deutlich reichhaltiger oder zumindest nun ordentlich dokumentiert worden.


lte.attach(*, band=None, apn=None, cid=None, type=LTE.IP, legacyattach=True)

Enable radio functionality and attach to the LTE network authorised by the inserted SIM card. Optionally specify:

  • band : to scan for networks. If no band (or None ) is specified, all 8 bands will be scanned. The possible values for the band are: 3, 4, 5, 8, 12, 13, 20 and 28 .
  • apn : Specify the APN (Access point Name).
  • cid : connection ID, see LTE.connect() . when the ID is set here it will be remembered when doint connect so no need to specify again
  • type : PDP context type either LTE.IP or LTE.IPV4V6 . These are options to specify PDP type ‘Packet Data protocol’ either IP [Internet Protocol] or IPV4V6 ver4,6 , that depends actually on what does the Network support.
  • legacyattach : When kept = True the API LTE.isattached() will return True when attached to the Network AND Network registration status is home or roaming, when flag is False, API LTE.isattached() will return True when attached to the Network only.

Vielleicht hilft das ja Euch beiden weiter, @Ron und @tonke.

4 posts were split to a new topic: Netzabdeckung LTE

Introduction

@Ron and @tonke: robert-hh on the Pycom Forum just said…

I can confirm that band 8 [in Germany with 1nce] works for me. The first attach took like forever (> 10 Minutes, long when you wait for it), but now it attaches after a power cycle within 10-20 seconds. Still slow compared to my other LTE module, which attaches immediately, unless it had been offline for days.

https://forum.pycom.io/topic/4678/gpy-valueerror-band-8-not-supported-by-this-board-hardware/2

Details

There’s also an announcement about a Stable Firmware Release v1.18.2.r4 | Pycom user forum (9 days ago) featuring these aspects which might be relevant for operating with LTE:

There are

Also new Sequans Firmwares for CAT-M1 [41065] and NB-IoT [41019] [are] available.

Besides the latest stable release v1.18.2.r4, the most recent development release v1.20.0.rc9 should also be fine.

Resources

Todo

1 Like

Was hast du denn versucht? [edit] CAT 1 CAT M1 oder NB IoT? Hier steht, dass NB IoT noch nicht unterstützt wird:

https://www.az-delivery.de/products/sim-karte-thingsmobile

Bei New Firmware Release Candidate v1.20.0 | Pycom user forum ff. gibt es einige interessante Dinge nachzulesen, die u.U. Rückschlüsse zulassen, warum es mit jeweils aktuellen Firmwares zum jeweiligen Zeitpunkt u.U. nicht funktioniert haben kann.

Please note there might still be dragons.

Still, I believe it’s getting better overall and the modem might finally be usable in Germany already. @here: Are our pre-flight testers still with us?

News from the trenches. Completely unsorted and unscanned. Just for your reference and quick access to what is currently happening upstream on this topic.

Just to let you know things are still in flux here – also on the carrier side.

1 Like

Wenn wir Pech haben müssen wir die Module nochmal einschicken um bestimmte Bänder freizuschalten

https://forum.pycom.io/topic/3843/important-news-regarding-cat-m1-and-nb-iot-cellular-range/8

@rskoniec @Eric-Waai No, you can’t upgrade it yourself. The band information is written in an area on the modem that can only be overwritten with a production programmer and proprietary software. It is the same modem as the previous modules

Dass es die Möglichkeit gibt, dass unsere Module übers RMA müssen, wenn wir das LTE-Modem nutzen wollen, ist schon eine zeitlang bekannt. @tonke hat glaube ich auch schon einmal versucht, das RMA-Verfahren einzuleiten, ich kenne jedoch nicht den aktuellen Stand.

Vielleicht können wir das genauer prüfen und möglichst früh mit den verbleibenden Modulen das RMA-Verfahren einleiten, falls nötig.

Recap

Introduction

There are discussions about whether the FiPy modules in our hands already support Band 8, which is assumed to be required for attaching to the Telekom network through iot.1nce.net in Germany.

Details

After the discussion at Important update regarding LTE modem updates | Pycom user forum dropped off in October 2018, @robert-hh reported success around March 2019, which we already cited above, see also Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy - #32 by Andreas.

More details

When inspecting some modules on my desktop, it appears they are running the most recent CATM1-39529 firmware for the Sequans Modem to support CAT-M1.

If you want to switch to NB1 or upgrade to more recent firmware versions, Introduction will be the right place to follow.

DIY

We will outline some AT commands picked up from the Pycom Forum to enable you checking details with your modem. We are currently running

Pycom MicroPython 1.20.0.rc11 [v1.9.4-0a38f88] on 2019-05-14; FiPy with ESP32

First, check into a REPL.

$ make repl

Then, execute some Python commands.

Check modem capabilities

from network import LTE
lte = LTE()
lte.send_at_cmd('AT!="RRC:setDbgPerm full"')
print(lte.send_at_cmd('AT!="RRC:showcaps"'))

Output

== CAPS ====================================

  . access stratum: R13
  . catM          : 1
  . nb-IoT        : 0

-- EUTRA bands --
  . supported     : 28/20/13/12/8/5/4/3
  . board         : 3/4/5/8/12/13/20/28

So, this module well supports band 8, as lte.attach(band=8, apn="iot.1nce.net") also invokes without croaking. Otherwise, you might receive things like

>>> lte.attach(band=8, apn="iot.1nce.net")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: band 8 not supported

Check modem firmware version I

print(lte.send_at_cmd('AT!="showver"'))

Output

SYSTEM VERSION
==============
  FIRMWARE VERSION
    Bootloader0* : 5.1.1.0 [39529]
    Bootloader1  : NA
    Bootloader2  : NA
    NV Info      : 1.1,0,0
    Software     : 5.1.1.0 [39529] by robot-soft at 2018-09-28 16:07:40
    UE           : 5.0.0.0d
  COMPONENTS
    ZSP0         : 1.0.99-13616
    ZSP1         : 1.0.99-12355

OK

Check modem firmware version I

Also, this is the information presented by sqnsupgrade:

>>> import sqnsupgrade
>>> sqnsupgrade.info()

Output

<<< Welcome to the SQN3330 firmware updater [1.2.5] >>>
>>> FiPy with firmware version 1.20.0.rc11
Your modem is in application mode. Here is the current version:
UE5.0.0.0d
LR5.1.1.0-39529

IMEI: {redacted}

This output means that the modem is effectively running firmware CATM1-39529, which seems to be the most recent one for CAT-M1 as of 2019-07-17, see also Introduction.

Conclusion

Band 8 seems to be supported by the current configuration of the specific devices on my desktop, at least for CAT-M1. If CAT-NB1 would be the way to follow, we should revisit this.

2 Likes

@robert-hh and also others confirm everything should work with the newest board and the newest firmware.

But also, the hardware thing still holds true:

For me, it is actually reading “FiPy V1.2” – so all should be good if all FiPys around us come from the same batch already.

Please also be aware that

1 Like

Some more commands…

from network import LTE
lte = LTE()
lte.send_at_cmd('AT!="RRC:setDbgPerm full"')

Modem info

# Display DL SYNCHRO STATISTICS and SYSTEM FSM information
print(lte.send_at_cmd('AT!="showphy"'))
print(lte.send_at_cmd('AT!="fsm"'))

LTE driver appears to be stopped? | Pycom user forum

AT-based help

# Display list of supported AT commands
print(lte.send_at_cmd('AT+CLAC'))

# Display list of all Sequans specific commands
print(lte.send_at_cmd('AT!="help"'))

# How to use the AT-based help
print(lte.send_at_cmd('AT!="help help"'))

Important update regarding LTE modem updates | Pycom user forum

Examples

Some example commands at your service.

# Display network configuration
print(lte.send_at_cmd('AT!="ifconfig"'))

# Print network connections
print(lte.send_at_cmd('AT!="netstat"'))

# Show the system time
print(lte.send_at_cmd('AT!="showTime"'))

# Show the system logs
print(lte.send_at_cmd('AT!="showLogs"'))
print(lte.send_at_cmd('AT!="getLogs"'))
print(lte.send_at_cmd('AT!="printLogs"'))

# Print cpu information
print(lte.send_at_cmd('AT!="cpuinfo"'))

# Display memory status
print(lte.send_at_cmd('AT!="mem"'))

# Dump eCos tasks
print(lte.send_at_cmd('AT!="infoAllTask"'))

# List contents of directories in a tree-like format
print(lte.send_at_cmd('AT!="tree"'))

# Display current state
print(lte.send_at_cmd('AT!="state"'))

# Request to power on
print(lte.send_at_cmd('AT!="powerOn"'))

# Request to power off
print(lte.send_at_cmd('AT!="powerOff"'))

UCI options

>>> print(lte.send_at_cmd('AT!="help"'))

    UCI   show                   Show UCI options
    UCI   get                    Get UCI option
    UCI   set                    Set UCI option
    UCI   delete                 Delete UCI option

# Show UCI options
print(lte.send_at_cmd('AT!="UCI::show"'))

# Show value of specific UCI option
print(lte.send_at_cmd('AT!="UCI::get sqnsms.generic.moSmsType"'))

Moar

print(lte.send_at_cmd('AT!="CBE::showVersion"'))
print(lte.send_at_cmd('AT!="RRC::showCaps"'))
print(lte.send_at_cmd('AT!="L1P::getDebug"'))

External resources

1 Like