# Patent

## Title
System and method for processing MEID data

## Abstract

A system, method, computer readable medium, and computer program for processing wireless communication device identification numbers such as MEID numbers 10 in any standard representation (such as decimal or hexadecimal) and converting the wireless communication device identification number 140 to all commonly used forms and representations. This capability ensures older systems and wireless networks are compatible with the latest standards in wireless communication device identification numbers. Additionally, the system can validate the wireless communication device identification numbers 70 and verify/calculate any check digits 100.

## Background
CROSS REFERENCE TO RELATED APPLICATION
This U.S. Utility patent application is a continuation application of, and claims priority to, copending U.S. patent application Ser. No. 11/465,086, filed Aug. 11, 2006, which claims the benefit of U.S. Patent Application Ser. No. 60/595,965, filed on Aug. 20, 2005, the contents of each of which are hereby incorporated by reference in their entirety into this disclosure.


BACKGROUND
By means of example only, wireless communication devices have traditionally used electronic serial numbers (ESN) and/or mobile identification numbers (MIN) to identify the communication device to the towers receiving and relaying the communications. As wireless communication device usage (including mobile telephones, wireless data devices, wireless email devices, and any other device using a wireless network) increases, the number of unique ESN and/or MIN numbers that have never been issued diminishes. Eventually, there will be no more available numbers to be issued.
With mobile communication equipment companies running out of traditional ESN numbers and having to adopt new standards, many problems develop within their existing infrastructure and support systems. One such problem is how to utilize the new identification numbers within old computer and management systems. The problem arises for any company involved in the wireless communication industry when these new numbers are used in old software and/or management systems to have wireless communication devices operating on the wireless network.
For example, an old system may require only decimal numbers, but only a hexadecimal ESN number is available. Or, the system may need to convert several types of numbers, and different software may be required for each type of conversion. This creates a major problem for employees trying to activate wireless communication devices on the network because of the complicated nature of converting numbers such as the mobile equipment identifier (MEID) between its various forms.
The following references and other references mentioned in this application contain background information and are hereby incorporated by reference as if included herein in their entirety for the purpose of US patent practice and other jurisdictions where permitted as if set out fully herein: TIA website: http://www.tiaoline.org; 3 GPP2 website: http://www.3gpp2.org; http://cn.wikipedia.org/wiki/Luhn_formula; TIA—MEID Standards Update, version 1.7, published by the TIA, dated August 2004; TIA—MEID Overview, version 1.3, published by the TIA, dated January 2005; TS 122 016, version 5.0.0, published by ETSI, dated June 2002; TS 23.003, version 3.10.0, published by 3GPP, dated June 2002; S.R0048-A, version 1.2.0, published by 3GPP2, dated April 2004; X.P0008-0 v2.0, version 2.0, published by 3GPP2, dated May 2005; TIA-928, published by TIA, dated August 2004; TIA-928-1 Addendum Summary, new annex for TIA-928, undated; ESNGuidelinsV18a, version 1.8a, published by TIA, dated September 2003; SC.R4002.0, version 2.0, published by 3GPP2, dated October 2004; N.S0005-01, version 1.0, published by 3GPP2, undated.
There remains in the field a need for a system, method, computer readable medium, and computer program for processing wireless communication device identification numbers such as MEID numbers in any standard representation (such as decimal or hexadecimal) and converting the wireless communication device identification number to all commonly used forms and representations. This capability would ensure older systems and wireless networks are compatible with the latest standards in wireless communication device identification numbers. Additionally, the system would desirably also simultaneously validate the wireless communication device identification numbers and verify/calculate any check digits.
SUMMARY OF THE INVENTION
The present invention provides a method, computer program, computer readable medium, and a system for converting numbers such as MEID between its various forms for use in other systems that do not support the provided form of MEID. Additionally, the invention can generate pseudo electronic serial numbers (pESN) for systems that do not support the use of MEID. Further, the invention can generate a variety of conversions in a single package so that multiple conversion programs are not needed.
The invention can be provided as a stand alone converter or calculator or may be integrated into other software packages to automate the process. For example, the system may be integrated with an existing system that requires a hexadecimal MEID but all MEID numbers are provided via bar code in the decimal form. The invention can act to convert the scanned decimal MEID to its hexadecimal form and validate the number before providing the hexadecimal MEID to an additional component of the system.
The output providing the converted data can be of any form known in the art including software transmission, software link, analog electric signal, digital electric signal, TCP/IP, XML, computer monitor, handheld display screen, printer, or any other common digital or analog protocol. This list is meant to be only a sample and not include all possible means of transmission.
Certain embodiments of this invention provide methods of validating and converting wireless communication device identification numbers. They can include receiving a wireless communication device identification number; converting the wireless communication device identification number to an equivalent representation and transmitting the equivalent representation.
The wireless communication device identification number can be received from a bar code scanner. The transmitting of the equivalent representation can be via display screen, electronic link, or the like and combinations thereof.
Other embodiments provide systems for validating and converting wireless communication device identification numbers. They can include means for receiving a wireless communication device identification number, means for converting the wireless communication device identification number to an equivalent representation, means for validating the wireless communication device identification number and its equivalent representation and means for communicating the equivalent representation.
The system can include a keypad to input a wireless communication identification number. The system can include a software link, a display screen, and the like or a combination thereof to transmit the equivalent representation.
Some embodiments provide a computer readable medium that can include a set of instructions capable of being executed by a computer. The set of instructions can include instructions for receiving a wireless communication device identification number, instructions for validating the wireless communication device identification number, instructions for converting the wireless communication device identification number into an equivalent representation and instructions for outputting the equivalent representation of the wireless communication device identification number.
The wireless communication device identification number can be in hexadecimal format. The equivalent representation of the wireless communication device identification number can be in decimal format. The output of the equivalent representation of the wireless communication identification number can be to a display screen, and can be via a software link.
Other embodiments provide a computer program that can include a set of instructions capable of being executed by a computer. The instruction set can include instructions for receiving a wireless communication device identification number, validating the wireless communication device identification number, converting the wireless communication device identification number into an equivalent representation, and transmitting the equivalent representation of the wireless communication device identification number.
The wireless communication device identification number can be in hexadecimal format. The equivalent representation of the wireless communication device identification number can be in decimal format. The output of the equivalent representation of the wireless communication identification number can be to a display screen, and can be via a software link.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a flowchart of a hexadecimal to decimal MEID process according to one embodiment of the invention.
FIG. 2 depicts a hexadecimal to decimal MEID result in a spreadsheet display screen when both a valid hexadecimal MEID and a check digit have been entered, according to one embodiment of the present invention.
FIG. 3 depicts a hexadecimal to decimal MEID result in a spreadsheet display screen when a valid hexadecimal MEID has been entered but with no check digit, according to one embodiment of the present invention.
FIG. 4 depicts a hexadecimal to decimal MEID result in a spreadsheet display screen when a MEID that has too many digits (and is thus invalid) has been entered, according to one embodiment of the present invention.
FIG. 5 depicts a hexadecimal to decimal MEID result in a spreadsheet display screen when a MEID that has too few digits (and is thus invalid) has been entered, according to one embodiment of the present invention.
FIG. 6 depicts columns A and B of a spreadsheet with formulas for performing necessary validations and conversions according to one embodiment of the present invention.
FIG. 7 depicts columns C, D and E of the spreadsheet of FIG. 6.
FIG. 8 depicts columns F, G and H of the spreadsheet of FIG. 6.
FIG. 9 depicts columns I, J and K of the spreadsheet of FIG. 6.
FIG. 10 depicts columns L, M and N of the spreadsheet of FIG. 6.
FIG. 11 depicts columns 0, P, Q and R of the spreadsheet of FIG. 6.
FIG. 12 depicts columns S, T and U of the spreadsheet of FIG. 6.
FIG. 13 depicts column V of the spreadsheet of FIG. 6.
FIG. 14 depicts columns W and X of the spreadsheet of FIG. 6.
FIG. 15 depicts column Y of the spreadsheet of FIG. 6.
FIG. 16 depicts columns Z and AA of the spreadsheet of FIG. 6.



