You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: BUILDING.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,14 +32,15 @@ When you already have the toolchain locally, you can mirror the Docker steps:
32
32
```
33
33
The above command produces `loaner-firmware.bin`. If Python with `crcmod` is installed you will also get `loaner-firmware.packed.bin`.
34
34
If you omit `TARGET=...` the files are named `firmware.bin` / `firmware.packed.bin`.
35
+
The build also exports `VERSION_SUFFIX` into the binaries. Set it explicitly (for example `make TARGET=loaner-firmware VERSION_SUFFIX=LNR24A5`) or create an `LNR*` git tag that the Makefile can discover. The build errors out if neither is present.
35
36
36
37
## Creating a Packed Binary Manually
37
38
If the packed image was not produced automatically (for example on a minimal native setup), run:
- The second argument is the version tag embedded in both the welcome screen and the packed metadata.
43
+
- The second argument is the version tag embedded in both the welcome screen and the packed metadata (mirror the `VERSION_SUFFIX` you build with).
43
44
Keep it under 10 ASCII characters (the script rejects longer strings).
44
45
- The packed image is required for PC loader flashing because it carries the metadata Quansheng's tool expects.
45
46
@@ -60,13 +61,14 @@ Feature flags live near the top of `Makefile` as `ENABLE_*` macros. Adjust them
60
61
61
62
## Firmware Metadata and Releases
62
63
- A successful build leaves you with `firmware.bin` (raw) and, when Python and `crcmod` are available, `firmware.packed.bin`. The packed image is what Quansheng's loader validates.
63
-
- Use `fw-pack.py` to stamp a release tag into the packed image. The second argument becomes the welcome banner and metadata field:
64
+
- Use `fw-pack.py` to stamp a release tag into the packed image. `make` already invokes the script with `VERSION_SUFFIX`, so the packed file inherits the same banner. To repack manually, pass the suffix yourself:
- When building outside of Docker, set `VERSION_SUFFIX` in your environment once (for example `export VERSION_SUFFIX=LNR24A5`) so every command picks up the same value.
67
69
- Change the `TARGET` on the `make` command line to tweak the output filenames without editing source, for example `make TARGET=loaner-firmware`.
68
70
- Before publishing a release, spot-check the welcome screen on hardware to make sure the tag matches what you intend to share with end users.
69
-
- Recommended version format: mirror other UV-K5 firmware projects (Quansheng's stock firmware ships as `v2.1.27`, Open Edition uses `OEFW-2023.09`). Tag milestones as `vYY.MM[.PATCH]` and feed a matching, <=10 character suffix to `fw-pack.py` (for example `LNR24.03`). CHIRP reads the full `*OEFW-LNR24.03` banner and treats it as a known build.
71
+
- Recommended version format: mirror other UV-K5 firmware projects (Quansheng's stock firmware ships as `v2.1.27`, Open Edition uses `OEFW-2023.09`). Tag milestones as `vYY.MM[.PATCH]` and feed a matching, <=10 character `VERSION_SUFFIX` (for example `LNR24.03`). CHIRP reads the full `*OEFW-LNR24.03` banner and treats it as a known build.
70
72
71
73
## Branching and Release Flow
72
74
1. Start work on a fresh branch instead of `main`:
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,6 +36,8 @@ This build assumes the channel plan lives on your ICS-205. To move that plan int
36
36
5. Upload the plan with `Radio -> Upload To Radio`. After the radio reboots, rotate the channel knob and verify that the display shows the ICS-205 names.
37
37
6. Repeat for each handset; the standard workflow keeps the handset in channel mode, so operators only see the memories you defined.
38
38
39
+
Use a CHIRP build that includes the UV-K5 loaner whitelist from PR #1414 (or any newer release); older builds will block uploads because they do not recognise the `OEFW-LNR` banner yet.
40
+
39
41
Tip: Keep a CHIRP image with the baseline loaner plan in source control so teams can diff changes before distributing updates.
0 commit comments