Identity file is ignored when set in the configuration yaml file #67

Closed
opened 2026-10-27 09:31:21 +01:00 by adam · 2 comments
Owner

Tried to set a specific identity for my repeater using below method:

Method 1: Using identity_file (Recommended)
Store the private key in a separate file.

Configuration:

repeater:
  identity_file: "/etc/pymc_repeater/identity.key"

File Format:
The identity file should contain exactly 128 hex characters (64 bytes) representing the private key:

root@meshcore-cerberus:~/pyMC_Repeater# ls -la /etc/pymc_repeater/identity.key
-rw------- 1 repeater repeater 128 Mar 26 21:15 /etc/pymc_repeater/identity.key
root@meshcore-cerberus:~/pyMC_Repeater# cat /etc/pymc_repeater/identity.key | wc -c
128
root@meshcore-cerberus:~/pyMC_Repeater# cat /etc/pymc_repeater/identity.key | grep -E '^[0-9a-fA-F]{128}$'
cfdaa0415d89319d3e0b6820e5de8133595b710a061ab7987874312d7db5ad04205ed7509132a98eedea6e809a42f7ec5dde756404e4d62afa01301692aaebe9
root@meshcore-cerberus:~/pyMC_Repeater#

When I restart the repeater, a new identity gets created regardless of the identity_file setting.

root@meshcore-cerberus:~/pyMC_Repeater# find / -name identity.key -ls
   258887      4 -rw-------   1 repeater repeater       44 Mar 26 21:18 /var/lib/pymc_repeater/.config/pymc_repeater/identity.key
   258888      4 -rw-------   1 repeater repeater      128 Mar 26 21:15 /etc/pymc_repeater/identity.key
root@meshcore-cerberus:~/pyMC_Repeater#

Even if I remove /var/lib/pymc_repeater/.config/pymc_repeater/identity.key, it will be created again and the /etc/pymc_repeater/identity.key is ignored.

I have checked the node address with this small script and it differs from the setting in the repeater which proofs that the identity_file setting is not used.

root@meshcore-cerberus:~/pyMC_Repeater# python3 check_id.py
Node address should be: 0xd6

The repeater has 0xdb as node address. See log below.

Mar 26 21:18:52 meshcore-cerberus pymc-repeater[29549]: 2026-03-26 21:18:52,792 - RepeaterDaemon - INFO - Local identity set: a3
Mar 26 21:18:52 meshcore-cerberus pymc-repeater[29549]: 2026-03-26 21:18:52,792 - RepeaterDaemon - INFO - Local node hash (from identity): 0x db

My version is 1.05

Tried to set a specific identity for my repeater using below method: Method 1: Using identity_file (Recommended) Store the private key in a separate file. Configuration: ```yaml repeater: identity_file: "/etc/pymc_repeater/identity.key" ``` File Format: The identity file should contain exactly 128 hex characters (64 bytes) representing the private key: ```bash root@meshcore-cerberus:~/pyMC_Repeater# ls -la /etc/pymc_repeater/identity.key -rw------- 1 repeater repeater 128 Mar 26 21:15 /etc/pymc_repeater/identity.key root@meshcore-cerberus:~/pyMC_Repeater# cat /etc/pymc_repeater/identity.key | wc -c 128 root@meshcore-cerberus:~/pyMC_Repeater# cat /etc/pymc_repeater/identity.key | grep -E '^[0-9a-fA-F]{128}$' cfdaa0415d89319d3e0b6820e5de8133595b710a061ab7987874312d7db5ad04205ed7509132a98eedea6e809a42f7ec5dde756404e4d62afa01301692aaebe9 root@meshcore-cerberus:~/pyMC_Repeater# ``` When I restart the repeater, a new identity gets created regardless of the `identity_file` setting. ```bash root@meshcore-cerberus:~/pyMC_Repeater# find / -name identity.key -ls 258887 4 -rw------- 1 repeater repeater 44 Mar 26 21:18 /var/lib/pymc_repeater/.config/pymc_repeater/identity.key 258888 4 -rw------- 1 repeater repeater 128 Mar 26 21:15 /etc/pymc_repeater/identity.key root@meshcore-cerberus:~/pyMC_Repeater# ``` Even if I remove `/var/lib/pymc_repeater/.config/pymc_repeater/identity.key`, it will be created again and the `/etc/pymc_repeater/identity.key` is ignored. I have checked the node address with this small script and it differs from the setting in the repeater which proofs that the `identity_file` setting is not used. ```bash root@meshcore-cerberus:~/pyMC_Repeater# python3 check_id.py Node address should be: 0xd6 ``` The repeater has 0xdb as node address. See log below. ```bash Mar 26 21:18:52 meshcore-cerberus pymc-repeater[29549]: 2026-03-26 21:18:52,792 - RepeaterDaemon - INFO - Local identity set: a3 Mar 26 21:18:52 meshcore-cerberus pymc-repeater[29549]: 2026-03-26 21:18:52,792 - RepeaterDaemon - INFO - Local node hash (from identity): 0x db ``` My version is `1.05` <!-- github-sync-id:4147226919 -->
adam closed this issue 2026-10-27 09:31:21 +01:00
Author
Owner

Ok, I probably found the reason.
Seems that it is not implemented yet ;-)

main.py only test on the mesh->identity_key so far I can see from the code.

            identity_key = self.config.get("mesh", {}).get("identity_key")
            if not identity_key:
                logger.error("No identity key found in configuration. Cannot init repeater.")
                raise RuntimeError("Identity key is required for repeater operation")

            local_identity = LocalIdentity(seed=identity_key)
            self.local_identity = local_identity
            self.dispatcher.local_identity = local_identity
Ok, I probably found the reason. Seems that it is not implemented yet ;-) main.py only test on the mesh->identity_key so far I can see from the code. ```python identity_key = self.config.get("mesh", {}).get("identity_key") if not identity_key: logger.error("No identity key found in configuration. Cannot init repeater.") raise RuntimeError("Identity key is required for repeater operation") local_identity = LocalIdentity(seed=identity_key) self.local_identity = local_identity self.dispatcher.local_identity = local_identity ``` <!-- github-comment-id:4138937649 -->
Author
Owner

thanks, thats an issue I have been meaning to fix for some time, I have just committed a fix 031f7b5e47

thanks, thats an issue I have been meaning to fix for some time, I have just committed a fix 031f7b5e472d26ec2d2844f68e1b312aefb8e9b7 <!-- github-comment-id:4141628438 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/pyMC_Repeater#67