-
Notifications
You must be signed in to change notification settings - Fork 3
External Web UI
Experimental feature. Connected phone depends on BeamNG.drive's External UI transport, the local network, operating-system firewall policy, and browser behavior. Keep the in-game phone available as a fallback.
TaxiDriver can mirror its live phone interface to another device on the same trusted local network. The external page is interactive: accepting orders, changing screens, opening settings, and other supported actions operate on the same authoritative Lua state as the in-game UI App.
- BeamNG.drive and TaxiDriver must remain running.
- The computer and phone must be on the same LAN or Wi-Fi network.
- TCP port 8085 must be free on the computer's selected private IPv4 address.
- BeamNG.drive must be allowed to accept private-network traffic through the operating-system firewall.
- Guest/client isolation must be disabled on the router or access point.
- Connected phone must be enabled for the current TaxiDriver UI App session.
If port 8085 is occupied, or the game is denied network access, the QR URL cannot open from another device. A working 127.0.0.1 page does not prove that the LAN address is reachable.
- Open TaxiDriver settings.
- Expand Connected phone.
- Enable Share over local network.
- Wait until the LAN address and QR code appear.
- Scan the QR code with a phone connected to the same trusted network.
- Keep the game running while the external page loads its interface, sounds, live state, and map data.
The feature is deliberately off by default on every UI App start. Enabling it is session-only; it is not restored from settings.json.
Phone browser
→ http://<private-ip>:8085
→ TaxiDriver LuaSocket LAN bridge
→ 127.0.0.1:8085
→ BeamNG native External UI server
→ bng-ext-app-v1 WebSocket
→ TaxiDriver GE Lua state
BeamNG.drive 0.38.6 can advertise a private IPv4 address while the native server actually listens only on loopback. TaxiDriver 2.21.8 adds an in-mod raw TCP bridge that binds to the computer's selected private IPv4 address. It transparently forwards HTTP and WebSocket traffic to the loopback server; no companion executable or background service is required.
The bridge runs inside the BeamNG.drive process. Existing firewall permission for BeamNG.drive therefore controls whether another device can reach it.
TaxiDriver stores a stable random token and the last selected LAN address in:
current/settings/TaxiDriver/lan.json
Changing the toggle does not regenerate the token. The token prevents accidental use of an incomplete URL, but it is not a substitute for network isolation or HTTPS. Enable the feature only on a trusted local network and do not publish the URL.
The external page has a detailed startup loader for:
- game connection;
- application runtime;
- interface and cached sounds;
- live TaxiDriver state.
Refreshing the page requests the current authoritative state again instead of creating a new shift. The external client sends heartbeats; the in-game HUD reports whether a phone is connected. While an external client is active, the in-game app can collapse to a phone button and can still be reopened as a fallback.
The browser cannot reuse the native CEF minimap canvas directly, so TaxiDriver exports:
- the complete available navigation-road graph, chunked to avoid one large UI message;
- the active ground-marker route;
- terrain/minimap tile metadata when the map provides it;
- player position and heading snapshots.
The external canvas caches the complete road set, indexes it spatially, follows the vehicle arrow, rotates with heading, and applies the same speed-sensitive zoom concept as the in-game map. The phone page intentionally has no Minimize control.
Map completeness still depends on the road graph and minimap assets supplied by the current level.
Check all of the following:
- The QR URL uses the computer's private address, for example
192.168.x.x, not127.0.0.1. - TCP port 8085 is not already used by another process.
- BeamNG.drive has inbound access on Private networks in Windows Firewall or the installed security suite.
- Both devices are on the same subnet, not separate guest and main Wi-Fi networks.
- The router does not enable AP isolation, client isolation, or wireless isolation.
- VPN, virtual-adapter, and endpoint-security software is not intercepting local traffic.
- Reload the UI App and generate a fresh QR page.
- Verify there is only one TaxiDriver installation.
- Clear the phone browser cache for the LAN address.
- Confirm that
taxidriver.zipcontainsui/modules/apps/TaxiDriverHUD/external/.
TaxiDriver could not start the native External UI server or bind the LAN bridge. Search beamng.log for taxiDriverLan. A bind error usually means port 8085 is occupied or the selected network adapter disappeared.
- Transport is plain HTTP/WebSocket and is intended only for a trusted local network.
- The pairing token is visible in the QR URL and browser history.
- No cloud relay, public server, telemetry upload, or third-party service is used.
- Connectivity can be affected by BeamNG updates because the feature relies on the game's External UI protocol.
- Browser audio may require the first user interaction before playback is permitted.
TaxiDriver Reloaded documentation · Version 4.0.3 · BeamNG.drive 0.39
- Installation and Quick Start
- Gameplay and Ride Lifecycle
- Order Generation and Routing
- Passengers, Fares and Ratings
- Cargo Deliveries
- Realistic Refueling
- Driver Profile and Persistence
- Settings, Localization and Audio
- Navigation and Map Controls
- External Web UI
- Driver UI Design
- AI Driver Engine 0.39
- AI Driver and Recovery
- Fleet Operations
- Troubleshooting and Compatibility