-
Notifications
You must be signed in to change notification settings - Fork 0
Final Project Video
This page provides an overview of Pranav Shastry's contribution to the AESD Final Project Embedded Linux based Wi-Fi Captive Portal Gateway
Drive Link: https://drive.google.com/file/d/1KbEnH9M319t7DJrfrMjbSj4TdqALYMBG/view?usp=sharing Note: Video is in 1080p 60fps. Please download for the best viewing experience.
The video demonstrates:
- Booting the Raspberry Pi based gateway and bringing up the guest Wi-Fi network
- Connecting a client device to the guest SSID
- Automatic captive portal popup behavior on supported devices
- Logging into the captive portal using guest user account credentials
- Successful internet access after authentication
- Accessing the admin portal from the management interface
- Device monitoring through authenticated, unauthenticated, online, and offline device views
- User account management, including creation, modification, disabling, and deletion
- Permanent allow and permanent block handling using MAC address based control
- Wireless configuration and portal customization through the admin interface
- GitHub repository overview a note from Pranav Shastry on how this can be used
My most difficult challenges when implementing this project were:
- Getting the onboard Raspberry Pi Broadcom Wi-Fi driver working reliably with hostapd in the Buildroot environment
- Integrating shell scripts, CGI handlers, firewall rules, and the web interface into one working system
- Debugging captive portal behavior across different client platforms, especially Apple and Android devices
- Managing different access flows for authenticated users, permanently allowed devices, and permanently blocked devices
- Designing a working admin portal with persistent configuration and runtime device/account state
The most important topics I learned from this project were:
- How to build and customize an embedded Linux system using Buildroot for a real networking application
- How hostapd, dnsmasq, iptables, lighttpd, and CGI scripts interact in a captive portal gateway design
- How per-device access control can be implemented using IP and MAC based rule management
- How captive portal detection differs across operating systems and why redirection behavior is harder than standard web development
- How to design a management interface that connects backend state, firewall policy, and user-facing controls into one integrated embedded system
In my current build for the demo, the project was set up in such a way that the rpi gets upstream internet access on eth0 and there is no DHCP server on the eth0 interface. I had connected it with my windows machine and forwarded the Wi-Fi received by my windows machine onto the ethernet adapter thereby not having a DHCP server. For this reason, in the initialization script, the rpi is assigned a static IP is 192.168.1.2 and the computer is assigned 192.168.1.1 manually on windows. If you are connecting this to the LAN port of a modem/router, then please remove this static IP setting and tweak the script to dynamically obtain an IP address from a DHCP server on the network naturally. In this demo, the captive portal page is also forwarded on the eth0 interface at 192.168.1.2 for ease of controlling via the computer for demo purposes. Please tweak this NAT rule as well as per your requirement.
Cheers, Pranav Shastry.