====== 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