(19)
(11) EP 2 348 696 A1

(12) EUROPEAN PATENT APPLICATION

(43) Date of publication:
27.07.2011 Bulletin 2011/30

(21) Application number: 09306298.2

(22) Date of filing: 21.12.2009
(51) International Patent Classification (IPC): 
H04M 1/725(2006.01)
H01Q 1/22(2006.01)
(84) Designated Contracting States:
AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR
Designated Extension States:
AL BA RS

(71) Applicant: Gemalto SA
92190 Meudon (FR)

(72) Inventor:
  • Delsuc, Julien
    13013 Marseille (FR)

   


(54) Dongle for enhancing capabilities of peripheral devices


(57) The invention relates to a dongle (D), comprising:
-a microcontroller (MC);
-a USB host interface (D2);
-a wireless communication interface (D1);
-a Javacard compliant virtual machine (JVM) to be executed by said microcontroller (MC);
-a Javacard driver framework (LI) enabling the development of Javacard coded drivers;
-a software driver (DR):
-coded according to a Javacard specification and using the Javacard driver framework;
-comprising at least one function for controlling a peripheral device to be connected to said USB interface;
-adapted to declare said function and its parameters to another dongle through said wireless communication interface.






Description


[0001] The present invention relates to common use peripheral devices. The invention relates more particularly to peripheral devices having a USB interface through which they are controlled by a computer or to peripheral devices in the area of domotics and internet of things.

[0002] Many computer peripheral devices, like webcams, have either limited functions or require to be controlled by complex applications run on a computer or on dedicated control circuits. For instance, extending the use of webcams for home video surveillance requires expensive control equipments. Thus, the distribution of such devices is not as wide as it could be.

[0003] On the other hand, domestic appliances remain mostly controlled directly by the end user. Domotic solutions are developed in order to provide an automatic management of domestic appliances to the user. Such appliances can for instance be windows shutters, cookers, refrigerators or doors. Most of the domotic solutions require specific appliances as well as an expensive and complex control equipment. Thus, the installation of a domotic solution involves a significantly higher cost than the use of end user controlled domestic appliances. This is a major obstacle to wider distribution of appliances designed for domotic applications.

[0004] It is therefore an object of the present invention to provide a dongle, comprising:
  • a microcontroller;
  • a USB host interface;
  • a wireless communication interface;
  • a Javacard compliant virtual machine to be executed by said microcontroller;
  • a javacard driver framework enabling the development of javacard coded drivers;
  • a software driver:
    • coded according to a Javacard specification and using the Javacard driver framework;
    • comprising at least one function for controlling a peripheral device to be connected to said USB interface;
    • adapted to declare said function and its parameters to another dongle through said wireless communication interface.


[0005] The dongle may comprise a Javacard applet including a function for controlling a peripheral device not directly connected to the dongle, said Javacard applet, when it is executed and if a predetermined signal is received by the dongle on its USB interface, is adapted to send a message including a call to said function along with its execution parameters through the wireless interface to another dongle connected to this peripheral device.

[0006] Said driver may be adapted to apply a command to a peripheral device connected to its USB host interface when a call to its function and its execution parameters are received on the wireless communication interface.

[0007] The virtual machine is compliant with the Javacard specification.

[0008] The dongle may comprise a writable non volatile memory and a communication interface through which applets or drivers can be loaded into the writable non volatile memory in order to be executed by said Javacard virtual machine.

[0009] The invention also relates to a set of dongles, comprising at least two dongles as recited before, wherein a first dongle stores a software driver for controlling a first peripheral device connected to its USB interface and wherein a second dongle stores a software driver for controlling a second peripheral device connected to its USB interface, wherein the second dongle stores a Javacard applet being adapted, when it is executed and if a predetermined signal is received by said second dongle on its USB interface, to send a message including a call to said function along with execution parameters through the wireless interface to the first dongle.

[0010] The invention further relates to a method for providing the control of a peripheral device to another device, comprising a step in which a first dongle as recited before and connected to the peripheral device by its USB interface declares said function for controlling the peripheral device through its wireless interface to a second dongle as recited before, said dongle storing an applet calling the declared function when executed and being connected to said other device.

[0011] In a further embodiment:
  • said second dongle receives a predetermined signal from said other device and responsive thereto, the Javacard applet of the second dongle sends a message including a call to said function and its execution parameters to the first dongle through the wireless interface;
  • said first dongle receives the message and its driver applies a corresponding command to said peripheral device.


[0012] In an additional embodiment, said first dongle declares its function to the second dongle using one of the following protocols: SOAP, RPC or REST.

