Commit Graph

1369 Commits

Author SHA1 Message Date
Alexander Couzens cab919d699 udevng/gobi: improve debug output
Add info->sysattr and info->subsystem to the log message.
2017-05-04 12:37:34 -05:00
Luiz Augusto von Dentz 94839129d9 hfp_hf_bluez5: Rework code handling device changes
This splits the handling of device changes and modem registration so
they can be uses separately.
2017-05-04 12:34:31 -05:00
Luiz Augusto von Dentz cc41a2a4c0 hfp_hf: Handle ServicesResolved signal
This adds handling for ServicesResolved signal which tells when BlueZ
is done resolving the device services so the code will no longer ignore
devices that got its services resolved after Paired signal.
2017-05-01 10:45:25 -05:00
Luiz Augusto von Dentz bf005f5599 hfp_hf: Fix not creating modem during NewConnection
In case the UUIDs are not updated, as they are still being resolved, when
Paired property changes a modem will never be registered.

In order to fix this problem allow modems to be registered directly
during NewConnection.
2017-05-01 10:45:25 -05:00
Vincent Cesson ea0dfcc4ab gemalto: Set vendor for sms atom 2017-04-21 11:02:16 -05:00
Jonas Bonn e52d224d9a Add support for Quectel EC21/25 modems
This follows the same pattern as the Telit QMI modems, routing the
setup through a QMI driver.  I think this can be cleaned up somehow,
but for now this at least provides support for these two modem models
so that others can aid in testing.
2017-04-20 12:45:11 -05:00
Vincent Cesson 9cc3eaabf9 gemalto: Use sim_state_query for sim detection
Populate gemalto_data structure.
Add sim_state callbacks.
Fix enable/disable return value.
2017-04-20 12:43:28 -05:00
Vincent Cesson 920f77b770 gemalto: Change offline mode, keep USIM available
Gemalto has two airplane mode:
CFUN=0 disables USIM
CFUN=4 keeps USIM connected
2017-04-13 11:56:27 -05:00
Vincent Cesson 160a03e2bf gemalto: Clean post init functions
Remove inappropriate interfaces.
Move GPRS init from post_online to post_sim.
2017-04-13 11:55:15 -05:00
Jonas Bonn 174eddc80d udevng: remove 'option' driver setup
No driver named 'option' exists so this device can never be instantiated.
2017-03-31 18:15:19 -05:00
Jonas Bonn ed66682315 plugins: remove udev module
This functionality has been moved into the udevng module and was
already disabled in an earlier patch.
2017-03-29 09:56:32 -05:00
Jonas Bonn bf20f0df18 udevng: get properties from interface
Device properties are generally on the device, on the USB interface
descriptor, or the on the USB device descriptor.
2017-03-29 09:56:28 -05:00
Jonas Bonn 1b28cb5cc6 udevng: hook up legacy devices
...and disable old udev code by shorting it out in it's init() function.

The check_device function is augmented to differentiate between USB
and serial devices:

- if the device sits on a USB bus, the device is handled as before
- if not, an attempt is made to handle the device as a serial device
2017-03-29 09:55:51 -05:00
Jonas Bonn 90c8885f4f udevng: match on the hsi subsystem for legacy devices 2017-03-29 09:55:33 -05:00
Jonas Bonn 3ac449e25f udevng: add serial device handling functions
This adds, but does not hook up, support for simple serial modems.  These
modems generally have only a single device node so are simpler than the
USB devices which generally have different device nodes for different
functions.  These modems are currently handled by udev.c, but this
functionality will allow to remove that module completely in a later patch.

- A new "device_info" type is created called serial_device_info
- the function add_serial_device sets up a modem_info structure and a
  serial_device_info for the device
- A reference to the device's udev node is saved in the device info
- The device driver is retrieved from the OFONO_DRIVER environment variable
  which needs to be set up by some udev rule
- Setup functions are added for these types of devices: a common function
  setup_serial_modem covers the generic (simple) case, whereas modems
  with special requirements are given their own setup functions to handle
  the special bits
