Hello,
This fix was developed to restore the ability to view the camera feed from another device on the local network.
Previously, it was possible to access port 8000 and view the camera via a web browser according to users, this functionality broke in a firmware version—though I do not know which one.
In my case, the feature was already broken when I bought the printer. So, I decided to recreate it to make it usable again.
I am sharing the project so others can adapt it to their needs.
Good luck!
GecKoTDF - OldServers.com.ar
An unofficial Fluidd camera page for Creality K2-series printers whose integrated camera is no longer available through the former port 8000 web page.
The project consists of a single dependency-free file, camera.html, designed to be served by the printer's existing Fluidd nginx server. It connects automatically by deriving the printer address from the page URL.
- Direct, low-latency H.264 video over WebRTC.
- Support for current token-protected Creality camera firmware.
- Automatic printer discovery from the Fluidd page address, with no IP configuration or saved addresses.
- Live printer state, active filename, progress, current layer, total layers, elapsed time, and estimated remaining time.
- Real-time nozzle, bed, and chamber temperatures, including separate current and target values when available.
- Live movement speed and individual part, auxiliary, and chamber fan percentages.
- Collapsible, responsive printer-status dashboard suitable for desktop and mobile browsers.
- Separate collapsible debug console plus a manual reconnect control.
- Multiple simultaneous browser connections supported by the printer.
- A single self-contained
camera.htmlfile with no external assets or runtime dependencies. - Fully local operation: no cloud services, proxy, analytics, persistent storage, or outbound telemetry. Printer data remains in browser memory.
- Experimental fallback for the former port
8000signaling endpoint. This path is retained as a best-effort compatibility option but has not been validated on legacy firmware.
- A compatible Creality printer running Fluidd on port
4408. - Root/SSH access to install the page in Fluidd's web directory.
- A modern browser with WebRTC and H.264 support.
- The viewing device must be able to reach the printer on the local network.
This project has been tested with a token-enabled Creality K2-series firmware. Other models and firmware versions may behave differently.
Enable root/SSH access from the printer settings if it is not already enabled, then copy camera.html to Fluidd's document root.
Run this command from the project directory, replacing the example address:
$PrinterIp = "192.168.1.100"
scp .\camera.html "root@${PrinterIp}:/usr/share/fluidd/camera.html"scp ./camera.html root@192.168.1.100:/usr/share/fluidd/camera.htmlEnter the printer's root password when prompted. nginx does not need to be restarted.
Open the installed viewer at:
http://PRINTER_IP:4408/camera.html
The viewer reads location.hostname and connects to that printer immediately. It intentionally has no manual IP field and is not intended to run from file://.
Note
A firmware update or factory reset may remove camera.html. Reinstall the file if that happens.
When the page opens, it reads the printer address from location.hostname and starts the connection automatically:
- It opens the printer's WebSocket control channel on port
9999and requests a temporary video token. - It creates an H.264 WebRTC offer in the browser.
- It sends the offer and token to the printer's local WebRTC signaling endpoint.
- It applies the returned answer and plays the incoming video track.
Port 9999 carries control and telemetry data, not the video itself. The video travels directly between the printer and browser over WebRTC. On older firmware, the viewer automatically uses the legacy signaling endpoint on port 8000.
Modern browsers replace local IP addresses in WebRTC offers with private mDNS names. Some Creality firmware cannot parse those names. The viewer substitutes a reserved numeric address, allowing ICE to discover the real LAN route automatically.
- Reconnect closes the current WebRTC and WebSocket sessions and starts a new connection.
- Show status opens the diagnostics log. The panel is collapsed by default and opens automatically when an error occurs.
nginx returns the Fluidd application when a requested static file is missing. Confirm that the file exists at exactly:
/usr/share/fluidd/camera.html
Then force-refresh the browser.
- Confirm that the viewer is being opened from the printer at
http://PRINTER_IP:4408/camera.html. - Confirm that the viewing device is on the same LAN as the printer.
- Ensure firewall or Wi-Fi client-isolation rules are not blocking ports
80,4408, or9999. - Select Show status for the connection error, then try Reconnect.
- Reload the page after rebooting the printer.
Use an up-to-date version of Chrome, Edge, Firefox, or Safari with WebRTC H.264 decoding enabled.
Download the new camera.html and repeat the installation command. Replacing the file is sufficient; no service restart is required.
This viewer is intended for trusted local networks. Do not expose the printer's HTTP, Fluidd, or WebSocket ports directly to the public internet. Use a properly configured VPN for remote access instead of router port forwarding.
Enabling root access grants full control over the printer. Only copy files and run commands that you understand.
Viewer:
Viewer + Printer Status
Viewer + Debug
This is an unofficial community project and is not affiliated with or endorsed by Creality. It relies on undocumented local interfaces that may change in future firmware releases. Use it at your own risk.