DETAILED DESCRIPTION
The following acronyms and terms will be used in this document:

    
    
        3GPP=3rd Generation Partnership Project
        3GPP2=3rd Generation Partnership Project 2
        ESN=Electronic Serial Number
        ETSI=European Telecommunications Standards Institute
        GHA=Global Hexadecimal Administrator
        GSM=Global System for Mobile communications
        IMEI=International Mobile Equipment Identity
        MEID=Mobile Equipment Identifier
        pESN=pseudo Electronic Serial Number
        TIA=Telecommunications Industry Association
        SNR=Serial Number
        Algorithm: A precise rule (or set of rules) specifying how to solve some problem.
        Bit: A fundamental unit of information having just two possible values, as either of the binary digits 0 or 1.
        Concatenate: To connect or link in a series or chain; to arrange (strings of characters) into a chained list.
        Decimal: Of or pertaining to a number system having 10 as its base.
        Hexadecimal: Of or pertaining to a number system having 16 as its base.
        Luhn: the algorithm developed by Hans Peter Luhn (1896-1964) that is commonly known as “Mod10”.
        Pseudo: (often used as a prefix) not genuine but having the appearance of, e.g. “pseudo-ESN”: a number derived from the hexadecimal MEID having characteristics similar to an ESN and used in place of the ESN.
    
    


All cellular transceivers have a unique serial number that identifies the specific unit and manufacturer. The serial number is better known as the electronic serial number (ESN) of the device. The ESN is expressed in two ways mathematically, decimal (base 10) and hexadecimal (base 16). Both numbers have the same value, just a different way of noting them.
However, the number of available ESN's is limited, and the current supply is running out. The Telecommunications Industry Association (TIA), together with industry leaders recognized this problem and promulgated a new method to assign serial numbers to cellular devices. This new type of ID number is called the mobile equipment identifier (MEID). The MEID serves the same basic purpose of an ESN and/or mobile identification number (MIN), that is, to identify wireless communication devices on the network, but the MEID is a different format of number. The MEID is used to calculate a pseudo electronic serial number (pESN) in hexadecimal for the handset. Still, the ESN and MEID are very similar in form and function.
The international mobile equipment identity (IMEI) is used in the Global System for Mobile Communications (GSM) technology. The IMEI will be a 14 digit decimal number, and is not converted into hexadecimal. It should not be confused with the MEID. They look the same, but the MEID must have at least 1 alpha character from the set of (A,B, . . . F), while the IMEI will never have any letters in the number. Furthermore, the MEID is hexadecimal and has no check digit.
When the MEID is not available (i.e. network being upgraded), the pESN is used by the cellular network to identify a cellular transceiver over the air. The pESN will be hexadecimal and will be the same format as a hexadecimal ESN. The pESN will always begin with hexadecimal “80”.
The ESN is comprised of a of a 32 bit word. The first 8 bits are the manufacturer identification and the remaining 24 bits are the unit serial number. To obtain the value of the 32 bit word, you need to take each string of four bits and convert it to its hexadecimal equivalent.
Hexadecimal digits are an element from the set of (0,1 . . . ,9,A,B, . . . ,F). A hexadecimal digit is a representation of a four bit string. As an example: 0000 0010 1010 0011 0100 1100 1000 0000=05A34C80 (hexadecimal).
The left of the number is padded with zeros to create enough decimal places to complete the decimal number. The first part is always 3 digits, and the last part is always 8 digits. As an example:

    
    
        1. Hexadecimal ESN=05A34C80
        2. Take the first 2 digits and convert them . . . .
        3. 05 hex is equal to 005 decimal. (note the padding of 2 zeros to the left).
        4. Take the last 6 digits and convert them . . . .
        5. A34C80 hex is equal to 10701952 decimal.
        6. Concatenate the first 3 decimal digits in front of the last 8 decimal digits.
        7. Repeating this procedure, it is seen that 00510701952 is the 11 digit decimal ESN.
    
    


The ESN rules for hexadecimal numbers include the following:

    
    
        1. The ESN is always eight (8) hexadecimal digits long.
        2. The first two (2) hexadecimal digits will be the manufacturer identifier. There is an exception for ESN's from Japan, which will have the manufacturer code at the end of the ESN.
        3. The last six (6) hexadecimal digits will be the unit serial number.
        4. The maximum value of the hexadecimal manufacturer identifier is “FF”.
        5. The maximum hexadecimal manufacturer identifier that is allowed is “FE”.
        6. The maximum allowed value hexadecimal serial number is “FFFFFF”.
    
    


The ESN rules for decimal numbers include the following:

    
    
        1. The ESN is always eleven (11) decimal digits long.
        2. The first three (3) decimal digits will be the manufacturer identifier.
        3. The last eight (8) decimal digits will be the unit serial number.
        4. The maximum value of the decimal manufacturer identifier is “255”.
        5. The maximum decimal manufacturer identifier that is allowed is “254”.
        6. The maximum allowed value decimal serial number is “16777215”.
    
    


The ESN number format of hexadecimal numbers is represented as an eight-digit alpha numeric number with the following format:














MFG
Serial Number

























M
M
S
S
S
S
S
S










wherein MM has a valid range from 01 to FF and a maximum allowed value of FE, and SSSSSS has a valid range from 000000 to FFFFFF and a maximum allowed value of FFFFFF.

The ESN number format for decimal numbers is represented as an 11-digit number with the following format:











MFG
Serial Number

























M
M
M
S
S
S
S
S
S
S
S









wherein MMM has a valid range from 001 to 2255 and a maximum allowed value of 254, and SSSSSSSS has a valid range from 000001 to 16777215 and a maximum allowed value of 16777215.

The MEID is a string of 14 hexadecimal digits and is comprised of a 56 bit word. The first 8 bits are reserved by TIA, the next 24 bits are the manufacturer identification, and the remaining 24 bits are the unit serial number. To obtain the value of the 56 bit word, one needs to take each string of four bits and convert it to its hexadecimal equivalent. As an Example: 1010 1010 0000 0000 1010 0010 0011 1011 0001 1011 0011 1101 0101 0110=AA00A23B1B3D56 (hexadecimal).
The left of the number must be padded with zeros to create enough decimal places to complete the decimal number. The first part will always be 10 digits, and the last part will always be 8 digits. As an example, for hexadecimal MEID=AA00A23B 1B3D56:

    
    
        1. Take the first 8 digits and convert them . . . .
        2. AA00A23B hex is equal to 2852168251 decimal.
        3. Take the last 6 digits and convert them . . . .
        4. 1B3D56 hex is equal to 01785174 decimal (note the padding of 1 zero to the left).
        5. Concatenate the first 10 decimal digits in front of the last 8 decimal digits.
        6. 285216825101785174 is the 18-digit decimal MEID.
    
    


MEID rules for hexadecimal numbers include the following:

    
    
        1. The MEID is always fourteen 14 hexadecimal digits long plus one (1) check digit.
        2. The first two (2) hexadecimal digits are assigned by the Global Hexadecimal MEID Administrator (GHA).
        3. The next six (6) hexadecimal digits are the manufacturer identifier.
        4. The next six (6) hexadecimal digits will be the unit serial number.
        5. The last one (1) hexadecimal digit is the Check Digit, which is not transmitted nor used in any of the conversion calculations.
        6. The value of the GHA hexadecimal digits is “A0” through “FF”.
        7. The maximum value of the hexadecimal manufacturer identifier is “FFFFFF”.
        8. The maximum hexadecimal manufacturer identifier that is allowed is “FFFFFE”.
        9. The maximum allowed value hexadecimal serial number is “FFFFFF”.
        10. The check digit is one of the hexadecimal digits 0-F.
    
    


