Jump to content

Pattern of MLB (Main Logic Board)


holyfield
 Share

573 posts in this topic

Recommended Posts

Well done. I have already done this job for Pandora, but this looks more accurate, I will use the missing data from you, if you have no objection..

 

I have made script that dump EEE codes for "ALL Mac Models"

 

above posted dump is 40%

 

Soon i Post for "EVERY" mac logic board

 

Even i made a script that accurately Generate MLB as you said in this post

 

 

Found Y and W calculation...(if not later) Already said

 

 

 

Like for serial number at certain point from 11 lenght that became 12 digits lenght due to the PP part that have became PPP (but also for the CCC+ part) the same for the MLB. This example regard a real serial number, so not MLB, but I'm pretty sure the logic is the same (like they are using certified standard ISO 9000 in UE for quality reason, and suppliers must comply).

 

this is a valid Sn: C02HM***DTY3, masked here,  put into Apple Service Center online:

Nice Name: MacBook Pro 13 inch Unibody Core i5 (Mid 2012)

Machine Model: MacBookPro9,2

Please visit our facebook page

Family name: A1278

Model Number: MD101

Group1: MacBook

Group2: Pro

Generation:

CPU speed: 2.5GHz

Screen size: 13 inch

Screen resolution: 1280x800 pixels

Colour: Aluminium

Production week : -18- (May)

Production year : -2012-

Model introduced: -2012-

Memory - flavour: DDR3-S-1600

Memory - number of slots: 2

Memory - maximum total: 16GB

Memory - largest module: 8GB

Factory: C0 (Quanta Computer (Susidiary = Tech Com) China)

PPP Y W SSS  CCCC

C02  H M ***  DTY3

 

let's go:

 

Y

calculated like 0 stand for 2010 (or also 2000, 2020...but DTY3 ensure is 2010+), letter to choose depend by the week (see "W") .

0    1    2    3   4    5      6     7    8     9           (last number of a year example 2012)

CD  FG HJ   KL MN PQ   RS    TV  WX  YZ         (for each year, two letters, the first in case of Mid, the second for Late)

then year is 2012, under 2 you can find HJ. because H and not J? see W table below.

 

W

a year can have 52 + 1 weeks (year depending), so max 26 for MId and 27 for Late. 

1 2 3 4 5 6 7 8 9  10  11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

1 2 3 4 5 6 7 8 9  C   D   F   G   H  J   K   L   M  N    P  Q   R  T   V   W  X  Y

 

then week is 18 so choose M  of (Mid 2012 because of table say that under 2 that stand for 2012, H is the Mid of the year)      :lol:

For example, today we are i august 13 (33° week), YW will be Q6 because we are in week 6 of Late 2015. Simply because 33 is out of 27 weeks in our W table, and we are now in the Late of the year, and the new week is the sixth of the second half-year.

 

PPP

C0 mean China, 2 is the establishment nr 2 in china (the production is increased like also the places), so is a number always?NO can be a letter too.

 

CCCC

no fancy, regard a specific model, equal for identical model: DTY3 = particular CPU, video card etc, and sure is a MacBook Pro 13 unibody 

 

SSS

a progressive number? rest this to find a table. Ok there's a X in the middle (*X*),

is not a number like max 999 MacBook Pro in a week, the number would be too low for 53 week  of production.

How many mac Apple produce in a year? It is related to the year or a week? naaah! maybe in part but quantity is important for sales invoice, but not for a serial number.

ISO spec, but also ANSI require traceability, ie when you know where and when, you need to know who!

..basically conducible to a machinery and operator!  ..it is a possibility

 

Suggestions...is right?  :D ....just test with real Mac..

 

EDIT

serial and MLB are related on how are built for location, year an week. location can be the same of the serial, but also not, the one on post #532  match, probably the motherboard is assembled in the same factory where the final Mac comes out, nothing strange.

 

 

 

My Every work is Open for Hackintosh community...

Just mention credit ... it take few letters like "Hanger1"

  • Like 3
Link to comment
Share on other sites

I have made script that dump EEE codes for "ALL Mac Models"

 

Ok, that is what intrest me.

I have made script that dump EEE codes for "ALL Mac Models"

From the web?
I create a obj-class that create the MLB, two moth ego... but no time to finish Pandora until now..

 

Just mention credit ... it take few letters like "Hanger1"

 
I will (sure specifically for the EEE codes), than the same for any other contributors here

 

