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

DNS geht, was habt Ihr denn alle… ! B)

>>> import usocket
>>> usocket.dnsserver(0,'9.9.9.9')
>>> usocket.dnsserver()
('9.9.9.9', '0.0.0.0')
>>> print(usocket.getaddrinfo("weather.hiveeyes.org", 80)[0][-1])
('46.4.251.67', 80)

klappte gerade mit @wtf’s FiPy.


Manchmal klebt es:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 202] EAI_FAIL

update: der EAI error kommt u.a. dann, wenn als zweiter DNS server bogus eingetragen ist (0.0.0.0) , die Dinger werden alternierend abgefragt - daher mußte er dort abbrechen.

Der Fehler kommt auch, wenn man nicht attached und connected ist! ;)

3 Likes

rocknroll… d.h. der ‘bug’ ist nicht das nutzen von dns an sich (waer auch komisch, iss ja nur udp) sondern das vom ‘netz’ kein nameserver gesetzt wird %-) … also DAS ist einfach zu fixen :) (solange man nicht bei vd2 ist , die offenbar in uk dns auf alle ausser ihre server filtern)

1 Like

Finde nicht das Ich /Wir das falsch verstanden haben, sondern die Anbieter solcher Karten. Die wirklich großen wie die Autoindustrie haben bereits schon ihre Lösung durch Sonderverträge und dergleichen. Der Mittelstand und die kleinen Krauter haben wie immer das Nachsehen. Ach ja und genau dafür würde NB1 gerade Anfangs ja beworben.

finde ich auch das DNS kein must have ist. Finde nur eher blöd, wenn mann da auf einem Anbieter und ein Portal dazwischen ausgebremst wird, das man zusätzlich evtl auch noch umständlich konfigurieren und sich alles andere danach verbiegen muss.

Ist auch noch sehr begrenzt in der Bandbreite, eine Nachricht darf nur 12 Byte haben und es dürfen pro Tag nur 140 Nachrichten verschickt werden. Geht daher eher nur für sehr wenige Sensoren oder Status und Fehlermeldungen. Ach ja und wider so ein Blödes unübersichtliches Portal was die Daten weiterverteilen soll. Der einzige Vorteil den Sigfox hat ist das wir mit dem FiPy eine Jahreslizenz for Free haben.

wenn der krauter keinen openvpn aufgesetzt bekommt sollte er vielleicht kein b2b produkt kaufen. das ist in dem fall eine echt niedrige huerde.

und ich seh da genau garkeinen zielgruppenfehler auf seiten von carriern wie 1nce.
das ist fuer menschen die wissen wie die technologie funktioniert die pro kunde tausende sims brauchen. rent-a-netzbetreiber. ist doch super. einfacher geht nicht.
kundensupport pro sim ist dann der job desjenigen der das produkt verteilt. und das kann hier ja ab der ersten sim jeder sein. dafuer bekommt man ja das webinterface (fuers reinschnuppern) und die api (um das dann in die eigene plattofrm zu integrieren.
deswegen kann man auch simkarten per api bestellen usw.

d.h. der unbedarfte der mitspielen will kauft nicht bei 1nce die sim sondern beim plattformbetreiber… also z.b. uns?

normalerweise bekommt man so tollen zugriff auf ein gsmnetz nur wenn man einen sehr teuren vertrag und ein paar (zig)tausend sims minimum braucht.
das hat dann monate vorlaufzeit und tunnels fuer sowas sind idr ipsec und brauchen diverse lange telcos ueber mehrere wochen zum aufsetzen.

das als ‘ich bestell was im webshop’ zu retargeten ist schon extrem positiv fuer uns.

ich bin jedenfalls bisher positiv ueberrascht. naja… more classy hosting als amazon waere schick, aber sonst faellt mir echt keine kritik ein. das ist echt selten fuer mich im kontext carrier! ;)

2 Likes

Na also. Irgendwie sowas dachte ich mir schon. Merci fürs ausprobieren!

Yeah!

https://www.youtube.com/watch?v=U7_vNpVXubA

Putting "class SQNS" into your boot.py will give you a "sq" shorthand to the REPL. Use it like

>>> sq.info()
>>> sq.firmware_info()
>>> sq.at('showphy')
>>> sq.raw('AT+CLAC')

to save many characters and typos when exploring the innards of the modem interactively.

