Use a specific device ?

Jean-Christian de Rivaz jc at eclis.ch
Tue Jun 9 10:34:38 PDT 2015


Le 09. 06. 15 17:43, Dan Williams a écrit :
> On Fri, 2015-06-05 at 16:16 +0200, Jean-Christian de Rivaz wrote:
>> Le 05. 06. 15 15:51, poma a écrit :
>>> On 05.06.2015 15:37, Jean-Christian de Rivaz wrote:
>>>> Le 05. 06. 15 15:09, poma a écrit :
>>>>> On 05.06.2015 14:14, Jean-Christian de Rivaz wrote:
>>>>>> Le 05. 06. 15 13:18, Aleksander Morgado a écrit :
>>>>>>> On Tue, May 26, 2015 at 12:19 AM, Jean-Christian de Rivaz <jc at eclis.ch> wrote:
>>>>>>>> I have a system where the modem have multiple /dev/ttyACMx ports where x is
>>>>>>>> not constant because of the dynamic nature of others serial devices.
>>>>>>> It may be worth noting that a very similar issue with the one faced
>>>>>>> here is the one with network interface names, where interface names
>>>>>>> were created as kernel drivers probed the different interfaces, ending
>>>>>>> up with "eth0", "eth1" and so on. Then, there would be network
>>>>>>> interface configurations for each network interface based on the name,
>>>>>>> but no one really ensured that the name was the same upon reboots. The
>>>>>>> solution provided by systemd to ensure that the proper configuration
>>>>>>> is applied always to the proper interface is to make the device names
>>>>>>> "predictable", see:
>>>>>>> http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
>>>>>>>
>>>>>>> This solution avoids the need of any other udev rules to e.g. create
>>>>>>> network interface names containing the device MAC address or what not.
>>>>>>>
>>>>>>> I'm wondering whether the same could be applied not only to network
>>>>>>> interfaces, but also to ttyACMs, ttyUSBs and cdc-wdms, and end up
>>>>>>> having predictable tty names like e.g. /dev/ttyACMp0s20u4i0. Sure,
>>>>>>> those names are a nightmare to type, but they are predictable (e.g. in
>>>>>>> this case by including the physical location of the connector of the
>>>>>>> hardware).
>>>>>>>
>>>>>> This would be a wonderful solution. The only problem is when will this
>>>>>> feature be available in a stable Linux kernel widely used by all majors
>>>>>> distributions? Until this dream happens (probably not before severals
>>>>>> years I guess), an other option must be implemented.
>>>>>>
>>>>>> Jean-Christian
>>>>> Face your broadband modem, live your dreams?
>>>>>
>>>>> Kay, when this would happen - Predictable Broadband Modem Interface Names?
>>>>>
>>>> I must emphasis that this solution will still not solve the ModemManager
>>>> problem of automatically probing any added serial devices, requiring all
>>>> non-modem serial device to add the ID_MM_IGNORE hack in udev rules. This
>>>> must change as soon as possible.
>>>>
>>>> Jean-Christian
>>>>
>>> MM probing various hardware, not much of a news.
>>>
>> But still a problem. The lack of proper use of udev by ModemManager
> What is "proper" use of udev here?
>
> Dan
>

By looking on how others types of device are handled, udev should be 
used to detect the type of a device in a way to let the relevant 
application manage it if the kernel did not have already a way to detect 
the type of the device (by using USB HID for example). The goal in this 
case is to have modem devices handled by a modem application like 
ModemManager or Ofono.

The most comfortable way for the users is to have a list of know devices 
type, usually based on some vendor and product id. This work generally 
very well for PCI and USB devices. The documentation should provide an 
easy way for a user to add and to submit to the project a new udev rule 
in case the product he use is not already in the list. The rules could 
be plain text udev rules under /lib/udev/rules.d/ (see for example 
40-libgphoto2-2.rules or 40-libsane.rules) or directly coded into the 
application like Ofono do for example, see 
http://git.kernel.org/cgit/network/ofono/ofono.git/tree/plugins/udevng.c#n1065. 
I personally much like the plain udev rule because it allow easy 
experiment without changing the source code of the application. For 
example the last new modem I use on a embedded system is working good 
enough for me with the generic ModemManager plugin so it would be nice 
to let support it by just add a line in a udev rules file.

There are some cases where this is not enough, typically for the plain 
old ttyS* serial port and when the reported vendor and product id is 
just a generic serial port that can be connected physically to any 
serial device, not necessary a modem. In this case the distribution or 
the user should provides a udev rule to specify that there is a modem 
device connected to this particular serial port or to probe if there is 
a modem connected to it. Maybe he know the exact type of the modem, 
maybe he want to let the application probe the modem type, maybe he want 
to let the application detect if there is a modem or not. I have no 
strong opinion on how the distribution should set the default for this 
kind of ports, but I think this is important to let the choice to the 
distributions and to the users on how the serial ports are acceded by 
the application.

Jean-Christian



More information about the ModemManager-devel mailing list