mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
0de6a3339f
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>
225 lines
4.7 KiB
Bash
225 lines
4.7 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"
|
|
;;
|
|
google,wifi)
|
|
export_bootdevice
|
|
export_partdevice CI_ROOTDEV 0
|
|
CI_KERNPART="kernel"
|
|
CI_ROOTPART="rootfs"
|
|
emmc_do_upgrade "$1"
|
|
;;
|
|
linksys,ea6350v3 |\
|
|
linksys,ea8300 |\
|
|
linksys,mr8300 |\
|
|
linksys,whw01-v1)
|
|
platform_do_upgrade_linksys "$1"
|
|
;;
|
|
meraki,mr33 |\
|
|
meraki,mr74)
|
|
CI_KERNPART="part.safe"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
mikrotik,cap-ac|\
|
|
mikrotik,hap-ac2|\
|
|
mikrotik,lhgg-60ad|\
|
|
mikrotik,sxtsq-5-ac|\
|
|
mikrotik,wap-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"
|
|
;;
|
|
sony,ncp-hg100-cellular)
|
|
sony_emmc_do_upgrade "$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 |\
|
|
google,wifi)
|
|
emmc_copy_config
|
|
;;
|
|
esac
|
|
return 0;
|
|
}
|