EDIT

 

Yes my week calculation is right I think (Pandora will know also if an year in particular have/had 52 or 53 weeks ;) )

  • Like 1
Link to comment
Share on other sites

Are you using that to find info?

 No

Apple Never Gives EEE codes for their Logic Boards

 

https://support.apple.com/kb/SP583?viewlocale=en_US&locale=en_US

above links open nicely with me

 

I use welovemacs.com

#======================= CREATING UI =============================================

#====================== END UI =============================




#======================================================= DELCLARING FUNCTIONS =============================================================

#--------------------------------------------------------- files_cleanup ----------------------------------------------------
files_cleanup () { 
CFILESLIST=(.array .my .kavan .product_name .CollectedDump)
n="0"
while [ $n -lt 5 ]
do
	if [ -f ${CFILESLIST[$n]} ] ; then
	rm ${CFILESLIST[$n]}
	fi
n=$[$n+1]
done
}
#------------------------------------------------------------- END -----------------------------------------------------------------

#-------------------------------------------------------- getting_title ----------------------------------------------------
getting_title () { 
echo "Getting Dump"
echo "collecting dump \n" 
}
#------------------------------------------------------------- END ----------------------------------------------------------------

startui () {
echo "Loading.............."
}

#------------------------------------------------------- cleaning string ---------------------------------------------------
cleaning_string () {
echo $(awk '/sc-tag-start/,/sc-tag-end/p' kav | sed 's/^.*contents//') >> .list_site
cat .list_site | tr "}" "\\n" | sed -e "s/.*id://;s/,name.*//" | cut -c 2- | rev | cut -c 2- | rev >> .my
cat .list_site | tr "}" "\\n" | sed -e "s/.*name://;s/{id:.*//" | cut -c 2- | rev | cut -c 2- | rev >> .product_name
rm .list_site
cat .my | sed -e 's/^/http:\/\/www.welovemacs.com\//' | sed -e 's/$/.html/' >> .kavan

}
#------------------------------------------------------------ END ------------------------------------------------------------------

#------------------------------------------------------- getting_output ----------------------------------------------------
getting_output () {
FILE14=.kavan
ARRAY14=(`awk '{print}' $FILE14`)
i="0"
my=$(cat .my | wc -l )
while [ $i -lt $my ]
do
	echo ${ARRAY14[$i]} >> .array
	curl -s -o .k$i ${ARRAY14[$i]}
	if [[ $(awk '/.*EEE Code.*:/{ print $0 }' .k$i | awk 'END{print}' | cut -d':' -f2 ) == *"</b>"* ]]
	then
	  echo "EEE Codes Not Found" >> .CollectedDump
  	else
	  echo "EEE Codes" $(awk '/.*EEE Code.*:/{ print $0 }' .k$i | awk 'END{print}' | cut -d':' -f2 ) >> .CollectedDump
	fi
	rm .k$i
i=$[$i+1]
done
}
#----------------------------------------------------------- END -------------------------------------------------------------------
endui () {
echo "Done!"
}
#-------------------------------------------------------- final_out ----------------------------------------------------------
final_out () {
paste -d'\n' .product_name .CollectedDump >> .final
awk 'NR>c{print A[NR%c]} {A[NR%c]=$0}' c=4 .final
rm .final
}
#---------------------------------------------------------- END -------------------------------------------------------------------

#============================================== END OF DELCLARATION ========================================================================

#============================================== EXECUTING =====================================================================

clear
files_cleanup
getting_title
startui
cleaning_string
getting_output
endui
final_out
files_cleanup

#================================================ EXIT ========================================================================






#echo "EEE Codes" $(awk '/EEE Codes:/{ print $0 }' 1 | awk 'END{print}' | cut -d':' -f2 )

This is the script

 

before runt it

first

curl -o kav http://www.welovemacs.com/loboformaair.html

 

http://www.welovemacs.com/loboformaair.htmlis link of MacBook Air logic board list

I give up , not much time exams are on .... I give you all , hope it help you and your tool ....

 

 

------------------------------

I made a script for week calculation... hope it help you..

########################################################################
# Extracting Values from Serial
WeekF=$(ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}' | cut -d'"' -f2 | cut -c4-5)

#######################################################################

SNUMBERA()
	{
	if [[ $WeekF = [ACFHKM]1 ]]; then
	    WeekNUM=1
	elif [[ $WeekF = [ACFHKM]2 ]]; then
		WeekNUM=2
	elif [[ $WeekF = [ACFHKM]3 ]]; then
		WeekNUM=3
	elif [[ $WeekF = [ACFHKM]4 ]]; then
		WeekNUM=4
	elif [[ $WeekF = [ACFHKM]5 ]]; then
		WeekNUM=5
	elif [[ $WeekF = [ACFHKM]6 ]]; then
		WeekNUM=6
	elif [[ $WeekF = [ACFHKM]7 ]]; then
		WeekNUM=7
	elif [[ $WeekF = [ACFHKM]8 ]]; then
		WeekNUM=8
	elif [[ $WeekF = [ACFHKM]9 ]]; then
		WeekNUM=9
	fi
	}
SNUMBERB()
	{
	if [[ $WeekF = [BDGJLN]1 ]]; then
		WeekNUM=27
	elif [[ $WeekF = [BDGJLN]2 ]]; then
		WeekNUM=28
	elif [[ $WeekF = [BDGJLN]3 ]]; then
		WeekNUM=29
	elif [[ $WeekF = [BDGJLN]4 ]]; then
		WeekNUM=30
	elif [[ $WeekF = [BDGJLN]5 ]]; then
		WeekNUM=31
	elif [[ $WeekF = [BDGJLN]6 ]]; then
		WeekNUM=32
	elif [[ $WeekF = [BDGJLN]7 ]]; then
		WeekNUM=33
	elif [[ $WeekF = [BDGJLN]8 ]]; then
		WeekNUM=34
	elif [[ $WeekF = [BDGJLN]9 ]]; then
		WeekNUM=35
	fi
	}
	
SWORDA()
	{
	if [[ $WeekF = [CFHKM]C ]]; then
		WeekNUM=10
	elif [[ $WeekF = [CFHKM]D ]]; then
		WeekNUM=11
	elif [[ $WeekF = [CFHKM]F ]]; then
		WeekNUM=12
	elif [[ $WeekF = [CFHKM]G ]]; then
		WeekNUM=13
	elif [[ $WeekF = [CFHKM]H ]]; then
		WeekNUM=14
	elif [[ $WeekF = [CFHKM]J ]]; then
		WeekNUM=15
	elif [[ $WeekF = [CFHKM]K ]]; then
		WeekNUM=16
	elif [[ $WeekF = [CFHKM]L ]]; then
		WeekNUM=17
	elif [[ $WeekF = [CFHKM]M ]]; then
		WeekNUM=18
	elif [[ $WeekF = [CFHKM]N ]]; then
		WeekNUM=19
	elif [[ $WeekF = [CFHKM]P ]]; then
		WeekNUM=20
	elif [[ $WeekF = [CFHKM]Q ]]; then
		WeekNUM=21
	elif [[ $WeekF = [CFHKM]R ]]; then
		WeekNUM=22
	elif [[ $WeekF = [CFHKM]T ]]; then
		WeekNUM=23
	elif [[ $WeekF = [CFHKM]V ]]; then
		WeekNUM=24
	elif [[ $WeekF = [CFHKM]W ]]; then
		WeekNUM=25
	elif [[ $WeekF = [CFHKM]X ]]; then
		WeekNUM=26
	elif [[ $WeekF = [CFHKM]Y ]]; then
		WeekNUM=27
	fi
	}

SWORDB()
	{
	if [[ $WeekF = [DGJLN]C ]]; then
		WeekNUM=36
	elif [[ $WeekF = [DGJLN]D ]]; then
		WeekNUM=37
	elif [[ $WeekF = [DGJLN]F ]]; then
		WeekNUM=38
	elif [[ $WeekF = [DGJLN]G ]]; then
		WeekNUM=39
	elif [[ $WeekF = [DGJLN]H ]]; then
		WeekNUM=40
	elif [[ $WeekF = [DGJLN]J ]]; then
		WeekNUM=41
	elif [[ $WeekF = [DGJLN]K ]]; then
		WeekNUM=42
	elif [[ $WeekF = [DGJLN]L ]]; then
		WeekNUM=43
	elif [[ $WeekF = [DGJLN]M ]]; then
		WeekNUM=44
	elif [[ $WeekF = [DGJLN]N ]]; then
		WeekNUM=45
	elif [[ $WeekF = [DGJLN]P ]]; then
		WeekNUM=46
	elif [[ $WeekF = [DGJLN]Q ]]; then
		WeekNUM=47
	elif [[ $WeekF = [DGJLN]R ]]; then
		WeekNUM=48
	elif [[ $WeekF = [DGJLN]T ]]; then
		WeekNUM=49
	elif [[ $WeekF = [DGJLN]V ]]; then
		WeekNUM=50
	elif [[ $WeekF = [DGJLN]W ]]; then
		WeekNUM=51
	elif [[ $WeekF = [DGJLN]X ]]; then
		WeekNUM=52
	elif [[ $WeekF = [DGJLN]Y ]]; then
		WeekNUM=53
	fi
	}


