System and method for pairing a key with a vehicle via a vehicle communications port by a dongle

11282312 · 2022-03-22

Assignee

Inventors

Cpc classification

International classification

Abstract

The present invention provides a system, method, and apparatus for pairing a vehicle key or remote keyless entry device with a vehicle by a dongle connected to an OBD port of the vehicle. The OBD programming dongle operates without a connection to an external device and pairs one or more keys with a vehicle without user intervention after the pairing process has started. The OBD programming dongle may be linked to a specific vehicle by the VIN code of the specific vehicle.

Claims

1. A dongle adapted to pair an unpaired vehicle key with a vehicle, the dongle comprising: a button; an audible signal generator; a processor; and a memory comprising a set of executable code when executed by the processor configured to: initiate, by user actuation of the button on the dongle, a key pairing process, the key pairing process comprising: initiating communications between the dongle and the vehicle via the vehicle communications port using a determined communications mode; identifying, by the dongle, a number of existing keys already paired with the vehicle; automatically pairing, by the dongle, the unpaired vehicle key with the vehicle; and verifying that the automatic pairing of the vehicle key from the set of vehicle keys with the vehicle was successful.

2. The dongle of claim 1, wherein the determined communications mode is a communications mode automatically determined by the dongle to be used in the key pairing process.

3. The dongle of claim 2, wherein the communications mode comprises one or more of a communications protocol, a bus type, or a set of commands and responses.

4. The dongle of claim 2, wherein the automatic determination is based on a VIN read from the vehicle over an OBD interface.

5. The dongle of claim 2, wherein the automatic determination is based on a measurement of voltage levels and communications frequency over a set of bus lines of the vehicle over an OBD interface.

6. The dongle of claim 2, wherein the automatic determination is based on sending a set of commands by the dongle and receiving a set of responses from the vehicle over an OBD interface.

7. The dongle of claim 1, wherein the key pairing process further comprises: determining that the determined communications mode is not compatible with the vehicle; and terminating the key pairing process.

8. The dongle of claim 1, wherein the key pairing process further comprises: reading, by the dongle, a VIN from the vehicle; determining that the VIN read from the vehicle matches a stored VIN in the dongle; and continuing the key pairing process.

9. The dongle of claim 1, wherein the key pairing process further comprises: reading, by the dongle, a VIN from the vehicle; determining that the VIN read from the vehicle does not match a stored VIN in the dongle; and terminating the key pairing process.

10. The dongle of claim 1, wherein the key pairing process further comprises: determining that the identified number of existing keys exceeds a predetermined threshold; and terminating the key pairing process.

11. The dongle of claim 1, wherein the dongle is configured to become inoperable after the key pairing process is performed a predetermined number of times.

12. The dongle of claim 1, wherein the key pairing process further comprises: receiving an additional actuation of the button on the dongle; and unpairing a set of all paired vehicle keys from the vehicle.

13. The dongle of claim 1, wherein the dongle further comprises a rotating switch, the rotating switch providing for navigating and selecting settings or configurations for the dongle.

14. A method of pairing an unpaired vehicle key to a vehicle by a dongle, the method comprising: initiating, by user actuation of a button on the dongle, a key pairing process, the key pairing process comprising: initiating communications between the dongle and the vehicle by a communications mode; reading, by the dongle, a VIN from the vehicle; comparing, by the dongle, the VIN read from the vehicle with a set of VINs stored on the dongle; determining, by the dongle, that the VIN read from the vehicle matches a VIN from the set of VINs; and automatically pairing, by the dongle, the unpaired vehicle key with the vehicle.

15. The method of claim 14, wherein the method further comprises automatically determining the communications mode by the dongle.

16. The method of claim 15, wherein the method further comprises automatically determining by the dongle one or more of a communications protocol, a bus type, or a set of commands and functions to be used in communicating with the vehicle in the key pairing process.

17. The method of claim 15, wherein the automatic determination is based on the VIN read from the vehicle over an OBD interface.

18. The method of claim 15, wherein the automatic determination is based on measuring voltage levels and communications frequency over a set of bus lines of the vehicle over an OBD interface.

19. The method of claim 15, wherein the automatic determination is based on sending a set of commands by the dongle and receiving a set of responses from the vehicle over an OBD interface.

20. The method of claim 14, wherein the method further comprises: determining, by the dongle, that the VIN read from the vehicle does not match a VIN from the set of VINs; and terminating the key pairing process.

21. The method of claim 14, wherein the method further comprises: terminating the key pairing process based upon determining, by the dongle, that the key pairing process has been initiated and completed a number of times exceeding a predetermined threshold.

