diff --git a/etc/config/ttyd b/etc/config/ttyd deleted file mode 100644 index 904ff70..0000000 --- a/etc/config/ttyd +++ /dev/null @@ -1,6 +0,0 @@ - -config ttyd - option interface '@lan' - option debug '7' - option command '/usr/bin/login' - diff --git a/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/control b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/control new file mode 100644 index 0000000..0de1bc9 --- /dev/null +++ b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/control @@ -0,0 +1,14 @@ +Package: atinout +Version: 0.9.1 +Depends: libc +Source: feeds/kiddin9/atinout +SourceName: atinout +License: GPLv2 +LicenseFiles: LICENSE +Section: net +SourceDateEpoch: 1691250335 +Maintainer: Adrian Guenter +Architecture: aarch64_cortex-a53 +Installed-Size: 3571 +Description: Atinout is a program that will execute AT commands in sequence and + capture the response from the modem. diff --git a/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/postinst b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/postinst new file mode 100755 index 0000000..3bba77c --- /dev/null +++ b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/postinst @@ -0,0 +1,5 @@ +#!/bin/sh +[ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0 +[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0 +. ${IPKG_INSTROOT}/lib/functions.sh +default_postinst $0 $@ diff --git a/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/prerm b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/prerm new file mode 100755 index 0000000..12d06ec --- /dev/null +++ b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/CONTROL/prerm @@ -0,0 +1,4 @@ +#!/bin/sh +[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0 +. ${IPKG_INSTROOT}/lib/functions.sh +default_prerm $0 $@ diff --git a/ipk-source/atinout_0.9.1_aarch64_cortex-a53/build-ipk b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/build-ipk new file mode 100755 index 0000000..eb83cf6 --- /dev/null +++ b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/build-ipk @@ -0,0 +1,74 @@ +#!/bin/sh + +# Script for building OpenWRT .ipk packages using tar by iamromulan +# Works with SDXPPINN OpenWRT - iamromulan +# This script accepts an optional path to the directory containing the `CONTROL` and `root` directories. +# Usage: ./build-ipk.sh [path] +# If no path is provided, the script will look in the current directory for `CONTROL` and `root` directories. +# This will spit out an ipk in the current directory + +# Check if the script is run as root. If not, rerun with sudo. +if [ "$(id -u)" -ne 0 ]; then + echo "Script is not running as root. Re-executing with sudo..." + exec sudo "$0" "$@" +fi + +# Set the default build path to the current directory +build_path="." + +# Check if a path is provided as the first argument +if [ "$1" ]; then + build_path="$1" +fi + +# Check if the required directories are present in the specified path +if [ ! -d "${build_path}/CONTROL" ] || [ ! -d "${build_path}/root" ]; then + echo "Error: CONTROL and root directories must be present in the specified path (${build_path})." + exit 1 +fi + +# Extract values from the CONTROL/control file in the specified path +pkgname=$(grep -i '^Package:' "${build_path}/CONTROL/control" | awk '{print $2}') +version=$(grep -i '^Version:' "${build_path}/CONTROL/control" | awk '{print $2}') +architecture=$(grep -i '^Architecture:' "${build_path}/CONTROL/control" | awk '{print $2}') + +# Check if values are extracted correctly +if [ -z "$pkgname" ] || [ -z "$version" ] || [ -z "$architecture" ]; then + echo "Error: Failed to extract Package, Version, or Architecture from ${build_path}/CONTROL/control." + exit 1 +fi + +# Set the final IPK name based on the extracted values +ipkname="${pkgname}_${version}_${architecture}.ipk" + +# Ensure all CONTROL scripts are executable +echo "Setting permissions for CONTROL scripts..." +chmod +x "${build_path}/CONTROL"/* + +# Set ownership for CONTROL and root files +echo "Setting ownership for all package files..." +chown -R root:root "${build_path}/CONTROL"/* +chown -R root:root "${build_path}/root"/* + +# Create control.tar.gz from the CONTROL directory +echo "Creating control.tar.gz..." +tar -czvf control.tar.gz -C "${build_path}/CONTROL" . + +# Create data.tar.gz from the root directory +echo "Creating data.tar.gz..." +tar -czvf data.tar.gz -C "${build_path}/root" . + +# Create debian-binary file (must contain exactly "2.0" without a newline) +echo -n "2.0" > debian-binary +chown -R root:root debian-binary + +# Combine the components into the final .ipk file using tar +echo "Packaging ${ipkname}..." +tar -czvf "$ipkname" debian-binary control.tar.gz data.tar.gz + +# Clean up intermediate files +echo "Cleaning up temporary files..." +rm -f control.tar.gz data.tar.gz debian-binary + +echo "IPK package ${ipkname} created successfully using tar." + diff --git a/ipk-source/atinout_0.9.1_aarch64_cortex-a53/root/lib/upgrade/keep.d/atinout b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/root/lib/upgrade/keep.d/atinout new file mode 100644 index 0000000..f8fb06c --- /dev/null +++ b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/root/lib/upgrade/keep.d/atinout @@ -0,0 +1,2 @@ +/etc/config/ +/etc/atinout/ diff --git a/ipk-source/atinout_0.9.1_aarch64_cortex-a53/root/usr/bin/atinout b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/root/usr/bin/atinout new file mode 100755 index 0000000..9c483b5 Binary files /dev/null and b/ipk-source/atinout_0.9.1_aarch64_cortex-a53/root/usr/bin/atinout differ diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/control b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/control new file mode 100644 index 0000000..5a7a71b --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/control @@ -0,0 +1,12 @@ +Package: luci-app-atinout-mod +Version: 1.3.4-20241006 +Depends: libc, atinout, luci-compat +Source: package/luci-app-atinout-mod +SourceName: luci-app-atinout-mod +License: GPLv3 +Section: luci +SourceDateEpoch: 1636930326 +Maintainer: OpenWrt LuCI community +Architecture: all +Installed-Size: 3790 +Description: Web UI for atinout modded by iamromulan preset for use on SDXPINN diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/postinst b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/postinst new file mode 100755 index 0000000..3bba77c --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/postinst @@ -0,0 +1,5 @@ +#!/bin/sh +[ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0 +[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0 +. ${IPKG_INSTROOT}/lib/functions.sh +default_postinst $0 $@ diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/postinst-pkg b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/postinst-pkg new file mode 100755 index 0000000..2debeb3 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/postinst-pkg @@ -0,0 +1,7 @@ +#!/bin/sh +chmod +x /sbin/set_at_port.sh +chmod +x /usr/bin/luci-app-atinout +rm -rf /tmp/luci-indexcache +rm -rf /tmp/luci-modulecache/ +/sbin/set_at_port.sh +exit 0 diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/prerm b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/prerm new file mode 100755 index 0000000..12d06ec --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/CONTROL/prerm @@ -0,0 +1,4 @@ +#!/bin/sh +[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0 +. ${IPKG_INSTROOT}/lib/functions.sh +default_prerm $0 $@ diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/build-ipk b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/build-ipk new file mode 100755 index 0000000..eb83cf6 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/build-ipk @@ -0,0 +1,74 @@ +#!/bin/sh + +# Script for building OpenWRT .ipk packages using tar by iamromulan +# Works with SDXPPINN OpenWRT - iamromulan +# This script accepts an optional path to the directory containing the `CONTROL` and `root` directories. +# Usage: ./build-ipk.sh [path] +# If no path is provided, the script will look in the current directory for `CONTROL` and `root` directories. +# This will spit out an ipk in the current directory + +# Check if the script is run as root. If not, rerun with sudo. +if [ "$(id -u)" -ne 0 ]; then + echo "Script is not running as root. Re-executing with sudo..." + exec sudo "$0" "$@" +fi + +# Set the default build path to the current directory +build_path="." + +# Check if a path is provided as the first argument +if [ "$1" ]; then + build_path="$1" +fi + +# Check if the required directories are present in the specified path +if [ ! -d "${build_path}/CONTROL" ] || [ ! -d "${build_path}/root" ]; then + echo "Error: CONTROL and root directories must be present in the specified path (${build_path})." + exit 1 +fi + +# Extract values from the CONTROL/control file in the specified path +pkgname=$(grep -i '^Package:' "${build_path}/CONTROL/control" | awk '{print $2}') +version=$(grep -i '^Version:' "${build_path}/CONTROL/control" | awk '{print $2}') +architecture=$(grep -i '^Architecture:' "${build_path}/CONTROL/control" | awk '{print $2}') + +# Check if values are extracted correctly +if [ -z "$pkgname" ] || [ -z "$version" ] || [ -z "$architecture" ]; then + echo "Error: Failed to extract Package, Version, or Architecture from ${build_path}/CONTROL/control." + exit 1 +fi + +# Set the final IPK name based on the extracted values +ipkname="${pkgname}_${version}_${architecture}.ipk" + +# Ensure all CONTROL scripts are executable +echo "Setting permissions for CONTROL scripts..." +chmod +x "${build_path}/CONTROL"/* + +# Set ownership for CONTROL and root files +echo "Setting ownership for all package files..." +chown -R root:root "${build_path}/CONTROL"/* +chown -R root:root "${build_path}/root"/* + +# Create control.tar.gz from the CONTROL directory +echo "Creating control.tar.gz..." +tar -czvf control.tar.gz -C "${build_path}/CONTROL" . + +# Create data.tar.gz from the root directory +echo "Creating data.tar.gz..." +tar -czvf data.tar.gz -C "${build_path}/root" . + +# Create debian-binary file (must contain exactly "2.0" without a newline) +echo -n "2.0" > debian-binary +chown -R root:root debian-binary + +# Combine the components into the final .ipk file using tar +echo "Packaging ${ipkname}..." +tar -czvf "$ipkname" debian-binary control.tar.gz data.tar.gz + +# Clean up intermediate files +echo "Cleaning up temporary files..." +rm -f control.tar.gz data.tar.gz debian-binary + +echo "IPK package ${ipkname} created successfully using tar." + diff --git a/etc/config/atcommands.user b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/config/atcommands.user similarity index 87% rename from etc/config/atcommands.user rename to ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/config/atcommands.user index 4e99a18..e41174c 100644 --- a/etc/config/atcommands.user +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/config/atcommands.user @@ -24,3 +24,7 @@ Get Currently Enabled 4G/LTE Bands;AT+QNWPREFCFG="lte_band" View assigned IPv4/IPv6 addresses from the provider;AT+QMAP="WWAN" Enable IPPT paste in MAC for FF:FF:FF...;AT+QMAP="MPDN_rule",0,1,0,1,1,"FF:FF:FF:FF:FF:FF" Disable IPPT;AT+QMAP="MPDN_rule",0 +Set IPv4 DMZ....replace iphere;AT+QMAP="DMZ",1,4,iphere +Set IPv6 DMZ....replace iphere;AT+QMAP="DMZ",1,6,iphere +Disable IPv4 DMZ;AT+QMAP="DMZ",0,4 +Disable IPv6 DMZ;AT+QMAP="DMZ",0,6 diff --git a/etc/config/atinout b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/config/atinout similarity index 100% rename from etc/config/atinout rename to ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/config/atinout diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/uci-defaults/set_at_port.sh b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/uci-defaults/set_at_port.sh new file mode 100755 index 0000000..dea87a0 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/etc/uci-defaults/set_at_port.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Copyright 2020-2021 Rafał Wabik (IceG) - From eko.one.pl forum +# Licensed to the GNU General Public License v3.0. + +work=false +for port in /dev/ttyUSB* +do + [[ -e $port ]] || continue + gcom -d $port info &> /tmp/testusb + testUSB=`cat /tmp/testusb | grep "Error\|Can't"` + if [ -z "$testUSB" ]; then + work=$port + break + fi +done +rm -rf /tmp/testusb + +if [ $work != false ]; then +uci set atinout.@atinout[0].atcport=$work +uci commit atinout +fi diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/sbin/set_at_port.sh b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/sbin/set_at_port.sh new file mode 100755 index 0000000..dea87a0 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/sbin/set_at_port.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Copyright 2020-2021 Rafał Wabik (IceG) - From eko.one.pl forum +# Licensed to the GNU General Public License v3.0. + +work=false +for port in /dev/ttyUSB* +do + [[ -e $port ]] || continue + gcom -d $port info &> /tmp/testusb + testUSB=`cat /tmp/testusb | grep "Error\|Can't"` + if [ -z "$testUSB" ]; then + work=$port + break + fi +done +rm -rf /tmp/testusb + +if [ $work != false ]; then +uci set atinout.@atinout[0].atcport=$work +uci commit atinout +fi diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/bin/luci-app-atinout b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/bin/luci-app-atinout new file mode 100755 index 0000000..f511f40 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/bin/luci-app-atinout @@ -0,0 +1,8 @@ +#!/bin/sh + +ARGS=$1 +DEVPORT=$(uci -q get atinout.general.atcport) + +if [ "$DEVPORT" ]; then + echo "${ARGS}" | /usr/bin/atinout - ${DEVPORT} - +fi diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/controller/modem/atc.lua b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/controller/modem/atc.lua new file mode 100644 index 0000000..f60a8c7 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/controller/modem/atc.lua @@ -0,0 +1,49 @@ +local e=require"luci.util" +local e=require"nixio.fs" +local e=require"luci.sys" +local e=require"luci.http" +local e=require"luci.dispatcher" +local e=require"luci.http" +local t=require"luci.sys" +local t=require"luci.model.uci".cursor() +module("luci.controller.modem.atc",package.seeall) +function index() +entry({"admin","modem"},firstchild(),"Modem",30).dependent=false +entry({"admin","modem","atc"},alias("admin","modem","atc","atcommand"),translate("AT Commands"),10).acl_depends={"luci-app-atinout-mod"} +entry({"admin","modem","atc","atcommand"},template("modem/atcommand"),translate("AT Commands"),10) +entry({"admin","modem","atc","atconfig"},cbi("modem/atconfig"),translate("Configuration"),20) +entry({"admin","modem","webcmd"},call("webcmd")) +entry({"admin","modem","atc","user_atc"},call("useratc"),nil).leaf=true +end +function webcmd() +local t=e.formvalue("cmd") +if t then +local t=io.popen("/usr/bin/luci-app-atinout "..t:gsub("[$]","\\\$"):gsub("\"","\\\"").." 2>&1") +local a=t:read("*a") +t:close() +e.write(tostring(a)) +else +e.write_json(e.formvalue()) +end +end +function uussd(t) +local e=nixio.fs.access("/etc/config/atcommands.user")and +io.popen("cat /etc/config/atcommands.user") +if e then +for a in e:lines()do +local e=a +if e then +t[#t+1]={ +usd=e +} +end +end +e:close() +end +end +function useratc() +local e={} +uussd(e) +luci.http.prepare_content("application/json") +luci.http.write_json(e) +end diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/model/cbi/modem/atconfig.lua b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/model/cbi/modem/atconfig.lua new file mode 100644 index 0000000..636958c --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/model/cbi/modem/atconfig.lua @@ -0,0 +1,35 @@ +local e=require"luci.util" +local o=require"nixio.fs" +local e=require"luci.sys" +local e=require"luci.http" +local e=require"luci.dispatcher" +local e=require"luci.http" +local e=require"luci.sys" +local e=require"luci.model.uci".cursor() +local n="/etc/config/atcommands.user" +local t +local e +local i +local a=nixio.fs.glob("/dev/tty[A-Z][A-Z]*") +t=Map("atinout",translate("Atinout Configuration"), +translate("Configuration panel for atinout.")) +e=t:section(NamedSection,'general',"atinout",""..translate("AT Commands Terminal Settings")) +e.anonymous=true +i=e:option(Value,"atcport",translate("AT Command Sending Port")) +if a then +local e +for e in a do +i:value(e,e) +end +end +local e=e:option(TextValue,"user_atcommands",translate("User AT Commands"),translate("Each line must have the following format: 'AT Command name;AT Command'. Save to file '/etc/config/atcommands.user'.")) +e.rows=20 +e.rmempty=false +function e.cfgvalue(e,e) +return o.readfile(n) +end +function e.write(t,t,e) +e=e:gsub("\r\n","\n") +o.writefile(n,e) +end +return t diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/view/modem/atcommand.htm b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/view/modem/atcommand.htm new file mode 100755 index 0000000..b4110df --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/lib/lua/luci/view/modem/atcommand.htm @@ -0,0 +1,133 @@ +<%+header%> + +

