The OVMS WiFi system is based on the ESP32 integrated WiFi transceiver. It uses and provides WiFi protocols 802.11 b/g/n and WPA2 authentication. The current hardware can only use 2.4 GHz frequency bands.
The WiFi antenna is built into the ESP32 module (PCB antenna). It’s possible to replace that by an external antenna, but you’ll need electronics knowledge and SMD soldering skills & equipment.
Client & Access Point Modes¶
The OVMS WiFi network can be configured as a client (connecting to existing WiFi networks) and/or access point (providing it’s own private WiFi network). Both modes can be run simultaneously, which is the recommended default. That way, you can always connect to your module via WiFi.
OVMS# wifi status Power: on Mode: Access-Point + Client mode STA SSID: WLAN-214677 (-78.7 dBm) [scanning] MAC: 30:ae:a4:5f:e7:ec IP: 192.168.2.102/255.255.255.0 GW: 192.168.2.1 AP: 7c:ff:4d:15:2f:86 AP SSID: DEX106E MAC: 30:ae:a4:5f:e7:ed IP: 192.168.4.1 AP Stations: 0
In client mode, the module will connect to an existing newtork (Access Point) as a client. Multiple APs can be registered, in this case the module will continuously monitor the signal quality, and be able to switch AP if the signal quality is too low.
The module will normally receive an IP address, gateway and DNS from the WiFi access point by DHCP. See below Static IP / SSID Configuration on how to connect with a manual static IP setup.
In access point mode, the module provides access for other WiFi devices on a private network
with the IP subnet
192.168.4.0/24. The module’s IP address on this network is
The module does not provide a DNS or routing to a public WiFi or GSM network on this subnet.
You can define multiple AP networks, but only one can be active at a time.
wifi mode command to manually set the mode, use the auto start configuration to
configure your default mode and networks.
The module cannot act as a mobile hotspot, i.e. provide access to the internet via it’s modem connection. That’s in part due to security considerations, and in part due to hardware limitations. If you need this, consider installing a dedicated mobile hotspot and using that one via WiFi instead of the modem for the module’s internet access (you won’t need the modem in this setup).
Scanning for Networks¶
To manually scan your environment for available WiFi networks, do a
OVMS# wifi scan Scanning for WIFI Access Points... AP SSID MAC ADDRESS CHAN RSSI AUTHENTICATION ================================ ================= ==== ==== ============== WLAN-214677 7c:ff:4d:15:2f:86 1 -83 WPA2_PSK Telekom_FON 78:dd:12:09:dc:be 11 -84 OPEN WLAN-184248 78:dd:12:09:dc:bc 11 -85 WPA2_PSK =========================================================================== Scan complete: 3 access point(s) found
This can also be done in the web UI’s WiFi client network configuration page by clicking on the Select button.
After the module lost connection to a network, a scan is performed automatically every 10 seconds
until a new connection can be established. If you’d like to see the background scans and results
in the log, enable log level
verbose for component
If the module doesn’t find your access point, or can only see it occasionally in the scan results, you may need to raise your scan times. This has been observed on some older Android hotspots.
By default, the module will scan each channel for 120 milliseconds. To raise that, set your scan time in milliseconds using the config command like this, e.g. to 200 milliseconds:
OVMS# config set network wifi.scan.tmin 200
200 milliseconds have been reported to solve the Android hotspot issue. In addition to the
configuration you may need to allow more time looking for further access points after finding the
first one. Do so by setting
OVMS# config set network wifi.scan.tmax 300
Note that every increase will increase the time a full scan takes, so don’t set too high values. Too high values may result in connection drops on the AP network of the module.
WiFi Signal Quality¶
For best performance you’ll need a signal level of -85 dBm or higher.
- Open the web status page, the Wifi signal level can be monitored in the “Live” box.
- Try moving / turning / tilting your router – centimeters can make a huge difference. After each move step back from the router and watch how the signal develops.
- Try switching to another Wifi channel (router configuration).
- Try adding a repeater half way from the router to the car.
The module monitors the WiFi client signal quality and drops a WiFi connection (switches to modem if available) if it becomes too bad. The WiFi connection will be kept active and monitored, and as the signal recovers, the module will automatically reconnect to the AP.
The default threshold is to stop using the connection if it drops below -89 dBm. A connection is assumed to be usable if the signal is above -87 dBm.
Depending on your WiFi environment, the WiFi connection may still be usable at lower signal levels, but it normally will need stable levels above -87 dBm.
To tweak the thresholds, use the web UI WiFi configuration or change the following configuration variables:
OVMS# config set network wifi.sq.good -87.0 OVMS# config set network wifi.sq.bad -89.0
WiFi Mesh Configuration¶
In normal operation, the module will try to stick to an established connection as long as possible. If signal quality drops, it will switch to the modem connection, but monitor the WiFi signal and reassociate to the current AP if possible.
If using a mesh network, you may want to force scanning for a better mesh AP as soon as the
signal drops below the “bad” threshold. To do so, set the network configuration
to true, either using the web UI or by doing:
OVMS# config set network wifi.bad.reconnect yes
With this, the module will perform a full WiFi reconnect cycle as soon as the signal becomes bad.
This is meant for the car moving between cells of your mesh network, e.g. if the first cell is checked in at your gate, but a much better cell becomes available in your garage / car port. It should not be enabled if your Wifi signal is generally poor, as that will cause many disconnects & reconnects.
Static IP / SSID Configuration¶
To connect with a static client address instead of using DHCP, use the
wifi ip static command:
OVMS# wifi ip static [<ip> <subnet> <gateway>]
The gateway will also be used as the DNS.
To configure persistent static details for a known SSID, set these using the following configuration syntax:
OVMS# config set wifi.ssid "<ssid>.ovms.staticip" "<ip>,<subnet>,<gateway>"
You can also force connection to a specific AP by it’s MAC address, “BSSID” in WiFi terms. To do
so, you need to supply the MAC address as a second argument to the
wifi mode client or as the
third argument to the
wifi mode apclient command:
OVMS# wifi mode client <ssid> <bssid> OVMS# wifi mode apclient <apssid> <ssid> <bssid>
This currently needs manual activation by command. Hint: use a script, for example bound to a location.
AP Bandwidth Configuration¶
In normal operation, the default AP bandwidth is set to 20Mhz to reduce interference and improve the signal quality. If a wider 40Mhz
bandwidth is preferred, eg for high throughput logging, set the network configuration
wifi.ap.bw with the command:
OVMS# config set network wifi.ap.bw 40
Once the parameter is set the module will require rebooting to take effect. The default bandwidth can be restored by either removing the parameter or setting it to 20.