- Modem destroy needs to know the "device_info" type in order to clean
  up properly, so a 'type' value is set on the modem_info structure to
  guide selection of the proper cleanup function
2017-03-29 09:53:48 -05:00
Lukasz Nowak e1f42cb68a udevng: add Telit LE910 V1 support
Tested with LE910-SVG and Verizon.
2017-03-26 22:41:50 -05:00
Jonas Bonn 36be849043 udev: remove extraneous subsystem check
The enumeration construct is already set up with matches for these
subsystems.
2017-03-26 21:21:43 -05:00
Jonas Bonn 8c30bcf576 udev: simplify wavecom modem registration 2017-03-26 21:21:18 -05:00
Jonas Bonn 43e2be3574 udev: simplify ifx modem registration 2017-03-26 21:20:56 -05:00
Jonas Bonn 3c16db19e2 udev: add common modem registration code
Many of these drivers do exactly the same setup when registering
the modem.  Consolidate these setup functions into common code.
2017-03-26 21:19:46 -05:00
Jonas Bonn 55a4bbf7e3 udev: simplify add_modem
Adding a modem boils down to finding the device in the hierarchy with
the OFONO_DRIVER property.  The original code special-cased the property
being on the device itself rather than on a parent device.  This patch
combines the two cases.
2017-03-26 21:17:58 -05:00
Jonas Bonn 5a2591ce4d udev: remove unused modem property
The property 'Registered' is not used anywhere.
2017-03-26 20:50:50 -05:00
Jonas Bonn 428fdc7fb6 udev: get udev property via lib function 2017-03-26 20:50:36 -05:00
Jonas Bonn 0df3231f7f udev: remove extraneous subsystem check
The udev-monitor already guarantees that only devices with these
subsystems will be returned so we don't need to check again.
2017-03-26 20:49:34 -05:00
Jonas Bonn dd1e441966 ofono.rules: remove 'change' action
The code doesn't do anything with this action so don't bother setting
extra device properties for it.
2017-03-26 20:44:52 -05:00
Jonas Bonn 03e1ec2f66 udevng: simplify logic in check_usb_device
This patch simplifies and cleans up the check_usb_device function a bit
by doing the two following (slightly intertwined) things:

1)  The parent "usb_device" is searched for early in this function and this
device will always have the ID_VENDOR_ID and ID_MODEL_ID properties.
As such, we can get them from this device and thereby be certain that
we _always_ have them available.

2)  The logic of iterating the vendor_list table is cleaned up.  It's
easier to follow and won't be any less efficient.
2017-03-26 20:42:27 -05:00
Jonas Bonn b3b0cbb045 gobi: query presence of WDA service 2017-03-25 16:01:45 -05:00
Lukasz Nowak 988cec2fc2 gobi: Do not use low-power modes for some modems
Telit QMI modems have a problem with the low-power operating modes.
After entering and leaving such a state, UIM service does not return.
The sim card is still marked as powered-down. The QMI interface does
not have a way to power it back on.

To avoid this, keep modems with the "AlwaysOnline" flag online
in the disable-modem and offline-modem procedures.
2017-03-24 09:59:34 -05:00
Christophe Ronco 26aba4612c huawei: reopen modem channel if it disconnects
On E3372 after a GPRS disconnection, modem AT channel (used by PPP) gets
disconnected (G_IO_HUP and G_IO_ERR are detected in received_data
in gatio.c).
After that all connection attempts fail because we are not able to send
any AT commands on modem channel (it is closed).

With this patch, when this behavior is detected, we close gprs context
driver, reopen AT channel and gprs context driver.
2017-02-21 11:13:51 -06:00
Christophe Ronco 94fd4d804d provision: add plugin to provision from config file
This plugin allows to provision gprs-context data based on MCC and MNC.
This is useful when provisioning using mbpi fails (either because you
are using a private APN or because there are multiple internet type context
for your operator in mbpi database).
Config file is STORAGEDIR/provisioning.
Config file should look like that:
[operator:MCC1,MNC1]
internet.AccessPointName=apn1
internet.Username=myUsername
internet.Password=myPassword
internet.AuthenticationMethod=pap
internet.Protocol=ipv6
[operator:MCC2,MNC2]
internet.AccessPointName=apn2