22. The method of claim 14, wherein the method further comprises: determining a number of times the key pairing process has been initiated for the VIN read from the vehicle; and upon determining that the determined number of times the key pairing process has been initiated for the VIN read from the vehicle has exceeded a predetermined limit, terminating the key pairing process.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) To facilitate a full understanding of the present invention, reference is now made to the accompanying drawings, in which like elements are referenced with like numerals. These drawings should not be construed as limiting the present invention but are intended to be exemplary and for reference.

(2) FIG. 1 provides a block-diagram schematic view of one embodiment of the system for pairing a vehicle key with a vehicle by the dongle of the present invention.

(3) FIG. 2 provides a simplified block-diagram of one embodiment of the dongle of the present invention.

(4) FIG. 3 provides a flowchart illustrating the general process of programming a vehicle key by a programming dongle according to one embodiment of the invention.

(5) FIGS. 4-8 provide a set of flowcharts illustrating another embodiment of a process for programming a vehicle key by a dongle according to the present invention.

(6) FIGS. 9-11 provide a set of flowcharts illustrating another embodiment of a process for programming a vehicle key by a dongle according to the present invention.

(7) FIG. 12 provides a flowchart illustrating an embodiment of associating a VIN with a dongle according to the present invention.

(8) FIG. 13 provides a flowchart illustrating an embodiment of associating a set of PINs with a dongle according to the present invention.

(9) FIGS. 14-16 provide a series of flowcharts illustrating processes for automatically identifying one or more of a communications mode, communications protocol, bus type, and/or set of commands and responses to be used in paring a key with a vehicle using a dongle according to an embodiment of the present invention.

DETAILED DESCRIPTION

(10) The present invention will now be described in more detail with reference to exemplary embodiments as shown in the accompanying drawings. While the present invention is described herein with reference to the exemplary embodiments, it should be understood that the present invention is not limited to such exemplary embodiments. Those possessing ordinary skill in the art and having access to the teachings herein will recognize additional implementations, modifications, and embodiments, as well as other applications for use of the invention, which are fully contemplated herein as within the scope of the present invention as disclosed and claimed herein, and with respect to which the present invention could be of significant utility.

(11) With reference now to FIG. 1, a simplified block diagram of a system 100 for pairing a vehicle key 110 with a vehicle 120 is provided. The vehicle 120 comprises a vehicle OBD interface 122, a vehicle communications bus 124, a vehicle ECU 126, and a vehicle ignition interface 128. ECU refers to Electronic Control Unit but also represents other terms frequently used such as PCM (Powertrain Control Module) and ECM (Engine or Electronic Control Module) that represent components that perform similar functions in a vehicle. Often the term used for any given vehicle is manufacturer dependent. The vehicle OBD interface 122, ECU 126, and ignition 128 communicate with one another via the vehicle communications bus 124. Additional elements may comprise the vehicle 120 including additional electronic and control components connected via the vehicle communications bus 124. The dongle 200 is connected to or inserted into the vehicle OBD interface 122 to facilitate pairing of the key 110 with the vehicle 120.

(12) With reference to FIG. 2, a simplified block diagram of the dongle 200 is provided. The dongle 200 comprises a microcontroller 210 which comprises a processor 212, memory 214, analog to digital signal converter 216, and input/output interface 218. The dongle 200 further comprises a communications area network (“CAN”) transceiver 220, OBD connector 230, switch 240, e.g., single-pole/single-throw (SPST) type switch, rotary switch 250, which may be a multi-position switch, and buzzer 260. In some embodiments, the dongle 200 may further comprise a display such as an OLED display 270 connected to the microcontroller 210. The CAN transceiver 220 may be used with additional transceivers, such as the J1850 transceiver 221, single wire CAN transceiver 222, K-Line transceiver 223, or supplemental CAN transceiver 224. The appropriate transceiver, communications mode, communications protocol, and/or set of commands and responses to be used in communicating with a vehicle in a key pairing process are automatically determined by the dongle 200 using a set of code and logic stored in the memory 214 and executed by the processor 212. The appropriate settings and configuration are determined in part by querying the vehicle and evaluating responses by the vehicle computer or OBD system, or by measuring signals or voltages over the OBD interface at the OBD connector 230. The rotary switch 250 may also be used to enable user selection of a communications protocol to be used by the dongle 200 to communicate with a vehicle. The switch 240 enables a user to initiate a key pairing process or to otherwise interact with the dongle 200 as required. The switch 250 may also be used as a “jog dial” to interface or interact with the display 270 or to more quickly change or select from settings or configurations.

