github meatpiHQ/wican-fw v6.0.0p-beta.5
WiCAN PRO 6.0.0-beta.5

pre-release3 hours ago

Pre-release on the beta channel. Devices on that channel install it from their own page (System > Firmware update); the files below are for a manual upload.

WiCAN PRO 6.0.0-beta.5

Supported device: WiCAN PRO only. Home Assistant: v6 requires the meatpi-multi-device branch of the ha-wican integration.

Before you update

  • Units already on this partition layout (v6 (settings and storage LittleFS)) update in place.
  • Units coming from firmware 4.40.0 to 4.51.0 (factory v4.x (one 6 MB FAT storage)): the first boot restarts once more and the stored files, logs and the saved configuration are reset.
  • Coming from a v6 alfa or beta: settings, profiles and files are kept; the standard PID rows are re-numbered at the first start. A custom PID you wrote on a v6 alfa or beta against a single-frame reply reads one byte too far: run Test a PID (B0 is the first byte after the CAN id) and move each B index up by one, or re-import the published profile.
  • A beta.1 device that parked itself (LED breathing red) updates from safe mode: hold the button until the LED turns sky blue, then yellow, join the device's own access point (its name starts with WiCAN_, password @meatpi#), open http://192.168.0.10 and upload the firmware there. Settings are kept.
  • Coming from firmware 4.x: the stored files, logs and the saved configuration are erased by the new partition layout; download a backup first (System > Maintenance > Configuration backup). The device restarts once more on its first start.
  • In case of a boot loop, perform a factory reset.

New since beta.4

  • The Quick Setup's vehicle step asks which car it is before the detection: a published profile from the list, or no profile and detection as before. With a profile chosen, the car is stored under the profile's name with the profile attached, the detection pins the protocol the profile expects, and a car that answers no standard request at all (a Nissan Leaf) is confirmed by the profile's own request. A car seen without its VIN shows "No VIN" in the vehicles list, and "Same car as..." folds it into the entry it belongs to. The identification asks the standard support request three times and merges the replies.
  • A published profile's passive CAN filters come along with its PIDs now, from Automate > Parameters > Vehicle Specific and from the Quick Setup alike (the Nissan Leaf ZE1, 2018 onwards, is the first profile with them: speed, motor RPM and odometer read from frames the car broadcasts). Filters you made by hand stay; a re-import replaces the profile's own. Until now the import carried the PIDs alone.
  • When WiCAN is plugged into a car it was not set up for (a device set up on one car, or on a simulator, then taken to another), that car becomes current with no parameters chosen, and the Dashboard went empty without a word. A bar under the header and a banner on the Dashboard now say so and lead to the vehicle step, where the car is set up or folded into the one you set up.
  • Factory reset now returns the device to its factory state: settings, stored vehicles and their tables, trouble-code databases, DBC files, scripts, the dashboard, certificate sets, the backup copy on the internal flash and the NVS records are erased, from the web UI, the console (factoryreset) and safe mode alike. Kept on purpose: the stored crash report and the backup key, so the copy on the SD card still opens. The SD card is never touched; its copy is held whole, and restoring from it undoes the reset. Until now a factory reset erased the settings only.
  • J2534: what a tool sends is no longer inspected. A raw CAN write is checked for its size alone; ISO15765 and J1850 requests carrying the UDS reprogramming services (0x34 to 0x37) are forwarded and counted (reflash_seen on the J2534 page and GET /api/j2534). The "Allow ECU flashing" switch is gone (a stored value is dropped at the first start); enabling the J2534 server is the consent.
  • J2534 Windows driver 1.5.0: reads wait on an event instead of polling, the driver log is on by default (in the Public Documents folder), and PassThruGetLastError names every refusal by the device.
  • The device's address on the USB network link to a PC (USB-NCM or RNDIS) is a setting on the USB page, "USB link address" (default 192.168.82.1), for PCs whose own network sits on that subnet.
  • Built with ESP-IDF v6.1 (the betas before it: v6.0.2); about 4 KB more internal RAM is free after boot.
  • The boot console's memory map also prints the lowest internal RAM point of the boot (WICAN RAMMIN), for support cases.

