diff --git a/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager-1.4.12/0001-gobi-remove-plugin.patch b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager-1.4.12/0001-gobi-remove-plugin.patch new file mode 100644 index 000000000..4e0fd72ac --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager-1.4.12/0001-gobi-remove-plugin.patch @@ -0,0 +1,384 @@ +From 57b5ffa8c4a7fdd48a8ae944010422a4754654d2 Mon Sep 17 00:00:00 2001 +From: Aleksander Morgado +Date: Mon, 16 Feb 2015 17:36:12 +0100 +Subject: [PATCH 1/2] gobi: remove plugin + +There's no real need for a custom Gobi plugin any more. All the vendor-specific +Gobi-powered modems should be handled by vendor-provided plugins supporting QMI +modems; or otherwise, as a last resort, by the generic plugin. +--- + plugins/Makefile.am | 10 --- + plugins/gobi/mm-broadband-modem-gobi.c | 124 --------------------------------- + plugins/gobi/mm-broadband-modem-gobi.h | 49 ------------- + plugins/gobi/mm-plugin-gobi.c | 95 ------------------------- + plugins/gobi/mm-plugin-gobi.h | 41 ----------- + 5 files changed, 319 deletions(-) + delete mode 100644 plugins/gobi/mm-broadband-modem-gobi.c + delete mode 100644 plugins/gobi/mm-broadband-modem-gobi.h + delete mode 100644 plugins/gobi/mm-plugin-gobi.c + delete mode 100644 plugins/gobi/mm-plugin-gobi.h + +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index 89b1ac3..1e30b1a 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -126,7 +126,6 @@ pkglib_LTLIBRARIES = \ + libmm-plugin-nokia-icera.la \ + libmm-plugin-cinterion.la \ + libmm-plugin-iridium.la \ +- libmm-plugin-gobi.la \ + libmm-plugin-motorola.la \ + libmm-plugin-novatel.la \ + libmm-plugin-novatel-lte.la \ +@@ -174,15 +173,6 @@ libmm_plugin_motorola_la_SOURCES = \ + libmm_plugin_motorola_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS) + libmm_plugin_motorola_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS) + +-# Gobi +-libmm_plugin_gobi_la_SOURCES = \ +- gobi/mm-plugin-gobi.c \ +- gobi/mm-plugin-gobi.h \ +- gobi/mm-broadband-modem-gobi.c \ +- gobi/mm-broadband-modem-gobi.h +-libmm_plugin_gobi_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS) +-libmm_plugin_gobi_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS) +- + # Huawei + libmm_plugin_huawei_la_SOURCES = \ + huawei/mm-plugin-huawei.c \ +diff --git a/plugins/gobi/mm-broadband-modem-gobi.c b/plugins/gobi/mm-broadband-modem-gobi.c +deleted file mode 100644 +index 27aded2..0000000 +--- a/plugins/gobi/mm-broadband-modem-gobi.c ++++ /dev/null +@@ -1,124 +0,0 @@ +-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details: +- * +- * Copyright (C) 2008 - 2009 Novell, Inc. +- * Copyright (C) 2009 - 2011 Red Hat, Inc. +- * Copyright (C) 2011 - 2012 Google Inc. +- */ +- +-#include +- +-#include +-#include +-#include +-#include +-#include +- +-#include "ModemManager.h" +-#include "mm-modem-helpers.h" +-#include "mm-serial-parsers.h" +-#include "mm-log.h" +-#include "mm-errors-types.h" +-#include "mm-iface-modem.h" +-#include "mm-iface-modem-3gpp.h" +-#include "mm-base-modem-at.h" +-#include "mm-broadband-modem-gobi.h" +- +-static void iface_modem_init (MMIfaceModem *iface); +- +-G_DEFINE_TYPE_EXTENDED (MMBroadbandModemGobi, mm_broadband_modem_gobi, MM_TYPE_BROADBAND_MODEM, 0, +- G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)); +- +-/*****************************************************************************/ +-/* Load access technologies (Modem interface) */ +- +-static gboolean +-load_access_technologies_finish (MMIfaceModem *self, +- GAsyncResult *res, +- MMModemAccessTechnology *access_technologies, +- guint *mask, +- GError **error) +-{ +- const gchar *p; +- const gchar *response; +- +- response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error); +- if (!response) +- return FALSE; +- +- p = mm_strip_tag (response, "*CNTI:"); +- p = strchr (p, ','); +- if (p) { +- /* We are reporting ALL 3GPP access technologies here */ +- *access_technologies = mm_string_to_access_tech (p + 1); +- *mask = MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK; +- return TRUE; +- } +- +- g_set_error (error, +- MM_CORE_ERROR, +- MM_CORE_ERROR_FAILED, +- "Couldn't parse access technologies result: '%s'", +- response); +- return FALSE; +-} +- +-static void +-load_access_technologies (MMIfaceModem *self, +- GAsyncReadyCallback callback, +- gpointer user_data) +-{ +- mm_base_modem_at_command (MM_BASE_MODEM (self), +- "*CNTI=0", +- 3, +- FALSE, +- callback, +- user_data); +-} +- +-/*****************************************************************************/ +- +-MMBroadbandModemGobi * +-mm_broadband_modem_gobi_new (const gchar *device, +- const gchar **drivers, +- const gchar *plugin, +- guint16 vendor_id, +- guint16 product_id) +-{ +- return g_object_new (MM_TYPE_BROADBAND_MODEM_GOBI, +- MM_BASE_MODEM_DEVICE, device, +- MM_BASE_MODEM_DRIVERS, drivers, +- MM_BASE_MODEM_PLUGIN, plugin, +- MM_BASE_MODEM_VENDOR_ID, vendor_id, +- MM_BASE_MODEM_PRODUCT_ID, product_id, +- NULL); +-} +- +-static void +-mm_broadband_modem_gobi_init (MMBroadbandModemGobi *self) +-{ +-} +- +-static void +-iface_modem_init (MMIfaceModem *iface) +-{ +- iface->load_access_technologies = load_access_technologies; +- iface->load_access_technologies_finish = load_access_technologies_finish; +- +- iface->modem_power_down = NULL; +- iface->modem_power_down_finish = NULL; +-} +- +-static void +-mm_broadband_modem_gobi_class_init (MMBroadbandModemGobiClass *klass) +-{ +-} +diff --git a/plugins/gobi/mm-broadband-modem-gobi.h b/plugins/gobi/mm-broadband-modem-gobi.h +deleted file mode 100644 +index 4164cfe..0000000 +--- a/plugins/gobi/mm-broadband-modem-gobi.h ++++ /dev/null +@@ -1,49 +0,0 @@ +-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details: +- * +- * Copyright (C) 2008 - 2009 Novell, Inc. +- * Copyright (C) 2009 - 2011 Red Hat, Inc. +- * Copyright (C) 2011 Google Inc. +- */ +- +-#ifndef MM_BROADBAND_MODEM_GOBI_H +-#define MM_BROADBAND_MODEM_GOBI_H +- +-#include "mm-broadband-modem.h" +- +-#define MM_TYPE_BROADBAND_MODEM_GOBI (mm_broadband_modem_gobi_get_type ()) +-#define MM_BROADBAND_MODEM_GOBI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_BROADBAND_MODEM_GOBI, MMBroadbandModemGobi)) +-#define MM_BROADBAND_MODEM_GOBI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_BROADBAND_MODEM_GOBI, MMBroadbandModemGobiClass)) +-#define MM_IS_BROADBAND_MODEM_GOBI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_BROADBAND_MODEM_GOBI)) +-#define MM_IS_BROADBAND_MODEM_GOBI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_BROADBAND_MODEM_GOBI)) +-#define MM_BROADBAND_MODEM_GOBI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_BROADBAND_MODEM_GOBI, MMBroadbandModemGobiClass)) +- +-typedef struct _MMBroadbandModemGobi MMBroadbandModemGobi; +-typedef struct _MMBroadbandModemGobiClass MMBroadbandModemGobiClass; +- +-struct _MMBroadbandModemGobi { +- MMBroadbandModem parent; +-}; +- +-struct _MMBroadbandModemGobiClass{ +- MMBroadbandModemClass parent; +-}; +- +-GType mm_broadband_modem_gobi_get_type (void); +- +-MMBroadbandModemGobi *mm_broadband_modem_gobi_new (const gchar *device, +- const gchar **drivers, +- const gchar *plugin, +- guint16 vendor_id, +- guint16 product_id); +- +-#endif /* MM_BROADBAND_MODEM_GOBI_H */ +diff --git a/plugins/gobi/mm-plugin-gobi.c b/plugins/gobi/mm-plugin-gobi.c +deleted file mode 100644 +index 823b95d..0000000 +--- a/plugins/gobi/mm-plugin-gobi.c ++++ /dev/null +@@ -1,95 +0,0 @@ +-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details: +- * +- * Copyright (C) 2008 - 2009 Novell, Inc. +- * Copyright (C) 2011 Red Hat, Inc. +- */ +- +-#include +-#include +- +-#define _LIBMM_INSIDE_MM +-#include +- +-#include "mm-plugin-gobi.h" +-#include "mm-broadband-modem-gobi.h" +-#include "mm-log.h" +- +-#if defined WITH_QMI +-#include "mm-broadband-modem-qmi.h" +-#endif +- +-G_DEFINE_TYPE (MMPluginGobi, mm_plugin_gobi, MM_TYPE_PLUGIN) +- +-int mm_plugin_major_version = MM_PLUGIN_MAJOR_VERSION; +-int mm_plugin_minor_version = MM_PLUGIN_MINOR_VERSION; +- +-/*****************************************************************************/ +- +-static MMBaseModem * +-create_modem (MMPlugin *self, +- const gchar *sysfs_path, +- const gchar **drivers, +- guint16 vendor, +- guint16 product, +- GList *probes, +- GError **error) +-{ +-#if defined WITH_QMI +- if (mm_port_probe_list_has_qmi_port (probes)) { +- mm_dbg ("QMI-powered Gobi modem found..."); +- return MM_BASE_MODEM (mm_broadband_modem_qmi_new (sysfs_path, +- drivers, +- mm_plugin_get_name (self), +- vendor, +- product)); +- } +-#endif +- +- return MM_BASE_MODEM (mm_broadband_modem_gobi_new (sysfs_path, +- drivers, +- mm_plugin_get_name (self), +- vendor, +- product)); +-} +- +-/*****************************************************************************/ +- +-G_MODULE_EXPORT MMPlugin * +-mm_plugin_create (void) +-{ +- static const gchar *subsystems[] = { "tty", "net", "usb", NULL }; +- static const gchar *drivers[] = { "qcserial", NULL }; +- +- return MM_PLUGIN ( +- g_object_new (MM_TYPE_PLUGIN_GOBI, +- MM_PLUGIN_NAME, "Gobi", +- MM_PLUGIN_ALLOWED_SUBSYSTEMS, subsystems, +- MM_PLUGIN_ALLOWED_DRIVERS, drivers, +- MM_PLUGIN_ALLOWED_AT, TRUE, +- MM_PLUGIN_ALLOWED_QCDM, TRUE, +- MM_PLUGIN_ALLOWED_QMI, TRUE, +- NULL)); +-} +- +-static void +-mm_plugin_gobi_init (MMPluginGobi *self) +-{ +-} +- +-static void +-mm_plugin_gobi_class_init (MMPluginGobiClass *klass) +-{ +- MMPluginClass *plugin_class = MM_PLUGIN_CLASS (klass); +- +- plugin_class->create_modem = create_modem; +-} +diff --git a/plugins/gobi/mm-plugin-gobi.h b/plugins/gobi/mm-plugin-gobi.h +deleted file mode 100644 +index c47b172..0000000 +--- a/plugins/gobi/mm-plugin-gobi.h ++++ /dev/null +@@ -1,41 +0,0 @@ +-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details: +- * +- * Copyright (C) 2008 - 2009 Novell, Inc. +- * Copyright (C) 2009 Red Hat, Inc. +- */ +- +-#ifndef MM_PLUGIN_GOBI_H +-#define MM_PLUGIN_GOBI_H +- +-#include "mm-plugin.h" +- +-#define MM_TYPE_PLUGIN_GOBI (mm_plugin_gobi_get_type ()) +-#define MM_PLUGIN_GOBI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PLUGIN_GOBI, MMPluginGobi)) +-#define MM_PLUGIN_GOBI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_PLUGIN_GOBI, MMPluginGobiClass)) +-#define MM_IS_PLUGIN_GOBI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_PLUGIN_GOBI)) +-#define MM_IS_PLUGIN_GOBI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_PLUGIN_GOBI)) +-#define MM_PLUGIN_GOBI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_PLUGIN_GOBI, MMPluginGobiClass)) +- +-typedef struct { +- MMPlugin parent; +-} MMPluginGobi; +- +-typedef struct { +- MMPluginClass parent; +-} MMPluginGobiClass; +- +-GType mm_plugin_gobi_get_type (void); +- +-G_MODULE_EXPORT MMPlugin *mm_plugin_create (void); +- +-#endif /* MM_PLUGIN_GOBI_H */ +-- +1.9.1 + diff --git a/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager-1.4.12/cellularifupdown b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager-1.4.12/cellularifupdown new file mode 100644 index 000000000..a13d78ffd --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager-1.4.12/cellularifupdown @@ -0,0 +1,58 @@ +#!/bin/sh + +RETRIES=12 +POLLING_WAIT=5 + +# Run only for cellular network interfaces +[ -z "${IF_APN}" ] && exit 0 + +background_connect() { + # Ensure ModemManager is running + killall -0 ModemManager 2>/dev/null || ModemManager --log-file=/dev/null & + + # Wait for modem detection + while [ "${RETRIES}" -gt "0" ]; do + mmcli -m 0 > /dev/null 2>&1 && break + sleep ${POLLING_WAIT} + RETRIES="$((RETRIES - 1))" + done + + # Abort if no modem detected + if [ "$RETRIES" -eq "0" ]; then + logger -s -p error -t modemmanager "No modem detected"; + exit + fi + + ARGS="apn=${IF_APN}" + [ -n "${IF_PIN}" ] && ARGS="${ARGS},pin=${IF_PIN}" + + [ -n "${IF_USER}" ] && ARGS="${ARGS},user=${IF_USER}" + [ -n "${IF_PASSWORD}" ] && ARGS="${ARGS},password=${IF_PASSWORD}" + [ -n "${IF_PORT}" ] && ARGS="${ARGS},number=*99#" + + # Enable the modem and connect to provider + mmcli -m 0 --simple-connect=${ARGS} > /dev/null 2>&1 + + # For serial modems, pppd creates the network interface + # Otherwise, get an IP with udhcpc + if [ -n "${IF_PORT}" ]; then + pppd ${IF_PORT} call mm_cellular > /dev/null 2>&1 + else + udhcpc -q -i ${IFACE} + fi + + ifconfig ${IFACE} up +} + + +if [ "$MODE" = "start" ]; then + background_connect & +elif [ "$MODE" = "stop" ]; then + # If a call number was used, destroy the network interface + [ -n "${IF_PORT}" ] && poff mm_cellular + + ifconfig ${IFACE} down + + # Disconnect and disable the modem + mmcli -m 0 -d > /dev/null 2>&1 +fi diff --git a/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager_1.4.12.bb b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager_1.4.12.bb new file mode 100644 index 000000000..f8dd66de5 --- /dev/null +++ b/meta-digi-dey/recipes-connectivity/modemmanager/modemmanager_1.4.12.bb @@ -0,0 +1,54 @@ +SUMMARY = "ModemManager is a daemon controlling broadband devices/connections" +DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections" +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/" +LICENSE = "GPLv2 & LGPLv2.1" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \ +" + +inherit autotools gettext gtk-doc systemd + +DEPENDS = "glib-2.0 libmbim libqmi udev dbus-glib" + +SRC_URI = " \ + http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz \ + file://cellularifupdown \ + file://0001-gobi-remove-plugin.patch \ +" + +SRC_URI[md5sum] = "66cc7266b15525cb366253e6639fc564" +SRC_URI[sha256sum] = "7ef5035375a953b285a742591df0a65fd442f4641ce4d8f4392a41d6d6bc70b3" + +S = "${WORKDIR}/ModemManager-${PV}" + +EXTRA_OECONF = "--with-polkit=none" + +FILES_${PN} += " \ + ${datadir}/icons \ + ${datadir}/polkit-1 \ + ${libdir}/ModemManager \ + ${systemd_unitdir}/system \ +" + +FILES_${PN}-dev += " \ + ${datadir}/dbus-1 \ + ${libdir}/ModemManager/*.la \ +" + +FILES_${PN}-staticdev += " \ + ${libdir}/ModemManager/*.a \ +" + +FILES_${PN}-dbg += "${libdir}/ModemManager/.debug" + +SYSTEMD_SERVICE_${PN} = "ModemManager.service" +# no need to start on boot - dbus will start on demand +SYSTEMD_AUTO_ENABLE = "disable" + +do_install_append() { + # Install ifupdown script for cellular interfaces + install -d ${D}${sysconfdir}/network/if-pre-up.d/ ${D}${sysconfdir}/network/if-post-down.d/ + install -m 0755 ${WORKDIR}/cellularifupdown ${D}${sysconfdir}/network/if-pre-up.d/ + ln -sf ../if-pre-up.d/cellularifupdown ${D}${sysconfdir}/network/if-post-down.d/cellularifupdown +}