Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
projects:zte_mf28x [2023/06/01 10:33] – Andreas Böhler | projects:zte_mf28x [2024/08/07 10:33] (current) – Andreas Böhler | ||
---|---|---|---|
Line 1: | Line 1: | ||
~~NOTOC~~ | ~~NOTOC~~ | ||
- | ====== OpenWrt on the ZTE MF282/ | + | ====== OpenWrt on the ZTE MF282/ |
- | The ZTE MF282 aka 3 HuiTube / DreiTube and the ZTE MF287+ aka DreiNeo are both routers with integrated LTE modem, made exclusively for the network operator 3 in Austria. I ported OpenWrt to both devices and found an easy-to-use unlocking method for both devices. | + | The ZTE MF282 aka 3 HuiTube / DreiTube and the ZTE MF287 series |
<WRAP round important 80%> | <WRAP round important 80%> | ||
Everything you do according to these instructions, | Everything you do according to these instructions, | ||
- | |||
- | If you came here only for carrier unlock, you will still need to run OpenWrt for performing the unlock. Once unlocked, you can restore back to stock. | ||
</ | </ | ||
- | === What about the 3Neo Router? === | + | The following models are supported by OpenWrt 23.05 and onwards: |
+ | |||
+ | * MF282 | ||
+ | * MF287 | ||
+ | * MF287+ | ||
+ | * MF287Pro | ||
- | There is an older version called " | + | The only model that will not be backported |
===== ZTE MF282 ===== | ===== ZTE MF282 ===== | ||
- | The MF282 is supported by OpenWrt 23.x onwards. In order to install it, you need to disassemble the device, attach serial console and perform a few commands in the UART shell. | + | The MF282 is supported by OpenWrt 23.05 onwards. In order to install it, you need to disassemble the device, attach serial console and perform a few commands in the UART shell. |
<WRAP round important 80%> | <WRAP round important 80%> | ||
Line 24: | Line 27: | ||
See the git commit at https:// | See the git commit at https:// | ||
- | ===== ZTE MF287+ ===== | + | ===== ZTE MF282+ ===== |
- | The newer MF287+ | + | This device has a completely different hardware. An OpenWrt port is available, but this device is not supported by OpenWrt 23.05. |
+ | The MF282+ can be identified by the model type " | ||
+ | |||
+ | ===== ZTE MF287 ===== | ||
+ | |||
+ | The newer MF287 series is more powerful than the MF282 and features four Gigabit-ports, | ||
+ | OpenWrt supports all models from 23.05 onwards. | ||
==== Option 1: Install from OEM firmware ==== | ==== Option 1: Install from OEM firmware ==== | ||
You need an exploit to get access to the stock firmware. Prepare the following: | You need an exploit to get access to the stock firmware. Prepare the following: | ||
- | | + | <WRAP round important 80%> |
+ | **Required files** | ||
* Static build of busybox for ARM, e.g. from https:// | * Static build of busybox for ARM, e.g. from https:// | ||
+ | * exploit.dat from https:// | ||
+ | * OpenWrt factory image - this is **not** listed in the table above. Please download it from [[https:// | ||
+ | </ | ||
+ | |||
+ | Then do the following preparatory steps: | ||
+ | |||
+ | * Set up a TFTP server - tftpd-hpa on Linux is tested, but tftpd32 should work as well | ||
* Rename busybox to " | * Rename busybox to " | ||
- | | + | * Put the OpenWrt |
- | | + | |
* Assign your computer the IP address 192.168.0.22 | * Assign your computer the IP address 192.168.0.22 | ||
Line 43: | Line 60: | ||
- Log in to the web interface of your router, go to settings restore and use the file " | - Log in to the web interface of your router, go to settings restore and use the file " | ||
- Watch your TFTP server serving the file " | - Watch your TFTP server serving the file " | ||
- | - Use a Telnet client and connect to 192.168.0.1 | + | - Use a Telnet client and connect to 192.168.0.1 |
- | - Login as user " | + | - You should be logged-in immediately, |
- Execute the following commands to take a backup and to install OpenWrt (NB: Instead of using tftp, you should also be able to use '' | - Execute the following commands to take a backup and to install OpenWrt (NB: Instead of using tftp, you should also be able to use '' | ||
+ | |||
+ | <WRAP round important 80%> | ||
+ | For the MF287 and MF287+, you need to replace '' | ||
+ | For the MF287Pro, you need to replace '' | ||
+ | </ | ||
+ | |||
+ | <WRAP round important 80%> | ||
+ | Please double-check the partition number by running '' | ||
+ | </ | ||
+ | |||
< | < | ||
cd /tmp | cd /tmp | ||
cat /dev/ubi0_0 > /tmp/ubi0_0 | cat /dev/ubi0_0 > /tmp/ubi0_0 | ||
cat /dev/ubi0_1 > /tmp/ubi0_1 | cat /dev/ubi0_1 > /tmp/ubi0_1 | ||
- | tftp -p -l /tmp/ubi0_0 192.168.0.22 | + | tftp -p -l /tmp/ubi0_0 -r ubi0_0 192.168.0.22 |
- | tftp -p -l /tmp/ubi0_1 192.168.0.22 | + | tftp -p -l /tmp/ubi0_1 -r ubi0_1 192.168.0.22 |
rm /tmp/ubi0* | rm /tmp/ubi0* | ||
tftp -g -r zte.bin 192.168.0.22 | tftp -g -r zte.bin 192.168.0.22 | ||
cat / | cat / | ||
- | flash_erase /dev/mtd13 0 0 | + | flash_erase /dev/mtdXX 0 0 |
- | dd if=zte.bin of=/dev/mtdblock13 | + | dd if=zte.bin of=/dev/mtdblockXX |
reboot | reboot | ||
</ | </ | ||
Line 84: | Line 111: | ||
Make sure to take a backup of your partitions. There is no firmware download available. | Make sure to take a backup of your partitions. There is no firmware download available. | ||
</ | </ | ||
- | |||
- | There is a pending PR for adding OpenWrt support to this device. Before it is accepted, you need to build from my personal github at https:// | ||
==== Restore stock ==== | ==== Restore stock ==== | ||
Line 91: | Line 116: | ||
You need the two files ubi0_0 and ubi0_1 you downloaded during the installation of OpenWrt. If you are already running OpenWrt, you need to flash an initramfs version first - for this, simply install the -recovery.bin version using sysupgrade as usual. | You need the two files ubi0_0 and ubi0_1 you downloaded during the installation of OpenWrt. If you are already running OpenWrt, you need to flash an initramfs version first - for this, simply install the -recovery.bin version using sysupgrade as usual. | ||
- | Once rebooted, transfer the files ubi0_0 and ubi0_1 to your router to /tmp. Then, run the following commands to restore back to stock - the " | + | Once rebooted, transfer the files ubi0_0 and ubi0_1 to your router to /tmp. Then, run the following commands to restore back to stock - the " |
+ | |||
+ | <WRAP round important 80%> | ||
+ | Please double-check the partition number by running '' | ||
+ | </ | ||
< | < | ||
ls -l /tmp/ubi0* | ls -l /tmp/ubi0* | ||
- | ubiattach -m 14 | + | ubiattach -m XX |
ubirmvol /dev/ubi0 -N kernel | ubirmvol /dev/ubi0 -N kernel | ||
ubirmvol /dev/ubi0 -N rootfs | ubirmvol /dev/ubi0 -N rootfs | ||
Line 115: | Line 144: | ||
The required software is an open source utility to interact with Qualcomm modem chipsets, available at https:// | The required software is an open source utility to interact with Qualcomm modem chipsets, available at https:// | ||
+ | |||
+ | <WRAP round important 80%> | ||
+ | Unlocking does not work on the MF282+ aka DreiTube! The LTE module uses a completely different hardware architecture. | ||
+ | </ | ||
===== Procedure ===== | ===== Procedure ===== | ||
+ | |||
+ | ==== Option 1: Using OpenWrt and qtools ==== | ||
NB: If you are already running OpenWrt, you can skip disassembly and download the initramfs build. However, you will have to install " | NB: If you are already running OpenWrt, you can skip disassembly and download the initramfs build. However, you will have to install " | ||
Line 130: | Line 165: | ||
setenv serverip 192.168.1.100 | setenv serverip 192.168.1.100 | ||
setenv ipaddr 192.168.1.1 | setenv ipaddr 192.168.1.1 | ||
- | tftpboot | + | tftpboot openwrt.bin |
- | bootm 0x82000000 | + | bootm |
</ | </ | ||
* After a few minutes, OpenWrt has started | * After a few minutes, OpenWrt has started | ||
- | * Run the following commands to carrier-unlock | + | * Continue with the unlocking section below. |
+ | |||
+ | ==== Option 2: Stock firmware and static build of qtools ==== | ||
+ | |||
+ | On the stock firmware, you can perform an unlock using the exploit described above for installing OpenWrt and use a static build of qtools: | ||
+ | |||
+ | * Perform the exploit and connect via telnet | ||
+ | * Download a static build of qcommand from https:// | ||
+ | * Transfer the static build via telnet: | ||
+ | < | ||
+ | cd /tmp | ||
+ | tftp -g -r qcommand 192.168.0.22 | ||
+ | chmod +x / | ||
+ | </ | ||
+ | * Continue with the unlock as described below | ||
+ | |||
+ | ==== Unlocking ==== | ||
+ | Use the '' | ||
< | < | ||
qcommand -e -c "c 27 40 1f 46 30 41 41" | qcommand -e -c "c 27 40 1f 46 30 41 41" | ||
- | qcommand -e -c "c 4b aa 00 00 00" | ||
qcommand -e -c "c 29 02 00" | qcommand -e -c "c 29 02 00" | ||
</ | </ | ||
- | * Wait a few minutes until the LTE modem has rebooted (watch the log by calling '' | + | * Wait a few minutes until the LTE modem has rebooted (On OpenWrt, you can watch the log by calling '' |
* Disconnect power | * Disconnect power | ||
Line 153: | Line 205: | ||
</ | </ | ||
- | The command '' | + | The command '' |
+ | |||
+ | On the stock firmware, it is sufficient to perform a manual network scan. Afterwards, it can be switched back to automatic. | ||
===== More Details ===== | ===== More Details ===== | ||
Should you require more details for any of the steps provided, please have a look at the excellent documentation in the OpenWrt Wiki at https:// | Should you require more details for any of the steps provided, please have a look at the excellent documentation in the OpenWrt Wiki at https:// | ||
- | ===== Exploit MF287+ in detail ===== | + | ===== Exploit MF287 in detail ===== |
- | The settings file of the MF287+ is obfuscated and encrypted. Fortunately, | + | The settings file of the MF287 is obfuscated and encrypted. Fortunately, |
<code python [enable_line_numbers=" | <code python [enable_line_numbers=" | ||
Line 185: | Line 240: | ||
return False | return False | ||
| | ||
- | exploit = "; | + | exploit = "; |
- | | + | |
for char in exploit: | for char in exploit: | ||
if char != ' | if char != ' |