OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.
This repository
Modern version of OpenWrt working on UZ801v3:
- Modem Working
- ModemManager not showing Rx/Tx in Luci
- Wifi Working
- USB gadget working (NCM, RNDIS, MASS, ACM tested!)
- No shell attached to ACM, just pure raw Serial (/dev/ttyGS0)
- TUN installed
- Wireguard Installed
hotplug.dscripts to manage leds, only on/off if iface, no blinking:- On default Linux Kernel
dts, leds are swapped! - Wifi Led: packages/ledcontrol/files/99-modem-led
- Modem Led: packages/ledcontrol/files/99-wifi-led
- On default Linux Kernel
- Firmware is dumped on first boot from modem/persist partition:
- Uses the binaries/firmware from the own device.
- This might imply that a port for other devices would be easier... but I have not tested it as I only have this device._
- Uses the binaries/firmware from the own device.
How to build OpenWrt
Docker is required!
cd devenv
docker compose run --rm builder # This will open bash inside a build environment
cp /repo/diffconfig .config # Copies the config on to the working folder
echo "# CONFIG_SIGNED_PACKAGES is not set" >> .config # Optional: Disable APK signature verification
make defconfig
make -j$(nproc)
How to flash from OEM
The base partitions are in a folder called base_partitions on this repo:
- Install
edl: https://github.com/bkerler/edl - Put the device in
edlmode: https://wiki.postmarketos.org/wiki/Zhihe_series_LTE_dongles_(generic-zhihe)#How_to_enter_flash_mode - Do a full backup:
edl rf backup.bin - Run
./openwrt-msm89xx-msm8916-yiming-uz801v3-flash.sh: It will prompt for the partitions folder (base_partitions). The script will backup the important partitions specific for your device, will flash everything and will restore de previously saved partitions.
After the succesful flash if you:
- Want to enter
fastboot, just insert the device with the button pressed. - Want to enter
edl, boot into fastboot and execute:fastboot oem reboot-edl.
No Network/Modem Stuck at Searching
First, extract the contents of modem.bin from your firmware dump. You can do eld r modem modem.bin. In linux, its a simple image, you can mount it. Once you have it mounted, navigate to this directory: image/modem_pr/mcfg/configs/mcfg_sw/generic/ and choose the folder according to your region:
- APAC - Asia Pacific
- CHINA - China
- COMMON - Use this if your region is not listed
- EU - Europe
- NA - North America
- SA - South America
- SEA - South East Asia
Once you have selected your region, you'll find folders typically representing Telcos in your area. Navigate through the appropriate folder until you locate mcfg_sw.mbn. If your telco is not listed, just grab a generic as it is done in this project for europe:
# packages/msm8916-firmware/Makefile
define Build/Compile
...
::image/modem_pr/mcfg/configs/mcfg_sw/generic/common/default/default/mcfg_sw.mbn $(PKG_BUILD_DIR)
...
endef
To apply the fix:
- Transfer the file to your dongle:
scp -O mcfg_sw.mbn root@192.168.1.1:/lib/firmware/MCFG_SW.MBN- Capitalization matters! Modem expects it to be all caps.
- Reboot the device.
Future:
- ACM gadget not working!
- Also test Shell
- Custom package server for msm89xx/msm8916
- Any target specific module not present might require to be built from sources. This repo can be used to do that, run
make menuconfigbeforemake -j$(nproc)and select it from the menu.
- Any target specific module not present might require to be built from sources. This repo can be used to do that, run
- Generate all
base_partitionswith openwrt builder.
Credits
- @ghosthgy https://github.com/ghosthgy/openwrt-msm8916
- Starting point for this project.
- @lkiuyu https://github.com/lkiuyu/immortalwrt
- Almost all the msm8916 folder + patches + openstick feeds.
- @Mio-sha512 https://github.com/Mio-sha512/OpenStick-Builder
usb-gadgetandmsm-firmware-loaderidea (nowmsm-firmware-dumper).
- @AlienWolfX https://github.com/AlienWolfX/UZ801-USB_MODEM/wiki/Troubleshooting
- For the carriers policy troubleshooting.
- @gw826943555 and @asvow https://github.com/gw826943555/luci-app-tailscale
- Application for controlling tailscale from luci.