The distribution of the manufacturer identifier field may be dependent on the number of administration bodies. In the case of a small number of global administration bodies, the entire manufacturer identifier field may be allocated to identify a mobile manufacturer. In the case of a large number of regional administration bodies, the manufacturer identifier field may be distributed to indicate the regional administration body and the mobile manufacturer, for example MMMM, MM.
MEID rules for decimal numbers include the following:

    
    
        1. The MEID is always eighteen (18) decimal digits long plus one (1) check digit.
        2. The first ten (10) decimal digits will be the manufacturer identifier.
        3. The last eight (8) decimal digits will be the unit serial number.
        4. The maximum value of the decimal manufacturer identifier is “4294967295”.
        5. The maximum decimal manufacturer identifier that is allowed is “4278190078”.
        6. The maximum allowed value decimal serial number is “16777215”.
        7. The check digit will be one of decimal digits 0-9.
    
    


The hexadecimal MEID number format has the appearance of a 14-digit hexadecimal number with the following format:













Reserved
Manufacturer
Serial Number
CD





























R
R
M
M
M
M
M
M
S
S
S
S
S
S
C









wherein RR has a valid range from AO to FF and a maximum allowed value of FE, MMMMMM has a maximum allowed value of FFFFFE, SSSSSS has a valid range from 000000 to FFFFFF and a maximum allowed value of FFFFFF, and the check digit valid range is 0-F.

The decimal MEID number format can have the appearance of an 18-digit decimal number with the following format:












Manufacturer
Serial Number
CD

































R
R
M
M
M
M
M
M
M
M
S
S
S
S
S
S
S
S
C









wherein RR and MMMMMM are used together as one number for the conversion, RRMMMMMMMM has a valid range from 2684354560 to 4294967295 and a maximum allowed value of 4278190078, SSSSSSSS has a valid range from 00000001 to 16777215 and a maximum allowed value of 16777215, and the check digit valid range is 0-9.

