Occupy WiFi Firmware
Occupy WiFi is a concept project built around a portable router that functions as a web server that distributes propaganda, enabling activists, protestors and other freedom of speech advocates to virtually demonstrate in public without being identified as such.
Firmware is provided for TP-Link TL-MR3040 devices which are used for their low price, excellent portability (batteries included!) and flawless support for OpenWrt-based firmware. The devices serve as LAN-only captive portal hotspots that capture and route all traffic to a local web server that serves propaganda of choice. Custom content can be loaded onto USB drives and seamlessly plugged in.
TL-MR3020 and TL-WR703N are both supported as secondary devices for stationary deployments, or with external portable 5V power.
Firmware images baked from this repository are based on the OpenWrt Image Generator framework.
Build supported only on
x86_64 Linux machines. Trigger with:
Artifacts can be found in
If you can't build an image yourself, you can grab a stable image from the Travis CI build artifacts. Latest stable images:
| Device | Factory | Sysupgrade
:---: | ------ | ------- | ---------- | TL-MR3040 | tl-mr3040-v2-factory.bin | tl-mr3040-v2-sysupgrade.bin | TL-MR3020 | tl-mr3020-v1-factory.bin | tl-mr3020-v1-sysupgrade.bin | TL-WR703N | tl-wr703n-v1-factory.bin | tl-wr703n-v1-sysupgrade.bin
Original Factory Firmware (Web GUI)
- Access the default firmware via http://192.168.0.1 (default user/pass is
- Go to the
occupywifi-ar71xx-generic-tl-mr3040-v2-squashfs-factory.bin(make sure you're using the factory image)
Existing OpenWrt Firmware
Copy the sysupgrade image to
$ scp occupywifi-ar71xx-generic-tl-mr3040-v2-squashfs-sysupgrade.bin 192.168.1.1:/tmp
Then, SSH into the device and run:
$ sysupgrade -n /tmp/occupywifi-ar71xx-generic-tl-mr3040-v2-squashfs-sysupgrade.bin
-n flag that will ensure no old configuration is saved.
Now that your device is flashed, there are several customization steps you'll want to do.
SSH won't be enabled until you set a password, so telnet into the device and set a root user password:
$ telnet 192.168.1.1 $ passwd
You can now SSH and SCP into your device with
root user and the new password.
$ ssh firstname.lastname@example.org
The default wireless SSID is
OccupyWiFi, and is defined in
Captive Portal Content
The OccupyWifi image provides a simple default captive portal webpage. New content can be easily deployed by sticking a USB drive into the device. The are a few requirements for loading content from the USB:
- USB drive must contain a single partition which is formatted as a FAT filesystem
- Entry point must be a single
splash.htmlpage on the USB drive root directory
- Any other pages or static assets must be hosted under the
- Other content that does not match these specifications will not be served by the captive portal