Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade

This commit is contained in:
mikecarper committed 2026-10-16 01:27:24 -07:00
commit 41405ee01b
54 files changed
+3962 -477

No files matched your search

+47 -3
View File
@@ -5652,7 +5652,47 @@ to charge above it or have USB power restored before it wakes.
### Ethernet (when Ethernet support is compiled in)
Ethernet support is available on RAK4631 boards with a RAK13800 (W5100S) Ethernet module. Use the `_ethernet` firmware variants (e.g. `RAK_4631_repeater_ethernet`) to enable this feature.
Ethernet support is available on RAK4631 boards with a RAK13800 (W5100S)
Ethernet module. Use the `_ethernet` firmware variants (for example,
`RAK_4631_repeater_ethernet`) for the normal Ethernet-only configuration.
`RAK_4631_companion_radio_full` is a distinct combined profile: it can compile
both physical RAK13800 Ethernet and an optional RAK15002 SD mOTA archive. They
share CS26, so they are mutually exclusive. In that Full profile Ethernet is
off at boot and is deliberately controlled only for the current boot:
```text
get eth
set eth on
set eth off
get sdcard [free]
ota cache [on|off]
```
Before `set eth on`, remove the SD card and finish/cancel any active OTA
capture, transfer, serving, or host-folder work. The command rejects an
inserted card or a busy archive instead of taking the shared bus. Turn
Ethernet off before accessing or inserting the card. An insertion while
Ethernet is live fails closed and still needs `set eth off`; it is not a
supported hot-swap flow. This combined hardware path is not yet qualified.
The SD-capable Ethernet-room receiver,
`RAK_4631_room_server_ethernet_lora_ota_no_external_sensors`, uses the same
shared CS26 safety rule but has its own cooperative Ethernet control. It starts
off on every reboot and is never persisted. From USB or an already established
Telnet session, use either spelling:
```text
eth on
# or: set eth on
eth.status
eth off
```
`eth on` rejects a fitted card, active/cache/staged OTA work, or a retained NOR
owner. `eth off` waits for a safe release and refuses while OTA work is busy.
Remove the card before enabling Ethernet and do not insert it while Ethernet
is active.
---
@@ -5665,8 +5705,12 @@ Ethernet support is available on RAK4631 boards with a RAK13800 (W5100S) Etherne
- `ETH: not connected` when Ethernet is not active
**Notes:**
- Available on repeater and room server firmware only. Companion radio ethernet firmware does not expose a CLI.
- The Ethernet interface obtains an IP address via DHCP automatically on boot.
- Available on repeater and room server firmware only. The normal
`_ethernet` Companion image does not expose a CLI; the combined RAK4631 Full
profile above instead exposes `get eth` / `set eth on|off`.
- The normal `_ethernet` variants obtain an IP address via DHCP automatically
on boot. The combined RAK4631 Full profile does not: Ethernet starts off
until `set eth on` succeeds.
- A TCP server listens on port 23 (default) for CLI connections.
- Connect with any TCP client (e.g. `nc`, PuTTY) to access the same CLI available over serial.
+32 -4
View File
@@ -30,8 +30,10 @@ requires a reboot to apply its exclusive transport selection; primary ESP-NOW
mesh operation is unaffected by the infrastructure-WiFi default.
The full Companion is deliberately not a LoRa OTA destination: it has no
firmware staging store, refuses `ota install`, and never advertises its own
firmware as an mOTA image.
installable firmware staging store, refuses `ota install`, and never
advertises its own firmware as an mOTA image. The RAK4631 Full variant can
optionally keep a source-only RAK15002 SD archive of peer `.mota` files; that
does not make the Companion an update destination.
Preference changes through the Companion protocol, WebConfig, or USB terminal
report a storage error if saving fails, and restore their previous values.
@@ -44,13 +46,39 @@ a busy radio rollback remains pending for recovery instead of reporting success.
| BLE Binary Companion | Yes | Yes |
| USB ASCII terminal | Yes | Yes |
| Dedicated USB plaintext logging | No - shares the one USB TTY | Yes |
| Host-backed LoRa mOTA source | WiFi TCP 5001 | Exclusive USB mode or encrypted BLE |
| Host-backed LoRa mOTA source | WiFi TCP 5001 | Exclusive USB mode or encrypted BLE; RAK4631 Full can additionally cache/serve peer images from optional RAK15002 SD |
| WiFi Companion/WebConfig | Yes | No - nRF52840 has no WiFi |
| Hardware serial Companion | On targets with assigned serial pins | On targets with assigned serial pins |
| Ethernet Companion | On targets with an Ethernet module | On RAK4631 with RAK13800 |
| Ethernet Companion | On targets with an Ethernet module | On RAK4631 with RAK13800; the RAK15002 combination is explicitly one-at-a-time |
| LoRa self-update | No | No |
| Optional self-update | WiFi on existing dual-app layouts; USB on single-app layouts | Bluetooth DFU with a compatible bootloader; USB always supported |
### RAK4631 Full Companion: optional RAK15002 archive and RAK13800 Ethernet
`RAK_4631_companion_radio_full` can cache and serve peer mOTA files from an
optional RAK15002 card. This remains a source-only archive: `ota install` and
bootloader installation are unavailable on the Companion, whether or not a
card is inserted. Check the archive with `ota cache [on|off]`; use
`get sdcard [free]` for card space.
The optional RAK13800 Ethernet module and RAK15002 share CS26. Ethernet is
therefore **off by default** in this combined Full image and is controlled only
for the current boot:
```text
get eth
set eth on
set eth off
```
Remove the SD card and end/cancel active OTA cache, transfer, serve, or host
folder activity before `set eth on`. The command refuses unsafe states. Turn
Ethernet off before inserting or accessing a card; an insertion during
Ethernet use fails closed and still requires `set eth off`. This is not a
supported hot-swap workflow. The combined RAK15002/Ethernet hardware path has
not yet been hardware-qualified; see [nRF52 RAK15002 storage](ota_nrf52_qspi.md#optional-rak15002-storage-in-canonical-rak4631-images)
for the receiver's separate signed-application path and loader prerequisite.
### Screenless nRF52 spoken button confirmations
Full Companion builds for T1000-E, RAK WisMesh Tag, MeshTracker X1,
+121
View File
@@ -415,3 +415,124 @@ Source-only means `ota install`, bootloader installation, and `ota dev` apply
are disabled even if the installed bootloader supports SD. No RAK15002 SD
bootloader handoff is claimed. Update this trial firmware over USB/BLE; normal
RAK4631 receiver targets and MeshTower SD self-update are unchanged.
## Optional RAK15002 storage in canonical RAK4631 images
This is a separate **STORE** path, not an expansion of the older
`RAK_4631_repeater_rak15002_sd_seeder_only` CACHE-only experiment above. It is
limited to the canonical RAK4631 Full/Reduced LoRa-OTA receiver roles
(repeater, room server, Ethernet room server, and sensor) and to
`RAK_4631_companion_radio_full`. Existing exact-NOR identities, non-OTA roles,
and the CACHE-only seeder retain their previous storage contracts.
The receiver and Full Companion use the same optional card hardware, but not
the same update authority:
| Image type | RAK15002 role | Local firmware install from that card |
| --- | --- | --- |
| Canonical RAK4631 receiver | Adaptive application staging, plus the retained mOTA archive/source | Only a trusted, signed **application** package, after bootloader capability checks |
| `RAK_4631_companion_radio_full` | Cache and serve peer `.mota` files | Never; it remains a source-only Companion |
| `RAK_4631_repeater_rak15002_sd_seeder_only` | Historical strict cache/source-only profile | Never |
The receiver chooses the card only during real OTA/cache work, not at boot or
while merely reporting status. With no card it retains its existing qualified
internal/NOR selection. With a card fitted, the firmware deliberately does
**not** probe NOR as a fallback, even if the card, filesystem, or installed
loader is unsuitable: both devices use CS26, so issuing a NOR probe could
clock the card. RAK15002 card-detect is active-low WisBlock IO6 (Arduino pin
10), not Arduino pin 6; the SD bus is SPIM2 at 4 MHz on 29/3/30 with CS26.
The new STORE path accepts **FAT16/FAT32 only**. It deliberately uses the
smaller FAT-only SdFat types to fit the RAK4631 flash budget and reduce its
RAM use; an exFAT card is not a supported STORE volume. This restriction does
not change the historical CACHE-only RAK15002 seeder or MeshTower SD profiles,
which retain their existing `SdFs`/`FsFile` (FAT/exFAT) behavior.
### Future receiver loader prerequisite and update flow
The matching `wiscore_rak4631_auto` **all-in-one OTAFIX bootloader** is only a
local candidate today: it is not released and has not been hardware-qualified.
Do not provision it as an SD-apply upgrade. Until a released, qualified loader
explicitly advertises the supplemental authenticated RAK15002-SD
*application* capability, the receiver fails SD application apply closed and
continues to use its qualified internal/NOR path when no card is selected.
Once such a loader is released, it must preserve the deployed internal/NOR
capabilities while adding the separate SD application handoff record. A stock,
older, or otherwise ordinary RAK4631 OTAFIX bootloader must refuse the SD
handoff. Its first migration will need to be performed locally over USB/BLE DFU
or SWD; it must not be bootstrapped from the SD card or with a LoRa bootloader
package.
The supplemental capability is application-only: an SD card never authorizes
a bootloader update. Existing qualified internal bootloader-update behavior is
separate and still applies only to its exact package and loader identity. The
Full Companion's archive/source feature never installs firmware locally, so it
does not need this SD-apply bootloader capability.
Only after that future matching loader is released, installed locally, and
qualified may a receiver use the normal explicit application flow:
```text
ota status
ota ls
ota pull <MID8> flash
# wait for `ota status` to show the same fetch as ready
ota install
```
`ota cache` manages the card-backed archive/source (`ota cache off` stops new
captures; retained files can still seed). `ota storage` and `ota self` report
the selected backend and loader state, but they intentionally do not force a
removable-media probe at startup. After the future loader is present, a
card-backed receiver reports `SD store` and `authenticated SD apply OK`; before
then, a missing supplemental capability, unsigned application, incompatible
media, or a busy store fails before reboot/approval.
### RAK13800 Ethernet ownership
The SD-capable Ethernet-room receiver
`RAK_4631_room_server_ethernet_lora_ota_no_external_sensors` is also an
explicit one-at-a-time profile. Its RAK13800 Ethernet starts off on **every**
reboot and is not a saved setting. With the card removed and no active/cache,
staged, serving, or NOR work, enable it from local USB or an existing Telnet
session with either command spelling:
```text
eth on
# or: set eth on
eth.status
eth off
```
`eth on`/`set eth on` refuses a fitted card, retained NOR owner, or busy OTA
state. `eth off`/`set eth off` is cooperative and likewise refuses to release
the bus while OTA work is active. Do not use these commands as a way to switch
media during a transfer.
#### Full Companion
The Full Companion is deliberately different: its optional RAK15002 holds
peer archives for caching and serving, never its own install image. It may
also compile RAK13800 Ethernet, but Ethernet and the card electrically share
CS26 and cannot operate together. In this combined profile physical Ethernet
starts **off** and `set eth on` is only a this-boot choice.
To use Ethernet, stop/cancel any active OTA capture or serve work, detach any
host folder source, **physically remove the SD card**, then run:
```text
get eth
set eth on
```
The command refuses unsafe ownership states rather than forcing the bus. To
return to the card, run `set eth off`, wait for it to report off, then insert
the card and use `get sdcard [free]` or `ota cache [on|off]`. If a card is
inserted while Ethernet is active, Ethernet fails closed; use `set eth off`
before accessing the card. This is not a supported hot-swap procedure.
The combined RAK15002 receiver/Companion/RAK13800 path has host-side checks,
but **has not yet received hardware qualification**. Do not treat these rules
as proof that a particular card, Ethernet module, loader migration, or live
card insertion has been field-tested.