(13) In another embodiment, another user input device 251 may be used with or instead of the switch 250 and may be a set of toggle switches, a set of buttons, a directional pad, a hat switch, or a capacitive touch interface. The dongle 200 communicates with the electronic systems of a vehicle, such as vehicle 120, through the OBD connector 230 which would mate with the OBD interface or port 122 of the vehicle by way of the CAN transceiver 220 in the dongle 200. The dongle 200 may also comprise a buzzer, speaker, or other audio signal generator for generating user interpretable audio signals, and/or a display for visual prompts. The memory 214 may store a set of code or logic to be executed by the processor 212 to automatically determine a communications mode, communications protocol, bus type, and/or set of commands and responses to be used with the vehicle 120 to complete a pairing process with the vehicle key. This may include a set of logic for querying the vehicle 120 and receiving a response, and based on that response configuring one or more of the communications mode, communications protocol, bus type, or set of commands and responses to successfully complete a pairing process.

(14) With reference now to FIG. 3, a flowchart illustrating the general process 300 of programming a vehicle key by a dongle according to one embodiment of the invention is provided. At 302 the dongle, such as the dongle 200 shown in FIG. 2, is powered on by user operation, such as by the switch 240, or by simply connecting the dongle 200 to the vehicle 120. At 304 the dongle 200 is provided the state of the rotary switch 250 which indicates which communications protocol the dongle 200 is to use to communicate with the vehicle 120. Alternatively, the dongle 200 may automatically determine at 304A the set of commands and responses and/or bus type to be used in to communicate with the vehicle. The automatic determination in step 304A may be used instead of or in addition to the user selection by the rotary switch 250 or other user input 251. At 304 the dongle 200 reads the VIN code from the vehicle.

(15) At 308, the dongle tests if there is a previously stored VIN code in the memory 214. If there was no previously stored VIN code, the VIN code is stored at 312. If a VIN code is stored by the dongle 200 that does not match the VIN code read at 306, the process will halt. If the VIN code is determined to be a match at 334, the dongle reads the number of keys currently paired with or programmed to the vehicle at 310. This provides the user with information as to how many keys are paired with the vehicle so that the user can decide whether or not to erase all paired keys with the vehicle or know if a maximum number of keys have been paired. At 314, the dongle 200 emits an audible signal, e.g., by sounding a buzzer 260, based on the number of keys programmed or paired with the vehicle. At step 316 the dongle 200 may wait for further user input as required, such as waiting for input indicating the number of keys to be paired, or input to proceed with the pairing process. At 318, it is determined if the vehicle has reached a maximum number of paired keys. For example, some vehicles may have a maximum number of keys, e.g., eight, programmed at any given time. If the maximum number of keys have been paired, the process stops at 320.

(16) At 322 if the vehicle can pair additional keys, the key pairing process begins and then the dongle 200 indicates to the user at 324 that the key pairing has begun. At 326, the dongle 200 provides audible feedback to the user, such as by producing a short audio signal every 15 seconds, indicating that the key pairing process 322 is continuing. At the conclusion of the key pairing process 322, if it is determined that the pairing process was a success at 328 a success signal is provided at 330 to indicate to the user that the process was successful. The process halts at 332.

(17) With reference now to FIGS. 4-8 a set of flowcharts illustrating another embodiment of a process for programming a vehicle key by a dongle according to the present invention are provided. User actions are shown in the processes 700 and 800, while dongle 200 performed actions are shown in processes 400, 500, and 600. Prior to powering on the device, at 702 the user may determine the setting for the rotary switch 250 and sets the switch to the proper position at 704. The steps 702 and 704 may not be required if the communications mode, communications protocol, bus type, or set of commands and responses is automatically determined by the dongle 200. At 706, the dongle 200 is inserted by the user into a vehicle OBD interface 122 and powers on at 402. The user then puts the vehicle key 110 into the vehicle ignition 128 and turns on the vehicle 120 at 710. When the vehicle 120 is on, at 712 the user presses a button or switch 240 on the dongle 200. If the dongle 200 enters an error state during any step in the process or a communication error occurs, the process halts and an error alarm is sounded.

