Draft
Add pa_fan_disabled toggle to LoRa Config screen#1867
Conversation
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f1ceafa0-25eb-40cf-995c-e216cee8f02a Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add pa_fan_disabled toggle to LoRa Config screen
Add pa_fan_disabled toggle to LoRa Config screen
May 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pa_fan_disabledwas missing from the Apple LoRa Config screen while Android exposes it for hardware with a PA fan. This adds the toggle, gated onhasPaFandevice capability — consistent with Android's guard.What changed?
Model & persistence
LoRaConfigEntity: addpaFanDisabled: Bool = falseUpdateSwiftData.upsertLoRaConfigPacket: persistpaFanDisabledin both create and update pathsDevice hardware capability
DeviceHardwareEntity: addhasPaFan: Bool = falseMeshtasticAPIDeviceHardwarestruct: addhasPaFan: Bool?; populatedeviceEntity.hasPaFanduring API syncDeviceHardware.json(bundled fallback): add"hasPaFan": truefor the four known PA-fan boards — T-Beam, T-Beam Supreme, Station G2, T-Beam 1W — so the toggle appears immediately without waiting for the live API to expose the fieldUI (
LoRaConfig.swift)@QueryforDeviceHardwareEntitykeyed onnode.user.hwModelId(same pattern asNodeInfoItem)hasPaFancomputed from the query result@State var paFanDisabledwith full save / load /onChangewiringhasPaFan == trueDocs
docs/user/settings.md: adds PA Fan Disabled row to the LoRa settings tableWhy did it change?
Cross-platform alignment —
pa_fan_disabledis a real LoRa proto field (Config.LoRaConfig.paFanDisabled) that Android already surfaces. Without this toggle, Apple users on T-Beam / Station G2 hardware cannot disable the PA fan from the app.How is this tested?
Manually verified that:
hasPaFan(query returnsfalse)hasPaFan = truein the preview)setLoRaValuescorrectly round-trips the persisted value on re-openScreenshots/Videos (when applicable)
Toggle only appears on PA-fan hardware; no visible change on unsupported devices.
Checklist
docs/user/ordocs/developer/, and updated accordingly (see copilot-instructions.md for the view → doc page mapping). If no doc update is needed, add theskip-docs-checklabel.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
api.meshtastic.org/home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js(dns block)If you need me to access, download, or install something from one of these locations, you can either: