# OMA Device Management

OMA DM es un protocolo especificado por Open Mobile Alliance (OMA) para Device Management (DM), por el grupo de trabajo de Device Management y el grupo de trabajo de Data Synchronization (DS). La especificación actual es OMA DM versión 2.0, que incluye las últimas modificaciones en esta versión publicada en febrero de 2016.

## Visión General

La especificación OMA DM está diseñada para la gestión de dispositivos móviles pequeños como teléfonos móviles, PDAs y Palm Tops. La gestión de dispositivos pretende dar soporte a los siguientes usos típicos:
* Abastecimiento – Configuración del dispositivo (incluyendo el primer uso), habilitando y deshabilitando funciones
* Configuración del Dispositivo – Permite cambios en los ajustes y parámetros del dispositivo
* Mejoras de Software – Provee de nuevo software y/o parches para corrección de errores, para ser cargados en el dispositivo, incluyendo aplicaciones y software de sistema
* Gestión de Fallos – Informa sobre errores en el dispositivo, informa sobre el estado del dispositivo
La especificación OMA DM soporta todas las funciones anteriores y un dispositivo puede implementar opcionalmente todas o un subconjunto de estas características. Ya que la especificación OMA DM está orientada hacia dispositivos móviles, se ha diseñado para ser sensible ante:
* small foot-print devices, dispositivos en los que la memoria y el almacenamiento puede ser limitado
* ancho de banda de comunicación limitado, como en el caso de conectividad inalámbrica
* fuerte seguridad, ya que los dispositivos son vulnerables a ataques de virus y similares; autenticación y desafíos (authentication and challenges) se incluyen como parte de las especificaciones

## Descripción Técnica

OMA DM fue desarrollado originalmente por The SyncML Initiative (Iniciativa SyncML, en castellano) Ltd, un consorcio de industrias formado por varios fabricantes de dispositivos móviles. The SyncML Initiative se consolidó dentro de la organización de OMA tanto en el ámbito y el uso de la especificación, se fue expandiendo para incluir otros tantos dispositivos y soportar su uso globalizado.
Técnicamente OMA DM usa XML para el intercambio de datos, más específicamente el subconjunto definido por SyncML. El Device Management tiene lugar por comunicación entre el servidor (que controla el dispositivo) y el cliente (el dispositivo controlado).OMA DM está diseñado para soportar y utilizar un gran número de soportes para transporte de datos como:
* físicamente sobre cableado (USB, RS-232) y medios inalámbricos (GSM, CDMA, IrDA o Bluetooth)
* capas de transporte implementadas sobre cualquier WSP (WAP), HTTP u OBEX, o transportes similares
El protocolo de comunicación es un protocolo de tipo petición-respuesta (request-response, en inglés). La autenticación y desafío (authentication and challenge) están integrados para asegurar que el servidor y el cliente se comunican tras una validación correcta. Ambos servidor y cliente son dinámicos, lo que significa que necesitan intercambiar una secuencia específica de mensajes, solo después de que se complete la autenticación, para llevar a cabo cualquier tarea.
La comunicación es iniciada por el servidor OMA DM, asíncronamente, usando cualquiera de los métodos disponibles tales como WAP Push o SMS. El mensaje inicial que el servidor envía al cliente se hace en forma de notificación, o mensaje de alerta.
Una vez que se establece la comunicación entre el servidor y el cliente, una secuencia de mensajes puede ser intercambiada para completar una tarea de device management. OMA DM provee de alertas, que son mensajes que puede ocurrir fuera de secuencia, y que pueden ser inicializadas tanto por el servidor como por el cliente. Dichas alertas se usan para manejar errores, terminaciones anormales, etc.
Varios parámetros relacionados con la comunicación tales como el tamaño máximo de mensaje, pueden ser negociados entre el servidor y el cliente durante el comienzo de una sesión. A fin de transmitir objetos de gran tamaño, el protocolo permite que se envíen en partes más pequeñas.
La recuperación de errores basada en desconexión por tiempo no está especificada completamente, por lo tanto, las diferentes implementaciones pueden diferir (el protocolo no está enteramente especificado en relación con esto, y parece dejarlo pendiente intencionadamente).
El protocolo especifica el intercambio de paquetes durante una sesión, cada paquete consiste de varios mensajes y cada mensaje de uno más comandos sucesivamente. El servidor inicia los comandos y se espera que el cliente ejecute los comandos y devuelva el resultado vía mensaje de respuesta.

## Implementaciones y Uso

OMA DM es soportado por diferentes dispositivos móviles, como PDAs y teléfonos móviles. A pesar de que estas implementaciones están basadas en OMA DM, los fabricantes siguen empaquetándolo como una solución propietario, debido a la seguridad y la necesidad de un control estricto sobre la gestión del dispositivo (device management).
Existe software de código abierto para OMA DM:
* Un servidor open source OMA DM está disponible en funambol
* Una implementación de referencia del protocolo OMA DM ha sido creada por los patrocinadores originales de la iniciativa SyncML, conocida como Reference Toolkit (RTK). Se mantiene en sourceforge