The only mandatory parameter for each operator is internet.AccessPointName.

Parameter description:
internet.AccessPointName: APN
internet.Username: Username
internet.Password: Password
internet.AuthenticationMethod: authentication method.
 Possible values are:
  - pap
  - chap
 Default is chap if unset.
internet.Protocol: protocol
 Possible values are:
  - ip: ipv4
  - ipv6
  - dual
 Default is ip if not set.

All parameters are prefixed with internet to be able to extend this plugin
to other type of contexts (MMS, ...).
2017-02-21 11:08:27 -06:00
Piotr Haber 69c67fce7f telit: register SIM if it goes straight to ready
SIM without PIN goes straight to state 3 (INSERTED and READY)
on some modem/firmware versions.
2017-02-08 10:55:09 -06:00
André Draszik 177e39e44b plugins: telit: send AT&C0 on both channels
At least firmware version 12.00.405 on the UE910-EUR otherwise
closes the AT command port whenever the PPP connection is
dropped, and we'd be left in a funny state.
2017-02-07 10:58:07 -06:00
Antara Borwankar 61453d8688 ril_intel: Add support for stk 2017-02-07 10:56:57 -06:00
Piotr Haber 3ae33b2dd6 telit: add support for UE866 2017-02-02 11:58:51 -06:00
Piotr Haber 5c0a8e531e udevng: unify telit and xe910
Unified setup for Telit devices using
usbserial and cdc_acm drivers.
2017-02-02 11:58:13 -06:00
Piotr Haber ccd49f3fe6 plugins: rename xe910 to telit
Unify old telit and xe910 plugins.
Dropping support for Bluetooth SAP.
Add support for UC864 family.
2017-02-02 11:51:19 -06:00
Piotr Haber 6e4bf596e9 xe910: support for Telit LE910V2 modem
LE910V2 is next generation Telit LTE modem.
It supports 3GPP Rel. 9 LTE Cat. 4 over multiple bands.
2017-01-27 20:37:05 -06:00
Piotr Haber 0a7e4c0716 udevng: setup of Telit LE910V2
Setup LE910V2 in default USB composition (1bc7:0036)
with 6 CDC-ACM serial ports and 1 CDC-NCM network adapter.
2017-01-27 20:22:59 -06:00
Piotr Haber a88aaaac17 plugins: Handle HE910 and UE910 variants
Telit modems HE910 and UE910 share the same USB
vendor and device IDs (1bc7:0021) but they are
different devices.
HE910 is HSPA Class 14/6 and UE910 is Class 8/6.
Both come in voice-enabled variants.
HE910 also comes in variants with built-in GPS.
2017-01-26 13:29:40 -06:00
Piotr Haber 36d18310df plugins: rename he910 to xe910
In preparation for more generic support
of Telit xE910 family.
2017-01-26 13:10:18 -06:00
Vincent Cesson 8d330087cf gemalto: Add location reporting support 2017-01-19 13:34:45 -06:00
Vincent Cesson e8c80cbe8b udevng: complete gemalto setup
Complete the Gemalto setup with cdc_wdm and qmi,
so all enumerated devices are associated with gemalto.
2017-01-18 20:19:17 -06:00
Vincent Cesson 92c4b831dc udevng: Add Gemalto P-family detection
Add a new function setup, based on telit, to handle Gemalto P-family
discovery. The setup looks for USB interfaces:
application=/dev/ttyUSB2
gps=/dev/ttyUSB1
modem=/dev/ttyUSB3
2017-01-16 22:25:16 -06:00
Vincent Cesson 85c49528d0 plugins: Add Gemalto plugin for Cinterion P-family
Actual cinterion plugin is not compliant with newer Gemalto modems.
Gemalto plugin is based on cinterion with a custom struct to handle the
interfaces Application and Modem.
2017-01-16 22:25:16 -06:00
Christophe Ronco 4b38259a6f udevng: Sierra modems use SIM driver 2017-01-10 11:26:23 -06:00
Antara Borwankar 343f8cb48a ril_intel: changes for lte modem
plugin modified to bring up lte atom and set MODEM_PROP_LTE_CAPABLE
to TRUE
2016-12-12 21:34:17 -06:00
Antara Borwankar dc1f7bf67e ril_intel: renamed ril_sofia3gr to ril_intel
renamed ril_sofia3gr.c to ril_intel.c
2016-12-12 21:34:02 -06:00
Djalal Harouni ee0ca53a33 ubloxmodem: register and initialize the netmon driver 2016-12-01 11:22:31 -06:00
Dragos Tatulea 919e0b95ac plugins: ublox: enable lte driver for tobyl2 2016-11-15 13:46:04 -06:00
Kuba Pawlak de58109933 bluez5: fix crash on DBus transport disconnection
Do not register dbus notification if message failed to be sent out
because transport was already disconnected
2016-11-10 10:18:26 -06:00
Frédéric Dalleau 3079ccad45 udevng: Detect huawei E3372 modem and pcui
When the modes are modified with AT^SETPORT="FF;12,1,16", this modem
and pcui will appear using different ids. Update the interfaces
identifier accordingly.
2016-09-29 10:59:21 -05:00
Frédéric Dalleau 1978934740 udevng: Detect huawei E3372 pcui
The huawei E3372 exposes two USB tty at /dev/ttyUSB0 and /dev/ttyUSB1
/dev/ttyUSB1 is properly detected as modem.
/dev/ttyUSB0 is the pcui.

