Skip to content

StuffzEZ/hotspoti

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hotspoti

Raspberry Pi Screen Sharing Hotspot, perfect for accesing your raspberry pi whilst travelling.

Caution

This version is in very early alpha stages and may not work

Note

Some parts of this README talks about USB cables and v3. That is the old version (on the v3 branch)

Note

This code is COMPLETELY AI-Generated and is mainly for a proof of concept/testing purposes only.

Note

All devices using this version of the software have the same SSID except for the last 2 letters which are only randomised on setup. Aswell, the password is the same on all devices.

Note

To use a different network device (such as the Pi's inbuilt wlan0), you will have to modify the setup script to use your network device instead of wlan1 (an external adaptor).

Readme generated by AI

🍓 RPi Link v4 — WiFi Hotspot Remote Desktop

Full iPad remote desktop over a dedicated hidden WiFi hotspot from a USB WiFi adapter. No USB cable required. Works like TeamViewer but self-hosted on your Pi.

iPad Safari ←── Hidden WiFi (wlan1) ──→ Raspberry Pi
            live video · audio · touch · files · terminal

What's new vs v3 (USB gadget)

Feature v3 (USB) v4 (WiFi)
Connection USB-C cable WiFi hotspot
Setup complexity Medium Low
Pi 5 quirks Many None
iPad distance 1m max ~10m
Multiple clients No Yes (up to 10)
Internet sharing Via USB Via NAT from eth0
Clipboard sync No
Screen recording No
Process kill No
System controls No ✅ (reboot/shutdown/sleep)
Connected client list No

Requirements

Pi model Raspberry Pi 4 or 5 (also Zero 2 W)
OS Raspberry Pi OS Bookworm (64-bit recommended)
WiFi adapter USB WiFi dongle that supports AP mode
Tested adapters Edimax EW-7811Un, TP-Link TL-WN823N, Alfa AWUS036ACS

⚠️ AP mode required. Most USB WiFi dongles support it. You can check with:

iw list | grep -A 10 "Supported interface modes"
# Must show "AP" in the list

Setup

# 1. Plug in USB WiFi adapter

# 2. Clone / copy files to Pi
scp -r rpi-link-v4/ pi@raspberrypi.local:~/

# 3. Edit WiFi credentials (optional)
nano setup.sh
# Change: HOTSPOT_SSID, HOTSPOT_PASS, HOTSPOT_CHANNEL

# 4. Run setup
cd ~/rpi-link-v4
sudo bash setup.sh

# 5. Reboot
sudo reboot

Connecting from iPad

Because the network is hidden, you must manually enter the network details:

  1. iPad → Settings → Wi-Fi
  2. Scroll down → Other…
  3. Name: RPiLink (or whatever you set in setup.sh)
  4. Security: WPA2
  5. Password: raspberry123 (or what you set)
  6. Safari → http://10.42.0.1 or http://rpi.link

💡 After first connection, iPad will remember the hidden network and auto-connect.


Features

Screen

  • Live MJPEG stream (adjustable FPS, quality, resolution)
  • Touch / Apple Pencil / mouse input injection
  • Keyboard shortcuts + text input
  • Right-click via stylus barrel button or long-press
  • Double-tap = double click
  • Scroll gesture
  • Screenshot download
  • Screen recording (saved as MP4 → download via Files tab)

Audio

  • Live audio stream from Pi via WebSocket PCM
  • Volume control slider
  • Mute toggle

Clipboard

  • Pull clipboard content from Pi to iPad
  • Push text from iPad to Pi clipboard

Files

  • Full file browser (home, /tmp, /media, /mnt, recordings)
  • Upload files from iPad to Pi
  • Download files from Pi to iPad
  • Create folders, delete files
  • Recordings folder shortcut

Terminal

  • Command execution (sandboxed, dangerous commands blocked)
  • Command history (arrow keys)
  • Colour output

Stats

  • Real-time CPU, RAM, temperature, disk
  • Connected WiFi clients list
  • Process list with kill button
  • System controls: Reboot, Shutdown, Sleep

Troubleshooting

Problem Fix
iPad can't find network Network is hidden — use Settings → Wi-Fi → Other…
hostapd fails to start Check adapter supports AP mode: `iw list
Wrong interface detected Edit WIFI_IFACE at top of setup.sh
Dashboard not loading Check sudo systemctl status rpi-link
Stream black / frozen Check sudo systemctl status rpi-link-xvfb
Audio not working Run pulseaudio --check -v as your user
# Diagnose
sudo systemctl status hostapd
sudo systemctl status rpi-link
sudo journalctl -u rpi-link -f

# Check hotspot interface
ip addr show wlan1       # should show 10.42.0.1
iw dev wlan1 info        # should show type AP

# Check who's connected
cat /var/lib/misc/dnsmasq.leases

File structure

rpi-link-v4/
├── setup.sh          ← one-time root setup
├── uninstall.sh      ← clean removal
├── server.py         ← Flask server (stream, input, files, stats)
├── static/
│   └── index.html    ← full iPad UI
└── README.md

Security notes

  • The hotspot is hidden (SSID not broadcast) — adds obscurity
  • WPA2 encryption protects the connection
  • The dashboard has no authentication — anyone on the hotspot can control the Pi
  • Consider changing the default password before deploying
  • Terminal blocks the most dangerous commands but is not a full sandbox
  • For added security, add HTTP Basic Auth to server.py (Flask-HTTPAuth)