The check digit is appended to the end of the MEID, in both decimal and hexadecimal formats. The check digit is not transmitted, nor used in any other calculations.
The Check Digit (CD) is calculated using the “Luhn algorithm’. The Luhn algorithm, also known as the “modulus 10” or “mod 10” algorithm, was developed in the 1960s as a method of validating identification numbers. Much of its notoriety comes from its adoption by credit card companies shortly after its creation in the late 1960s by IBM scientist Hans Peter Luhn (1896-1964). It is not intended to be a cryptographically secure hash function, but it is used to protect against random error.
The Luhn formula generates a check digit, which is usually appended to the end of a number to generate the full number. This number must pass the following algorithm (and the check digit chosen and placed so that the full number will pass). The following is an example of determining the correct check digit when it is unknown: Starting with the last digit and moving left, double the value of all the alternating digits. For any sum that has 2 digits, add the digits together. For example, 2121 becomes 2222, while 3857 becomes 3755 (from 3+(1+6)+5+(1+4)). Add all these digits together. For example, 2121 becomes 2222, then 2+2+2+2 is 8; while 3857 becomes 3755, then 3+7+5+5 is 20. So, 2121 is not valid (as previously shown, it comes out to 8) so the value of the check digit is calculated by subtracting the sum of the numbers from the sum of the numbers rounded to the next highest denominator of 10. In this case the sum is equal to 8, and the next highest rounded denominator of 8 is 10. Eight from 10 is equal to 2. The check digit for 2121 will be 2, and the 2 should be placed to the right of the full beginning number. So 2121 becomes 21212 with its check digit in place. 3857 adds up to 20, and 20 ends with a 0. The check digit for 3857 will be 0, and the 0 should be placed to the right of the full beginning number. So 3857 becomes 38570 with its check digit in place.
In the world of MEID, the Luhn Algorithm is modified to operate in base 16 (hexadecimal). The difference is that the final digit will be hexadecimal from the set of (0,1 . . . ,9,A,B, . . . ,F). The number must pass the following algorithm (and the check digit chosen and placed so that the full number will pass). The following is an example of determining the correct check digit when it is unknown: Starting with the last digit and moving left, double the value of all the alternating digits. For any sum that has 2 digits, add the digits together. For example, 2E1A becomes 2D16 (from 2+(1+C)+1+(1+4)) while AB17 becomes A71E (from (A+(1+6)+1+E). Add all these digits together. For example, 2E1A becomes 2D16, then 2+D+1+6 is 16; while AB17 becomes A71E, then A+7+1+E is 20. So, 2E1A is not valid (as previously shown, it comes out to 16) so the check digit is calculated by subtracting the sum of the numbers from the sum of the numbers rounded to the next highest denominator of 16 (0×10). In this case the sum is equal to 16, and the next highest rounded denominator of 16 (0×10) of 16 is 20. So 16 from 20 is equal to A (this is all in hexadecimal). The check digit for 2E1A will be A, and the A should be placed to the right of the full beginning number. So 2E1A becomes 2E1AA with its check digit in place. While AB17 adds up to 20, and 20 ends with a 0. The check digit for AB17 will be 0, and the 0 should be placed to the right of the full beginning number. So AB17 becomes AB170 with its check digit in place.
In the specific example that follows, the MEID is AA00A23B1B3D56 and the check digit is not known. The first step is to double every other digit, starting with the first digit on the right and working to the left. The following table shows this step (from A+(1+4)+0+0+A+4+3+(1+6)+1+(1+6)+3+(1+A)+5+C):











MEID (Hexadecimal)
CD





























A
A
0
0
A
2
3
B
1
B
3
D
5
6



A
5
0
0
A
4
3
7
1
7
3
B
5
C
2









4E (hexadecimal) is the sum of all numbers. Rounding up 4E to the next highest denominator of 16 (0×10) gets 50. Subtracting the 4E from 50 leaves 2 (this is all in hexadecimal). So the check digit must be 2. The resulting hexadecimal MEID, with check digit, would be: AA00A23B1B3D562.
To verify the check digit in an MEID, one begins with the second digit from the right and doubles every other digit working toward the left. The following are examples of verifying the validity of the check digit, which is the last number on the right. Assume the number in question is A7B6C. Begin with the second to last digit and double it, and then every other digit going to the left. A7B6C becomes AEBCC. Now add these digits up A+E+B+C+C=3B. This is not a valid number, because the last digit in the final sum does not equal 0. Assume the next number in question is 37ABE. Begin with the penultimate digit from the right and double it, and then every other digit going to the left. 37ABE becomes 3EA7E. Now add these digits up 3+E+A+7+E=30. This is a valid number, because the last digit in the final sum is 0.
All numbers that have a check digit, when run through this algorithm, must end in 0 to be considered valid. The above example, AA00A23B1B3D562, becomes 50 when placed into the Luhn Algorithm, base 16. The final sum ends in 0, so it is a valid number. A pseudo electronic serial number (pESN) is a 32 bit number derived from the hexadecimal MEID and used in place of the ESN. The high order 8 bits are always 0×80 and the remaining 24 bits are derived using the Secure Hash Algorithm—1 (SHA-1). The SHA-1 will report back a 160 bit hexadecimal number. The least significant 24 bits are used in the creation of the pESN.
The SHA-1 is an algorithm that is used for security applications. This algorithm is used by many industries and the government. A “free” SHA-1 calculator application is publicly available at http://www.slavasoft.com/hashcalc/. This calculator contains 12 different popular algorithms, just uncheck all but the SHA-1 for this application. You must use the “Hex string” for the Data Format in order to generate the correct value. The “Text string” will result in a different value and should not be used.
The first 8 bits of the pESN will always be “1000 0000”. In hexadecimal this equates to “80”. The final 24 bits are derived from the SHA-1 calculation of the 14 character MEID. The MEID used must be hexadecimal format to work properly. With the 24 bits from the SHA-1 calculation, concatenating the first 8 bits to the last 24 bits, reveals a 32 bit word. This 32 bit word is transmitted as an ESN in systems that have not yet implemented MEID. The handset creates the pESN for systems that do not yet support MEID. The probability of ESN conflicts exists, but is initially minimal. However, system operators are working toward advancing their systems to accept MEID enabled handsets. As more handsets with MEID are distributed, the likelihood of ESN conflicts on non-MEID systems increases.
The following is an example of pESN creation. Assume the handset has Hexadecimal MEID=AA00A23B1B3D562. To convert this into a pESN, first remove the check digit. In this case the “2” in the least most significant location is removed giving the following number: AA00A23B1B3D56. Placing this number into the SHA-1 calculator returns the 160 bit number: 07E55AF782F0AA344EB66721F2968FE81C8F9102. Taking the least significant 24 bits from the SHA-1 calculator, 8F9102, and concatenating the hexadecimal number 80 to the front of the 24 bit number from above, gives the 32 bit hexadecimal pseudo ESN: 808F9102.
The hexadecimal pESN number format can have the appearance of an 8 alpha numeric character number with the following format:














TIA
Serial Number

























T
T
S
S
S
S
S
S










wherein TT will always have the value of 80 hexadecimal, SSSSSS has a valid range from 000000 to FFFFFF and a maximum allowed value of FFFFFF. The same rules from the ESN section above, will apply to the pESN for the conversion from hexadecimal to decimal.

The following table shows 96 examples (for testing purposes). Each row is mathematically equivalent according to the rules of each serial number as defined in this document.













MEID w/CD
MEID w/CD
pESN
pESN


(hexadecimal)
(decimal)
(hexadecimal)
(decimal)







A00000001000013
2684354560010485779
80664860
12806703200


A00000001000021
2684354560010485787
80996CA9
12810054825


A0000000100003F
2684354560010485795
80E9219B
12815278491


A0000000100004D
2684354560010485804
807DA63 X
12808234552


A0000000100005B
2684354560010485812
809F91FD
12810457597


A00000001000069
2684354560010485820
80F74ADB
12816206555


A00000001000077
2684354560010485838
80C421BB
12812853691


A00000001000084
2684354560010485846
803290D0
12803313872


A00000001000092
2684354560010485853
80E2112B
12814815531


A000000010000A0
2684354560010485861
80B221A4
12811674020


A000000010000BE
2684354560010485879
80CC22D0
12813378256


A000000010000CC
2684354560010485887
80EFA918
12815706392


A000000010000DA
2684354560010485895
80B21A5E
12811672158


A000000010000E8
2684354560010485904
80974707
12809914119


A000000010000F6
2684354560010485912
80CED048
12813553736


A00000001000104
2684354560010485920
80B394CE
12811769038


A00000001000112
2684354560010485938
809607DC
12809832412


A00000001000120
2684354560010485946
8041878E
12804294542


A0000000100013E
2684354560010485953
800E6B20
12800944928


A0000000100014C
2684354560010485961
80F90461
12816319585


A0000000100015A
2684354560010485979
80D1A8AD
12813740205


A00000001000168
2684354560010485987
80701)570
12807394672


A00000001000176
2684354560010485995
80801A33
12808395315


A00000001000183
2684354560010486002
800E74DB
12800947419


A00000001000191
2684354560010486010
80008574
12800034164


A000000010001AF
2684354560010486028
80AE0B48
12811406152


