The owner lifted the read-only rule for the drive mode alone. Settings has Eco, Normal, Sport, Snow and Custom; the lit button is what the car reports. A tap reads gear and speed fresh and writes only in P at 0 km/h (DriveModeWrite, unit-tested; unreadable is a refusal), through a CPM-only write behind EVHardware's standstill gate, then reads the mode back and says what the car reports. The wide layout's charging price joined the battery card so the page still fits. Not tried on the car. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LhzAVaUyqcw5PkGjz4mWW6
60 lines
3.2 KiB
Markdown
60 lines
3.2 KiB
Markdown
# Licence
|
||
|
||
Everything in this repository is released under the **MIT Licence** — see
|
||
[`LICENSE`](LICENSE) — **except the `EVHardware/` library**, which has its own licence (below).
|
||
|
||
## Where it comes from
|
||
|
||
Nils' MG4 is a fork of a chain of forks, all MIT:
|
||
|
||
- [Leon Kernan's `ABRP_Uploader`](https://github.com/lkernan/ABRP_Uploader), the original. It
|
||
carries the MIT Licence since 2026-07-29
|
||
([its LICENSE](https://github.com/lkernan/ABRP_Uploader/blob/master/LICENSE), commit
|
||
`75d8f2bc`). Upstream's note that it had no licence predates that.
|
||
- malys' EVABRPUploader, then
|
||
[fatihdonmezdev/FatihsMG4](https://github.com/fatihdonmezdev/FatihsMG4), both under MIT.
|
||
- This fork, under MIT as well.
|
||
|
||
MIT requires the copyright notice to travel with any copy or substantial portion of the
|
||
software. `LICENSE` names all of them; keep every line.
|
||
|
||
## The EVHardware library
|
||
|
||
`EVHardware/` (the shared vehicle layer from EVSuite) is source-available under the
|
||
**PolyForm Noncommercial License 1.0.0** — see [`EVHardware/LICENSE`](EVHardware/LICENSE) and
|
||
[`EVHardware/LICENSE.md`](EVHardware/LICENSE.md). Commercial use is not permitted, and its
|
||
`Required Notice: Copyright (c) 2026 EVHardware contributors` must go with any copy.
|
||
|
||
It is a copy, not a submodule: [malys/EVHardware](https://github.com/malys/EVHardware) at
|
||
`e4e1158` (2026-10-18, after 1.18.0), merged on 2026-10-19 with the changes this fork carries on
|
||
top. Those are Fatih's reads the car needs and upstream does not have — the vendor tyre-pressure
|
||
ids `0x21401553`–`56`, the vendor mileage `0x21401566` for the odometer, the charging status
|
||
from `0x2140F409`, SoC, range, power, pack voltage and current on SWI69 as on SWI68, and SWI69
|
||
speed already in km/h — plus translated comments and, from this fork, the gear's raw code
|
||
(`EVHardware.getGearRaw`, `EnergySnapshot.gearRaw`) and a drive mode write without the binder
|
||
fallback (`writeDriveModeProperty`). To take upstream again, merge three ways with
|
||
`e4e1158` as the base.
|
||
|
||
The car app links EVHardware into its APK, so the **built app** may only be used and passed on
|
||
non-commercially, whatever the MIT parts would allow on their own. The server, the Kubernetes
|
||
manifests and the docs do not contain EVHardware and are plain MIT.
|
||
|
||
EVHardware's own notes say parts of it come from EVProfile, "itself a fork whose upstream
|
||
licence situation is unresolved". Checked on 2026-10-18, that is settled for the code in
|
||
question:
|
||
|
||
- [malys/EVProfile](https://github.com/malys/EVProfile) is MIT. It is a fork of
|
||
[SliDeeN/MG4Control](https://github.com/SliDeeN/MG4Control), and its last merge from
|
||
MG4Control is a commit of 2026-08-02.
|
||
- MG4Control is MIT up to and including 2.6.5 (released 2026-08-05; its licence file dates
|
||
from 2026-06-24) and GPL v3 or later from 2.6.6 (2026-09-02). Its `LICENCE.md` states that
|
||
the earlier versions stay MIT for good.
|
||
|
||
So what EVProfile took from MG4Control dates from MG4Control's MIT period. This covers the
|
||
lineage EVHardware names; it is not an audit of every line in EVHardware.
|
||
|
||
## No warranty
|
||
|
||
Both licences disclaim all warranty and liability, and this software runs on a **vehicle** —
|
||
see [`DISCLAIMER.md`](DISCLAIMER.md) for what that means concretely.
|