(18) If the button 240 has been pressed at 404, the dongle 200 reads the state of the switch 250 at 406, however, if the type selected is incorrect, an error signal is provided at 408. Alternatively, the dongle 200 may automatically determine at 407 the set of commands and responses and/or bus type to be used in to communicate with the vehicle. The automatic determination in step 407 may be used instead of or in addition to the user selection by the rotary switch 250 or other user input 251. If the communications protocol selected by the user and read at 406, or the communications mode automatically determined by the dongle in step 407, is correct, the vehicle 120 VIN code is read at 410. If there is no VIN previously stored 426 in the memory 214 of the dongle 200, at 416 the VIN read at 410 is stored. If the VIN read at 410 does not match a VIN previously stored, at 414 the dongle enters an alarm state at 412 and halts the process. If the VIN matches a stored VIN at 414 the process continues. At 418 the dongle 200 determines the number of keys paired or programmed with the vehicle 120. At 420 if it is determined that the dongle 200 can erase all keys paired or programmed with the vehicle 120, the process continues at B shown in FIG. 5, otherwise it proceeds to step 422. At 422 if the maximum number of keys has been paired with a vehicle, such as 4 or 8 keys based on vehicle make, model, and year, the dongle 200 produces eight error tones at 424 and the process halts. Otherwise, the process continues at C shown in FIG. 6.

(19) The process 500 shows the steps for erasing all keys paired with a vehicle if the feature is enabled on the dongle 200. At 502 the dongle 200 indicates the number of keys paired with the vehicle through audio tones. At 504, the dongle 200 waits for user input, if the input is received, at 506 the dongle 200 erases all keys paired with the vehicle. At 508, the dongle 200 sets a flag that will require the pairing of at least a second key with the vehicle 120 for the pairing process to complete. If the user input is not received at 504, the process continues at 510. At 510 if the maximum number of keys has been paired with a vehicle, such as 4 or 8 keys based on vehicle make, model, and year, the dongle 200 may produce error tones at 512 and the process halts, otherwise the process continues at C shown in FIG. 6.

(20) The process 600 shows the key pairing process by the dongle 200. At 602 the key pairing is initiated. If the sequence starts successfully, an audio signal is produced at 604. The process of pairing a key 110 with a vehicle 120 may take ten minutes or more, and during this time, an audio signal may be produced by the dongle 200 every 5-20 seconds to indicate that the dongle is still “working” on the pairing process as shown in step 606. At 608, the dongle 200 looks for a successful response from the vehicle. If the successful response is received at 608, the dongle emits an audible success indication, such as three tones, at step 610. If it is determined at 612 that no second or additional key is to be programmed, the process halts at 618. At 620, if the user has not removed the dongle 200 after 5 minutes of the process halting at 618, the dongle 200 sounds a tone or alarm continuously until it is removed at 622. In case a second or additional key is to be programmed, the dongle has a second or additional key programming flag set as determined at 612, the dongle 200 waits for the second or additional key to be inserted into the vehicle ignition 128 and for the vehicle 120 to be turned on. The second key flag is cleared at 616, and the process returns to 608 to program the second or additional key.

(21) As shown in the user process 800, the user waits for the success signal from 610 in step 802. Upon receiving the success signal from the dongle 200, the user turns the vehicle 120 off at 804, and removes the key at 806. At 808 if the user did not press the button 240 on the dongle 200 to erase all keys, the process halts at 810. Otherwise, at 812, the user inserts the second or additional key into the ignition 128 and turns the vehicle 120 on at 814 to program the second or additional key.

(22) With reference now to FIGS. 9-11 a set of flowcharts illustrating another embodiment of a process for programming a vehicle key by an OBD programming dongle according to the present invention are provided. User actions are shown in the process 1000 and dongle 200 performed actions are shown in processes 900 and 1100. In one optional manner as shown with hatched lines 1002-1004, prior to powering on the vehicle, at 1002 the user determines the setting for the rotary switch 250 and sets the switch to the proper position at 1004 if this step is required. If the communications mode, communications protocol, bus type, and/or set of commands and responses are to be automatically determined by the dongle 200, the steps 1002 and 1004 may not be required as this may be automatically determined. At 1006, the dongle 200 is inserted by the user into a vehicle OBD interface 122 and powers on at 902. The user may then be required to put the vehicle key 110 into the vehicle ignition 128 and turns on the vehicle 120. At 1008 the user presses a button or switch 240 on the dongle 200. If the dongle 200 enters an error state during any step in the process or a communication error occurs, the process halts and an error alarm is sounded. After pressing the button 240 at step 1008, the user waits for a message from the dongle 200 at step 1010.

