Merge pull request #19 from hkfuertes/uf02_new_device
Two new devices: UF02 & M9S
This commit is contained in:
28 files changed
+1129
-128
No files matched your search
@@ -0,0 +1,97 @@
|
||||
name: OpenWrt Builder (M9S)
|
||||
on:
|
||||
repository_dispatch:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
UPLOAD_BIN_DIR: true
|
||||
UPLOAD_FIRMWARE: true
|
||||
UPLOAD_RELEASE: false
|
||||
TZ: Europe/Madrid
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Initialization environment
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
|
||||
sudo docker image prune --all --force
|
||||
sudo -E apt-get -qq update
|
||||
sudo -E ./devenv/dependencies.sh
|
||||
sudo -E apt-get -qq autoremove --purge
|
||||
sudo -E apt-get -qq clean
|
||||
sudo timedatectl set-timezone "$TZ"
|
||||
|
||||
- name: "Clone OpenWrt source code"
|
||||
run: |
|
||||
df -hT $PWD
|
||||
git clone --depth=1 --branch "main" https://git.openwrt.org/openwrt/openwrt.git openwrt
|
||||
|
||||
- name: Load msm89xx target and uz801 packages
|
||||
run: |
|
||||
git apply --unsafe-paths enable_wcn36xx_mac80211.patch
|
||||
mv msm89xx openwrt/target/linux/msm89xx
|
||||
mv packages openwrt/package/uz801
|
||||
if [ "${{ inputs.openwrt_version }}" == "openwrt-24.10" ]; then
|
||||
sed -i '/^KERNEL_PATCHVER/c\KERNEL_PATCHVER:=6.6' openwrt/target/linux/msm89xx/Makefile
|
||||
fi
|
||||
|
||||
- name: Update and install feeds
|
||||
run: |
|
||||
cd openwrt
|
||||
rm -rf tmp
|
||||
./scripts/feeds update -a
|
||||
./scripts/feeds install -a
|
||||
|
||||
- name: "Load diffconfig"
|
||||
run: |
|
||||
[ -f diffconfig_m9s ] && mv diffconfig_m9s openwrt/.config
|
||||
|
||||
- name: Download package
|
||||
id: package
|
||||
run: |
|
||||
cd openwrt
|
||||
make defconfig
|
||||
make download -j8
|
||||
find dl -size -1024c -exec ls -l {} \; || true
|
||||
find dl -size -1024c -exec rm -f {} \; || true
|
||||
|
||||
- name: Compile the firmware
|
||||
id: compile
|
||||
run: |
|
||||
cd openwrt
|
||||
echo -e "$(nproc) thread compile"
|
||||
make -j$(nproc) || make -j1 || make -j1 V=s
|
||||
echo "status=success" >> $GITHUB_OUTPUT
|
||||
grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME
|
||||
[ -s DEVICE_NAME ] && echo "DEVICE_NAME=$(cat DEVICE_NAME)" >> $GITHUB_ENV
|
||||
echo "FILE_DATE=$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV
|
||||
|
||||
- name: Organize files
|
||||
id: organize
|
||||
if: env.UPLOAD_FIRMWARE == 'true' && !cancelled()
|
||||
run: |
|
||||
cd openwrt/bin/targets/*/*
|
||||
rm -rf packages
|
||||
echo "FIRMWARE=$PWD" >> $GITHUB_ENV
|
||||
echo "status=success" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload firmware
|
||||
uses: actions/upload-artifact@v4
|
||||
if: steps.organize.outputs.status == 'success' && !cancelled()
|
||||
with:
|
||||
name: openwrt_firmware_${{ env.DEVICE_NAME }}_${{ env.FILE_DATE }}
|
||||
path: |
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-gpt_both0.bin
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-boot.img
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-system.img
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3.manifest
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-flash.sh
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-firmware.zip
|
||||
@@ -0,0 +1,97 @@
|
||||
name: OpenWrt Builder (UF02)
|
||||
on:
|
||||
repository_dispatch:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
UPLOAD_BIN_DIR: true
|
||||
UPLOAD_FIRMWARE: true
|
||||
UPLOAD_RELEASE: false
|
||||
TZ: Europe/Madrid
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Initialization environment
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
|
||||
sudo docker image prune --all --force
|
||||
sudo -E apt-get -qq update
|
||||
sudo -E ./devenv/dependencies.sh
|
||||
sudo -E apt-get -qq autoremove --purge
|
||||
sudo -E apt-get -qq clean
|
||||
sudo timedatectl set-timezone "$TZ"
|
||||
|
||||
- name: "Clone OpenWrt source code"
|
||||
run: |
|
||||
df -hT $PWD
|
||||
git clone --depth=1 --branch "main" https://git.openwrt.org/openwrt/openwrt.git openwrt
|
||||
|
||||
- name: Load msm89xx target and uz801 packages
|
||||
run: |
|
||||
git apply --unsafe-paths enable_wcn36xx_mac80211.patch
|
||||
mv msm89xx openwrt/target/linux/msm89xx
|
||||
mv packages openwrt/package/uz801
|
||||
if [ "${{ inputs.openwrt_version }}" == "openwrt-24.10" ]; then
|
||||
sed -i '/^KERNEL_PATCHVER/c\KERNEL_PATCHVER:=6.6' openwrt/target/linux/msm89xx/Makefile
|
||||
fi
|
||||
|
||||
- name: Update and install feeds
|
||||
run: |
|
||||
cd openwrt
|
||||
rm -rf tmp
|
||||
./scripts/feeds update -a
|
||||
./scripts/feeds install -a
|
||||
|
||||
- name: "Load diffconfig"
|
||||
run: |
|
||||
[ -f diffconfig_uf02 ] && mv diffconfig_uf02 openwrt/.config
|
||||
|
||||
- name: Download package
|
||||
id: package
|
||||
run: |
|
||||
cd openwrt
|
||||
make defconfig
|
||||
make download -j8
|
||||
find dl -size -1024c -exec ls -l {} \; || true
|
||||
find dl -size -1024c -exec rm -f {} \; || true
|
||||
|
||||
- name: Compile the firmware
|
||||
id: compile
|
||||
run: |
|
||||
cd openwrt
|
||||
echo -e "$(nproc) thread compile"
|
||||
make -j$(nproc) || make -j1 || make -j1 V=s
|
||||
echo "status=success" >> $GITHUB_OUTPUT
|
||||
grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME
|
||||
[ -s DEVICE_NAME ] && echo "DEVICE_NAME=$(cat DEVICE_NAME)" >> $GITHUB_ENV
|
||||
echo "FILE_DATE=$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV
|
||||
|
||||
- name: Organize files
|
||||
id: organize
|
||||
if: env.UPLOAD_FIRMWARE == 'true' && !cancelled()
|
||||
run: |
|
||||
cd openwrt/bin/targets/*/*
|
||||
rm -rf packages
|
||||
echo "FIRMWARE=$PWD" >> $GITHUB_ENV
|
||||
echo "status=success" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload firmware
|
||||
uses: actions/upload-artifact@v4
|
||||
if: steps.organize.outputs.status == 'success' && !cancelled()
|
||||
with:
|
||||
name: openwrt_firmware_${{ env.DEVICE_NAME }}_${{ env.FILE_DATE }}
|
||||
path: |
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-gpt_both0.bin
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-boot.img
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-system.img
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3.manifest
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-flash.sh
|
||||
${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-firmware.zip
|
||||
+2
-1
@@ -1,7 +1,7 @@
|
||||
CONFIG_TARGET_msm89xx=y
|
||||
CONFIG_TARGET_msm89xx_msm8916=y
|
||||
CONFIG_TARGET_msm89xx_msm8916_DEVICE_yiming-uz801v3=y
|
||||
CONFIG_LIBQMI_COLLECTION_BASIC=y
|
||||
CONFIG_LIBQMI_COLLECTION_FULL=y
|
||||
CONFIG_LIBQMI_WITH_MBIM_QMUX=y
|
||||
CONFIG_LIBQMI_WITH_QRTR_GLIB=y
|
||||
CONFIG_MODEMMANAGER_WITH_MBIM=y
|
||||
@@ -70,6 +70,7 @@ CONFIG_PACKAGE_modemmanager=y
|
||||
CONFIG_PACKAGE_mount-utils=y
|
||||
CONFIG_PACKAGE_mtools=y
|
||||
CONFIG_PACKAGE_nano=y
|
||||
CONFIG_PACKAGE_qmi-utils=y
|
||||
CONFIG_PACKAGE_resize2fs=y
|
||||
CONFIG_PACKAGE_resolveip=y
|
||||
CONFIG_PACKAGE_rpcd=y
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
CONFIG_TARGET_msm89xx=y
|
||||
CONFIG_TARGET_msm89xx_msm8916=y
|
||||
CONFIG_TARGET_msm89xx_msm8916_DEVICE_generic-m9s=y
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_FBSET=y
|
||||
CONFIG_BUSYBOX_CONFIG_USLEEP=y
|
||||
CONFIG_LIBQMI_COLLECTION_BASIC=y
|
||||
CONFIG_LIBQMI_WITH_MBIM_QMUX=y
|
||||
CONFIG_LIBQMI_WITH_QRTR_GLIB=y
|
||||
CONFIG_MODEMMANAGER_WITH_MBIM=y
|
||||
CONFIG_MODEMMANAGER_WITH_NETIFD=y
|
||||
CONFIG_MODEMMANAGER_WITH_QMI=y
|
||||
CONFIG_MODEMMANAGER_WITH_QRTR=y
|
||||
CONFIG_PACKAGE_bash=y
|
||||
CONFIG_PACKAGE_cgi-io=y
|
||||
CONFIG_PACKAGE_dbus=y
|
||||
CONFIG_PACKAGE_glib2=y
|
||||
CONFIG_PACKAGE_ip-tiny=y
|
||||
CONFIG_PACKAGE_kmod-crypto-kpp=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y
|
||||
CONFIG_PACKAGE_kmod-tun=y
|
||||
CONFIG_PACKAGE_kmod-udptunnel4=y
|
||||
CONFIG_PACKAGE_kmod-udptunnel6=y
|
||||
CONFIG_PACKAGE_kmod-wireguard=y
|
||||
CONFIG_PACKAGE_libattr=y
|
||||
CONFIG_PACKAGE_libdbus=y
|
||||
CONFIG_PACKAGE_libexpat=y
|
||||
CONFIG_PACKAGE_libfdisk=y
|
||||
CONFIG_PACKAGE_libffi=y
|
||||
CONFIG_PACKAGE_libiwinfo=y
|
||||
CONFIG_PACKAGE_libiwinfo-data=y
|
||||
CONFIG_PACKAGE_liblua=y
|
||||
CONFIG_PACKAGE_liblucihttp=y
|
||||
CONFIG_PACKAGE_liblucihttp-lua=y
|
||||
CONFIG_PACKAGE_liblucihttp-ucode=y
|
||||
CONFIG_PACKAGE_libmbim=y
|
||||
CONFIG_PACKAGE_libmount=y
|
||||
CONFIG_PACKAGE_libncurses=y
|
||||
CONFIG_PACKAGE_libpcre2=y
|
||||
CONFIG_PACKAGE_libqmi=y
|
||||
CONFIG_PACKAGE_libqrtr-glib=y
|
||||
CONFIG_PACKAGE_libreadline=y
|
||||
CONFIG_PACKAGE_libubus-lua=y
|
||||
CONFIG_PACKAGE_lsblk=y
|
||||
CONFIG_PACKAGE_lua=y
|
||||
CONFIG_PACKAGE_luci=y
|
||||
CONFIG_PACKAGE_luci-app-firewall=y
|
||||
CONFIG_PACKAGE_luci-app-package-manager=y
|
||||
CONFIG_PACKAGE_luci-app-usb-gadget=y
|
||||
CONFIG_PACKAGE_luci-base=y
|
||||
CONFIG_PACKAGE_luci-lib-base=y
|
||||
CONFIG_PACKAGE_luci-lib-ip=y
|
||||
CONFIG_PACKAGE_luci-lib-json=y
|
||||
CONFIG_PACKAGE_luci-lib-jsonc=y
|
||||
CONFIG_PACKAGE_luci-lib-nixio=y
|
||||
CONFIG_PACKAGE_luci-lib-uqr=y
|
||||
CONFIG_PACKAGE_luci-light=y
|
||||
CONFIG_PACKAGE_luci-lua-runtime=y
|
||||
CONFIG_PACKAGE_luci-mod-admin-full=y
|
||||
CONFIG_PACKAGE_luci-mod-network=y
|
||||
CONFIG_PACKAGE_luci-mod-rpc=y
|
||||
CONFIG_PACKAGE_luci-mod-status=y
|
||||
CONFIG_PACKAGE_luci-mod-system=y
|
||||
CONFIG_PACKAGE_luci-proto-ipv6=y
|
||||
CONFIG_PACKAGE_luci-proto-modemmanager=y
|
||||
CONFIG_PACKAGE_luci-proto-ppp=y
|
||||
CONFIG_PACKAGE_luci-proto-wireguard=y
|
||||
CONFIG_PACKAGE_luci-theme-bootstrap=y
|
||||
CONFIG_PACKAGE_modemmanager=y
|
||||
CONFIG_PACKAGE_mount-utils=y
|
||||
CONFIG_PACKAGE_mtools=y
|
||||
CONFIG_PACKAGE_nano=y
|
||||
CONFIG_PACKAGE_resize2fs=y
|
||||
CONFIG_PACKAGE_resolveip=y
|
||||
CONFIG_PACKAGE_rpcd=y
|
||||
CONFIG_PACKAGE_rpcd-mod-file=y
|
||||
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
|
||||
CONFIG_PACKAGE_rpcd-mod-luci=y
|
||||
CONFIG_PACKAGE_rpcd-mod-rrdns=y
|
||||
CONFIG_PACKAGE_rpcd-mod-ucode=y
|
||||
CONFIG_PACKAGE_sfdisk=y
|
||||
CONFIG_PACKAGE_terminfo=y
|
||||
CONFIG_PACKAGE_tune2fs=y
|
||||
CONFIG_PACKAGE_ucode-mod-html=y
|
||||
CONFIG_PACKAGE_ucode-mod-log=y
|
||||
CONFIG_PACKAGE_ucode-mod-lua=y
|
||||
CONFIG_PACKAGE_ucode-mod-math=y
|
||||
CONFIG_PACKAGE_uhttpd=y
|
||||
CONFIG_PACKAGE_uhttpd-mod-ubus=y
|
||||
CONFIG_PACKAGE_wireguard-tools=y
|
||||
# CONFIG_TARGET_ROOTFS_EXT4FS is not set
|
||||
@@ -0,0 +1,95 @@
|
||||
CONFIG_TARGET_msm89xx=y
|
||||
CONFIG_TARGET_msm89xx_msm8916=y
|
||||
CONFIG_TARGET_msm89xx_msm8916_DEVICE_generic-uf02=y
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_FBSET=y
|
||||
CONFIG_BUSYBOX_CONFIG_USLEEP=y
|
||||
CONFIG_LIBQMI_COLLECTION_FULL=y
|
||||
CONFIG_LIBQMI_WITH_MBIM_QMUX=y
|
||||
CONFIG_LIBQMI_WITH_QRTR_GLIB=y
|
||||
CONFIG_MODEMMANAGER_WITH_MBIM=y
|
||||
CONFIG_MODEMMANAGER_WITH_NETIFD=y
|
||||
CONFIG_MODEMMANAGER_WITH_QMI=y
|
||||
CONFIG_MODEMMANAGER_WITH_QRTR=y
|
||||
CONFIG_PACKAGE_bash=y
|
||||
CONFIG_PACKAGE_cgi-io=y
|
||||
CONFIG_PACKAGE_dbus=y
|
||||
CONFIG_PACKAGE_glib2=y
|
||||
CONFIG_PACKAGE_ip-tiny=y
|
||||
CONFIG_PACKAGE_kmod-crypto-kpp=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y
|
||||
CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y
|
||||
CONFIG_PACKAGE_kmod-tun=y
|
||||
CONFIG_PACKAGE_kmod-udptunnel4=y
|
||||
CONFIG_PACKAGE_kmod-udptunnel6=y
|
||||
CONFIG_PACKAGE_kmod-wireguard=y
|
||||
CONFIG_PACKAGE_libattr=y
|
||||
CONFIG_PACKAGE_libdbus=y
|
||||
CONFIG_PACKAGE_libexpat=y
|
||||
CONFIG_PACKAGE_libfdisk=y
|
||||
CONFIG_PACKAGE_libffi=y
|
||||
CONFIG_PACKAGE_libiwinfo=y
|
||||
CONFIG_PACKAGE_libiwinfo-data=y
|
||||
CONFIG_PACKAGE_liblua=y
|
||||
CONFIG_PACKAGE_liblucihttp=y
|
||||
CONFIG_PACKAGE_liblucihttp-lua=y
|
||||
CONFIG_PACKAGE_liblucihttp-ucode=y
|
||||
CONFIG_PACKAGE_libmbim=y
|
||||
CONFIG_PACKAGE_libmount=y
|
||||
CONFIG_PACKAGE_libncurses=y
|
||||
CONFIG_PACKAGE_libpcre2=y
|
||||
CONFIG_PACKAGE_libqmi=y
|
||||
CONFIG_PACKAGE_libqrtr-glib=y
|
||||
CONFIG_PACKAGE_libreadline=y
|
||||
CONFIG_PACKAGE_libubus-lua=y
|
||||
CONFIG_PACKAGE_lsblk=y
|
||||
CONFIG_PACKAGE_lua=y
|
||||
CONFIG_PACKAGE_luci=y
|
||||
CONFIG_PACKAGE_luci-app-firewall=y
|
||||
CONFIG_PACKAGE_luci-app-package-manager=y
|
||||
CONFIG_PACKAGE_luci-app-usb-gadget=y
|
||||
CONFIG_PACKAGE_luci-base=y
|
||||
CONFIG_PACKAGE_luci-lib-base=y
|
||||
CONFIG_PACKAGE_luci-lib-ip=y
|
||||
CONFIG_PACKAGE_luci-lib-json=y
|
||||
CONFIG_PACKAGE_luci-lib-jsonc=y
|
||||
CONFIG_PACKAGE_luci-lib-nixio=y
|
||||
CONFIG_PACKAGE_luci-lib-uqr=y
|
||||
CONFIG_PACKAGE_luci-light=y
|
||||
CONFIG_PACKAGE_luci-lua-runtime=y
|
||||
CONFIG_PACKAGE_luci-mod-admin-full=y
|
||||
CONFIG_PACKAGE_luci-mod-network=y
|
||||
CONFIG_PACKAGE_luci-mod-rpc=y
|
||||
CONFIG_PACKAGE_luci-mod-status=y
|
||||
CONFIG_PACKAGE_luci-mod-system=y
|
||||
CONFIG_PACKAGE_luci-proto-ipv6=y
|
||||
CONFIG_PACKAGE_luci-proto-modemmanager=y
|
||||
CONFIG_PACKAGE_luci-proto-ppp=y
|
||||
CONFIG_PACKAGE_luci-proto-wireguard=y
|
||||
CONFIG_PACKAGE_luci-theme-bootstrap=y
|
||||
CONFIG_PACKAGE_modemmanager=y
|
||||
CONFIG_PACKAGE_mount-utils=y
|
||||
CONFIG_PACKAGE_mtools=y
|
||||
CONFIG_PACKAGE_nano=y
|
||||
CONFIG_PACKAGE_qmi-utils=y
|
||||
CONFIG_PACKAGE_resize2fs=y
|
||||
CONFIG_PACKAGE_resolveip=y
|
||||
CONFIG_PACKAGE_rpcd=y
|
||||
CONFIG_PACKAGE_rpcd-mod-file=y
|
||||
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
|
||||
CONFIG_PACKAGE_rpcd-mod-luci=y
|
||||
CONFIG_PACKAGE_rpcd-mod-rrdns=y
|
||||
CONFIG_PACKAGE_rpcd-mod-ucode=y
|
||||
CONFIG_PACKAGE_sfdisk=y
|
||||
CONFIG_PACKAGE_terminfo=y
|
||||
CONFIG_PACKAGE_tune2fs=y
|
||||
CONFIG_PACKAGE_ucode-mod-html=y
|
||||
CONFIG_PACKAGE_ucode-mod-log=y
|
||||
CONFIG_PACKAGE_ucode-mod-lua=y
|
||||
CONFIG_PACKAGE_ucode-mod-math=y
|
||||
CONFIG_PACKAGE_uhttpd=y
|
||||
CONFIG_PACKAGE_uhttpd-mod-ubus=y
|
||||
CONFIG_PACKAGE_wireguard-tools=y
|
||||
# CONFIG_TARGET_ROOTFS_EXT4FS is not set
|
||||
@@ -33,22 +33,45 @@ define Device/yiming-uz801v3
|
||||
DEVICE_VENDOR := YiMing
|
||||
DEVICE_MODEL := uz801v3
|
||||
FILESYSTEMS := squashfs
|
||||
DEVICE_PACKAGES := configs-uz801 wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
DEVICE_PACKAGES := configs-dongle wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
block-mount f2fs-tools prepare-rootfs-data \
|
||||
msm-firmware-dumper ledcontrol
|
||||
msm-firmware-dumper
|
||||
endef
|
||||
TARGET_DEVICES += yiming-uz801v3
|
||||
|
||||
define Device/generic-uf02
|
||||
$(Device/msm8916)
|
||||
DEVICE_VENDOR := Generic
|
||||
DEVICE_MODEL := UF02 (250605 V0S)
|
||||
FILESYSTEMS := squashfs
|
||||
DEVICE_PACKAGES := configs-dongle wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
block-mount f2fs-tools prepare-rootfs-data \
|
||||
msm-firmware-dumper
|
||||
endef
|
||||
TARGET_DEVICES += generic-uf02
|
||||
|
||||
|
||||
define Device/generic-mf68e
|
||||
$(Device/msm8916)
|
||||
DEVICE_VENDOR := Generic
|
||||
DEVICE_MODEL := MF68E
|
||||
FILESYSTEMS := squashfs
|
||||
CMDLINE := "earlycon console=ttyMSM0,115200 quiet loglevel=0 vt.global_cursor_default=0 vt.cur_default=0 root=/dev/mmcblk0p14 rootfstype=squashfs rootwait nowatchdog"
|
||||
DEVICE_PACKAGES := configs-mf68e wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
DEVICE_PACKAGES := configs-mifi wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
block-mount f2fs-tools prepare-rootfs-data \
|
||||
msm-firmware-dumper kmod-fbtft-gc9107 router-display
|
||||
endef
|
||||
TARGET_DEVICES += generic-mf68e
|
||||
|
||||
define Device/generic-m9s
|
||||
$(Device/msm8916)
|
||||
DEVICE_VENDOR := Generic
|
||||
DEVICE_MODEL := M9S
|
||||
FILESYSTEMS := squashfs
|
||||
DEVICE_PACKAGES := configs-mifi wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
block-mount f2fs-tools prepare-rootfs-data \
|
||||
msm-firmware-dumper
|
||||
endef
|
||||
TARGET_DEVICES += generic-m9s
|
||||
|
||||
endif
|
||||
+3
-1
@@ -11,11 +11,13 @@ Signed-off-by: hkfuertes <hkfuertes@example.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/Makefile
|
||||
+++ b/arch/arm64/boot/dts/qcom/Makefile
|
||||
@@ -23,6 +23,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsu
|
||||
@@ -23,6 +23,9 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsu
|
||||
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-gt58.dtb
|
||||
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-j3ltetw.dtb
|
||||
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-j5.dtb
|
||||
+dtb-$(CONFIG_ARCH_QCOM) += msm8916-generic-mf68e.dtb
|
||||
+dtb-$(CONFIG_ARCH_QCOM) += msm8916-generic-uf02.dtb
|
||||
+dtb-$(CONFIG_ARCH_QCOM) += msm8916-generic-m9s.dtb
|
||||
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-j5x.dtb
|
||||
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-rossa.dtb
|
||||
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-serranove.dtb
|
||||
@@ -0,0 +1,42 @@
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/qcom/msm8916-generic-uf02.dts
|
||||
@@ -0,0 +1,39 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-only
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "msm8916-ufi.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "UF02 4G Modem Stick";
|
||||
+ compatible = "uf02,250605v0s", "qcom,msm8916";
|
||||
+};
|
||||
+
|
||||
+&button_restart {
|
||||
+ gpios = <&tlmm 23 GPIO_ACTIVE_LOW>;
|
||||
+};
|
||||
+
|
||||
+&led_r {
|
||||
+ gpios = <&tlmm 72 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&led_g {
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ gpios = <&tlmm 71 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&led_b {
|
||||
+ function = LED_FUNCTION_WLAN;
|
||||
+ gpios = <&tlmm 73 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&button_default {
|
||||
+ pins = "gpio23";
|
||||
+ bias-pull-up;
|
||||
+};
|
||||
+
|
||||
+&gpio_leds_default {
|
||||
+ pins = "gpio71", "gpio72", "gpio73";
|
||||
+};
|
||||
@@ -0,0 +1,134 @@
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/qcom/msm8916-generic-m9s.dts
|
||||
@@ -0,0 +1,131 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-only
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "msm8916-ufi.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "M9S 4G LTE Mobile WiFi Router";
|
||||
+ compatible = "generic,m9s", "qcom,msm8916";
|
||||
+
|
||||
+ bat: battery {
|
||||
+ compatible = "simple-battery";
|
||||
+ voltage-min-design-microvolt = <3400000>;
|
||||
+ voltage-max-design-microvolt = <4400000>;
|
||||
+ energy-full-design-microwatt-hours = <11100000>;
|
||||
+ charge-full-design-microamp-hours = <3000000>;
|
||||
+
|
||||
+ ocv-capacity-celsius = <25>;
|
||||
+ ocv-capacity-table-0 = <4330000 100>, <4265000 95>,
|
||||
+ <4208000 90>, <4154000 85>, <4102000 80>,
|
||||
+ <4063000 75>, <4006000 70>, <3972000 65>,
|
||||
+ <3931000 60>, <3880000 55>, <3841000 50>,
|
||||
+ <3817000 45>, <3798000 40>, <3783000 35>,
|
||||
+ <3767000 30>, <3747000 25>, <3729000 20>,
|
||||
+ <3700000 16>, <3687000 13>, <3683000 11>,
|
||||
+ <3681000 10>, <3680000 9>, <3678000 8>,
|
||||
+ <3674000 7>, <3666000 6>, <3641000 5>,
|
||||
+ <3597000 4>, <3537000 3>, <3457000 2>,
|
||||
+ <3336000 1>, <3000000 0>;
|
||||
+ };
|
||||
+
|
||||
+ usb_id: usb-id {
|
||||
+ compatible = "linux,extcon-usb-gpio";
|
||||
+ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&usb_id_default>;
|
||||
+ };
|
||||
+
|
||||
+ leds-extra {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led-wlan-red {
|
||||
+ function = LED_FUNCTION_WLAN;
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ gpios = <&tlmm 84 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ led-wan-green {
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ led-battery-green {
|
||||
+ function = LED_FUNCTION_CHARGING;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usb {
|
||||
+ extcon = <&usb_id>, <&usb_id>;
|
||||
+};
|
||||
+
|
||||
+&usb_hs_phy {
|
||||
+ extcon = <&usb_id>;
|
||||
+};
|
||||
+
|
||||
+&button_restart {
|
||||
+ gpios = <&tlmm 102 GPIO_ACTIVE_LOW>;
|
||||
+};
|
||||
+
|
||||
+&led_r {
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ gpios = <&tlmm 72 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&led_g {
|
||||
+ function = LED_FUNCTION_WLAN;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ gpios = <&tlmm 73 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&led_b {
|
||||
+ function = LED_FUNCTION_CHARGING;
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&pm8916_bms {
|
||||
+ status = "okay";
|
||||
+ monitored-battery = <&bat>;
|
||||
+ power-supplies = <&pm8916_charger>;
|
||||
+};
|
||||
+
|
||||
+&pm8916_charger {
|
||||
+ status = "okay";
|
||||
+ monitored-battery = <&bat>;
|
||||
+ qcom,fast-charge-safe-current = <900000>;
|
||||
+ qcom,fast-charge-safe-voltage = <4400000>;
|
||||
+};
|
||||
+
|
||||
+&tlmm {
|
||||
+ usb_id_default: usb-id-default-state {
|
||||
+ pins = "gpio110";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <8>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&button_default {
|
||||
+ pins = "gpio102";
|
||||
+};
|
||||
+
|
||||
+&gpio_leds_default {
|
||||
+ pins = "gpio0", "gpio1", "gpio72", "gpio73", "gpio84", "gpio85";
|
||||
+};
|
||||
+
|
||||
+&pm8916_0 {
|
||||
+ pon@800 {
|
||||
+ watchdog {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@@ -0,0 +1,172 @@
|
||||
Perfecto. Aquí tienes la **checklist definitiva** para solucionar esto por software en el futuro:[1][2][3]
|
||||
|
||||
## Checklist: Simular batería presente por software
|
||||
|
||||
### 1. **Información que necesito darte**
|
||||
|
||||
Cuando quieras hacer esto en otro dispositivo, dame:[4][5]
|
||||
|
||||
**A) El device tree completo del dispositivo** (archivo `.dts`)
|
||||
- Para identificar qué GPIOs y canales VADC están definidos
|
||||
|
||||
**B) El device tree base de msm8916** (normalmente `msm8916-ufi.dtsi`)
|
||||
- Para ver qué tiene el PMIC configurado por defecto
|
||||
|
||||
**C) Logs del kernel con batería vs sin batería**
|
||||
```bash
|
||||
dmesg | grep -E "pm8916|bms|vadc|bat"
|
||||
```
|
||||
|
||||
**D) Estado actual de los sysfs relevantes**
|
||||
```bash
|
||||
ls -la /sys/class/power_supply/
|
||||
cat /sys/kernel/debug/iio/iio:device*/in_*_raw
|
||||
cat /sys/bus/spmi/devices/0-000*/name
|
||||
```
|
||||
|
||||
### 2. **Preguntas clave que debes hacerme**
|
||||
|
||||
Cuando tengas esa información, pregúntame:[2][3][1]
|
||||
|
||||
**"¿Cómo simular batería presente en [nombre-dispositivo]?"**
|
||||
|
||||
Y específicamente investigo:
|
||||
|
||||
**a) Identificar el canal VADC de BAT_ID**[1]
|
||||
```
|
||||
¿Qué canal del PM8916 VADC lee el BAT_ID?
|
||||
```
|
||||
Normalmente es `VADC_LR_MUX2_BAT_ID` o similar.
|
||||
|
||||
**b) Localizar GPIO asociado a BAT_ID**[3][2]
|
||||
```
|
||||
¿Hay algún GPIO del PMIC conectado a BAT_ID?
|
||||
```
|
||||
|
||||
**c) Ver configuración actual del BMS**[1]
|
||||
```
|
||||
¿Qué propiedades tiene el nodo &pm8916_bms?
|
||||
```
|
||||
|
||||
### 3. **Soluciones software que aplicaré**
|
||||
|
||||
Según lo que encuentre, te daré una de estas soluciones:[2][3][1]
|
||||
|
||||
#### Opción A: Desactivar lectura de BAT_ID en VADC
|
||||
|
||||
```dts
|
||||
&pm8916_vadc {
|
||||
/* Comentar/eliminar el canal BAT_ID */
|
||||
/*
|
||||
bat-id@12 {
|
||||
reg = <VADC_LR_MUX2_BAT_ID>;
|
||||
qcom,pre-scaling = <1 1>;
|
||||
qcom,hw-settle-time = <200>;
|
||||
};
|
||||
*/
|
||||
};
|
||||
```
|
||||
|
||||
#### Opción B: Forzar GPIO en pull-down permanente
|
||||
|
||||
```dts
|
||||
&pm8916_gpios {
|
||||
bat_id_pulldown: bat-id-pulldown-state {
|
||||
pins = "gpioX"; // X = número de GPIO
|
||||
function = "normal";
|
||||
input-disable;
|
||||
output-low;
|
||||
bias-pull-down;
|
||||
power-source = <PM8916_GPIO_VPH>;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
#### Opción C: Modificar propiedades del BMS
|
||||
|
||||
```dts
|
||||
&pm8916_bms {
|
||||
status = "okay";
|
||||
monitored-battery = <&bat>;
|
||||
power-supplies = <&pm8916_charger>;
|
||||
|
||||
/* Opciones para ignorar BAT_ID */
|
||||
qcom,ignore-shutdown-soc;
|
||||
qcom,force-bms-active-on-charger;
|
||||
/delete-property/ io-channels; // Elimina referencia a VADC
|
||||
};
|
||||
```
|
||||
|
||||
#### Opción D: Simular resistencia con GPIO analog
|
||||
|
||||
```dts
|
||||
&pm8916_gpios {
|
||||
bat_id_sim: bat-id-simulation {
|
||||
pins = "gpioX";
|
||||
function = "normal";
|
||||
qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>; // 100kΩ equiv
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
### 4. **Archivos que necesito ver**
|
||||
|
||||
Cuando me preguntes, adjunta estos archivos:[5][4]
|
||||
|
||||
```bash
|
||||
# 1. DTS del dispositivo
|
||||
target/linux/msm89xx/dts/qcom/msm8916-generic-TUDEVICE.dts
|
||||
|
||||
# 2. DTSI base si existe
|
||||
target/linux/msm89xx/dts/qcom/msm8916-ufi.dtsi
|
||||
|
||||
# 3. Configuración del kernel (opcional pero útil)
|
||||
target/linux/msm89xx/config-*
|
||||
|
||||
# 4. Output de debugfs con batería conectada
|
||||
cat /sys/kernel/debug/pm8916-adc/channels
|
||||
cat /sys/kernel/debug/gpio
|
||||
```
|
||||
|
||||
### 5. **Comando diagnóstico rápido**
|
||||
|
||||
Cuando no arranque sin batería, ejecuta esto (con UART/serial):[2][1]
|
||||
|
||||
```bash
|
||||
# Durante boot, captura:
|
||||
dmesg | grep -i "bat\|bms\|vadc\|adc" > /tmp/boot_log.txt
|
||||
|
||||
# Y también:
|
||||
cat /sys/bus/spmi/devices/*/name
|
||||
cat /proc/interrupts | grep pm8916
|
||||
```
|
||||
|
||||
Y pásame ese log completo.
|
||||
|
||||
### 6. **Resumen: ¿Qué te pregunto yo a ti?**
|
||||
|
||||
Cuando tengas un dispositivo nuevo que no arranca sin batería:[3][1][2]
|
||||
|
||||
> **"Tengo [dispositivo] con MSM8916/PM8916 que no arranca sin batería. Usa el mismo lk2nd que [otro dispositivo] que sí funciona sin batería. Te adjunto:**
|
||||
> - **DTS de ambos dispositivos** (el que funciona y el que no)
|
||||
> - **dmesg completo** del que no funciona (si arranca con batería)
|
||||
> - **Esquemático** si lo tengo
|
||||
>
|
||||
> **¿Cómo configuro el device tree para simular BAT_ID por software?**"
|
||||
|
||||
Y con eso, busco las diferencias en VADC, GPIOs y configuración del BMS para darte el patch exacto.[4][5][3][1][2]
|
||||
|
||||
[1](https://www.kernel.org/doc/Documentation/devicetree/bindings/power/supply/qcom,pm8916-bms-vm.yaml)
|
||||
[2](https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/qcom,pmic-gpio.txt)
|
||||
[3](https://docs.qualcomm.com/bundle/publicresource/topics/80-88500-4/20_GPIO_registers_configuration.html)
|
||||
[4](https://ppl-ai-file-upload.s3.amazonaws.com/web/direct-files/attachments/71119587/2cbba375-133e-46d7-b84a-35a4b519f137/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch)
|
||||
[5](https://ppl-ai-file-upload.s3.amazonaws.com/web/direct-files/attachments/71119587/bb25f50b-d1d3-4c22-921c-7e22b9b185a8/805-arm64-dts-qcom-add-msm8916-generic-m9s.patch)
|
||||
[6](https://docs.qualcomm.com/bundle/publicresource/topics/80-88500-1/7_Pin_control_driver.html)
|
||||
[7](https://www.kernel.org/doc/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml)
|
||||
[8](https://sbexr.rabexc.org/latest/sources/6d/8af0298da51217.html)
|
||||
[9](https://gitlab.com/cunidev/linux-msm8996/-/blob/v3.5-rc5/Documentation/gpio.txt)
|
||||
[10](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-4/pmic-developer-touchpoints.html)
|
||||
[11](https://hafnium.googlesource.com/hafnium/third_party/linux/+/refs/heads/master/Documentation/devicetree/bindings/pinctrl/qcom,pmic-gpio.txt)
|
||||
[12](https://docs.qualcomm.com/bundle/publicresource/topics/80-88500-4/19_Hardware_overview.html)
|
||||
[13](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-8/pcie.html)
|
||||
@@ -1,6 +1,6 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=configs-uz801
|
||||
PKG_NAME:=configs-dongle
|
||||
PKG_VERSION:=1.0
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
@@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/package.mk
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=Utilities
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=Default Settings For uz801v3
|
||||
DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager
|
||||
TITLE:=Default Settings For Dongles
|
||||
DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager +ledcontrol +kmod-button-hotplug +inotifywait
|
||||
endef
|
||||
|
||||
# Optional description
|
||||
define Package/$(PKG_NAME)/description
|
||||
Tweaks and defaults for uz801v3, including cleanup of problematic APK feeds.
|
||||
Tweaks and defaults for Dongles, including cleanup of problematic APK feeds.
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
@@ -32,6 +32,12 @@ define Package/$(PKG_NAME)/install
|
||||
|
||||
$(INSTALL_DIR) $(1)/root/
|
||||
$(INSTALL_BIN) ./files/luci-app-tailscale*.apk $(1)/root/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211
|
||||
$(INSTALL_DATA) ./files/hotplugs/99-wifi-led $(1)/etc/hotplug.d/ieee80211/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||
$(INSTALL_DATA) ./files/hotplugs/99-modem-led $(1)/etc/hotplug.d/iface/
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/postinst
|
||||
+2
-2
@@ -4,11 +4,11 @@
|
||||
|
||||
case "$ACTION:$INTERFACE" in
|
||||
ifup:modem)
|
||||
ledcontrol wan on
|
||||
ledcontrol green:wan on
|
||||
logger -t modem-led "Modem UP - Green LED ON"
|
||||
;;
|
||||
ifdown:modem)
|
||||
ledcontrol wan off
|
||||
ledcontrol green:wan off
|
||||
logger -t modem-led "Modem DOWN - Green LED OFF"
|
||||
;;
|
||||
esac
|
||||
+3
-3
@@ -12,17 +12,17 @@ case "$ACTION" in
|
||||
sta_status=$(ip link show phy0-sta0 2>/dev/null | grep -c "state UP")
|
||||
|
||||
if [ "$ap_status" -gt 0 ] || [ "$sta_status" -gt 0 ]; then
|
||||
ledcontrol wlan on
|
||||
ledcontrol blue:wlan on
|
||||
logger -t wifi-led "phy0 interface UP, blue LED ON"
|
||||
else
|
||||
ledcontrol wlan off
|
||||
ledcontrol blue:wlan off
|
||||
logger -t wifi-led "No phy0 interface UP, blue LED OFF"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
remove)
|
||||
if [ "$DEVICENAME" = "phy0" ]; then
|
||||
ledcontrol wlan off
|
||||
ledcontrol blue:wlan off
|
||||
logger -t wifi-led "phy0 removed, blue LED OFF"
|
||||
fi
|
||||
;;
|
||||
File renamed without changes.
File renamed without changes.
@@ -1,6 +1,6 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=configs-mf68e
|
||||
PKG_NAME:=configs-mifi
|
||||
PKG_VERSION:=1.0
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
@@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/package.mk
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=Utilities
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=Default Settings For mf68e
|
||||
DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager
|
||||
TITLE:=Default Settings For MiFis
|
||||
DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager +ledcontrol +kmod-button-hotplug
|
||||
endef
|
||||
|
||||
# Optional description
|
||||
define Package/$(PKG_NAME)/description
|
||||
Tweaks and defaults for mf68e, including cleanup of problematic APK feeds and LuCI battery widget.
|
||||
Tweaks and defaults for MiFis, including cleanup of problematic APK feeds and LuCI battery widget.
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
@@ -55,6 +55,18 @@ define Package/$(PKG_NAME)/install
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/admin_status/index
|
||||
$(INSTALL_DATA) ./files/battery.htm $(1)/usr/lib/lua/luci/view/admin_status/index/20_battery.htm
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211
|
||||
$(INSTALL_DATA) ./files/hotplugs/99-wifi-led $(1)/etc/hotplug.d/ieee80211/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||
$(INSTALL_DATA) ./files/hotplugs/99-modem-led $(1)/etc/hotplug.d/iface/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/button
|
||||
$(INSTALL_DATA) ./files/hotplugs/50-battery-show $(1)/etc/hotplug.d/button/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/battery-monitor.init $(1)/etc/init.d/battery-monitor
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/postinst
|
||||
@@ -0,0 +1,185 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# /etc/init.d/battery-monitor
|
||||
|
||||
START=99
|
||||
STOP=01
|
||||
|
||||
CHARGER_FILE="/sys/class/power_supply/pm8916-lbc-chgr/online"
|
||||
BMS_PATH="/sys/class/power_supply/pm8916-bms-vm"
|
||||
|
||||
# Required LEDs
|
||||
LED_RED="red:charging"
|
||||
LED_GREEN="green:charging"
|
||||
|
||||
# Check if required LEDs exist
|
||||
check_leds() {
|
||||
local missing=""
|
||||
|
||||
if [ ! -d "/sys/class/leds/$LED_RED" ]; then
|
||||
missing="$missing $LED_RED"
|
||||
fi
|
||||
|
||||
if [ ! -d "/sys/class/leds/$LED_GREEN" ]; then
|
||||
missing="$missing $LED_GREEN"
|
||||
fi
|
||||
|
||||
if [ -n "$missing" ]; then
|
||||
logger -t battery-monitor "LEDs not found, service disabled:$missing"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
get_capacity() {
|
||||
local voltage=$(cat $BMS_PATH/voltage_now 2>/dev/null)
|
||||
local vmax=$(cat $BMS_PATH/voltage_max_design 2>/dev/null)
|
||||
local vmin=$(cat $BMS_PATH/voltage_min_design 2>/dev/null)
|
||||
|
||||
if [ -n "$voltage" ] && [ -n "$vmax" ] && [ -n "$vmin" ]; then
|
||||
awk -v v="$voltage" -v vmax="$vmax" -v vmin="$vmin" \
|
||||
'BEGIN {pct = ((v - vmin) / (vmax - vmin)) * 100;
|
||||
if (pct < 0) pct = 0;
|
||||
if (pct > 100) pct = 100;
|
||||
printf "%.0f", pct}'
|
||||
else
|
||||
echo "50"
|
||||
fi
|
||||
}
|
||||
|
||||
show_battery_temp() {
|
||||
local capacity=$(get_capacity)
|
||||
|
||||
# Clear both LEDs first
|
||||
ledcontrol $LED_RED off 2>/dev/null
|
||||
ledcontrol $LED_GREEN off 2>/dev/null
|
||||
|
||||
# Show battery level with 2 states (button press)
|
||||
if [ "$capacity" -lt 50 ]; then
|
||||
# Low battery: solid red
|
||||
ledcontrol $LED_RED on 2>/dev/null
|
||||
else
|
||||
# Good battery: solid green
|
||||
ledcontrol $LED_GREEN on 2>/dev/null
|
||||
fi
|
||||
|
||||
logger -t battery-monitor "SIGUSR1: Showing ${capacity}%"
|
||||
|
||||
sleep 2
|
||||
|
||||
update_led
|
||||
}
|
||||
|
||||
update_led() {
|
||||
local charging=$(cat $CHARGER_FILE 2>/dev/null || echo 0)
|
||||
|
||||
if [ "$charging" = "1" ]; then
|
||||
local capacity=$(get_capacity)
|
||||
|
||||
# Clear both LEDs first
|
||||
ledcontrol $LED_RED off 2>/dev/null
|
||||
ledcontrol $LED_GREEN off 2>/dev/null
|
||||
|
||||
# 3 charging states
|
||||
if [ "$capacity" -ge 95 ]; then
|
||||
# Fully charged: solid green
|
||||
ledcontrol $LED_GREEN on 2>/dev/null
|
||||
logger -t battery-monitor "Charging complete: ${capacity}%"
|
||||
elif [ "$capacity" -ge 50 ]; then
|
||||
# Charging medium/high: blinking green
|
||||
ledcontrol $LED_GREEN blink 2>/dev/null
|
||||
logger -t battery-monitor "Charging: ${capacity}%"
|
||||
else
|
||||
# Charging low: blinking red
|
||||
ledcontrol $LED_RED blink 2>/dev/null
|
||||
logger -t battery-monitor "Charging low: ${capacity}%"
|
||||
fi
|
||||
else
|
||||
# Not charging: turn off LEDs
|
||||
ledcontrol $LED_RED off 2>/dev/null
|
||||
ledcontrol $LED_GREEN off 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# Main monitoring loop (runs in background)
|
||||
monitor_loop() {
|
||||
# Set up signal handler
|
||||
trap 'show_battery_temp' USR1
|
||||
|
||||
# Get initial state
|
||||
local last_state=$(cat $CHARGER_FILE 2>/dev/null || echo 0)
|
||||
update_led
|
||||
|
||||
# Poll charger state
|
||||
while true; do
|
||||
local current_state=$(cat $CHARGER_FILE 2>/dev/null || echo 0)
|
||||
|
||||
if [ "$current_state" != "$last_state" ]; then
|
||||
logger -t battery-monitor "Charger state changed: $last_state -> $current_state"
|
||||
last_state=$current_state
|
||||
sleep 1
|
||||
update_led
|
||||
fi
|
||||
|
||||
# Poll every 2 seconds
|
||||
sleep 2
|
||||
done
|
||||
}
|
||||
|
||||
start() {
|
||||
# Exit silently if LEDs don't exist
|
||||
check_leds || return 0
|
||||
|
||||
# Check if already running
|
||||
if [ -f /var/run/battery-monitor.pid ] && kill -0 $(cat /var/run/battery-monitor.pid) 2>/dev/null; then
|
||||
logger -t battery-monitor "Already running"
|
||||
return 0
|
||||
fi
|
||||
|
||||
logger -t battery-monitor "Starting with LEDs: $LED_RED, $LED_GREEN"
|
||||
|
||||
# Start monitoring loop in background
|
||||
monitor_loop &
|
||||
|
||||
echo $! > /var/run/battery-monitor.pid
|
||||
logger -t battery-monitor "Service started (PID: $!)"
|
||||
}
|
||||
|
||||
stop() {
|
||||
if [ -f /var/run/battery-monitor.pid ]; then
|
||||
local pid=$(cat /var/run/battery-monitor.pid)
|
||||
|
||||
if kill -0 $pid 2>/dev/null; then
|
||||
kill $pid 2>/dev/null
|
||||
|
||||
# Wait for process to die
|
||||
local timeout=5
|
||||
while [ $timeout -gt 0 ] && kill -0 $pid 2>/dev/null; do
|
||||
sleep 1
|
||||
timeout=$((timeout - 1))
|
||||
done
|
||||
|
||||
# Force kill if still alive
|
||||
kill -9 $pid 2>/dev/null
|
||||
|
||||
logger -t battery-monitor "Service stopped (PID: $pid)"
|
||||
fi
|
||||
|
||||
rm -f /var/run/battery-monitor.pid
|
||||
fi
|
||||
|
||||
# Only try to control LEDs if they exist
|
||||
if check_leds 2>/dev/null; then
|
||||
ledcontrol $LED_GREEN off 2>/dev/null
|
||||
ledcontrol $LED_RED blink 2>/dev/null
|
||||
logger -t battery-monitor "Shutdown: Red LED blinking"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
# /etc/hotplug.d/button/50-battery-show
|
||||
|
||||
[ "$BUTTON" = "power" ] || exit 0
|
||||
[ "$ACTION" = "pressed" ] || exit 0
|
||||
|
||||
charging=$(cat /sys/class/power_supply/pm8916-lbc-chgr/online 2>/dev/null || echo 0)
|
||||
|
||||
if [ "$charging" = "0" ]; then
|
||||
[ -f /var/run/battery-monitor.pid ] && {
|
||||
kill -USR1 $(cat /var/run/battery-monitor.pid) 2>/dev/null
|
||||
logger -t button-battery "SIGUSR1 sent to battery-monitor"
|
||||
}
|
||||
fi
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
# /etc/hotplug.d/iface/99-modem-led
|
||||
# Modem LED control based on interface status
|
||||
|
||||
case "$ACTION:$INTERFACE" in
|
||||
ifup:modem)
|
||||
ledcontrol red:wan off 2>/dev/null || true
|
||||
ledcontrol green:wan on 2>/dev/null || true
|
||||
logger -t modem-led "Modem UP - Green LED ON"
|
||||
;;
|
||||
ifdown:modem)
|
||||
ledcontrol red:wan on 2>/dev/null || true
|
||||
ledcontrol green:wan off 2>/dev/null || true
|
||||
logger -t modem-led "Modem DOWN - Green LED OFF"
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
# /etc/hotplug.d/ieee80211/99-wifi-led
|
||||
# WiFi LED control based on phy0 status
|
||||
|
||||
case "$ACTION" in
|
||||
add)
|
||||
if [ "$DEVICENAME" = "phy0" ]; then
|
||||
sleep 5
|
||||
|
||||
# Check interface status
|
||||
ap_status=$(ip link show phy0-ap0 2>/dev/null | grep -c "state UP")
|
||||
sta_status=$(ip link show phy0-sta0 2>/dev/null | grep -c "state UP")
|
||||
|
||||
if [ "$ap_status" -gt 0 ] || [ "$sta_status" -gt 0 ]; then
|
||||
ledcontrol red:wlan on 2>/dev/null || true
|
||||
ledcontrol green:wlan on 2>/dev/null || true
|
||||
logger -t wifi-led "phy0 interface UP, blue LED ON"
|
||||
else
|
||||
ledcontrol red:wlan on 2>/dev/null || true
|
||||
ledcontrol green:wlan off 2>/dev/null || true
|
||||
logger -t wifi-led "No phy0 interface UP, blue LED OFF"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
remove)
|
||||
if [ "$DEVICENAME" = "phy0" ]; then
|
||||
ledcontrol red:wlan off 2>/dev/null || true
|
||||
ledcontrol green:wlan off 2>/dev/null || true
|
||||
logger -t wifi-led "phy0 removed, blue LED OFF"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
File renamed without changes.
-13
@@ -9,22 +9,9 @@
|
||||
lockfile="/tmp/toff.lock"
|
||||
delay=1
|
||||
|
||||
maybe_notify_display_shutdown() {
|
||||
. /lib/functions.sh
|
||||
config_load system
|
||||
config_get FIFO display fifo "/var/run/display.fifo"
|
||||
|
||||
[ -p "$FIFO" ] && {
|
||||
echo "shutdown" > "$FIFO" 2>/dev/null;
|
||||
sleep 1;
|
||||
}
|
||||
}
|
||||
|
||||
shutdown() {
|
||||
logger -t poweroff "Powering off..."
|
||||
|
||||
# maybe_notify_display_shutdown
|
||||
|
||||
sync
|
||||
/sbin/poweroff
|
||||
}
|
||||
File renamed without changes.
@@ -16,7 +16,7 @@ endef
|
||||
|
||||
define Package/ledcontrol/description
|
||||
Simple utility to control device LEDs via sysfs
|
||||
Usage: ledcontrol <color> <on|off|blink|blink_fast>
|
||||
Usage: ledcontrol <color:function> <on|off|blink|blink_fast>
|
||||
Includes hotplug scripts for WiFi and modem LED management
|
||||
endef
|
||||
|
||||
@@ -24,14 +24,8 @@ define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/ledcontrol/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) ./files/ledcontrol $(1)/usr/sbin/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211
|
||||
$(INSTALL_DATA) ./files/99-wifi-led $(1)/etc/hotplug.d/ieee80211/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||
$(INSTALL_DATA) ./files/99-modem-led $(1)/etc/hotplug.d/iface/
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) ./ledcontrol.sh $(1)/usr/bin/ledcontrol
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ledcontrol))
|
||||
@@ -1,87 +0,0 @@
|
||||
#!/bin/sh
|
||||
# LED Control Utility for OpenWrt
|
||||
# Usage: ledcontrol <color> <on|off|blink|blink_fast>
|
||||
|
||||
set -e
|
||||
|
||||
COLOR="$1"
|
||||
ACTION="$2"
|
||||
|
||||
# LED base path
|
||||
LED_BASE="/sys/class/leds"
|
||||
|
||||
# Find LED by color
|
||||
find_led() {
|
||||
local color="$1"
|
||||
local led_path
|
||||
|
||||
# Search for LED containing the color in name
|
||||
led_path=$(find "$LED_BASE" -maxdepth 1 -type l -iname "*:${color}:*" 2>/dev/null | head -n 1)
|
||||
|
||||
if [ -z "$led_path" ]; then
|
||||
# Try without colons
|
||||
led_path=$(find "$LED_BASE" -maxdepth 1 -type l -iname "*${color}*" 2>/dev/null | head -n 1)
|
||||
fi
|
||||
|
||||
if [ -z "$led_path" ]; then
|
||||
logger -t ledcontrol "LED color '$color' not found"
|
||||
echo "[!] LED color '$color' not found" >&2
|
||||
echo "[*] Available LEDs:" >&2
|
||||
ls -1 "$LED_BASE" | sed 's/^/ /' >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "$led_path"
|
||||
}
|
||||
|
||||
# Set LED state
|
||||
set_led() {
|
||||
local led_path="$1"
|
||||
local action="$2"
|
||||
|
||||
case "$action" in
|
||||
on)
|
||||
echo none > "$led_path/trigger"
|
||||
echo 1 > "$led_path/brightness"
|
||||
;;
|
||||
off)
|
||||
echo none > "$led_path/trigger"
|
||||
echo 0 > "$led_path/brightness"
|
||||
;;
|
||||
blink)
|
||||
echo timer > "$led_path/trigger"
|
||||
echo 500 > "$led_path/delay_on"
|
||||
echo 500 > "$led_path/delay_off"
|
||||
;;
|
||||
blink_fast)
|
||||
echo timer > "$led_path/trigger"
|
||||
echo 100 > "$led_path/delay_on"
|
||||
echo 100 > "$led_path/delay_off"
|
||||
;;
|
||||
*)
|
||||
logger -t ledcontrol "Invalid action: $action"
|
||||
echo "[!] Invalid action: $action" >&2
|
||||
echo "[*] Valid actions: on, off, blink, blink_fast" >&2
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Main
|
||||
if [ -z "$COLOR" ] || [ -z "$ACTION" ]; then
|
||||
echo "Usage: ledcontrol <color> <on|off|blink|blink_fast>" >&2
|
||||
echo "" >&2
|
||||
echo "Available LEDs:" >&2
|
||||
ls -1 "$LED_BASE" 2>/dev/null | sed 's/^/ /' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LED_PATH=$(find_led "$COLOR") || exit 1
|
||||
LED_NAME=$(basename "$LED_PATH")
|
||||
|
||||
if set_led "$LED_PATH" "$ACTION"; then
|
||||
logger -t ledcontrol "LED '$LED_NAME' set to '$ACTION'"
|
||||
echo "[+] LED '$COLOR' set to '$ACTION'"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,75 @@
|
||||
#!/bin/sh
|
||||
# LED Control Utility for OpenWrt
|
||||
# Usage: ledcontrol <color:function> <on|off|blink|blink_fast>
|
||||
# Examples:
|
||||
# ledcontrol green:wan on
|
||||
# ledcontrol blue:wlan blink
|
||||
# ledcontrol red:charging off
|
||||
|
||||
set -e
|
||||
|
||||
# Parse arguments
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Usage: ledcontrol <color:function> <on|off|blink|blink_fast>" >&2
|
||||
echo "" >&2
|
||||
echo "Examples:" >&2
|
||||
echo " ledcontrol green:wan on" >&2
|
||||
echo " ledcontrol blue:wlan blink" >&2
|
||||
echo " ledcontrol red:charging off" >&2
|
||||
echo "" >&2
|
||||
echo "Available LEDs:" >&2
|
||||
ls -1 /sys/class/leds 2>/dev/null | grep -v "^mmc" | sed 's/^/ /' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LED_NAME="$1"
|
||||
ACTION="$2"
|
||||
LED_PATH="/sys/class/leds/$LED_NAME"
|
||||
|
||||
# Check if LED exists
|
||||
if [ ! -d "$LED_PATH" ]; then
|
||||
echo "[!] LED '$LED_NAME' not found" >&2
|
||||
echo "[*] Available LEDs:" >&2
|
||||
ls -1 /sys/class/leds 2>/dev/null | grep -v "^mmc" | sed 's/^/ /' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Set LED state
|
||||
case "$ACTION" in
|
||||
on)
|
||||
echo none > "$LED_PATH/trigger" 2>/dev/null || true
|
||||
echo 1 > "$LED_PATH/brightness"
|
||||
;;
|
||||
off)
|
||||
echo none > "$LED_PATH/trigger" 2>/dev/null || true
|
||||
echo 0 > "$LED_PATH/brightness"
|
||||
;;
|
||||
blink)
|
||||
echo timer > "$LED_PATH/trigger" 2>/dev/null || {
|
||||
echo "[!] Blink not supported, setting ON" >&2
|
||||
echo 1 > "$LED_PATH/brightness"
|
||||
exit 0
|
||||
}
|
||||
echo 500 > "$LED_PATH/delay_on" 2>/dev/null || true
|
||||
echo 500 > "$LED_PATH/delay_off" 2>/dev/null || true
|
||||
;;
|
||||
blink_fast)
|
||||
echo timer > "$LED_PATH/trigger" 2>/dev/null || {
|
||||
echo "[!] Blink not supported, setting ON" >&2
|
||||
echo 1 > "$LED_PATH/brightness"
|
||||
exit 0
|
||||
}
|
||||
echo 100 > "$LED_PATH/delay_on" 2>/dev/null || true
|
||||
echo 100 > "$LED_PATH/delay_off" 2>/dev/null || true
|
||||
;;
|
||||
*)
|
||||
echo "[!] Invalid action: $ACTION" >&2
|
||||
echo "[*] Valid actions: on, off, blink, blink_fast" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
logger -t ledcontrol "LED '$LED_NAME' set to '$ACTION'"
|
||||
|
||||
# Only print to stdout if running interactively (not from a script/service)
|
||||
[ -t 1 ] && echo "[+] LED '$LED_NAME' set to '$ACTION'"
|
||||
@@ -30,7 +30,9 @@ OpenWrt Project is a Linux operating system targeting embedded devices. Instead
|
||||
| Device | OpenWrt Target | SoC | RAM | Storage | Display | Battery | Notes |
|
||||
|--------|----------------|-----|-----|---------|---------|---------|-------|
|
||||
| **UZ801v3** | `yiming-uz801v3` | MSM8916 | 384MB | 4GB | ❌ | ❌ | USB dongle form factor |
|
||||
| **UF02** | `generic-uf02` | MSM8916 | 384MB | 4GB | ❌ | ❌ | USB dongle form factor most likely with only asian bands. _(Can be somewhat changed via QPST and the `qcn` file from uz801)_ |
|
||||
| **MiFi M68E** | `generic-mf68e` | MSM8916 | 384MB | 4GB | ✅ GC9107 | ✅ | Portable hotspot with interactive display |
|
||||
| **MiFi M9S** | `generic-mf9s` | MSM8916 | 384MB | 4GB | ❌ (Leds) | ✅ | Portable hotspot|
|
||||
|
||||
## Features
|
||||
|
||||
@@ -114,7 +116,15 @@ make -j$(nproc)
|
||||
- **Fastboot mode**: Insert device while holding the button
|
||||
- **EDL mode**: Boot to fastboot first, then execute: `fastboot oem reboot-edl`
|
||||
|
||||
#### MiFi M68E
|
||||
#### UF02
|
||||
- **Fastboot mode**:
|
||||
- From OEM: `adb reboot bootloader`.
|
||||
- From OpenWrt: Enter `edl` and erase boot partition (`edl e boot`).
|
||||
- **EDL mode**:
|
||||
- From OEM: `adb reboot bootloader`, flash `lk2nd` aboot. Reboot pressing the button.
|
||||
- From OpenWrt: Insert device while holding the button.
|
||||
|
||||
#### MiFi M68E or M9S
|
||||
- **Fastboot mode from OpenWrt**: Enter `edl` mode and erase boot partition (`edl e boot`). This will force bootloader.
|
||||
- **EDL mode**:
|
||||
- From OEM: `adb reboot edl`
|
||||
|
||||
Reference in new issue
Block a user