PiWiFiAP
PiWiFiAP is a .NET 10 solution for Raspberry Pi that enables users to easily configure WiFi via an AP hotspot and QR code. When offline, the device starts an access point, displays a QR code, and serves a local web portal for WiFi setup. All configuration is template-driven and platform-aware, making first-time or headless setup seamless.
Install / Use
/learn @maker-community/PiWiFiAPREADME
🌐 ApWifi
Smart WiFi Configuration for Raspberry Pi
Seamlessly configure WiFi on your Raspberry Pi through an intuitive web interface with automatic AP hotspot fallback
🇺🇸 English • 🇨🇳 中文说明 • 📖 Documentation • 🤝 Contributing • 🚀 Quick Start
</div>
🚀 Quick Start
ApWifi is a robust .NET 10 solution designed for Raspberry Pi devices that transforms WiFi configuration into a seamless experience. When your device is offline, it automatically creates an access point named "RaspberryPi5-WiFiSetup", displays an interactive QR code on your SPI screen, and serves a beautiful web interface for WiFi setup.
Tested on Raspberry Pi 5, compatible with other Raspberry Pi models
✨ Key Benefits
- 🔄 Zero-touch setup - Automatic fallback to AP mode when offline
- 📱 Mobile-friendly - Scan QR code with any smartphone
- 🌍 Multi-language - Support for 5+ languages with auto-detection
- 🎨 Modern UI - Responsive design that works on all devices
- 🔧 Production ready - Thoroughly tested on real hardware
📸 Screenshots
<div align="center">🔌 Offline Mode - QR Code Display
<img src="assets/network-not-connected.JPG" width="45%" alt="QR Code Display">Device automatically displays QR code on SPI screen when no network is available
📱 WiFi Configuration Interface
<table> <tr> <td align="center"> <img src="assets/set_ssid_en.PNG" width="100%" alt="English Interface"> <br><b>🇺🇸 English Interface</b> </td> <td align="center"> <img src="assets/set_ssid_zh.PNG" width="100%" alt="Chinese Interface"> <br><b>🇨🇳 Chinese Interface</b> </td> </tr> </table>✅ Configuration Success
<table> <tr> <td align="center"> <img src="assets/set_ssid_ok_en.PNG" width="100%" alt="Success English"> <br><b>🔄 Restarting (English)</b> </td> <td align="center"> <img src="assets/set_ssid_ok_zh.PNG" width="100%" alt="Success Chinese"> <br><b>🔄 Restarting (Chinese)</b> </td> </tr> </table>🌐 Connected State
<img src="assets/network-connected.JPG" width="45%" alt="Connected State">After successful connection, device displays its IP address on the SPI screen
</div>📚 Table of Contents
- 🚀 Quick Start
- 📸 Screenshots
- ⭐ Features
- 🎯 How It Works
- 🛠️ Tech Stack & Requirements
- 🚀 Installation & Deployment
- 🤝 Contributing
- 📝 License
- 💬 Support & Community
⭐ Features
<table> <tr> <td width="50%">🔥 Core Functionality
- ✅ Auto AP Hotspot - Creates "RaspberryPi5-WiFiSetup" network
- ✅ QR Code Display - Rendered via SkiaSharp on SPI screen
- ✅ Responsive Web UI - Beautiful, mobile-optimized interface
- ✅ System Integration - Direct WiFi configuration via OS commands
- ✅ Auto Restart - Seamless transition to configured network
🌟 Advanced Features
- ✅ Multi-language - English, Chinese, German, French, Japanese
- ✅ Hardware Integration - .NET IoT libraries for SPI displays
- ✅ Configuration Management - Liquid templates & JSON config
- ✅ Production Ready - Thoroughly tested on Raspberry Pi 5
- ✅ Auto-detection - Smart language and network detection
🎯 How It Works
<div align="center">graph TD
A[🔌 Device Starts] --> B{🌐 Network Available?}
B -->|No| C[📡 Create AP Hotspot<br/>RaspberryPi5-WiFiSetup]
B -->|Yes| D[✅ Show IP Address<br/>on SPI Screen]
C --> E[📱 Display QR Code<br/>on SPI Screen]
E --> F[🌍 User Scans QR Code<br/>Opens Web Interface]
F --> G[⚙️ User Enters WiFi<br/>Credentials]
G --> H[💾 Save Configuration<br/>to System]
H --> I[🔄 Automatic Reboot]
I --> D
</div>
📶 Network Disconnected Mode
- 🚀 Device automatically starts "RaspberryPi5-WiFiSetup" AP hotspot
- 🖥️ QR code is rendered using SkiaSharp and displayed on SPI screen
- 🌐 Local web server runs on AP network for configuration
🔧 WiFi Configuration Process
- 📱 Mobile-optimized web interface with real-time validation
- 🌍 Auto-language detection with support for 5+ languages
- ⚡ Instant feedback and error handling
✅ Post-Configuration
- 💾 WiFi settings written directly to system configuration
- 🔄 Automatic reboot to apply network changes
- 📡 Connects to specified WiFi and displays IP address on screen
🛠️ Tech Stack & Requirements
<div align="center">💻 Core Technologies
📋 Requirements
| Component | Specification | Status | |-----------|--------------|--------| | Platform | Raspberry Pi (all models) | ✅ Compatible | | Tested On | Raspberry Pi 5 | ✅ Verified | | OS | Raspberry Pi OS (64-bit) | ✅ Verified | | Runtime | .NET 10 SDK | ✅ Required | | Display | SPI-connected screen | ✅ Supported | | Libraries | .NET IoT + SkiaSharp | ✅ Included | | Permissions | Root access for network ops | ⚠️ Required |
🧪 Tested Environment
- Primary Hardware: Raspberry Pi 5 (ARM64)
- Compatibility: All Raspberry Pi models with compatible OS
- Operating System: Raspberry Pi OS 64-bit
- Display: SPI-connected screen with .NET IoT drivers
- Graphics: SkiaSharp rendering engine
- Networks: Various WiFi configurations tested
🚀 Installation & Deployment
💻 Development Setup
# Clone the repository
git clone https://github.com/maker-community/PiWiFiAP.git
cd PiWiFiAP
# Build the project
dotnet build
# Run locally (for development)
dotnet run --project ApWifi.App/ApWifi.App.csproj
🔧 Production Deployment
<details> <summary><b>📦 Step 1: Build for ARM64</b></summary># Create optimized build for Raspberry Pi
dotnet publish ApWifi.App/ApWifi.App.csproj \
-c Release \
-r linux-arm64 \
--self-contained \
-o ./publish
</details>
<details>
<summary><b>📤 Step 2: Upload to Raspberry Pi</b></summary>
# Using SCP (replace with your Pi's IP)
scp -r ./publish pi@192.168.1.100:/home/pi/ApWifi
# Or use FileZilla, WinSCP, or similar tools
# Target directory: /home/pi/ApWifi
</details>
<details>
<summary><b>⚙️ Step 3: Configure Auto-start Service</b></summary>
# SSH into your Raspberry Pi
ssh pi@192.168.1.100
# Create systemd service
sudo nano /etc/systemd/system/apwifi-app.service
# Enable and start the service
sudo systemctl enable apwifi-app.service
sudo systemctl start apwifi-app.service
# Check status
sudo systemctl status apwifi-app.service
📖 Detailed instructions: See scripts/README.md
🤝 Contributing
We welcome contributions! Here's how you can help make ApWifi even better:
<div align="center"> </div>🎯 Ways to Contribute
- 🐛 Report bugs or suggest features via Issues
- 🌍 Add translations for new languages
- 📖 Improve documentation
- 🔧 Submit pull requests with enhancements
- ⭐ Star the project if you find it useful!
📝 License
This project is licensed under the MIT License - see the LICENSE.txt file for details.
💬 Support & Community
<div align="center">Found this project helpful? Give it a ⭐!
Questions? Issues? Ideas?
💬 Start a Discussion • 🐛 Report a Bug • 📧 Contact
Made with ❤️ for the Raspberry Pi community
</div>Related Skills
node-connect
354.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