(23) If the button 240 has been pressed at 904, the dongle 200 reads the state of the switch 250 at 906, however, if the type selected is incorrect, an error signal is provided at 908. If the communications protocol selected by the user and read at 906 is correct, the vehicle 120 VIN code is read at 910. Alternatively, the dongle 200 may automatically determine at 907 the communications mode, communications protocol, the set of commands and responses, and/or bus type to be used in to communicate with the vehicle. The automatic determination in step 907 may be used instead of or in addition to the user selection by the rotary switch 250 or other user input 251. If the communications protocol selected by the user and read at 906, or the communications mode automatically determined by the dongle in step 907, is correct, the vehicle 120 VIN code is read at 910. If a VIN has not been stored 922 in memory 214 previously, the VIN read at 910 is stored at 916. If the VIN does not match a VIN previously stored in the memory of the dongle 200, a continuous alarm sounds at 912. If the VIN matches a stored VIN at 924 the process continues. At 918 the dongle 200 reads a BCM number from the vehicle. After the BCM number has been read at 918, at 920 the dongle 200 determines one or more PINs based on the BCM number. This PIN may be 4 digits, 20 characters, or other format dependent on the vehicle's year make and model. Many other key pairing devices require the user to manually enter this PIN into the device. The dongle 200 handles all PIN data automatically without user interaction for increased reliability, accuracy, and repeatability of key programming. The process continues at B shown in the process 1100 in FIG. 11.

(24) After the PINs have been determined at 920, the dongle 200 displays any further messages to the user at 1102. At 1104, if the message requires user action or response, a message is displayed to the user at 1010. The user may perform one of a set of user actions at 1012 based on the desired result. At 1014 the user performs the desired action, which is one of: confirm warning, which is performed by a press-and-hold action on the button 240; ok/continue, which is performed by pressing the button 240; and cancel, which is performed by taking no action or waiting for a timeout period to expire. For example, if the message “Warning: All keys will be erased. Are you sure? Press and hold to continue within 5 . . . 4 . . . 3 . . . 2 . . . 1” may be displayed by the dongle 200 on the display 270. In this context, a press-and-hold action by the user would accept the warning and continue; no action by the user would cancel and begin the termination of the pairing sequence. If the user confirms a warning, at 1016 a signal confirming the warning message is processed by the dongle 200, and an “OK” tone is signaled by the dongle at 1022. If the user chooses ok/continue, at 1018 an “OK” signal is processed by the dongle 200 and at 1022 an “OK” tone is signaled by the dongle 200. If the user chooses to cancel an action, a cancel signal is processed by the dongle 200 at 1020 and a cancel tone is signaled by the dongle at 1024. The “OK” tone and cancel tones, as well as any other tones produced by the dongle 200, signaled by the dongle 200 may be tones of different pitch, a series of tones, or a combination of tone pitch and length changes.

(25) If the message at 1104 does require a user action, at 1110 the dongle 200 waits for the user input action and corresponding signal from steps 1012-1020. If a message displayed at 1104 does not require user action, at 1106 the message is displayed for a long enough period of time for the user to read the message, e.g., 5-30 seconds. If the message displayed at 1104 is not the last message, at 1108 the process returns to 1102 to display the next message. If the message displayed at 1104 is the last message at 1108, the dongle may wait for a user input at 1112 before being removed at 1114, or at 1116 may play a series of tones, e.g., three ascending tone beeps, to indicate the process is complete at 1118. If, after the process has halted at 1118, five minutes have elapsed as determined at 1120, the dongle 200 will signal an alarm tone at 1122 until it is removed.

(26) The following three examples use a dongle 200 with a screen 270, which may be an OLED screen or other suitable simple display. The following examples also implement automatic PIN calculation based on a read BCM number and use a user input such as the press to ok/confirm, press-and-hold to confirm a warning, and wait to cancel.

(27) 1) Pairing Procedure started but canceled when user decided not to continue and erase keys from vehicle:

(28) a. Per the user instructions provided with the dongle, user gets in car, locks doors, turns on hazard lights, and makes sure ignition is off;

(29) b. User turns dial to invalid type and plugs in dongle;

(30) c. “Invalid Type Selected” message displayed;

(31) d. “Turn dial to Valid Type” message displayed;

(32) e. User turns dial to Type 2, a valid type;

(33) f. “Type 2 selected. Press OK/Continue” message displayed;

(34) g. User presses OK/Continue button;

(35) h. Dongle reads BCM number and calculates PIN code;

(36) i. “Insert first key in programming slot then press OK/Continue” message displayed;

(37) j. User inserts first key in programming slot then presses OK/Continue;

(38) k. “Warning: Do not press brake pedal until prompted” message displayed;

(39) l. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(40) m. User presses vehicle's Start/Stop button;

(41) n. Vehicle ignition switches on;

(42) o. User presses OK/Continue button;

(43) p. “All keys will be erased” message displayed;

(44) q. “Are you sure? If sure, press and hold OK/Continue within 5 . . . 4 . . . 3 . . . 2 . . . 1 seconds” message displayed;

(45) r. No action, signaling cancel to device;

(46) s. “Sequence canceled” message displayed;

(47) t. “Remove key from programming slot, press Start/Stop button, then press OK/Continue.” message displayed;

