====== Hands On LTE on OpenWrt ======
===== Supported hardware =====
* The supported LTE hardware in OpenWrt can be a minefield and my recommendation is to stick with those hardware that have been tested by the community to be confirmed working.
* In the past I tried to use a Huawei LTE USB stick.
* They can be running in two modes.
* **RNDIS** https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_rndis
* **NCM** https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_ncm
* The preferred mode is **NCM** but the with USB stick I had it was impossible to switch modes and I was stuck with **RNDIS** mode.
* Another time I had a Mikrotik Access Point flashed with OpenWrt that had one of their LTE modems (pcie card). After many days of trying various things I eventually just gave up and replaced the card with one that has proper OpenWrt support.
* Some Access Points that comes with LTE modems included are well supported in OpenWrt.
* Cell-C / Belotech (https://openwrt.org/toh/cell_c/rtl30vw)
* GL.iNet GL-MiFi (https://openwrt.org/toh/gl.inet/gl-mifi)
===== Packages to include =====
* To get the LTE modem working in OpenWrt you need to include some specific packages.
* There are also some optional packages that you can include since they come in handy.
==== Required ====
* kmod-usb-wdm
* kmod-usb-net
* kmod-usb-net-qmi-wwan
* libqmi
* uqmi
* kmod-mii
opkg update
opkg install kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi
For Serial Support (AT Commands)
* kmod-usb-serial
* kmod-usb-serial-option
* kmod-usb-serial-wwan
opkg update
opkg install kmod-usb-serial-option kmod-usb-serial kmod-usb-serial-wwan
==== Optional ====
* qmi-utils
* picocom
* luci-proto-qmi
opkg update
opkg install picocom qmi-utils uci-proto-qmi
===== Interacting with the modem =====
* After you installed the packages reboot the Access Point.
* If everything works as intended you should see the following device
ls -l /dev/cdc-wdm0
* Now you can try to interact with the modem.
uqmi -d /dev/cdc-wdm0 --get-data-status
#This is the return
"connected"
uqmi -d /dev/cdc-wdm0 --get-signal-info
#This is the return
{
"type": "lte",
"rssi": -69,
"rsrq": -11,
"rsrp": -96,
"snr": 11.000000
}
uqmi -d /dev/cdc-wdm0 --get-system-info
#This is the return
{
"wcdma": {
"service_status": "none",
"true_service_status": "none",
"preferred_data_path": false
},
"lte": {
"service_status": "available",
"true_service_status": "available",
"preferred_data_path": false,
"domain": "cs-ps",
"service": "cs-ps",
"roaming_status": "off",
"forbidden": false,
"mcc": "655",
"mnc": "07",
"tracking_area_code": 18,
"enodeb_id": 18353,
"cell_id": 80,
"voice_support": true,
"ims_voice_support": false,
"cell_access_status": "all calls",
"registration_restriction": 0,
"registration_domain": 0
}
}
===== UCI Configuration =====
* The UCI system includes support for LTE confguration in ///etc/config/network//.
* The MESHdesk firmware will create the config section based on the configuration returned by the controller.
* Here is a sample section as reference
config interface 'wwan'
option ifname 'wwan'
option disabled '0'
option wan_bridge '0'
option device '/dev/cdc-wdm0'
option apn 'lte.broadband.is'
option proto 'qmi'
option auth 'none'
* You can also install the **luci-proto-qmi** package which essentially does the same that MESHdesk and APdesk does but only local on the Access Point.
===== Using AT Commands =====
* We can use picocom terminal to reach the LTE modem
picocom /dev/ttyUSB2
* I had to first issue the following commands before the modem returned something for CUSD
AT+CMGF=1
OK
ATZ
OK
AT+CUSD=1,"*101#",15
OK
+CUSD: 0,"Balance: R 0.00 .Data: 25.83 MB.",15
* You can allos issue the following command without needing to log into picocom
echo 'AT+CUSD=1,"*101#",15' | picocom -qrix 10000 /dev/ttyUSB2
#Here is what my provider returned
+CUSD: 0,"Balance: R 0.00 .Data: 6.40 MB.",15