ZTE MF823 Overview
The ZTE MF823 is 4G dongle that (as of 2017) is widely available at a good price (Below £50).
Default settings and configs just work if NAT is acceptable
Out of the box, it will work as an 'ethernet' device, and so the FireBrick or a computer will see it as a USB ethernet adapter. The Dongle runs a DHCP server and will dish out IP addresses to you in the 192.168.0.x range. Then, once its connected to the Internet on the 4G side, it will give you natted internet access.
A factory default FireBrick configuration will work with a ZTE MF823 dongle without any additional configuration
- The FireBrick will DHCP an address in the 192.168.0.x range from the ZTE dongle
- You can access the dongle's web interface via http://192.168.0.1
- There will be NAT performed by the FireBrick and then again by the dongle
- The FireBrick will give you internet access over the dongle
ZTE MF823 and No NAT
In its default state, the ZTE MF823 dongle will give internet access and the FireBrick can also be configured to use the dongle as a backup internet connection if your main connection goes down. However, when used with a Data SIM from AAISP you may want to take advantage of the static IP and routed blocks of IPv4 addresses. In these cases you don't want the dongle to do any NAT. To do this we need to do a few things as described below:
- the dongle needs to be configured to be in serial mode and have the default APN set
- The FireBrick needs config to change the default dial string
Changing the ZTE MF823 to 'serial modem' mode
Warning: This is still in progress and has not been fully tested, and as such may not work. Tests were performed on an unlocked MF623 purchased from Amazon. There have been reports of this procedure not working on O2 branded dongles, causing the network lock which was previously not set to be applied, so proceed at your own caution if using a branded dongle. Networks often customise the firmware of these devices so they may behave in a completely different manner with these firmware modifications.
The ZTE823 works as an Ethernet device by default, it is possible to change the mode so that it works as a modem. The idea here is that rather than the dongle NATing the connection it can be a modem and the FireBrick will be given the public WAN IP address directly.
One caveat of modem mode, is that it does not seem to reliably respond to AT commands, as it appears the dongle is generating its own AT commands internally, presumably part of its web interface thing. It does appear to respond to the AT+CGDATA command to start a data session, with almost no other interaction required on the behalf of the Firebrick.
Switching to 'Download' Mode
Download, or debug mode is where the dongle acts as a serial modem device.
Some of this information came from: archlinux.org
- Disable auto-connect, and manually set the APN:
- Go to http://192.168.0.1
- Click on Home
- Click Disconnect
- Click Settings
- Click Network settings
- Click Dial-up settings
- Click the radio button labeled 'Manual' and click Apply
- Click APN
- Click the radio button labeled 'Manual' and click 'Add new'
- Set PDP type to IPv4, create a Profile Name, enter the APN as 'm2m.aql.net', set Authentication to none, and select Apply.
- Go to your newly created profile, and click 'Set as default'.
- Put the Dongle into download mode:
- In your browser, go to: http://192.168.0.1/goform/goform_process?goformId=MODE_SWITCH&switchCmd=FACTORY
- The modem should respond with:
- Unplug and plug back in to the FireBrick and the FireBrick should see the dongle as a modem
<port name="USB" ports="" dongle="ZTE"/> <dongle name="ZTE" vendor="19d2" product="0016" modeswitch="noswitch" dial-string="AT+CGDATA="/>
If you have a block of IPs being routed to the SIM, then set
NAT="false" in the
<dongle... /> configuration.
Further help and information regarding the dongle
- Ethernet mode seems slightly faster than in download/debug (modem) mode. 16.77Mbit/s compared to 12.77Mbit/s - from our office.
Switching back to Ethernet mode
To put the dongle back to Ethernet mode you will need to connect the dongle to a computer in order to send it some commands via a serial terminal
- Open gtkserial, gtkterm, run screen /dev/ttyUSBx, or another serial terminal (or simply echo the following AT commands to /dev/ttyUSB2) (or maybe another dev/ttyUSBx):
ATZ AT&F AT+ZCDRUN=9 AT+ZCDRUN=F
- Disconnect the modem from the computer and reconnect it to the FireBrick
What mode is it in?
On a linux system, if you run lsusb you'll see something like:
Bus 002 Device 030: ID 19d2:0016 ZTE WCDMA Technologies MSM
The 0016 is the mode:
- 1225 – Default Mode. Available USB Mass Storage Device with CD-ROM and card reader. Corresponds to AT+ZCDRUN=9+AT+ZCDRUN=F
- 1403 – Operating Mode. Available RNDIS adapter and Mass Storage Device. Corresponds to AT+ZCDRUN=8+AT+ZCDRUN=F
- 1405 – CDC Ethernet Mode. A mode similar to that described above (1403). Included in Linux after starting usb_modeswitch c default settings.
- 0016 – Download/Debug Mode. Under the name of ZTE., but simply a mode where available diagnostic port and two command (analog modem port and PC UI devices Huawei). Corresponds to AT+ZCDRUN=E
- 0076 – "real" Download Mode. Includes a standard for devices running QC methods.