(48) u. User removes key from programming slot then presses vehicle's Start/Stop button;

(49) v. Vehicle ignition switches off;

(50) w. User presses OK/Continue button;

(51) x. “Please unplug dongle” message displayed;

(52) y. User unplugs dongle.

(53) 2) Pairing Procedure where user only pairs one key to vehicle:

(54) a. Per the user instructions provided with the dongle, user gets in car, locks doors, turns on hazard lights, and makes sure ignition is off;

(55) b. User plugs in dongle;

(56) c. “Type 2 selected. Press OK/Continue” message displayed;

(57) d. User presses OK/Continue button;

(58) e. Dongle reads BCM number and calculates PIN code;

(59) f. “Insert first key in programming slot then press OK/Continue” message displayed;

(60) g. User inserts first key in programming slot then presses OK/Continue;

(61) h. “Warning: Do not press brake pedal until prompted” message displayed;

(62) i. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(63) j. User presses vehicle's Start/Stop button;

(64) k. Ignition switches on;

(65) l. User presses OK/Continue button;

(66) m. “All keys will be erased” message displayed;

(67) n. “Continue? If sure, press and hold OK/Continue within 5 . . . 4 . . . 3 seconds” message displayed;

(68) o. User presses and holds OK/Continue button, signaling Confirm Warning to device;

(69) p. “Sequence started. Do NOT unplug dongle.” message displayed;

(70) q. Device sends command to start pairing sequence along with calculated PIN code;

(71) r. “Starting Pairing Sequence” message displayed;

(72) s. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(73) t. User presses vehicle's Start/Stop button;

(74) u. Ignition switches off;

(75) v. User presses OK/Continue button;

(76) w. “After next step, security indicator should blink 5 times.” message displayed;

(77) x. “Press Vehicle's Start/Stop button” message displayed;

(78) y. User presses vehicle's Start/Stop button;

(79) z. Ignition switches on, security indicator blinks 5 times;

(80) aa. “Did security indicator blink 5 times? For yes, press OK/Continue” message displayed;

(81) bb. User presses OK/Continue button;

(82) cc. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(83) dd. User presses vehicle's Start/Stop button;

(84) ee. Ignition switches off;

(85) ff. User presses OK/Continue button;

(86) gg. “First Key paired” message displayed;

(87) hh. “Pair another? If yes, press OK/Continue within 5 . . . 4 . . . 3 . . . 2 . . . 1 seconds” message displayed;

(88) ii. No action, signaling cancel to device;

(89) jj. “Only 1 key paired” message displayed;

(90) kk. “Verify first key in programming slot then press OK/Continue” message displayed;

(91) ll. User verifies first key in programming slot then presses OK/Continue;

(92) mm. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(93) nn. User presses vehicle's Start/Stop button;

(94) oo. Ignition switches on;

(95) pp. User presses OK/Continue button;

(96) qq. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(97) rr. User presses vehicle's Start/Stop button;

(98) ss. Ignition switches off;

(99) tt. User presses OK/Continue button;

(100) uu. “Depress brake pedal. Press Vehicle's Start/Stop button until engine starts, then press OK/Continue” message displayed;

(101) vv. User depresses brake pedal, presses vehicle's Start/Stop button;

(102) ww. Vehicle starts;

(103) xx. User presses OK/Continue button;

(104) yy. “Please unplug dongle” message displayed;

(105) zz. User unplugs dongle.

(106) 3) Pairing Procedure where dongle automatically determines communications mode, communications protocol, bus type, and/or set of commands and functions to be used in pairing a vehicle key with a vehicle:

(107) a. Per the user instructions provided with the dongle, user gets in car, locks doors, turns on hazard lights, and makes sure ignition is off;

(108) b. User plugs in dongle;

(109) c. Dongle automatically determines one or more of the communications mode, communications protocol, bus type, and/or set of commands and functions to be used in pairing the vehicle key with the vehicle;

(110) d. User presses OK/Continue button;

(111) e. Dongle reads BCM number and calculates PIN code;

(112) f. “Insert first key in programming slot then press OK/Continue” message displayed;

(113) g. User inserts first key in programming slot then presses OK/Continue;

(114) h. “Warning: Do not press brake pedal until prompted” message displayed;

(115) i. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(116) j. User presses vehicle's Start/Stop button;

(117) k. Ignition switches on;

(118) l. User presses OK/Continue button;

(119) m. “All keys will be erased” message displayed;

(120) n. “Continue? If sure, press and hold OK/Continue within 5 . . . 4 . . . 3 seconds” message displayed;

(121) o. User presses and holds OK/Continue button, signaling Confirm Warning to device;

