On Tue, 2015-05-26 at 19:04 +0200, Jean-Christian de Rivaz wrote:
> Le 26. 05. 15 18:21, Dan Williams a écrit :
> > On Tue, 2015-05-26 at 16:09 +0200, Jean-Christian de Rivaz wrote:
> >>
> >> Hi Dan,
> >>
> >> My application is a network of embedded systems where each system can
> >> have an internal or an external SIM card. For this kind of use the
> >> device ID or IMSI will not help as there will be different on each
> >> system and I want a unique configuration file that work on all systems.
> > Understood.  In this case your are correct that DeviceID and SimID won't
> > help.  However, be aware that kernel bus enumeration means that specific
> > devices are not guaranteed to be found in the same order, and thus a
> > modem that has ttyACM0 one time may get ttyACM3 the next time.  Also if
> > the modem crashes and disconnects, sometimes if an application holds the
> > serial port open and doesn't close it on disconnect, that tty cannot be
> > re-used when the modem reappears, and a new one will be chosen.
> >
> > So my point is that the only way to get guaranteed matching between a
> > modem and a connection is via the device ID or SIM ID, because kernel
> > enumeration is not guaranteed to be stable and your tty numbers
> > therefore may not be stable.
> 
> The fact that the kernel dynamically assign the ttyACMx number can't be 
> changed I agree, but udev rules precisely allow to match a specific 
> device and to set a variable if the rule match. This is exactly how 
> ModemManager already work with the ID_MM_DEVICE_IGNORE for example. This 
> is a reliable way to identify the port of the modem.
> 
> The proposed idea is to have a udev rule that contain something like 
> this ENV(ID_MM_DEVICE_TAG_NAME)="gsm" if the rule match,  then 
> ModemManager can use the tag 'gsm' as a fixed reference instead of the 
> dynamic ttyACMx. Of course ModemManager will continue to use the dynamic 
> ttyACMx internally to communicate with the modem but will use the 'gsm' 
> tag on the D-Bus so that NetworkManager get a fixed name too.
> 
> Now if you prefer to use the device ID or the SIM ID, ModemManager could 
> be configured by a udev rule like ENV(ID_MM_DEVICE_TAG_TYPE)="device-id" 
> or "sim-id" for example.
> 
> >> An other proposition could be to let's tag the devices from the udev
> >> rules and allow both ModemManager and NetworkManager use the tag to
> >> refer to the device. One advantage of this proposition is that it allow
> > The best way to do this would be to use the udev rules to add symlinks
> > as you've found.  However, since the symlinking is N symlinks to 1
> > kernel device (ttyACMx) ModemManager cannot really use symlinks as the
> > actual control/data port names.
> >
> >> to use this tag differently, for example ModemManager could be
> >> configured to override the tag with the device ID and/or IMSI to fit
> >> your proposed use case.
> >>
> >> While doing my experiment, I used udev rules that created specific
> >> symbolic links for the modem regardless of this actual ttyACMx. If
> >> ModemManager could have a way to be configured to use the specific
> >> symbolic links, then NetworkManager would have see a fixed device name.
> >> This is also an acceptable way for me to solve the problem.
> > I think instead, ModemManager should still use the normal kernel port
> > names.  But it could also read symlink names for the ports and make that
> > available in the D-Bus interface so that NetworkManager or other
> > programs could use them for matching.  What do you think Aleksander?
> 
> This is an alternative of the ENV(ID_MM_DEVICE_TAG_NAME) trick to get 
> the tag name. The fact that the name on D-Bus should be allowed to be 
> different from the dynamic tty is the main part that you also agree on 
> if I understand you correctly.

Yes, I would prefer to do this without more tags, but using the normal
symlink scheme that udev already supports well.  This also makes it
non-ModemManager-specific since symlinks are often used for other
programs as well.

Dan

_______________________________________________
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to