lsusb shows 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
2016-09-29 10:58:47 -05:00
Ankit Navik b1baea9830 ril_sofia3gr: use vendor modem power down command 2016-07-07 11:59:47 -05:00
Denis Kenzior f420aea458 allowed-apns: Fix crash
When a modem is being removed, all of the modem's atom watches have
already been cleaned up.  Trying to remove it again results in a crash.

Fix by registering a destroy callback which will be notified when the
atomwatch has been removed.
2016-06-06 11:01:17 -05:00
Nishanth V ff7837b054 plugins: Fix allowed apn plugin exit 2016-05-26 09:27:01 -05:00
Rajagopal Aravindan a8d084dcf0 ril_sofia3gr: Add transmit power throttling
Added 'sofia3gr.ThermalManagement' interface to sofia3gr plugin and
floated 'TransmitPowerThrottling' as an ofono property under that,
to support modem throttling.

'sofia3gr.ThermalManagement'
    1.Will be available ONLY if modem throttling is supported in RIL.
      This is determined by sending a RIL request during ofono start,
      to get current throttling state. If it succeeds, interface is
      published otherwise not.

'TransmitPowerThrottling'
    1.GetProperties will be allowed both when modem is ON & OFF.
    2.GetProperties will be serviced by looking it up from state
      information maintained inside ofono. No RIL call will be made.
    3.SetProperty will be allowed ONLY when modem is ON.
    4.SetProperty request will be forwarded to RIL ONLY if
      new state != current state. If RIL request succeeds, state
      information will be updated and also, a property change signal
      will be emitted.
2016-05-24 11:01:43 -05:00
Caiwen Zhang b8a79b605e plugins/ril: enable cbs 2016-05-19 10:30:13 -05:00
Samrat Guha Niyogi 5a03102192 ril_sofia3gr: Return -EINPROGRESS on disable() 2016-05-18 12:15:41 -05:00
Caiwen Zhang 6c328f8529 plugins/ril: complete modem power off process 2016-05-13 20:54:56 -05:00
Caiwen Zhang ca8c3ff22b plugins/ril: enable STK 2016-05-03 11:14:43 -05:00
Denis Kenzior 5b80335573 gobi: Fix warning
plugins/gobi.c: In function ‘gobi_pre_sim’:
plugins/gobi.c:431:2: error: ‘sim_driver’ may be used uninitialized in
this function [-Werror=maybe-uninitialized]
  ofono_sim_create(modem, 0, sim_driver, data->device);
    ^
