Deswegen die Frage ob es technisch irgendwie geht den Router bzw. die SIM-Karte zu "zwingen", sich mit der anderen mobilen Zelle zu verbinden.
Ja, das geht. Ich weiß die Frage ist schon älter, aber falls hier jemand das noch mal brauchen sollte..
Entweder unterstützt dein Mobilfunkgerät direkt diese Funktion, oder du musst direkten Zugriff aus das Mobilfunkmodem haben (virtueller serieller Port).
Es unterstützen auch nicht alle Mobilfunkmodems den sogenannten "Cell Lock".
Am Beispiel des Quectel BG96, ein LTE-M Mobilfunkmodem (beispielsweise verbaut im Teltonika TRM 250):
Zunächst schaut man erstmal, ob die serielle Verbindung funktioniert. Dafür sendet man ein
an das Modem. Anschließend die Enter Taste drücken. Hierfür lassen sich auf Linux Programme wie Screen nutzen.
Das Modem sollte das mit einem OK quittieren. Das bedeutet, dass das Modem bereit ist Befehle zu empfangen.
Weiter gehts. Nun prüft man ob das Modem überhaupt das Cell Locking unterstützt.
Folgenden AT Befehl nutzt man dafür. Hinweis: Dieser Befehl ist für Quectel Modems, bei anderen Modems kann das ganze leider ein anderer Befehl sein. Schreibt mich bei Fragen gerne an.
Solange dann nicht ERROR kommt sondern eine Auflistung darüber wie man den Befehl benutzt ist alles gut. Dann unterstützt das Modem die Funktion.
Weiter gehts. Jetzt setzt man das Modem auf LTE Only. Ich weiß leider nicht wie es bei 5G Modems funktioniert. Falls das jemanden interessiert, schreibt mich gerne an, ich finde es dann heraus.
Jetzt werden vom Modem nur noch LTE Netzwerke gesucht. Die 3 steht für LTE only (eine 1 steht für GSM only, eine 0 setzt es wieder zurück). Die 1 am Ende steht dafür, dass die Änderung sofort in Kraft tritt.
Jetzt schaut man sich erst einmal an mit welcher Zelle man verbunden ist.
Es sollte dann so eine Antwort zurückkommen wie:
+QENG: "servingcell","NOCONN","CAT-M","FDD",262,01,2ABCD01,24,6400,20,3,3,2EFA,-95,-10,-68,11,30
2ABCD01 ist die Cell ID im hexadezimalen Format. 24 ist die PCI (Physical Cell ID). 6400 ist die LTE EARFCN. Mit dieser Zahl wird die genaue LTE Frquenz bestimmt.
Nun gibt man den entscheidenden Befehl ein:
AT+QNWLOCK="common/lte",2,<EARFCN>,<PCI>
Das Modem sollte das mit einem OK quittieren.
Nun ist das Modem bis zum nächsten Neustart auf die Mobilfunkzelle gelockt.
Es ist sogar möglich die EARFCN und PCI von cellmapper zu erfahren. Dann kann man sich auf der Karte einfach die gewünschte Zelle aussuchen und conencted dann dahin.
So sieht das dann aus wenn man erfolgreich die Zelle locked. Ich hab mich mal zu einer weiter entfernten Zelle verbunden:
root@arcardyware:~# echo -e "AT+QNWLOCK=\"common/4g\",1,6400,194\r" | socat - /dev/ttyUSB3,raw,echo=0,crnl
AT+QNWLOCK="common/4g",1,6400,194
root@arcardyware:~# echo -e "AT+QENG=\"SERVINGCELL\"\r" | socat - /dev/ttyUSB3,raw,echo=0,crnl
+CREG: 1,"2EE1","1A8B602",8
+QENG: "servingcell","CONNECT","CAT-M","FDD",262,01,1A8B602,194,6400,20,3,3,2EE1,-96,-14,-65,9,-
Alles anzeigen
Wie man nach dem Servingcell Command sieht, bin ich nun mit der gewünschten Zelle (Einem dicken Brummer der Telekom mit der PCI 194 und EARFCN 6400) verbunden. Klappt!