this invention is described in the following description with reference to the figures , in which like reference numbers represent the same or similar elements . an example of a method of operation includes the following steps . first there is provided a dongle with a specific vehicle application than can initiate an automatic detection of vehicle communication interfaces . for a given vehicle application , a maximum number ( for example , four ) of communication systems may be enabled in the key fob dongle to transmit and receive data in accordance with standard communication protocols developed for onboard diagnostics ( obd )- ii systems such as iso15765 - 4 can ( both high speed and single wire can ), iso 9141 - 2 ( k - line ), kw2000 and j1850 ( both vpw and pwm variations ). next , the onboard computer identifies modules coupled to the vehicular communication network , for example , the key fob dongle . then , the specifically configured key fob dongle can enter the particular use mode to initiate or enable installation of required data to the replacement part , for example a programmable key fob . in - vehicle networking is a method for transferring data between electronic modules via a serial data bus . the society automotive engineers ( sae ) standards include the following three categories of in - vehicle network communications : class a , class b , and class c . class a may be low speed ( less than 10 kb / s ) and used for convenience features , such as entertainment . class b may be medium speed ( between 10 and 125 kb / s ) and used for general information transfer , such as emission data and instrumentation . class c may be high speed ( greater than 125 kb / s ) and may be used for real - time control , such as traction control , brake by wire , and the like . all cars and light trucks built for sale in the united states after 1996 are required to be obd - ii compliant . there are five obd - ii protocol types in use : j1850 pwm , j1850 vpw , iso 9141 - 2 , iso 14230 kwp2000 , and iso 15765 can . each protocol differs electrically and by communication format . the key fob dongle must be compatible with the vehicle specific protocol in order to communicate with the obd - ii of the vehicle . fig1 is a block diagram depicting the operation of the key fob dongle . the key fob dongle 100 includes a processor 101 that is connected to the three interfaces 102 , 103 , and 104 . the first interface 102 is a high speed control area network ( hscan ) interface . controller area network ( can ) was designed for automotive applications needing high levels of data and data rates of up to 1 mbit / s . in 2006 over 70 % of all automobiles sold in north america utilized can bus technology . beginning in 2008 , the sae required 100 % of the vehicles sold in the usa to use the can bus communication protocol . can messages have a specified structure dictated by can standards . can networks have rules for dealing with colliding messages when two modules begin transmitting messages at the same time . hscan is classified as a class c network for both vehicle network and diagnostic communication . the second interface 103 is a single wire can ( swcan ) interface . swcan is classified as a class b network for both vehicle network and diagnostic communication . a can physical layer ( developed by general motors ) uses only one wire at all times that limits its speed performance to 33 . 33 kbit / s . the third interface 104 is a j1850 interface . this is the sae standard for class a and class b ( slow and medium speed ) networks . it is a combination of ford &# 39 ; s scp and general motors &# 39 ; class 2 protocol . as j1850 developed from two proprietary protocols , there are two alternative j1850 protocols : 41 . 6 kb / s with pulse width modulation and 10 . 6 kb / s with variable pulse width . j1850 10 . 4 vpw is used by general motors , which internally calls this protocol class 2 . class 2 is a true network protocol that incorporates bus arbitration . class 2 is used for both vehicle network and diagnostic communication . each of the three interfaces 102 , 103 , and 104 connects to a vehicle obd - ii connector 105 . the vehicle obd - ii connector 105 is part of the car &# 39 ; s onboard computer . connecting the dongle 100 to the vehicle obd - ii connector 105 establishes access to the codes necessary to program a replacement part , such as a programmable key fob . once the dongle 100 is connected to the vehicle obd - ii connector 105 , a signal is transmitted back to the processor 101 through one of the three interfaces 102 , 103 , and 104 . that signal is transmitted to the processor 101 and indicates to the user either by the led light 107 or by the buzzer 106 that the key fob dongle 100 is ready to start programming the programmable part . the dongle automatically detects a vehicle communication protocol once it has been inserted into the obd - ii connector . the classification of communication protocol can be detected through the buzzer sound once it has been inserted into the obd - ii connector . if the buzzer beeps 3 times , the communication protocol for the key fob learning method is j1850 . if the buzzer beeps 2 times , the communication protocol is swcan . if the buzzer beeps once , the communication protocol is hscan . once the communication has been established , the learning process can begin . as soon as the learning process is ready , the user should press and hold the lock and unlock buttons simultaneously on the key fob for 10 seconds . after learning is completed either the instrument cluster in the car or the dongle will give an audible sound , confirming the new part or component has been paired . the same procedure will be applied to the next key fob or component . in the preferred device , it programs a maximum number of key fobs in one session . a two minute time - out period is set per session with an audible indication alerting the user to the remove device from the obd - ii connector . the preferred dongle has a counter that limits the number of sessions allowed with the dongle . fig2 is an exemplary software flow diagram for using the dongle to program a key fob . in fig2 , the dongle 201 sends a communication detection request 203 to the vehicle obd - ii connector 202 . the vehicle obd - ii connector 202 sends a communication detection response 204 to the dongle 201 . the dongle 201 sends an initiate key fob learning mode request 205 to the vehicle obd - ii connector 202 . the vehicle obd - ii connector 202 sends an initiate learning mode response 206 to the dongle 201 . the dongle 201 sends periodic messages 207 to the vehicle obd - ii connector 202 to keep the key fob in learning mode for every 100 ms or 2 seconds . on a first key fob , key fob 1 , the lock and unlock buttons are pressed simultaneously for 10 seconds 208 communicating with the vehicle obd - ii connector 202 . the vehicle obd - ii connector 202 sends a key fob 1 learnt response 209 to the key fob dongle 201 . on a second key fob , key fob 2 , the lock and unlock buttons are pressed simultaneously for 10 seconds 210 communicating with the vehicle obd - ii connector 202 . the vehicle obd - ii connector 202 sends a key fob 2 learnt response 211 to the key fob dongle 201 . on a third key fob , key fob 3 , the lock and unlock buttons are pressed simultaneously for 10 seconds 212 communicating with the vehicle obd - ii connector 202 . the vehicle obd - ii connector 202 sends a key fob 3 learnt response 213 to the key fob dongle 201 . on a fourth key fob , key fob 4 , the lock and unlock buttons are pressed simultaneously for 10 seconds 214 communicating with the vehicle obd - ii connector 202 . the vehicle obd - ii connector 202 sends a key fob 4 learnt response 215 to the key fob dongle 201 . after the last key fob , key fob 4 , is learned , the user can remove the key fob dongle 201 from the vehicle obd - ii connector 202 . fig3 is an example view of the key fob dongle enclosure . the key fob dongle 301 includes a speaker 302 that allows the user to hear the audible indicator when the dongle is ready for user interaction . the speaker 302 may also be used for providing verbal instructions or indicators . the dongle 301 also includes an led 303 that allows the user to see the light indicator when the key fob dongle is ready for user interaction . the key fob dongle 301 has a housing 304 that includes a top casing 304 ( a ), a bottom casing 304 ( b ), and a connector casing 304 ( c ). the key fob dongle 301 also includes a circuit board 305 ( shown in further detail in fig4 ) that sits within the housing 304 . a connector 306 sits within housing 304 and is used to connect the key fob dongle to the vehicle obd - ii connector . fig4 is an example of the electronics inside the key fob dongle . the functionality of the printed circuit board ( pcb ) is to provide the necessary hardware / software and obd - ii compliant interfaces to communication with the vehicle obd - ii protocols . one design goal was to select the least expensive components that provide the vehicle interfaces required for a line of vehicle makes and models . another design goal was to optimize the layout of the components to fit the pcb in a small in a 2 . 5 inch by ⅕ inch space . another key fob dongle design criteria was to be compliant with the vehicles specific protocol in order to communicate the necessary message frames . the pcb 400 of fig4 includes a power section 401 , an indicator section 402 , a micro controller section 403 , a j1850 section 404 , an swcan section 405 , and a hscan section 406 . the power section 401 regulates to 5vdc to drive the microcontroller . the input power is from obd - ii connector pin 16 — un - switched battery + and power ground is from obd - ii pin 4 — chassis ground . the 5vdc regulated power is used for microcontroller and other peripheral integrated circuits ( ics ). the power regulator provides current and protective functions against over temperature and reverse voltage . the indicator section 402 includes the led and buzzer . the led and buzzer provide visual and audio indication for the user to have easier representation of steps necessary in programming the key - fobs . the key indications are information about the identity of the vehicle protocol and status of a pairing / learning sequence of each key - fob . the micro controller section 403 includes a main controller unit ( mcu ). the mcu used in the design is automotive compliant and minimizes the overall cost of the system while still fulfilling the system specification , for example , performance , reliability , environmental , and the like . the mcu is responsible for the application logic execution with respect to the user requirements and controls the i / o devices connected . the mce is also responsible for the execution of a sequence of messages based on vehicle identification and user input ( key - fob button press and vehicle lock actuations ) to pair with a number of key - fobs . the selected mcu has sufficient i / o pins , necessary peripherals and is powered by a 5vdc voltage regulator . the j1850 section 404 consists of a comparator ic and is connected to the microcontroller timer capture pin . the comparator compares the received signal and converts to 5v logic to microcontroller . the microcontroller captures the signal and forms the data to process j1850 protocol logic . the j1850 bus lines are at obd - ii connector pin 2 — j1850 high and pin 10 — j1850 low . the swcan section 405 uses an swcan transceiver ic to transmit and receive the data between the microcontroller and vehicle obd - ii port . the swcan works at the rate of 33 . 33 kbps baud . the swcan bus line is at obd - ii connector pin 1 — sw can . the hscan section 406 uses an hscan transceiver ic to transmit and receive the data between microcontroller and the vehicle obd - ii port . the hscan works at the rate of 500 kbps baud . the hscan bus lines are at obd - ii connector pin 6 — can high and pin 14 — j1850 can low . fig5 is an example of a programmer software flow chart . the software architecture consists of an os section , an interrupt handling section , a can configuration , a j1850 configuration , and an application layer section . the os section is the heart - beat of the controller and generates every 1 ms timer count to operate the microcontroller . the interrupt handling section receives the data and service the application layer without any delay . the can configuration section is used to configure all can mail boxes and sets the required baud rate to receive and transmit the can data . the j1850 configuration configures the timer capture input for reception and configures another port as output to transmit the data . it configures the baud rate settings and checks the crc error check . the application layer section follows the communication configuration and automatically detects the vehicle communication protocol once it has been inserted to the obd - ii port . the classification of communication protocol can be detected through the buzzer sound once it has been inserted into the obd - ii port . the learning procedure is initiated after the user presses and holds the lock and unlock buttons simultaneously in the key fob for 10 seconds . a two minute time - out period is set per session with the buzzer indication to alert the user to remove programmer tool from obd - ii port . the key fob dongle has a built in counter to limit the number of sessions allowed and is a disposable device . in fig5 , the process starts by starting the clock configuration 501 , the port configuration 502 , the os configuration 503 , the can configuration 504 , and the j1850 configuration 505 . the key fob dongle is then checked 506 to determine if it was already used by a customer . on a condition that the key fob dongle has already been used , then the process stops 507 . on a condition that the key fob dongle has not already been used , then a j1850 auto detect command request may be sent 508 . it is then determined if a j1850 auto detect command response is received 509 . on a condition that the j1850 auto detect command response is not received , a swcan auto detect command request is sent 510 . it is then determined if a swcan auto detect command response is received 511 . on a condition that the swcan auto detect command response is not received , a hscan auto detect command request is sent 512 . it is then determined if an auto detect command response is received 513 . on a condition that the hscan auto detect command is not received , the process is stopped 514 . on a condition that the j1850 / swcan / hscan auto detect command response is received , the key fob learning message is initiated 515 for j1850 / swcan / hscan . periodic messages are then sent and received by the key fob dongle 516 . it is then determined if the key fob learn message is received 517 . on a condition that the key fob lean message is not received , the process repeats the sending and receiving of periodic messages 516 . on a condition that the key fob learn message is received , the process determines if up to a maximum number of key fobs have been learnt 518 . on a condition that the maximum number of key fobs have not been learnt , the process repeats itself by initiating a key fob learning message for j1850 / swcan / hscan 515 . on a condition that the maximum number of key fobs have been learnt , the key fob dongle is either removed or after two minutes a beep will sound for five seconds and the operation stops 519 . fig6 is an example of an in - vehicle network can bus . the can bus 601 is connected to the engine 602 , the transmission 603 , the instrument cluster 604 , the lock window 605 and the security 606 . additionally , the can bus 601 is connected to the electronic control module ( ecm ) 607 and the body control module ( bcm ) 608 . fig7 is an example of an in - vehicle network obd - ii diagram . in fig7 , a body control module ( bcm ) gateway 707 is connected to an hvac control module 701 , an instrument panel cluster 702 , ( 4 ) door modules 703 , a sensing diagnostic module 704 , a memory seat module 705 , and a navigation radio 706 at a class 2 . the bcm gateway 707 is also connected to a radio 709 , a vci module 710 , and a head up display ( hud ) 711 at low speed gmlan . the bcm gateway 707 is connected to the transmission control module ( tcm ), electronic brake / traction control ( ebtcm ), and vehicle communications interface module ( vcim ) ( collectively 712 ) at a high speed gmlan . the tcm / ebtcm / vcim 712 is connected to the powertrain control module ( ecm ) 713 . the ecm 713 is connected to the throttle actuator 714 via uart data 1 and uart data 2 . the obd - ii 708 is connected to the bcm gateway 707 and the tcm / ebtcm / vcim 712 those of ordinary skill in the art may recognize that many modifications and variations of the above may be implemented without departing from the spirit or scope of the following claims . thus , it is intended that the following claims cover the modifications and variations provided they come within the scope of the appended claims and their equivalents .