class SQNS
class SQNS:
    """
    
    Synopsis::
    
        sq = SQNS()
        sq.info()
        sq.firmware_info()
        
        sq.at('showphy')
        sq.raw('AT+CLAC')
    """

    def __init__(self):
        from network import LTE
        self.lte = LTE()
        self.at('RRC:setDbgPerm full')

    def at(self, command):
        self.raw('AT!="{}"'.format(command))

    def raw(self, command):
        print('Sending command {}'.format(command))
        print(self.lte.send_at_cmd(command))

    def info(self):
        # https://forum.pycom.io/topic/4022/unable-to-update-gpy-modem-firmware/8
        self.at('AT')
        self.at('ATI')
        self.at('ATZ')

    def firmware_info(self):
        import sqnsupgrade
        sqnsupgrade.info(verbose=True, debug=True)

    def unbrick(self):
        raise NotImplementedError('https://forum.pycom.io/topic/4022/unable-to-update-gpy-modem-firmware/21')

global sq
sq = SQNS()
2 Likes

There really are two commands for ending the connection:

lte.detach()
lte.dettach()

Both work the same way, but as ‘dettach’ is ‘going berzerk’, this only could result from a typo in the code - and yes, there is some hint to it (see the comment after the 2nd, the ‘dettach’):

2 Likes

So true. I believe this already has been discussed on the Pycom Forum somewhere. I also believe it has already been fixed in the development releases of the Pycom firmwares.

1 Like

Another two gems worth mentioning here…


1 Like

Unsure if we posted this already. Just for the sake of completeness and for all who are interested in lowlevel things like that…

Voice-over-LTE (as mentioned on the cover) … mentioning this just in case somebody wants to transmit audio … there might be a chance, but I guess only within a Cat-M1-network, not within the NB-IoT spec.

1 Like

From page 293 ff. of https://nimbelink.com/Documentation/Skywire/4G_LTE_Cat_M1/1001799_NL-SW-LTE-SVZM20-B_AT_COMMAND_MANUAL.pdf.

VoLTE or PPP Related Commands

12. VoLTE or PPP Related Commands

12.1 Dial Number ATD

12.1.1 Syntax

ATD<num>[;]

Possible Response: <status>

ATD*99[*[<called_address>][*[<L2P>][*[<cid>]]]]#

Possible Responses:

CONNECT
NO CARRIER
ERROR
+CME ERROR:<err>

12.1.2 Description

ATD is used to set up outgoing voice call.The syntax ATD*99# causes the MT to perform whatever actions are necessary to establish a communication between the TE and the external PDN. See also 12.2 Setup PPP Connection ATD*99 on page 273.

12.1.3 Defined Values

  • num
    String of dialing digits and optional V.250 modifiers: 0-9, *, #, +, A, B, C, D and p.

  • status
    String. Result of the command.

    Value Description
    OK Call successfully dial and start to ring back
    BUSY MT side busy
    NO CARRIER No network
  • called_address
    String. IP V4 address in the form w.x.y.z, which identifies the called party; if it is provided, the MT will automatically set up a virtual call to the spec-ified address after the context has been activated. This parameter is currently not used and needs not to be specified.

  • L2P
    String. Layer 2 protocol to be used between the TE and MT.

T{a,i}ming the communication

This discussion is about whether modem communication can be made quicker which might be of interest for us.

From the Pycom user forum again:

People asking themselves whether such a scenario would work on the Pycom devices:

Connect a device on the FiPy WiFi AP that routes the data to an IoT server using the Sequans IoT modem.

They received an answer from Pycom support which is stating it might not be possible at all:

Just FYI.

Das ist ebenfalls ein sehr interessanter Beitrag (mit Lösungsvorschlag) aus dem Pycom Forum.

Schon etwas ältere news von PyCom, erst heute gelesen: https://pycom.io/product/fipy/

New FiPy with upgraded calibration.

IMPORTANT NOTE: As of December 2019, all our cellular products have been recalibrated and screened on all 17 bands with a vastly improved RF test system to guarantee more stable connectivity, lower power consumption and faster network attachment.
New specialised equipment and software from Rhode & Schwarz enables us to do more precise measurements during the calibration process. This enhances RF sensitivity and thus signal quality especially in areas with poor cellular coverage while reducing output power during transmit to improve battery performance.

1 Like

Das ist auch sehr interessant:

Ende März 2020 kamen hier einige Verbesserungen rund um LTE hinzu – allen voran “LTE: Add API for Power Saving Mode”.

Comparing 20cc45c...89b5292 · pycom/pycom-micropython-sigfox · GitHub.