[0013] In another embodiment the method comprises the steps of:
  • loading said software driver in the first dongle;
  • loading said Javacard applet in the second dongle;
  • storing in the second dongle an identification of the first dongle in association with the declared function and its parameters.


[0014] The advantage of the present invention will become apparent from the following description of several embodiments with reference to the accompanying drawings, in which:
  • Figure 1 is a schematic view of the structure of a dongle according to the invention;
  • Figure 2 is a schematic view of two dongles and two peripheral devices cooperating during the execution of an applet;
  • Figure 3 illustrate two dongles and a computer during a configuration process;
  • Figure 4 illustrates the steps carried out from the configuration stage up to the execution stage; and
  • Figure 5 illustrates the control of a peripheral device using a smartcard web server in communication with a mobile phone.


[0015] According to the invention, a dongle is provided both with USB host interface and a wireless communication interface. The dongle hosts a Javacard compliant virtual machine executed by a microcontroller. The dongle also hosts a software driver coded with Javacard instructions. This software driver comprises at least one function for controlling a peripheral device to be connected to the USB interface. The driver is adapted to declare this function and its parameters to another dongle through its wireless communication interface.

[0016] Such a dongle provides a significant widening of the applications available when using a given peripheral device, without needing a sophisticated management process inside this peripheral device and without needing sophisticated control equipments. Such a dongle can cooperate with another dongle to provide an interaction with other peripheral devices. The use of peripheral devices is thereby made much more versatile.

[0017] A function in a Java environment is usually named a method.

[0018] Figure 1 is a schematic view of the functional structure of a dongle D according to the invention. The dongle D comprises a microcontroller MC provided with a processor, a non volatile memory and a random access memory. The dongle D also comprises a USB connector D2 and a wireless communication antenna D1.

[0019] The dongle D further comprises a USB host controller USB-HC for managing the communications and/or the power management on the USB connector D2. The USB host controller USB-HC allows the dongle D to manage communication with a peripheral device connected to connector D2 without requesting a computer additionally.

[0020] The dongle D further comprises a wireless communication controller WIC. The controller WIC manages the communications of the dongle D through the antenna D1. The controller WIC can comprise a radiofrequency emission/reception circuit. The controller WIC and antenna D1 can be designed for communicating based on any suitable protocol like recited in Bluetooth, Wifi or NFC specifications.

[0021] The dongle also stores a Javacard virtual machine JVM to be executed by the microcontroller MC. The dongle D further stores one or more Javacard compliant libraries LI. The libraries LI allow the dongle to pilot a USB peripheral device plugged to the USB connector D2 by defining its specific functions. The dongle also stores one or more Javacard compliant applets AP and one or more peripheral device drivers DR. The drivers DR are coded according to a Javacard specification, for instance the Javacard 3.0 specification. One driver DR comprises at least one Javacard function for controlling a peripheral device to be connected to the USB connector D2. This driver is also designed to declare this function and the format of its parameters to another dongle through the wireless communication antenna D1. Thus, another dongle is able to send a message including a call to this function with appropriate execution parameters to control the peripheral device connected to the USB connector D2. Responsive to the reception of this message, the driver DR of the dongle D can apply a command to the peripheral device connected to its USB connector D2. The use of a Javacard virtual machine allows the execution of complex Javacard applets with a microcontroller MC presenting limited capacities. The dongle D may also run a smart card web server SCWS enabling the broadcasting of a convenient user interface that can be displayed through a browser.

[0022] Advantageously, the dongle D comprises an applet AP for controlling a peripheral device to which it is not connected. This Javacard compliant applet AP includes a stub referring to a function comprised in a peripheral device driver or applet stored in another dongle. This applet AP is adapted to send a control message through the wireless communication antenna D1 to the other dongle. When the dongle D receives a predetermined signal from the peripheral device connected to its USB connector D2, it is adapted to send through antenna D1 and to respond to this signal a control message to the other dongle. This message includes a call to this function along with execution parameters of the function. The dongle can thereby control a peripheral device connected to the USB connector of the other dongle.

