diff --git a/docs/assets/images/onqc-scopes/companion-01-connected.webp b/docs/assets/images/onqc-scopes/companion-01-connected.webp new file mode 100644 index 0000000..536c2fc Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-01-connected.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-02-settings.webp b/docs/assets/images/onqc-scopes/companion-02-settings.webp new file mode 100644 index 0000000..d270a83 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-02-settings.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-03-select-region.webp b/docs/assets/images/onqc-scopes/companion-03-select-region.webp new file mode 100644 index 0000000..29392b2 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-03-select-region.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-04-add-region.webp b/docs/assets/images/onqc-scopes/companion-04-add-region.webp new file mode 100644 index 0000000..dadf01a Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-04-add-region.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-05-pick-onqc.webp b/docs/assets/images/onqc-scopes/companion-05-pick-onqc.webp new file mode 100644 index 0000000..284fc2d Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-05-pick-onqc.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-06-saved.webp b/docs/assets/images/onqc-scopes/companion-06-saved.webp new file mode 100644 index 0000000..503e691 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-06-saved.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-07-channels.webp b/docs/assets/images/onqc-scopes/companion-07-channels.webp new file mode 100644 index 0000000..60a17ac Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-07-channels.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-09-channel-menu.webp b/docs/assets/images/onqc-scopes/companion-09-channel-menu.webp new file mode 100644 index 0000000..897b7f0 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-09-channel-menu.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-10-public-pick-onqc.webp b/docs/assets/images/onqc-scopes/companion-10-public-pick-onqc.webp new file mode 100644 index 0000000..cbb09a3 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-10-public-pick-onqc.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-11-public-scoped.webp b/docs/assets/images/onqc-scopes/companion-11-public-scoped.webp new file mode 100644 index 0000000..bb74fe3 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-11-public-scoped.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-13-testing-menu.webp b/docs/assets/images/onqc-scopes/companion-13-testing-menu.webp new file mode 100644 index 0000000..cba1714 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-13-testing-menu.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-15-add-yow.webp b/docs/assets/images/onqc-scopes/companion-15-add-yow.webp new file mode 100644 index 0000000..9d538c7 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-15-add-yow.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-16-yow-added.webp b/docs/assets/images/onqc-scopes/companion-16-yow-added.webp new file mode 100644 index 0000000..718c6d7 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-16-yow-added.webp differ diff --git a/docs/assets/images/onqc-scopes/companion-17-testing-scoped.webp b/docs/assets/images/onqc-scopes/companion-17-testing-scoped.webp new file mode 100644 index 0000000..744a031 Binary files /dev/null and b/docs/assets/images/onqc-scopes/companion-17-testing-scoped.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-01-contacts.webp b/docs/assets/images/onqc-scopes/repeater-01-contacts.webp new file mode 100644 index 0000000..06386f5 Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-01-contacts.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-02-login.webp b/docs/assets/images/onqc-scopes/repeater-02-login.webp new file mode 100644 index 0000000..ce1ed3d Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-02-login.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-03-admin.webp b/docs/assets/images/onqc-scopes/repeater-03-admin.webp new file mode 100644 index 0000000..3745a46 Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-03-admin.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-04-cli-standard.webp b/docs/assets/images/onqc-scopes/repeater-04-cli-standard.webp new file mode 100644 index 0000000..c0cebfc Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-04-cli-standard.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-05-ver.webp b/docs/assets/images/onqc-scopes/repeater-05-ver.webp new file mode 100644 index 0000000..f1ab304 Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-05-ver.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-06-send-again.webp b/docs/assets/images/onqc-scopes/repeater-06-send-again.webp new file mode 100644 index 0000000..0513b70 Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-06-send-again.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-07-region-put-115.webp b/docs/assets/images/onqc-scopes/repeater-07-region-put-115.webp new file mode 100644 index 0000000..022f3b7 Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-07-region-put-115.webp differ diff --git a/docs/assets/images/onqc-scopes/repeater-08-region-result.webp b/docs/assets/images/onqc-scopes/repeater-08-region-result.webp new file mode 100644 index 0000000..4a6b4a4 Binary files /dev/null and b/docs/assets/images/onqc-scopes/repeater-08-region-result.webp differ diff --git a/docs/assets/styles/scopes-proposal.css b/docs/assets/styles/scopes-proposal.css index 6d26bb9..7681cc4 100644 --- a/docs/assets/styles/scopes-proposal.css +++ b/docs/assets/styles/scopes-proposal.css @@ -755,3 +755,64 @@ scroll-padding-inline-start: 0; } } + +/* ---------- Screenshot galleries ---------- */ + +.md-typeset .scp-shots { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 9rem), 1fr)); + gap: var(--mc-space-4); + margin: var(--mc-space-4) 0 var(--mc-space-6); +} + +.md-typeset .scp-shots .scp-shot { + display: flex; + width: auto; + max-width: none; + flex-direction: column; + align-items: stretch; + gap: var(--mc-space-2); + margin: 0; +} + +.md-typeset .scp-shot img { + display: block; + width: 100%; + height: auto; + border: 1px solid var(--mc-color-border); + border-radius: var(--mc-radius-md); + box-shadow: var(--mc-shadow-1); +} + +.md-typeset .scp-shot figcaption { + max-width: none; + margin: 0; + color: var(--mc-color-text); + font-size: 0.8rem; + font-style: normal; + line-height: 1.45; + text-align: left; +} + +.scp-shot__num { + display: inline-grid; + width: 1.3rem; + height: 1.3rem; + margin-right: 0.2rem; + place-items: center; + border-radius: 999px; + background: var(--mc-color-action); + color: var(--mc-color-surface); + font-size: 0.72rem; + font-weight: 800; +} + +.md-typeset .scp-shots:has(> .scp-shot:only-child) { + max-width: 17rem; + grid-template-columns: minmax(0, 1fr); +} + +.md-typeset .scp-shot a { + display: block; + border-radius: var(--mc-radius-md); +} diff --git a/docs/proposals/onqc-scopes.fr.md b/docs/proposals/onqc-scopes.fr.md index 5848b2a..7aa0b2e 100644 --- a/docs/proposals/onqc-scopes.fr.md +++ b/docs/proposals/onqc-scopes.fr.md @@ -65,8 +65,9 @@ premiers. - **Les répéteurs** portent leur ville, leur province, `onqc` et `can`. -- **Les appareils compagnons** utilisent `onqc` par défaut, pour que les messages privés - joignent tout le monde. +- **Les appareils compagnons** utilisent `onqc` par défaut, pour que les + messages privés joignent tout le monde, une fois les répéteurs autour d’eux + configurés. - **`Public`** utilise `onqc`, pour que tout le monde en Ontario et au Québec puisse se parler. - **Les canaux de test et les robots** utilisent votre ville, pour rester @@ -81,8 +82,9 @@ Une portée est un nom court joint à un message, par exemple `yow`. Les répéteurs s’en servent pour décider s’ils relaient le message.
-Une portée n’est **pas** du chiffrement et **pas** une clôture GPS. Tout le -monde peut lire le nom, et il n’a rien à voir avec l’endroit où vous êtes. C’est +Une portée n’est **pas** du chiffrement et **pas** une clôture GPS. Quiconque +connaît le nom peut l’utiliser, et il n’a rien à voir avec l’endroit où vous +êtes. C’est seulement une étiquette qui dit : « les répéteurs qui portent ce nom, relayez ce message ».
@@ -127,7 +129,7 @@ avec cinq messages différents.
Le MP porte onqc parce que onqc est la portée par défaut de l’appareil compagnon dans cette proposition. Voir pourquoi plus bas. Le répéteur entend quand même tous les messages. La portée décide seulement s’il les relaie. Votre appareil compagnon reçoit aussi tout ce qui l’atteint.
-Trois détails piègent souvent : +Quatre détails piègent souvent : - **L’orthographe doit être exacte.** `yow`, `YOW` et `ott` sont trois noms différents. Un appareil compagnon réglé sur `yow` est ignoré par un répéteur qui ne @@ -137,6 +139,10 @@ Trois détails piègent souvent : plus. - **Il n’y a pas d’héritage.** Porter `on` ne veut pas dire porter `yow`. Chaque nom doit être sur la liste à part entière. +- **Un répéteur sans régions rejette tous les messages avec portée.** Par + défaut, un répéteur ne porte que `*` : il relaie les messages sans portée et + rien d’autre. Les messages avec portée fonctionnent seulement une fois les + répéteurs du trajet configurés. ## Les quatre niveaux @@ -195,11 +201,9 @@ Québec ». `yow.meshmapper.net`. - MeshCore utilise déjà les codes d’aéroport ailleurs, par exemple pour le [code d’emplacement que chaque observateur transmet](../analyzer/iata-codes.md). - Inventer d’autres noms seulement pour les régions donnerait deux façons de - nommer le même secteur, et plus de confusion avec le temps. Les codes - d’aéroport ne sont pas parfaits pour des secteurs de réseau, mais MeshCore - les utilise déjà pour bien des choses et ça ne changera pas; les régions - devraient donc suivre. + Ils ne sont pas parfaits pour des secteurs de réseau, mais ça ne changera + pas, et d’autres noms seulement pour les régions ajouteraient de la + confusion avec le temps. - Il n’y a ni accent ni majuscule à se tromper. `montréal`, `Montreal` et `montreal` seraient trois portées différentes. - Ils sont faciles à diviser plus tard. Si Renfrew veut un jour son propre @@ -262,68 +266,176 @@ complète. ## Configuration du répéteur -### Étape 1 : Effacer les anciennes régions +Entrez ces commandes dans la ligne de commande du répéteur **une à la fois** : +dans l’application MeshCore, ouvrez le répéteur, connectez-vous comme +administrateur et utilisez la zone de commande de **Repeater Admin**, ou +utilisez la console USB. Chaque commande a son propre bouton de copie. +Attendez `OK` avant d’envoyer la suivante. + +
+ +
+[![Liste des contacts filtrée pour trouver un répéteur](../assets/images/onqc-scopes/repeater-01-contacts.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-01-contacts.webp) +
1 Dans Contacts, trouvez votre répéteur (cherchez par nom) et touchez-le.
+
+ +
+[![Écran Repeater Login avec un champ de mot de passe](../assets/images/onqc-scopes/repeater-02-login.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-02-login.webp) +
2 Entrez le mot de passe administrateur et touchez Log In.
+
+ +
+[![Écran Repeater Admin avec Command Line en bas](../assets/images/onqc-scopes/repeater-03-admin.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-03-admin.webp) +
3 Vérifiez You are logged in as an Admin, puis touchez Command Line en bas.
+
+ +
+ +
+**Pas de `OK`? Renvoyez la même commande.** Par le réseau maillé, une réponse +peut prendre quelques secondes ou se perdre. Dans l’application MeshCore, +touchez longuement la commande dans l’historique et choisissez **Send Again**. +Lancer une commande deux fois ne cause pas de problème. Si un `region remove` répété répond `Err - not found`, +le premier a déjà fonctionné. +
+ +
+ +
+[![Ligne de commande où une commande a été envoyée deux fois avant d’obtenir OK](../assets/images/onqc-scopes/repeater-04-cli-standard.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-04-cli-standard.webp) +
1 Assurez-vous que chaque commande reçoit un OK. Ici, le premier set flood.advert.interval 47 n’en a pas reçu, donc il a été renvoyé.
+
+ +
+[![Menu de l’historique des commandes avec Copy et Send Again](../assets/images/onqc-scopes/repeater-06-send-again.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-06-send-again.webp) +
2 Pas de OK? Touchez longuement la commande et choisissez Send Again.
+
+ +
+ +### Étape 1 : Vérifier le micrologiciel + +```text +ver +``` + +Cette commande affiche la version du micrologiciel. Elle détermine les +commandes de région à utiliser à l’étape 4 : + +- **1.16 ou plus récent :** utilisez `region def`. +- **1.15 ou plus ancien :** `region def` répond `Err - ??`. Utilisez plutôt les + commandes `region put` sous [Micrologiciel plus ancien](#micrologiciel-plus-ancien), + ou mettez d’abord le micrologiciel à jour. + +
+ +
+[![Ligne de commande où region def répond Err - ?? et ver affiche v1.15.0](../assets/images/onqc-scopes/repeater-05-ver.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-05-ver.webp) +
1 Sur ce répéteur, region def répond Err - ??, et ver affiche v1.15.0; il utilise donc les étapes pour micrologiciel plus ancien.
+
+ +
+ +### Étape 2 : Effacer les anciennes régions Beaucoup de répéteurs ont déjà des régions de l’ancienne configuration, comme -`can`, `on-alg` ou `ott`. `region def` ne supprime jamais rien, alors effacez-les -d’abord. +`can`, `on-alg` ou `ott`. Les nouvelles commandes ne suppriment jamais rien, +alors effacez-les d’abord. -1. Lancez `region` pour voir ce qui s’y trouve. -2. Retirez chaque nom sauf `*` avec `region remove `. Commencez par la - ligne la plus en retrait et remontez. Si vous voyez `Err - not empty`, un - nom est encore en retrait sous celui-ci; retirez-le d’abord. -3. Lancez `region save`. +1. Affichez ce qui s’y trouve : + + ```text + region + ``` -Par exemple, un répéteur configuré avec l’ancien chemin d’Ottawa : +2. Retirez chaque nom sauf `*`, un à la fois, avec `region remove `. + Commencez par la ligne la plus en retrait et remontez. Si vous voyez + `Err - not empty`, un autre nom est encore en retrait sous celui-ci; + retirez-le d’abord. +3. Enregistrez : + + ```text + region save + ``` + +Par exemple, un répéteur configuré avec l’ancien chemin d’Ottawa lance ces +commandes, dans l’ordre : ```text region remove ott +``` + +```text region remove on-alg +``` + +```text region remove on +``` + +```text region remove can +``` + +```text region save ``` -Retirer `on` et `can` ne pose pas de problème. Les réglages de région de -l’étape 3 les remettent. Lancez `region` de nouveau : vous ne devriez voir que `* F`. +Retirer `on` et `can` ne pose pas de problème. L’étape 4 les remet. Lancez +`region` de nouveau : vous ne devriez voir que `*^ F`. -### Étape 2 : Réglages standard de MeshCore Canada +### Étape 3 : Réglages standard de MeshCore Canada ```text set path.hash.mode 2 +``` + +```text set advert.interval 240 +``` + +```text set flood.advert.interval 47 +``` + +```text set flood.max 16 ```
-
path.hash.mode 2
Utilise des identifiants de répéteur de 3 octets dans les chemins, pour que moins de répéteurs partagent un identifiant.
+
path.hash.mode 2
Utilise des identifiants de répéteur de 3 octets dans les chemins, pour que moins de répéteurs partagent un identifiant. Exige le micrologiciel 1.14 ou plus récent.
advert.interval 240
Annonce ce répéteur à ses voisins directs toutes les 4 heures.
flood.advert.interval 47
Annonce ce répéteur dans tout le réseau toutes les 47 heures.
flood.max 16
Aucune diffusion ne fait plus de 16 sauts, avec ou sans portée.
-### Étape 3 : Réglages de région +Ces réglages s’enregistrent d’eux-mêmes. Pas besoin de `region save`. + +### Étape 4 : Réglages de région Votre code de ville est votre **zone MeshMapper**. Ouvrez [MeshMapper](https://meshmapper.net/), trouvez la zone où se trouve votre répéteur et utilisez son code. C’est une carte que tout le monde utilise déjà, donc rien de nouveau à chercher. -Le modèle est toujours le même : - -```text -region def |* |* onqc|* can -``` - -Exemples : +Avec le **micrologiciel 1.16 ou plus récent**, choisissez votre secteur et +lancez les quatre commandes dans l’ordre : === "Ottawa et environs" ```text region def yow|* on|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yow + ``` + + ```text region save ``` @@ -331,8 +443,17 @@ Exemples : ```text region def yow|* qc|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yow + ``` + + ```text region save ``` @@ -340,8 +461,17 @@ Exemples : ```text region def yul|* qc|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yul + ``` + + ```text region save ``` @@ -349,8 +479,17 @@ Exemples : ```text region def yqb|* qc|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yqb + ``` + + ```text region save ``` @@ -361,32 +500,155 @@ aujourd’hui; il n’y a donc rien de nouveau à apprendre.
region def …
Porter votre ville, votre province, onqc et can.
region allowf *
Relayer aussi les messages sans portée. C’est déjà le réglage par défaut. On le règle quand même pour que vous le voyiez.
-
region default yow
Les annonces de ce répéteur utilisent la portée de votre ville, pour rester locales.
-
region save
Conserve les réglages de région après un redémarrage. Les commandes set s’enregistrent d’elles-mêmes.
+
region default <ville>
Les annonces de ce répéteur utilisent la portée de votre ville, pour rester locales.
+
region save
Conserve les réglages de région après un redémarrage.
-Pour vérifier, lancez `region`. Pour Ottawa, vous devriez voir : +#### Micrologiciel plus ancien + +Si `region def` répond `Err - ??`, votre micrologiciel est plus ancien que 1.16. +Ajoutez plutôt chaque code avec `region put`. Ces exemples sont pour Ottawa. +Pour un autre secteur, remplacez `yow` par votre code de ville, et `on` par +`qc` au Québec. + +=== "Micrologiciel 1.15" + + ```text + region put yow + ``` + + ```text + region put on + ``` + + ```text + region put onqc + ``` + + ```text + region put can + ``` + + ```text + region allowf * + ``` + + ```text + region default yow + ``` + + ```text + region save + ``` + +=== "Micrologiciel 1.10 à 1.14" + + ```text + region put yow + ``` + + ```text + region allowf yow + ``` + + ```text + region put on + ``` + + ```text + region allowf on + ``` + + ```text + region put onqc + ``` + + ```text + region allowf onqc + ``` + + ```text + region put can + ``` + + ```text + region allowf can + ``` + + ```text + region allowf * + ``` + + ```text + region save + ``` + +Avec **1.15**, chaque `region put` répond `OK - (flood allowed)`, et +`region default yow` répond `default scope is now yow`. Une nouvelle région +relaie tout de suite. Avec **1.10 à 1.14**, +une nouvelle région commence avec la diffusion **désactivée**, donc chacune a +aussi besoin de `region allowf`. Ces versions n’ont pas non plus de +`region default`, donc les annonces du répéteur restent sans portée. Une mise +à jour du micrologiciel vaut la peine. + +
+ +
+[![Ligne de commande avec les commandes region put sur le micrologiciel 1.15](../assets/images/onqc-scopes/repeater-07-region-put-115.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-07-region-put-115.webp) +
1 Micrologiciel 1.15 : chaque region put répond OK - (flood allowed). region put on a dû être renvoyé.
+
+ +
+ +### Étape 5 : Vérifier le résultat ```text -* F +region +``` + +Pour Ottawa, vous devriez voir : + +```text +*^ F yow F on F onqc F can F ``` -`F` veut dire « diffusion permise » : le répéteur relaie ce nom. +`F` veut dire « diffusion permise » : le répéteur relaie ce nom. Le `^` à côté +de `*` indique la région d’attache du répéteur; quand aucune n’est réglée, il +se place sur `*`. Vous pouvez l’ignorer. + +
+ +
+[![Ligne de commande affichant la liste finale des régions](../assets/images/onqc-scopes/repeater-08-region-result.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-08-region-result.webp) +
1 La liste terminée sur un répéteur d’Ottawa.
+
+ +
### Répéteurs passerelles Un répéteur qui relie volontairement deux zones de ville porte **les deux** codes de ville. Par exemple, un répéteur à **Rigaud** se trouve dans la zone -`yow`, du côté québécois, et la relie à la zone de Montréal : +`yow`, du côté québécois, et la relie à la zone de Montréal. Avec le +micrologiciel 1.16 ou plus récent, lancez ces commandes dans l’ordre : ```text region def yow|* yul|* qc|* onqc|* can +``` + +```text region denyf * +``` + +```text region default yow +``` + +```text region save ``` @@ -417,26 +679,128 @@ rejeter `*` lui aussi. Sinon, les messages sans portée la contournent. ## Configuration de l’appareil compagnon +
+**Attendez que les répéteurs autour de vous soient configurés.** Un répéteur +sans régions rejette tous les messages avec portée. Si vous réglez votre +portée par défaut sur `onqc` avant que les répéteurs de vos trajets la +portent, vos messages de canal et vos premiers MP n’iront pas loin. D’ici là, +laissez **Default Region Scope** vide. Vous recevrez quand même tout. +
+ ### Étape 1 : Régler votre portée par défaut Dans l’application MeshCore, ouvrez **Settings**. Sous **Network Settings**, touchez **Default Region Scope**, ajoutez `onqc` et sélectionnez-le. +
+ +
+[![Liste des contacts de l’application MeshCore avec la roue des réglages en haut à droite](../assets/images/onqc-scopes/companion-01-connected.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-01-connected.webp) +
1 Connectez votre appareil compagnon à l’application MeshCore et touchez la roue des réglages en haut à droite.
+
+ +
+[![Écran Settings avec Network Settings et Default Region Scope](../assets/images/onqc-scopes/companion-02-settings.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-02-settings.webp) +
2 Descendez jusqu’à Network Settings et touchez Default Region Scope.
+
+ +
+[![Écran Select Region sans région et bouton Add Region](../assets/images/onqc-scopes/companion-03-select-region.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-03-select-region.webp) +
3 Si onqc n’est pas dans la liste, touchez Add Region, ou le + en haut à droite.
+
+ +
+[![Écran Add Region avec onqc tapé](../assets/images/onqc-scopes/companion-04-add-region.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-04-add-region.webp) +
4 Tapez onqc, tout en minuscules, et touchez le crochet en haut à droite.
+
+ +
+[![Écran Select Region avec onqc dans la liste](../assets/images/onqc-scopes/companion-05-pick-onqc.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-05-pick-onqc.webp) +
5 Touchez onqc pour le sélectionner.
+
+ +
+[![Settings avec onqc comme portée par défaut et le message Settings Saved](../assets/images/onqc-scopes/companion-06-saved.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-06-saved.webp) +
6 Default Region Scope affiche maintenant onqc. Touchez le crochet en haut à droite. Il tourne pendant l’enregistrement, puis Settings Saved! apparaît.
+
+ +
+ ### Étape 2 : Régler la portée de chaque canal -Ouvrez le canal, utilisez le menu du canal, touchez **Set Region Scope** et -choisissez la portée selon ce tableau : +Ouvrez le canal, touchez **⋮** en haut à droite, choisissez +**Set Region Scope** et choisissez la portée selon ce tableau : | Canal | Portée | Pourquoi | | --- | --- | --- | | `Public` | `onqc` | Tout le monde en Ontario et au Québec peut se parler | -| Canaux de test, comme `#test` | Votre ville, par exemple `yow` | Les tests restent locaux | -| Canaux de robots | Votre ville, par exemple `yow` | Les réponses des robots restent locales | +| Canaux de test, comme `#testing` | Votre ville, par exemple `yow` | Les tests restent locaux | +| Canaux de robots, comme `#bots` | Votre ville, par exemple `yow` | Les réponses des robots restent locales | | Vos propres canaux | Votre ville, `on`/`qc` ou `onqc` | Choisissez jusqu’où ils doivent aller | Si vous faites fonctionner un robot, réglez aussi sa propre **Default Region Scope** sur votre ville. +**Exemple : `Public` sur `onqc`** + +
+ +
+[![Liste des canaux avec Public en haut](../assets/images/onqc-scopes/companion-07-channels.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-07-channels.webp) +
1 Touchez Channels dans la barre du bas et ouvrez Public.
+
+ +
+[![Menu du canal Public avec Set Region Scope](../assets/images/onqc-scopes/companion-09-channel-menu.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-09-channel-menu.webp) +
2 Touchez ⋮ en haut à droite et choisissez Set Region Scope.
+
+ +
+[![Liste Select Region avec onqc](../assets/images/onqc-scopes/companion-10-public-pick-onqc.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-10-public-pick-onqc.webp) +
3 Touchez onqc.
+
+ +
+[![En-tête du canal Public affichant Region: onqc](../assets/images/onqc-scopes/companion-11-public-scoped.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-11-public-scoped.webp) +
4 L’en-tête affiche maintenant Region: onqc, et une bannière indique que seuls les répéteurs qui permettent cette région relaieront. La limite passe à 127 caractères.
+
+ +
+ +
+**Les messages avec portée sont un peu plus courts.** Dès qu’un canal a une +portée, l’application permet moins de caractères par message. Lors de nos +essais, la limite sur `Public` est passée de 137 à 127 caractères après l’avoir +réglé sur `onqc`. L’application fixe la limite exacte, qui peut varier selon le +nom de votre nœud et la version de l’application. +
+ +**Exemple : `#testing` sur votre ville** + +
+ +
+[![Menu du canal #testing avec Set Region Scope](../assets/images/onqc-scopes/companion-13-testing-menu.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-13-testing-menu.webp) +
1 Ouvrez le canal, touchez ⋮ et choisissez Set Region Scope.
+
+ +
+[![Écran Add Region avec yow tapé](../assets/images/onqc-scopes/companion-15-add-yow.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-15-add-yow.webp) +
2 Si votre code de ville n’est pas dans la liste, touchez +, tapez-le (par exemple yow) et touchez le crochet.
+
+ +
+[![Liste Select Region avec onqc et yow et le message Region has been added](../assets/images/onqc-scopes/companion-16-yow-added.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-16-yow-added.webp) +
3 Region has been added! Touchez votre code de ville pour le sélectionner.
+
+ +
+[![En-tête du canal #testing affichant Region: yow](../assets/images/onqc-scopes/companion-17-testing-scoped.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-17-testing-scoped.webp) +
4 L’en-tête affiche maintenant Region: yow.
+
+ +
+ ## Pourquoi l’appareil compagnon utilise `onqc` par défaut On ne peut pas choisir la portée d’un seul message privé. Quand un MP n’a pas @@ -528,7 +892,6 @@ D’autres exemples sur le même lien : | --- | --- | --- | --- | --- | | Nouvel utilisateur à Ottawa, sans portée | ✅ Relaie | ❌ Rejette | Jamais atteint | Tout le secteur d’Ottawa | | Nouvel utilisateur à Montréal, sans portée | Jamais atteint | ❌ Rejette | ✅ Relaie | Tout le secteur de Montréal | -| Ancienne appli ou annonce d’un ancien répéteur, sans portée | ✅ Relaie | ❌ Rejette | ✅ Relaie | Reste dans la ville d’origine | | Canal ou robot d’Ottawa, `yow` | ✅ Relaie | ✅ Relaie | ❌ Rejette | Zone d’Ottawa seulement | | Canal ou robot de Montréal, `yul` | ❌ Rejette | ✅ Relaie | ✅ Relaie | Zone de Montréal seulement | | Canal de tout le Québec, `qc` | ❌ Rejette | ✅ Relaie | ✅ Relaie | Côté québécois, y compris Gatineau | @@ -542,12 +905,15 @@ pas encore réglé de portée fonctionnent quand même localement.
  1. Répéteurs

    Les propriétaires effacent les anciennes régions et ajoutent leurs codes. Les répéteurs normaux gardent * permis; les passerelles le rejettent. Rien ne brise dans aucune ville.

  2. -
  3. Appareils compagnons

    Les utilisateurs règlent leur portée par défaut et Public sur onqc, et leurs canaux de test et robots sur leur ville.

  4. +
  5. Appareils compagnons

    Une fois les répéteurs autour d’eux configurés, les utilisateurs règlent leur portée par défaut et Public sur onqc, et leurs canaux de test et robots sur leur ville.

  6. Seulement au besoin

    Si les messages sans portée sont encore trop bruyants dans une ville, les répéteurs peuvent aussi lancer set flood.max.unscoped 3. Les messages avec portée atteignent encore 16 sauts.

## À savoir +- **Les messages avec portée ont environ 10 caractères de moins.** + L’application réduit la longueur maximale sur les canaux avec portée (de + 137 à 127 lors de nos essais). - **Les annonces des répéteurs restent dans leur ville.** Les utilisateurs de Montréal ne verront pas les répéteurs d’Ottawa par les annonces diffusées. - **16 sauts doivent suffire.** `flood.max` s’applique aussi à `onqc`. Si le diff --git a/docs/proposals/onqc-scopes.md b/docs/proposals/onqc-scopes.md index 4a3dd99..038e21b 100644 --- a/docs/proposals/onqc-scopes.md +++ b/docs/proposals/onqc-scopes.md @@ -61,7 +61,8 @@ There are four levels of scope. Every repeater carries one code from each: its c - **Repeaters** carry their city, their province, `onqc` and `can`. -- **Companions** use `onqc` as their default, so direct messages reach anyone. +- **Companions** use `onqc` as their default, so direct messages reach anyone, + once the repeaters around them are set up. - **`Public`** uses `onqc`, so everyone in Ontario and Québec can talk. - **Test channels and bots** use your city, so they stay local. - **Messages with no scope** still work inside each city. Bridge repeaters @@ -73,9 +74,9 @@ A scope is a short name attached to a message, such as `yow`. Repeaters use it to decide whether to pass the message on.
-A scope is **not** encryption and **not** a GPS fence. Anyone can read the -name, and it has nothing to do with where you are. It is only a label that -says "repeaters that carry this name, please forward this." +A scope is **not** encryption and **not** a GPS fence. Anyone who knows the +name can use it, and it has nothing to do with where you are. It is only a +label that says "repeaters that carry this name, please forward this."
Your app turns the name into a small code and puts it in the message header. @@ -118,7 +119,7 @@ different messages.
The DM is tagged onqc because onqc is the companion default in this proposal. See why further down. The repeater still hears every message. A scope only decides whether it passes the message on. Your companion also receives everything that reaches it.
-Three details catch people out: +Four details catch people out: - **Spelling must be exact.** `yow`, `YOW` and `ott` are three different names. A companion set to `yow` is ignored by a repeater that only carries `ott`. @@ -126,6 +127,10 @@ Three details catch people out: straight along that path and scopes no longer matter. - **There is no inheritance.** Carrying `on` does not mean carrying `yow`. Each name has to be on the list by itself. +- **A repeater with no regions set drops every scoped message.** Out of the + box, a repeater only carries `*`, so it forwards messages with no scope and + nothing else. Scoped messages only work once the repeaters along the way are + set up. ## The four levels @@ -181,12 +186,10 @@ Québec mesh". - They are the same codes MeshMapper already uses, for example `yow.meshmapper.net`. -- MeshCore already uses airport codes in other places too, such as the - [location code every observer reports](../analyzer/iata-codes.md). Inventing - a separate set of names just for regions would mean two ways to name the - same area, and more confusion over time. Airport codes are not a perfect fit - for mesh areas, but MeshCore already uses them for a variety of things and - that is not going to change, so regions should follow along. +- MeshCore already uses airport codes elsewhere, such as the + [location code every observer reports](../analyzer/iata-codes.md). They are + not a perfect fit for mesh areas, but that is not going to change, and a + second set of names just for regions would only add confusion over time. - There are no accents or capital letters to get wrong. `montréal`, `Montreal` and `montreal` would be three different scopes. - They are easy to split later. If Renfrew wants its own area one day, it can @@ -247,66 +250,172 @@ there. Run `region` afterwards to see the full list. ## Repeater setup -### Step 1: Clear any old regions +Type these into the repeater's command line **one command at a time**: in the +MeshCore app, open the repeater, log in as admin and use the command box in +**Repeater Admin**, or use the USB console. Each command has its own copy +button. Wait for `OK` before sending the next one. + +
+ +
+[![Contacts list filtered to find a repeater](../assets/images/onqc-scopes/repeater-01-contacts.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-01-contacts.webp) +
1 In Contacts, find your repeater (search by name) and tap it.
+
+ +
+[![Repeater Login screen with a password field](../assets/images/onqc-scopes/repeater-02-login.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-02-login.webp) +
2 Enter the admin password and tap Log In.
+
+ +
+[![Repeater Admin screen with Command Line at the bottom](../assets/images/onqc-scopes/repeater-03-admin.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-03-admin.webp) +
3 Check for You are logged in as an Admin, then tap Command Line at the bottom.
+
+ +
+ +
+**No `OK`? Send the same command again.** Over the mesh, a reply can take a few +seconds or get lost. In the MeshCore app, tap and hold the command in the +history and choose **Send Again**. Running a command twice is safe. If a +repeated `region remove` answers `Err - not found`, the first one already +worked. +
+ +
+ +
+[![Command line where one command was sent twice before getting OK](../assets/images/onqc-scopes/repeater-04-cli-standard.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-04-cli-standard.webp) +
1 Make sure every command gets an OK back. Here, the first set flood.advert.interval 47 never got one, so it was sent again.
+
+ +
+[![Command history menu with Copy and Send Again](../assets/images/onqc-scopes/repeater-06-send-again.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-06-send-again.webp) +
2 No OK? Tap and hold the command and choose Send Again.
+
+ +
+ +### Step 1: Check your firmware + +```text +ver +``` + +This shows the firmware version. It decides which region commands you use in +step 4: + +- **1.16 or newer:** use `region def`. +- **1.15 or older:** `region def` answers `Err - ??`. Use the `region put` + commands under [Older firmware](#older-firmware) instead, or update the + firmware first. + +
+ +
+[![Command line showing region def answering Err - ?? and ver showing v1.15.0](../assets/images/onqc-scopes/repeater-05-ver.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-05-ver.webp) +
1 On this repeater, region def answers Err - ??, and ver shows v1.15.0, so it uses the older-firmware steps.
+
+ +
+ +### Step 2: Clear any old regions Many repeaters already have regions from the older setup, such as `can`, -`on-alg` or `ott`. `region def` never deletes anything, so clear them first. +`on-alg` or `ott`. The new commands never delete anything, so clear them first. -1. Run `region` to list what is there. -2. Remove every name except `*` with `region remove `. Start with the - most indented line and work up. If you see `Err - not empty`, a name is - still indented under it, so remove that one first. -3. Run `region save`. +1. List what is there: + + ```text + region + ``` -For example, a repeater set up with the old Ottawa path: +2. Remove every name except `*`, one at a time, with `region remove `. + Start with the most indented line and work up. If you see + `Err - not empty`, another name is still indented under it, so remove that + one first. +3. Save: + + ```text + region save + ``` + +For example, a repeater set up with the old Ottawa path runs these, in order: ```text region remove ott +``` + +```text region remove on-alg +``` + +```text region remove on +``` + +```text region remove can +``` + +```text region save ``` -Removing `on` and `can` is fine. The region settings in step 3 add them back. Run `region` again, and you -should only see `* F`. +Removing `on` and `can` is fine. Step 4 adds them back. Run `region` again, +and you should only see `*^ F`. -### Step 2: Standard MeshCore Canada settings +### Step 3: Standard MeshCore Canada settings ```text set path.hash.mode 2 +``` + +```text set advert.interval 240 +``` + +```text set flood.advert.interval 47 +``` + +```text set flood.max 16 ```
-
path.hash.mode 2
Uses 3-byte repeater IDs in message paths, so fewer repeaters share an ID.
+
path.hash.mode 2
Uses 3-byte repeater IDs in message paths, so fewer repeaters share an ID. Needs firmware 1.14 or newer.
advert.interval 240
Announces this repeater to direct neighbours every 4 hours.
flood.advert.interval 47
Announces this repeater across the network every 47 hours.
flood.max 16
No flood message travels more than 16 hops, scoped or not.
-### Step 3: Region settings +These save by themselves. No `region save` is needed for them. + +### Step 4: Region settings Your city code is your **MeshMapper zone**. Open [MeshMapper](https://meshmapper.net/), find the zone your repeater sits in, and use its code. It is a map everyone already uses, so there is nothing new to look up. -The pattern is always the same: - -```text -region def |* |* onqc|* can -``` - -Examples: +On **firmware 1.16 or newer**, pick your area and run the four commands in +order: === "Ottawa and surrounding areas" ```text region def yow|* on|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yow + ``` + + ```text region save ``` @@ -314,8 +423,17 @@ Examples: ```text region def yow|* qc|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yow + ``` + + ```text region save ``` @@ -323,8 +441,17 @@ Examples: ```text region def yul|* qc|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yul + ``` + + ```text region save ``` @@ -332,8 +459,17 @@ Examples: ```text region def yqb|* qc|* onqc|* can + ``` + + ```text region allowf * + ``` + + ```text region default yqb + ``` + + ```text region save ``` @@ -344,32 +480,153 @@ nothing new to learn.
region def …
Carry your city, your province, onqc and can.
region allowf *
Also forward messages with no scope. This is already on by default. We set it anyway so you can see it.
-
region default yow
This repeater's own adverts use your city's scope, so they stay local.
-
region save
Keeps the region settings after a reboot. The set commands save by themselves.
+
region default <city>
This repeater's own adverts use your city's scope, so they stay local.
+
region save
Keeps the region settings after a reboot.
-To check, run `region`. For Ottawa you should see: +#### Older firmware + +If `region def` answers `Err - ??`, your firmware is older than 1.16. Add each +code with `region put` instead. These examples are for Ottawa. For another +area, replace `yow` with your city code, and `on` with `qc` in Québec. + +=== "Firmware 1.15" + + ```text + region put yow + ``` + + ```text + region put on + ``` + + ```text + region put onqc + ``` + + ```text + region put can + ``` + + ```text + region allowf * + ``` + + ```text + region default yow + ``` + + ```text + region save + ``` + +=== "Firmware 1.10 to 1.14" + + ```text + region put yow + ``` + + ```text + region allowf yow + ``` + + ```text + region put on + ``` + + ```text + region allowf on + ``` + + ```text + region put onqc + ``` + + ```text + region allowf onqc + ``` + + ```text + region put can + ``` + + ```text + region allowf can + ``` + + ```text + region allowf * + ``` + + ```text + region save + ``` + +On **1.15**, each `region put` answers `OK - (flood allowed)`, and +`region default yow` answers `default scope is now yow`. A new region forwards +straight away. On **1.10 to 1.14**, a new +region starts with forwarding **off**, so each one also needs +`region allowf`. Those versions also have no `region default`, so the +repeater's own adverts stay unscoped. Updating the firmware is worth it. + +
+ +
+[![Command line showing region put commands on firmware 1.15](../assets/images/onqc-scopes/repeater-07-region-put-115.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-07-region-put-115.webp) +
1 Firmware 1.15: each region put answers OK - (flood allowed). region put on needed a second send.
+
+ +
+ +### Step 5: Check the result ```text -* F +region +``` + +For Ottawa, you should see: + +```text +*^ F yow F on F onqc F can F ``` -`F` means "flood allowed": the repeater forwards that name. +`F` means "flood allowed": the repeater forwards that name. The `^` next to +`*` marks the repeater's home region; with none set, it sits on `*`. You can +ignore it. + +
+ +
+[![Command line showing the final region list](../assets/images/onqc-scopes/repeater-08-region-result.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/repeater-08-region-result.webp) +
1 The finished list on an Ottawa repeater.
+
+ +
### Bridge repeaters A repeater that links two city zones on purpose carries **both** city codes. For example, a repeater in **Rigaud** sits in the `yow` zone, on the Québec -side, and links it to the Montréal zone: +side, and links it to the Montréal zone. On firmware 1.16 or newer, run these +in order: ```text region def yow|* yul|* qc|* onqc|* can +``` + +```text region denyf * +``` + +```text region default yow +``` + +```text region save ``` @@ -400,25 +657,126 @@ messages with no scope go around it. ## Companion setup +
+**Wait until the repeaters around you are set up.** A repeater with no regions +set drops every scoped message. If you set your default to `onqc` before the +repeaters on your routes carry it, your channel messages and first DMs will +only reach nearby. Until then, leave **Default Region Scope** empty. You will +still receive everything. +
+ ### Step 1: Set your default scope In the MeshCore app, open **Settings**. Under **Network Settings**, tap **Default Region Scope**, add `onqc` and select it. +
+ +
+[![MeshCore app contacts list with the settings cog at the top right](../assets/images/onqc-scopes/companion-01-connected.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-01-connected.webp) +
1 Connect your companion to the MeshCore app and tap the settings cog in the top right.
+
+ +
+[![Settings screen with Network Settings and Default Region Scope](../assets/images/onqc-scopes/companion-02-settings.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-02-settings.webp) +
2 Scroll down to Network Settings and tap Default Region Scope.
+
+ +
+[![Select Region screen with no regions and an Add Region button](../assets/images/onqc-scopes/companion-03-select-region.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-03-select-region.webp) +
3 If onqc is not listed, tap Add Region, or the + at the top right.
+
+ +
+[![Add Region screen with onqc typed in](../assets/images/onqc-scopes/companion-04-add-region.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-04-add-region.webp) +
4 Type onqc, all lowercase, and tap the checkmark in the top right.
+
+ +
+[![Select Region screen with onqc listed](../assets/images/onqc-scopes/companion-05-pick-onqc.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-05-pick-onqc.webp) +
5 Tap onqc to select it.
+
+ +
+[![Settings showing onqc as the default region scope and a Settings Saved message](../assets/images/onqc-scopes/companion-06-saved.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-06-saved.webp) +
6 Default Region Scope now shows onqc. Tap the checkmark in the top right. It spins while saving, then Settings Saved! pops up.
+
+ +
+ ### Step 2: Set a scope on each channel -Open the channel, use the channel menu, tap **Set Region Scope**, and pick the -scope from this table: +Open the channel, tap **⋮** in the top right, choose **Set Region Scope**, +and pick the scope from this table: | Channel | Scope | Why | | --- | --- | --- | | `Public` | `onqc` | Everyone in Ontario and Québec can talk | -| Test channels, such as `#test` | Your city, for example `yow` | Tests stay local | -| Bot channels | Your city, for example `yow` | Bot replies stay local | +| Test channels, such as `#testing` | Your city, for example `yow` | Tests stay local | +| Bot channels, such as `#bots` | Your city, for example `yow` | Bot replies stay local | | Your own channels | Your city, `on`/`qc`, or `onqc` | Pick how far it should reach | If you run a bot, set that bot's own **Default Region Scope** to your city too. +**Example: `Public` to `onqc`** + +
+ +
+[![Channels list with Public at the top](../assets/images/onqc-scopes/companion-07-channels.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-07-channels.webp) +
1 Tap Channels in the bottom menu bar and open Public.
+
+ +
+[![Public channel menu with Set Region Scope](../assets/images/onqc-scopes/companion-09-channel-menu.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-09-channel-menu.webp) +
2 Tap ⋮ in the top right and choose Set Region Scope.
+
+ +
+[![Select Region list with onqc](../assets/images/onqc-scopes/companion-10-public-pick-onqc.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-10-public-pick-onqc.webp) +
3 Tap onqc.
+
+ +
+[![Public channel header showing Region: onqc](../assets/images/onqc-scopes/companion-11-public-scoped.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-11-public-scoped.webp) +
4 The header now shows Region: onqc, and a banner says only repeaters allowing that region will forward. The limit drops to 127 characters.
+
+ +
+ +
+**Scoped messages are a little shorter.** Once a channel has a scope, the app +allows fewer characters per message. In our testing, the limit on `Public` +dropped from 137 to 127 characters after setting it to `onqc`. The app sets +the exact limit, and it can vary with your node name and app version. +
+ +**Example: `#testing` to your city** + +
+ +
+[![#testing channel menu with Set Region Scope](../assets/images/onqc-scopes/companion-13-testing-menu.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-13-testing-menu.webp) +
1 Open the channel, tap ⋮ and choose Set Region Scope.
+
+ +
+[![Add Region screen with yow typed in](../assets/images/onqc-scopes/companion-15-add-yow.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-15-add-yow.webp) +
2 If your city code is not listed, tap +, type it (for example yow) and tap the checkmark.
+
+ +
+[![Select Region list with onqc and yow and a Region has been added message](../assets/images/onqc-scopes/companion-16-yow-added.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-16-yow-added.webp) +
3 Region has been added! Tap your city code to select it.
+
+ +
+[![#testing channel header showing Region: yow](../assets/images/onqc-scopes/companion-17-testing-scoped.webp){ loading=lazy width="600" height="1304" }](../assets/images/onqc-scopes/companion-17-testing-scoped.webp) +
4 The header now shows Region: yow.
+
+ +
+ ## Why the companion default is `onqc` You cannot pick a scope for a single direct message. When a DM has no known @@ -507,7 +865,6 @@ More examples on the same link: | --- | --- | --- | --- | --- | | New user in Ottawa, no scope | ✅ Forward | ❌ Drop | Never reached | Whole Ottawa area | | New user in Montréal, no scope | Never reached | ❌ Drop | ✅ Forward | Whole Montréal area | -| Old app or old repeater advert, no scope | ✅ Forward | ❌ Drop | ✅ Forward | Stays in whichever city sent it | | Ottawa channel or bot, `yow` | ✅ Forward | ✅ Forward | ❌ Drop | Ottawa zone only | | Montréal channel or bot, `yul` | ❌ Drop | ✅ Forward | ✅ Forward | Montréal zone only | | Québec-wide channel, `qc` | ❌ Drop | ✅ Forward | ✅ Forward | Québec side, including Gatineau | @@ -521,12 +878,14 @@ locally.
  1. Repeaters

    Owners clear old regions and add their codes. Normal repeaters keep * allowed; bridge repeaters drop it. Nothing breaks inside any city.

  2. -
  3. Companions

    Users set their default and Public to onqc, and test channels and bots to their city.

  4. +
  5. Companions

    Once the repeaters around them are set up, users set their default and Public to onqc, and test channels and bots to their city.

  6. Only if needed

    If messages with no scope are still too noisy inside a city, repeaters can also run set flood.max.unscoped 3. Scoped messages still reach 16 hops.

## Things to know +- **Scoped messages are about 10 characters shorter.** The app lowers the + message length limit on scoped channels (137 to 127 in our testing). - **Repeater adverts stay in their city.** Montréal users will not see Ottawa repeaters through flood adverts. - **16 hops has to be enough.** `flood.max` applies to `onqc` too. If the