So, same as everyone else selling kit then. Seems your first outing with LMn isn’t just implementing it but making fundamental changes to its core - which is going to bring in to question all levels of certification queries.
Leaving aside for a second what @Jeff-UK highlights above, this still doesn’t matter, because the 3 join frequencies are set and the other five will be set with the join accept - so there is still no work for you to do on this.
This makes it sound bad when it is just the choice of TTI, just like all the other EU based providers would make a choice of their five channels. If you run your own setup, you can choose your own five channels, this does not make you a bad person.
The band or the channels? The band would run in to legal issues. The channels, sure, but you must know this by looking at your global_conf.json?
It’s not designed for newbies. It can’t be formatted for newbies. It’s a formal spec that has been accepted as an international standard. This is normal. What’s not normal is trying to do what you are doing without making enquiries on somewhere like here before you started messing with some of the most complex code that just has to keep working day-in, day-out for years.
I would also suggest that perhaps your client is coming up with ideas & problems due to a lack of understanding of the details & consequences. Between you both, you run the risk of deploying kit to end users and then finding an issues that totally borks the whole system that can only be resolved by retrieving the devices for a firmware update - assuming it is possible to figure out which moving part is causing the problem.
I’ve experienced this situation a couple of times and it has taken days of testing to identify the issues at hand. In one instance it wasn’t my code that caused it, it was a clash between the LMn version and the LNS and the specifications - the LNS was updated to take account of new specification details but it relied on a new version of LMn than the core vendor (ST) had not yet made available.
At the very very worst, LMn comes with the bands all setup, it just takes a bit longer in some regions to join as it uses channels that aren’t in use, but it will get there in the end. The simplest alternative is to change the channel masks in the code to suit the region & LNS.
By your own admission you are just starting out which is hard enough with LoRaWAN. Once you’ve shipped a few devices to EU, US & AU and gone the hard coded channel plans route, then you could look to feed the channel plan changes in programatically.
But mostly, thank you for creating such a perfect case study!