Skip to content

Instantly share code, notes, and snippets.

@sscarduzio
Created August 24, 2014 21:20
Show Gist options
  • Save sscarduzio/05ed0b41d6234530d724 to your computer and use it in GitHub Desktop.
Save sscarduzio/05ed0b41d6234530d724 to your computer and use it in GitHub Desktop.
BtWiFi_with_FON automatic login written as a bash script. I have this running every 10 minutes on my raspberry pi
#!/bin/bash
# CONF
DBG=true
RELOG_UNAME=your@email.com
RELOG_PASSW=xxxxxxxxxxxxxxx
# END CONF
IS_LOGGED_IN=$(wget "https://www.btopenzone.com:8443/home" --timeout 30 -O - 2>/dev/null | grep "accountLogoff")
if [ "$IS_LOGGED_IN" ]
then
[[ $DBG ]] && echo "currently logged in. Nothing to do.."
else
[[ $DBG ]] && echo "It's not logged in.. Will log in!"
OUT=$(wget -qO- --post-data "USERNAME=$RELOG_UNAME&PASSWORD=$RELOG_PASSW" "https://btwifi.portal.fon.com/remote?res=hsp-login&HSPNAME=FonBT%3AGB&WISPURL=https%3A%2F%2Fwww.btopenzone.com%3A8443%2FfonLogon&WISPURLHOME=https%3A%2F%2Fwww.btopenzone.com%3A8443&VNPNAME=FonBT%3AGB&LOCATIONNAME=FonBT%3AGB")
ONLINE=$(echo $OUT | grep youre_online )
if [ "$ONLINE" ]
then
[[ $DBG ]] && echo "You're online!"
else
[[ $DBG ]] && echo "Could not login :("
fi
fi
@lalagreeze
Copy link

A little update with @s4l1h script. I now have much lower ping and I disconnect a lot less (once every 4+ hours compared to 30min-1hour with macrodriod) , but when it tries to reconnect it can take a while sometimes (3-8seconds or sometimes 30 seconds). I think this could be on the btwifi router side, as when i refresh the web Brower btwifi doesnt come up. will update in a few weeks to come.

@aidanmacgregor
Copy link

aidanmacgregor commented Jun 12, 2022

A little update with @s4l1h script. I now have much lower ping and I disconnect a lot less (once every 4+ hours compared to 30min-1hour with macrodriod) , but when it tries to reconnect it can take a while sometimes (3-8seconds or sometimes 30 seconds). I think this could be on the btwifi router side, as when i refresh the web Brower btwifi doesnt come up. will update in a few weeks to come.

nice im currently learning and writing a windows .EXE program that runs in the system tray using vb.net for this also to experiment with, think its almost done, don't think i will use it much as i use the openwrt solution but i wanted to make a nice windows solution (other than running the bash script inside windows) and it was something useful for me to learn with :)
VB6 - 1

@SpikeTheLobster
Copy link

nice im currently learning and writing a windows .EXE program that runs in the system tray using vb.net for this also to experiment with, think its almost done, don't think i will use it much as i use the openwrt solution but i wanted to make a nice windows solution (other than running the bash script inside windows) and it was something useful for me to learn with :)

I would certainly be interested once it's ready - still using a .BAT run by the scheduler, which works fine but is obviously not incredibly reliable!

@aidanmacgregor
Copy link

aidanmacgregor commented Jun 13, 2022

nice im currently learning and writing a windows .EXE program that runs in the system tray using vb.net for this also to experiment with, think its almost done, don't think i will use it much as i use the openwrt solution but i wanted to make a nice windows solution (other than running the bash script inside windows) and it was something useful for me to learn with :)

I would certainly be interested once it's ready - still using a .BAT run by the scheduler, which works fine but is obviously not incredibly reliable!

Uploaded & Ready To Try :)

https://github.com/aidanmacgregor/BT_Wi-fi_Autologin_-_OpenWrt_Windows.EXE_Linux_Android-Macrodroid
Capture

@SpikeTheLobster
Copy link

Won't run on Win7, so I'm probably missing something from VBNet. Also would be nice to have a timer entry, so we can set our own delay. :)

@aidanmacgregor
Copy link

aidanmacgregor commented Jun 13, 2022

Needs at least .net 4.6, this is included & should run on all windows 10 & 11 automatically, i targeted .net 4.6 as its compatible as far back as windows vista after manually installing it on older OS :)