(122) p. “Sequence started. Do NOT unplug dongle.” message displayed;

(123) q. Device sends command to start pairing sequence along with calculated PIN code;

(124) r. “Starting Pairing Sequence” message displayed;

(125) s. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(126) t. User presses vehicle's Start/Stop button;

(127) u. Ignition switches off;

(128) v. User presses OK/Continue button;

(129) w. “After next step, security indicator should blink 5 times.” message displayed;

(130) x. “Press Vehicle's Start/Stop button” message displayed;

(131) y. User presses vehicle's Start/Stop button;

(132) z. Ignition switches on, security indicator blinks 5 times;

(133) aa. “Did security indicator blink 5 times? For yes, press OK/Continue” message displayed;

(134) bb. User presses OK/Continue button;

(135) cc. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(136) dd. User presses vehicle's Start/Stop button;

(137) ee. Ignition switches off;

(138) ff. User presses OK/Continue button;

(139) gg. “First Key paired” message displayed;

(140) hh. “Pair another? If yes, press OK/Continue within 5 . . . 4 . . . 3 . . . 2 . . . 1 seconds” message displayed;

(141) ii. No action, signaling cancel to device;

(142) jj. “Only 1 key paired” message displayed;

(143) kk. “Verify first key in programming slot then press OK/Continue” message displayed;

(144) ll. User verifies first key in programming slot then presses OK/Continue;

(145) mm. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(146) nn. User presses vehicle's Start/Stop button;

(147) oo. Ignition switches on;

(148) pp. User presses OK/Continue button;

(149) qq. “Press Vehicle's Start/Stop button then press OK/Continue” message displayed;

(150) rr. User presses vehicle's Start/Stop button;

(151) ss. Ignition switches off;

(152) tt. User presses OK/Continue button;

(153) uu. “Depress brake pedal. Press Vehicle's Start/Stop button until engine starts, then press OK/Continue” message displayed;

(154) vv. User depresses brake pedal, presses vehicle's Start/Stop button;

(155) ww. Vehicle starts;

(156) xx. User presses OK/Continue button;

(157) yy. “Please unplug dongle” message displayed;

(158) zz. User unplugs dongle.

(159) With reference now to FIG. 12, a flowchart 1200 representing a system and method for associating a VIN with an OBD programming dongle for use with pairing a programmable vehicle key with a vehicle associated with the VIN is provided. The process shown in the flowchart 1200 provides an explicit whitelist of VINs and/or keys allowed to be paired by a particular dongle. At step 1202, when the dongle is manufactured at a factory, or when the dongle is purchased by a user, the VIN associated with the user's vehicle is provided by the user. At step 1204, the VIN of the vehicle that has been provided by the user is programmed into or stored in the dongle. This adds the customer provided VIN to a whitelist of authorized VINs with which the dongle may be used to pair a key. The customer may provide additional VINs to be added to the whitelist at the time of purchase or at a later time. At step 1206, a whitelist of authorized vehicle key hardware IDs (including all hardware IDs) may be created and programmed or stored into the dongle. The list of authorized vehicle key hardware IDs is used to limit the use of the dongle such that only specific vehicle keys, whose hardware IDs are included in the explicit whitelist, may be allowed to be paired using that specific dongle. At step 1208, a single-VIN pairing limit is set within the dongle. The single-VIN pairing limit is a numerical value that limits or determines the number of times the dongle may be used to pair an authorized key or keys with a single vehicle or VIN. At step 1210, a total-use pairing limit may be created and set within the dongle. The total-use pairing limit determines the total number of times the dongle may be used to pair vehicle keys (e.g., authorized vehicle keys as determined by whitelisted vehicle key hardware ID) to any authorized vehicle or VIN on a whitelist.

(160) With reference now to FIG. 13, a flowchart 1300 representing a system and method for using an activation PIN to enable pairing of a vehicle key with a vehicle by a dongle is provided. At step 1302, at the time the dongle is manufactured at a factory a finite list of usable PINs is generated and at step 1304 is programmed or stored in the dongle. The finite list of usable PINs is generated by based in part on a predetermined algorithm and a unique hardware ID stored on and associated with the specific dongle. At step 1306, when the dongle is purchased by a user or otherwise is activated, a valid set of PINs, which may be a single valid PIN, from the finite list of usable PINs is provided to the user. At step 1308, the user enters a PIN from the valid set of PINs via a user interface associated with the dongle. The user interface may be part of the dongle, for example a set of buttons and a display or a touch display, or may be another device, such as a smart phone or computer, associated with and in communication with the dongle by a wired or wireless connection. Upon entry of the PIN from the valid set of PINs, pairing of a vehicle key with a vehicle by the dongle is enabled and the pairing process may begin. At step 1310, the PIN used and input by the user is removed from the valid set of PINs after a predetermined number of uses of the used PIN. This number may be one, for a single use dongle, or may be a larger predetermined number.