2016-05-03 11:12:19 -05:00
Denis Kenzior 2b64d31fbc udevng: Fixup various minor style issues 2016-05-03 11:09:24 -05:00
Martin Chaplet 4005e87923 udevng: Add support for Sierra MC73xx QMI modems
Udevng layer is changed in order to support Sierra QMI modems like
MC73cxx. Identically to Huawei modems, these modems are parsed by
setup_sierra. If QMI interface is detected, the Gobi modem driver is
selected.

Unfortunately, MC73xx chips seem to have a broken QMI UIM interface.
The qmimodem-legacy is so forced in setup function.
2016-05-03 11:06:04 -05:00
Martin Chaplet d415265a69 udevng: Improve modem properties detection
* Add driver's subsystem information (net, usb, tty, ...)
 * Improve interface number extraction by scanning also device and
 parent attributes
2016-05-03 11:04:58 -05:00
Martin Chaplet be1190b2cf gobi: Enable SIM driver forcing
Some gobi devices do not actually support UIM interface.  So if the
"ForceSimLegacy" property is set, force the qmimodem-legacy SIM driver.
2016-05-03 11:03:41 -05:00
Martin Chaplet 9e50d14e40 udevng: Add usbmisc scan for QMI devices
cdc-wdm0 are now usbmisc devices
2016-05-02 10:11:24 -05:00
Denis Kenzior 55729d68fb ril_sofia3gr: Add quirk to radio_settings atom 2016-04-25 15:27:37 -05:00
John Ernberg 875968d270 smart-messaging: Use g_slist_free_full 2016-04-22 15:26:34 -05:00
John Ernberg 27b3d904ea bluez4: Remove unneeded casts 2016-04-22 15:25:54 -05:00
Caiwen Zhang 15a5660d58 plugins/ril: Move GPRS atom to 'post_online' state
At gprs atom 'probe' state, max cid query may fail due to rild
status isn't RADIO_STATUS_ON. It causes gprs atom is removed, gprs
feature is inavailable. Move gprs atom creating to 'post_online'
state to make sure rild status is RADIO_STATUS_ON when query max
cid.
2016-04-22 14:19:47 -05:00
Nishanth V 72eb1d7b5f plugins: Add allowed apn list 2016-04-21 10:01:53 -05:00
Kuba Pawlak dee50a7565 plugins/nokia-gpio: fix glibc 2.23.9+ issues
readdir_r’ is deprecated [-Werror=deprecated-declarations]
2016-04-18 09:58:21 -05:00
Nishanth V 8c88c307ca sofia3gr: Add netmon support 2016-03-31 10:00:27 -05:00
Denis Kenzior a57743ac25 sofia3gr: Fix style issue 2016-03-22 10:28:33 -05:00
Anirudh Gargi 28455e5cd7 sofia3gr: Enable vendor type in SMS driver 2016-03-22 10:27:57 -05:00
Dragos Tatulea 8d8333cc21 ublox: support more internet contexts
Create multiple gprs-context instances and let the gprs core use
them as it sees fit.

Only for Toby L2.
2016-03-17 09:53:51 -05:00
Dragos Tatulea 50133ac0f4 ublox: enable ubloxmodem driver when possible
Where possible means Toby L2 in high speed mode.