@SpikeTheLobster
Copy link

Needs at least .net 4.6, this is included & should run on all windows 10 & 11 automatically, i targeted .net 4.6 as its compatible as far back as windows vista after manually installing it on older OS :)

Well, that's odd... I ran the .NET 4.6 updater and apparently I already have 4.7.2. "Repaired" that but it still won't run. Says I need to check whether I need x32 or x64 (I assume it's an x64 exe). Gah!

@aidanmacgregor
Copy link

not entirely sure will try targeting 32 bit specifically, current timings are coded as follows,
IF NO INTERNET = ping (500ms timeout), wait (500ms), Ping (500ms Timeout), Run Selected Login
IF INTERNET Ping (Timeout Not Relevant), Wait (1000ms), Loop Back To Ping

@SpikeTheLobster
Copy link

not entirely sure will try targeting 32 bit specifically, current timings are coded as follows, IF NO INTERNET = ping (500ms timeout), wait (500ms), Ping (500ms Timeout), Run Selected Login IF INTERNET Ping (Timeout Not Relevant), Wait (1000ms), Loop Back To Ping

I don't think anyone still uses 32-bit, do they? Not sure why mine (x64) won't run it, to be honest, but then I haven't reformatted and reinstalled for years (used to do it every 6 months) so Windows has probably accumulated a whole load of icky stuff that gets in the way...
The timing thing: I meant between checks, sorry. I have my current batch going every 2 minutes or so, which can give a fair bit of downtime if the network's rubbish but avoids getting things piled up with constant checks!

@aidanmacgregor
Copy link

aidanmacgregor commented Jun 13, 2022

not entirely sure will try targeting 32 bit specifically, current timings are coded as follows, IF NO INTERNET = ping (500ms timeout), wait (500ms), Ping (500ms Timeout), Run Selected Login IF INTERNET Ping (Timeout Not Relevant), Wait (1000ms), Loop Back To Ping

I don't think anyone still uses 32-bit, do they? Not sure why mine (x64) won't run it, to be honest, but then I haven't reformatted and reinstalled for years (used to do it every 6 months) so Windows has probably accumulated a whole load of icky stuff that gets in the way... The timing thing: I meant between checks, sorry. I have my current batch going every 2 minutes or so, which can give a fair bit of downtime if the network's rubbish but avoids getting things piled up with constant checks!

ahh its set to loop so if first test passes waits 1 second and runs the same single packet ping again :)

EDIT: v4 Windows Exe Now Available
https://github.com/aidanmacgregor/BT_Wi-fi_Autologin_-_OpenWrt_Windows.EXE_Linux_Chrome-OS_Android-Macrodroid

@Gadgetoid
Copy link

@aidanmacgregor also now using your script (OpenWRT service). Nice work, thank you! Though I swapped the config over to /etc/btwifi.conf since I'm not sure what owns rc.local on OpenWRT.

@aidanmacgregor
Copy link

@aidanmacgregor also now using your script (OpenWRT service). Nice work, thank you! Though I swapped the config over to /etc/btwifi.conf since I'm not sure what owns rc.local on OpenWRT.

Hey Awesome! Glad its Working Well For You, and i was under impression nothing touched it besides from the user :)

@adammcguk
Copy link

@shuckster With the SSID of BT WiFi hotspots now changing to "EE WiFi", will the cloud-connect plugin need to be altered, and if so, what is required?

@shuckster
Copy link

@adammcguk - Thanks for the report.

If you're already using the plugin, you can try modifying this line in this file in your local filesystem.

Change it from:

BT_SSID=${CC_WIRELESS_SSID_MATCH:-"BTWi-fi\|BTWifi-with-FON"}

To:

BT_SSID=${CC_WIRELESS_SSID_MATCH:-"EE WiFi\|BTWi-fi\|BTWifi-with-FON"}

I have a suspicion the space may cause issues, so if the above doesn't work, try:

BT_SSID=${CC_WIRELESS_SSID_MATCH:-"EE\ WiFi\|BTWi-fi\|BTWifi-with-FON"}

If you are able try this and check that it works, I'll update the plugin in the repo so others can benefit.

@adammcguk
Copy link

@shuckster I tried the 2nd way and I also changed the main config file in the cloud connect plugin, as it also references the SSID. Not sure if this was required but after doing both, it is working.

