Activate an easy Automated WiFi AccessPoint or connect to a local WiFi Network for Raspberry Pi OS Bookworm. The AP is automatically created when you are not in range of a known WiFi network. Useful for both headerless or desktop setups.
With the Raspberry Pi being so portable it is always useful to have a wifi connection. When the wifi signal has been lost due to a weak signal, it can be a bit of a nightmare trying to get access to the Pi without a screen.
The script in this Article will monitor the wifi connection and make sure you are connected to a known Wifi network when the signal is good or it will create a WiFi access point, so you will always have a wifi connection available. It will also allow you to flip to an Access Point with a simple command and back to a WiFi network on demand.
The Access Point will allow a direct Wifi connection to the Pi from a Phone, Tablet, Laptop for use with ssh, VNC desktop sharing, a local web server, etc.
Every 2 minutes the AccessPopup script will check the local wifi network signals. If a known one comes back into range, then a connection is made to the wifi network and the Access Point is stopped.
This is useful for Devices that may be running sensors, cameras or other monitoring software in your Garden, Greenhouse, Shed or Garage that may be where the WiFi signal is weak. You will always be able to get a connection over wifi and is ideal for headerless setups.
This is also useful for any setups where the Pi is required to go in and out of wifi range.
Compatibility:
Requires any Raspberry Pi computer. Tested with PiOS 12 Bookworm, Ubuntu 23.10 Raspberry Pi Image and Arch Linux Arm for Pi4 32bit.
This will NOT work on PiOS 11 Bullseye or 10 Buster or older as they do not use Network Manager.
A similar script is available for PiOS 11 Bullseye and older called AutoHotspot.
This is available at raspberry-pi-automatic-hotspot-and-static-hotspot-installer
Installation and Use:
Latest versions:
accesspopup 0.8-8 6th Oct 2024
installconfig.sh 0.8-7 6th Oct 2024
Installation:
download the archive file with curl "https://www.raspberryconnect.com/images/scripts/AccessPopup.tar.gz" -o AccessPopup.tar.gz
unarchive with tar -xvf ./AccessPopup.tar.gz
change to the AccessPopup folder cd AccessPopup
Run the Installer script
sudo ./installconfig.sh
The menu options below will be presented. Use option 1 to install the AccessPopup scripts.
This will automatically start monitoring the wifi connection every 2 minutes. It will also check the wifi at startup and then at every 2 minute intervals.
Setting a Constant Access Point:
Sometimes it is useful to be able to use the AccessPoint even though the Pi is in range of a known WiFi network.
This can be done by opening a terminal window and entering the command:sudo accesspopup -a
to go back to normal use, just run the script without the -a argument.sudo accesspopup
alternately use option 4 "Live Switch..." on this installer script.
Menu Options:
1 = Install AccessPopup Script
Installs the AccessPopup script and starts the 2 minute checks
2 = Change the Access Points SSID or Password
The access points wifi name (ssid) is AccessPopup and the password is 1234567890.
Use this option to change either or both. At least change the terrible password.
3 = Change the Access Points IP Address
The Access Points IP address is 192.168.50.5. Use this option to choose a new IP address, based on 10.0.#.# or 192.168.#.#
4 = Live Switch between: Network WiFi <> Access Point
Switch on demand. Set the Pi to an Access Point until the next reboot or switch back to a known WiFi Network in range.
5 = Setup a New WiFi Network or change the password to an existing Wifi Network
Scan for local WiFi networks and connect to a new one or change the password to an existing profile.
6 = Change Hostname
Change the system Hostname, so a connection can be made by name instead of an IP address.
7 = Uninstall AccessPopup
Uninstall the AccessPopup script and return the RPi to its default wifi setup.
8 = Run AccessPopup now. It will decide between a suitable WiFi network or AP
9 = Exit
Using the Access Point:
When the Access Point has been activated, the SSID AccessPopup will be broadcast. Using a wifi device, scan for new wifi devices in the area, and select AccessPopup.
You will be prompted to enter the password.
If you have not already changed it, the password will be 1234567890. Don't use the password that is used to log into the Raspberry Pi.
The connection to the Access Point will be made.
SSH, VNC, Web Server
Now that a connection to the Access Point has been made, If you are using SSH, VNC or accessing a web server of the RPi then use:
ssh: ssh
VNC remote desktop: enter the server as 192.168.50.5
Web server: if there is a web server running on the PI, it can be used by entering http://192.168.50.5/ into a web browser.
The Hostname of the device can also be used in place of the IP address for any of the above options.
Using AccessPopup in a terminal window:
AccessPopup is set to run automatically every 2 minutes but it can be run manually to switch to the Access Point.
In a terminal window enter: sudo accesspopup -a
The access point will be activated and the timer will be stopped so it doesn't try to connect to a Wifi network again.
To re-connect to a nearby known wifi network, either reboot or run the script without -a
sudo accesspopup
This will attempt to connect to a known local wifi network and re-activate the 2 minute timer.
If a wifi network connection can't be made, it will activate the Access Point again and continue to monitor the connections.
Using Network Manager from The Desktop:
Alternately to using the AccesPopup script, the Network Manager interface can be used to make your own Access Point. This will be used if no know wifi network is found when the Pi is started. If a known Wifi Network is then in range, Network Manager will keep the Access Point going until it is manually stopped in the WiFi menu or the Pi rebooted. If this suits your needs and you are always using the desktop environment then the standard setup may be useful.
To create an Access Point in Network Manager use the "Create Wireles Hotspot" menu option
As standard Network Manager will use a previously setup Access Point if no known Wifi network is in range. Then when a known Wifi network comes into range you will need to manually stop the Access Point and select the desired Network.
So the AccessPopup script is not required if you are only using a Desktop environment.
AccessPopup is most useful for setups without a desktop (headerless) or where the wifi signal is inconsistent as the wifi connection will be remade every time it is strong again.
If you are using the AccessPopup script and Network Manager desktop menu, then AccessPopup will switch from any Access Point back to a known Wifi network every 2 minutes unless the following command is used in a terminal screen window.sudo accesspopup -a
This will also stop the timer and the script from running.
Using the "Advanced Options" and "Edit Connections" the AccessPoint settings for the profile AccessPopup can be changed, by selcting the profile and then the cog icon.
The AccessPopup profile will be removed from the Network Manager menu if option "7 Uninstall" of this script is used. Unless the profile name has been changed.
On re-installing AccessPopup the default options will be setup. Any other AccessPoint that has been setup, will be ignored in favour of the AccessPopup one.
If you find this guide useful and wish to show your appreciation then you are welcome to make a donation or share a link to this article. There is no obligation to do so, this guide is free for use and support is available to everybody as long as I know the answer :)
I am the single developer of this script and website. Any support towards the costs are welcome.
RaspberryConnect.com
Considerations:
The Access Point disconnects every 2 minutes.
If a WiFi network is setup but the password is not correct, then the connection will fail. Once there is an attempt to connect to a WiFi network, it is added to the list of known networks by Network Manager.
When an Access Point is active, every 2 minutes it will be deactivated to connect to the bad WiFi network when it is in range. This will disrupt any connections to the Access Point.
The Access Point will be re-enabled once the connection to the Wifi network has failed.
If you experience this, then correct the password with option 5 or the Desktop interface. Otherwise delete the bad Wifi network entry.
Ethernet connection to the Pi
If an Ethernet cable is connected to the Pi and the Access Point is available, any device on the Access Point can ssh/vnc/ping etc the other devices also connected to the access point and the network the Ethernet is connected to. This includes the internet, if it is available.
No device on the Ethernet's network can connect ssh/vnc/ping etc to the devices connected to the access point. The Ethernet network can access the Pi, as it is on both networks.
Using a Second WiFi Device
When a second Wifi device is setup such as a USB Wifi dongle, no device connected to the access point can ssh/vnc/ping etc the network that the second Wifi device is connected to. Devices connected to the Access Point can only access the internet or other networks through a connected Ethernet cable.
To do this through a second wifi device requires additional configuration.
Loss of Connection when a Switch Happens
Any connection to the Rpi from another device will be lost when the RPi switches from a Wifi Network connection to an Access Point and back.
If you are using ssh then programs such as tmux will keep your session running while you connect back to your RPi on the new wifi connection.
VNC will reconnect if you are using a Hostname as the server connection. If you have connected with an IP address then you will need the new IP adress from the network you have connected through.
Hostapd not compatible
If hostapd is active on the device then the Network Manager AccessPoint will fail as there will be a conflict. Either disable hostapd with:
sudo systemctl stop hostapd
and
sudo systemctl disable hostapd
or uninstall hostapd
However secondly, a vulnerability issue.
Running the script results with WPA1 wireless security being active as well as the better WPA2. Running the command below shows after (removing superfluous text):
$ nmcli device wifi list
IN-USE BSSID SSID // SECURITY
//
* DC:A6:32:AA:AA:AA AccessPopup // WPA1 WPA2
This is not good... WPA1 is easily crackable and no security.
My solution was to change some of the security parameters by running the commands below in a terminal:
$ sudo nmcli con modify id "AccessPopup" 802-11-wireless-security.proto rsn &&
sudo nmcli con modify id "AccessPopup" 802-11-wireless-security.group ccmp &&
sudo nmcli con modify id "AccessPopup" 802-11-wireless-security.pairwise ccmp
$ systemctl restart NetworkManager
If you run the list command again,
$ nmcli device wifi list
you can see that WPA1 has gone.
These changes should be incorporated into your script ;)
Thank you for highlighting this. These settings where originally included, but then users where getting issues on the Pi Zero W of not being able to connect until these settings where removed.
Since then though PiOS bookworm has been significantly updated and made more usable for slower Pi's, so I will revisit the issue in the hope it is resolved.
Your comments are noted and I will reinstate the setting and look into the PiZero situation.
Thank You
I had been working on a Zero 2 W. The stricter settings worked.
This morning when I moved the SD card to a Zero W, frustration in abundance! I couldn't authenticate to the hotspot. After some research and lots more testing, I found out that you have to define the security settings less strictly during the hotspot setup so that authentication works on Pi Zero W.
So your script is just right for the Zero W as it is.
If you can test for a Zero 2 W, perhaps the stricter settings could be included for its installation.
I'm not sure what other Pi models require the weaker settings but it probably won't be just the Zero W.
No need to apologise. It's made me think that I should do something so that the the other Pi's are set with only WPA2 available.
The issue is that the AccessPoint profile is created on the first activation. I setup my PiZero SD cards on a Pi3 as the Zero is a bit slow for setting up. If I set the profile on installation depending on the device it is running on, then it would be set for the Pi3. So the ZeroW would have connection issues.
I have not seen any reason why the ZeroW doesn't like WPA2 encryption, but I will test this further with the latest PiOS.
I will probably set a dynamic test that mods the profile only if a PiZeroW is currently in use.
This script will work on non Pi devices using a Debian OS with Network Manager, but I won't be able to test the impact of defaulting to better encryption for them, but it should be enabled anyway.
So Thanks and I will follow up and make some changes.
Well it's on the list to do, but that list keeps being inserted by other tasks :) I am currently working on a more featured version which is taking my focus, but yes it will end up on github. My previous script for Bullseye is there. It will bump it up the list.
Glad you like it, thanks.
I'm not sure when it changed but wifi power save mode seems to be the issue. This wasn't causing an issue earlier in the year but seems to be now. I updated the script on Sunday (6th Oct) which disables the power saving for the access point.
Is the version you are running the latest one?
Am I missing something? I am using a clean bookworm installation, just updated with "full-upgrade" command. No other change to any config.
Again, thanks for the tutorial and the script.
Thank you aim glad you like it.
No you are not missing anything. the -a arg sets up the AP and switches off the timer, so it should not switch back after 2 mins.
You can check if the timer is running with;
sudo systemctl status AccessPopup.timer
You will get a line with the time remaining;
Trigger: Wed 2024-09-18 14:58:00 BST; 1min 25s left
repeat to see its progress.
When sudo accesspopup -a is used you will no longer get the countdown, so you should get
Trigger: n/a
Can you check that the timer is being disabled.
As you have a fresh install there shouldn't be any issues. Though my test system is up to date, I haven't done a fresh install lately. So if you are not getting the situation above then I will test it on a new setup.
I am attempting to set up a Rasp Pi 4B as the 'upper computer' for the Wave Rover following the instructions in the link: https://github.com/waveshareteam/ugv_rpi . The AccessPopup module's README took me to this site. And I followed all the instructions on both websites. I am using a newly flashed card for the Rasp Pi with the 64-bit Bookworm recommended installation.
I am having trouble connecting devices to the AccessPopup network. Initially, using just the instructions present in both documents, and launching the connection with 'sudo accesspopup -a', the Pi disconnects from its current Wifi server, attempts to connect to the AccessPopup server, but after a few seconds it times out and connects back to the original Wifi connection. The error I saw was related to the IP address configuration, and after some advice from ChatGPT, I assigned AccessPopup a static IP with the following commands, "sudo nmcli connection modify AccessPopup ipv4.addresses 192.168.50.5/24
sudo nmcli connection modify AccessPopup ipv4.gateway 192.168.50.5
sudo nmcli connection modify AccessPopup ipv4.method manual". After this, I also configured the hostapd.conf file because I was running into an error saying that that file was missing. After some of these tweaks I was able to get the AccessPopup connection to stay up, but I was never able to connect to it with my phone, as it was always saying "wrong password" even though i was typing in the correct defaults password "1234567890", which I attempted many times.
Please let me know what other configuration is needed, or what else I am missing. Thank you.
Am I on the right path? Do yo
It's good to see how the script is being used, looks like a fun project.
The issue where the access point stops after a few seconds switches back to a nearby network even with the -a switch suggest there is a wider issue. I think this is because hostapd is being used as well. Hostapd is not required and should be disabled with;
sudo systemctl stop hostapd
sudo systemctl disable hostapd
The changes to the ip where not required as they are part of the AccessPopup wifi profile that is created the first time the access point is generated. For future reference the gateway needs to have a different ending number than other ip's used, often it will be .1 or .254.
Firstly I would delete the profile for the access point so the script will create a new one next time it runs.
run; nmcli con show
the output will list all the profiles on your system. AccessPopup should be listed.
Delete this with; nmcli con del AccessPopup
then recheck with; nmcli con show
The script in the link is older so download and install the latest version of the AccessPopup script from this page and follow the instructions.
When you run sudo ./installconfig.sh uninstall your existing setup first with option 7.
Then install the updated script with option 1 and reboot.
Hopefully that will sort the issue. If not let me know what happens and I will look into it further.
Thank you so much for your response. It was super helpful installing the latest version from this page. I was able to get the Wifi server to work by doing just that. Unfortunately, after cloning the Github repos for the car and configuring it (which contains the outdated AccessPopup folder), it is having the same error, even after following your instructions of deleting the profiles, uninstalling existing setup and installing the updated script. I know that this seems to be an issue with the Car repos, and out of the jurisdiction of the AccessPopup package, but do you have any idea what could help? Do you think I should replace the outdated AccessPopup folder from the car repos with the updated folder before configuring it in installconfig.sh? I thought I tried that but it produced the same error. Also is there a difference between configuring that file from the AccessPopup directory in the car software package and the AccessPopup directory that is made from unzipping the new software package from this website? Let me know if you have any suggestions for making this implementation work. Thank you so much for your patience and help.
Thanks for the response, I can't see anything that stands out in the repo the would cause an issue with the accesspopup script.
The installconfig.sh script can be used from anywhere so. It will install the accesspopup script into /usr/bin/ and then sets up a systemd service. So as long as the latest installer script is used, it should work. What seems odd is when the Accesspoint is started with 'sudo access popup -a' it reconnects back to the local network. I only get that if the network manager profile is not correct and the accesspoint can't be created.
Things to check.
Activate the AccessPoint manually and see what happens.
nmcli con up AccessPopup
It should say 'Connection successfully activated' and stay connected. Anything else shows there may be an issue with Network Manager not being able to create an access point.
Check hostapd (if installed) is not active.
sudo systemctl is-enabled hostapd
also check for
sudo systemctl is-enabled dnsmasq
this should either not exist or be disabled.
This bit will have been done on the installation but best to check:
check dnsmasq-base is installed
sudo dpkg -s dnsmasq-base
The first lines should say
"Package: dnsmasq-base
Status: install ok installed"
Is the Wifi device called wlan0
enter: ip a
is there an entry for
"wlan0: " or does the wifi device have a different name?
Try these, let me know what happens and I can see if anything stands out.
Thanks!
At the moment you need to connect via ssh/vnc and run the installer script with option 5 to connect to a network. I am working on a new version with additional features that will include a config portal so that it is possible to add a new network via a webpage.
Currently with a VNC connection you can also create create the new connection in the Wifi GUI. That won't cause an issue with the function of the script.
Any webserver that interacts with network manager to setup new connections should also be fine if you need something sooner.
Thank you for the comment, that will be useful. I haven't been able to reproduce this issue previously. I will have another look at it on a Pi Zero W as there is obviously something going on. I will reply to the comment on my findings.
I know what you mean about the comment box, unfortunately that's how the comments module presents it with no options to change it without changing the code.
I have found the cause of the connection issue when a Raspberry Pi Zero is used with Bookworm OS 32bit. It seems just the PiZeroW doesn't like the encryption but the same SD card works on a Pizero2 and Pi3 without an issue.
I will do some further testing before I update the script but if you enter the following command, it will remove the issue from the config file and allow you to use the access point.
sudo nmcli con mod AccessPopup 802-11-wireless-security.group "" 802-11-wireless-security.pairwise "" 802-11-wireless-security.proto ""
best to reboot straight after. Then you should be able to connect via your phone.
Could you let me know if it works for you as well. Thanks
After running "sudo accesspopup -a" the AccessPoint appears just fine on my phone, but the password 1234567890 is repeatedly rejected as wrong. It is correctly stored in /etc/NetworkManager/system-connections/AccessPopup.nmconnection
"sudo journalctl" gives me logs that look similar to bjebb's. Let me know if you want more testing or logs - but I'm running the zero headless, so I can't monitor it real time - I tested this with a short python script to run first with "-a", sleep 5 minutes while I try connecting again, then without "-a".
Also - when leaving a comment here, if I see "Name" I assume the *following* box is where I put it, not the previous one! That had me momentarily confused.
15:22:29 device (wlan0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
15:22:29 device (wlan0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
15:22:29 manager: NetworkManager state is now CONNECTED_LOCAL
15:22:29 device (wlan0): Activation: successful, device activated.
15:22:29 audit: op="connection-update" uuid="15a328b0-1534-4004-9f0f-1216826a8143" name="AccessPopup" args="ipv4.gateway,ipv4.addresses,connection.timestamp" pid=760 uid=0 result="success"
15:22:30 audit: op="connections-reload" pid=785 uid=0 result="success"
15:22:30 agent-manager: agent[7e1be7ccd70a3784,:1.44/nmcli-connect/0]: agent registered
15:22:30 device (wlan0): state change: activated -> deactivating (reason 'new-activation', sys-iface-state: 'managed')
15:22:30 manager: NetworkManager state is now DISCONNECTING
15:22:30 device (wlan0): disconnecting for new activation request.
15:22:30 audit: op="connection-activate" uuid="15a328b0-1534-4004-9f0f-1216826a8143" name="AccessPopup" pid=790 uid=0 result="success"
15:22:31 device (wlan0): supplicant interface state: completed -> disconnected
15:22:31 device (p2p-dev-wlan0): supplicant management interface state: completed -> disconnected
15:22:31 device (wlan0): state change: deactivating -> disconnected (reason 'new-activation', sys-iface-state: 'managed')
Thanks for the log info.
Could you let me know what it does if you activate the access point with the command
sudo accesspopup -a
this will create the access point which should stay running.
If that works as expected them run
sudo accesspopup
to go back to the two minute checks. This will also give some feedback about what it is doing.
You can run this command anytime to get it to check the wifi status.
Also what Pi are you using and OS Bookworm Full or Lite and 32bit or 64bit.
If you could let me know what happens then I can try and replicate the issue and look into it further.
Thanks
I hope this port will not be affected by the running of your script. When a hotspot is generated, the 4G module of usb0 can provide the Internet to the Raspberry Pi; what do I need to do?
I have not tried a 4G USB device with the script but if it shows as a wifi device in infrastructure mode then it will be considered in the same way wifi on wlan0 is, so the AccessPoint won't be available. If it is not Wifi Infrastructure then it will be ignored and stayed permanently connected and the AccessPoint will also be available.
If you run the command: nmcli con show
it will list all the network profile NAMEs and their TYPE. If your usb0 device shows as wifi then use the command
nmcli dev show NAME-of-profile-here | grep wireless.mode
if it responds with
802-11-wireless.mode: infrastructure
then it will stop the accesspoint from automatically activating. If it returns nothing then the USB0 profile will be ignored.
You can force it to be ignored by giving it a priority of less than minus 900, but that may stop it from starting as you would want. This has not been tested.
nmcli con mod NAME-of-profile-here connection.autoconnect-priority -910
The default priority is zero, so you can reset it afterwards.
If your 4g device is connected at the same time as the accesspoint, the devices connected to the accesspoint won't have access to the internet over 4G. Only the Pi itself will.
And I can go in, add new ssids turn on and off the hotspot manually. And that all works great, But I can't seem to get it to automatically do the pop-up and access point if it hasn't detected any Wi-Fi.
Is there something I need to add to like cron or something to make sure it does that? I bring it to a place that doesn't have any Wi-Fi and I expect after turning it on within 2 minutes it should be popping up and access point but it just never does. I'm using a pi 5 with bookworm from March 1st.
If you have a setup that includes a vpn or uses a virtual device then that may be the issue. I have just fixed a bug which would act as you describe.
The script is run every 2 minutes by a systemd timer, so the issue will be around what Network Manager profile it has chosen to use.
To get manual feedback on what connections it is trying to make use "sudo accesspopup -a" to activate the AccessPoint and then "sudo accesspopup" to go back to a network connection. This will show what profile it is trying to connect with.
I have updated the website with the newer version so if you uninstall the current setup. Then download and install that version hopefully that will do the job. If not let me know what the feedback you get from the commands above and I will look into it.
Its good to hear that the script is being put to good use.
I have a pijuice installed, but that shouldn't be blocking anything i can think of.
the only other thought i have, is that I run a python script upon rebooting that schedules the rpi to shut down in 1 hour
https://github.com/Digital-Naturalism-Laboratories/Mothbox/blob/main/Software/Scheduler.py
and it uses a timer I think. Can our timers be conflicting?
I also have a cronjob that runs every minute to take photos.
Do i need to manually set something in cron to make it run the install command and run option 8? installconfig.sh
Thanks for the feedback. The other software and timers won't conflict with this setup, so it's fine to have them running.
If you run "sudo systemctl status AccessPopup.timer"
there is a line that says "Trigger" this shows the countdown timer. If you run it a couple of times you should see the time change.
I suspect the timer is fine. The script will check your setups wifi profiles in Network Manager and decide if one is in range.
This issue maybe around what profile it is selecting, if that is not a wifi profile for wlan0.
The command "nmcli con show" will give you a list of the profiles setup on the Pi. The ones with TYPE wifi are the ones that are available for selection.
Now if you run sudo accesspopup -a
it will force a switch to the access point.
Then run sudo accesspopup
this will show the scan of the local wifi and how it compares them to your Pi's wifi profiles.
The line "Checking the Connection for:" will show what profile it is trying to connect to.
Is that profile the one you are expecting?
If it isn't what you are expecting, can you give me some info about that connection?
and also any output of
nmcli con show THE_PROFILE_NAME_HERE | grep 'wireless.mode'
I will then have a further look into it.
I have this running ok on a standard Pi5 setup with the latest OS Bookworm. There may be some configurations that have the correct criteria but are not what is expected, that I need take account for.
This issue turned out to be that OS Bookworm was being used with X Window rather than the default Wayland and VNC was enabled.
Looking at the logs RealVNC was showing lots of errors which somehow was stopping the AccessPopup.timer from starting.
The workaround was to either disable VNC or to move the timer to the cron with crontab -e
and add the line
*/2 * * * * sudo /usr/bin/accesspopup >/dev/null 2>&1
(there is a space between each star)
The accesspopup script will keep re-enabling the service file so there is no advantage in disabling that.
My development Pi5 has developed a fault so I am can't look into a better fix until the replacement arrives.
If this doesn't help I am happy to look into the issue further.
The script is triggered by a systemd timer. Check the status of that with "sudo systemctl status AccessPopup.timer"
This should be active with the time left until it triggers again.
You can also check the service for any error messages. "sudo systemctrl status AccessPopup.service"
Otherwise you can run the script manually with
"sudo accesspopup" and you will get feedback on what it is doing while it is trying to connect to your network again.
then use "sudo accesspopup -a" to switch back to the Pi's access point.
If that doesn't give any clues the let me know what details you see and I will take a closer look.
First of all, again a wonderful job done, thanks for that.
I have an Banana Pi M2 Zero, with OS Armbian 24.2.1 bookworm Linux 6.6.16
The installation of your program accesspopup 0.8-3 went without errors.
I could change the IP address to 192.168.50.10 without a problem and the my SSID "clearview" get broadcasted too.
On the BPi side, ip addr is showing the broadcasted ip address 192.168.50.10
I can connect to the access point with my windows 10 laptop (with ExpressVPN) but when trying to run PUTTY, Putty cannot connect. Not with hostname and not with pi@192.168.50.10, or hostname "clearview.local"
I also switched off ExpressVPN but that didn't help.
Is there anything I can check/change to make your program to work.
I understand fully the fact that original your software in not build for the exotics of BPi and Armbian bookworm :-)
Kind regards
Ed
Thank for the feedback. I do plan on testing it with various OS's including Armbian but only got as far as Ubuntu and Arch so far. In theory it should work with any system with Network Manager but other factors may need configuration depending on the OS.
Going by my previous scripts, if you can get a connection and your laptop has been issued an ip address then the issue will be with other setup.
When the Hostname is changed, it will need rebooting for it to take full effect.
Check that dnsmasq-base is installed. If that is not available as a package then just dnsmasq as the accesspoint won't work properly without that.
If you have a desktop available and can check if VNC desktop sharing is working then the issue will be with the ssh server rather than the accesspoint. Are you able to ssh from a different device/software.
If you have no luck I am happy to check out Armbian soon as the next OS to look at.
The the device that is used for the AccessPoint can be edited at line 11 of the accesspopup script.
The best way to do this is to edit the accesspopup script in the downloaded and un-archived folder.
Then uninstall the currently active script and then install the new one.
You can only have one device set for the AccessPoint with this script though. You can't easily swap the device as the AccessPoint profile is set to use the same device. The script expects only one profile with the name AccessPopup and if it detects another AccessPoint setup on the default wifi device (in line 11) it will deactivate it and re-enable the AccessPopup profile.
If you are using the desktop then you can manually create a "Hotspot" for wlan1 with a different name and then manually select it from the list of networks. Using the wifi GUI by the clock. You would have to manually change the selected network that wlan0 is set to. So unfortunately it's not that straight forward.
Also when you have both wlan0 and wlan1 setup. The devices on the AccesPoint won't be able to use the internet unless nftables are setup to route the data between wifi devices, which is not part of the current setup.
So unfortunately that is not possible with the setup.
This current script is the basic version to replicate my previous wifi script for Bookworm.
I am currently developing a more featured script, so I will take you comments into consideration. Thanks.
this script is perfect for me, but it doesn't reconnect to my wifi at home. The accesspoint at the works perfectly, but when i want to switch back with (4), or (8) to my home wifi it always shows me the message:
Checking: *ssid name*
unable to confirm connection status
a network connection has not been made with any known ssid. activating acceess point
But, if i go back to nmtui and reconnect to my home wifi, it works. I have tried several ways to create the connection, with nmtui, with the script, but i won't reconnect.
Need help, thanks!
Pascal
That's a bit odd, I will have a look into what is causing that. It will be detecting the SSID from your home network. After it activates the connection it waits for a response from NM. If it doesn't get the a valid response you get the message you see.
Could you activate your connection with the command 'nmcli con up Your-Network-Profile-Name'
and send me the feedback text please. Just to check it's not anything I haven't seen yet.
Does your NM profile name have any special characters or spaces in the name?
thanks for the reply. With sudo, the connection works. Output ist German, connection established, no errors occured.
Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/3)
My ssid is RaumschiffEnterprise, no spaces, nothing special there. It seems the Accesspopupscript doens't wait until NM has answered. It shows the message "unable to confirm" pretty quickly.
Another odd thing is, at the network list i always get all entries twice. Maybe it is confused about the doubled entries.
Add or Edit a Wifi Network
Add a new WiFi network or change the password for an existing one that is in range
1 FRITZ!Box 7530 AL
2 RaumschiffEnterprise Gastzugang
3 RaumschiffEnterprise
4 RaumschiffEnterprise
5 RaumschiffEnterprise Gastzugang
6 FRITZ!Box 7530 AL
7 FRITZ!Box 7530 AL
8 To Cancel
2 until 5 are mine, i have also 5GHz Wifi, but Rpi Zero W can only connect to 2.4GHz, so this is not the reason.
Thank you for the information.
I think I have found the issue and tested it using a WiFi repeater and your SSID's.
I have updated the script and done some other updates as well
If you download the latest version. Then use option 7 to uninstall the old script and then option 1 to install the new script.
it should start using the changes.
The repeating SSIDs is because it picks up each antenna on the router. If you run the command
sudo iw dev wlan0 scan ap-force | grep -E "^BSS|SSID:"
you will see each Mac ID (BSS) is different for each entry.
It doesn't matter which one is selected though as the right one will be used when the connection is made.
Please let me know if this solves the problem, if not I will look into it further.
Thanks for the feedback and how you have use the script. That is always interesting to know.
For the issue; the AP should be getting generated. It is on a 2 minute timer so it will check if a known SSID is in range and try to connect to it. As your Network is in range the AP will be stopped, the connection to your router will fail due to the wrong password and the the AP will be setup again. about 1 min 30 seconds later it will do it all over again.
To check if the script will switch when your router ssid is not available you need to change the SSID rather than the password.
nmcli con mod "Profilename" ssid "newssid"
Then the script won't find any known ssids and create the AP.
If you just want an AP while at home you can use
sudo accesspopup -a
as well, and
sudo accesspopup
to go back to normal use.
I hope that helps, let me know if you have any issues
Happy New Year
sudo nmcli radio wifi on
sudo nmcli dev wifi connect password ""
with a fake password for my network, which subsequently interrupted the valid wifi connection.
In this case, it should default to the access point, right? Because it doesn't. The wifi network is not shown on my Mac or iPhone.
Am I missing something?
./installconfig.sh: line 563: -3: substring expression < 0
It is trying to display the ip address, so just info and not an issue to the function.
I will fix that.