RUTX50 cell lock

Good day, i have router RUTX50 and i am setting LTE bands in Network // Mobile // General // SIM1 to B7, B32. Everything works fine, until after 12:00AM when my operator turns off some towers, and only B3 becomes active, turning all others of.

I could off-course add also B3 into LTE bands, but the problem is when i do that, almost always only B3 is activated during the day, but it is not the fastest tower. When i turn B7, B32 i get really good speeds, with perfect stability.

How can i set bands upon time? Can this be a feature added in future, can i do this somehow already?

So i want to activate LTE bands B7, B32 from 4:00AM-11:59PM, and B3 band from 12:00AM - 3:59AM?

Hi, as far as I know, there is no such a functionality in WebUI. Maybe you can figure something out using crontabs.

I have the same issue as you.

As you know, we cannot lock to a specific cell tower, nor schedule band settings from the webUI, but I think bands can be set using GSMCTL modem AT commands (see below link)…

You might be able to add the following to crontabs? I have no idea if this will work, or what settings needs to be configured in the webUI before running this. Test at your own risk :slight_smile:

ssh root@

vi /etc/crontabs/root
# set LTE B7 and B32 at 4AM daily
00 04 * * 0-6 gsmctl -A 'AT+QCFG=“band”,0,80000040,0,1'
# set LTE B3 at midnight daily 
00 00 * * 0-6 gsmctl -A 'AT+QCFG=“band”,0,4,0,1'

I have several other GSMCTL modem AT command scripts running on my RUTX50 – but not this particular one, nor in my crontabs. The necessary rabbithole entrance is here …


gsmctl -A 'AT+QCFG=“band”[,<bandval>,<ltebandval>,<tdsbandval>[,<effect>]]'

The headache I found was calculating the <ltebandval> for which I made a Google Sheets calculator, here:

LTE Band Value Calculator

And my post below tries to explain the concept of <ltebandval> as far as I understand it.

Some explanation of how to calculate <ltebandval>:

If we want to set bands B1, B5, and B16 then we would add those numbers together, as per the far right column of the attached image… so, 1 = 1, 5 = 10, and 16 = 8000, total sum of 8011 … So the AT command would be:

gsmctl -A 'AT+QCFG=“band”,0,8011,0,1'

Which – translating all of the value options – should switch the modem to LTE bands 1, 5, and 16 [8011], effective immediately [1], whilst leaving all other modem band settings unchanged [0] and [0].

And in your case @mvstkraw:
B7 and B32 = 40 + 80000000 = 80000040
B3 = 4

After some digging around I found this…

gsmctl -A 'AT+QNWPREFCFG="lte_band",7:32'

Which seems to be an updated way of assigning LTE bands for the RUTX50 modem. The settings are saved immediately however they don’t seem take effect until the modem is restarted.

A massive list of Quectel modem AT commands here (the RUTX50 uses an RG501Q-EU):

I only mention this as the command gsmctl -A 'AT+QCFG=“band” doesn’t appear in the current Quectel manual? As it returned ERROR when I tested it out. Perhaps @Daumantas has some insight here, my goto Teltonika guy for all things AT command related :slight_smile:

Wow! This looks promising. Can i simply put physical cell ID, and EARFCN accordingly? Would that also work? Asking because i have those values already?


There is no way to enter a physical cell ID

If one cell lock, I used command:

ubus call gsm.modem0 exec '{"command":"AT+QNWLOCK=\"common/4g\",1,EARFCN,PCI"}'

The modem supports locking on multiple cells, which is convenient for me when the main cell is turned off at night and then it is locked on another cell:

ubus call gsm.modem0 exec '{"command":"AT+QNWLOCK=\"common/4g\",2,EARFCN,PCI,EARFCN,PCI"}'

In layman’s terms, if B1 is turned on during the day, it will be locked to it, and when it is turned off, it will be locked to the next cell (eg B3).
The PCI parameter is useful because with it you lock to a specific tower.
There is a problem with cell lock - if it doesn’t find any cell from the AT lock command, the modem failback to 3G. You must then manually send an AT command that unlock the cell lock so that the modem will connect to any 4G cell in range:

ubus call gsm.modem0 exec '{"command":"AT+QNWLOCK=\"common/4g\",0"}'

These settings are not saved in the modem, the lock command must be repeated every time the modem is rebooted.
I’ve automated this by having my home web server run a scheduled PHP script in a cronjob that sends an AT command via CURL in JSON-RPC form 5 minutes after the router is scheduled to reboot again

That’s a great piece of info. Just digging thru the Teltonika pages on Cell Locking now. I didn’t know this was possible, and we can probably make a shell / chrontab script for it…

@tirkiz – just out of curiosity – why are you using your home webserver to automate the command, instead of running a script locally on the RUTX (custom scripts can be run on router re/boot)?

I arranged for my home server to extract signal, aggregation, MIMO, modulation data from the RUTX50 every minute and save it in the mySQL database.
At the same time, I installed checks, so if for some reason the modem crashes, the server script detects it and sends commands to reboot, etc. In general, I have a home server for everything, so I use it for that too :slight_smile:

Ah OK – I do something similar via a custom script on the router + modbus => Home Assistant.

Full details posted here, if anyone is interested: Teltonika (OpenWRT / RutOS) custom GSM modem modbus - Configuration - Home Assistant Community

You could actually create separate profiles with different bands and use profile scheduler to change the profiles for needed times. You can find more information here: RUTX50 Profiles - Teltonika Networks Wiki

1 Like

Even better. I think for the OP this would be the least hassle to implement!

This topic was automatically closed after 15 days. New replies are no longer allowed.