(161) With reference now to FIGS. 14-16, a series of flowcharts illustrating processes for automatically identifying one or more of a communications mode, communications protocol, bus type, and/or set of commands and responses to be used in paring a key with a vehicle using a dongle are provided. The processes shown in the flowcharts 1400, 1500, and 1600 may be used in any of, for example, the steps 304A shown in FIG. 3, 407 shown in FIG. 4, or 907 shown in FIG. 9, or in a similar automatic process of identifying one or more of a communications mode, communications protocol, bus type, and/or set of commands and responses to be used in paring a key with a vehicle using a dongle such as the dongle 200. Specifically, the processes shown in the flowcharts 1400, 1500, and 1600 may be one or more sets of code, logic, or instructions stored in the memory 214 and executed by the processor 212 to configure to dongle 200 to perform a key pairing process with a vehicle over an OBD interface.

(162) FIG. 14 provides a process 1400 for automatically identifying one or more of a communications mode, communications protocol, bus type, and/or set of commands and responses to be used in paring a key with a vehicle using a dongle 200. In step 1402 a VIN is read by the dongle from the vehicle to which the dongle is connected over an OBD interface. In step 1404 the read VIN is looked up in a lookup table or matched using a matching process. In step 1406 the dongle uses the VIN to identify one or more of a set of commands and responses, a communications mode, a communications protocol, or a bus type associated with the VIN in the lookup table. In step 1408, the dongle uses the information from step 1406 to configure dongle communications with the vehicle based on the identified one or more of a set of commands and responses, a communications mode, a communications protocol, or a bus type associated with the VIN from the lookup table. In step 1410 the dongle uses the configured settings and/or configurations to communicate with the vehicle to perform a key pairing process.

(163) FIG. 15 provides a process 1500 for automatically identifying one or more of a communications mode, communications protocol, bus type, and/or set of commands and responses to be used in paring a key with a vehicle using a dongle 200. In step 1502 the dongle measures voltage levels and frequency of communication on each bus line in the vehicle via the vehicle OBD connector. In step 1504 the dongle uses a lookup table or a matching process to identify a vehicle or entry associated with the readings and measurements from step 1502. In step 1506 the dongle uses the readings and measurements and/or the identified vehicle or entry to identify one or more of a set of commands and responses, a communications mode, a communications protocol, or a bus type associated with the vehicle or entry in the lookup table. In step 1508, the dongle uses the information from step 1506 to configure dongle communications with the vehicle based on the identified one or more of a set of commands and responses, a communications mode, a communications protocol, or a bus type associated with the vehicle from the lookup table. In step 1510 the dongle uses the configured settings and/or configurations to communicate with the vehicle to perform a key pairing process.

(164) FIG. 16 provides a process 1600 for automatically identifying one or more of a communications mode, communications protocol, bus type, and/or set of commands and responses to be used in paring a key with a vehicle using a dongle 200. In step 1602 the dongle sends commands on each existing or present bus interface to the vehicle over the OBD interface. In step 1604 the dongle receives a set of responses from the vehicle based on the commands sent from step 1602. In step 1606 the dongle uses the received responses to identify one or more of a set of commands and responses, a communications mode, a communications protocol, or a bus type associated with the received responses in a lookup table or using a matching process. In step 1608, the dongle uses the information from step 1606 to configure dongle communications with the vehicle based on the identified one or more of a set of commands and responses, a communications mode, a communications protocol, or a bus type associated with the vehicle. In step 1610 the dongle uses the configured settings and/or configurations to communicate with the vehicle to perform a key pairing process.

(165) While the invention has been described by reference to certain preferred embodiments, it should be understood that numerous changes could be made within the spirit and scope of the inventive concept described. Also, the present invention is not to be limited in scope by the specific embodiments described herein. It is fully contemplated that other various embodiments of and modifications to the present invention, in addition to those described herein, will become apparent to those of ordinary skill in the art from the foregoing description and accompanying drawings. Thus, such other embodiments and modifications are intended to fall within the scope of the following appended claims. Further, although the present invention has been described herein in the context of particular embodiments and implementations and applications and in particular environments, those of ordinary skill in the art will appreciate that its usefulness is not limited thereto and that the present invention can be beneficially applied in any number of ways and environments for any number of purposes. Accordingly, the claims set forth below should be construed in view of the full breadth and spirit of the present invention as disclosed herein.