Well, the root cause is that getting outgoing emails working from the forum software used by kiwisdr.com to large email providers like Google et al exceeds my likely remaining life span.
I spent two weeks once trying to get it to work. I implemented and tested all the usual suspects: DMARC, SPF, ... Passed all the tests. Didn't help. I gave up. Too much other important work to be done.
This is why the forum sign-up confirmation page say "if you don't get a confirmation email from us in a day or two just try logging into your account and see if it works".
@jks thank you for your answer. So if I understand you correctly, I have no way of getting informed outside the forum if someone posts in the thread?
If so, may i kindly ask anyone who has an urgent question/bug and I do not react within a few days, to please mail me personally if there are important comments in the thread, because I am not always online here.
@jks Regarding the 8073 proxy.kiwisdr.com problem.
Indeed, I noticed that the server directory now has many (proxy) addresses missing the port number 8073 (I believe it is a recent change).
Would it be safe if I add :8073 to the url as an an easy fix if portnumber is missing?
Update: I reread your comment and I guess it is not safe to simply add 8073 because you load balance your proxy server. Since I open the socket low level I have to completely rewrite my error handling, because there is no auto redirect. So I will need some extra time to fix this. It's a pitty it was not announced earlier, because it can have impact on other clients too.
@jks I spent 4 hours trying different scenario's to fix the problem, but it seems It cannot be fixed.
The problem is that I use websockets (ws://).
http:// request are auto-redirected to the server behind the proxy, but ws:// requests are not and you can never fetch the servername behind the proxy.
Also ChatGPT confirms this.
If I use a dummy http NO-CORS fetch, the fetch succeeds, but I cannot get the real url of the server behind the proxy. If I use a dummy CORS fetch, I am blocked by the CORS policy and the fetch fails.
So there is no way afaik to determine the real server behind the proxy.
So this leaves me with a big problem... :-(
The only solution I have afaik is to try to add :8073 to the proxy address, but since you are going to implement different servers for load balancing, this is not a conclusive solution...
Do you have any suggestions?
Suggestion: Could you implement an http request that I call on the proxy server that returns me the real server address/url behind the proxy?
So if I understand you correctly, I have no way of getting informed outside the forum if someone posts in the thread?
You will get notified when you next connect to the forum. You just may not get email push notifications depending on whether your email provider accepts forums emails (it seems not in your case).
I don't understand why you are rolling your own ws processing at the socket level. Why aren't you using a standard HTTP server package that does all this for you and conforms to web standards including handling forwarding and redirection? Certainly the Android development environment must have such a thing.
Note that no proxied Kiwi have actually been moved to the second proxy server yet. But you should be able to do this: Always add ":8073" to any URL of the form "xxx.proxy.kiwisdr.com". The reason you are seeing these recently is that I changed the list and map pages (rx.kiwisdr.com and map.kiwisdr.com) to remove the ":8073" from the URLs they provide in preparation for load balancing.
Then if the connection fails just try it again using "xxx.proxy2.kiwisdr.com" (note the "2"). If this also fails then you can consider the connection as having failed. I don't anticipate using more than two servers at this time.
It's a pity it was not announced earlier, because it can have impact on other clients too.
The change is not going to have an impact on anyone else because they all use packages that conform to web standards.
New to forum, I found KiwiSDR last week and have been accessing the online servers in the web browser. Decided to try the app (2.05.57) today on 2 different Android phones and WSA Manager for Windows with APK Installer on a Windows 10 PC. All 3 have the same issues; I can start the app but cannot access any KiwiSDR server from the Select button. The "hamburger" button will pop up the next screen but I cannot access the Settings, the Register dialog box for the license will pop up but I cannot cancel it - I have to close the app totally. The power button does nothing as well. Otherwise the main screen buttons, rotary dials, keypad entry and hyperlinked selections work.
Any assist to help me get past this to test the app would be appreciated. The app looks great and would be easier to use than the web browser on smaller phones and tablets.
It seems very strange that you have the same behavior on 2 Android phones. I do not have enough information to check out your problem. If you could send some screenshots of what is happening, could clarify some things.
Are your Android phones recent? What is the screen resolution?
Same thing happens to me now (2.05.57). I'll try and recall the sequence of events, but it may not be 100% correct. I'm sure it worked at least once. Then I powered up tablet in airplane mode. Never worked after that. Even after repeated app resets, deletes and re-downloads. Which makes absolutely no sense. Tried it again just now:
"Select a server" button flashes but no list ever appears. Stays on main SDR UI screen. Settings menu ("hamburger" button) works, but then entering valid license key never set text field green. And cancel box does nothing. License key panel is stuck open. Have to do a "force stop" from Android settings. Back button (left arrow) from Settings doesn't work. Toggles to right arrow and then back to left arrow after a couple of presses. "Select a server" doesn't do anything during all of this. Stuck in Settings panel at that point.
It's almost as if it gets hung up on any network communication. I tried looking in Android settings for some sort of network permission that got flipped. But I can't find anything. I've been holding off on the latest update Android wants to do over fears of the reported changes to unsigned side-loading I keep hearing about (details below).
Strange. Problem is that it is difficult to debug when I cannot replicate the problem. @jks if I understand you well, it runs ok on your phone, but not on your tablet, correct? What are the Android versions on both? What is the last version that worked correctly on your tablet? Have to think of a way to gather logging/debugging information.
No, I only have the one Galaxy A9 tablet. No Android based phone. And 1.45.04 works on the tablet. But none of the 2.05.xx versions do.
Seems odd that the license key dialog confirmation hangs with the 2.05.xx versions (valid key never turns the field entry box green, dialog box can't be cancelled). Like there's a generic problem with app network access apart from fetching kiwiservers.js file specifically.
Android Phone: Kyocera E6910 DuraForce PRO 2 Verizon (Android 10 Build 6.103z) Wi-fi phone for experiments
Pixel 6 (Android 16) Primary smartphone to test on both cellular (AT&T) and wifi (fiber at home)
Samsung Tab 2 tablet with Android 9
APK Installer and Manager for Windows version 2.0.24 - running the .apk only on a Win10 PC (installed from the MS Windows app store)
1.45.04 -
Pixel 6 & Kyocera = could search server list and options menu works; cannot start audio stream (with power button). Moving on with V2.0x from this point onward.
2.05.58 -
Only works on Pixel 6-Yay! Gotta get a license to remove the "demo" on the screen ;)
Kyocera and Samsung Tab 2 do not work, cannot search servers, same issues with Settings sub menu as mentioned above.
Logging / debug would be great. I have developer options turned on for the hardware devices, ADB installed on the devices as well as "scrcpy" on the PC for ADB connectivity on the Windows PC I use.
New version of QiwiQ 2.05.59 is now working on all my devices and the Windows APK test box!
Was able to test it as an update to the installed .58 - as well as a brand new install. If I run into any issues I will let you know! Thanks again for the quick fix.
Works great -- Thanks! Couple of remaining issues:
I will hold off on moving any more serial number proxied Kiwi to the secondary proxy server until you implement connection retry. I.e. if connection to Kiwi URL beginning with [digits].proxy.kiwisdr.com:8073 fails you should try [digits].proxy2.kiwisdr.com:8073. And only if that fails consider the Kiwi to be not responding. Right now only 11 public Kiwi with serial numbers 210xx are mapped to proxy2 and they currently just flash the spectrum and waterfall without connecting. But don't otherwise cause v2.0.59 any problems. An example is "Radio Free Citrus" (21084) roughly the 20th entry in the list. Kiwi with URLs not beginning with a digit won't be moving to the secondary proxy server.
License key entry dialog: When I downloaded the app from scratch (i.e. no previous license key stored I presume) the license key field was empty. When I typed the first character of the key the Android on-screen keyboard offered autocomplete of the last full key it remembered. Just like it might when the keyboard is used for predictive texting. I clicked on the autocomplete key. But the resulting license key, which was entered correctly, results in an "invalid license key!" error. On closer inspection this is because the autocomplete appends a single space character at the end of the key when inserted into the key field. If you backspace to eliminate the space then it works. But this is a subtle thing to notice on a small tablet with tiny characters. So maybe trim trailing spaces from the key before validation?
One thing I found while testing the 3 servers near me (Missouri)... One has a time limit of 10 minutes of access before it kicks up a web page (when connected with a browser) to enter a password for longer access (otherwise you have to wait 24 hours to access again). Not sure how many servers do this but on the app there is no way to see this password popup on http://22661.proxy.kiwisdr.com:8073
There are going to be a number of notification issues like that. And we had discussed the impact of the frequency offset issue earlier.
And @barneyuk brings up the open issue of extensions. The only reasonable first step there would be to consider those that don't have a lot of browser/javascript side processing outside of UI display/control. This is why for example the DRM mode button is currently working. All the DRM UI stuff you see in the browser can be skipped if all you want is to hear DRM audio and not see the schedules, statistics etc. And, outside of the schedule panel, this is what happens when using DRM on a browser on a phone in portrait mode with a narrow screen.
@XPloRR Sorry, this is a very bad time of year for me. Dozens of big problems stacked up ahead of you. People waiting..
You need to detect an impending inactivity or 24hr timeout. And then react to it in some manner, which may not be in the same way the Kiwi UI does.
When the inactivity time remaining drops below 1 minute you might show a panel like the kiwi does. And if that panel is ack'd send a "SET inactivity_ack" message on the SND socket. That will reset the inactivity timer (this is an alternative to actually making a change, e.g. frequency change, which also resets the timer). If the user doesn't ack and the connection closes then you can show something that says to reload. In your case pressing the 1/0 button I guess. The Kiwi doesn't give an opportunity to enter an exemption password after an inactivity timeout. Because the password can be given in the URL ahead of time. But you might want to (as described below).
When the 24hr time expires, and the connection closes, you can present a panel asking for an exemption password. If given then reopen connection giving ipl=(exemption pwd) as you show.
How to tell of an impending inactivity or 24hr timeout. This is a little tricky because it was done in the easiest possible way for the Kiwi UI. Not in the easiest way for a general API.
Figure out what rx channel number you're connected to (N) by looking for a msg on the WF socket early on of the form "MSG kiwi_up=1 rx_chan=N". This should probably also be sent on SND socket, but it isn't (historical reasons).
Then every 3 seconds on the SND socket you will see a msg like:
The user_cb value is JSON giving info on all the rx channels. In this case all 4 channels of a Kiwi in 4-channel mode. Since you determined earlier that N=0 you want the first array element of user_cb where i=0. Now look at the object values rt, rn & rs. rt means "remaining type". 0 = no time limits in effect. 1 = inactivity timer will expire soonest. 2 = 24hr timer will expire soonest. rn is the number of seconds until expiration. rs is the h:mm:ss string representation of rn.
So when rn < 60 an expiration will occur within one minute.
Trying to connect when the 24hr limit has been exceeded will cause this msg on the SND socket: "MSG ip_limit=ttt%2cxxx.yyy.zzz.www" where ttt is the 24hr limit in minutes, %2c is the hex encoding for the "," character and xxx.yyy.zzz.www is the source ip address the incoming connection. Receiving this msg is what triggers the display of the exemption password panel in the Kiwi UI.
Comments
Re: emails from kiwisdr.com
Well, the root cause is that getting outgoing emails working from the forum software used by kiwisdr.com to large email providers like Google et al exceeds my likely remaining life span.
I spent two weeks once trying to get it to work. I implemented and tested all the usual suspects: DMARC, SPF, ... Passed all the tests. Didn't help. I gave up. Too much other important work to be done.
This is why the forum sign-up confirmation page say "if you don't get a confirmation email from us in a day or two just try logging into your account and see if it works".
@jks thank you for your answer. So if I understand you correctly, I have no way of getting informed outside the forum if someone posts in the thread?
If so, may i kindly ask anyone who has an urgent question/bug and I do not react within a few days, to please mail me personally if there are important comments in the thread, because I am not always online here.
@jks Regarding the 8073 proxy.kiwisdr.com problem.
Indeed, I noticed that the server directory now has many (proxy) addresses missing the port number 8073 (I believe it is a recent change).
Would it be safe if I add :8073 to the url as an an easy fix if portnumber is missing?
Update: I reread your comment and I guess it is not safe to simply add 8073 because you load balance your proxy server. Since I open the socket low level I have to completely rewrite my error handling, because there is no auto redirect. So I will need some extra time to fix this. It's a pitty it was not announced earlier, because it can have impact on other clients too.
Update to the 8073 proxy.kiwisdr.com problem.
@jks I spent 4 hours trying different scenario's to fix the problem, but it seems It cannot be fixed.
The problem is that I use websockets (ws://).
http:// request are auto-redirected to the server behind the proxy, but ws:// requests are not and you can never fetch the servername behind the proxy.
Also ChatGPT confirms this.
If I use a dummy http NO-CORS fetch, the fetch succeeds, but I cannot get the real url of the server behind the proxy. If I use a dummy CORS fetch, I am blocked by the CORS policy and the fetch fails.
So there is no way afaik to determine the real server behind the proxy.
So this leaves me with a big problem... :-(
The only solution I have afaik is to try to add :8073 to the proxy address, but since you are going to implement different servers for load balancing, this is not a conclusive solution...
Do you have any suggestions?
Suggestion: Could you implement an http request that I call on the proxy server that returns me the real server address/url behind the proxy?
So if I understand you correctly, I have no way of getting informed outside the forum if someone posts in the thread?
You will get notified when you next connect to the forum. You just may not get email push notifications depending on whether your email provider accepts forums emails (it seems not in your case).
I don't understand why you are rolling your own ws processing at the socket level. Why aren't you using a standard HTTP server package that does all this for you and conforms to web standards including handling forwarding and redirection? Certainly the Android development environment must have such a thing.
Note that no proxied Kiwi have actually been moved to the second proxy server yet. But you should be able to do this: Always add ":8073" to any URL of the form "xxx.proxy.kiwisdr.com". The reason you are seeing these recently is that I changed the list and map pages (rx.kiwisdr.com and map.kiwisdr.com) to remove the ":8073" from the URLs they provide in preparation for load balancing.
Then if the connection fails just try it again using "xxx.proxy2.kiwisdr.com" (note the "2"). If this also fails then you can consider the connection as having failed. I don't anticipate using more than two servers at this time.
It's a pity it was not announced earlier, because it can have impact on other clients too.
The change is not going to have an impact on anyone else because they all use packages that conform to web standards.
New version of QiwiQ released: 2.05.57
• Fix for proxy.kiwisdr.com servers with missing port
• Bug fix in v.2.05.56
This fix does not yet support the newly announced proxy load balancing (proxy2.kiwisdr.com).
Download at: https://bit.ly/3I49LfD
Feedback/bugs welcome!
Works! Thank you :)
New to forum, I found KiwiSDR last week and have been accessing the online servers in the web browser. Decided to try the app (2.05.57) today on 2 different Android phones and WSA Manager for Windows with APK Installer on a Windows 10 PC. All 3 have the same issues; I can start the app but cannot access any KiwiSDR server from the Select button. The "hamburger" button will pop up the next screen but I cannot access the Settings, the Register dialog box for the license will pop up but I cannot cancel it - I have to close the app totally. The power button does nothing as well. Otherwise the main screen buttons, rotary dials, keypad entry and hyperlinked selections work.
Any assist to help me get past this to test the app would be appreciated. The app looks great and would be easier to use than the web browser on smaller phones and tablets.
Thanks!
Brian
W0BEV
It seems very strange that you have the same behavior on 2 Android phones. I do not have enough information to check out your problem. If you could send some screenshots of what is happening, could clarify some things.
Are your Android phones recent? What is the screen resolution?
Same thing happens to me now (2.05.57). I'll try and recall the sequence of events, but it may not be 100% correct. I'm sure it worked at least once. Then I powered up tablet in airplane mode. Never worked after that. Even after repeated app resets, deletes and re-downloads. Which makes absolutely no sense. Tried it again just now:
"Select a server" button flashes but no list ever appears. Stays on main SDR UI screen. Settings menu ("hamburger" button) works, but then entering valid license key never set text field green. And cancel box does nothing. License key panel is stuck open. Have to do a "force stop" from Android settings. Back button (left arrow) from Settings doesn't work. Toggles to right arrow and then back to left arrow after a couple of presses. "Select a server" doesn't do anything during all of this. Stuck in Settings panel at that point.
It's almost as if it gets hung up on any network communication. I tried looking in Android settings for some sort of network permission that got flipped. But I can't find anything. I've been holding off on the latest update Android wants to do over fears of the reported changes to unsigned side-loading I keep hearing about (details below).
Galaxy Tab A9
s/w ver: Android 15, patch level 1 Jul 2025, UI ver 70
s/w ver pending: Android 15, patch level 1 sep 2025, UI ver 70
Update: 1.45.04 works! I've been keeping some older .apk files on kiwisdr.com just for this purpose: http://kiwisdr.com/q/145.apk
I uploaded a video from my Pixel 6 just now that is showing the same issues @jks mentioned. The video is on my channel.
I'll try an earlier version from the link above when I get home later tonight.
Brian
W0BEV
Where are the extensions etc? I have antenna switch on both my Kiwis, but I can't find how to switch them.
For those who have problems opening the server list.
If you have the problem, can you check if you can open this file on the phone/device where QiwiQ is installed:
"https://raw.githubusercontent.com/xplorr/shortwave-schedule/main/kiwiservers.js"
Every 20 minutes I generate an updated version of this list on github.
This list is loaded when QiwiQ starts.
If QiwiQ cannot open that file it cannot load the serverlist.
If this problem persists, I have to fallback to the github loadbalanced version:
"https://cdn.jsdelivr.net/gh/xplorr/shortwave-schedule/kiwiservers.js"
Problem is that updates are not instant and can sometimes lag several hours before updated to the loadbalanced github servers.
New version of QiwiQ released: 2.05.58
• Use of loadbalanced github project urls (possible update delay)
• Different "fetch" method of loading resources
@jks @W0BEV I created this release to try to fix your latest problems.
Let me know if this fixes your problems.
Download at: https://bit.ly/3I49LfD
Feedback/bugs welcome!
For me 2.05.58 has exactly the same problems as .57 on my Android tablet.
I can open both of the kiwiservers.js files in a browser fine.
Strange. Problem is that it is difficult to debug when I cannot replicate the problem. @jks if I understand you well, it runs ok on your phone, but not on your tablet, correct? What are the Android versions on both? What is the last version that worked correctly on your tablet? Have to think of a way to gather logging/debugging information.
No, I only have the one Galaxy A9 tablet. No Android based phone. And 1.45.04 works on the tablet. But none of the 2.05.xx versions do.
Seems odd that the license key dialog confirmation hangs with the 2.05.xx versions (valid key never turns the field entry box green, dialog box can't be cancelled). Like there's a generic problem with app network access apart from fetching kiwiservers.js file specifically.
Here's my testing the past 24 hours:
Devices -
Android Phone:
Android Phone: Kyocera E6910 DuraForce PRO 2 Verizon (Android 10 Build 6.103z) Wi-fi phone for experiments
Pixel 6 (Android 16) Primary smartphone to test on both cellular (AT&T) and wifi (fiber at home)
Samsung Tab 2 tablet with Android 9
APK Installer and Manager for Windows version 2.0.24 - running the .apk only on a Win10 PC (installed from the MS Windows app store)
1.45.04 -
Pixel 6 & Kyocera = could search server list and options menu works; cannot start audio stream (with power button). Moving on with V2.0x from this point onward.
2.05.58 -
Only works on Pixel 6-Yay! Gotta get a license to remove the "demo" on the screen ;)
Kyocera and Samsung Tab 2 do not work, cannot search servers, same issues with Settings sub menu as mentioned above.
Tested https://cdn.jsdelivr.net/gh/xplorr/shortwave-schedule/kiwiservers.js on all devices, can reach via web browser on all hardware devices. (Windows PC browser works okay for servers list, as well as individual servers online).
Logging / debug would be great. I have developer options turned on for the hardware devices, ADB installed on the devices as well as "scrcpy" on the PC for ADB connectivity on the Windows PC I use.
Brian
W0BEV
Problem found and fixed :-)
Have to compile and will release shortly.
@jks @W0BEV let me know if it is fixed.
Also license key entry problem should be fixed now.
New version of QiwiQ released: 2.05.59
• Fix for clean install bug (since proxy.kiwisdr.com servers have missing port)
Users who upgraded QiwiQ did not experience this bug, only clean/new install of QiwiQ had this bug.
Download at: https://bit.ly/3I49LfD
Feedback/bugs welcome!
New version of QiwiQ 2.05.59 is now working on all my devices and the Windows APK test box!
Was able to test it as an update to the installed .58 - as well as a brand new install. If I run into any issues I will let you know! Thanks again for the quick fix.
Brian
W0BEV
Works great -- Thanks! Couple of remaining issues:
I will hold off on moving any more serial number proxied Kiwi to the secondary proxy server until you implement connection retry. I.e. if connection to Kiwi URL beginning with [digits].proxy.kiwisdr.com:8073 fails you should try [digits].proxy2.kiwisdr.com:8073. And only if that fails consider the Kiwi to be not responding. Right now only 11 public Kiwi with serial numbers 210xx are mapped to proxy2 and they currently just flash the spectrum and waterfall without connecting. But don't otherwise cause v2.0.59 any problems. An example is "Radio Free Citrus" (21084) roughly the 20th entry in the list. Kiwi with URLs not beginning with a digit won't be moving to the secondary proxy server.
License key entry dialog: When I downloaded the app from scratch (i.e. no previous license key stored I presume) the license key field was empty. When I typed the first character of the key the Android on-screen keyboard offered autocomplete of the last full key it remembered. Just like it might when the keyboard is used for predictive texting. I clicked on the autocomplete key. But the resulting license key, which was entered correctly, results in an "invalid license key!" error. On closer inspection this is because the autocomplete appends a single space character at the end of the key when inserted into the key field. If you backspace to eliminate the space then it works. But this is a subtle thing to notice on a small tablet with tiny characters. So maybe trim trailing spaces from the key before validation?
One thing I found while testing the 3 servers near me (Missouri)... One has a time limit of 10 minutes of access before it kicks up a web page (when connected with a browser) to enter a password for longer access (otherwise you have to wait 24 hours to access again). Not sure how many servers do this but on the app there is no way to see this password popup on http://22661.proxy.kiwisdr.com:8073
Brian
W0BEV
There are going to be a number of notification issues like that. And we had discussed the impact of the frequency offset issue earlier.
And @barneyuk brings up the open issue of extensions. The only reasonable first step there would be to consider those that don't have a lot of browser/javascript side processing outside of UI display/control. This is why for example the DRM mode button is currently working. All the DRM UI stuff you see in the browser can be skipped if all you want is to hear DRM audio and not see the schedules, statistics etc. And, outside of the schedule panel, this is what happens when using DRM on a browser on a phone in portrait mode with a narrow screen.
@jks how can I implement the password logic?
What is the password protocol?
Do I receive a password message in the SND socket after 10 minutes?
Should I then send something like: SET auth t=kiwi p=# ipl=Mypass ?
@XPloRR Sorry, this is a very bad time of year for me. Dozens of big problems stacked up ahead of you. People waiting..
You need to detect an impending inactivity or 24hr timeout. And then react to it in some manner, which may not be in the same way the Kiwi UI does.
When the inactivity time remaining drops below 1 minute you might show a panel like the kiwi does. And if that panel is ack'd send a "SET inactivity_ack" message on the SND socket. That will reset the inactivity timer (this is an alternative to actually making a change, e.g. frequency change, which also resets the timer). If the user doesn't ack and the connection closes then you can show something that says to reload. In your case pressing the 1/0 button I guess. The Kiwi doesn't give an opportunity to enter an exemption password after an inactivity timeout. Because the password can be given in the URL ahead of time. But you might want to (as described below).
When the 24hr time expires, and the connection closes, you can present a panel asking for an exemption password. If given then reopen connection giving ipl=(exemption pwd) as you show.
How to tell of an impending inactivity or 24hr timeout. This is a little tricky because it was done in the easiest possible way for the Kiwi UI. Not in the easiest way for a general API.
Figure out what rx channel number you're connected to (N) by looking for a msg on the WF socket early on of the form "MSG kiwi_up=1 rx_chan=N". This should probably also be sent on SND socket, but it isn't (historical reasons).
Then every 3 seconds on the SND socket you will see a msg like:
MSG user_cb=[
{"i":0,"n":"ZL4VO%2fKF6VO","g":"Tauranga%2c%20New%20Zealand","f":18776350,"m":"usb","z":0,"wf":0,"fc":23,"t":"0:00:43","rt":1,"rn":23,"rs":"0:00:23","e":"","a":"","c":0.0,"fo":0.000,"ca":0,"nc":0,"ns":0},
{"i":1},
{"i":2},
{"i":3}
]
The user_cb value is JSON giving info on all the rx channels. In this case all 4 channels of a Kiwi in 4-channel mode. Since you determined earlier that N=0 you want the first array element of user_cb where i=0. Now look at the object values rt, rn & rs. rt means "remaining type". 0 = no time limits in effect. 1 = inactivity timer will expire soonest. 2 = 24hr timer will expire soonest. rn is the number of seconds until expiration. rs is the h:mm:ss string representation of rn.
So when rn < 60 an expiration will occur within one minute.
Trying to connect when the 24hr limit has been exceeded will cause this msg on the SND socket: "MSG ip_limit=ttt%2cxxx.yyy.zzz.www" where ttt is the 24hr limit in minutes, %2c is the hex encoding for the "," character and xxx.yyy.zzz.www is the source ip address the incoming connection. Receiving this msg is what triggers the display of the exemption password panel in the Kiwi UI.