diff --git a/config-rutx b/config-rutx index ea04c4ee..b2907bc2 100644 --- a/config-rutx +++ b/config-rutx @@ -15,4 +15,4 @@ CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=64 CONFIG_KERNEL_SWAP=y CONFIG_PREINITOPT=y CONFIG_PACKAGE_kmod-r2ec=y -CONFIG_PACKAGE_uboot-ipq40xx=y +CONFIG_PACKAGE_mnfinfo=y diff --git a/root/package/utils/mnfinfo/Makefile b/root/package/utils/mnfinfo/Makefile new file mode 100644 index 00000000..e5e300d3 --- /dev/null +++ b/root/package/utils/mnfinfo/Makefile @@ -0,0 +1,58 @@ +# +# Copyright (C) 2020 Teltonika +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/download.mk + +PKG_NAME:=mnfinfo +PKG_VERSION:=1 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/mnfinfo + SECTION:=net + CATEGORY:=Network + TITLE:=Device mnf-info command line interface + DEPENDS:=+libpthread +libmnfinfo +endef + +define Package/libmnfinfo + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Device mnf-info API library +endef + +define Package/rpcd-mod-mnfinfo + SECTION:=libs + CATEGORY:=Libraries + TITLE:=mnfinfo rpcd module + DEPENDS:=+rpcd +libmnfinfo +endef + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include/libmnfinfo + $(CP) $(PKG_BUILD_DIR)/*.so $(STAGING_DIR)/usr/lib/ + $(CP) $(PKG_BUILD_DIR)/src/include/*.h $(STAGING_DIR)/usr/include/libmnfinfo/ +endef + +define Package/mnfinfo/install + $(INSTALL_DIR) $(1)/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/mnf_info $(1)/sbin/mnf_info +endef + +define Package/libmnfinfo/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/libmnfinfo.so $(1)/usr/lib/ +endef + +define Package/rpcd-mod-mnfinfo/install + $(INSTALL_DIR) $(1)/usr/lib/rpcd + $(INSTALL_BIN) $(PKG_BUILD_DIR)/mnfinfo.so $(1)/usr/lib/rpcd/ +endef + +$(eval $(call BuildPackage,mnfinfo)) +$(eval $(call BuildPackage,libmnfinfo)) +$(eval $(call BuildPackage,rpcd-mod-mnfinfo)) diff --git a/root/package/utils/mnfinfo/src/Makefile b/root/package/utils/mnfinfo/src/Makefile new file mode 100644 index 00000000..ec79416d --- /dev/null +++ b/root/package/utils/mnfinfo/src/Makefile @@ -0,0 +1,35 @@ +MNF_SOURCES = src/mnf_info.c +MNF_OBJS = $(MNF_SOURCES:.c=.o) +MNF_TARGET = mnf_info + +MNF_RPC_SOURCES = src/mnf_rpc.c +MNF_RPC_OBJS = $(MNF_RPC_SOURCES:.c=.o) +MNF_RPC_TARGET = mnfinfo.so + +LIB_SOURCES = src/libmnfinfo.c +LIB_OBJS = $(LIB_SOURCES:.c=.o) +LIB_TARGET = libmnfinfo.so + +CFLAGS += -Wall -Wextra -Wpedantic -Werror -Wno-missing-braces -Wno-unused-function -Wno-unused-parameter -fPIC -I src/include +LDFLAGS += -L. + +MNF_LDFLAGS = +MNF_RPC_LDFLAGS = -lmnfinfo + +RM = rm -f + +all: $(LIB_TARGET) $(MNF_RPC_TARGET) $(MNF_TARGET) + +$(LIB_TARGET): $(LIB_OBJS) + $(CC) $(LDFLAGS) -shared -o $@ $^ + +$(MNF_RPC_TARGET): $(MNF_RPC_OBJS) $(LIB_TARGET) + $(CC) $(LDFLAGS) $(MNF_RPC_LDFLAGS) -shared -o $@ $^ + +$(MNF_TARGET): $(MNF_OBJS) $(LIB_OBJS) + $(CC) $(LDFLAGS) $(MNF_LDFLAGS) -o $@ $^ + +clean: + $(RM) $(LIB_OBJS) $(LIB_TARGET) + $(RM) $(MNF_RPC_OBJS) $(MNF_RPC_TARGET) + $(RM) $(MNF_OBJS) $(MNF_TARGET) diff --git a/root/package/utils/mnfinfo/src/README.md b/root/package/utils/mnfinfo/src/README.md new file mode 100644 index 00000000..af13c115 --- /dev/null +++ b/root/package/utils/mnfinfo/src/README.md @@ -0,0 +1,25 @@ +# libmnfinfo + +How it works: depending on the platform, selected in the menuconfig, a different platform flag is defined during compilation. Depending on that flag, a header file with platform-specific MTD field defines is included. Here are all the defines, (currently) used for these headers: + +* `MAX_SIM_ID` - maximum allowed SIM index on the platform. +* `MTD_CONFIG_RO` - absolute path of a read-only MTD partition. Used for most field reads. +* `MTD_CONFIG_RW` - absolute path of a read/write MTD partition. Used for SIM PIN value reads/writes. +* `MAC_OFFSET` - MAC field offset in the `MTD_CONFIG_RO` partition. +* `MAC_LENGTH` - MAC field length in the `MTD_CONFIG_RO` partition. +* `NAME_OFFSET` - product name field offset in the `MTD_CONFIG_RO` partition. +* `NAME_LENGTH` - product name field length in the `MTD_CONFIG_RO` partition. +* `WPS_OFFSET` - WPS field offset in the `MTD_CONFIG_RO` partition. +* `WPS_LENGTH` - WPS field length in the `MTD_CONFIG_RO` partition. +* `SERIAL_OFFSET` - product serial code field offset in the `MTD_CONFIG_RO` partition. +* `SERIAL_LENGTH` - product serial code field length in the `MTD_CONFIG_RO` partition. +* `BATCH_OFFSET` - batch index field offset in the `MTD_CONFIG_RO` partition. +* `BATCH_LENGTH` - batch index field length in the `MTD_CONFIG_RO` partition. +* `HWVER_OFFSET` - hardware version index field offset in the `MTD_CONFIG_RO` partition. +* `HWVER_LENGTH` - hardware version index field length in the `MTD_CONFIG_RO` partition. +* `SIMPIN_OFFSET` - SIM card PIN code field offset in the `MTD_CONFIG_RW` partition. +* `SIMPIN_LENGTH` - SIM card PIN code field length in the `MTD_CONFIG_RW` partition. +* `WIFI_OFFSET` - Wi-Fi password field offset in the `MTD_CONFIG_RO` partition. +* `WIFI_LENGTH` - Wi-Fi password field length in the `MTD_CONFIG_RO` partition. + +Only defines with actual values should be written. All other defines should be removed from the platform-specific header file. diff --git a/root/package/utils/mnfinfo/src/libmnfinfo.so b/root/package/utils/mnfinfo/src/libmnfinfo.so new file mode 100755 index 00000000..8e7ab9af Binary files /dev/null and b/root/package/utils/mnfinfo/src/libmnfinfo.so differ diff --git a/root/package/utils/mnfinfo/src/mnf_info b/root/package/utils/mnfinfo/src/mnf_info new file mode 100755 index 00000000..2daa9cf5 Binary files /dev/null and b/root/package/utils/mnfinfo/src/mnf_info differ diff --git a/root/package/utils/mnfinfo/src/mnfinfo.so b/root/package/utils/mnfinfo/src/mnfinfo.so new file mode 100755 index 00000000..176d5fe8 Binary files /dev/null and b/root/package/utils/mnfinfo/src/mnfinfo.so differ diff --git a/root/package/utils/mnfinfo/src/src/include/mnfinfo.h b/root/package/utils/mnfinfo/src/src/include/mnfinfo.h new file mode 100644 index 00000000..ad2700bd --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/mnfinfo.h @@ -0,0 +1,115 @@ +#include +#include + +#define STRING_NA(a) do { (a)[0] = 'N'; (a)[1] = '/'; (a)[2] = 'A'; (a)[3] = 0; } while(0) +#define STRING_NA_LENGTH 3 + +#define PARTITION_SIZE 0xA0 +#define SECTION_SIZE 0x10 + +#if defined(RUTX_PLATFORM) +#include "rutx.h" +#elif defined(TRB1_PLATFORM) +#include "trb1.h" +#elif defined(TRB2_PLATFORM) +#include "trb2.h" +#elif defined(RUT2_PLATFORM) +#include "rut2.h" +#elif defined(RUT300_PLATFORM) || defined(RUT360_PLATFORM) +#include "rut3.h" +#else +#error Platform not recognized! +#endif + +#if !(defined(MAC_OFFSET) && defined(MAC_LENGTH)) +#undef MAC_OFFSET +#undef MAC_LENGTH +#define MAC_OFFSET 0 +#define MAC_LENGTH STRING_NA_LENGTH +#else +#define MAC_ENABLED +#endif + +#if !(defined(NAME_OFFSET) && defined(NAME_LENGTH)) +#undef NAME_OFFSET +#undef NAME_LENGTH +#define NAME_OFFSET 0 +#define NAME_LENGTH STRING_NA_LENGTH +#else +#define NAME_ENABLED +#endif + +#if !(defined(WPS_OFFSET) && defined(WPS_LENGTH)) +#undef WPS_OFFSET +#undef WPS_LENGTH +#define WPS_OFFSET 0 +#define WPS_LENGTH STRING_NA_LENGTH +#else +#define WPS_ENABLED +#endif + +#if !(defined(SERIAL_OFFSET) && defined(SERIAL_LENGTH)) +#undef SERIAL_OFFSET +#undef SERIAL_LENGTH +#define SERIAL_OFFSET 0 +#define SERIAL_LENGTH STRING_NA_LENGTH +#else +#define SERIAL_ENABLED +#endif + +#if !(defined(BATCH_OFFSET) && defined(BATCH_LENGTH)) +#undef BATCH_OFFSET +#undef BATCH_LENGTH +#define BATCH_OFFSET 0 +#define BATCH_LENGTH STRING_NA_LENGTH +#else +#define BATCH_ENABLED +#endif + +#if !(defined(HWVER_OFFSET) && defined(HWVER_LENGTH)) +#undef HWVER_OFFSET +#undef HWVER_LENGTH +#define HWVER_OFFSET 0 +#define HWVER_LENGTH STRING_NA_LENGTH +#else +#define HWVER_ENABLED +#endif + +#if !(defined(SIMPIN_OFFSET) && defined(SIMPIN_LENGTH)) +#undef SIMPIN_OFFSET +#undef SIMPIN_LENGTH +#define SIMPIN_OFFSET 0 +#define SIMPIN_LENGTH STRING_NA_LENGTH +#else +#define SIMPIN_ENABLED +#endif + +#if !(defined(WIFI_OFFSET) && defined(WIFI_LENGTH)) +#undef WIFI_OFFSET +#undef WIFI_LENGTH +#define WIFI_OFFSET 0 +#define WIFI_LENGTH STRING_NA_LENGTH +#else +#define WIFI_ENABLED +#endif + +/* + * mnfinfo_get_*() functions return ptr to static memory, which is not to be free()d! + * the returned memory ptr is safely accessible throughout the using program's runtime + * bad: free(mnfinfo_get_mac()); + * + * returns NULL on /dev/mtdX reading failure, "N/A" if the particular device + * doesn't support the field, or a dummy string if the mtdblock space contains garbage +*/ +char* mnfinfo_get_mac(void); +char* mnfinfo_get_name(void); +char* mnfinfo_get_maceth(void); +char* mnfinfo_get_sn(void); +char* mnfinfo_get_hwver(void); +char* mnfinfo_get_batch(void); +char* mnfinfo_get_wps(void); +char* mnfinfo_get_wifi_pw(void); +char* mnfinfo_get_sim_pin(uint8_t sim_id); + +// returns true on success +bool mnfinfo_set_sim_pin(uint8_t sim_id, const char *pin); diff --git a/root/package/utils/mnfinfo/src/src/include/rut2.h b/root/package/utils/mnfinfo/src/src/include/rut2.h new file mode 100644 index 00000000..b4a12414 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/rut2.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 1 + +#define MTD_CONFIG_RO "/dev/mtd1" +#define MTD_CONFIG_RW "/dev/mtd1" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x70 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/include/rut3.h b/root/package/utils/mnfinfo/src/src/include/rut3.h new file mode 100644 index 00000000..b4a12414 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/rut3.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 1 + +#define MTD_CONFIG_RO "/dev/mtd1" +#define MTD_CONFIG_RW "/dev/mtd1" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x70 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/include/rutx.h b/root/package/utils/mnfinfo/src/src/include/rutx.h new file mode 100644 index 00000000..4976a3b6 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/rutx.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 4 + +#define MTD_CONFIG_RO "/dev/mtd13" +#define MTD_CONFIG_RW "/dev/mtd14" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x00 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/include/trb1.h b/root/package/utils/mnfinfo/src/src/include/trb1.h new file mode 100644 index 00000000..6003e6bb --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/trb1.h @@ -0,0 +1,17 @@ +#define MAX_SIM_ID 1 + +#define MTD_CONFIG_RO "/dev/mtd7" +#define MTD_CONFIG_RW "/dev/mtd7" + +#define MAC_OFFSET 0x50 +#define MAC_LENGTH 12 +#define NAME_OFFSET 0x20 +#define NAME_LENGTH 12 +#define SERIAL_OFFSET 0x10 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 3 +#define HWVER_OFFSET 0x30 +#define HWVER_LENGTH 4 +#define SIMPIN_LENGTH 4 +#define SIMPIN_OFFSET 0x70 diff --git a/root/package/utils/mnfinfo/src/src/include/trb2.h b/root/package/utils/mnfinfo/src/src/include/trb2.h new file mode 100644 index 00000000..bbb281f9 --- /dev/null +++ b/root/package/utils/mnfinfo/src/src/include/trb2.h @@ -0,0 +1,21 @@ +#define MAX_SIM_ID 2 + +#define MTD_CONFIG_RO "/dev/mtd1" +#define MTD_CONFIG_RW "/dev/mtd1" + +#define MAC_OFFSET 0x00 +#define MAC_LENGTH 6 +#define NAME_OFFSET 0x10 +#define NAME_LENGTH 12 +#define WPS_OFFSET 0x20 +#define WPS_LENGTH 8 +#define SERIAL_OFFSET 0x30 +#define SERIAL_LENGTH 10 +#define BATCH_OFFSET 0x40 +#define BATCH_LENGTH 4 +#define HWVER_OFFSET 0x50 +#define HWVER_LENGTH 4 +#define SIMPIN_OFFSET 0x70 +#define SIMPIN_LENGTH 4 +#define WIFI_OFFSET 0x90 +#define WIFI_LENGTH 16 diff --git a/root/package/utils/mnfinfo/src/src/libmnfinfo.o b/root/package/utils/mnfinfo/src/src/libmnfinfo.o new file mode 100644 index 00000000..7ead455f Binary files /dev/null and b/root/package/utils/mnfinfo/src/src/libmnfinfo.o differ diff --git a/root/package/utils/mnfinfo/src/src/mnf_info.o b/root/package/utils/mnfinfo/src/src/mnf_info.o new file mode 100644 index 00000000..c782f073 Binary files /dev/null and b/root/package/utils/mnfinfo/src/src/mnf_info.o differ diff --git a/root/package/utils/mnfinfo/src/src/mnf_rpc.o b/root/package/utils/mnfinfo/src/src/mnf_rpc.o new file mode 100644 index 00000000..b57d1001 Binary files /dev/null and b/root/package/utils/mnfinfo/src/src/mnf_rpc.o differ diff --git a/root/target/linux/ipq40xx/base-files/bin/config_generate b/root/target/linux/ipq40xx/base-files/bin/config_generate index acd08754..09801874 100755 --- a/root/target/linux/ipq40xx/base-files/bin/config_generate +++ b/root/target/linux/ipq40xx/base-files/bin/config_generate @@ -113,7 +113,7 @@ generate_network() { local ipad case "$1" in lan) - ipad=${ipaddr:-"192.168.1.1"} + ipad=${ipaddr:-"192.168.100.1"} ;; *) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;; esac @@ -342,7 +342,7 @@ generate_static_system() { uci -q batch <<-EOF delete system.@system[0] set system.system='system' - set system.@system[-1].hostname='Teltonika-$hostname.com' + set system.@system[-1].hostname='OpenMPTCProuter' set system.@system[-1].timezone='UTC' set system.@system[-1].ttylogin='0' set system.@system[-1].log_size='128' @@ -365,9 +365,9 @@ generate_static_system() { if json_is_a system object; then json_select system local hostname - if json_get_var hostname hostname; then - uci -q set "system.@system[-1].hostname=$hostname" - fi + #if json_get_var hostname hostname; then + # uci -q set "system.@system[-1].hostname=$hostname" + #fi if json_is_a ntpserver array; then local keys key diff --git a/root/target/linux/ipq40xx/base-files/etc/fstab b/root/target/linux/ipq40xx/base-files/etc/fstab deleted file mode 100644 index 637a6340..00000000 --- a/root/target/linux/ipq40xx/base-files/etc/fstab +++ /dev/null @@ -1,2 +0,0 @@ -# -/dev/mtdblock15 /log jffs2 defaults 0 0 diff --git a/root/target/linux/ipq40xx/base-files/etc/init.d/mount_nand b/root/target/linux/ipq40xx/base-files/etc/init.d/mount_nand deleted file mode 100755 index 6f2e5c1b..00000000 --- a/root/target/linux/ipq40xx/base-files/etc/init.d/mount_nand +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2006-2011 OpenWrt.org - -START=10 -STOP=90 - -NAND_PART="nand_ubi" - -boot() { - # check if spi-nand is present - local mtd=$(grep -i -m 1 "$NAND_PART" /proc/mtd | cut -c 4- | cut -d ':' -f1) - [ -z "$mtd" ] && { - return 0 - } - - [ ! -e /nand_storage ] && { - mkdir /nand_storage - } - - # attach mtd device, automatically format if empty - ubiattach /dev/ubi_ctrl -m "$mtd" - - # create default volume, if volume not present - [ ! -e /dev/ubi0_0 ] && { - ubimkvol /dev/ubi0 -m -N nand_storage - } - - mount -t ubifs -o sync,noatime,rw ubi0:nand_storage /nand_storage/ -} diff --git a/root/target/linux/ipq40xx/base-files/etc/uci-defaults/01_mnf-info b/root/target/linux/ipq40xx/base-files/etc/uci-defaults/01_mnf-info index 8d1d13a7..0e5bf027 100644 --- a/root/target/linux/ipq40xx/base-files/etc/uci-defaults/01_mnf-info +++ b/root/target/linux/ipq40xx/base-files/etc/uci-defaults/01_mnf-info @@ -8,7 +8,7 @@ get_hw_info() { [ -n "$param" -a ${#param} == 12 ] && uci set "system"."@system[0]"."device_code"=$param hostname=${param:0:6} - [ -n "$hostname" -a ${#hostname} == 6 -a -z "$(uci -q get system.@system[0].hostname)" ] && uci set "system"."@system[0]"."hostname"=Teltonika-$hostname.com + [ -n "$hostname" -a ${#hostname} == 6 -a -z "$(uci -q get system.@system[0].hostname)" ] && uci set "system"."@system[0]"."hostname"=OpenMPTCProuter routername=${param:0:6} [ -n "$routername" -a ${#routername} == 6 -a -z "$(uci -q get system.@system[0].routername)" ] && uci set "system"."@system[0]"."routername"=$routername diff --git a/root/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/root/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh index 31c9deee..cb8d7658 100644 --- a/root/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/root/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh @@ -6,8 +6,8 @@ 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) - CI_UBIPART="UBI_DEV" local ubidev=$(nand_find_ubi $CI_UBIPART) local asus_root=$(nand_find_volume $ubidev jffs2) @@ -21,6 +21,29 @@ 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) + 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 @@ -55,11 +78,28 @@ zyxel_do_upgrade() { 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 |\ - pangu,l1000 |\ aruba,ap-303h |\ aruba,ap-365 |\ avm,fritzbox-7530 |\ @@ -73,10 +113,18 @@ platform_do_upgrade() { glinet,gl-ap1300 |\ luma,wrtq-329acn |\ mobipromo,cm520-79f |\ - zbt,z4019 |\ + 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 @@ -92,8 +140,8 @@ platform_do_upgrade() { CI_KERNPART="linux" nand_do_upgrade "$1" ;; + asus,rt-ac42u |\ asus,rt-ac58u) - CI_UBIPART="UBI_DEV" CI_KERNPART="linux" nand_do_upgrade "$1" ;; @@ -113,11 +161,22 @@ platform_do_upgrade() { 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 |\ @@ -125,10 +184,11 @@ platform_do_upgrade() { PART_NAME="inactive" platform_do_upgrade_dualboot_datachk "$1" ;; - teltonika,rutx10) + teltonika,rutx |\ + zte,mf286d) CI_UBIPART="rootfs" nand_do_upgrade "$1" - ;; + ;; zyxel,nbg6617) zyxel_do_upgrade "$1" ;; @@ -137,3 +197,12 @@ platform_do_upgrade() { ;; esac } + +platform_copy_config() { + case "$(board_name)" in + glinet,gl-b2200) + emmc_copy_config + ;; + esac + return 0; +} diff --git a/root/target/linux/ipq40xx/image/generic.mk b/root/target/linux/ipq40xx/image/generic.mk index 1c649b1a..b5ac9f1b 100644 --- a/root/target/linux/ipq40xx/image/generic.mk +++ b/root/target/linux/ipq40xx/image/generic.mk @@ -830,8 +830,6 @@ define Device/teltonika_rutx BOARD_NAME := rutx SOC := qcom-ipq4018 DEVICE_DTS_DIR := ../dts -# DEVICE_DTS := qcom-ipq4018-rutx-12 qcom-ipq4018-rutx-08_10 qcom-ipq4018-rutx-09_11 qcom-ipq4018-rutx-R1 qcom-ipq4018-rutx-STM32 -# DEVICE_DTS := qcom-ipq4018-rutx-12 DEVICE_DTS := $(foreach dts,$(notdir $(wildcard $(PLATFORM_DIR)/dts/*.dts)),$(patsubst %.dts,%,$(dts))) DEVICE_DTS_CONFIG := config@5 KERNEL = kernel-bin | gzip | fit-rutx gzip "$$(KDIR)/{$$(subst $$(space),$$(comma),$$(addprefix image-,$$(addsuffix .dtb,$$(DEVICE_DTS))))}" @@ -840,10 +838,10 @@ define Device/teltonika_rutx PAGESIZE := 2048 FILESYSTEMS := squashfs KERNEL_IN_UBI := 1 - IMAGES := sysupgrade.bin - IMAGE/sysupgrade.bin := append-ubi | qsdk-ipq-factory-nand | append-rutx-metadata -# IMAGE/sysupgrade.bin := append-ubi | UbootFw | append-rutx-metadata -# DEVICE_PACKAGES := uboot-ipq4xx ipq-wifi-teltonika_rutx kmod-bluetooth kmod-r2ec + IMAGES := factory.bin + IMAGE/factory.bin := append-ubi | qsdk-ipq-factory-nand | append-rutx-metadata + IMAGES += sysupgrade.bin + IMAGE/sysupgrade.bin := append-ubi | qsdk-ipq-factory-nand | append-metadata DEVICE_PACKAGES := ipq-wifi-teltonika_rutx kmod-bluetooth kmod-r2ec HW_SUPPORT := io_expander%stm32:shiftreg_1 endef