The bridge mode is set before enabling the modem because the
driver requires this.
2016-03-17 09:52:23 -05:00
Dragos Tatulea 82fb20d707 ublox: give names to model ids
To make it easier to understand the code.
2016-03-17 09:40:59 -05:00
Denis Kenzior 5b6ac8c14f ublox: devinfo atom driver has no vendor behavior 2016-03-16 13:18:28 -05:00
Dragos Tatulea c0c2ae87ab ublox: use vendor from structure instead of fixed
That's because we need to differentiate between multiple ublox
devices.
2016-03-16 13:12:49 -05:00
Dragos Tatulea ae74d4ccd6 ublox: allow enabling of TOBY L2 modems
For this we need to:
* Set the vendor family based on model id.
* Not use modem interface for the TOBY L2 family.
2016-03-16 13:10:29 -05:00
Dongsu Park 5d8f5228ca udevng: Support U-blox TOBY series of devices
Each modem expresses their interfaces with its own interface string,
which is composed of 3 different USB attributes:
"bInterfaceClass/bInterfaceSubClass/bInterfaceProtocol".
While the old models like LISA support only "2/2/1" for modem
interfaces, TOBY-L2 also supports an unique string for NetworkInterface
for each profile.

* low-medium throughput profile : 2/6/0
* fairly backward-compatible profile : 10/0/0
* high throughput profile : 224/1/3

Besides the condition for checking NULL for mdm/aux/net should be relaxed
a little bit.
2016-03-16 12:59:51 -05:00
Denis Kenzior b1017670f5 ril_sofia3gr: Fix warning 2016-03-16 12:59:51 -05:00
Samrat Guha Niyogi ef36ca7a24 ril_sofia3gr: add ussd atom to post_online 2016-03-16 12:51:26 -05:00
Denis Kenzior 5133bd2818 udevng: Move from setup_icera to setup_ublox
As intended by 126b04
2016-03-11 14:08:18 -06:00
Dragos Tatulea 126b0424d3 plugins/udevng: ublox: set model string
Necessary for supporting the ublox TOBY L2 modem.
2016-03-10 08:03:20 -06:00
Dongsu Park 56ff134721 plugins/udevng: support the U-Blox TOBY-L2 series
The newest generation of U-Blox TOBY-L2 series can be detected with
VID 0x1546 (the same as before), and one of the following PIDs:

* "0x1146" : high throughput profile
* "0x1141" : fairly back-compatible profile
* "0x1143" : low/medium throughput profile

This patch adds detection for high throughput mode.
2016-03-09 11:23:52 -06:00
Denis Kenzior 6df0655aa3 ril_sofia3gr: Add radio_settings atom 2016-01-05 10:38:54 -06:00
Tony Espy dd16d4d1b5 plugins: add upower battery monitor for bluetooth 2015-12-18 09:53:38 -06:00
Denis Kenzior d9ed2eab19 ril: Use g_ril_new_with_ucred 2015-12-16 11:39:53 -06:00
Denis Kenzior 1f98d96079 plugins: Add sofia3GR ril driver 2015-12-15 17:17:53 -06:00
Denis Kenzior f1f657b6da stktest: Remove usage of decode_at_error
Otherwise the build fails when building without atmodem support
2015-12-15 17:17:15 -06:00
Denis Kenzior 9c7856efa0 ril: Get rid of ril_gprs_context_data 2015-12-13 22:20:58 -06:00
Denis Kenzior b69bb1116e ril: Don't use ril_sim_data 2015-12-13 21:30:14 -06:00
Denis Kenzior d7cb11a363 ril: Don't include grilunsol.h 2015-12-04 13:43:28 -06:00
Denis Kenzior 001701caee ril: Get rid of gprs_driver_data 2015-12-03 13:08:48 -06:00
Denis Kenzior 6e0ce5ece5 ril: Don't include grilreply.h 2015-12-03 11:40:47 -06:00
Denis Kenzior 86d7a8d6f0 ril: Remove grilrequest.h 2015-12-03 10:20:24 -06:00
Tony Espy 72ddf14046 plugins: rm unneeded exits/sleeps from ril plugin 2015-11-19 16:30:32 -06:00
Tony Espy a35de9c0c9 ril: remove unecessary sleep from ril plugin 2015-11-17 20:50:17 -06:00