[0023] The functions can be declared to other dongles by using any suitable protocol. For instance, the following protocols can be used: SOAP (notably available at http://www.w3.org/TR/soapl2-partl/#intro), RPC (RFC1831), REST (notably available at http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arc h_style.htm).

[0024] The peripheral device can be a generic peripheral USB device distributed without its Javacard driver and/or applet, or a specific peripheral USB device distributed with its Javacard driver and/or applet to be loaded into its associated dongle. The peripheral device can also be distributed with an associated dongle including its Javacard driver and/or applet loaded therein beforehand.

[0025] The dongle can be a generic dongle, with update capacities in order to load new drivers and applets to manage a newly purchased peripheral device. Such a generic dongle can be produced and distributed at a reasonable price, thus facilitating the distribution of peripheral devices with enhanced communication capacities. Advantageously, the dongle D can comprise a writable non volatile memory to store additional drivers and applets uploaded by a user. The Javacard virtual machine JVM will thereby be able to execute these additional applets or drivers. This writable non volatile memory can be included in microcontroller MC or can be integrated as an additional mass storage connected to the microcontroller MC. The dongle D may then comprise a communication interface adapted for uploading such applets or drivers. These applets or drivers can notably be uploaded into the dongle by using its already available USB connector D2 or antenna D1. In the example of figure 3, the user uploads drivers and applets into the dongles D10 and D20 with a computer C. The computer C can communicate with dongles D10 and D20 respectively with USB connexions C1 and C2 or with its antenna A.

[0026] Advantageously, the dongle can be switched between a master and a slave mode for its cooperation with the connected peripheral device. For instance, the dongle connected to an electronic picture frame can be switched into a slave mode to provide an access to pictures stored in a mass storage non volatile memory. The electronic picture frame can then display a slideshow of the pictures stored in the mass storage of the dongle. The dongle can also be switched into a master mode to take control of the electronic picture frame display. For instance, the dongle will control the display on the electronic picture frame of a RSS flow provided remotely by another dongle. This dual mode of the dongle further enriches the applications that can be practically carried out using the peripheral device.

[0027] The dongle according to the invention can be powered in any appropriate way known per se. The dongle can notably be powered through a connexion to the electric network using an AC/DC transformer, through batteries housed in the casing of the dongle or through the USB host interface connected to the peripheral device. Known methods allow a device to derive its power from its USB host interface.

[0028] Figure 2 illustrates an example of the cooperation between two peripheral devices P1 and P2 using a set of dongles D10 and D20. The peripheral device P1 is a webcam having a USB connector P11 connected to the USB connector D12 of dongle D10. The peripheral device P2 is a door including a lock P21 and a USB connector P22. The lock P21 comprises a detector generating a signal when the door P2 is open.

[0029] The dongle D10 stores a driver dedicated for managing the webcam P1. This driver comprises a function called 'takeapicture', this function triggering a snapshot by the webcam P1 with appropriate execution parameters. The function 'takeapicture' can also trigger the sending of the picture towards another device through the antenna D11 or its storage in the dongle D10, through an applet executed in dongle D10. Initially, for instance when it is powered up or when the peripheral device P1 is connected, the dongle D10 declares the function 'takeapicture' and the corresponding parameters to the dongles in the whereabouts, including dongle D20. An identification of the dongle D10 in association with function 'takeapicture' and its parameters are stored in dongle D20.

[0030] When the door P2 is open, the signal generated by the lock detector is transmitted to the dongle D20. The dongle D20 stores a driver dedicated for managing the door lock P21 and an applet for providing security features. The applet requests pictures to be taken at regular intervals by the webcam when a door opening is detected. As this applet includes a stub referring to the function 'takeapicture', the signal triggers a call by this applet to the function 'takeapicture' processed in dongle D10. When the call to the function 'takeapicture' is received by dongle D10, the driver triggers a snapshot as explained previously. A wireless video surveillance system can thereby be obtained based on a very simple and cheap architecture.

[0031] Numerous different applications and peripheral devices can be used in connection with the dongles to provide a remote interaction between these devices. For instance, if used with a USB controlled power switch, the peripheral devices can be domestic appliances like refrigerators, ovens, coffee machine or other devices like window shutters. Generic drivers for a given category of peripheral devices can be stored beforehand in the dongles. For instance, the dongles can be distributed with drivers for managing generic functions of webcams, mass storage...

[0032] Developers can easily write applets, drivers and functions based on published software development kits, like the development kit distributed under the name 'JCDK'.

[0033] Figure 4 illustrates an example of a process starting from the configuration of the dongles D10 and D20 and including the interactions between these dongles.

[0034] At step 101, a driver for the management of the webcam P1 is loaded into the dongle D10. At step 102, the webcam P1 is connected to the USB connector D12. At step 103, a driver for the management of the door P2 is loaded into the dongle D20. At step 104, an applet for managing the interaction between the door P2 and the webcam P1 is loaded into the dongle D20. At step 105, the door P2 is connected to the USB connector D22.

[0035] At step 106, the dongle D10 declares the functions available in its driver along with their parameters through the antenna D11. The functions and parameters are received by the dongle D20 through its antenna D21. At step 107, the applet is executed in dongle D20. At step 108, the door is opened and the detector of the lock P21 generates a corresponding signal received on the USB connector D22. In response to this signal, at step 109, the applet sends a message to the dongle D10 through the antenna D21, this message including a call to the declared function along with execution parameters. At step 110, the message and execution parameters are received by dongle D10 through its antenna D11. At step 111, the message is processed by the driver managing P1 and this driver applies an appropriate command on P1 through the USB connector D12.

[0036] Figure 5 illustrates another example where a dongle D10 according to the invention is used. The dongle D10 hosts a smartcard web server SCWS available for communicating with other devices without exceeding the capacities of the microcontroller embedded in the dongle. A window shutter P3 is connected through its USB connector P31 to the USB connector D12 of the dongle. A mobile phone D30 having an antenna D31 for wireless communications can communicate with the dongle D10 using a wireless communication protocol. When the mobile phone D30 is in communication with the dongle D10, a control interface D32 is displayed on the mobile phone screen. The user of the mobile phone D30 can thereby input commands and execution parameters for operating the window shutter P3. These commands and execution parameters are sent to the dongle D10 through the wireless communication interfaces. Once the commands are received by dongle D10, the driver of the window shutter P3 stored in the dongle D10 applies corresponding commands and execution parameters on the window shutter P3 through its USB connector D12.

[0037] The smart card web server SCWS may provide web pages which contain scripts developed in JavaScript. These scripts may communicate with one or several Javacard servlets which are plugged to the SCWS. The user of the mobile phone D30 may enter data via the web page.


Claims

1. A dongle (D), characterized in that it comprises:

- a microcontroller (MC);

- a USB host interface (D2);

- a wireless communication interface (D1);

- a Javacard compliant virtual machine (JVM) to be executed by said microcontroller (MC);

- a javacard driver framework (LI) enabling the development of javacard coded drivers;

- a software driver (DR):

- coded according to a Javacard specification and using the Javacard driver framework;

- comprising at least one function for controlling a peripheral device to be connected to said USB interface;

- adapted to declare said function and its parameters to another dongle through said wireless communication interface.


 
2. Dongle (D20) according to claim 1, comprising a Javacard applet (AP) including a function for controlling a peripheral device (P1) not directly connected to the dongle, said Javacard applet, when it is executed and if a predetermined signal is received by the dongle (D20) on its USB interface (D22), is adapted to send a message including a call to said function along with its execution parameters through the wireless interface (D21) to another dongle (D10) connected to this peripheral device (P1).
 
3. Dongle according to claim 1 or 2, wherein said driver (DR) is adapted to apply a command to a peripheral device (P1) connected to its USB host interface (D12) when a call to its function and its execution parameters are received on the wireless communication interface (D11).
 
4. Dongle according to any one of the preceding claims, wherein the virtual machine (JVM) is compliant with the Javacard specification.
 
5. Dongle according to any one of the preceding claims, comprising a writable non volatile memory and a communication interface through which applets or drivers can be loaded into the writable non volatile memory in order to be executed by said Javacard virtual machine.
 
6. Set of dongles, comprising at least two dongles (D10, D20) according to any one of the preceding claims, wherein a first dongle (D10) stores a software driver for controlling a first peripheral device (P1) connected to its USB interface (D12) and wherein a second dongle (D20) stores a software driver for controlling a second peripheral device (P2) connected to its USB interface, wherein the second dongle (D20) stores a Javacard applet being adapted, when it is executed and if a predetermined signal is received by said second dongle on its USB interface, to send a message including a call to said function along with execution parameters through the wireless interface to the first dongle.
 
7. Method for providing the control of a peripheral device to another device, comprising a step in which a first dongle (D10) according to any one of claims 1 to 5 and connected to the peripheral device by its USB interface (D12) declares said function for controlling the peripheral device (P1) through its wireless interface (D11) to a second dongle (D20) according to any one of claims 1 to 5, said dongle storing an applet calling the declared function when executed and being connected to said other device.
 
8. Method according to claim 7, wherein :

- said second dongle receives a predetermined signal from said other device and responsive thereto, the Javacard applet of the second dongle sends a message including a call to said function and its execution parameters to the first dongle through the wireless interface;

- said first dongle receives the message and its driver applies a corresponding command to said peripheral device.


 
9. Method according to claim 7 or 8, wherein said first dongle declares its function to the second dongle using one of the following protocols: SOAP, RPC or REST.
 
10. Method according to any one of claims 7 to 9, comprising the steps of:

- loading said software driver in the first dongle;

- loading said Javacard applet in the second dongle;

- storing in the second dongle an identification of the first dongle in association with the declared function and its parameters.


 




Drawing













Search report