Hi everyone,
I recently installed OpenWrt on my TP-Link Archer MR200, which had a very limited ISP-customized firmware. Everything worked after installing OpenWrt but the signal strength and the 4g LEDs.
MR200's LTE modem is connected via USB, has its own IP address (192.168.225.1) and GUI. As shown below, there doesn't seem to be any trigger for either the signal strength or the establishment of a 4g connection that could be associated with these LEDs
root@OpenWrt:~# cat /sys/class/leds/mr200\:white\:4g/trigger
none switch0 timer [default-on] netdev phy0rx phy0tx phy0assoc phy0radio phy0tpt phy1rx phy1tx phy1assoc phy1radio phy1tpt
root@OpenWrt:~#
After doing some research I've found out that the status of the modem can be retrieved from the HTTP server in the modem. I have then written the following script that I've added in my /etc/rc.local file, which obtains the status of the modem and updates the state of these LEDs every 5 seconds. Note: it requires the real wget binary from wget package, rather than the tiny version in uclient-fetch package.
change_led() {
echo "$2" > /sys/class/leds/mr200\:white\:$1/trigger
}
led_on() {
change_led $1 "default-on"
}
led_off() {
change_led $1 "none"
}
update_led_status() {
$(wget --post-data='{"module":"status","action":0}' http://192.168.225.1/cgi-bin/qcmap_web_cgi -O - -q \
| jsonfilter -e 'SIGNALSTRENGTH=@.wan.signalStrength' -e 'NETWORKTYPE=@.wan.networkType')
case $SIGNALSTRENGTH in
"0;")
led_off signal1
led_off signal2
led_off signal3
led_off signal4
;;
"1;")
led_on signal1
led_off signal2
led_off signal3
led_off signal4
;;
"2;")
led_on signal1
led_on signal2
led_off signal3
led_off signal4
;;
"3;")
led_on signal1
led_on signal2
led_on signal3
led_off signal4
;;
"4;")
led_on signal1
led_on signal2
led_on signal3
led_on signal4
;;
esac
case $NETWORKTYPE in
"3;")
led_on 4g
;;
*)
led_off 4g
;;
esac
}
led_status_loop() {
while sleep 5; do
update_led_status
done
}
led_status_loop &
This solution works perfectly for me but I was wondering if there is a better way of doing this. If not, I wonder if this is something that could be added in a package.
Thanks!
Hi,
I just changed your script, so leds are only written when there is change in signal or 4g status.
Also using curl. Hopefuly I didnt make mistakes
root@router:~# cat /etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
/root/bin/led.sh >/dev/null
exit 0
root@router:~# cat /root/bin/led.sh
#!/bin/sh
eval hash_LED_signal1=none
eval hash_LED_signal2=none
eval hash_LED_signal3=none
eval hash_LED_signal4=none
eval hash_LED_4g=none
change_led() {
# echo debug: change_led "$1" "$2"
echo "$2" > /sys/class/leds/mr200\:white\:$1/trigger
}
led_on() {
export key=LED_$1
if [ $(eval "echo \$hash_$key") != "default-on" ]; then
change_led $1 "default-on"
eval hash_$key="default-on"
fi
}
led_off() {
export key=LED_$1
if [ $(eval "echo \$hash_$key") != "none" ]; then
change_led $1 "none"
eval hash_$key="none"
fi
}
update_led_status() {
$(curl -s -d '{"module":"status", "action":"0"}' -H "Content-Type: application/json" -X POST http://192.168.225.1/cgi-bin/qcmap_web_cgi \
| jsonfilter -e 'SIGNALSTRENGTH=@.wan.signalStrength' -e 'NETWORKTYPE=@.wan.networkType')
case $SIGNALSTRENGTH in
"0;")
led_off signal1
led_off signal2
led_off signal3
led_off signal4
;;
"1;")
led_on signal1
led_off signal2
led_off signal3
led_off signal4
;;
"2;")
led_on signal1
led_on signal2
led_off signal3
led_off signal4
;;
"3;")
led_on signal1
led_on signal2
led_on signal3
led_off signal4
;;
"4;")
led_on signal1
led_on signal2
led_on signal3
led_on signal4
;;
esac
case $NETWORKTYPE in
"3;")
led_on 4g
;;
*)
led_off 4g
;;
esac
}
led_status_loop() {
while sleep 10; do
update_led_status
done
}
led_status_loop &
Can you help me to solve this problem?
what pakage i must install and this script i can paste in local.rc file with scp?
thank you!
deco19
September 6, 2023, 9:47pm
4
I update the script of @asenac working on orange spain firmware + openwrt 22.03.5
change_led() {
echo "$2" > /sys/class/leds/white:$1/trigger
}
led_on() {
change_led $1 "default-on"
}
led_off() {
change_led $1 "none"
}
update_led_status() {
$(wget --post-data='{"module":"status","action":0}' http://192.168.225.1/cgi-bin/qcmap_web_cgi -O - -q \
| jsonfilter -e 'SIGNALSTRENGTH=@.wan.signalStrength' -e 'NETWORKTYPE=@.wan.networkType')
case $SIGNALSTRENGTH in
"0;")
led_off signal1
led_off signal2
led_off signal3
led_off signal4
;;
"1;")
led_on signal1
led_off signal2
led_off signal3
led_off signal4
;;
"2;")
led_on signal1
led_on signal2
led_off signal3
led_off signal4
;;
"3;")
led_on signal1
led_on signal2
led_on signal3
led_off signal4
;;
"4;")
led_on signal1
led_on signal2
led_on signal3
led_on signal4
;;
esac
case $NETWORKTYPE in
"3;")
led_on 4g
;;
*)
led_off 4g
;;
esac
}
led_status_loop() {
while sleep 10; do
update_led_status
done
}
led_status_loop &
I didn't get the one of @spamcop to work, but I don't know almost anything about openwrt scripting.
Hi,
I'm very new to OpenWrt and Linux so forgive me if my question is stupid.
I have a OpenWrt modded Tp-Link modem (TL-MR6400v5). It looks like your solution will work for mine too.
I'd like to know how to call this script automatically. Should I place this script on system startup?
three posts up, shows where it's supposed to go ?
frollic
January 31, 2024, 11:58am
8
you probably won't find it in the binary form, for your SoC.
there's however wget-ssl in openwrt.
you probably won't find it in the binary form, for your SoC.
there's however wget-ssl in openwrt.
It's not in the repository
root@OpenWrt:~# opkg install wget-ssl
Unknown package 'wget-ssl'.
Collected errors:
* opkg_install_cmd: Cannot install package wget-ssl.
good day, can someone please give complete instructions on how to set it up. I try everything but it still doesn't work. I'm a complete beginner. well thank you
psherman
Split this topic
June 29, 2024, 4:58am
15
5 posts were split to a new topic: 4G Signal Strength on MR6400
system
Closed
July 9, 2024, 4:58am
16
This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.