Jinling (JILN) connector MPN encoding, position-based part numbering for pin headers, female headers, and IDC connectors.
Full Name: Shenzhen Jinling Electronics Co., Ltd. Brand: JILN (Jiln) Founded: 2004 Website: szjiln.en.made-in-china.com, jilnconnector.com Specialization: Pin headers, female headers, board-to-board connectors, IDC, terminal blocks Patents: 280+ independent innovation patents
Jinling uses two different MPN numbering systems:
27 31 0 2 02 A N G3 S U T
│ │ │ │ │ │ │ │ │ │ └─ [14] Packing
│ │ │ │ │ │ │ │ │ └─── [13] ContactType
│ │ │ │ │ │ │ │ └───── [12] ConnectorType
│ │ │ │ │ │ │ └─────── [10-11] ContactPlating
│ │ │ │ │ │ └────────── [9] Post
│ │ │ │ │ └─────────── [8] InsulatorMaterial
│ │ │ │ └──────────── [6-7] PinsPerRow (numeric)
│ │ │ └────────────── [5] Rows (1/2/3)
│ │ └──────────────── [4] HouseCount (usually 0)
│ └─────────────────── [2-3] PlasticsHeight × 10 (31 = 3.1mm)
└────────────────────── [0-1] Family (13/16/17/26/27)
<!-- Add new learnings above this line -->Total Length: 15 characters (fixed)
Used on LCSC, JLCPCB, and other distributor platforms.
321010MG0CBK00A02
│││││││││││││││└┴─ Suffix codes (variant/packaging)
││││││││││││└┴──── Additional encoding
│││││││││││└────── K = Black color
││││││││││└─────── B = Material/housing
│││││││││└──────── C = Series/family code
││││││││└───────── 0 = Placeholder
│││││││└────────── G = Gold plating
││││││└─────────── M = SMT mounting
││││└┴──────────── 10 = Pin count (2x5=10)
│││└───────────── 1 = Rows
││└────────────── 2 = Pitch indicator (2.54mm)
└┴─────────────── 32 = Family/series (IDC)
| Code | Type | Pitch | Gender | Description |
|---|---|---|---|---|
| 13 | Pin Header | 1.27mm | Male | Fine pitch headers |
| 16 | Pin Header | 2.00mm | Male | Standard headers |
| 17 | Pin Header | 2.54mm | Male | Standard 0.1" headers |
| 26 | Female Header | 2.00mm | Female | Socket/receptacle |
| 27 | Female Header | 2.54mm | Female | Standard 0.1" sockets |
Encoded as height in mm × 10:
31 = 3.1mm35 = 3.5mm85 = 8.5mmFormula: height_mm = parseInt(positions[2:4]) * 0.1
Always 0 for current Jinling products.
1 = Single row2 = Dual row3 = Triple rowMUST be numeric (e.g., 02, 10, 20, 40).
Pin count calculation: rows × pinsPerRow
Examples:
1 row × 40 pins = 40 total2 rows × 20 pins = 40 total2 rows × 02 pins = 4 total| Code | Material | Full Name |
|---|---|---|
| A | PBT | Polybutylene Terephthalate |
| B | PA66 | Polyamide 66 (Nylon 66) |
| C | PA6T | Polyamide 6T |
| D | PA46 | Polyamide 46 |
| E | PA9T | Polyamide 9T |
| F | LCP | Liquid Crystal Polymer |
| Code | Meaning |
|---|---|
| W | With post/standoff |
| N | Without post |
| Code | Plating | Thickness |
|---|---|---|
| SN | Tin | - |
| G0 | Gold Flash | < 1µin |
| G1 | Gold | 3µin |
| G2 | Gold | 5µin |
| G3 | Gold | 10µin |
| G4 | Gold | 15µin |
| G5 | Gold | 30µin |
| S0 | Gold Flash/Tin | Mixed |
| Code | Type | Description |
|---|---|---|
| M | SMT | Surface Mount |
| S | Straight THT | 180° through-hole |
| R | Right Angle THT | 90° through-hole |
| W | Straddle THT | Straddle mount |
| Z | Right Angle SMT | 90° surface mount |
| Code | Type |
|---|---|
| U | U-Type |
| S | Straight |
| R | Right Angle |
| Code | Package Type |
|---|---|
| T | Tube |
| P | Tube + Cap |
| R | Reel |
| O | PE Bag |
| A | Tray |
27 31 0 2 02 A N G3 S U T
│ │ │ │ │ │ │ │ │ │ └─ T = Tube packing
│ │ │ │ │ │ │ │ │ └─── U = U-Type contact
│ │ │ │ │ │ │ │ └───── S = Straight THT
│ │ │ │ │ │ │ └─────── G3 = 10µin Gold
│ │ │ │ │ │ └────────── N = No post
│ │ │ │ │ └─────────── A = PBT material
│ │ │ │ └──────────── 02 = 2 pins per row
│ │ │ └────────────── 2 = Dual row
│ │ └──────────────── 0 = No houses
│ └─────────────────── 31 = 3.1mm height
└────────────────────── 27 = Female Header (2.54mm pitch)
Decoded: 2.54mm female header, 2 rows × 2 pins = 4 total, 3.1mm height, PBT, no post, 10µin gold plating, straight THT, U-type contacts, tube packing
17 31 0 1 40 A N SN S U T
Decoded: 2.54mm pin header (male), 1 row × 40 pins = 40 total, 3.1mm height, PBT, no post, tin plating, straight THT, U-type contacts, tube packing
Real Jinling part numbers from LCSC:
| MPN | Description | LCSC ID |
|---|---|---|
| 321010MG0CBK00A02 | IDC 2x5P (10 pins) 2.54mm SMT Gold | C601966 |
| 12251140CNG0S115001 | Pin Header 1x40P 2.54mm THT | C429959 |
| 12251220ANG0S115001 | Pin Header 2x20P 2.54mm THT | C429965 |
| 22850120ANG1SYA01 | Female Header 2.54mm | C429947 |
| 22850102ANG1SYA02 | Female Header 2.54mm | C429966 |
| 13201140CNG0S087004 | Pin Header 1.27mm 1x40P | C429955 |
Elprint format requires:
13, 16, 17, 26, or 27// Elprint pattern (15 chars)
^(?:13|16|17|26|27)[0-9]{4}[0-9]{2}[A-Z][A-Z]{2}[A-Z]{3}$
// Distributor patterns
^32[0-9]{4}[A-Z]{2}[0-9][A-Z]{3}[0-9]{2}[A-Z][0-9]{2} // IDC
^1[0-9]{4}[0-9]{3,4}[A-Z]{3}[0-9][A-Z][0-9]{6,7} // Pin headers (12xxx)
^22[0-9]{3}[0-9]{3,4}[A-Z]{3}[0-9][A-Z]{3}[A-Z][0-9]{2} // Female headers
CRITICAL: Always validate MPN length before substring operations!
private boolean isElprintFormat(String mpn) {
if (mpn == null || mpn.length() < 15) return false;
String family = mpn.substring(0, 2);
boolean isKnownFamily = "13".equals(family) || "16".equals(family) ||
"17".equals(family) || "26".equals(family) ||
"27".equals(family);
// Positions 2-7 must be numeric
boolean hasNumericPrefix = mpn.substring(2, 6).matches("[0-9]+") &&
mpn.substring(6, 8).matches("[0-9]+");
return isKnownFamily && hasNumericPrefix;
}
public int extractPinCount(String mpn) {
if (!isElprintFormat(mpn)) return 0;
try {
int rows = Character.getNumericValue(mpn.charAt(5));
int pinsPerRow = Integer.parseInt(mpn.substring(6, 8));
return rows * pinsPerRow;
} catch (NumberFormatException e) {
return 0;
}
}
public String extractPackageCode(String mpn) {
if (!isElprintFormat(mpn) || mpn.length() < 13) return "";
String typeCode = mpn.substring(12, 13);
return CONNECTOR_TYPES.getOrDefault(typeCode, typeCode);
}
Components are interchangeable if:
Different plating, material, or packing are acceptable variations.
src/main/java/no/cantara/electronic/component/lib/manufacturers/JinlingHandler.java (~560 lines)src/test/java/no/cantara/electronic/component/lib/handlers/JinlingHandlerTest.java (~550 lines, 131 tests)CONNECTOR, CONNECTOR_JINLINGComponentManufacturer.JINLINGProblem: Initial test MPNs used 13-17 character format instead of required 15 characters.
Example:
273102NSNSUXT (13 chars with non-numeric positions)27310202ASNSUTT (17 chars)17310110AG3SUT (14 chars - missing post indicator)27310202ANG3SUT (15 chars, all numeric in positions 2-7)Resolution: All 131 tests now use proper 15-character elprint format. Handler pattern enforces exact length validation with length() != 15 check.
The handler registers patterns for both encoding systems:
Ensure ComponentManufacturer.JINLING pattern covers both:
JINLING("(?:1[2367]|2[267]|3[25])[0-9]{4,}", "Shenzhen Jinling Electronics", new JinlingHandler())
Jinling patterns (^13..., ^17...) could conflict with other manufacturers using similar prefixes. The matches() method includes explicit family checks to prevent false positives.
@Test
void shouldMatchElprintFormat() {
assertTrue(handler.matches("27310202ANG3SUT", ComponentType.CONNECTOR, registry));
assertTrue(handler.matches("17310140ANSNSUT", ComponentType.CONNECTOR, registry));
}
@Test
void shouldMatchDistributorFormat() {
assertTrue(handler.matches("321010MG0CBK00A02", ComponentType.CONNECTOR, registry));
assertTrue(handler.matches("12251140CNG0S115001", ComponentType.CONNECTOR, registry));
}
@Test
void shouldExtractPinCount() {
assertEquals(4, handler.extractPinCount("27310202ANG3SUT")); // 2×2=4
assertEquals(40, handler.extractPinCount("17310140ANSNSUT")); // 1×40=40
assertEquals(80, handler.extractPinCount("27310240ANSNSUT")); // 2×40=80
}
@Test
void shouldExtractPackageCode() {
assertEquals("SMT", handler.extractPackageCode("27310202MNSNSUT"));
assertEquals("Straight THT", handler.extractPackageCode("27310202ANSNSUT"));
assertEquals("Right Angle THT", handler.extractPackageCode("27310202ARSNRUT"));
}
length() != 15 not length() < 15 to catch both too short AND too long MPNssubstring(6,8) operations to prevent IndexOutOfBoundsException