ModemManager-1.6.2: does not work with Huawei E3372h-153
Martin MOKREJŠ
mmokrejs at gmail.com
Fri Jan 13 11:18:17 UTC 2017
Hi Aleksander,
Aleksander Morgado wrote:
> Hey Martin,
>
> On Thu, Jan 12, 2017 at 9:46 PM, Martin MOKREJŠ <mmokrejs at gmail.com> wrote:
>> I propose improving mmcli manpage. The EXAMPLES section should start with:
>> 1. how shall one figure out where is any modem seen
>> 2. how to read the status, shown "registered" and later "connected" states.
>> 3. although it seems it is not relevant to mmcli, a hint where to go next to get use of the "connected" modem would be very helpful.
>>
>
> Any patch to increase documentation is totally welcome; even if they
> may not be perfect from the beginning, at least we would start the
> ball rolling to improve the docs.
I understand but I can only contribute by testing raising up ideas.
>
>>
>> Aleksander Morgado wrote:
>>> On Thu, Jan 12, 2017 at 3:49 PM, Martin MOKREJŠ <mmokrejs at gmail.com> wrote:
>>>> # mmcli --connect -m /org/freedesktop/ModemManager1/Modem/0
>>>> error: no bearer was specified
>>>
>>> --connect is a bearer action, you need to pass a bearer object path,
>>> not a modem object path.
>>
>> I think "mmcli --help" could show some hints in the bearer section, like --create-bearer="apn=internet.t-mobile.xx"
>>
>
> I don't like that as users may think the hints are the only allowed
> parameters... What we should do is make sure we keep the manpage up to
I understand but provided everybody trying to use a modem device under Linux saw a few times words APN and "internet.t-mobile.xx" it makes them familiar with this command.
> date, which I don't think is currently the case, it was written a
> looong time ago :)
>
>>>
>>>> # mmcli --list-bearers -m /org/freedesktop/ModemManager1/Modem/0
>>>>
>>>> No bearers were found
>>>
>>> Ok, so you would first need to create a bearer with
>>> --create-bearer="key=value,..." in one of the modems.
>>>
>>> E.g.
>>>
>>> mmcli -m 0 --create-bearer="apn=internet"
>>
>> Yeah, but I again had to rescan my devices and only then I was able to use a modem. And it appeared at different index pos. Again, the EXAMPLES section could be improved so that a user can use it as a real step-by-step manual to get connected (to have a network device with an IP!).
>
> Yep, agree, it would be good to have such a sequence in the EXAMPLES section.
>
>>
>>>
>>> See:
>>> https://www.freedesktop.org/software/ModemManager/api/latest/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer
>>>
>>>> # mmcli --bearer -m /org/freedesktop/ModemManager1/Modem/0
>>>> error: invalid path or index string specified: '-m'
>>>
>>> --bearer expects a bearer path or index (help says "--bearer=[PATH|INDEX]")
>>>
>>>> # mmcli --bearer
>>>> error: no actions specified
>>>
>>> Same thing, --bearer expects a bearer path or index (help says
>>> "--bearer=[PATH|INDEX]")
>>>
>>>> # mmcli -b
>>>> error: no actions specified
>>>
>>> Same thing, --bearer expects a bearer path or index (help says
>>> "--bearer=[PATH|INDEX]")
>>>
>>>> # mmcli -b -m /org/freedesktop/ModemManager1/Modem/0
>>>> error: invalid path or index string specified: '-m'
>>>
>>> Same thing, --bearer expects a bearer path or index (help says
>>> "--bearer=[PATH|INDEX]")
>>
>>
>> How about mmcli being more friendly and output after the error message a list of my modems?
>>
>
> Truth be told, I think there are more critical things to include in
> mmcli, like a machine-friendly output of the results that may be used
> easier in scripts. I know people that parse the output of mmcli
> commands in shell scripts (me included) and that is totally not
> ideal...
>
>> # mmcli -L
>>
>> Found 1 modems:
>> /org/freedesktop/ModemManager1/Modem/2 [huawei] E3372
>>
>> #
>>
>> From "experience" I now know it is at index 2. Don't expect users are that smart when doing first steps. ;-)
>>
>
> The index isn't fixed. The index just happens to be the number of
I know it moved because I exchanged my E3131s with E3372h-153, but still had to figure out what index version I should use. ;)
> modems detected since the startup of ModemManager; if you unplug and
> replug the modem the index will change. If you want to have a "name"
> for a modem that doesn't change e.g. across reboots, you can tag the
> USB port where the modem is available with a label that may be used
> later on instead of the modem index; e.g. "mmcli -m USB1" or so. See:
> https://sigquit.wordpress.com/2016/10/06/naming-devices-in-modemmanager/
Good to know. Does the "mmcli -m 0" command show the label anywhere? Does nm-applet create and use it automatically? Yeah, there was some scroll-down option to use the connection setting for "Any device" or "HUAWEI MOBILE DEVICE". Seemed too unspecific in both cases, but I rather stayed with the default "HUAWEI MOBILE DEVICE". I assume this was maybe a place where I could have specified the "label" (ehm, an existing label, right?). But was there an option to specify the label for the device in previous Connection wizard entries"? I don't rememeber that.
>
>>>
>>>>
>>>>
>>>> # mmcli --set-power-state-on -m /org/freedesktop/ModemManager1/Modem/0
>>>> error: couldn't set new power state in the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot set power state: not in disabled state'
>>>
>>> Your modem is already registered, so it is already in "on" power state.
>>
>> If one doesn't know what are all the options, it is hard to find what needs to be done in what order. The help text could say how the power-related options relate to "--enable", "--disable". For example, "not applicable when connected/enabled/whatever".
>>
>
> Help text in --help doesn't allow too many explanations. Such things
> should be included in either the mmcli manpage or directly in the
> ModemManager gtk-doc documentation published in the website.
Indeed, but you have plenty of space in the line:
Modem options
-w, --monitor-state Monitor state of a given modem
-e, --enable Enable a given modem
(what is the "given modem?)
-d, --disable Disable a given modem
(what is the "given modem?)
--set-power-state-on Set full power state in the modem
(how does it differ to "enable"?) Is that some power-saving feature?
--set-power-state-low Set low power state in the modem
--set-power-state-off Power off the modem
-r, --reset Reset a given modem
(like when I unplug and re-plug?)
--factory-reset=[CODE] Reset a given modem to its factory state
-L, --list-modems List available modems
(should speak about the index position too)
>
>>>
>>>>
>>>> The mmcli --help-all are too cryptic to me. I failed to find a way to really get the device connected. There should be some typical examples at the end of --help-all output. Even figuring out I need to specify "-m /org/freedesktop/ModemManager1/Modem/0" took me a long while. Why sometimes it is rejected as a wrong argument I do not know (shown above).
>>>
>>> For launching a connection you can use the "manual" way of creating
>>> the bearer object and then --connect; OR, easier, just
>>> "--simple-connect" in the modem object. E.g.:
>>>
>>> mmcli -m 0 --simple-connect="apn=internet"
>>
>> And the "simple" seemed like a provisional solution, probably only a partial "something". So what is "full" connect then?
>>
>
> Simple isn't a provisional solution, it's just that: simple :) The
> "Simple.Connect()" command does everything you may need to do to get
> the modem connected:
> * Unlock PIN, if SIM-PIN locked.
> * Get the modem enabled.
> * Get the modem registered in a network.
> * Create a bearer.
> * Connect the bearer.
So comparing with
-c, --connect Connect a given bearer.
the --simple-connect is actually more complex and includes the --connect in step 5, right?
Again, the help text along --connect is not very informative.
>
> The manual creation of the bearer and so on lets you do more
> "experienced" things, like e.g. creating multiple data bearers that
> may be connected in parallel to different APNs.
>
> NetworkManager, the main user of ModemManager, uses Simple.Connect()
> for example.
>
>>>
>>> See https://www.freedesktop.org/software/ModemManager/api/latest/gdbus-org.freedesktop.ModemManager1.Modem.Simple.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Connect
--connect sounds like a normal, full-featured connect while --simple-connect sounds not.
>>
>> So I had:
>> # mmcli --simple-status -m 2
>>
>> /org/freedesktop/ModemManager1/Modem/2
>> -------------------------
>> Status | state: 'connected'
>> | signal quality: '38' (recent)
>> | bands: 'unknown'
>> | access tech: 'lte'
>> -------------------------
>> 3GPP | registration: 'home'
>> | operator code: '23001'
>> | operator name: 'T-Mobile CZ'
>> | subscription: 'unknown'
>>
>> #
>
> The Simple Status just contains the main information that a normal
> user of ModemManager would require.
Only from you previous email I realized "mmcli -m 2" would give much ore useful information, and "without any --status or --full-status". ;-)
Martin
More information about the ModemManager-devel
mailing list