Thank you for the interesting question.
Actually, there is an undocumented feature which may help. An identity can be defined for each device, and it is checked when smsd starts. If a modem is using different port than what was defined, modem processes are swapped as required.
To use this feature, first all PIN's must be disabled. Also, if you have paths for example /dev/ttyUSB0 ... 6, your system must create the same paths even when the modems are in the different places.
Start the smsd with
loglevel = 7, and collect IMSI codes for each device (SIM). If the IMSI gives an ERROR for all devices, collect IMEI codes.
Then add a line
identity = <IMSI> for each device.
That's it. Here is an example configuration, which also uses MSISDN's as device names and in queue definitions:
devices = 358466611111, 358465522222, 358466533333
logfile = /var/log/smsd.log
loglevel = 7
sent = /var/spool/sms/sent
[queues]
Q-ANY = /var/spool/sms/Q-ANY
Q-358466611111 = /var/spool/sms/Q-358466611111
Q-358465522222 = /var/spool/sms/Q-358465522222
Q-358466533333 = /var/spool/sms/Q-358466533333
[default]
queues = Q-modemname, Q-ANY
pin = ignore
incoming = yes
memory_start = 0
[358466611111]
device = /dev/ttyUSB0
identity = 244053111111111
[358465522222]
device = /dev/ttyUSB3
identity = 244053112222222
[358466533333]
device = /dev/ttyUSB6
identity = 244053112333333
'smsdconf' Syntax Highlight powered by GeSHi Hope this helps.