Bug fixes since beta.4

  • Fixed a vehicle without a readable VIN that could not be forgotten or given a profile: the Vehicles list showed it as "Car xxxx" with "no VIN, ECU set ...", Forget answered "no such route" and it kept "Profile pending" (the browser percent-encodes the car's fp: key and the device did not decode it). Such an entry appears when a car answers no VIN at one contact and its VIN at another with other ECUs awake (ignition ACC against ON); the two are kept apart on purpose, and the extra entry can now be forgotten.
  • Fixed an empty command sent to the OBD chip (answered ?) in the chip's start-up sequence on K-line and J1850 vehicles and when no vehicle is current: the headers-off command was dropped by the filter meant for the user's own init strings, so those vehicles were read with headers on. The sequence used when no vehicle is current now sets headers on explicitly, the state such cars had in practice.
  • Fixed J2534 PassThruWriteMsgs answering NotSupported at random to VW TP 2.0 flashers (and to any tool whose raw CAN frames carry a byte between 0x34 and 0x37 where an ISO-TP service id would sit): the reprogramming gate read TP 2.0 data frames as ISO-TP. The gate is gone, see above.
  • Fixed two error lines from the MQTT client at every planned restart while connected to the broker (a settings submit, a restart, an update): the session is closed before the restart, and the broker sees a clean disconnect.

New since beta.3

  • An SD card the device cannot read is named for what it holds instead of reading "Not mounted": exFAT (the factory format of every card over 32 GB), NTFS, a blank card or a damaged boot sector. A bar under the header, the Status page, the File Manager, the Logger and the backup copies card say so and offer Format the card.
  • Formatting from the web UI writes FAT32 on the card (one partition, 32 KB clusters above 32 GB) after you confirm and type format sdcard; the logger, the backup copies and the File Manager use the card the moment it is mounted. A mounted card is never formatted through this path. The console has sdcard --format --yes.
  • GET /api/sdcard reports the slot (the card, what it holds, the last format) and GET /api/status carries an sd summary.

Bug fixes since beta.3

  • Fixed an SD card the device cannot read logging three error lines at every insertion and latching a boot_errors fault at boot: the card is probed before any mount is tried and reported in one warning line.

Bug fixes since beta.2

  • Fixed multi-frame vehicle profile values decoding as garbage (the Kia Niro EV state of charge and cell data, the Nissan Leaf, the BMW i3, the Hyundai and Kia battery rows, the Xpeng and Toyota cell lists): the v6 alfa and beta read the reply with the ISO-TP framing bytes stripped, so a profile written for the 4.x firmware pointed at the wrong bytes beyond the first frame. The device counts the bytes as the published profiles do (#1014)
  • Standard PID rows stored by an earlier v6 are re-numbered automatically; Test a PID shows the bytes as the expressions count them; an init chain's ATH0, ATS0 and ATE1 are ignored as the 4.x firmware did
  • Fixed a reply from an ESPNetLink or another USB network device vanishing when its length was a multiple of 64 bytes; a dongle update through the WiCAN PRO could fail on it
  • An ESPNetLink that is plugged in but does not answer is reported as unreachable and retried every 10 s, with one USB power cycle after two minutes, instead of being parked as a foreign device

Bug fixes since beta.1

  • Fixed a crash on every Home Assistant webhook push: a beta.1 device with the integration registered crashed about 15 s after each start, three times, then parked (LED breathing red): the update status read the flash from the webhook task.
  • A firmware update no longer freezes the device for about 5 s at its start: the whole image area was erased in one go before the first byte arrived. The flash is erased as the image arrives now.
  • An OBD app over the WebSocket channel could connect at the wrong moment and receive nothing (the device had just dropped it as a dead client while its handshake was still in flight). The handshake moment is recognised now.

New since alfa-06

  • Firmware updates from the MeatPi release list: System > Firmware update shows what the selected channel (stable, beta or alfa) offers, with the release notes, and installs it from the device. A new image that crashes three times is rolled back on its own.
  • A connected ESPNetLink is updated through the WiCAN PRO, over USB or WiFi, from the same card (dongle firmware 1.23 or newer; a dongle on 1.20 is flashed once over USB).
  • Downloads run over WiFi only, never over the ESPNetLink's mobile connection.
  • The ESPNetLink's assisted GPS is switched on by the WiCAN PRO, and its access point when the dongle is used in WiFi mode.
  • The firmware version reads 6.0.0-beta.5; the build identifier moved to the About page and /api/info.
  • J2534: ISO15765 messages follow the SAE J2534-1 layout (the 4-byte CAN id first, the pad flag per message), one ISO-TP session per flow-control filter, the TxDone and start-of-message indications.
  • J2534: J1850 VPW (GM Class 2) through the OBD chip, request and response. PWM and K-line stay unsupported.

Bug fixes since alfa-06

  • Fixed a full-scale reading dropped by its own range: a full tank (41 2F FF) decoded to 100.000001646 against a maximum of 100 and was discarded. Standard PID rows now clamp to the table's range, as the 4.x firmware did; a custom row's bounds stay a filter (#1004)
  • Fixed a custom row's init leaking into the standard rows: a chain that moves the chip to a gateway behind extended addressing (ATSH6F1, ATCEA60, ATCRA660) froze every Mode 01 value that followed. The baseline is put back between row types (#964)
  • Fixed J2534 testers timing out on every ISO15765 request because the device expected the bare payload instead of the J2534-1 layout
  • Fixed the J2534 server unsubscribing another component's CAN queue before its first CONNECT

New features in v6

  • New UI design
  • Added Quick Setup
  • Improved AutoPID
  • Improved CAN logger (raw CAN, SQLITE, Binary, Json)
  • Improved Dashboard
  • Improved CAN monitor
  • Added support for Tailscale VPN
  • Added support for USB devices (ESPNetlink, GPS, USB to Ethernet adapter)
  • Added DTC Trouble codes
  • Added DBC signals support
  • Added New Rules and Events
  • Added Scripting feature
  • Added UDS Tools
  • Added J2534 support
  • Added File Manager (Sd card and Internal flash)
  • Added System logs UI
  • Added System Monitor UI
  • AutoPID and Quick Setup support ISO 27145 (WWH-OBD) vehicles, such as Euro VI Sprinters over 3.5 t that answer only 22F4xx on 29-bit CAN (#298, reported by @billybigpotatoes, protocol findings by @CzarofAK)
  • Added VPN split tunnel: route only the networks you choose through WireGuard (up to 8 routes, .conf import). Replaces the Allowed IP and Mask fields, existing values are migrated (#975)
  • Added Pause VPN per WiFi network: the tunnel stays down on a marked network (e.g. home WiFi) and comes back when the device leaves it (#976)
  • Added full configuration Backup and Restore (settings, vehicle profiles and PIDs, code databases, DBC files, scripts, dashboard layout), with optional removal of sensitive data and optional encryption, plus backup copies kept on the internal flash and SD card (#979)
  • ESPNetLink made easier: USB data mode (RNDIS) is the default, the header shows the dongle and its LTE/GPS state, a dedicated ESPNetLink page, SIM PIN entry, a hint when the GPS gets no fix, and a Quick Setup path with no home WiFi over the dongle's LTE
  • ESPNetLink: a console-only dongle is detected and reported, and the USB port power is cycled once when a dongle never enumerates
  • Logger clock history: every clock step is journaled on the SD card (clock.jsonl), queued records are re-based, and the History chart and the log file list show the clock context (#984)
  • ABRP: deliveries are paced (5 s minimum period, backoff on HTTP 429), a coverage view shows which ABRP fields your vehicle provides, and error messages carry ABRP's own text
  • Backup copies carry a checksum per part, verified at boot and before a restore; a copy on the SD card that predates a factory reset is held until you restore or refresh it
  • Connections: a socket server that no connection uses (e.g. slcan over TCP on port 3333) is flagged on the Connections card with a one-click CAN bus row
  • Reduced internal RAM use: long-lived state moved to PSRAM, about 10 KB freed

Bug fixes in v6

  • Fixed setting persist issue when upgrading from v4.51 to v6.00
  • Fixed USB GPS not reporting until "Dongle console" was enabled. GPS is now read by default with its own switch (#978)
  • Fixed "Download Config" backup not including AutoPID PIDs or vehicle profiles, replaced by the new Backup and Restore (#979)
  • Fixed writing over an existing file on the SD card failing
  • Fixed File Manager reporting the wrong capacity for SD cards over 4 GB (a 32 GB card showed as 976 MB) (#982)
  • Fixed console commands that fail with an internal error printing nothing (#980)
  • Added the station IP to the Home Assistant webhook payload for push-based installs (#977)
  • Fixed Home Assistant "changed only" push sending a second full payload after registration
  • Fixed SD logger timestamps shifting by one or two hours depending on whether the time server answered at boot (#984)
  • Fixed a crash when an ESPNetLink or USB Ethernet adapter disconnected during a USB power repair cycle
  • Fixed the Home Assistant webhook vpn_status reading past its table while the VPN was connected (#985)
  • Fixed an encrypted backup made with "Remove sensitive data" restoring blank secrets (#986)
  • Fixed the automatic backup copy losing its settings 20 s after a factory reset (#987)
  • Fixed the VPN settings migration routing the Allowed IPs network instead of the tunnel subnet (#988); after an Alfa-04 upgrade with the old fields set, check the Routes list once
  • Fixed a backup silently leaving out some files, and one large file failing the whole download (#989)
  • Fixed slcan over TCP connecting but receiving nothing when the socket server had no CAN bus connection row: the UI offers the row now
  • Fixed J2534 "no comm with the bus" with Automatic bit rate on a bus that only answers when asked: the tester's bit rate is adopted
  • Fixed the USB device mode (WiCAN as a network adapter to a PC) leaving a stale USB transfer across a restart

Known issues

  • A few published vehicle profiles carry rows that never read right on any firmware version (an i3 and Mini state of charge, the bZ4X cell list, a Volvo XC40 state of charge, the pack voltage ranges of the 800 V Hyundai, Kia, Genesis and Xpeng cars). They are being corrected on the profile side; re-import the profile once it is updated.
  • A TP 2.0 (VW) reflash over J2534 runs at one round trip per block acknowledgement (about 3 ms over USB, 28 ms over WiFi): flash over the USB cable.
  • The ESPNetLink cannot update itself yet; it updates through a WiCAN PRO. A dongle on firmware 1.20 or older must be flashed once over USB.
  • J2534: J1850 PWM and K-line are not supported; J1850 VPW is request and response only, no 4x speed.
  • A firmware upload started within ten minutes of an update may show that update as "not yet verified" on the Updates card until the ten-minute mark, although it was confirmed.

Bench: RELEASE TEST PASS, 14 steps (skipped: r12), 6 min, 2026-10-27 08:23:12 UTC.

Update instructions

  • Firmware 6.x: open the device page, System > Firmware update > Check for updates, or upload wican-fw_obd_pro_v6.0.0-beta.5.bin by hand.
  • Firmware 4.x: open the configuration page, System tab, Firmware Update section, upload wican-fw_obd_pro_v6.0.0-beta.5.bin and press Update. The first boot restarts once more; see Before you update.
  • Home Assistant: the MeatPi integration offers this version in the Firmware update entity.

In case of a boot loop

Perform a factory reset.

Home Assistant

Firmware 6.x requires the meatpi-multi-device branch of the ha-wican integration.

Contributors: ConorIA billybigpotatoes jtruland jeremysells CzarofAK eljeeb

Don't miss a new wican-fw release

NewReleases is sending notifications on new releases.