SEARCHN()
{
if [[ $WeekF = [ACFHKM][1-9] ]]; then
    #echo "'$WeekF' 1 - 9"
	SNUMBERA
	#echo $WeekNUM
elif [[ $WeekF = [PQRSTVWXYZEIOU][1-9] ]]; then
	echo "'$WeekF' NULL"
	echo "Serial is Incorrect"
	exit 1
elif [[ $WeekF = [A-Z]0 ]]; then
	echo "'$WeekF' NULL"
	echo "Serial is Incorrect"
	exit 
else
    #echo "'$WeekF' 27 - 35"
	SNUMBERB
	#echo $WeekNUM
fi
}

SEARCHW()
{
if [[ $WeekF = [CFHKM][CDFGHJKLMNPU] ]]; then
    #echo "'$WeekF' 10 - 27"
	SWORDA
	#echo $WeekNUM
elif [[ $WeekF = [ABPQRSTVWXYZEIOU]* ]]; then
	echo "'$WeekF' NULL"
	echo "Serial is Incorrect"
	exit 1
elif [[ $WeekF = [CFHKM][ABEIOSUZ] ]]; then
	echo "'$WeekF' NULL"
	echo "Serial is Incorrect"
	exit 1
elif [[ $WeekF = [DGJLN][ABEIOSUZ] ]]; then
	echo "'$WeekF' NULL"
	echo "Serial is Incorrect"
	exit 1
elif [[ $WeekF = [DGJLN][CDFGHJKLMNPQRSTVWXY] ]]; then
    #echo "'$WeekF' 36 - 53"
	SWORDB
	#echo $WeekNUM	
fi
}

if [[ $WeekF == [A-Z]*[0-9] ]] ; then
	SEARCHN
else
	SEARCHW
fi

#echo "WeekNum:"$WeekNUM
if [[ $WeekNUM -ge 26 ]] ; then
	let WeekNUM=$WeekNUM-26
fi
#echo $WeekNUM



if [[ $WeekNUM -le 9 ]] ; then
	echo $WeekNUM
elif [ "$WeekNUM" = "10" ] ; then
    MacW="C"
elif [ "$WeekNUM" = "11" ] ; then
    MacW="D"
elif [ "$WeekNUM" = "12" ] ; then
    MacW="F"
elif [ "$WeekNUM" = "13" ] ; then
    MacW="G"
elif [ "$WeekNUM" = "14" ] ; then
    MacW="H"
elif [ "$WeekNUM" = "15" ] ; then
    MacW="J"
elif [ "$WeekNUM" = "16" ] ; then
    MacW="K"
elif [ "$WeekNUM" = "17" ] ; then
    MacW="L"
elif [ "$WeekNUM" = "18" ] ; then
    MacW="M"
elif [ "$WeekNUM" = "19" ] ; then
    MacW="N"
elif [ "$WeekNUM" = "20" ] ; then
    MacW="P"
elif [ "$WeekNUM" = "21" ] ; then
    MacW="Q"
elif [ "$WeekNUM" = "22" ] ; then
    MacW="R"
elif [ "$WeekNUM" = "23" ] ; then
    MacW="T"
elif [ "$WeekNUM" = "24" ] ; then
    MacW="V"
elif [ "$WeekNUM" = "25" ] ; then
    MacW="W"
elif [ "$WeekNUM" = "26" ] ; then
    MacW="X"
elif [ "$WeekNUM" = "27" ] ; then
    MacW="Y"
fi

echo "W:"$MacW >> CLONMLB

I made a script for month calculation... hope it also help you..

