Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
Search
JMRI file structure clarifications
All -
?
Doing a little housecleaning and reorg of multiple computer instances of JMRI.. Due to not fully understanding the internal file structure, I'm looking for a little education to make sure I don't mess things up.
?
Current configuration:
?
- Main JMRI instance running on train room Windows computer connected to layout. User files are in JMRI folder on Dropbox.
- Development JMRI instance running on a separate Windows computer in simulation mode.? User files are in a separate JMRIDev folder on Dropbox
?
Current workflow is to modify and test JMRI development instance in with user files in JMRIDev folder then move final changes to JMRI folder.
?
I've spent some time reviewing info on JMRI website and have the following questions:
?
Per the JMRI website "JMRI Profile Directory Tutorial", each instance of JMRI loaded on a separate computer generates a file called nodeIdentity.xml which contains a unique nodeIdentity string in the" Settings Location" that doesn't change. I found this file in the JMRI program directory of each computer with different nodeIdentity strings on each computer. For example, the file on the development computer contains the following:
?
<nodeIdentityConfig><nodeIdentity nodeIdentity="jmri-E89C255E273F" /><storageIdentity storageIdentity="3f2eb549-261f-427c-91ae-bcdc75fc9064" /><uuid uuid="d6TSuJLhZj6jgTUnW-9jbJ" /><formerIdentities><nodeIdentity nodeIdentity="jmri-040E3C10335F" /><nodeIdentity nodeIdentity="jmri-d6TSuJLhZj6jgTUnW-9jbJ" /><nodeIdentity nodeIdentity="jmri-E89C255E273F" /><nodeIdentity nodeIdentity="jmri-0A002700000F" /><nodeIdentity nodeIdentity="jmri-0A002700000D" /><nodeIdentity nodeIdentity="3f2eb549-261f-427c-91ae-bcdc75fc9064" /></formerIdentities></nodeIdentityConfig>
?
In the list of <formerIdentites> is a former node identity that equals the current <storageIdentity>.?
? -- Is this a coincidence or does this match have significance?
? -- What's the difference between a <nodeidentity> and a <storageIdentity>
? -- Are the <formerIdentities> still relevant?
?
In the JMRIDev user files folder on Dropbox, I found the profile subfolder which contains the profile.xml / profile.properties files AND a separate subfolder named the same as the <storageIdentity> listed in the nodeIdentity.xml file string above. Inside this separate subfolder, I found another copy of profile.xml and profile.properties along with a file named user-interface.xml.? The timestamp on the first two files are the same as the ones in the profile parent directory .
?
Now the confusion...
-- Why are these files in both places?
-- If I wanted to copy the updated? profile files on the development computer to the Main layout computer, do I copy the files to both places (the profile subdirectory and the separate subfolder named the same as the <storageIdentity> listed in the nodeIdentity.xml on the Main layout computer??
?
I understand the situation with other user files? (the panel files rosters files...etc), but a little confused on how to copy the profiles.
?
A little guidance would be appreciated.
?
thx
?
Norb Windows 11 PC, JMRI 5.10, java 17.0.11 (64bit) NCE SB5 system |
Norb, The "storageIdentity" makes it possible to share a "profile" as well as the user data. ?The platform specific profile information is in the profile.xml and profile.properties files within the storageIdentity directory, along with the user-interface.xml file. ?When PanelPro/DecoderPro/LCCPro start, the storageIdentity versions are copied up a level to the "profile" directory. ?Note: ?I don't know if this happens every time or only if needed. The "nodeIdentify" is currently based on the MAC address of the active network interface. ?This has become complicated by OS based security enhancements such as private and rotating MAC addresses. ?This required moving to the random UUID based "storageIdentity". The current identities are include in the "formerIdentities" section for backward compatibility. ?This provides the ability to get the proper identity format based on the current JMRI version. ?Note: ?The node identity evolution occurred during the 4.x sequence. ?There have been no changes during 5.x. As a test, I deleted everything except the "uuid" line. ?The uuid line has compact form of the uuid. ?When expanded, it is the same as storageIdentity. ?I also reformatted the file to be readable.
Since I use a private MAC address, it changes every time I logon. ?This creates a lot of former network based nodeIdentities. For your situation, I don't know if you need to copy both sets or not. ?You can try doing one and see how it works. Dave Sand ----- Original message ----- From: "Norb S via groups.io" <schertn=[email protected]> Subject: [jmriusers] JMRI file structure clarifications Date: Wednesday, May 07, 2025 4:29 PM All - ? Doing a little housecleaning and reorg of multiple computer instances of JMRI.. Due to not fully understanding the internal file structure, I'm looking for a little education to make sure I don't mess things up. ? Current configuration: ? - Main JMRI instance running on train room Windows computer connected to layout. User files are in JMRI folder on Dropbox. - Development JMRI instance running on a separate Windows computer in simulation mode.? User files are in a separate JMRIDev folder on Dropbox ? Current workflow is to modify and test JMRI development instance in with user files in JMRIDev folder then move final changes to JMRI folder. ? I've spent some time reviewing info on JMRI website and have the following questions: ? Per the JMRI website "JMRI Profile Directory Tutorial", each instance of JMRI loaded on a separate computer generates a file called nodeIdentity.xml which contains a unique nodeIdentity string in the" Settings Location" that doesn't change. I found this file in the JMRI program directory of each computer with different nodeIdentity strings on each computer. For example, the file on the development computer contains the following: ? <nodeIdentityConfig><nodeIdentity nodeIdentity="jmri-E89C255E273F" /><storageIdentity storageIdentity="3f2eb549-261f-427c-91ae-bcdc75fc9064" /><uuid uuid="d6TSuJLhZj6jgTUnW-9jbJ" /><formerIdentities><nodeIdentity nodeIdentity="jmri-040E3C10335F" /><nodeIdentity nodeIdentity="jmri-d6TSuJLhZj6jgTUnW-9jbJ" /><nodeIdentity nodeIdentity="jmri-E89C255E273F" /><nodeIdentity nodeIdentity="jmri-0A002700000F" /><nodeIdentity nodeIdentity="jmri-0A002700000D" /><nodeIdentity nodeIdentity="3f2eb549-261f-427c-91ae-bcdc75fc9064" /></formerIdentities></nodeIdentityConfig> ? In the list of <formerIdentites> is a former node identity that equals the current <storageIdentity>.? ? -- Is this a coincidence or does this match have significance? ? -- What's the difference between a <nodeidentity> and a <storageIdentity> ? -- Are the <formerIdentities> still relevant? ? In the JMRIDev user files folder on Dropbox, I found the profile subfolder which contains the profile.xml / profile.properties files AND a separate subfolder named the same as the <storageIdentity> listed in the nodeIdentity.xml file string above. Inside this separate subfolder, I found another copy of profile.xml and profile.properties along with a file named user-interface.xml.? The timestamp on the first two files are the same as the ones in the profile parent directory . ? Now the confusion... -- Why are these files in both places? -- If I wanted to copy the updated? profile files on the development computer to the Main layout computer, do I copy the files to both places (the profile subdirectory and the separate subfolder named the same as the <storageIdentity> listed in the nodeIdentity.xml on the Main layout computer?? ? I understand the situation with other user files? (the panel files rosters files...etc), but a little confused on how to copy the profiles. ? A little guidance would be appreciated. ? thx ? Norb Windows 11 PC, JMRI 5.10, java 17.0.11 (64bit) NCE SB5 system |
Dave-
?
Really appreciate you taking the time to provide a detailed response. This clarified things for me. Still scratching my head a little as to why running PanelPro would copy the profile.xml and profile.properties from the <storageIdentity> folder up one directory level to the profile directory... guess it really doesn't matter since both files are identical and the version in the profile directory are sourced from the <storageIdentity>
?
Thx?
--
Norb Windows 11 PC, JMRI 5.10, java 17.0.11 (64bit) NCE SB5 system |
Norb, Normally shared profiles are used when different computers need access to the same user data and profile information. Here is an example with three different systems. The "56..." is for a Win11 system, the "53..." is a Ubuntu system and the "ae..." is a macOS system. When one of the three systems starts PanelPro, the appropriate profile.xml and profile.properties files are copied from the related storageIdentity directory and used for the PanelPro session. This resolves issues such as COMx, /dev/tty..., /dev/cu... for layout connections. Based on your original post, you are not sharing any files Dave Sand ----- Original message ----- From: "Norb S via groups.io" <schertn=[email protected]> Subject: Re: [jmriusers] JMRI file structure clarifications Date: Thursday, May 08, 2025 3:34 PM Dave- ? Really appreciate you taking the time to provide a detailed response. This clarified things for me. Still scratching my head a little as to why running PanelPro would copy the profile.xml and profile.properties from the <storageIdentity> folder up one directory level to the profile directory... guess it really doesn't matter since both files are identical and the version in the profile directory are sourced from the <storageIdentity> ? Thx? -- Norb Windows 11 PC, JMRI 5.10, java 17.0.11 (64bit) NCE SB5 system |
to navigate to use esc to dismiss