mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-07 06:18:54 +00:00
3e15a54bb0
It's a 4G Cat.20 router used by Vodafone Italy (called Vodafone FWA)
and Vodafone DE\T-Mobile PL (called GigaCube).
Modem is a MiniPCIe-to-USB based on Snapdragon X24,
it supports 4CA aggregation.
There are currently two hardware revisions, which
differ on the 5Ghz radio:
AT1 = QCA9984 5Ghz Radio on PCI-E bus
AT2 = IPQ4019 5Ghz Radio inside IPQ4019 like 2.4Ghz
Device specification
--------------------
SoC Type: Qualcomm IPQ4019
RAM: 256 MiB
Flash: 128 MiB SPI NAND (Winbond W25N01GV)
ROM: 2MiB SPI Flash (GD25Q16)
Wireless 2.4 GHz (IP4019): b/g/n, 2x2
Wireless 5 GHz:
(QCA9984): a/n/ac, 4x4 HW REV AT1
(IPA4019): a/n/ac, 2x2 HW REV AT2
Ethernet: 2xGbE (WAN/LAN1, LAN2)
USB ports: No
Button: 2 (Reset/WPS)
LEDs: 3 external leds: Network (white or red), Wifi, Power and 1 internal (blue)
Power: 12 VDC, 1 A
Connector type: Barrel
Bootloader: U-Boot
Installation
------------
1. Place OpenWrt initramfs image for the device on a TFTP
in the server's root. This example uses Server IP: 192.168.0.2
2. Connect serial console (115200,8n1) to serial connector
GND (which is right next to the thing with MF289F MIMO-V1.0), RX, TX
(refer to this image: https://ibb.co/31Gngpr).
3. Connect TFTP server to RJ-45 port (WAN/LAN1).
4. Stop in u-Boot (using ESC button) and run u-Boot commands:
setenv serverip 192.168.0.2
setenv ipaddr 192.168.0.1
set fdt_high 0x85000000
tftp openwrt-ipq40xx-generic-zte_mf289f-initramfs-fit-zImage.itb
bootm $loadaddr
5. Please make backup of original partitions, if you think about revert to
stock, specially mtd16 (Web UI) and mtd17 (rootFS).
Use /tmp as temporary storage and do:
WEB PARITION
--------------------------------------
cat /dev/mtd16 > /tmp/mtd16.bin
scp /tmp/mtd16.bin root@YOURSERVERIP:/
rm /tmp/mtd16.bin
ROOT PARITION
--------------------------------------
cat /dev/mtd17 > /tmp/mtd17.bin
scp /tmp/mtd17.bin root@YOURSERVERIP:/
rm /tmp/mtd17.bin
6. Login via ssh or serial and remove stock partitions
(default IP 192.168.0.1):
# this can return an error, if ubi was attached before
# or rootfs part was erased before.
ubiattach -m 17
# it could return error if rootfs part was erased before
ubirmvol /dev/ubi0 -N ubi_rootfs
# some devices doesn't have it
ubirmvol /dev/ubi0 -N ubi_rootfs_data
7. download and install image via sysupgrade -n
(either use wget/scp to copy the mf289f's squashfs-sysupgrade.bin
to the device's /tmp directory)
sysupgrade -n /tmp/openwrt-...-zte_mf289f-squashfs-sysupgrade.bin
Sometimes it could print ubi attach error, but please ignore it
if process goes forward.
Flash Layout
NAND:
mtd8: 000a0000 00020000 "fota-flag"
mtd9: 00080000 00020000 "0:ART"
mtd10: 00080000 00020000 "mac"
mtd11: 000c0000 00020000 "reserved2"
mtd12: 00400000 00020000 "cfg-param"
mtd13: 00400000 00020000 "log"
mtd14: 000a0000 00020000 "oops"
mtd15: 00500000 00020000 "reserved3"
mtd16: 00800000 00020000 "web"
mtd17: 01d00000 00020000 "rootfs"
mtd18: 01900000 00020000 "data"
mtd19: 03200000 00020000 "fota"
mtd20: 0041e000 0001f000 "kernel"
mtd21: 0101b000 0001f000 "ubi_rootfs"
SPI:
mtd0: 00040000 00010000 "0:SBL1"
mtd1: 00020000 00010000 "0:MIBIB"
mtd2: 00060000 00010000 "0:QSEE"
mtd3: 00010000 00010000 "0:CDT"
mtd4: 00010000 00010000 "0:DDRPARAMS"
mtd5: 00010000 00010000 "0:APPSBLENV"
mtd6: 000c0000 00010000 "0:APPSBL"
mtd7: 00050000 00010000 "0:reserved1"
Back to Stock (!!! need original dump taken from initramfs !!!)
-------------
1. Place mtd16.bin and mtd17.bin initramfs image
for the device on a TFTP in the server's root.
This example uses Server IP: 192.168.0.2
2. Connect serial console (115200,8n1) to serial console
connector (refer to the pin-out from above).
3. Connect TFTP server to RJ-45 port (WAN/LAN1).
4. rename mtd16.bin to web.img and mtd17.bin to root_uImage_s
5. Stop in u-Boot (using ESC button) and run u-Boot commands:
This will erase RootFS+Web:
nand erase 0x1000000 0x800000
nand erase 0x1800000 0x1D00000
This will restore RootFS:
tftpboot 0x84000000 ${dir}root_uImage_s
nand erase 0x1800000 0x1D00000
nand write $fileaddr 0x1800000 $filesize
This will restore Web Interface:
tftpboot 0x84000000 ${dir}web.img
nand erase 0x1000000 0x800000
nand write $fileaddr 0x1000000 $filesize
After first boot on stock firwmare, do a factory reset.
Push reset button for 5 seconds so all parameters will
be reverted to the one printed on label on bottom of the router
Signed-off-by: Giammarco Marzano <stich86@gmail.com>
Reviewed-by: Lech Perczak <lech.perczak@gmail.com>
(Warning: commit message did not conform to UTF-8 - hopefully fixed?,
added description of the pin-out if image goes down, reformatted
commit message to be hopefully somewhat readable on git-web,
redid some of the gpio-buttons & leds DT nodes, etc.)
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
(cherry picked from commit 0de6a3339f
)
[Backported to 22.03: added DTS to the makefile patch, fixed ipq-wifi
inclusion for MF286D]
Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
211 lines
4.4 KiB
Bash
211 lines
4.4 KiB
Bash
PART_NAME=firmware
|
|
REQUIRE_IMAGE_METADATA=1
|
|
|
|
RAMFS_COPY_BIN='fw_printenv fw_setenv'
|
|
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
|
|
|
platform_check_image() {
|
|
case "$(board_name)" in
|
|
asus,rt-ac42u |\
|
|
asus,rt-ac58u)
|
|
local ubidev=$(nand_find_ubi $CI_UBIPART)
|
|
local asus_root=$(nand_find_volume $ubidev jffs2)
|
|
|
|
[ -n "$asus_root" ] || return 0
|
|
|
|
cat << EOF
|
|
jffs2 partition is still present.
|
|
There's probably no space left
|
|
to install the filesystem.
|
|
|
|
You need to delete the jffs2 partition first:
|
|
# ubirmvol /dev/ubi0 --name=jffs2
|
|
|
|
Once this is done. Retry.
|
|
EOF
|
|
return 1
|
|
;;
|
|
zte,mf286d |\
|
|
zte,mf289f)
|
|
CI_UBIPART="rootfs"
|
|
local mtdnum="$( find_mtd_index $CI_UBIPART )"
|
|
[ ! "$mtdnum" ] && return 1
|
|
ubiattach -m "$mtdnum" || true
|
|
local ubidev="$( nand_find_ubi $CI_UBIPART )"
|
|
local ubi_rootfs=$(nand_find_volume $ubidev ubi_rootfs)
|
|
local ubi_rootfs_data=$(nand_find_volume $ubidev ubi_rootfs_data)
|
|
|
|
[ -n "$ubi_rootfs" ] || [ -n "$ubi_rootfs_data" ] || return 0
|
|
|
|
cat << EOF
|
|
ubi_rootfs partition is still present.
|
|
|
|
You need to delete the stock partition first:
|
|
# ubirmvol /dev/ubi0 -N ubi_rootfs
|
|
Please also delete ubi_rootfs_data, if exist:
|
|
# ubirmvol /dev/ubi0 -N ubi_rootfs_data
|
|
|
|
Once this is done. Retry.
|
|
EOF
|
|
return 1
|
|
;;
|
|
esac
|
|
return 0;
|
|
}
|
|
|
|
askey_do_upgrade() {
|
|
local tar_file="$1"
|
|
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
|
|
tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
|
|
|
|
nand_do_upgrade "$1"
|
|
}
|
|
|
|
zyxel_do_upgrade() {
|
|
local tar_file="$1"
|
|
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
|
|
tar Oxf $tar_file ${board_dir}/kernel | mtd write - kernel
|
|
|
|
if [ -n "$UPGRADE_BACKUP" ]; then
|
|
tar Oxf $tar_file ${board_dir}/root | mtd -j "$UPGRADE_BACKUP" write - rootfs
|
|
else
|
|
tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
|
|
fi
|
|
}
|
|
|
|
platform_do_upgrade_mikrotik_nand() {
|
|
local fw_mtd=$(find_mtd_part kernel)
|
|
fw_mtd="${fw_mtd/block/}"
|
|
[ -n "$fw_mtd" ] || return
|
|
|
|
local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
[ -n "$board_dir" ] || return
|
|
|
|
local kernel_len=$(tar xf "$1" ${board_dir}/kernel -O | wc -c)
|
|
[ -n "$kernel_len" ] || return
|
|
|
|
tar xf "$1" ${board_dir}/kernel -O | ubiformat "$fw_mtd" -y -S $kernel_len -f -
|
|
|
|
CI_KERNPART="none"
|
|
nand_do_upgrade "$1"
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
case "$(board_name)" in
|
|
8dev,jalapeno |\
|
|
aruba,ap-303 |\
|
|
aruba,ap-303h |\
|
|
aruba,ap-365 |\
|
|
avm,fritzbox-7530 |\
|
|
avm,fritzrepeater-1200 |\
|
|
avm,fritzrepeater-3000 |\
|
|
buffalo,wtr-m2133hp |\
|
|
cilab,meshpoint-one |\
|
|
edgecore,ecw5211 |\
|
|
edgecore,oap100 |\
|
|
engenius,eap2200 |\
|
|
glinet,gl-ap1300 |\
|
|
luma,wrtq-329acn |\
|
|
mobipromo,cm520-79f |\
|
|
netgear,wac510 |\
|
|
p2w,r619ac-64m |\
|
|
p2w,r619ac-128m |\
|
|
qxwlan,e2600ac-c2)
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
glinet,gl-b2200)
|
|
CI_KERNPART="0:HLOS"
|
|
CI_ROOTPART="rootfs"
|
|
CI_DATAPART="rootfs_data"
|
|
emmc_do_upgrade "$1"
|
|
;;
|
|
alfa-network,ap120c-ac)
|
|
part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
|
|
if [ "$part" = "rootfs1" ]; then
|
|
fw_setenv active 2 || exit 1
|
|
CI_UBIPART="rootfs2"
|
|
else
|
|
fw_setenv active 1 || exit 1
|
|
CI_UBIPART="rootfs1"
|
|
fi
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
asus,map-ac2200)
|
|
CI_KERNPART="linux"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
asus,rt-ac42u |\
|
|
asus,rt-ac58u)
|
|
CI_KERNPART="linux"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
cellc,rtl30vw)
|
|
CI_UBIPART="ubifs"
|
|
askey_do_upgrade "$1"
|
|
;;
|
|
compex,wpj419)
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
linksys,ea6350v3 |\
|
|
linksys,ea8300 |\
|
|
linksys,mr8300)
|
|
platform_do_upgrade_linksys "$1"
|
|
;;
|
|
meraki,mr33)
|
|
CI_KERNPART="part.safe"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
mikrotik,cap-ac|\
|
|
mikrotik,hap-ac2|\
|
|
mikrotik,lhgg-60ad|\
|
|
mikrotik,sxtsq-5-ac)
|
|
[ "$(rootfs_type)" = "tmpfs" ] && mtd erase firmware
|
|
default_do_upgrade "$1"
|
|
;;
|
|
mikrotik,hap-ac3)
|
|
platform_do_upgrade_mikrotik_nand "$1"
|
|
;;
|
|
netgear,rbr50 |\
|
|
netgear,rbs50 |\
|
|
netgear,srr60 |\
|
|
netgear,srs60)
|
|
platform_do_upgrade_netgear_orbi_upgrade "$1"
|
|
;;
|
|
openmesh,a42 |\
|
|
openmesh,a62 |\
|
|
plasmacloud,pa1200 |\
|
|
plasmacloud,pa2200)
|
|
PART_NAME="inactive"
|
|
platform_do_upgrade_dualboot_datachk "$1"
|
|
;;
|
|
teltonika,rutx10 |\
|
|
zte,mf286d |\
|
|
zte,mf289f)
|
|
CI_UBIPART="rootfs"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
zyxel,nbg6617)
|
|
zyxel_do_upgrade "$1"
|
|
;;
|
|
*)
|
|
default_do_upgrade "$1"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
platform_copy_config() {
|
|
case "$(board_name)" in
|
|
glinet,gl-b2200)
|
|
emmc_copy_config
|
|
;;
|
|
esac
|
|
return 0;
|
|
}
|