<%:AT Commands%>

+ +

+

<%:Sending commands to modem%>

+
+ +
+
<%:User AT Commands%>:
+ +
+ +
+
+
+ +
+
<%:Command to send%>:
+
+
+ +
+ +
+
<%:Reply%>: +

+

+ +
+ +
+ +
+ + + +<%+footer%> + diff --git a/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/share/rpcd/acl.d/luci-app-atinout-mod.json b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/share/rpcd/acl.d/luci-app-atinout-mod.json new file mode 100755 index 0000000..3897cf2 --- /dev/null +++ b/ipk-source/luci-app-atinout-mod_1.3.4-20241006_all/root/usr/share/rpcd/acl.d/luci-app-atinout-mod.json @@ -0,0 +1,17 @@ +{ + "luci-app-atinout-mod": { + "description": "Grant UCI and file access for luci-app-atinout-mod", + "read": { + "uci": [ "atinout" ] + }, + "write": { + "uci": [ "atinout" ] + } + } +} + + + + + + diff --git a/ipk-source/sdxpinn-console-menu/CONTROL/control b/ipk-source/sdxpinn-console-menu/CONTROL/control new file mode 100755 index 0000000..c2539cd --- /dev/null +++ b/ipk-source/sdxpinn-console-menu/CONTROL/control @@ -0,0 +1,6 @@ +Package: sdxpinn-console-menu +Version: 0.0.1 +Architecture: aarch64_cortex-a53 +Maintainer: Cameron Thompson iamromulan@github.com +Description: A custom CLI menu system for mamnagment of Quectel RM5xx modems +Depends: libc sdxpinn-mount-fix diff --git a/ipk-source/sdxpinn-console-menu/build-ipk b/ipk-source/sdxpinn-console-menu/build-ipk new file mode 100755 index 0000000..eb83cf6 --- /dev/null +++ b/ipk-source/sdxpinn-console-menu/build-ipk @@ -0,0 +1,74 @@ +#!/bin/sh + +# Script for building OpenWRT .ipk packages using tar by iamromulan +# Works with SDXPPINN OpenWRT - iamromulan +# This script accepts an optional path to the directory containing the `CONTROL` and `root` directories. +# Usage: ./build-ipk.sh [path] +# If no path is provided, the script will look in the current directory for `CONTROL` and `root` directories. +# This will spit out an ipk in the current directory + +# Check if the script is run as root. If not, rerun with sudo. +if [ "$(id -u)" -ne 0 ]; then + echo "Script is not running as root. Re-executing with sudo..." + exec sudo "$0" "$@" +fi + +# Set the default build path to the current directory +build_path="." + +# Check if a path is provided as the first argument +if [ "$1" ]; then + build_path="$1" +fi + +# Check if the required directories are present in the specified path +if [ ! -d "${build_path}/CONTROL" ] || [ ! -d "${build_path}/root" ]; then + echo "Error: CONTROL and root directories must be present in the specified path (${build_path})." + exit 1 +fi + +# Extract values from the CONTROL/control file in the specified path +pkgname=$(grep -i '^Package:' "${build_path}/CONTROL/control" | awk '{print $2}') +version=$(grep -i '^Version:' "${build_path}/CONTROL/control" | awk '{print $2}') +architecture=$(grep -i '^Architecture:' "${build_path}/CONTROL/control" | awk '{print $2}') + +# Check if values are extracted correctly +if [ -z "$pkgname" ] || [ -z "$version" ] || [ -z "$architecture" ]; then + echo "Error: Failed to extract Package, Version, or Architecture from ${build_path}/CONTROL/control." + exit 1 +fi + +# Set the final IPK name based on the extracted values +ipkname="${pkgname}_${version}_${architecture}.ipk" + +# Ensure all CONTROL scripts are executable +echo "Setting permissions for CONTROL scripts..." +chmod +x "${build_path}/CONTROL"/* + +# Set ownership for CONTROL and root files +echo "Setting ownership for all package files..." +chown -R root:root "${build_path}/CONTROL"/* +chown -R root:root "${build_path}/root"/* + +# Create control.tar.gz from the CONTROL directory +echo "Creating control.tar.gz..." +tar -czvf control.tar.gz -C "${build_path}/CONTROL" . + +# Create data.tar.gz from the root directory +echo "Creating data.tar.gz..." +tar -czvf data.tar.gz -C "${build_path}/root" . + +# Create debian-binary file (must contain exactly "2.0" without a newline) +echo -n "2.0" > debian-binary +chown -R root:root debian-binary + +# Combine the components into the final .ipk file using tar +echo "Packaging ${ipkname}..." +tar -czvf "$ipkname" debian-binary control.tar.gz data.tar.gz + +# Clean up intermediate files +echo "Cleaning up temporary files..." +rm -f control.tar.gz data.tar.gz debian-binary + +echo "IPK package ${ipkname} created successfully using tar." + diff --git a/usr/bin/download b/ipk-source/sdxpinn-console-menu/root/usr/bin/download old mode 100644 new mode 100755 similarity index 92% rename from usr/bin/download rename to ipk-source/sdxpinn-console-menu/root/usr/bin/download index fc67251..d67c3a5 --- a/usr/bin/download +++ b/ipk-source/sdxpinn-console-menu/root/usr/bin/download @@ -1,15 +1,16 @@ #!/bin/sh +# Disabled for now # Determine the absolute path of the script SCRIPT_PATH=$(realpath "$0") -download() { - if [ "$1" = "github" ]; then - download_github_directory "$2" "$3" - else - download_file "$1" "$2" - fi -} +#download() { +# if [ "$1" = "github" ]; then +# download_github_directory "$2" "$3" +# else +# download_file "$1" "$2" +# fi +#} download_file() { url="$1" @@ -106,9 +107,10 @@ download_github_directory() { }' } -if [ "$#" -eq 0 ]; then - echo "Usage: download [output_directory]" +#if [ "$#" -eq 0 ]; then +# echo "Usage: download [output_directory]" exit 1 -else +#else download "$@" -fi +#fi +exit 0 diff --git a/usr/bin/menu b/ipk-source/sdxpinn-console-menu/root/usr/bin/menu old mode 100644 new mode 100755 similarity index 65% rename from usr/bin/menu rename to ipk-source/sdxpinn-console-menu/root/usr/bin/menu index 5095ae1..03e498d --- a/usr/bin/menu +++ b/ipk-source/sdxpinn-console-menu/root/usr/bin/menu @@ -1,19 +1,13 @@ #!/bin/ash #WORK IN PROGRESS -#Console Menu # Define toolkit paths GITUSER="iamromulan" GITREPO="quectel-rgmii-toolkit" -GITTREE="SDXPINN" +GITTREE="development-SDXPINN" GITMAINTREE="SDXPINN" GITDEVTREE="development-SDXPINN" -TMP_DIR="/tmp" -USRDATA_DIR="/data" -SIMPLE_FIREWALL_DIR="/data/simplefirewall" -SIMPLE_FIREWALL_SCRIPT="$SIMPLE_FIREWALL_DIR/simplefirewall.sh" -SIMPLE_FIREWALL_SYSTEMD_DIR="$SIMPLE_FIREWALL_DIR/systemd" # Function to remount file system as read-write remount_rw() { @@ -25,15 +19,27 @@ remount_ro() { mount -o remount,ro / } - -overlay_check() { - if ! grep -qs '/real_rootfs ' /proc/mounts; then - echo -e "\e[31mYou do not have an overlay setup!\e[0m" - return 1 - fi +send_at_commands_using_atcmd() { + while true; do + echo -e "\e[1;32mEnter AT command (or type 'exit' to return to the main menu): \e[0m" + read at_command + if [ "$at_command" = "exit" ]; then + echo -e "\e[1;32mReturning to the main menu.\e[0m" + break + fi + echo -e "\e[1;32mSending AT command: $at_command\e[0m" + echo -e "\e[1;32mResponse:\e[0m" + # Use atcmd to send the command and display the output + atcmd_output=$(atcmd "'$at_command'") + echo "$atcmd_output" + echo -e "\e[1;32m----------------------------------------\e[0m" + done } + + + ttl_setup() { local ttl_file="/etc/firewall.user.ttl" local lan_utils_script="/etc/data/lanUtils.sh" @@ -109,87 +115,6 @@ set_root_passwd() { passwd } -# Function for Tailscale Submenu -tailscale_menu() { - while true; do - echo -e "\e[1;32mTailscale Menu\e[0m" - echo -e "\e[1;32m1) Install/Update Tailscale\e[0m" - echo -e "\e[1;36m2) Configure Tailscale\e[0m" - echo -e "\e[1;31m3) Return to Main Menu\e[0m" - read -p "Enter your choice: " tailscale_choice - - case $tailscale_choice in - 1) install_update_tailscale ;; - 2) configure_tailscale ;; - 3) break ;; - *) echo "Invalid option" ;; - esac - done -} - -# Function to install, update, or remove Tailscale -install_update_tailscale() { - echo -e "\e[1;31mInstalling Tailscale from opkg...\e[0m" - opkg install tailscale - if [ $? -ne 0 ]; then - echo -e "\e[1;31mFailed to install Tailscale via opkg.\e[0m" - return 1 - fi - - echo -e "\e[1;32mTailscale has been installed via opkg.\e[0m" - echo -e "\e[1;32mUpdating to the latest Tailscale version...\e[0m" - - # Stop Running Service - service tailscale stop - - # Define variables for the download - TAILSCALE_URL="https://pkgs.tailscale.com/stable/tailscale_1.74.1_arm64.tgz" - TAILSCALE_TGZ="/tmp/tailscale_1.74.1_arm64.tgz" - TAILSCALE_TMP_DIR="/tmp/tailscale_update" - - # Download the latest Tailscale package - echo -e "\e[1;32mDownloading latest Tailscale package...\e[0m" - curl "$TAILSCALE_URL" -o "$TAILSCALE_TGZ" - if [ $? -ne 0 ]; then - echo -e "\e[1;31mFailed to download Tailscale package. Please check your internet connection.\e[0m" - rm -f "$TAILSCALE_TGZ" - return 1 - fi - - # Extract the package - echo -e "\e[1;32mExtracting Tailscale package...\e[0m" - mkdir -p "$TAILSCALE_TMP_DIR" - tar -xzf "$TAILSCALE_TGZ" -C "$TAILSCALE_TMP_DIR" - if [ $? -ne 0 ]; then - echo -e "\e[1;31mFailed to extract Tailscale package.\e[0m" - rm -f "$TAILSCALE_TGZ" - rm -rf "$TAILSCALE_TMP_DIR" - return 1 - fi - - # Replace the binaries with force option - echo -e "\e[1;32mUpdating Tailscale binaries...\e[0m" - cp -f "$TAILSCALE_TMP_DIR/tailscale_1.74.1_arm64/tailscale" /usr/sbin/ - cp -f "$TAILSCALE_TMP_DIR/tailscale_1.74.1_arm64/tailscaled" /usr/sbin/ - if [ $? -ne 0 ]; then - echo -e "\e[1;31mFailed to copy new Tailscale binaries.\e[0m" - rm -f "$TAILSCALE_TGZ" - rm -rf "$TAILSCALE_TMP_DIR" - return 1 - fi - - # Set the correct permissions - chmod +x /usr/sbin/tailscale /usr/sbin/tailscaled - - # Clean up temporary files - rm -f "$TAILSCALE_TGZ" - rm -rf "$TAILSCALE_TMP_DIR" - - # Start Tailscale service if available - service tailscale start - echo -e "\e[1;32mTailscale version 1.74.1 installed\e[0m" -} - # Function to Configure Tailscale configure_tailscale() { @@ -282,49 +207,31 @@ while true; do echo " :+##+. " echo -e "\e[92m" - echo "Welcome to iamromulan's rcPCIe Toolkit script for Quectel RM55x Series modems!" + echo "Welcome to iamromulan's console menu for Quectel RM55x Series modems!" echo "Visit https://github.com/iamromulan for more!" echo -e "\e[0m" - echo -e "\e[91mThis is a test version of the toolkit for the new RM550/551 modems\e[0m" # Light Red + echo -e "\e[91mThis is a work in progress menu for RM550/551 modems\e[0m" # Light Red echo "Select an option:" echo -e "\e[0m" - echo -e "\e[94m1) TTL Setup\e[0m" # Light Blue - echo -e "\e[94m2) Set root password\e[0m" # Light Blue - echo -e "\e[94m3) Tailscale Management\e[0m" # Light Blue - echo -e "\e[92m4) Install Speedtest.net CLI app (speedtest command)\e[0m" # Light Green - echo -e "\e[93m5) Exit\e[0m" # Yellow (repeated color for exit option) + echo -e "\e[96m1) Send AT Commands\e[0m" # Cyan + echo -e "\e[92m2) Run the SDXPINN toolkit\e[0m" # Green + echo -e "\e[94m3) Run the development-SDXPINN toollkit (beta/test branch)\e[0m" # Light Blue + echo -e "\e[94m4) TTL Settings\e[0m" # Light Blue + echo -e "\e[94m5) Set root password\e[0m" # Light Blue + echo -e "\e[94m6) Tailscale Management\e[0m" # Light Blue + echo -e "\e[92m7) Run a speedtest.net speed test\e[0m" # Light Green + echo -e "\e[93m8) Exit\e[0m" # Yellow (repeated color for exit option) read -p "Enter your choice: " choice case $choice in - 1) - overlay_check - if [ $? -eq 1 ]; then continue; fi - ttl_setup - ;; - 2) - overlay_check - if [ $? -eq 1 ]; then continue; fi - set_root_passwd - ;; - 3) tailscale_menu ;; - 4) - overlay_check - if [ $? -eq 1 ]; then continue; fi - echo -e "\e[1;32mInstalling Speedtest.net CLI (speedtest command)\e[0m" - cd /usr/bin - curl -O https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-aarch64.tgz - tar -xzf ookla-speedtest-1.2.0-linux-aarch64.tgz - rm ookla-speedtest-1.2.0-linux-aarch64.tgz - rm speedtest.md - rm speedtest.5 - cd / - echo -e "\e[1;32mSpeedtest CLI (speedtest command) installed!!\e[0m" - echo -e "\e[1;32mTry running the command 'speedtest'\e[0m" - echo -e "\e[1;32mNote that it will not work unless you login to the root account first\e[0m" - echo -e "\e[1;32mNormally only an issue in adb, ttyd, and ssh you are forced to login\e[0m" - echo -e "\e[1;32mIf in adb just type login and then try to run the speedtest command\e[0m" - ;; - 5) echo -e "\e[1;32mGoodbye!\e[0m"; break ;; + 1) send_at_commands_using_atcmd ;; + 2) cd /tmp && wget -O rcPCIe_SDXPINN_toolkit.sh https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/SDXPINN/rcPCIe_SDXPINN_toolkit.sh && chmod +x rcPCIe_SDXPINN_toolkit.sh && ./rcPCIe_SDXPINN_toolkit.sh && cd / ;; + 3) cd /tmp && wget -O rcPCIe_SDXPINN_toolkit.sh https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/development-SDXPINN/rcPCIe_SDXPINN_toolkit.sh && chmod +x rcPCIe_SDXPINN_toolkit.sh && ./rcPCIe_SDXPINN_toolkit.sh && cd / ;; + 4) ttl_setup ;; + 5) set_root_passwd ;; + 6) configure_tailscale ;; + 7) speedtest ;; + 8) echo -e "\e[1;32mGoodbye!\e[0m"; break ;; *) echo -e "\e[1;31mInvalid option\e[0m" ;; esac done diff --git a/opkg-feed/Packages b/opkg-feed/Packages index 0a948ff..994b148 100644 --- a/opkg-feed/Packages +++ b/opkg-feed/Packages @@ -1,10 +1,3 @@ -Lost field SourceName, atinout -Lost field LicenseFiles, LICENSE -Lost field SourceDateEpoch, 1691250335 -Lost field Installed-Size, 3571 -Lost field SourceName, luci-app-atinout-mod -Lost field SourceDateEpoch, 1636930326 -Lost field Installed-Size, 3790 Package: atinout Version: 0.9.1 Depends: libc @@ -20,16 +13,100 @@ License: GPLv2 Package: luci-app-atinout-mod -Version: 1.3.2-20220315 +Version: 1.3.4-20241006 Depends: libc, atinout, luci-compat Section: luci Architecture: all Maintainer: OpenWrt LuCI community -MD5Sum: 92a24b32ebcbd41501895fc0748a22d1 -Size: 4617 -Filename: luci-app-atinout-mod_1.3.2-20220315_all.ipk +MD5Sum: 2dac55de763333c37dd1728957fc8294 +Size: 4827 +Filename: luci-app-atinout-mod_1.3.4-20241006_all.ipk Source: package/luci-app-atinout-mod Description: Web UI for atinout License: GPLv3 +Package: ookla-speedtest +Version: 1.2.0 +Depends: libc +Section: net +Architecture: aarch64_cortex-a53 +Maintainer: Ookla +MD5Sum: 2183f2df42a00380e761cace096e17c3 +Size: 10757762 +Filename: ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk +Source: speedtest.net/apps/cli +Description: speedtest.net CLI +License: GPLv3 + + +Package: sdxpinn-console-menu +Version: 0.0.1 +Depends: libc sdxpinn-mount-fix +Section: utils +Architecture: aarch64_cortex-a53 +Maintainer: iamromulan +MD5Sum: e4dd60a7725fb3df16e5ebc0f8d12330 +Size: 4902 +Filename: sdxpinn-console-menu_0.0.1_aarch64_cortex-a53.ipk +Source: github/iamromulan +Description: A custom CLI menu system for mamnagment of Quectel RM5xx modems +License: GPLv3 + + +Package: sdxpinn-mount-fix +Version: 1.1.0 +Depends: libc +Section: base +Architecture: aarch64_cortex-a53 +Maintainer: iamromulan +MD5Sum: f8e8f830a7ba794d3d090c206df2b729 +Size: 29357 +Filename: sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk +Source: github/iamromulan +Description: Creates a usable mount space and overlay for SDXPINN modems. Dependencies bundled: libinotifytools and inotifywait +License: GPLv3 + + +Package: sdxpinn-quecmanager +Version: 0.0.1 +Depends: libc sdxpinn-mount-fix atinout +Section: admin +Architecture: aarch64_cortex-a53 +Maintainer: Russel Yasol Cameron Thompson +MD5Sum: 60381135963551200ca0479aceaab617 +Size: 643499 +Filename: sdxpinn-quecmanager_0.0.1_aarch64_cortex-a53.ipk +Source: github/iamromulan +Description: A custom web UI desgined to run alongside luci for Quectel RM55x modems +License: GPLv3 + + +Package: tailscale +Version: 1.74.1-1 +Depends: libc tailscaled +Section: net +Architecture: aarch64_cortex-a53 +Maintainer: Jan Pavlinec +MD5Sum: 17b17e02759f162b73697f5a2d00e1d5 +Size: 9392904 +Filename: tailscale_1.74.1-1_aarch64_cortex-a53.ipk +Source: feeds/packages/net/tailscale +Description: It creates a secure network between your servers, computers, and cloud instances. Even when separated by firewalls or subnets. Updated by iamromulan to 1.74.1 +License: GPLv3 + + +Package: tailscaled +Version: 1.74.1-1 +Depends: libc ca-bundle kmod-tun +Section: net +Architecture: aarch64_cortex-a53 +Maintainer: Jan Pavlinec +MD5Sum: 3f1290daeb00519877d4cc0628bfe190 +Size: 17468475 +Filename: tailscaled_1.74.1-1_aarch64_cortex-a53.ipk +Source: feeds/packages/net/tailscale +Description: It creates a secure network between your servers, computers, and cloud instances. Even when separated by firewalls or subnets. Updated by iamromulan to 1.74.1 +License: GPLv3 + + diff --git a/opkg-feed/Packages.gz b/opkg-feed/Packages.gz index 8ecbf1e..857926b 100644 Binary files a/opkg-feed/Packages.gz and b/opkg-feed/Packages.gz differ diff --git a/opkg-feed/Packages.sig b/opkg-feed/Packages.sig index 0aa048f..17f87ae 100644 --- a/opkg-feed/Packages.sig +++ b/opkg-feed/Packages.sig @@ -1,2 +1,2 @@ -untrusted comment: signed by key 2585d2dfe7e59028 -RWQlhdLf5+WQKHWdQyQdLxIrKqkDw8qMwdMnUvku9kAeFA4ibt9OtqMfObgPHGgzc5ai7Bao7ngdDe6+6yAfx8MYBwtdYP36Zgc= +untrusted comment: signed by key 6262698f038d1226 +RWRiYmmPA40SJkznq10rfs6bQH4JWPaTgsi68fSXP0wo51V394xOKFMj5jluXjbBzozuAIBxA+ANBSAgcDc9Zk3IV3yloLyOpwc= diff --git a/opkg-feed/iamromulan-SDXPINN-repo.key b/opkg-feed/iamromulan-SDXPINN-repo.key index a751ff4..67ce58a 100644 --- a/opkg-feed/iamromulan-SDXPINN-repo.key +++ b/opkg-feed/iamromulan-SDXPINN-repo.key @@ -1,2 +1,2 @@ -untrusted comment: public key 2585d2dfe7e59028 -RWQlhdLf5+WQKAVdfAaG8TkXZi5WfCnsxMiupWrh0Lt2yEubx05UYYfx +untrusted comment: iamromulan-SDXPINN-repo +RWRiYmmPA40SJuEKQND0oYaMLANvANo+5dJCAlGvndAi5aHQP3KPZ9aE diff --git a/opkg-feed/luci-app-atinout-mod_1.3.2-20220315_all.ipk b/opkg-feed/luci-app-atinout-mod_1.3.2-20220315_all.ipk deleted file mode 100644 index b81152e..0000000 Binary files a/opkg-feed/luci-app-atinout-mod_1.3.2-20220315_all.ipk and /dev/null differ diff --git a/opkg-feed/luci-app-atinout-mod_1.3.4-20241006_all.ipk b/opkg-feed/luci-app-atinout-mod_1.3.4-20241006_all.ipk new file mode 100644 index 0000000..1535cbe Binary files /dev/null and b/opkg-feed/luci-app-atinout-mod_1.3.4-20241006_all.ipk differ diff --git a/ipk/ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk b/opkg-feed/ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk similarity index 100% rename from ipk/ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk rename to opkg-feed/ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk diff --git a/opkg-feed/sdxpinn-console-menu_0.0.1_aarch64_cortex-a53.ipk b/opkg-feed/sdxpinn-console-menu_0.0.1_aarch64_cortex-a53.ipk new file mode 100644 index 0000000..0520116 Binary files /dev/null and b/opkg-feed/sdxpinn-console-menu_0.0.1_aarch64_cortex-a53.ipk differ diff --git a/ipk/sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk b/opkg-feed/sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk similarity index 100% rename from ipk/sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk rename to opkg-feed/sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk diff --git a/ipk/sdxpinn-quecmanager_0.0.1_aarch64_cortex-a53.ipk b/opkg-feed/sdxpinn-quecmanager_0.0.1_aarch64_cortex-a53.ipk similarity index 100% rename from ipk/sdxpinn-quecmanager_0.0.1_aarch64_cortex-a53.ipk rename to opkg-feed/sdxpinn-quecmanager_0.0.1_aarch64_cortex-a53.ipk diff --git a/ipk/tailscale_1.74.1-1_aarch64_cortex-a53.ipk b/opkg-feed/tailscale_1.74.1-1_aarch64_cortex-a53.ipk similarity index 100% rename from ipk/tailscale_1.74.1-1_aarch64_cortex-a53.ipk rename to opkg-feed/tailscale_1.74.1-1_aarch64_cortex-a53.ipk diff --git a/ipk/tailscaled_1.74.1-1_aarch64_cortex-a53.ipk b/opkg-feed/tailscaled_1.74.1-1_aarch64_cortex-a53.ipk similarity index 100% rename from ipk/tailscaled_1.74.1-1_aarch64_cortex-a53.ipk rename to opkg-feed/tailscaled_1.74.1-1_aarch64_cortex-a53.ipk diff --git a/rcPCIe_SDXPINN_toolkit.sh b/rcPCIe_SDXPINN_toolkit.sh index 8349c78..4a30bd5 100644 --- a/rcPCIe_SDXPINN_toolkit.sh +++ b/rcPCIe_SDXPINN_toolkit.sh @@ -73,7 +73,7 @@ install_mount_fix() { fi # Install mount-fix cd /tmp - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/ipk/sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk + curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/opkg-feed/sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk opkg install sdxpinn-mount-fix_1.1.0_aarch64_cortex-a53.ipk } @@ -86,29 +86,21 @@ basic_55x_setup() { echo -e "\e[92m" echo "iamromulan's ipk/opkg repo added!...." echo -e "\e[0m" - opkg install atinout luci-app-atinout-mod + opkg install atinout luci-app-atinout-mod sdxpinn-console-menu + + # Get rid of the Quectel Login Binary opkg install shadow-login - opkg install luci-app-ttyd - opkg install mc-skins mv /bin/login /bin/login.old cp /usr/bin/login /bin/login - rm /etc/config/atcommands.user - rm /etc/config/atinout - rm /etc/config/ttyd - cd /etc/config/ - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/etc/config/atcommands.user - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/etc/config/ttyd - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/etc/config/atinout - cd / + + opkg install luci-app-ttyd + opkg install mc-skins + service uhttpd enable service dropbear enable service uhttpd start service dropbear start - echo -e "\e[92m" - echo "Set your root password:" - echo -e "\e[0m" - set_root_passwd - echo -e "\e[92m" + echo "Basic packages installed!" echo "Visit https://github.com/iamromulan for more!" echo -e "\e[0m" @@ -211,8 +203,8 @@ tailscale_menu() { install_update_tailscale() { echo -e "\e[1;31mInstalling Tailscale 1.74.1...\e[0m" cd /tmp - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/ipk/tailscaled_1.74.1-1_aarch64_cortex-a53.ipk - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/ipk/tailscale_1.74.1-1_aarch64_cortex-a53.ipk + curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/opkg-feed/tailscaled_1.74.1-1_aarch64_cortex-a53.ipk + curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/opkg-feed/tailscale_1.74.1-1_aarch64_cortex-a53.ipk opkg install tailscaled_1.74.1-1_aarch64_cortex-a53.ipk opkg install tailscale_1.74.1-1_aarch64_cortex-a53.ipk @@ -352,7 +344,7 @@ while true; do if [ $? -eq 1 ]; then continue; fi echo -e "\e[1;32mInstalling Speedtest.net CLI (speedtest command)\e[0m" cd /tmp - curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/ipk/ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk + curl -O https://raw.githubusercontent.com/$GITUSER/$GITREPO/$GITTREE/opkg-feed/ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk opkg install ookla-speedtest_1.2.0_aarch64_cortex-a53.ipk echo -e "\e[1;32mSpeedtest CLI (speedtest command) installed!!\e[0m" echo -e "\e[1;32mTry running the command 'speedtest'\e[0m" diff --git a/etc/init.d/socat-at-bridge-NOTREADY b/unused/init.d/socat-at-bridge-NOTREADY similarity index 100% rename from etc/init.d/socat-at-bridge-NOTREADY rename to unused/init.d/socat-at-bridge-NOTREADY