A000000010001BD
2684354560010486036
80A5790D
12810844429


A000000010001CB
2684354560010486044
80A9CE49
12811128393


A000000010001D9
2684354560010486051
8079D1C3
12807983555


A000000010001E7
2684354560010486069
8060BC09
12806339593


A000000010001F5
2684354560010486077
805AEF4D
12805959501


A00000001000203
2684354560010486085
8099482E
12810045486


A00000001000211
2684354560010486093
80445444
12804478020


A0000000100022F
2684354560010486102
80ABDB58
12811262808


A0000000100023D
2684354560010486110
80E9B22B
12815315499


A0000000100024B
2684354560010486128
805E156A
12806165866


A00000001000259
2684354560010486136
80752639
12807677497


A00000001000267
2684354560010486144
80846262
12808675938


A00000001000275
2684354560010486151
80B0893A
12811569466


A00000001000282
2684354560010486169
80716AFE
12807432958


A00000001000290
2684354560010486177
8093103B
12809637947


A000000010002AE
2684354560010486185
80361935
12803545397


A000000010002BC
2684354560010486193
8088B542
12808959298


A000000010002CA
2684354560010486202
80E24243
12814828099


A000000010002D8
2684354560010486210
80DD34D7
12814496983


A000000010002E6
2684354560010486228
8005C893
12812961939


A000000010002F4
2684354560010486236
807126FB
12807415547


A00000001000302
2684354560010486244
80465B02
12804610818


A00000001000310
2684354560010486251
80D52F62
12813971298


A0000000100032E
2684354560010486269
80361970
12803545456


A0000000100033C
2684354560010486277
80F285DF
12815893983


A0000000100034A
2684354560010486285
80FB5C13
12816473107


A00000001000358
2684354560010486293
803E843F
12804097087


A00000001000366
2684354560010486302
807E4E6D
12808277613


A00000001000374
2684354560010486310
800B8F31
12800757553


A00000001000381
2684354560010486328
80177D00
12801539328


A0000000100039F
2684354560010486336
8036241C
12803548188


A000000010003AD
2684354560010486344
80CB6FCA
12813332426


A000000010003BB
2684354560010486351
8043985A
12804429914


A000000010003C9
2684354560010486369
80F304A7
12815926439


A000000010003D7
2684354560010486377
80B9541E
12812145694


A000000010003E5
2684354560010486385
80D3298D
12813838733


A000000010003F3
2684354560010486393
8014DF11
12801367825


A00000001000401
2684354560010486402
80E5EE3D
12815068733


A0000000100041F
2684354560010486410
80507FC9
12805275593


A0000000100042D
2684354560010486428
8023D53D
12802348349


A0000000100043B
2684354560010486436
80503174
12805255540


A00000001000449
2684354560010486444
801B70B9
12801798329


A00000001000457
2684354560010486451
80146114
12801335572


A00000001000465
2684354560010486469
80F5F17E
12816118142


A00000001000473
2684354560010486477
80455CB4
12804545716


A00000001000480
2684354560010486485
80F8217F
12816261503


A0000000100049E
2684354560010486493
8062A5EF
12806465007


A000000010004AC
2684354560010486502
80FD7F30
12816613168


A000000010004BA
2684354560010486510
80F12FEF
12815806447


A000000010004C8
2684354560010486528
808AD34C
12809098060


A000000010004D6
2684354560010486536
801340CE
12801261774


A000000010004E4
2684354560010486544
80E5C657
12815058519


A000000010004F2
2684354560010486551
801454CD
12801332429


A00000001000500
2684354560010486569
806C67CA
12807104458


A0000000100051E
2684354560010486577
80C25F01
12812738305


A0000000100052C
2684354560010486585
80D19289
12813734537


A0000000100053A
2684354560010486593
80549C08
12805544968


A00000001000548
2684354560010486602
80949F03
12809740035


A00000001000556
2684354560010486610
800EDAC5
12800973509


A00000001000564
2684354560010486628
803CE751
12803991377


A00000001000572
2684354560010486636
807D8C79
12808227961


A0000000100058F
2684354560010486644
80BCCF63
12812373859


A0000000100059D
2684354560010486651
804C8911
12805015825


A000000010005AB
2684354560010486669
807F2B18
12808334104


A000000010005B9
2684354560010486677
8027C44F
12802606159


A000000010005C7
2684354560010486685
8096CDEF
12809883119


A000000010005D5
2684354560010486693
80F1994D
12815833421


A000000010005E3
2684354560010486702
80D65726
12814047014


A000000010005F1
2684354560010486710
80D63B2B
12814039851









The IMEI is composed of 14 decimal digits and is used in the GSM technology. A check sum digit is placed at the end, but is neither used in the calculations nor transmitted. The current IMEI may have a 2 digit number attached to the end of the IMEI. This would be the Software Version Number (SVN) that will be transmitted over the air, but is not used in the calculations.
Prior to April 2004 the IMEI consisted of a Type Approval Code (TAC), a Final Assembly Code (FAC) and a Serial Number (SNR). The Check Digit (CD) is located in the least most significant location of the overall number. Since April 2004 the IMEI received an update to the digit format of the number. The new format contains a TAC and an SNR, along with a CD. There are three (3) classifications of IMEI codes: White—approved units; Gray—units that are being watched or tracked; and Black—units that are not allowed on the operator network.
Prior to April 2004, the IMEI number had the appearance of a 14 digit number with the following format:













TAC
FAC
Serial Number
CD





























T
T
T
T
T
T
F
F
S
S
S
S
S
S
C









wherein TTTTTT has a valid range from 000001 to 999999 and a maximum allowed value of 999999, FF has a valid range from 00 to 99 and a maximum allowed value of 99, SSSSSS has a valid range from 000000 to 999999 and a maximum allowed value of 999999, and the check digit C has a valid range of 0-9. The check digit is not used in the IMEI calculations, and is not transmitted. The TAC was the approval code for the country in which the approval was sought. The final assembly code was the manufacturer of the unit and the serial number was the manufacturer supplied unique identifying number for the unit. The check digit was derived from the TAC, FAC and SNR.

Since April 2004, the IMEI is a 14 digit number with the following format:












TAC
Serial Number
CD





























T
T
T
T
T
T
T
T
S
S
S
S
S
S
C









wherein TTTTTTTT has a valid range from 00000001 to 99999999 and a maximum allowed value of 99999999, SSSSSS has a valid range from 000000 to 999999 and a maximum allowed value of 999999, and the check digit C has a valid range of 0-9. The check digit is derived from the TAC and SNR. It is appended to the end of the IMEI and is neither transmitted nor used in any other calculations. The TAC, along with the manufacturer code, is the approval code for the country in which the approval was sought. The serial number is the manufacturer supplied unique identifying number for the unit.

As shown in the flowchart of FIG. 1, in one embodiment the method can be used to convert a MEID number from a hexadecimal format to a decimal format. In the first step 10, the user is prompted to enter the known hexadecimal MEID. In the next step 20 the embodiment determines if the entered MEID has fourteen digits. If the MEID does not have fourteen digits, the embodiment will determine if the MEID has fifteen digits 30. If the MEID has neither fourteen nor fifteen digits, the embodiment reports that the MEID is invalid 40.
If the MEID has fifteen digits, the next step 50 is calculation of the Luhn algorithm. In the next step 60 the embodiment determines if the result ends with a zero. If the result does not end with a zero, the embodiment will report that the MEID is invalid. If the result does end with a zero the embodiment will report that the MEID is valid 70 and truncate the check digit from the MEID 80.
If the MEID was entered with fourteen digits 20, or if it was a entered as a valid fifteen-digit MEID and has been truncated 80, two series of steps will occur. In one series, the MEID will be reported in the verification field 90. Next the Luhn algorithm is calculated in base 16 to obtain the check digit 100, and the check digit is reported 110. In the next step the hexadecimal MEID and the check digit are concatenated 120, and the final value of the hexadecimal MEID with check digit is displayed 130.
In the other series, the MEID is converted into hexadecimal 140, and the decimal MEID is reported 150. Next the Luhn algorithm is calculated in base 10 to obtain the check digit 160, and the check digit is reported 170. Finally, the decimal MEID and check digit are concatenated 180, and the final value of the decimal MEID with check digit is displayed 190.
A valid hexadecimal MEID with check digit may be entered into a spreadsheet as shown in FIG. 2, according to one embodiment of the present invention. When a valid hexadecimal MEID with check digit have been entered 200, the embodiment will identify the number format and validate the MEID and check digit. The embodiment will display a truncated hexadecimal MEID 210 in one column with the check digit 220 in another column. The embodiment will also display the concatenated hexadecimal MEID with check digit 230.
The embodiment will calculate and display the decimal MEID 240 as well as the decimal MEID check digit 250. The embodiment will also display the concatenated decimal MEID and check digit 260.
The embodiment displays that the hexadecimal MEID entered is valid 270, and further displays that the MEID with check digit is valid 280.
A valid hexadecimal MEID without check digit may be entered into a spreadsheet as shown in FIG. 3, according to one embodiment of the present invention. When a valid hexadecimal MEID has been entered but with no check digit 290, the embodiment will identify the number format, and validate the MEID and calculate the check digit. The embodiment will display a truncated hexadecimal MEID 300 in one column with the check digit 310 in another column. The embodiment will also display the concatenated hexadecimal MEID with check digit 320.
The embodiment will calculate and display the decimal MEID 330 as well as the decimal MEID check digit 340. The embodiment will also display the concatenated decimal MEID and check digit 350.
The embodiment displays that either the MEID entered is not valid or else no check digit was entered 370. As shown in FIG. 3, there was no check digit entered. However, the MEID entered was valid as is shown by the additional embodiment display verifying the MEID validity 360.
A hexadecimal MEID that has too many digits (and is thus invalid) may be entered into a spreadsheet as shown in FIG. 4, according to one embodiment of the present invention. When a MEID that has too many digits has been entered 380, the embodiment will identify the invalidity of the entered MEID. The embodiment will display that either the MEID entered is not valid or else does not have a check digit 400, and will further display that there were too many or not enough digits entered 390.
A hexadecimal MEID that has too few digits (and is thus invalid) may be entered into a spreadsheet as shown in FIG. 5, according to one embodiment of the present invention. When a MEID that has too few digits has been entered 410, the embodiment will identify the invalidity of the entered MEID. The embodiment will display that either the MEID entered is not valid or else does not have a check digit 430, and will further display that there were too many or not enough digits entered 420.
Columns A and B of one spreadsheet embodiment are shown in FIG. 6. These columns contain some of the formulas for performing necessary validations and conversions according to this embodiment of the present invention. The embodiment displays the user-entered hexadecimal MEID 440. The embodiment further shows spreadsheet functions for converting a hexadecimal number to a decimal 450 and for converting a decimal number to a hexadecimal 460.
The figures following FIG. 6 show additional columns of the spreadsheet of FIG. 6: FIG. 7 shows columns C, D and E; FIG. 8 shows columns F, G and H; FIG. 9 shows columns I, J and K; FIG. 10 shows columns L, M and N; FIG. 11 shows columns O, P, Q and R; FIG. 12 shows columns S, T and U; FIG. 13 shows column V; FIG. 14 shows columns W and X; FIG. 15 shows column Y; and FIG. 16 shows columns Z and AA.
EXAMPLES
The following examples depict portions of one possible application used to implement the inventive systems. While these applications are particularly suited for the invention, these are not the only suitable embodiments contemplated by the invention and what is claimed.
Example 1
In one embodiment, the invention can be used manually or automatically by personnel in a call center, repair center, or retail environment to validate MEID numbers or convert them before entering using the number to perform such acts as activating a wireless communication device, validating a customer's account, and the like.
Example 2
An alternative embodiment of the invention is used in assigning and/or verifying numbers by manufacturers and/or distributors, validating numbers in programming, kitting, distributing, selling or handling returns of the wireless communication devices.
Example 3
Another embodiment of the invention can be used to recognize wireless communication devices in switching wireless communication networks. For example, a wireless network provider may want to use the present invention in conjunction with existing systems to validate an MEID number prior to allowing the wireless communication device to connect to the network.
Example 4
An additional embodiment can be embedded in a wireless communication device itself. If the invention is embedded, the wireless communication device can provide the number in any format via wireless communication, data transfer port, or a display, and so on.
Example 5
Yet another embodiment may be embedded in a handheld conversion unit. A handheld conversion unit may include a display, a hexadecimal or other numeric system keypad, a bar code scanner, and a display. The user can scan a number such as an MEID (or type the MEID into a data entry device) and immediately retrieve all other useful equivalent representations of the number as well as a validation confirmation.
The metes and bounds of the invention are not to be limited by the foregoing disclosure, which is illustrative only, but should be determined in accordance with the full scope and spirit of the appended claims. The invention is described above with reference to non-limiting specific examples and embodiments provided for illustrative purposes only.

## Claims

1. A method of processing a wireless communication device comprising:
verifying a validity of a pre-existing check digit associated with a wireless communication device identification number, wherein the pre-existing check digit was not received as part of a transmission over a network;
automatically determining an equivalent representation from the wireless communication device identification number using a predefined mathematical algorithm if the pre-existing check digit is valid; and
determining whether a wireless communication device associated with the wireless communication device identification number is permitted to be activated based at least partially upon at least a portion of the equivalent representation.

2. The method of claim 1, wherein the predefined mathematical algorithm comprises a secure hash algorithm.

3. The method of claim 1, wherein the wireless communication device identification number is in decimal format and the equivalent representation is in hexadecimal format.

4. The method of claim 1, wherein the wireless communication device identification number is in hexadecimal format and the equivalent representation is in decimal format.

5. The method of claim 1, wherein the wireless communication device identification number comprises a mobile equipment identifier.

6. The method of claim 1, wherein the at least a portion of the equivalent representation comprises a pseudo electronic serial number.

7. The method of claim 1, further comprising activating the wireless communication device after determining that the wireless communication device is permitted to be activated.

8. A method of processing a wireless communication device identification number comprising:
verifying a validity of a pre-existing check digit associated with a wireless communication device identification number, wherein the pre-existing check digit was not received as part of a transmission over a network;
automatically determining an equivalent representation from the wireless communication device identification number using a predefined mathematical algorithm if the pre-existing check digit is valid; and
transmitting at least a portion of the equivalent representation.

9. The method of claim 8, further comprising calculating a second check digit for the equivalent representation and transmitting the second check digit.

10. The method of claim 8, wherein the wireless communication device identification number is in decimal format and the equivalent representation is in hexadecimal format.

11. The method of claim 8, wherein the wireless communication device identification number is in hexadecimal format and the equivalent representation is in decimal format.

12. The method of claim 8, wherein the transmitting of the at least a portion of the equivalent representation comprises sending the at least a portion of the equivalent representation to a display device.

13. The method of claim 8, wherein the wireless communication device identification number comprises a mobile equipment identifier.

14. The method of claim 8, wherein the at least a portion of the equivalent representation comprises a pseudo electronic serial number.

15. A method of validating a customer's account comprising:
verifying a validity of a pre-existing check digit associated with a wireless communication device identification number, wherein the pre-existing check digit was not received as part of a transmission over a network;
automatically determining an equivalent representation from the wireless communication device identification number using a predefined mathematical algorithm if the pre-existing check digit is valid; and
determining whether a wireless communication device associated with the wireless communication device identification number is associated with a customer's account based at least partially upon at least a portion of the equivalent representation.

16. The method of claim 15, wherein the predefined mathematical algorithm comprises a secure hash algorithm.

17. The method of claim 15, wherein the wireless communication device identification number is in decimal format and the equivalent representation is in hexadecimal format.

18. The method of claim 15, wherein the wireless communication device identification number is in hexadecimal format and the equivalent representation is in decimal format.

19. The method of claim 15, wherein the wireless communication device identification number comprises a mobile equipment identifier.

20. The method of claim 15, wherein the at least a portion of the equivalent representation comprises a pseudo electronic serial number.