# Calculates the human friendly year based off of the Manufacturing Year 
#ModelY is search last four number of serial to apple site and gat model info
ModelY=$(curl -s http://support-sp.apple.com/sp/product?cc=`ioreg -l|grep IOPlatformSerialNumber|awk '/Serial/ {print $4}'| sed -e 's|"||g'|cut -c 9-`|sed 's|.*<configCode>\(.*\)</configCode>.*|\1|' | tail -c 3 | cut -c1-1)
#echo "Manufacturing Year Number: $ModelY"

if [ "$ModelY" = "0" ] ; then
    MacY="CD"
elif [ "$ModelY" = "1" ] ; then
    MacY="FG"
elif [ "$ModelY" = "2" ] ; then
    MacY="HJ"
elif [ "$ModelY" = "3" ] ; then
    MacY="KL"
elif [ "$ModelY" = "4" ] ; then 
    MacY="MN"
elif [ "$ModelY" = "5" ] ; then
    MacY="PQ"
elif [ "$ModelY" = "6" ] ; then
    MacY="RS"
elif [ "$ModelY" = "7" ] ; then
    MacY="TV"
elif [ "$ModelY" = "8" ] ; then
    MacY="WX"
elif [ "$ModelY" = "9" ] ; then
    MacY="YZ"
fi

#echo $MacY

Mid_or_Late=$(curl -s http://support-sp.apple.com/sp/product?cc=`ioreg -l|grep IOPlatformSerialNumber|awk '/Serial/ {print $4}'| sed -e 's|"||g'|cut -c 9-`|sed 's|.*<configCode>\(.*\)</configCode>.*|\1|' | tail -c 11 | awk 'END{print $1}')

if [ "$Mid_or_Late" = "Mid" ] ; then
    MacY=$(echo $MacY | head -c 1)
elif [ "$Mid_or_Late" = "Late" ] ; then
    MacY=$(echo $MacY | tail -c 2)
else
	exit
fi

echo "Y:"$MacY >> CLONMLB

Above those works a u said.. hope it is correct...

  • Like 8
Link to comment
Share on other sites

  • 1 month later...

Hi, I managed to make Imessage and icloud to work.

1. Star iMessageDebug on real Mac hardware. I used Macbook air 2014 as I installed hackintosh on notebook.

2. Take serial number and board number. Change it a little with a know pattern to make unique.

3. Star iMessageDebug on your huckintosh and take smUUID.

4. In Clover editor fill smUUID(the one you get from imessagedebug), Serial number (the one you changed to make it unique) Board Number (the one you changed to make it unique).

5. Clear caches with this #####

6. Restart and login to imessage. 

7.????

8. Profit.

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

I wanted to report I now have iMessage working without a real MLB. I used the tool from http://www.insanelym...c-board/page-13 post #260 to generate a 13 digit MLB and I used the mac address from my Apple wifi card (from http://osxwifi.com (not sure if this is relevant?)) for the ROM. My smUUID is randomly generated with uuidgen and my serial is randomly generated by Clover Configurator. I received the customer code error and it took a one minute call to Apple and I'm sending and receiving SMS now!

 

I'll add that I tried to use the 17 digit MLB generator by the same author and that didn't work. I received an error with no customer code.

Checking in to report my iMessage is still working flawlessly.

Link to comment
Share on other sites

Hello everyone,

I read this thread entirely, and I think this is very interesting topic IMO. However, the knowledge about MLB is still incomplete, and for 17-digit MLB, the meanings of some digits are still unknown so I decided to do a little research by myself.

When I was collecting serials from various iFixit guides, I found that even other Apple parts (heatsink, HDD, AirPort card, etc.) also had their serials similar to that of MLB. So I started wondering if Apple has a standard to create their serials for parts/components from suppliers, which means that we should also look into the serials of other parts/components instead of logic board serials only.

So I collected serials of not only logic boards but also other Mac parts, and did some analyses on them. And here is my hypothesis about the pattern of these serials:

PPPYWWDNNNNEEEECC

Where:

PPP – The location of production, which is usually the same as the PPP part (first 3 digits) of system serial. The most common value for this component is C02 (Quanta Computer – China).

Y – Year of production (e.g: 0 for 2010, 1 for 2011, 2 for 2012 and so on).

WW – Week of production. This component ranges from 01 to 53, and is usually 1 – 2 weeks earlier than the week number implied in system serial.

D – Day of production. I checked the serials and found that this digit ranges from 1 to 7 (with 1 is the least popular value). So I doubt this digit tells us the day of production (with 1 for Sunday -> 7 for Saturday).

NNNN – Production Unit Number. This component’s function is similar to the Production Number component in the system serial (6th – 8th digits). The digits seem to be alphanumeric (with the exclusion of letter I and O), and the first digit of the component is usually 0 (zero).

EEEE – EEE Code, which links to the hardware specification of the board. Its function is quite similar to that of the Model ID component in system serial (last 4 digits). The EEE code can be found on many websites that sell Mac parts (e.g: macpartsonline.com).

CC – Unknown. Like many of you, I don’t really know about the meaning of the two last digits (could be a checksum or sth). But from my analysis, the first digit of the component is usually 1 or A, and the second digit is alphanumeric (excluding letter I and O).

 

Note: One thing interesting is that while I was writing this post, I looked again at the analysis report and realized that none of the serial (even system serial) contains the letter I or O. So we should exclude the two letters when generating the serial (no Base36 here).

 

I attached here the list of serials I collected, as well as their statistic reports. The serials were analyzed automatically and reports were created by a self-made program. Hope these details may help.

 

And a warning: DO NOT use those collected serials in your Hackintosh - Cloned serials will likely be banned by Apple.

Serial data + Reports.zip

  • Like 8
Link to comment
Share on other sites

Checking in to report my iMessage is still working flawlessly.

 

Is the 13 digit MLB you made the same value as the Board Serial Number in the SMBIOS section of Clover Configurator? Imessage-debug says that my BoardSerialNumber is my 13 digit MLB, but I'm worried the different value for the one in SMBios is causing my issues. Otherwise everything is the same and it's not working for me.

 

Awesome! Sorry if this sounds dumb, but does this mean we can start creating the new 17 digit MLBs to activate iMessage instead of the older 13 digit ones?

Link to comment
Share on other sites

Is the 13 digit MLB you made the same value as the Board Serial Number in the SMBIOS section of Clover Configurator? Imessage-debug says that my BoardSerialNumber is my 13 digit MLB, but I'm worried the different value for the one in SMBios is causing my issues. Otherwise everything is the same and it's not working for me.

Awesome! Sorry if this sounds dumb, but does this mean we can start creating the new 17 digit MLBs to activate iMessage instead of the older 13 digit ones?

What I wrote above is just hypothesis, not surely 100% correct. However, Apple has relaxed the MLB verification check, so even a 'MLB' created by adding 5 random characters to the system serial may work (this information is from the topic 'How to Fix iMessage' by jaymonkey - google it yourself).

My hypothesis may only help you to generate a MLB serial that seems to conform Apple's serial format. I don't guarantee that the generated serial will work, and you may still have to call Apple support to white-list the generated MLB serial.

  • Like 2
Link to comment
Share on other sites

  • 7 months later...

I've been trying to create 12 digit MacbookPro10,2 serial. I wanted to do it myself rather than using genarators and I read everything I found, but I still don't guite understand it.

 

I created couple of MacBook Pro (Retina, 13-inch, Early 2013) serials and checked those with Apples checkcoverage site. Two of those passed and was reported as genuine serials, so I must have created those correctly, but I don't understand how it says both are Early 2013. Serials are below, I thought "K" is first half and "L" is second half on 2013 models.

 

 

C02L9XXXFFRP - Ok - Early 2013
C02K7XXXFFRP - Ok - Early 2013

Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...

Guys,

 

This guide states "ROM part is defined in SmUUID and should be 12 chars  and match the Apple's MAC address standard, otherwise illegal"

 

 

Is this still valid ?

 

Just come across a real iMac 17,1 with 11 char ROM value %ff%ff%ff%ff%fff or is it likely that this iMac has not been setup to communicate with the internet. It's a show piece for everyone to view and play with. There was no connectivity to the internet.

 

Any feedback please

Link to comment
Share on other sites

  • 4 months later...

Hello everyone,

I read this thread entirely, and I think this is very interesting topic IMO. However, the knowledge about MLB is still incomplete, and for 17-digit MLB, the meanings of some digits are still unknown so I decided to do a little research by myself.

When I was collecting serials from various iFixit guides, I found that even other Apple parts (heatsink, HDD, AirPort card, etc.) also had their serials similar to that of MLB. So I started wondering if Apple has a standard to create their serials for parts/components from suppliers, which means that we should also look into the serials of other parts/components instead of logic board serials only.

So I collected serials of not only logic boards but also other Mac parts, and did some analyses on them. And here is my hypothesis about the pattern of these serials:

PPPYWWDNNNNEEEECC

Where:

PPP – The location of production, which is usually the same as the PPP part (first 3 digits) of system serial. The most common value for this component is C02 (Quanta Computer – China).

Y – Year of production (e.g: 0 for 2010, 1 for 2011, 2 for 2012 and so on).

WW – Week of production. This component ranges from 01 to 53, and is usually 1 – 2 weeks earlier than the week number implied in system serial.

D – Day of production. I checked the serials and found that this digit ranges from 1 to 7 (with 1 is the least popular value). So I doubt this digit tells us the day of production (with 1 for Sunday -> 7 for Saturday).

NNNN – Production Unit Number. This component’s function is similar to the Production Number component in the system serial (6th – 8th digits). The digits seem to be alphanumeric (with the exclusion of letter I and O), and the first digit of the component is usually 0 (zero).

EEEE – EEE Code, which links to the hardware specification of the board. Its function is quite similar to that of the Model ID component in system serial (last 4 digits). The EEE code can be found on many websites that sell Mac parts (e.g: macpartsonline.com).

CC – Unknown. Like many of you, I don’t really know about the meaning of the two last digits (could be a checksum or sth). But from my analysis, the first digit of the component is usually 1 or A, and the second digit is alphanumeric (excluding letter I and O).

 

Note: One thing interesting is that while I was writing this post, I looked again at the analysis report and realized that none of the serial (even system serial) contains the letter I or O. So we should exclude the two letters when generating the serial (no Base36 here).

 

I attached here the list of serials I collected, as well as their statistic reports. The serials were analyzed automatically and reports were created by a self-made program. Hope these details may help.

 

And a warning: DO NOT use those collected serials in your Hackintosh - Cloned serials will likely be banned by Apple.

 

The day of week supposition looks unlikely to me after looking at "al3xtjames" MacGen scripts (https://github.com/al3xtjames/MacGen).  This repository has what appears to be an extensive catalogue of valid identifies and the MLB is documented as:

    PPP Y WW TTT CC EEEE KK

 

where:

      TTT is the board type

      CC  is hypothesized to be a checksum (but not known)

      KK is not explained in comments

 

He has a list of presumed valid values (selects one at random when generating MLB):

   for CC:  'GU' '4N' 'J9' 'QX' 'OP' 'CD' '3F' 'U5' 'KP' 'D5' 'SJ' '7P' 'RG' 'W5' '92' 'MA' '2Y' '26' 'L0' 'NA' 'TL' '2D' '8U'

   for KK: '1H' '1M' 'AD' '1F' 'A8' 'UE' 'JA' 'JC' '8C' 'CB' 'FB' 'A6' 'AL' 'AN' '16' 'A5' 'AH' 'AA' 'AD' 'AK' 'AN' '1W' 'AY' '1A'

From my catalogue of half a dozen 2011-era (A1311) boards it's quite plausible that he has the TTT board type field correctly identified.  The boards I've seen have codes of:   100, 105, 201, 401, 601 (though, as you note, all of the first digits are in the range [1,7], so maybe you're right)

  • Like 1
Link to comment
Share on other sites

  • 6 months later...

@amble, little late, but I see similar problem here with SERIAL (they talk about MLB here).

So It would be nice if someone knows why amble and my sn is not correct following the assumed format of the new 12char serial.

 

PPPYWSSSCCCC where suposedly Y=year and W=week.

 

Y=> CDFGHJKLMNPQRSTVWXYZ where P should be early 2015 and Q late 2015.

These made serials C02TM2A9GG7L, C02PK1M1GG7L both gives iMac 17,1 late 2015 on everymac and shipmunk !? Don't use these so everyone can check for themselves.

 

Sorry for the off topic.

Link to comment
Share on other sites

  • 6 months later...
  • 1 year later...

I’m glad this thread  has lead Hackintosh community to tools that help easily generate needed serials.

 

https://github.com/acidanthera/MacInfoPkg

Also the knowledge is collected there very well

 

https://github.com/acidanthera/MacInfoPkg/blob/master/macserial/FORMAT.md

 

Edited by holyfield
Link to comment
Share on other sites

 Share

×
×
  • Create New...