4

I am involved in an upcoming product launch and we recently had a discussion about serial numbers. We will of course use variant-specific model identifiers and revision numbers, but couldn't see any good reason to include any leading zeros in serial numbers, or otherwise make them fixed-length with padding numbers, prefixes, characters, etc. But this seems to be a common practice.

Is there anything wrong with 1, 2, ... 10, 11, 12, ... 100, 101, 102, ... ? What possible advantages are lost by just starting at 1 and counting up?

Mahendra Gunawardena
  • 7,155
  • 6
  • 28
  • 68
jhabbott
  • 5,990
  • 8
  • 32
  • 63

3 Answers3

5

One advantage for fixed length serial numbers is that it's easier to do database searches, particularly if there's a pattern in the numbers. Try writing the code to interrogate a database for variable length numbers.

With leading zeros in a list of numbers the number 2 always comes before 10,11,100 and any other multiple digit number beginning with a 1. It's easier to see numbers when they are in numerical and alphanumerical order.

Long numbers can make it difficult to create forgeries. There's also the psychological benefit for consumers who may question short serial numbers and whether the company has been around for a long time and whether its reputable. For this very reason some companies always start serial or batch numbers with a number greater than 1001 or 10,001.

Long numbers become mandatory when large numbers of items are produced, such as operating system or software licences.

Depending on the code and pattern used for serial numbers, long numbers can incorporate information such as model type, batch number, manufacturing plant (where multiple plants are used).

Mahendra Gunawardena
  • 7,155
  • 6
  • 28
  • 68
Fred
  • 9,782
  • 13
  • 36
  • 48
5

Long serial numbers allow manufacturers to put more information into the serial number beyond showing relative manufacturing order.

If a manufacturer has multiple plants or multiple critical suppliers, they may want to indicate those sources within the serial number in case they need to track down defects later on. One common technique is to assign ranges of serial numbers to those sources. Another technique is to put plant and supplier codes at fixed locations within the serial number.

Having low production runs tied to serial numbers can leak information to competitors. During World War II, British scientists used the serial numbers from tanks in order to fairly accurately predict the rate of production. That information helped them make better determinations on how to deploy resources. Likewise, competitors can use the knowledge of low production runs against a competitor.

Of the two, the ability to quickly track manufacturing source and parts suppliers is probably more pertinent. In an era of global manufacturing, it's fairly routine to see recalls cascade across multiple industries because of an issue at a shared, upstream parts supplier. Batteries and other electronic components tend to be most frequently recalled like this. That's not to say the same information can't be linked within a database, but that requires a lookup beyond just examining the serial number.

It's invaluable for a manufacturer to be able to succinctly state "this range of serial numbers" or "look for these codes within the serial number of the part" as part of the recall process. Customers don't want to have to type in serial numbers at a website to see if they are affected or not.

2

Fixed-width serial numbers are just easier to handle. It also allows you to know where the serial number is within a overall product ID string without special rules to parse the string.

For example, if the serial number is expressed in hexadecimal in the string, it can contain letters A-F in addition to the digits 0-9. If the part ID string might also contain a suffix or prefix with these letters, then it becomes ambiguous with a variable-length serial number and without some delimiter. Consider "07933A". Is the whole thing the HEX serial number, or is 07933 the serial number and "A" a suffix denoting a configuration option, for example.

Fixed-width serial numbers strings are also easier to see in a list, and sort on.

Serial number generation

You didn't ask about this, but you have to think carefully about what/how new serial numbers are generated. This is probably more important than how exactly the serial number will be listed on the nameplate. I have seen a number of screwups, usually as a result of giving manufacturing too much leeway, or too much information so that they think they know how to create new serial numbers.

What I usually advise now is a dedicated piece of hardware that is pre-programmed with a range of serial numbers, then gives out those serial numbers sequentially. When the range is used up, it refuses to give out another serial number. The hardware must be returned to a central serial number management place to get updated with a new range, or swapped out entirely. You don't give any documentation about the internals of this device to manufacturing, whether internal or contract, remote or local. This device is a necessary part of the overall production process, usually part of the final test jig.

One advantage of this method is that it's easy to assign serial number ranges to different production lines or even different manufacturers. Engineering will need to create internal prototypes and sometimes samples, so they have one or more of these units too. Any engineer can grab the unit floating around engineering to assign a guaranteed unique serial number to a new prototype.

This dedicated hardware need not be big or expensive. It can be as simple as a USB dongle or small device connected to the USB. I've done this with a USB microcontroller and external EEPROM. Again, production gets no documentation on this device other than how to use it. They can be given multiple devices as spares, which is OK since each has its own unique serial number range. We usually programmed these devices with a range of 65536 (216) serial numbers. To update the serial number range required soldering a temporary jumper between two pads for that purpose, and running a special program on the host that only one person at the home office had.

Screwup #1

Apollo Computer made workstations in the 1980s. Each had to have a unique serial number. Among other things, these serial numbers were used to allow each node to make its own globally unique ID numbers used in the file system. The serial numbers were a hexadecimal string. A bunch of years after production started, someone noticed that the serial number of their node was well beyond the number of nodes supposedly produced. It turns out production was assigning serial numbers in decimal, even though each digit was really hexadecimal. This was fixed by having them make new units by filling in the unused serial numbers with digits A-F in them.

In this case no real harm was done, except that it made tracking units by serial number ranges awkward. Below a certain number, ranges were divided into decimal-only and hexadecimal.

Screwup #2

Serial numbers were assigned by the production test system, which included a PC. There were multiple production lines, and each PC was carefully assigned a particular range. The contract manufacturer in China was given explicit instructions to notify us in case of any trouble with any of the production test systems.

One day someone noticed that some of the 10s of thousands of little gizmos received from the factory in China had duplicate serial numbers. This was bad, because the larger system these gizmos were part of relied on the serial number to uniquely identify each gizmo, which was in large part the point of the system.

It turns out that the factory in China had done something stupid with one of the production test PCs and messed up the data on it. Instead of telling us like they were supposed to, they knew they could fix the problem on their own and we'd never know. Their fix was to do a complete disk copy from the working system to the broken system. From then on the two systems assigned duplicate serial numbers.

Olin Lathrop
  • 11,461
  • 1
  • 24
  • 36