@topdag
Copy link

topdag commented Jun 23, 2025

Hi, the BT landing zone on EE looks to have changed recently from the previous "https://www.btwifi.com:8443/tbbLogon" to something more complex like this:
"https://auth.bt.com/9e48dc1b-bb65-4264-9a66-21e9c24affc7/b2c_1a_rpbt_signin/oauth2/v2.0/authorize?scope=openid+profile+offline_access+https%3A%2F%2Fauth.bt.com%2Fapi%2Fbtc-wifi-eligibility-api-v1.getWifi&response_type=code&redirect_uri=https%3A%2F%2Fee-wifi.ee.co.uk%3A443%2FsafCallback%2FBT&client_id=5669a528-fd57-4e10-ac60-f681717579ce&response_mode=form_post"

Has anyone any ideas on how to amend my simple script (below) to accommodate this change ?
(Running on GLiNET AR750S router)

SCRIPT:

#!/bin/sh

CONF

DBG=true
RELOG_UNAME="xxxx@xxxx"
RELOG_PASSW="xxxx"

END CONF

IS_LOGGED_IN=$(wget "https://ee-wifi.ee.co.uk/home" --no-check-certificate --timeout 30 -O - 2>/dev/null | grep "you are now connected")

if [ "$IS_LOGGED_IN" ]
then
$DBG && echo "Currently logged in. Nothing to do... :)"

$DBG && logger -t "logon_fon" "Currently logged in. Nothing to do... :)"

else

$DBG && echo "You're not logged in... will log in now!"
$DBG && logger -t "logon_fon" "You're not logged in... will log in now!"
OUT=$(wget -qO - --no-check-certificate --post-data "username=$RELOG_UNAME&password=$RELOG_PASSW" "https://www.btwifi.com:8443/tbbLogon")

ONLINE=$(echo $OUT | grep "now logged on" )

if [ "$ONLINE" ]

then
$DBG && echo "You're online!"
$DBG && logger -t "logon_fon" "You're online!"

else
$DBG && echo "Could not login :("
$DBG && logger -t "logon_fon" "Could not login :("
fi

fi

@transilluminate
Copy link

Hi, the BT landing zone on EE looks to have changed recently from the previous "https://www.btwifi.com:8443/tbbLogon" to something more complex like this: "https://auth.bt.com/9e48dc1b-bb65-4264-9a66-21e9c24affc7/b2c_1a_rpbt_signin/oauth2/v2.0/authorize?scope=openid+profile+offline_access+https%3A%2F%2Fauth.bt.com%2Fapi%2Fbtc-wifi-eligibility-api-v1.getWifi&response_type=code&redirect_uri=https%3A%2F%2Fee-wifi.ee.co.uk%3A443%2FsafCallback%2FBT&client_id=5669a528-fd57-4e10-ac60-f681717579ce&response_mode=form_post"

Has anyone any ideas on how to amend my simple script (below) to accommodate this change ? (Running on GLiNET AR750S router)

SCRIPT:

#!/bin/sh

CONF

DBG=true RELOG_UNAME="xxxx@xxxx" RELOG_PASSW="xxxx"

END CONF

IS_LOGGED_IN=$(wget "https://ee-wifi.ee.co.uk/home" --no-check-certificate --timeout 30 -O - 2>/dev/null | grep "you are now connected")

if [ "$IS_LOGGED_IN" ] then $DBG && echo "Currently logged in. Nothing to do... :)"

$DBG && logger -t "logon_fon" "Currently logged in. Nothing to do... :)"

else

$DBG && echo "You're not logged in... will log in now!" $DBG && logger -t "logon_fon" "You're not logged in... will log in now!" OUT=$(wget -qO - --no-check-certificate --post-data "username=$RELOG_UNAME&password=$RELOG_PASSW" "https://www.btwifi.com:8443/tbbLogon")

ONLINE=$(echo $OUT | grep "now logged on" )

if [ "$ONLINE" ]

then $DBG && echo "You're online!" $DBG && logger -t "logon_fon" "You're online!"

else $DBG && echo "Could not login :(" $DBG && logger -t "logon_fon" "Could not login :(" fi

fi

Hey! Just updated my own script to auto login to EE hotspot, see here https://github.com/transilluminate/eewifi-daemon

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment