diff options
Diffstat (limited to '2010/gsm_phone-anatomy')
-rw-r--r-- | 2010/gsm_phone-anatomy/calypso-block.eps | 832 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/calypso-block.pdf | bin | 0 -> 14118 bytes | |||
-rw-r--r-- | 2010/gsm_phone-anatomy/calypso-block.svg | 778 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.1.pdf | bin | 0 -> 184103 bytes | |||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.pdf | bin | 0 -> 184322 bytes | |||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.tex | 674 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.pdf | bin | 0 -> 191293 bytes | |||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.tex | 770 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.pdf | bin | 0 -> 206865 bytes | |||
-rw-r--r-- | 2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.tex | 984 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.css | 120 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.html | 552 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.20x.png | bin | 0 -> 60416 bytes | |||
-rw-r--r-- | 2010/gsm_phone-anatomy/phones.txt | 14 | ||||
-rw-r--r-- | 2010/gsm_phone-anatomy/topics | 48 |
15 files changed, 4772 insertions, 0 deletions
diff --git a/2010/gsm_phone-anatomy/calypso-block.eps b/2010/gsm_phone-anatomy/calypso-block.eps new file mode 100644 index 0000000..01ed57a --- /dev/null +++ b/2010/gsm_phone-anatomy/calypso-block.eps @@ -0,0 +1,832 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.8.10 (http://cairographics.org) +%%CreationDate: Wed Apr 14 00:28:53 2010 +%%Pages: 1 +%%BoundingBox: 0 0 787 276 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/B { fill stroke } bind def +/B* { eofill stroke } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +11 dict begin +/FontType 42 def +/FontName /f-0-0 def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 1 /uni0043 put +Encoding 2 /uni0041 put +Encoding 3 /uni004C put +Encoding 4 /uni0059 put +Encoding 5 /uni0050 put +Encoding 6 /uni0053 put +Encoding 7 /uni004F put +Encoding 8 /uni0054 put +Encoding 9 /uni0057 put +Encoding 10 /uni0033 put +Encoding 11 /uni0030 put +Encoding 12 /uni0032 put +Encoding 13 /uni0035 put +Encoding 14 /uni0042 put +Encoding 15 /uni0055 put +Encoding 16 /uni0044 put +Encoding 17 /uni006E put +Encoding 18 /uni0074 put +Encoding 19 /uni0065 put +Encoding 20 /uni0061 put +Encoding 21 /uni0077 put +Encoding 22 /uni0069 put +Encoding 23 /uni0063 put +Encoding 24 /uni0068 put +Encoding 25 /uni004D put +Encoding 26 /uni0034 put +Encoding 27 /uni0052 put +Encoding 28 /uni0046 put +Encoding 29 /uni0036 put +Encoding 30 /uni0031 put +Encoding 31 /uni0072 put +Encoding 32 /uni0073 put +Encoding 33 /uni0076 put +Encoding 34 /uni0078 put +Encoding 35 /uni0056 put +Encoding 36 /uni0020 put +Encoding 37 /uni0047 put +Encoding 38 /uni002F put +Encoding 39 /uni004B put +Encoding 40 /uni0049 put +Encoding 41 /uni0051 put +Encoding 42 /uni006C put +Encoding 43 /uni006F put +Encoding 44 /uni0067 put +/CharStrings 45 dict dup begin +/.notdef 0 def +/uni0043 1 def +/uni0041 2 def +/uni004C 3 def +/uni0059 4 def +/uni0050 5 def +/uni0053 6 def +/uni004F 7 def +/uni0054 8 def +/uni0057 9 def +/uni0033 10 def +/uni0030 11 def +/uni0032 12 def +/uni0035 13 def +/uni0042 14 def +/uni0055 15 def +/uni0044 16 def +/uni006E 17 def +/uni0074 18 def +/uni0065 19 def +/uni0061 20 def +/uni0077 21 def +/uni0069 22 def +/uni0063 23 def +/uni0068 24 def +/uni004D 25 def +/uni0034 26 def +/uni0052 27 def +/uni0046 28 def +/uni0036 29 def +/uni0031 30 def +/uni0072 31 def +/uni0073 32 def +/uni0076 33 def +/uni0078 34 def +/uni0056 35 def +/uni0020 36 def +/uni0047 37 def +/uni002F 38 def +/uni004B 39 def +/uni0049 40 def +/uni0051 41 def +/uni006C 42 def +/uni006F 43 def +/uni0067 44 def +end readonly def +/sfnts [ +<00010000000a008000030020636d61700223f2f9000021a8000000986376742000691d390000 +2240000001fe6670676d7134766a00002440000000ab676c79668236ed47000000ac000020fc +68656164f30fc2be000024ec00000036686865610cb8067e0000252400000024686d7478dc9a +166400002548000000b46c6f63610002f714000025fc000000b86d617870049a0671000026b4 +00000020707265703b07f100000026d40000056800020066fe96046605a400030007001a400c +04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303 +1bfce5fe96070ef8f272062900010073ffe3052705f000190036401a0da10eae0a951101a100 +ae04951791118c1a07190d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f +1b02015d01152e0123200011100021323637150e01232000111000213216052766e782ff00fe +f00110010082e7666aed84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd348 +48019f01670168019f470000000200100000056805d50002000a00c240410011010004050402 +1105050401110a030a0011020003030a0711050406110505040911030a08110a030a42000307 +95010381090509080706040302010009050a0b10d4c4173931002f3ce4d4ec1239304b535807 +1005ed0705ed071005ed0705ed071008ed071005ed071005ed071008ed5922b2200c01015d40 +420f010f020f070f080f005800760070008c000907010802060309041601190256015802500c +67016802780176027c0372047707780887018802800c980299039604175d005d090121013301 +230321032302bcfeee0225fe7be50239d288fd5f88d5050efd1903aefa2b017ffe8100000001 +00c90000046a05d500050025400c0295008104011c033a00040610fcecec31002fe4ec304009 +300750078003800404015d133311211521c9ca02d7fc5f05d5fad5aa0001fffc000004e705d5 +00080094402803110405040211010205050402110302080008011100000842020300af060207 +0440051c0040070910d4e4fce4123931002fec3239304b5358071005ed071008ed071008ed07 +1005ed5922b2000a01015d403c05021402350230023005300846024002400540085102510551 +086502840293021016011a031f0a2601290337013803400a670168037803700a9f0a0d5d005d +03330901330111231104d9019e019bd9fdf0cb05d5fd9a0266fcf2fd3902c7000000000200c9 +0000048d05d500080013003a40180195100095098112100a0802040005190d3f11001c090414 +10fcec32fcec11173931002ff4ecd4ec30400b0f151f153f155f15af1505015d011133323635 +342623252132041514042b0111230193fe8d9a9a8dfe3801c8fb0101fefffbfeca052ffdcf92 +878692a6e3dbdde2fda800010087ffe304a205f00027007e403c0d0c020e0b021e1f1e080902 +070a021f1f1e420a0b1e1f0415010015a11494189511049500942591118c281e0a0b1f1b0700 +221b190e2d071914222810dcc4ecfcece4111239393939310010e4f4e4ec10eef6ee10c61117 +39304b535807100eed11173907100eed1117395922b20f2901015db61f292f294f29035d0115 +2e012322061514161f011e0115140421222627351e013332363534262f012e01353424333216 +044873cc5fa5b377a67ae2d7feddfee76aef807bec72adbc879a7be2ca0117f569da05a4c537 +36807663651f192bd9b6d9e0302fd04546887e6e7c1f182dc0abc6e4260000020073ffe305d9 +05f0000b00170023401306951200950c91128c1809190f33031915101810fcecfcec310010e4 +f4ec10ee300122001110003332001110002720001110002120001110000327dcfefd0103dcdc +0101feffdc013a0178fe88fec6fec5fe870179054cfeb8fee5fee6feb80148011a011b0148a4 +fe5bfe9efe9ffe5b01a40162016201a500000001fffa000004e905d50007004a400e06029500 +81040140031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd000800400001000800 +08ffc03811373859401300091f00100110021f071009400970099f09095d0321152111231121 +0604effdeecbfdee05d5aafad5052b0000010044000007a605d5000c017b4049051a0605090a +09041a0a09031a0a0b0a021a01020b0b0a061107080705110405080807021103020c000c0111 +00000c420a050203060300af0b080c0b0a09080605040302010b07000d10d4cc173931002f3c +ec32321739304b5358071005ed071008ed071008ed071005ed071008ed071005ed0705ed0710 +08ed5922b2000e01015d40f206020605020a000a000a120a2805240a200a3e023e05340a300a +4c024d05420a400a59026a026b05670a600a7b027f027c057f05800a960295051d0700090208 +03000406050005000601070408000807090009040a0a0c000e1a0315041508190c100e200421 +052006200720082309240a250b200e200e3c023a033504330530083609390b3f0c300e460046 +014a0240044505400542064207420840084009440a4d0c400e400e58025608590c500e660267 +03610462056006600760086409640a640b770076017b02780377047405790679077708700878 +0c7f0c7f0e860287038804890585098a0b8f0e97049f0eaf0e5b5d005d133309013309013301 +2309012344cc013a0139e3013a0139cdfe89fefec5fec2fe05d5fb1204eefb1204eefa2b0510 +faf000000001009cffe3047305f000280070402e0015130a86091f862013a0150da00993061c +a020932391068c15a329161c13000314191c2620101c03141f09062910fc4bb016544bb01454 +5b58b90009ffc03859c4c4d4ecf4ec11173939310010ece4f4e4ec10e6ee10ee10ee10ee1112 +3930014009641e611f6120642104005d011e0115140421222627351e013332363534262b0135 +33323635342623220607353e01333204151406033f91a3fed0fee85ec76a54c86dbec7b9a5ae +b6959ea39853be7273c959e6010c8e03251fc490ddf22525c33132968f8495a67770737b2426 +b42020d1b27cab0000020087ffe3048f05f0000b00170023401306a01200a00c91128c18091c +0f1e031c151b1810fcecf4ec310010e4f4ec10ee300122021110123332121110022732001110 +00232200111000028b9c9d9d9c9d9d9d9dfb0109fef7fbfbfef701090550fecdfeccfecdfecd +0133013301340133a0fe73fe86fe87fe73018d0179017a018d00000100960000044a05f0001c +009a4027191a1b03181c11050400110505044210a111940da014910400a00200100a02010a1c +171003061d10fc4bb015544bb016545b4bb014545b58b90003ffc03859c4d4ecc0c011123931 +002fec32f4ecf4ec304b5358071005ed0705ed11173959220140325504560556077a047a0576 +1b87190704000419041a041b051c74007606751a731b741c82008619821a821b821ca800a81b +115d005d25211521353600373e0135342623220607353e01333204151406070600018902c1fc +4c73018d33614da7865fd3787ad458e80114455b19fef4aaaaaa7701913a6d974977964243cc +3132e8c25ca5701dfeeb00000001009effe3046405d5001d005e4023041a071186101d1aa007 +14a010890d02a000810d8c07a41e171c010a031c000a10061e10fc014bb016544bb014545b58 +b90010ffc038594bb00f5458b9001000403859c4d4ec10c4ee310010e4e4f4ec10e6ee10fec4 +10ee1112393013211521113e0133320015140021222627351e0133323635342623220607dd03 +19fda02c582cfa0124fed4feef5ec3685ac06badcacaad51a15405d5aafe920f0ffeeeeaf1fe +f52020cb3130b69c9cb624260000000300c9000004ec05d5000800110020004340231900950a +0995128101950aad1f110b080213191f05000e1c1605191c2e09001c12042110fcec32fcecd4 +ec111739393931002fececf4ec10ee3930b20f2201015d011121323635342623011121323635 +34262325213216151406071e01151404232101930144a39d9da3febc012b94919194fe0b0204 +e7fa807c95a5fef0fbfde802c9fddd878b8c850266fe3e6f727170a6c0b189a21420cb98c8da +000100b2ffe3052905d50011004040160802110b0005950e8c09008112081c0a38011c004112 +10fc4bb0105458b90000ffc03859ecfcec310010e432f4ec11393939393001b61f138f139f13 +035d133311141633323635113311100021200011b2cbaec3c2aecbfedffee6fee5fedf05d5fc +75f0d3d3f0038bfc5cfedcfed6012a012400000200c9000005b005d500080011002e40150095 +09810195100802100a0005190d32001c09041210fcecf4ec113939393931002fecf4ec30b260 +1301015d0111332000111000212521200011100029010193f40135011ffee1fecbfe42019f01 +b20196fe68fe50fe61052ffb770118012e012c0117a6fe97fe80fe7efe960000000100ba0000 +0464047b001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec +32f4ec31002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133 +153e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef +00010037000002f2059e0013003840190e05080f03a9001101bc08870a0b0809020400081012 +0e461410fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d011121152111 +14163b01152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a +9fd202608f013e00000000020071ffe3047f047b0014001b00704024001501098608880515a9 +0105b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010 +e4f4ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b +052c072f082f092c0a6f006f016f026f156f1b095d71015d0115211e0133323637150e012320 +00111000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b8 +02a5889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e000002007bffe3 +042d047b000a002500bc4027191f0b17090e00a91706b90e1120861fba1cb923b8118c170c00 +1703180d09080b1f030814452610fcecccd4ec323211393931002fc4e4f4fcf4ec10c6ee10ee +11391139123930406e301d301e301f3020302130223f27401d401e401f402040214022501d50 +1e501f50205021502250277027851d871e871f8720872185229027a027f0271e301e301f3020 +3021401e401f40204021501e501f50205021601e601f60206021701e701f70207021801e801f +80208021185d015d0122061514163332363d01371123350e0123222635343633213534262322 +0607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a79760b65465be5af3f002 +33667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc0000010056000006350460 +000c01eb404905550605090a0904550a0903550a0b0a025501020b0b0a061107080705110405 +080807021103020c000c011100000c420a050203060300bf0b080c0b0a09080605040302010b +07000d10d44bb00a544bb011545b4bb012545b4bb013545b4bb00b545b58b900000040385901 +4bb00c544bb00d545b4bb010545b58b90000ffc03859cc173931002f3cec32321739304b5358 +071005ed071008ed071008ed071005ed071008ed071005ed0705ed071008ed59220140ff0502 +16021605220a350a49024905460a400a5b025b05550a500a6e026e05660a79027f0279057f05 +870299029805940abc02bc05ce02c703cf051d0502090306040b050a080b09040b050c150219 +0316041a051b081b09140b150c2500250123022703210425052206220725082709240a210b23 +0c390336043608390c300e460248034604400442054006400740084409440a440b400e400e56 +0056015602500451055206520750085309540a550b6300640165026a0365046a056a066a076e +09610b670c6f0e7500750179027d0378047d057a067f067a077f07780879097f097b0a760b7d +0c870288058f0e97009701940293039c049b05980698079908402f960c9f0ea600a601a402a4 +03ab04ab05a906a907ab08a40caf0eb502b103bd04bb05b809bf0ec402c303cc04ca05795d00 +5d13331b01331b013301230b012356b8e6e5d9e6e5b8fedbd9f1f2d90460fc96036afc96036a +fba00396fc6a000200c100000179061400030007002b400e06be04b100bc0205010804004608 +10fc3cec3231002fe4fcec30400b1009400950096009700905015d1333112311331523c1b8b8 +b8b80460fba00614e90000010071ffe303e7047b0019003f401b00860188040e860d880ab911 +04b917b8118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b +101b801b901ba01b05015d01152e0123220615141633323637150e0123220011100021321603 +e74e9d50b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa242401 +3e010e0112013a230000000100ba000004640614001300344019030900030e0106870e11b80c +970a010208004e0d09080b461410fcec32f4ec31002f3cecf4c4ec1112173930b2601501015d +0111231134262322061511231133113e013332160464b87c7c95acb9b942b375c1c602a4fd5c +029e9f9ebea4fd870614fd9e6564ef00000100c90000061f05d5000c00bf4034031107080702 +11010208080702110302090a0901110a0a09420a070203080300af080b050908030201050a06 +1c043e0a1c00040d10fcecfcec11173931002f3cc4ec32111739304b5358071005ed071008ed +071008ed071005ed5922b2700e01015d405603070f080f09020a15021407130a260226072007 +260a200a3407350a69027c027b07790a80028207820a90021604010b0313011b0323012c0327 +08280934013c035608590965086a097608790981018d0395019b03145d005d13210901211123 +110123011123c9012d017d017f012dc5fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae1 +000000020064000004a405d50002000d0081401d010d030d0003030d4200030b07a005010381 +09010c0a001c0608040c0e10dc4bb00b544bb00d545b58b9000cffc03859d43cc4ec32113931 +002fe4d43cec321239304b5358071004c9071005c9592201402a0b002a004800590069007700 +8a000716012b0026012b0336014e014f0c4f0d5601660175017a0385010d5d005d0901210333 +1133152311231121350306fe0201fe35fed5d5c9fd5e0525fce303cdfc33a8fea00160c30000 +000200c90000055405d50013001c00b14035090807030a061103040305110404034206040015 +030415950914950d810b040506031109001c160e050a191904113f140a1c0c041d10fcec32fc +c4ec1117391139393931002f3cf4ecd4ec123912391239304b5358071005ed071005ed111739 +5922b2401e01015d40427a130105000501050206030704150015011402160317042500250125 +0226032706260726082609201e3601360246014602680575047505771388068807980698071f +5d005d011e01171323032e012b01112311212016151406011133323635342623038d417b3ecd +d9bf4a8b78dcca01c80100fc83fd89fe9295959202bc16907efe68017f9662fd8905d5d6d88d +ba024ffdee8783838500000100c90000042305d50009002940120695040295008104ad080501 +07031c00040a10fcec32d4c431002fecf4ec10ee30b20f0b01015d13211521112115211123c9 +035afd700250fdb0ca05d5aafe48aafd37000002008fffe3049605f0000b0024005840241306 +000d860c00a01606a01c16a510a00c8922911c8c250c22091c191e131c03211f1b2510fcecec +f4ece4310010e4f4e4fce410ee10ee10ee111239304014cb00cb01cd02cd03cd04cb05cb0607 +a41eb21e025d015d01220615141633323635342601152e01232202033e013332001514002320 +0011100021321602a4889f9f88889f9f01094c9b4cc8d30f3bb26be10105fef0e2fefdfeee01 +50011b4c9b033bbaa2a1bbbba1a2ba0279b82426fef2feef575dfeefebe6feea018d01790162 +01a51e000000000100e10000045a05d5000a004040154203a00402a005810700a009081f061c +03001f010b10d44bb00f5458b9000100403859ecc4fcec31002fec32f4ecd4ec304b53585922 +01b40f030f04025d3721110535253311211521fe014afe990165ca014afca4aa047348b848fa +d5aa0000000100ba0000034a047b001100304014060b0700110b03870eb809bc070a06080008 +461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302015d012e0123220615112311 +33153e0133321617034a1f492c9ca7b9b93aba85132e1c03b41211cbbefdb20460ae66630505 +00000001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a531f1f1e420a0b +1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b080e07081422 +452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee121739304b535807100e +ed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b093b0a +3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f292029212427860a860b86 +0c860d12000000010202060a060b030c030d030e030f03100319031a031b031c041d09272f29 +3f295f297f2980299029a029f029185d005d7101152e012322061514161f011e011514062322 +2627351e013332363534262f012e01353436333216038b4ea85a898962943fc4a5f7d85ac36c +66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323be353559514b +50250f2495829eac1e0000000001003d0000047f0460000600fb402703110405040211010205 +050402110302060006011100000642020300bf0506050302010504000710d44bb00a5458b900 +00004038594bb014544bb015545b58b90000ffc03859c4173931002fec3239304b5358071005 +ed071008ed071008ed071005ed592201408e48026a027b027f02860280029102a40208060006 +0109030904150015011a031a0426002601290329042008350035013a033a0430084600460149 +034904460548064008560056015903590450086600660169036904670568066008750074017b +037b0475057a068500850189038904890586069600960197029a03980498059706a805a706b0 +08c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa0460fc5403acfba00000 +0001003b000004790460000b0143404605110607060411030407070604110504010201031102 +02010b110001000a11090a0101000a110b0a0708070911080807420a070401040800bf05020a +0704010408000208060c10d44bb00a544bb00f545b4bb010545b4bb011545b58b90006004038 +594bb0145458b90006ffc03859c4d4c411173931002f3cec321739304b5358071005ed071008 +ed071008ed071005ed071005ed071008ed071008ed071005ed59220140980a04040a1a04150a +260a3d04310a55045707580a660a76017a047607740a8d04820a99049f049707920a900aa601 +a904af04a507a30aa00a1c0a03040505090a0b1a03150515091a0b2903260525092a0b200d3a +013903370534073609390b300d4903460545094a0b400d590056015902590357055606590756 +085609590b500d6f0d78017f0d9b019407ab01a407b00dcf0ddf0dff0d2f5d005d0902230901 +2309013309010464fe6b01aad9febafebad901b3fe72d9012901290460fddffdc101b8fe4802 +4a0216fe71018f00000100100000056805d5000600b740270411050605031102030606050311 +0403000100021101010042030401af0006040302000505010710d4c4173931002fec3239304b +5358071005ed071008ed071008ed071005ed5922b2500801015d406200032a03470447055a03 +7d038303070600070208040906150114021a041a052a00260126022904290525062008380033 +0133023c043c053706480045014502490449054706590056066602690469057a007601760279 +0479057506800898009706295d005d21013309013301024afdc6d301d901dad2fdc705d5fb17 +04e9fa2b00010073ffe3058b05f0001d0039402000051b0195031b950812a111ae15950e9108 +8c1e02001c1134043318190b101e10fcecfce4fcc4310010e4f4ecf4ec10fed4ee1139393025 +1121352111060423200011100021320417152e0123200011100021323604c3feb6021275fee6 +a0fea2fe75018b015e9201076f70fc8bfeeefeed011301126ba8d50191a6fd7f53550199016d +016e01994846d75f60fecefed1fed2fece25000000010000ff4202b205d50003002d4014001a +010201021a03000342029f008104020001032fc43939310010f4ec304b5358071005ed071005 +ed5922013301230208aafdf8aa05d5f96d000000000100c90000056a05d5000a00ef40280811 +05060507110606050311040504021105050442080502030300af09060501040608011c00040b +10fcec32d4c4113931002f3cec321739304b5358071004ed071005ed071005ed071004ed5922 +b2080301015d4092140201040209081602280528083702360534084702460543085502670276 +027705830288058f0894029b08e702150603090509061b031907050a030a07180328052b062a +073604360536063507300c41034004450540064007400c62036004680567077705700c8b038b +058e068f078f0c9a039d069d07b603b507c503c507d703d607e803e904e805ea06f703f805f9 +062c5d71005d711333110121090121011123c9ca029e0104fd1b031afef6fd33ca05d5fd8902 +77fd48fce302cffd31000000000100c90000019305d50003002eb700af02011c00040410fc4b +b0105458b9000000403859ec31002fec3001400d30054005500560058f059f05065d13331123 +c9caca05d5fa2b0000020073fef805d905f0000b001d0052402a1110020f010c0d0c0e010d0d +0c420f1e0c06951200951891128c0d1e0d1b0f0c0309191b33031915101e10fcecfcec113939 +1139310010c4e4f4ec10ee391239304b5358071005ed071005ed173959220122001110003332 +00111000130123270e012320001110002120001110020327dcfefd0103dcdc0101feff3f010a +f4dd212310fec5fe870179013b013a0178d1054cfeb8fee5fee6feb80148011a011b0148facf +feddef020201a50161016201a5fe5bfe9efefcfe8e00000100c100000179061400030022b700 +9702010800460410fcec31002fec30400d10054005500560057005f00506015d13331123c1b8 +b80614f9ec0000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f51 +031215451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b +0c7f0d7f0e7f0f7f107f117b12a019f01911015d012206151416333236353426273200111000 +232200111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99c +fec8feecfeedfec70139011301140138000000020071fe56045a047b000b0028004a4023190c +1d0912861316b90f03b92623b827bc09b90fbd1a1d261900080c4706121220452910fcc4ecf4 +ec323231002fc4e4ece4f4c4ec10fed5ee1112393930b6602a802aa02a03015d013426232206 +15141633323617100221222627351e013332363d010e0123220211101233321617353303a2a5 +9594a5a59495a5b8fefefa61ac51519e52b5b439b27ccefcfcce7cb239b8023dc8dcdcc8c7dc +dcebfee2fee91d1eb32c2abdbf5b6362013a01030104013a6263aa0000000002000300000000 +001400010000000000340004002000000004000400010000f02cffff0000f000ffff10000001 +000000000006006400000000002d0000000100020003000400050006000700080009000a000b +000c000d000e000f0010001100120013001400150016001700180019001a001b001c001d001e +001f0020002100220023002400250026002700280029002a002b002c013500b800cb00cb00c1 +00aa009c01a600b800660000007100cb00a002b20085007500b800c301cb0189022d00cb00a6 +00f000d300aa008700cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114 +013907060400044e04b4045204b804e704cd0037047304cd04600473013303a2055605a60556 +053903c5021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa +0404000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb +00cd019e01d300f000ba018300d5009803040248009e01d500c100cb00f600830354027f0000 +0333026600d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062 +009c0000001d032d05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a6 +01c301ec069300a000d3035c037103db0185042304a80448008f0139011401390360008f05d5 +019a0614072306660179046004600460047b009c00000277046001aa00e904600762007b00c5 +007f027b000000b4025205cd006600bc00660077061000cd013b01850389008f007b0000001d +00cd074a042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f +027b00f600830354063705f6008f009c04e10266008f018d02f600cd03440029006604ee0073 +0000140000960000b707060504030201002c2010b002254964b040515820c859212d2cb00225 +4964b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb00325 +08b0042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0 +fd454459212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225 +b0022549b00525b005254960b0206368208a108a233a8a10653a2d000001000000024ccc7563 +80ee5f0f3cf5001f080000000000c74a953600000000c74a9536f7d6fd330d72095500000008 +000000010000000000010000076dfe1d00000de2f7d6fa510d72000100000000000000000000 +00000000002d04cd00660596007305790010047500c904e3fffc04d300c905140087064c0073 +04e3fffa07e900440517009c05170087051700960517009e057d00c905db00b2062900c90512 +00ba0323003704ec007104e7007b068b0056023900c104660071051200ba06e700c905170064 +058f00c9049a00c90517008f051700e1034a00ba042b006f04bc003d04bc003b05790010028b +00000633007302b20000053f00c9025c00c9064c0073023900c104e500710514007100000000 +00000044000000dc000001d80000021c000002e00000036000000458000004e4000005540000 +0710000007f80000087c0000097800000a3800000ae800000b6c00000bec00000c6400000ce0 +00000db400000ee00000110400001154000011ec00001264000013600000141c000015300000 +15840000165c000016cc0000173c0000189c000019c000001b4400001c2400001c2400001ccc +00001d1800001e4000001e8800001f5400001f9000002034000020fc00010000002d0354002b +0068000c000200100099000800000415021600080004b8028040fffbfe03fa1403f92503f832 +03f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603 +ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f +05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d6 +8a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03 +cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03 +c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03 +b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0 +fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03 +a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c +059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe0396 +0d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080 +048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05 +891403880b03878625058764038685110586250385110384fe038382110583fe0382110381fe +0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03 +770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a11 +42056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c +035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe035554150555420354 +150353011005531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe03 +4b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344fe034302 +2d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff +0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003350b03341e03 +330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a +25052b64032a2912052a25032912032827250528410327250326250b05260f03250b0324fe03 +23fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa +031a42031911420519fe031864031716190517fe031601100516190315fe0314fe0313fe0312 +11420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe +030a100309fe0308022d0508fe030714030664030401100504fe03401503022d0503fe030201 +1005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +FontName currentdict end definefont pop +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 787 276 +%%EndPageSetup +q +0 g +2.267717 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 275.102356 cm +737.715 156.613 m 780.234 156.613 l 780.234 99.922 l 780.234 99.922 l S Q +1.700787 w +q 1 0 0 -1 0 275.102356 cm +786.531 93.055 m 782.773 93.055 779.727 96.105 779.727 99.859 c 779.727 +103.613 782.773 106.664 786.531 106.664 c S Q +1 g +0.707 274.395 m 142.441 274.395 l 142.441 61.794 l 0.707 61.794 l 0.707 +274.395 l h +0.707 274.395 m f +0 g +1.417323 w +q 1 0 0 -1 0 275.102356 cm +0.707 0.707 m 142.441 0.707 l 142.441 213.309 l 0.707 213.309 l 0.707 +0.707 l h +0.707 0.707 m S Q +BT +16 0 0 16 2.308661 260.220464 Tm +/f-0-0 1 Tf +[<01>-1<02>1<03>133<04>-1<050607>]TJ +ET +1 g +255.723 246.122 m 340.973 246.122 l 340.973 61.927 l 255.723 61.927 l +255.723 246.122 l h +255.723 246.122 m f +0 g +1.205805 w +q 1 0 0 -1 0 275.102356 cm +255.723 28.98 m 340.973 28.98 l 340.973 213.176 l 255.723 213.176 l +255.723 28.98 l h +255.723 28.98 m S Q +BT +17.54446 0 0 16.791247 255.826791 230.241386 Tm +/f-0-0 1 Tf +<0809030a0b0c0d>Tj +9.6 0 0 9.6 259.749073 129.812069 Tm +[<0e>18<0605>]TJ +0.0416667 -3.069444 Td +<0f0605>Tj +0.0833333 -2.7862 Td +<080605>Tj +5.705271 10.248252 Td +<0e0f03>Tj +-0.0774485 1.373258 Td +<0e1003>Tj +ET +1 g +652.68 161.005 m 737.715 161.005 l 737.715 89.895 l 652.68 89.895 l +652.68 161.005 l h +652.68 161.005 m f +0 g +1.419749 w +q 1 0 0 -1 0 275.102356 cm +652.68 114.098 m 737.715 114.098 l 737.715 185.207 l 652.68 185.207 l +652.68 114.098 l h +652.68 114.098 m S Q +BT +9.6 0 0 9.6 666.850416 118.488179 Tm +/f-0-0 1 Tf +[<021112>-1<1311>-1<11>-1<14>]TJ +0 -1 Td +[<0615161217>-1<18>]TJ +16 0 0 16 654.277173 146.834639 Tm +[<0206191a0d>-1<0a0c>]TJ +ET +1 g +652.613 274.458 m 766.348 274.458 l 766.348 203.997 l 652.613 203.997 l +652.613 274.458 l h +652.613 274.458 m f +0 g +1.292092 w +q 1 0 0 -1 0 275.102356 cm +652.613 0.645 m 766.348 0.645 l 766.348 71.105 l 652.613 71.105 l +652.613 0.645 l h +652.613 0.645 m S Q +0.333333 0 0 rg +2.267717 w +q 1 0 0 -1 0 275.102356 cm +340.867 199.133 m 624.332 199.133 l 624.332 57.402 l 652.676 57.402 l S Q +0 g +640.812 223.188 m 655.68 217.723 l 640.812 212.255 l 643.188 215.485 +643.176 219.899 640.812 223.188 c h +640.812 223.188 m f* +1 0 0 rg +142.441 132.661 m 255.828 132.661 l 255.828 132.661 l f* +2.834646 w +q 1 0 0 -1 0 275.102356 cm +142.441 142.441 m 255.828 142.441 l 255.828 142.441 l S Q +0 g +157.27 125.802 m 138.688 132.634 l 157.27 139.466 l 154.301 135.434 +154.316 129.915 157.27 125.802 c h +157.27 125.802 m f* +241 139.52 m 259.582 132.688 l 241 125.856 l 243.969 129.891 243.949 +135.411 241 139.52 c h +241 139.52 m f* +0 0 1 rg +q 1 0 0 -1 0 275.102356 cm +142.441 199.133 m 255.828 199.133 l S Q +0 g +241 82.829 m 259.582 75.997 l 241 69.161 l 243.969 73.196 243.949 +78.716 241 82.829 c h +241 82.829 m f* +1 0 0 rg +142.441 104.313 m 255.828 104.313 l 255.828 104.313 l f* +q 1 0 0 -1 0 275.102356 cm +142.441 170.789 m 255.828 170.789 l 255.828 170.789 l S Q +0 g +157.27 97.454 m 138.688 104.286 l 157.27 111.122 l 154.301 107.087 +154.316 101.567 157.27 97.454 c h +157.27 97.454 m f* +241 111.177 m 259.582 104.341 l 241 97.509 l 243.969 101.544 243.949 +107.063 241 111.177 c h +241 111.177 m f* +1 g +454.254 274.395 m 567.637 274.395 l 567.637 104.313 l 454.254 104.313 l +454.254 274.395 l h +454.254 274.395 m f +0 g +1.417323 w +q 1 0 0 -1 0 275.102356 cm +454.254 0.707 m 567.637 0.707 l 567.637 170.789 l 454.254 170.789 l +454.254 0.707 l h +454.254 0.707 m S Q +BT +16 0 0 16 454.251978 260.220464 Tm +/f-0-0 1 Tf +[<081b>-1<1c>-1<1d1e>-1<0d1e>]TJ +12.8 0 0 12.8 468.42522 231.874007 Tm +[<08>146<1f>-1<1411>-1<20>-1<17>-1<1316>1<21131f>]TJ +0 -1 Td +[<191622>31<131f>-1<20>]TJ +0 -1 Td +<230107>Tj +0 -1 Td +<050303>Tj +16 0 0 16 652.677173 260.220464 Tm +[<1b1c>-1<0a>-1<1e1d>-1<1d>]TJ +12.8 0 0 12.8 666.850416 231.874007 Tm +[<1b1c>-1<24>-1<05>64<02>]TJ +9.6 0 0 9.6 118.894483 72.768489 Tm +<080605>Tj +ET +1 0 1 rg +2.267717 w +q 1 0 0 -1 0 275.102356 cm +567.637 14.883 m 652.676 14.883 l 652.676 14.883 l S Q +0 g +640.812 265.708 m 655.68 260.243 l 640.812 254.774 l 643.188 258.005 +643.176 262.419 640.812 265.708 c h +640.812 265.708 m f* +BT +9.6 0 0 9.6 595.984253 261.820464 Tm +/f-0-0 1 Tf +<250619>Tj +ET +1 0 1 rg +q 1 0 0 -1 0 275.102356 cm +567.637 29.055 m 652.676 29.055 l 652.676 29.055 l S Q +0 g +640.812 251.536 m 655.68 246.067 l 640.812 240.602 l 643.188 243.829 +643.176 248.247 640.812 251.536 c h +640.812 251.536 m f* +BT +9.6 0 0 9.6 595.984253 247.647237 Tm +/f-0-0 1 Tf +[<10010626>-1<05>-1<01>-1<06>]TJ +ET +1 0 1 rg +q 1 0 0 -1 0 275.102356 cm +652.676 128.27 m 567.637 128.27 l 567.637 128.27 l S Q +0 g +555.773 152.325 m 570.641 146.856 l 555.773 141.391 l 558.148 144.618 +558.137 149.032 555.773 152.325 c h +555.773 152.325 m f* +BT +9.6 0 0 9.6 595.984253 148.434639 Tm +/f-0-0 1 Tf +<250619>Tj +ET +1 0 1 rg +q 1 0 0 -1 0 275.102356 cm +652.676 142.441 m 567.637 142.441 l 567.637 142.441 l S Q +0 g +555.773 138.149 m 570.641 132.684 l 555.773 127.216 l 558.148 130.442 +558.137 134.86 555.773 138.149 c h +555.773 138.149 m f* +BT +9.6 0 0 9.6 595.984253 134.261409 Tm +/f-0-0 1 Tf +<100106>Tj +ET +1 0 1 rg +q 1 0 0 -1 0 275.102356 cm +652.676 156.613 m 567.637 156.613 l 567.637 156.613 l S Q +0 g +555.773 123.977 m 570.641 118.509 l 555.773 113.044 l 558.148 116.27 +558.137 120.688 555.773 123.977 c h +555.773 123.977 m f* +BT +9.6 0 0 9.6 595.984253 120.088179 Tm +/f-0-0 1 Tf +[<0501>-1<06>]TJ +-32.479004 14.930446 Td +[<1b1c>-1<01>-1<0327>]TJ +ET +1 1 0 rg +q 1 0 0 -1 0 275.102356 cm +454.254 14.883 m 142.441 14.883 l 142.441 14.883 l S Q +0 g +130.578 265.708 m 145.445 260.243 l 130.578 254.774 l 132.953 258.005 +132.941 262.419 130.578 265.708 c h +130.578 265.708 m f* +0 1 0 rg +340.867 189.356 m 454.254 189.356 l 454.254 189.356 l 454.254 189.356 l f* +q 1 0 0 -1 0 275.102356 cm +340.867 85.746 m 454.254 85.746 l 454.254 85.746 l 454.254 85.746 l S Q +0 g +352.73 183.864 m 337.863 189.333 l 352.73 194.798 l 350.355 191.571 +350.367 187.157 352.73 183.864 c h +352.73 183.864 m f* +442.391 194.845 m 457.254 189.376 l 442.391 183.911 l 444.766 187.138 +444.75 191.552 442.391 194.845 c h +442.391 194.845 m f* +BT +9.6 0 0 9.6 375.385816 192.554317 Tm +/f-0-0 1 Tf +[<2826>-1<29240211>-1<142a2b>1<2c>]TJ +ET +0 1 0 rg +q 1 0 0 -1 0 275.102356 cm +369.211 85.746 m 369.211 99.922 l 340.867 99.922 l 340.867 99.922 l S Q +0 g +363.723 177.493 m 369.191 192.356 l 374.656 177.493 l 371.43 179.868 +367.016 179.852 363.723 177.493 c h +363.723 177.493 m f* +1 1 0 rg +q 1 0 0 -1 0 275.102356 cm +142.441 43.227 m 255.828 43.227 l S Q +0 g +243.965 237.364 m 258.828 231.895 l 243.965 226.43 l 246.34 229.657 +246.324 234.071 243.965 237.364 c h +243.965 237.364 m f* +BT +9.6 0 0 9.6 180.160621 235.074007 Tm +/f-0-0 1 Tf +[<01>-1<03>1<27>-1<1e0a>-1<19>]TJ +ET +0.333333 0 0 rg +q 1 0 0 -1 0 275.102356 cm +340.867 128.27 m 454.254 128.27 l S Q +0 g +442.391 152.325 m 457.254 146.856 l 442.391 141.391 l 444.766 144.618 +444.75 149.032 442.391 152.325 c h +442.391 152.325 m f* +BT +9.6 0 0 9.6 374.012574 151.634639 Tm +/f-0-0 1 Tf +[<021c01>-1<24>-1<02>1<11>-1<14>-1<2a>1<2b2c>]TJ +ET +0 0 1 rg +q 1 0 0 -1 0 275.102356 cm +114.094 213.309 m 114.094 270 l 681.023 270 l 681.023 184.961 l S Q +0 g +675.535 78.278 m 681 93.145 l 686.469 78.278 l 683.242 80.653 678.824 +80.641 675.535 78.278 c h +675.535 78.278 m f* +BT +9.6 0 0 9.6 227.480323 8.302352 Tm +/f-0-0 1 Tf +[<080605>-1<2405>44<14>-1<1f14>-1<2a>1<2a132a>]TJ +0.166667 3.0958 Td +[<080605>-1<2406131f>-1<16142a>]TJ +ET +1 1 0 rg +q 1 0 0 -1 0 275.102356 cm +142.441 57.402 m 255.828 57.402 l S Q +0 g +243.965 223.188 m 258.828 217.723 l 243.965 212.255 l 246.34 215.485 +246.324 219.899 243.965 223.188 c h +243.965 223.188 m f* +BT +9.6 0 0 9.6 180.16062 220.90078 Tm +/f-0-0 1 Tf +[<01>-1<03>1<27>-1<0a0c>-1<27>]TJ +ET +1 0 1 rg +q 1 0 0 -1 0 275.102356 cm +709.371 71.574 m 709.371 114.094 l S Q +0 g +714.859 172.872 m 709.391 158.005 l 703.926 172.872 l 707.152 170.497 +711.57 170.509 714.859 172.872 c h +714.859 172.872 m f* +BT +0 9.6 -9.6 0 706.170093 175.181099 Tm +/f-0-0 1 Tf +<250619>Tj +ET +1 0 1 rg +q 1 0 0 -1 0 275.102356 cm +681.023 71.574 m 681.023 114.094 l S Q +0 g +686.512 172.872 m 681.047 158.005 l 675.578 172.872 l 678.805 170.497 +683.223 170.509 686.512 172.872 c h +686.512 172.872 m f* +BT +0 8.615542 -9.6 0 676.223589 162.768256 Tm +/f-0-0 1 Tf +[<10010626>-1<05>-1<01>-1<06>]TJ +ET +0 0 1 rg +q 1 0 0 -1 0 275.102356 cm +681.023 270 m 751.891 270 l 751.891 71.574 l 751.891 71.574 l S Q +0 g +685.469 5.102 m 685.469 2.598 683.438 0.567 680.934 0.567 c 678.43 +0.567 676.398 2.598 676.398 5.102 c 676.398 7.606 678.43 9.638 680.934 +9.638 c 683.438 9.638 685.469 7.606 685.469 5.102 c h +685.469 5.102 m f* +1.133858 w +q 1 0 0 -1 0 275.102356 cm +685.469 270 m 685.469 272.504 683.438 274.535 680.934 274.535 c 678.43 +274.535 676.398 272.504 676.398 270 c 676.398 267.496 678.43 265.465 +680.934 265.465 c 683.438 265.465 685.469 267.496 685.469 270 c h +685.469 270 m S Q +740.027 209.016 m 754.895 203.548 l 740.027 198.083 l 742.402 201.309 +742.387 205.727 740.027 209.016 c h +740.027 209.016 m f* +BT +9.6 0 0 9.6 375.385816 79.168489 Tm +/f-0-0 1 Tf +[<020501>-1<240211>-1<142a2b>1<2c>]TJ +ET +0 0 1 rg +2.267717 w +q 1 0 0 -1 0 275.102356 cm +199.133 199.133 m 199.133 241.652 l 482.598 241.652 l 482.598 170.789 l S Q +0 g +199.133 71.524 m 196.629 71.524 194.598 73.555 194.598 76.059 c 194.598 +78.563 196.629 80.595 199.133 80.595 c 201.637 80.595 203.668 78.563 +203.668 76.059 c 203.668 73.555 201.637 71.524 199.133 71.524 c h +199.133 71.524 m f* +1.133858 w +q 0.000000000000000061 -1 -1 -0.000000000000000061 0 275.102356 cm +203.578 -199.133 m 203.578 -196.629 201.547 -194.598 199.043 -194.598 c +196.539 -194.598 194.508 -196.629 194.508 -199.133 c 194.508 -201.637 +196.539 -203.668 199.043 -203.668 c 201.547 -203.668 203.578 -201.637 +203.578 -199.133 c h +203.578 -199.133 m S Q +477.109 92.454 m 482.578 107.317 l 488.043 92.454 l 484.816 94.829 +480.398 94.813 477.109 92.454 c h +477.109 92.454 m f* +Q +showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore +%%EOF diff --git a/2010/gsm_phone-anatomy/calypso-block.pdf b/2010/gsm_phone-anatomy/calypso-block.pdf Binary files differnew file mode 100644 index 0000000..27f8be8 --- /dev/null +++ b/2010/gsm_phone-anatomy/calypso-block.pdf diff --git a/2010/gsm_phone-anatomy/calypso-block.svg b/2010/gsm_phone-anatomy/calypso-block.svg new file mode 100644 index 0000000..cf7d07a --- /dev/null +++ b/2010/gsm_phone-anatomy/calypso-block.svg @@ -0,0 +1,778 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="297mm" + height="210mm" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + sodipodi:docname="calypso-block.pdf" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/home/laforge/calypso-block.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + version="1.1"> + <defs + id="defs2385"> + <marker + inkscape:stockid="CurveIn" + orient="auto" + refY="0.0" + refX="0.0" + id="CurveIn" + style="overflow:visible"> + <path + id="path3349" + d="M 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none;fill:none" + transform="scale(0.6)" /> + </marker> + <marker + inkscape:stockid="DotM" + orient="auto" + refY="0.0" + refX="0.0" + id="DotM" + style="overflow:visible"> + <path + id="path3229" + d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none" + transform="scale(0.4) translate(7.4, 1)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mstart" + style="overflow:visible"> + <path + id="path7719" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path3191" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;"> + <path + id="path3179" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.2) rotate(180) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;"> + <path + id="path3173" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleOutL" + style="overflow:visible"> + <path + id="path3307" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path3185" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path3188" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 372.04724 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1052.3622 : 372.04724 : 1" + inkscape:persp3d-origin="526.18109 : 248.03149 : 1" + id="perspective2392" /> + </defs> + <sodipodi:namedview + inkscape:document-units="mm" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.96166971" + inkscape:cx="267.27075" + inkscape:cy="495.79724" + inkscape:current-layer="layer1" + id="namedview2387" + showgrid="true" + inkscape:snap-global="true" + inkscape:window-width="599" + inkscape:window-height="987" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:snap-guide="true" + inkscape:object-paths="false" + inkscape:object-nodes="false" + objecttolerance="3" + gridtolerance="10000" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid2400" + visible="true" + enabled="true" + units="mm" + spacingx="5mm" + spacingy="5mm" + empspacing="2" /> + </sodipodi:namedview> + <metadata + id="metadata2389"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#CurveIn)" + d="m 956.69293,230.31495 53.14957,0 0,-70.86614 0,0" + id="path22123" /> + <g + id="g12239" + transform="translate(-35.433051,2.2643947e-6)"> + <rect + y="35.433064" + x="70.866142" + height="265.74802" + width="177.16536" + id="rect7161" + style="fill:#ffffff;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none" /> + <text + sodipodi:linespacing="100%" + id="text7163" + y="53.149601" + x="72.866142" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="53.149601" + x="72.866142" + id="tspan7165" + sodipodi:role="line">CALYPSO</tspan><tspan + y="73.149597" + x="72.866142" + sodipodi:role="line" + id="tspan3020">Digital Baseband</tspan><tspan + y="93.149597" + x="72.866142" + sodipodi:role="line" + id="tspan3024"></tspan><tspan + y="93.149597" + x="72.866142" + sodipodi:role="line" + id="tspan3036">DSP</tspan><tspan + y="113.1496" + x="72.866142" + sodipodi:role="line" + id="tspan3026">MCU</tspan><tspan + y="133.1496" + x="72.866142" + sodipodi:role="line" + id="tspan3028">SRAM</tspan><tspan + y="153.1496" + x="72.866142" + sodipodi:role="line" + id="tspan3030">Mask ROM</tspan><tspan + y="173.1496" + x="72.866142" + sodipodi:role="line" + id="tspan3032">UART, SPI, I2C</tspan></text> + </g> + <g + id="g20347" + transform="translate(-35.433051,2.2643947e-6)"> + <rect + y="70.77356" + x="389.63159" + height="230.24446" + width="106.56361" + id="rect2406" + style="fill:#ffffff;stroke:#000000;stroke-width:1.50725651;stroke-miterlimit:4;stroke-dasharray:none" /> + <text + transform="scale(1.0221827,0.9782987)" + sodipodi:linespacing="100%" + id="text7157" + y="92.63372" + x="381.30542" + style="font-size:21.45465279px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="92.63372" + x="381.30542" + id="tspan7159" + sodipodi:role="line">TWL3025</tspan><tspan + y="114.08837" + x="381.30542" + sodipodi:role="line" + id="tspan3038">ABB</tspan></text> + <text + sodipodi:linespacing="100%" + id="text12244" + y="216.1601" + x="394.66666" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="216.1601" + x="394.66666" + id="tspan12246" + sodipodi:role="line">BSP</tspan></text> + <text + sodipodi:linespacing="100%" + id="text12248" + y="252.99342" + x="395.16666" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="252.99342" + x="395.16666" + id="tspan12250" + sodipodi:role="line">USP</tspan></text> + <text + sodipodi:linespacing="100%" + id="text12252" + y="286.42783" + x="396.16666" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="286.42783" + x="396.16666" + id="tspan12254" + sodipodi:role="line">TSP</tspan></text> + <text + sodipodi:linespacing="100%" + id="text20330" + y="163.44881" + x="464.62991" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="163.44881" + x="464.62991" + id="tspan20332" + sodipodi:role="line">BUL</tspan></text> + <text + sodipodi:linespacing="100%" + id="text20334" + y="146.96971" + x="463.70053" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="146.96971" + x="463.70053" + id="tspan20336" + sodipodi:role="line">BDL</tspan></text> + </g> + <g + id="g13450" + transform="translate(-35.433051,2.2643947e-6)"> + <rect + y="177.16687" + x="885.82831" + height="88.888702" + width="106.29617" + id="rect12310" + style="fill:#ffffff;stroke:#000000;stroke-width:1.77468574;stroke-miterlimit:4;stroke-dasharray:none" /> + <text + sodipodi:linespacing="100%" + id="text13440" + y="230.31496" + x="903.54333" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="230.31496" + x="903.54333" + id="tspan13442" + sodipodi:role="line">Antenna</tspan><tspan + id="tspan13444" + y="242.31496" + x="903.54333" + sodipodi:role="line">Switch</tspan></text> + <text + sodipodi:linespacing="100%" + id="text13446" + y="194.88188" + x="887.82678" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="194.88188" + x="887.82678" + id="tspan13448" + sodipodi:role="line">ASM4532</tspan></text> + </g> + <rect + style="fill:#ffffff;stroke:#000000;stroke-width:1.61511528;stroke-miterlimit:4;stroke-dasharray:none" + id="rect11596" + width="142.16623" + height="88.074844" + x="850.31543" + y="35.354797" /> + <path + style="fill:none;stroke:#550000;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" + d="m 460.62994,283.46456 354.33071,0 0,-177.16535 35.43307,0" + id="path21554" /> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend)" + d="m 212.59845,212.59842 141.73228,0 0,0" + id="path7167" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" + d="m 212.59845,283.46456 141.73228,0" + id="path7171" /> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend)" + d="m 212.59844,248.03149 141.73229,0 0,0" + id="path9925" /> + <g + id="g12217" + transform="translate(-35.433051,2.2643947e-6)"> + <rect + y="35.433064" + x="637.79529" + height="212.59842" + width="141.73228" + id="rect2408" + style="fill:#ffffff;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text7153" + y="53.149601" + x="637.79529" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + id="tspan11602" + y="53.149601" + x="637.79529" + sodipodi:role="line">TRF6151</tspan></text> + <text + sodipodi:linespacing="100%" + id="text12175" + y="88.582672" + x="655.51184" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="88.582672" + x="655.51184" + id="tspan12177" + sodipodi:role="line">Transceiver</tspan><tspan + id="tspan12179" + y="104.58267" + x="655.51184" + sodipodi:role="line">Mixers</tspan><tspan + id="tspan12183" + y="120.58267" + x="655.51184" + sodipodi:role="line">VCO</tspan><tspan + id="tspan12181" + y="136.58267" + x="655.51184" + sodipodi:role="line">PLL</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="850.39374" + y="53.149605" + id="text11598" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan11600" + x="850.39374" + y="53.149605">RF3166</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="868.11029" + y="88.582672" + id="text12185" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + x="868.11029" + y="88.582672" + id="tspan12193">RF PA</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="183.16537" + y="287.46457" + id="text12256" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan12258" + x="183.16537" + y="287.46457">TSP</tspan></text> + <g + id="g12268" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path11606" + d="m 779.52756,53.149601 106.29921,0 0,0" + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text12260" + y="51.149601" + x="814.96063" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="51.149601" + x="814.96063" + id="tspan12262" + sodipodi:role="line">GSM</tspan></text> + </g> + <g + id="g12273" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path12195" + d="m 779.52756,70.866136 106.29921,0 0,0" + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text12264" + y="68.866135" + x="814.96063" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="68.866135" + x="814.96063" + id="tspan12266" + sodipodi:role="line">DCS/PCS</tspan></text> + </g> + <g + id="g12290" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path12197" + d="m 885.82677,194.88188 -106.29921,0 0,0" + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text12278" + y="192.88188" + x="814.96063" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="192.88188" + x="814.96063" + id="tspan12280" + sodipodi:role="line">GSM</tspan></text> + </g> + <g + id="g12295" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path12165" + d="m 885.82677,212.59841 -106.29921,0 0,0" + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text12282" + y="210.59842" + x="814.96063" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="210.59842" + x="814.96063" + id="tspan12284" + sodipodi:role="line">DCS</tspan></text> + </g> + <g + id="g12300" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path12199" + d="m 885.82677,230.31495 -106.29921,0 0,0" + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text12286" + y="228.31496" + x="814.96063" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="228.31496" + x="814.96063" + id="tspan12288" + sodipodi:role="line">PCS</tspan></text> + </g> + <g + id="g18005" + transform="translate(-35.433051,2.2643947e-6)"> + <text + sodipodi:linespacing="100%" + id="text14594" + y="49.149601" + x="425.21259" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + id="tspan14598" + y="49.149601" + x="425.21259" + sodipodi:role="line">RFCLK</tspan></text> + <path + id="path14605" + d="m 637.79528,53.149601 -389.76378,0 0,0" + style="fill:none;stroke:#ffff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + </g> + <g + id="g18583" + transform="translate(-35.433051,2.2643947e-6)"> + <path + inkscape:label="#path2410" + id="path241011111" + d="m 496.06299,141.73228 141.73229,0 0,0 0,0" + style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text12167" + y="137.73228" + x="539.21259" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="137.73228" + x="539.21259" + id="tspan12169" + sodipodi:role="line">I/Q Analog</tspan></text> + <path + id="path15170" + d="m 531.49606,141.73228 0,17.71653 -35.43307,0 0,0" + style="fill:none;stroke:#00ff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + id="g18000" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path17431" + d="m 248.0315,88.582671 141.73228,0" + style="fill:none;stroke:#ffff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text17996" + y="84.582672" + x="295.18109" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="84.582672" + x="295.18109" + id="tspan17998" + sodipodi:role="line">CLK13M</tspan></text> + </g> + <g + id="g18593" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path18010" + d="m 496.06299,194.88188 141.73229,0" + style="fill:none;stroke:#550000;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text18589" + y="188.88188" + x="537.49603" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="188.88188" + x="537.49603" + id="tspan18591" + sodipodi:role="line">AFC Analog</tspan></text> + </g> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" + d="m 177.16538,301.1811 0,70.86614 708.66141,0 0,-106.29921" + id="path19726" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="318.89767" + y="368.04724" + id="text20291" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan20293" + x="318.89767" + y="368.04724">TSP Parallel</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="320.89767" + y="330.89764" + id="text20295" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan20297" + x="320.89767" + y="330.89764">TSP Serial</tspan></text> + <g + id="g20314" + transform="translate(-35.433052,-17.716531)"> + <path + id="path20301" + d="m 248.0315,124.01574 141.73228,0" + style="fill:none;stroke:#ffff00;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + sodipodi:linespacing="100%" + id="text20303" + y="120.01574" + x="295.18109" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + id="tspan20310" + y="120.01574" + x="295.18109" + sodipodi:role="line">CLK32K</tspan></text> + </g> + <g + id="g20421" + transform="translate(-35.433051,2.2643947e-6)"> + <path + id="path12871" + d="m 956.69291,124.01574 0,53.14961" + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="100%" + id="text20402" + y="952.69293" + x="-159.44881" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="952.69293" + x="-159.44881" + id="tspan20404" + sodipodi:role="line">GSM</tspan></text> + </g> + <g + id="g20415" + transform="translate(-35.433051,2.2643947e-6)"> + <g + id="g20410"> + <path + style="fill:none;stroke:#ff00ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" + d="m 921.25984,124.01574 0,53.14961" + id="path12312" /> + <text + xml:space="preserve" + style="font-size:11.36807537px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="-184.69075" + y="867.06183" + id="text20406" + sodipodi:linespacing="100%" + transform="matrix(0,-0.9473396,1.0555877,0,0,0)"><tspan + sodipodi:role="line" + id="tspan20408" + x="-184.69075" + y="867.06183">DCS/PCS</tspan></text> + </g> + </g> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM);marker-end:url(#Arrow2Mend)" + d="m 885.82679,372.04724 88.58266,0 0,-248.0315 0,0" + id="path20426" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + x="503.77954" + y="279.46457" + id="text22119" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan22121" + x="503.77954" + y="279.46457">APC Analog</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM);marker-end:url(#Arrow2Mend)" + d="m 283.46459,283.46456 0,53.14961 354.33071,0 0,-88.58268" + id="path18598" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="258.43008" + y="206.35927" + id="text3040"><tspan + sodipodi:role="line" + id="tspan3042" + x="258.43008" + y="206.35927">I/Q Digital</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="259.96451" + y="237.68361" + id="text3044"><tspan + sodipodi:role="line" + id="tspan3046" + x="259.96451" + y="237.68361">SPI</tspan></text> + </g> +</svg> diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.1.pdf b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.1.pdf Binary files differnew file mode 100644 index 0000000..b91c574 --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.1.pdf diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.pdf b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.pdf Binary files differnew file mode 100644 index 0000000..d90ca5a --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.pdf diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.tex b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.tex new file mode 100644 index 0000000..72e707c --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.2.tex @@ -0,0 +1,674 @@ +\documentclass[a4paper]{article} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{subfigure} +\pagestyle{plain} + +%\usepackage{url} + +\setlength{\oddsidemargin}{0in} +\setlength{\evensidemargin}{0in} +\setlength{\topmargin}{0in} +\setlength{\headheight}{0in} +\setlength{\headsep}{0in} +\setlength{\textwidth}{6.5in} +\setlength{\textheight}{9.5in} +%\setlength{\parindent}{0in} +\setlength{\parskip}{0.05in} + +\begin{document} + +\title{Anatomy of contemporary GSM cellphone hardware} +\author{Harald Welte $<$laforge@gnumonks.org$>$} +\maketitle + +\begin{abstract} +%% add citation for the nubmer of gsm users and phones / carriers. +Billions of cell phones are being used every day by an almost equally large +number of users. The majority of those phones are built according to +the GSM protocol and interoperate with GSM networks of hundreds of +carriers. + +Despite being an openly published international standard, the architecture of +the GSM network and its associated protocols are only known to a relatively +small group of R\&D engineers. + +Even less public information exists about the hardware architecture of the +actual mobile phones themselves, at least as far as it relates to that part +of the phone implementing the GSM protocols and facilitating access to the +public GSM networks. + +This paper is an attempt to serve as an introductory text into the hardware +architecture of contemporary GSM mobile phone hardware anatomy. It is intended +to widen the technical background on mobile phones within the IT community. +\end{abstract} + +%\tableofcontents + +\section{Foreword} + +This document is the result of my personal research on mobile phone +hardware and system-level software throughout the last 6+ years. + +Despite my past work for Openmoko Inc., I have never been professionally +involved in any aspect of the actual GSM related hardware of any phone. +Nevertheless I have the feeling that in the wider information technology +industry, I am part of a very, very small group of people who actually +understand mobile phones down to the lowest layer. + +I hope it is useful for any systems level engineer with an interest in +understanding more about how mobile phone hardware actually works. + +There are no guarantees for accuracy or correctness of any part of the +document. I happily receive your feedback and corrections. + +\section{Is your phone smart or does it have features?} + +Initially, for the first couple of years, GSM cell phones were actual phones +with very little additional functionality. They provided everything that was +required for voice calls, as well as SIM phone book editing features. The only +additional non-features were simple improvements like the ability to use them +as an alarm clock. + +In the mid-1990s, a certain new type of devices became popular: The PDA +(personal digital assistant). They pioneered handheld computing by introducing +touch screen user interfaces and a wide range of application programs, ranging +from calendar/scheduling applications, dictionaries, exchange rate and tip +calculators, scientific calculators, accounting / finance software, etc. + +While in mobile phones the actual cellphone aspect was becoming more and more +commoditized, at some point the PDA features and functionalities were added to +phones, coining the term {\em smartphone}. At that point there was a +need to differentiate from those phones that were not-so-smart. Those +phones were then called {\em feature phones}. + +There has never been an industry-wide accepted definition of those terms, +and especially in the late 2000s, feature phones started to inherit a lot +of the functionality that was formerly only present in smartphones. + +This document will define the terms (only for the purpose of this document) +along a very clear border in hardware architecture, as will be described in the +following sections: + +\subsection{Feature Phone} + +A feature phone is a phone that runs the GSM protocol stack (the software +implementing the GSM protocol) as well as the user interface and all +applications on a single processor. For historic reasons, this +processor is known as the so-called {\em baseband processor} (BP). + +The baseband processor often exposes a serial port (or today USB) over which +the phone can be used as a terminal adapter, similar to old wireline modems. +The industry standard protocol for this interface is an AT command set - +extended and modified from how computers interfaced old wireline modems. +The AT-command interface can be connected to a computer. The computer can then +use the phone to establish data calls, send/receive short messages via SMS, +and generally remote-control the phone. + +\subsection{Smartphone} + +A smartphone is a phone that has a dedicated processor for the GSM protocol +stack, and another (potentially multi-core) general purpose processor for +the user interface and applications. This processor is known as the +{\em application processor} (AP). + +The first hardware generations of smartphones did nothing else but to put the +feature phone and a PDA into one case. The keypad and display of the baseband +processor is removed. What remains of the feature phone is a {\em GSM modem}, +controlled by AT commands sent from the AP. + +Each processor has its own memory (RAM and Flash), peripherals, clocking, etc. +So this setup is not to be confused with the symmetric multi-processor setups +like seen in the personal computer industry. + +Later generations of smartphones have exchanged the AT command interface by +various proprietary protocols. Also, the serial line was replaced by a +higher-bandwidth hardware connection such as USB, SPI or a shared memory +interface. + +Due to market pressure for ever smaller phones with ever more functions, +the industry has produced highly integrated products, uniting the AP and BP +inside one physical package. Further pressure on reducing cost and PCB +footprint has led to products where there is no need to have independent +RAM and Flash chips for AP and BP. Rather, a single RAM and Flash chip +is divided by assigning portions of the RAM and Flash to each of the two +processors. + +However, the fundamental separation between the AP and BP, each with their own +memory address space and software, remains present in all smartphones until +today. + +\section{GSM modem architecture} + +Every GSM phone, feature phone and smartphone alike, has a GSM modem interfacing +with the GSM network. + +This GSM modem consists of several parts: +\begin{itemize} +\item RF Frontend, responsible for receiving and transmitting at GSM frequency +\item Analog Baseband, responsible for modulation and demodulation +\item Digital Baseband, responsible for digital signal processing and the GSM protocol stack +\end{itemize} + +\begin{figure}[h] +\centering +\includegraphics[width=160mm]{calypso-block.pdf} +\caption{Block schematics of a TI Calypso/Iota/Rita GSM modem} +\label{reg-form} +\end{figure} + +\subsection{The RF Frontend} + +The RF Frontend is tasked with the physical receive and transmit +interface with the GSM air interface (sometimes called Um interface). + +It minimally consists of an antenna switch, GSM band filters, low-noise +amplifier (LNA) for the receive path, power amplifier for the transmit +path, a local oscillator (LO) and a mixer. + +By mixing the LO frequency with the received RF signal, it generates an +analog baseband signal that is passed to the Analog Baseband (ABB) part +of the modem. By mixing the output of the ABB with the LO frequency, it +generates a RF signal that is to be transmitted in the GSM frequency +band. + +As the receive and transmit framing has an offset of 3 TDMA frames, +there is no need for a frequency duplexer. Instead, an antenna switch +is used. The switch typically is implemented using a MEMS or diode +switch. For a quad-band phone, typically a single-pole 6-throw (SP6T) +switch is used: 4 for the four Rx bands (one for each band), and 2 for +Tx (where 850+900 and 1800+1900 each share one PA output, respectively). + +\subsubsection{RF Frontend receive path} + +The antenna picks up the GSM radio signal as it is sent from a GSM cell +(called Base Transceiver Station, BTS). The antenna signal first hits +the antenna switch, which connects the antenna with the Rx path for the +GSM band of the to-be-received radio frequency. It is then filtered by +a bandpass to block out-of-band signals before entering a low-noise +amplifier for increasing signal amplitude. + +After passing the LNA, the RF signal is mixed with a frequency generated +by the LO. Depending on the LO signal, either an intermediate frequency +(IF) or a direct baseband signal is produced. In modern GSM modems, +zero-IF designs with immediate down-conversion to analog baseband +signals are most common. + +The baseband signal is then filtered to remove unwanted images and sent +as analog I/Q signals (representing amplitude and phase) to the ABB. + +\subsubsection{RF Frontend transmit path} + +The ABB generates analog I/Q signals, which are filtered and passed +into the mixer, where they are mixed with the LO frequency and thus +up-converted to the GSM RF band. From there, they are sent to the +transmit amplifier (RF PA) for amplification. After amplification, they +traverse the antenna switch and are transmitted by the antenna. + +\subsubsection{Local Oscillator} + +The LO of a GSM modem has to be synchronized very closely to that of the +cell (BTS). To achieve the required precision, a Voltage-Controlled, +Temperature-Compensated Crystal Oscillator (VCTCXO) is used. + +Common frequencies for this VCTCXO are 26MHz or 13MHz, as the GSM bit +clock (270,833 Hz) is an integral division (/96 or /48, respectively) of +those frequencies. The tuning range of the VCTCXO is several kHz to +compensate for temperature drift. + +\subsection{The Analog Baseband (ABB)} + +The ABB part of a GSM modem is responsible to interface between the +digital domain and the analog domain of the GSM modem. + +\subsubsection{ABB Receive path} + +The analog baseband I/Q signals are potentially filtered again and +digitized by and Analog-Digital converter (ADC). The sample clocks used +are typically integral multiples of the GSM bit-clock. The sample clock +itself is derived by dividing the VCTCXO of the RF frontend. + +The digital I/Q samples are passed to the Digital Signal Processor +(DSP) in the Digital Baseband (DBB). To reduce the number of traces to +be routed on the PCB, the samples are typically sent over some kind of +synchronous serial link. + +\subsubsection{ABB Transmit path} + +There are multiple architectures found in the ABB transmit path. + +The obvious architecture is to do the inverse of the receive operation: +Transmit digital I/Q samples from the DSP to the ABB and convert +them into an analog signal that is then to be sent to the mixer of the +RF Frontend. + +However, sending a GSM signal with its GMSK modulation is much simpler +than receiving. So in order to reduce computational complexity (and +thus cost as well as power consumption) inside the DSP, the modulation +of the bits is often performed in hardware inside the ABB. + +In this design, the unmodulated GSM burst bits are sent from the DBB to +a burst buffer inside the ABB. From there, based on ROM tables and a +Digital-to-Analog converter (DAC), an analog GMSK modulated signal is +generated. + +\subsection{The Digital Baseband (DBB)} + +The digital baseband implements the actual GSM protocols from Layer1 up +to Layer3 as well as higher layers such as a user interface in the case +of the feature phone. In a smartphone, the DBB only implements a +machine interface to be used by the AP. + +A typical DBB design includes a Digital Signal Processor (DSP) for the +lower half of Layer1, and a general-purpose processor (MCU) for the +upper part of Layer1, as well as anything above. + +\subsubsection{Digital Signal Processor} + +The choice of DSP architecture largely depends on the DBB chipset +vendor. Often they already have a line of DSP cores in-house and will of +course want to reuse that in their DBB chip designs. Every major DSP +architecture can be found (TI, Analog Devices, ...). + +The DSP performs the primary tasks such as Viterbi equalization, +demodulation, decoding, forward error correction, error detection, burst +(de)interleaving. + +Of course, if actual speech data is to be communicated over the GSM +network, the DSP will also have the auxiliary task to perform the +computation of the lossy speech codec used to compress the speech. + +Communication between the DSP and MCU happens most commonly by a shared +memory interface. The shared memory contains both actual data that is +to be processed, as well as control information and parameters +describing what to be done with the respective data. + +For the receive side, the MCU will instruct the DSP to perform decoding +for a particular GSM burst type, after which the DSP will receive I/Q +samples from the ABB, perform detection/demodulation/decoding and +report the result of the operation (including any decoded data) back to +the MCU. + +For the transmit path, the MCU will present the to-be-transmitted data +and auxiliary information to the DSP, which then takes care of encoding +and sends the corresponding burst bits to the ABB (remember, most ABB +take care of the modulation to reduce DSP load). + +The detailed programming information (API) of the DSP shared memory +interface is a closely-guarded secret of the baseband chip maker and is +not commonly disclosed even to their customers (the actual phone making +companies). + +In doing so, the baseband chip makers create a close dependency between +the GSM Layer1 software (running on the MCU) driving/implementing this +API and the actual baseband chip. Whoever buys their chip will also +have to license their GSM protocol stack software. + +It is thus almost impossible for an independent software vendor to get +access to the DSP API documentation, which the author of this paper +finds extremely anti-competitive. + +\subsubsection{DSP Peripherals} + +The specifications of the GSM proprietary On-air encryption A5/1 and +A5/2 are only made available to GSM baseband chip makers who declare +their confidentiality. Implementing the algorithm in software is +apparently considered as breach of that confidentiality. Thus, the +encryption algorithms are only implemented in hardware - despite them +being reverse-engineered and publicly disclosed by cryptographers as +early as 1996. %% cite + +Thus, the DSP in a DBB commonly has a integrated peripheral implementing the A5 +encryption. + +Further integrated DSP peripherals may include a viterbi hardware accelerator, +a DMA capable serial interface to the ABB and others. + +\subsection{Baseband Processor (MCU)} + +The MCU of almost all modern GSM DBBs is a System-on-a-Chip (SoC) utilizing a +32bit ARM7TDMI core. The only notable exception are low-cost Infineon chips +like PM7870, who still use a version of their 16bit C166 core. + +Baseband chips that support 3G cellular networks often use a more powerful +ARM926 or ARM975 core as MCU. + +\subsection{MCU peripherals} + +The MCU cores have the typical set of peripherals of any ARM7 based +microcontroller, such as RTC, UARTs for RS232 and IRDA, SPI, I2C, SD/MMC card +controller, keypad scan controller, USB device, ... + +However, there are some additional peripherals that are very GSM specific: +\begin{itemize} +\item A GPRS crypto unit for the proprietary GEA family of ciphers +\item Extended power management facilities, including a timer that can calibrate the RTC clock based on the synchronized VCTCXO in order to wake-up the MCU ahead of pre-programmed events in the GSM time multiplex +\item GSM TDMA timers that can synchronize to the on-air time frames and generate interrupts to MCU and DSP +\item Software-programmable hardware state machines for sequencing GSM burst Rx or Tx in ABB and RF Frontend +\item An ISO7816 compatible smart card reader interface for the SIM card +\end{itemize} + +The programming of those peripherals is highly device-specific and there are no +industry standards. Every DBB architecture of every supplier has its own +custom register set and programming interface. + +The register-level documentation for those proprietary peripherals is (like all +documentation on DBB chipsets) closely guarded by NDAs, effectively preventing +the development of Free Software / Open Source drivers for them, unless such +documents are leaked by third parties. + +However, as opposed to the DSP API documentation, the register-level +documentation to the MCU peripherals is normally provided to the cellphone +manufacturers. + +\section{Digital Baseband Software Architecture} + +This section provides an introductory reading in the typical software +architecture as it is found on contemporary GSM digital baseband designs. + +\subsection{GSM Layer 1} + +The Layer1 (L1) software is highly device-specific, as it closely interacts +with the DSP using the shared memory DSP API, as well as the proprietary +integrated peripherals controlling the ABB and RF Frontend. + +However, there are some general observations that can be made about the L1: + +\subsubsection{L1 Synchronous part} + +The synchronous part is executed synchronously to the GSM TDMA frame clock. +Both CPU and DSP are interrupted by some hardware GSM timer every TDMA frame. + +The L1 synchronous part typically runs inside IRQ or FIQ context of the MCU, +taking care of retrieving data from and providing data to the DSP API. + +\subsubsection{L1 Asynchronous part} + +The asynchronous part is scheduled as a normal task, potentially with high +or even real-time priority. It picks up the information provided by the L1 +Sync and schedules its next actions. + +The L1 async typically communicates via a message queue with the Layer2 +above. Common primitives for L1 control are described (as non-normative parts) +of the GSM specifications. + +\subsection{GSM Layer 2} + +As opposed to L1, the GSM Layer 2 (L2) is already fully hardware independent. +It implements the LAPDm protocol as specified in GSM TS 04.06. LAPDm is a +derivative of the ISDN Layer 2 called LAPD, which in turn is a descendent +of the HDLC family of protocols. + +LAPDm takes care of providing communication channels for Layer3. Those +channels are protected from frame loss by the use of sequence numbers and +retransmissions. + +The interface to Layer3 is typically implemented by means of a message queue. + +Primitives (but no detailed protocol) for use of the Layer2 / Layer3 interface +are provided in the GSM specifications. + +\subsection{GSM Layer 3} + +GSM Layer 3 (L3) consist of sublayers for Radio Resource (RR), Mobility +Management (MM) and Call Control (CC). + +There is sufficient treatment of the GSM L3 and its sublayers in +existing texts, so there is no point in making a futile attempt +repeating that here. + +\section{Synchronization and Clocking} + +The author of this paper has been quoted saying {\em GSM is a synchronous +TDMA nightmare}. This is by no means intended as an insult to the +technology itself or to its inventors. It merely serves as evidence how +hard it is to get into the synchronous TDMA mindset, especially for +engineers who have spent most of their career in the world of packet +switched networks. + +GSM is synchronous in multiple ways between cell (BTS) and phone (MS): +\begin{itemize} +\item Synchronization of the carrier clock to tune the receiver and transmitter to the correct frequency +\item Synchronization of the bit clock in order to perform sampling at the most optimal sample intervals +\item Synchronization of the frame clock (and thus timeslots) to know when a TDMA frame and its 8 timeslots start +\item Synchronization of the TDMA multiplex to correctly (de)multiplex the logical channels that are sent over each timeslots +\end{itemize} + +As all those clocks are related to each other, they can (and should) all be +derived from the same master clock: The VCTCXO in our phone. + +\subsection{How to synchronize the VCTCXO} + +Every cell sends frequency correction bursts as part of the Frequency +Correction CHannel (FCCH), which is itself part of the BCCH, which in turn is +constantly transmitted by the BTS. + +To acquire initial synchronization ot the GSM network, the LO is tuned to the +desired GSM RF channel (ARFCN) frequency. However, at this point, the LO +frequency is a multiple of the VCTCXO frequency which in turn still has an +undetermined error. This initial frequency error is as large as that of a +regular crystal oscillator, potentially already with temperature compensation. + +The resulting baseband signal thus can be shifted by a fairly large amount in +our baseband spectrum. A specific DSP code is now using correlation and other +techniques to identify the frequency correction burst. The DSP can then +further calculate the actual frequency error of the LO by comparing the +received FCCH burst with the FCCH burst as specified. + +This computed frequency error can be fed into a (software) frequency control +loop filter. The loop filter output is applied to an auxiliary DAC, which +generates the control voltage for the VCTCXO. + +After a number of FCCH bursts and corresponding frequency control loop +iterations, the VCTCXO generated clock has only a residual error. Whenever the +phone is receiving, the frequency control loop is continuously exercised in +order to maintain synchronization. + +\subsection{How to synchronize the frame clock} + +When the DSP performs FCCH burst detection as described above, it identifies +the exact position in the incoming sample stream when the FCCH burst was +happening. By knowing from the specification that the FCCH burst is +part of the BCCH, and that the BCCH is sent on timeslot 0, the Layer1 +software can then synchronize the phone to the TDMA frame start. + +Commonly, a hardware timer unit is clocked by a (divided) VCTCXO clock and thus +counts in multiples of the GSM bit clock, wrapping/resetting at the TDMA duration +of 1250 bits. + +By scheduling events synchronously to this GSM bit-clock timer, the L1 can now +trigger events (such as asking the DSP to demodulate incoming data) or +instructing the LO to retune synchronously to every TDMA frame. +From this timer the DBB typically also generates interrupts to the DSP and MCU. + +\subsection{How to synchronize the GSM TDMA multiplex} + +As part of the BCCH, the BTS not only sends the FCCH but also the +Synchronization CHannel (SCH). The Synchronization channel indicates the +current GSM time / frame number (skipping the 3 least significant bits). +By using this received GSM time and incrementing it every time the GSM bit-clock +timer wraps at the beginning of a new TDMA frame, the GSM time is synchronized. + +Understanding the multiple layers of time multiplex such as the 26/51 +multiframe, superframe and hyperframe, the L1 can multiplex and demultiplex all +the logical channels of GSM. + +\section{Miscellaneous Topics} +\subsection{GPRS} + +GPRS was the first packet switched extension to GSM. In fact, it is much more +its entirely own mobile network, independent of GSM. The only parts shared are +the GSM modulation scheme (GMSK) and time multiplex, in order to ensure peaceful +coexistence between them. + +The L1 and L2 protocols are very different (and much more complex) than GSM. + +So while the phone baseband hardware did not need any modifications for a basic +GPRS enabled phone, the software needed to be extended quite a lot. + +\subsection{EDGE} + +EDGE is a very small incremental step to GPRS. It reuses all of the time +multiplex and protocol stack, but introduces a new modulation: Offset +8-PSK instead of GMSK to increase the bandwidth that can be transmitted. +Offset 8-PSK is used (as opposed to simple 8-PSK) to avoid +zero-crossings in the modulator output. + +So while the software modifications from GPRS to EDGE are minimal, the 8PSK +modulation scheme has a significant impact on the DSP, ABB and even RF +PA design. + +\subsection{UMTS} + +UMTS (sometimes called WCDMA) is an entirely separate cellular network +technology. Its physical layer, modulation schemes, encoding, frequency +bands, channel spacing are entirely different, as is the Layer1. + +UMTS Layer2 has some resemblance to the GPRS Layer2. + +UMTS Layer3 for Mobility Management and Call Control are very similar to GSM. + +Given the vast physical layer and L1 differences, a UMTS phone hardware design +significantly differs from what has been described in this document. + +Notwithstanding, all known commercial UMTS phone chipsets as of today still +include a full GSM modem in hardware and software to remain +backwards-compatible. + +\subsection{Dual-SIM and Triple-SIM phones} + +In recent years, a large number of so-called {\em Dual-SIM} or even {\em +Triple-SIM} phones have entered the market, particularly in China and other +parts of East Asia. + +Those phones come in various flavours. Some of them simply have a multiplexer +that allows electrical switching between multiple SIM card slots. This is +similar to replacing the SIM card in a phone, just without the manual process +of mechanically removing/inserting the card. As a result, you can only use one +of the two SIMs at any time. + +The more sophisticated Dual-SIM phones have two complete phones in one case. Yes, +that's right! They contain two full GSM phone chipsets, i.e. 2 antennas, 2 rf +frontends, 2 analog basebands, 2 digital basebands, ... + +However, they use the same trick as smartphones: One of the two basebands does +not have keypad or display and is simply a GSM modem connected via serial line +to the other baseband processor. + +So if a smartphone (as defined in this document) is a GSM modem connected to a +PDA in one case, a Dual-SIM phone is a GSM modem connected to a feature phone +in one case. + +Triple-SIM phones often combine the two approaches, i.e. they contain two +complete GSM baseband chips, but three SIM slots that can be switched among +the base bands. Only two SIMs can be active at the same time. + +\subsection{Powerful feature phones} + +Feature phones are becoming more and more powerful. However, their +comparatively lower market price cannot afford a full-blown smartphone design +with its two independent processors and the associated design complexity. + +Thus, more and more hardware peripherals are added to the only processor left +in the phone: The baseband processor. Such peripherals include sophisticated +camera interfaces, high-resolution color display controllers, TV output, +touchscreen controllers, audio and video codecs and even interfaces for mobile +TV reception. + +However, all of those features are still implemented on a fairly weak ARM7 or +ARM9 CPU core (compared to ARM11 and Cortex-A8 in the smartphone market). They +also lack a real operating system and still run on top of a real-time +microkernel intended for much less complex systems. They almost always lack +any form of memory protection or multiple address spaces. This makes them +more prone to security issues as there is no privilege separation between +the GSM protocol stack and the applications, or between the applications +themselves. + +\section{Personal rant on the closedness of the GSM industry} + +The GSM industry is one of the most closed areas of computing that I've +encountered so far. It is very hard to get any hard technical +information out of them. All they like to spread is high-level +marketing information, but they're very reluctant when it comes down to +hard technical facts on their products. + +If you want to build a phone, you need to buy a GSM chipset for your +product. There are only very few companies that offer such chipsets. +The classic suppliers are Infineon, Texas Instruments, ST/Ericsson, ADI +(now MediaTek) and Freescale. + +The GSM handset products they sell are not generally available and +distributed like other electronic component they manufacture. If you +need a Microcontroller/SoC, a power management IC, a Wifi or Bluetooth +chip, RFID reader ASIC, you simply approach the respective distributors +and order them. You get your samples directly from Digikey. + +This is impossible for GSM (or other cellphone) chipsets. For some +reason those chips are sold only to hand-picked manufacturers. If you +want to qualify, you have to subscribe to at least six-digit annual +purchasing quantities. And in order for them to believe you, you have +to cough up a significant NRE (non-refundable engineering fee). This +has been reported as high as a seven-digit US\$ amount and is to make +sure that even if you end up buying less chips than you indicate, the +chipset maker will still have your upfront NRE money and keep it. + +And if you buy your way into that select club of cellphone makers, what +you get from the chipset maker is typically not all too impressive +either. The documentation you get is incomplete, i.e. it alone would +not enable you as a cellphone maker to make any use of the hardware, +unless you license the software (drivers, GSM protocol stack, ...) from +the chipset maker, too. + +On the software side, most of the technologically interesting bits (like +the protocol stack) are provided as binary-only libraries, you only get +source code to some parts of the systems, i.e. some hardware drivers +that might need modification for your particular phone electrical +design. + +That GSM protocol stack was not written by the chipset maker either. +They simply license a stack from one of the estimated 4 or 5 +organizations who have ever implemented a commercial GSM protocol stack. + +It is not like the GSM protocols were some kind of military secret. +They are a published international standard, freely accessible for +anyone. So why does everybody in that industry think that there is +a need to be so secretive? + +Having spent a significant part of the last 6 years with reverse +engineering of various aspects of mobile phones in order to understand +them better and do write software tools for security analysis, I still +don't understand this secrecy. + +All the various vendors do more or less the same. The fundamental +architecture of a GSM baseband chip is the same, whether you buy it from +TI, Infineon or from MediaTek. {\em They all cook with water}, like we +Germans tend to say. The details like the particular DSP vendor or +whether you use a traditional IF, zero-IF or low-IF analog baseband +differ. But from whom do they want to hide it? If people like myself +with a personal interest in the technical aspects of mobile phones can +figure it out in a relatively short time, then I'm sure the competiton +of those chipset makers can, too. In much less time, if they actually +care. + +This closedness of the cellular industry is one of the reasons why there +has been very little innovation in the baseband firmware throughout the +last decades. Innovation can only happen by very few players. Source +code bugs can only be found and fixed by very few developers at even +fewer large corporations. No chance for a small start-up to innovate, +like they can in the sphere of the internet. + +It is fundamentally also the reason why the traditional phone makers +have been losing market share to newcomers to the mobile sphere like +Apple with its iPhone or Google with its Android platform. + +Those innovations really only happened on the application processor on +high-end smartphones. The closed GSM baseband processor had to be +accompanied by an independent application processor running a real +operating system, with real processes, memory management, shared +libraries, memory protection, virtual memory spaces, user-installable +applications, etc. + +They still don't happen on the baseband processor, which is as closed as +it was 15 years ago. + +\end{document} diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.pdf b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.pdf Binary files differnew file mode 100644 index 0000000..e666c7a --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.pdf diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.tex b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.tex new file mode 100644 index 0000000..fe1e73d --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.3.tex @@ -0,0 +1,770 @@ +\documentclass[a4paper]{article} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{subfigure} +\pagestyle{plain} + +%\usepackage{url} + +\setlength{\oddsidemargin}{0in} +\setlength{\evensidemargin}{0in} +\setlength{\topmargin}{0in} +\setlength{\headheight}{0in} +\setlength{\headsep}{0in} +\setlength{\textwidth}{6.5in} +\setlength{\textheight}{9.5in} +%\setlength{\parindent}{0in} +\setlength{\parskip}{0.05in} + +\begin{document} + +\title{Anatomy of contemporary GSM cellphone hardware} +\author{Harald Welte $<$laforge@gnumonks.org$>$} +\maketitle + +\begin{abstract} +%% add citation for the nubmer of gsm users and phones / carriers. +Billions of cell phones are being used every day by an almost equally large +number of users. The majority of those phones are built according to +the GSM protocol specifications and interoperate with GSM networks of hundreds +of carriers. + +Despite being an openly published international standard, the architecture of +GSM networks and its associated protocols are only known to a relatively +small group of R\&D engineers. + +Even less public information exists about the hardware architecture of the +actual mobile phones themselves, at least as far as it relates to that part +of the phone implementing the GSM protocols and facilitating access to the +public GSM networks. + +This paper is an attempt to serve as an introductory text into the hardware +architecture of contemporary GSM mobile phone hardware anatomy. It is intended +to widen the technical background on mobile phones within the IT community. +\end{abstract} + +%\tableofcontents + +\section{Foreword} + +This document is the result of my personal research on mobile phone +hardware and system-level software throughout the last six years. + +Despite my past work for Openmoko Inc., I have never been professionally +involved in any aspect of the actual GSM related hardware of any phone. +Nevertheless I have the feeling that in the wider information technology +industry, I am part of a very, very small group of people who actually +understand mobile phones down to the lowest layer. + +I hope it is useful for any systems level engineer with an interest in +understanding more about how mobile phone hardware actually works. + +There are no guarantees for accuracy or correctness of any part of the +document. I happily receive your feedback and corrections. + +\section{Is your phone smart or does it have features?} + +Initially, for the first couple of years, GSM cell phones were actual phones +with very little additional functionality. They provided everything that was +required for voice calls, as well as SIM phone book editing features. The only +additional non-features were simple improvements like the ability to use them +as an alarm clock. + +In the mid-1990s, a certain new type of devices became popular: The PDA +(personal digital assistant). They pioneered handheld computing by introducing +touch screen user interfaces and a wide range of application programs, ranging +from calendar/scheduling applications, dictionaries, exchange rate and tip +calculators, scientific calculators, accounting / finance software, etc. + +While in mobile phones the actual cellphone aspect was becoming more and more +commoditized, at some point the PDA features and functionalities were added to +phones, coining the term {\em smartphone}. At that point there was a +need to differentiate from those phones that were not-so-smart. Those +phones were then called {\em feature phones}. + +There has never been an industry-wide accepted definition of those terms, +and especially in the late 2000s, feature phones started to inherit a lot +of the functionality that was formerly only present in smartphones. + +This document will define the terms (only for the purpose of this document) +along a very clear border in hardware architecture, as will be described in the +following sections: + +\subsection{Feature Phone} + +A feature phone is a phone that runs the GSM protocol stack (the software +implementing the GSM protocol) as well as the user interface and all +applications on a single processor. For historic reasons, this +processor is known as the so-called {\em baseband processor} (BP). + +The baseband processor often exposes a serial port (or today USB) over which +the phone can be used as a terminal adapter, similar to old wireline modems. +The industry standard protocol for this interface is an AT command set - +extended and modified from how computers interfaced old wireline modems. +The AT-command interface can be connected to a computer. The computer can then +use the phone to establish data calls, send/receive short messages via SMS, +and generally remote-control the phone. + +\subsection{Smartphone} + +A smartphone is a phone that has a dedicated processor for the GSM protocol +stack, and another (potentially multi-core) general purpose processor for +the user interface and applications. This processor is known as the +{\em application processor} (AP). + +The first hardware generations of smartphones did nothing else but to put the +feature phone and a PDA into one case. The keypad and display of the baseband +processor is removed. What remains of the feature phone is a {\em GSM modem}, +controlled by AT commands sent from the AP. + +Each processor has its own memory (RAM and Flash), peripherals, clocking, etc. +So this setup is not to be confused with the symmetric multi-processor setups +like those seen in the personal computer industry. + +Later generations of smartphones have exchanged the AT command interface by +various proprietary protocols. Also, the serial line was replaced by a +higher-bandwidth hardware connection such as USB, SPI or a shared memory +interface. + +Due to market pressure for ever smaller phones with ever more functions, +the industry has produced highly integrated products, uniting the AP and BP +inside one physical package. Further pressure on reducing cost and PCB +footprint has led to products where there is no need to have independent +RAM and Flash chips for AP and BP. Rather, a single RAM and Flash chip +is divided by assigning portions of the RAM and Flash to each of the two +processors. + +However, the fundamental separation between the AP and BP, each with their own +memory address space and software, remains present in all smartphones until +today. + +\section{GSM modem architecture} + +Every GSM phone, feature phone and smartphone alike, has a GSM modem interfacing +with the GSM network. + +This GSM modem consists of several parts: +\begin{itemize} +\item RF Frontend, responsible for receiving and transmitting on GSM frequencies +\item Analog Baseband, responsible for modulation and demodulation +\item Digital Baseband, responsible for digital signal processing and the GSM protocol stack +\end{itemize} + +\begin{figure}[h] +\centering +\includegraphics[width=160mm]{calypso-block.pdf} +\caption{Block schematics of a TI Calypso/Iota/Rita GSM modem} +\label{reg-form} +\end{figure} + +\subsection{The RF Frontend} + +The RF Frontend is tasked with the physical receive and transmit +interface with the GSM air interface (sometimes called Um interface). + +It minimally consists of an antenna switch, GSM band filters, low-noise +amplifier (LNA) for the receive path, power amplifier for the transmit +path, a local oscillator (LO) and a mixer. + +By mixing the LO frequency with the received RF signal, it generates an +analog baseband signal that is passed to the Analog Baseband (ABB) part +of the modem. By mixing the output of the ABB with the LO frequency, it +generates a RF signal that is to be transmitted in the GSM frequency +band. + +As the receive and transmit framing has an offset of 3 TDMA frames, +there is no need for a frequency duplexer. Instead, an antenna switch +is used. The switch typically is implemented using a MEMS or diode +switch. For a quad-band phone, typically a single-pole 6-throw (SP6T) +switch is used: 4 for the four Rx bands (one for each band), and 2 for +Tx (where 850+900 and 1800+1900 each share one PA output, respectively). + +\subsubsection{RF Frontend receive path} + +The antenna picks up the GSM radio signal as it is sent from a GSM cell tower +(properly called a Base Transceiver Station, or abbreviated as BTS). The +antenna signal first hits the antenna switch, which connects the antenna with +the Rx path for the GSM band of the to-be-received radio frequency. It is then +filtered by a bandpass to block out-of-band signals before entering a low-noise +amplifier for increasing signal amplitude. + +After passing the LNA, the RF signal is mixed with a frequency generated +by the LO. Depending on the LO signal, either an intermediate frequency +(IF) or a direct baseband signal is produced. In modern GSM modems, +zero-IF designs with immediate down-conversion to analog baseband +signals are most common. + +The baseband signal is then filtered to remove unwanted images and sent +as analog I/Q signals (representing amplitude and phase) to the ABB. + +\subsubsection{RF Frontend transmit path} + +The ABB generates analog I/Q signals, which are filtered and passed +into the mixer, where they are mixed with the LO frequency and thus +up-converted to the GSM RF band. From there, they are sent to the +transmit amplifier (RF PA) for amplification. After amplification, they +traverse the antenna switch and are transmitted by the antenna. + +\subsubsection{Local Oscillator} + +The LO of a GSM modem has to be synchronized very closely to that of the +cell (BTS). To achieve the required precision, a Voltage-Controlled, +Temperature-Compensated Crystal Oscillator (VCTCXO) is used. + +Common frequencies for this VCTCXO are 26MHz or 13MHz, as the GSM bit +clock (270,833 Hz) is an integral division (/96 or /48, respectively) of +those frequencies. The tuning range of the VCTCXO is several kHz to +compensate for temperature drift. + +\subsection{The Analog Baseband (ABB)} + +The ABB part of a GSM modem is responsible to interface between the +digital domain and the analog domain of the GSM modem. + +\subsubsection{ABB Receive path} + +The analog baseband I/Q signals are potentially filtered again and +digitized by an Analog-Digital converter (ADC). The sample clocks used +are typically integral multiples of the GSM bit-clock. The sample clock +itself is derived by dividing the VCTCXO of the RF frontend. + +The digital I/Q samples are passed to the Digital Signal Processor +(DSP) in the Digital Baseband (DBB). To reduce the number of traces to +be routed on the PCB, the samples are typically sent over some kind of +synchronous serial link. + +\subsubsection{ABB Transmit path} + +There are multiple architectures found in the ABB transmit path. + +The obvious architecture is to do the inverse of the receive operation: +Transmit digital I/Q samples from the DSP to the ABB and convert +them into an analog signal that is then to be sent to the mixer of the +RF Frontend. + +However, sending a GSM signal with its GMSK modulation is much simpler +than receiving. So in order to reduce computational complexity (and +thus cost as well as power consumption) inside the DSP, the modulation +of the bits is often performed in hardware inside the ABB. + +In this design, the unmodulated GSM burst bits are sent from the DBB to +a burst buffer inside the ABB. From there, based on ROM tables and a +Digital-to-Analog converter (DAC), an analog GMSK modulated signal is +generated. + +\subsection{The Digital Baseband (DBB)} + +The digital baseband implements the actual GSM protocols from Layer1 up +to Layer3 as well as higher layers such as a user interface in the case +of the feature phone. In a smartphone, the DBB only implements a +machine interface to be used by the AP. + +A typical DBB design includes a Digital Signal Processor (DSP) for the +lower half of Layer1, and a general-purpose processor (MCU) for the +upper part of Layer1, as well as anything above. + +\subsubsection{Digital Signal Processor} + +The choice of DSP architecture largely depends on the DBB chipset +vendor. Often they already have a line of DSP cores in-house and will of +course want to reuse that in their DBB chip designs. Every major DSP +architecture can be found (TI, Analog Devices, ...). + +The DSP performs the primary tasks such as Viterbi equalization, +demodulation, decoding, forward error correction, error detection, burst +(de)interleaving. + +Of course, if actual speech data is to be communicated over the GSM +network, the DSP will also have the auxiliary task to perform the +computation of the lossy speech codec used to compress the speech. + +Communication between the DSP and MCU happens most commonly by a shared +memory interface. The shared memory contains both actual data that is +to be processed, as well as control information and parameters +describing what to be done with the respective data. + +For the receive side, the MCU will instruct the DSP to perform decoding +for a particular GSM burst type, after which the DSP will receive I/Q +samples from the ABB, perform detection/demodulation/decoding and +report the result of the operation (including any decoded data) back to +the MCU. + +For the transmit path, the MCU will present the to-be-transmitted data +and auxiliary information to the DSP, which then takes care of encoding +and sends the corresponding burst bits to the ABB (remember, most ABB +devices take care of the modulation to reduce DSP load). + +The detailed programming information (API) of the DSP shared memory +interface is a closely-guarded secret of the baseband chip maker and is +not commonly disclosed even to their customers (the actual phone making +companies). + +In doing so, the baseband chip makers create a close dependency between +the GSM Layer1 software (running on the MCU) driving/implementing this +API and the actual baseband chip. Whoever buys their chip will also +have to license their GSM protocol stack software. + +It is thus almost impossible for an independent software vendor to get +access to the DSP API documentation, which the author of this paper +finds extremely anti-competitive. + +\subsubsection{DSP Peripherals} + +The specifications of the GSM proprietary On-air encryption A5/1 and +A5/2 are only made available to GSM baseband chip makers who declare +their confidentiality. Implementing the algorithm in software is +apparently considered as breach of that confidentiality. Thus, the +encryption algorithms are only implemented in hardware - despite them +being reverse-engineered and publicly disclosed by cryptographers as +early as 1996. %% cite + +Thus, the DSP in a DBB commonly has a integrated peripheral implementing the A5 +encryption. + +Further integrated DSP peripherals may include a viterbi hardware accelerator, +a DMA capable serial interface to the ABB and others. + +\subsection{Baseband Processor (MCU)} + +The MCU of almost all modern GSM DBBs is a System-on-a-Chip (SoC) utilizing a +32bit ARM7TDMI core. The only notable exception are low-cost Infineon chips +like PM7870, who still use a version of their 16bit C166 core. + +Baseband chips that support 3G cellular networks often use a more powerful +ARM926 or ARM975 core as MCU. + +\subsection{MCU peripherals} + +The MCU cores have the typical set of peripherals of any ARM7 based +microcontroller, such as RTC, UARTs for RS232 and IRDA, SPI, I2C, SD/MMC card +controller, keypad scan controller, USB device, ... + +However, there are some additional peripherals that are very GSM specific: +\begin{itemize} +\item A GPRS crypto unit for the proprietary GEA family of ciphers +\item Extended power management facilities, including a timer that can calibrate the RTC clock based on the synchronized VCTCXO in order to wake-up the MCU ahead of pre-programmed events in the GSM time multiplex +\item GSM TDMA timers that can synchronize to the on-air time frames and generate interrupts to MCU and DSP +\item Software-programmable hardware state machines for sequencing GSM burst Rx or Tx in ABB and RF Frontend +\item An ISO7816 compatible smart card reader interface for the SIM card +\item Audio routing, i.e. selecting how audio is routed in the phone, +considering integrated earpiece, ringtone speaker and microphone, as +well as external analog headset, handsfree or even bluetooth-attached +audio devices. +\end{itemize} + +The programming of those peripherals is highly device-specific and there are no +industry standards. Every DBB architecture of every supplier has its own +custom register set and programming interface. + +The register-level documentation for those proprietary peripherals is (like all +documentation on DBB chipsets) closely guarded by NDAs, effectively preventing +the development of Free Software / Open Source drivers for them, unless such +documents are leaked by third parties. + +However, as opposed to the DSP API documentation, the register-level +documentation to the MCU peripherals is normally provided to the cellphone +manufacturers. + +\section{Digital Baseband Software Architecture} + +This section provides an introductory reading in the typical software +architecture as it is found on contemporary GSM digital baseband designs. + +The MCU usually runs a very small realtime operating system (RTOS) such +as Nucleus, VxWorks or the L4 microkernel. In some cases, no operating +system is used at all, in order to save royalties or licensing fees that +would occurr for proprietary RTOS. + +\subsection{GSM Layer 1} + +The Layer1 (L1) software is highly device-specific, as it closely interacts +with the DSP using the shared memory DSP API, as well as the proprietary +integrated peripherals controlling the ABB and RF Frontend. + +However, there are some general observations that can be made about the L1: + +\subsubsection{L1 Synchronous part} + +The synchronous part is executed synchronously to the GSM TDMA frame clock. +Both CPU and DSP are interrupted by some hardware GSM timer every TDMA frame. + +The L1 synchronous part typically runs inside IRQ or FIQ context of the MCU, +taking care of retrieving data from and providing data to the DSP API. + +\subsubsection{L1 Asynchronous part} + +The asynchronous part is scheduled as a normal task, potentially with high +or even real-time priority. It picks up the information provided by the L1 +Sync and schedules its next actions. + +The L1 async typically communicates via a message queue with the Layer2 +above. Common primitives for L1 control are described (as non-normative parts) +of the GSM specifications. + +\subsection{GSM Layer 2} + +As opposed to L1, the GSM Layer 2 (L2) is already fully hardware independent. +It implements the LAPDm protocol as specified in GSM TS 04.06. LAPDm is a +derivative of the ISDN Layer 2 called LAPD, which in turn is a descendent +of the HDLC family of protocols. + +LAPDm takes care of providing communication channels for Layer3. Those +channels are protected from frame loss by the use of sequence numbers and +retransmissions. + +The interface to Layer3 is typically implemented by means of a message queue. + +Primitives (but no detailed protocol) for use of the Layer2 / Layer3 interface +are provided in the GSM specifications. + +\subsection{GSM Layer 3} + +GSM Layer 3 (L3) consist of sublayers for Radio Resource (RR), Mobility +Management (MM) and Call Control (CC). + +There is sufficient treatment of the GSM L3 and its sublayers in +existing texts, so there is no point in making a futile attempt +repeating that here. + +\section{Synchronization and Clocking} + +The author of this paper has been quoted saying {\em GSM is a synchronous +TDMA nightmare}. This is by no means intended as an insult to the +technology itself or to its inventors. It merely serves as evidence how +hard it is to get into the synchronous TDMA mindset, especially for +engineers who have spent most of their career in the world of packet +switched networks. + +GSM is synchronous in multiple ways between cell (BTS) and phone (MS): +\begin{itemize} +\item Synchronization of the carrier clock to tune the receiver and transmitter to the correct frequency +\item Synchronization of the bit clock in order to perform sampling at the most optimal sample intervals +\item Synchronization of the frame clock (and thus timeslots) to know when a TDMA frame and its 8 timeslots start +\item Synchronization of the TDMA multiplex to correctly (de)multiplex the logical channels that are sent over each timeslots +\end{itemize} + +As all those clocks are related to each other, they can (and should) all be +derived from the same master clock: The VCTCXO present in each GSM +phone. + +\subsection{How to synchronize the VCTCXO} + +Every cell sends frequency correction bursts as part of the Frequency +Correction CHannel (FCCH), which is itself part of the BCCH, which in turn is +constantly transmitted by the BTS. + +To acquire initial synchronization to the GSM network, the LO is tuned to the +desired GSM RF channel (ARFCN) frequency. However, at this point, the LO +frequency is a multiple of the VCTCXO frequency which in turn still has an +undetermined error. This initial frequency error is as large as that of a +regular crystal oscillator, potentially already with temperature compensation. + +The resulting baseband signal thus can be shifted by a fairly large amount in +our baseband spectrum. A specific DSP code is now using correlation and other +techniques to identify the frequency correction burst. The DSP can then +further calculate the actual frequency error of the LO by comparing the +received FCCH burst with the FCCH burst as specified. + +This computed frequency error can be fed into a (software) frequency control +loop filter. The loop filter output is applied to an auxiliary DAC, which +generates the control voltage for the VCTCXO. + +After a number of FCCH bursts and corresponding frequency control loop +iterations, the VCTCXO generated clock has only a residual error. Whenever the +phone is receiving, the frequency control loop is continuously exercised in +order to maintain synchronization. + +\subsection{How to synchronize the frame clock} + +When the DSP performs FCCH burst detection as described above, it identifies +the exact position in the incoming sample stream when the FCCH burst was +happening. By knowing from the specification that the FCCH burst is +part of the BCCH, and that the BCCH is sent on timeslot 0, the Layer1 +software can then synchronize the phone to the TDMA frame start. + +Commonly, a hardware timer unit is clocked by a (divided) VCTCXO clock and thus +counts in multiples of the GSM bit clock, wrapping/resetting at the TDMA duration +of 1250 bits. + +By scheduling events synchronously to this GSM bit-clock timer, the L1 can now +trigger events (such as asking the DSP to demodulate incoming data) or +instructing the LO to retune synchronously to every TDMA frame. +From this timer the DBB typically also generates interrupts to the DSP and MCU. + +\subsection{How to synchronize the GSM TDMA multiplex} + +As part of the BCCH, the BTS not only sends the FCCH but also the +Synchronization CHannel (SCH). The Synchronization channel indicates the +current GSM time / frame number (skipping the 3 least significant bits). +By using this received GSM time and incrementing it every time the GSM bit-clock +timer wraps at the beginning of a new TDMA frame, the GSM time is synchronized. + +Understanding the multiple layers of time multiplex such as the 26/51 +multiframe, superframe and hyperframe, the L1 can multiplex and demultiplex all +the logical channels of GSM. +%% this is awkwardly worded + +\section{Miscellaneous Topics} + +\subsection{GPRS} + +GPRS was the first packet switched extension to GSM. In fact, it is much more +its entirely own mobile network, independent of GSM. The only parts shared are +the GSM modulation scheme (GMSK) and time multiplex, in order to ensure peaceful +coexistence between them. + +The L1 and L2 protocols are very different (and much more complex) than GSM. + +So while the phone baseband hardware did not need any modifications for a basic +GPRS enabled phone, the software needed to be extended quite a lot. + +\subsection{EDGE} + +EDGE is a very small incremental set of changes from GPRS. It reuses all of +the time multiplex and protocol stack, but introduces a new modulation: Offset +8-PSK instead of GMSK to increase the bandwidth that can be transmitted. +Offset 8-PSK is used (as opposed to simple 8-PSK) to avoid +zero-crossings in the modulator output. + +So while the software modifications from GPRS to EDGE are minimal, the 8PSK +modulation scheme has a significant impact on the DSP, ABB and even RF +PA design. + +\subsection{UMTS} + +UMTS (sometimes called WCDMA) is an entirely separate cellular network +technology. Its physical layer, modulation schemes, encoding, frequency +bands, channel spacing are entirely different, as is the Layer1. + +UMTS Layer2 has some resemblance to the GPRS Layer2. + +UMTS Layer3 for Mobility Management and Call Control are very similar to GSM. + +Given the vast physical layer and L1 differences, a UMTS phone hardware design +significantly differs from what has been described in this document. + +Notwithstanding, all known commercial UMTS phone chipsets as of today still +include a full GSM modem in hardware and software to remain +backwards-compatible. + +\subsection{Dual-SIM and Triple-SIM phones} + +In recent years, a large number of so-called {\em Dual-SIM} or even {\em +Triple-SIM} phones have entered the market, particularly in China and other +parts of East Asia. + +Those phones come in various flavours. Some of them simply have a multiplexer +that allows electrical switching between multiple SIM card slots. This is +similar to replacing the SIM card in a phone, just without the manual process +of mechanically removing/inserting the card. As a result, you can only use one +of the two SIMs at any time. + +The more sophisticated Dual-SIM phones have two complete phones in one case. Yes, +that's right! They contain two full GSM phone chipsets, i.e. 2 antennas, 2 rf +frontends, 2 analog basebands, 2 digital basebands, ... + +However, they use the same trick as smartphones: One of the two basebands does +not have keypad or display and is simply a GSM modem connected via serial line +to the other baseband processor. + +So if a smartphone (as defined in this document) is a GSM modem connected to a +PDA in one case, a Dual-SIM phone is a GSM modem connected to a feature phone +in one case. + +Triple-SIM phones often combine the two approaches, i.e. they contain two +complete GSM baseband chips, but three SIM slots that can be switched among +the base bands. Only two SIMs can be active at the same time. + +\subsection{Powerful feature phones} + +Feature phones are becoming more and more powerful. However, their +comparatively lower market price cannot afford a full-blown smartphone design +with its two independent processors and the associated design complexity. + +Thus, more and more hardware peripherals are added to the only processor left +in the phone: The baseband processor. Such peripherals include sophisticated +camera interfaces, high-resolution color display controllers, TV output, +touchscreen controllers, audio and video codecs and even interfaces for mobile +TV reception. + +However, all of those features are still implemented on a fairly weak ARM7 or +ARM9 CPU core (compared to ARM11 and Cortex-A8 in the smartphone market). They +also lack a real operating system and still run on top of a real-time +microkernel intended for much less complex systems. They almost always lack +any form of memory protection or multiple address spaces. This makes them +more prone to security issues as there is no privilege separation between +the GSM protocol stack and the applications, or between the applications +themselves. + +\subsection{GSM baseband security features} + +There are several (sometimes conflicting) security requirements that +apply to mobile phones. Interestingly, the security features are +typically used to protect some industry interest against the interest of +the customer. There are very few security features in a phone that are +meant to protect the users or their interests. + +\subsubsection{IMEI - The hardware serial number} + +The International Mobile Equipment Identifier (IMEI) uniquely identifies +a GSM phone. It is a globally unique serial number which is programmed +into the phone non-volatile memory (Flash or EEPROM) during the +production process. There are no particular security features used to +store the IMEI. Once you are able to write to flash and have found it, +it can be changed. + +\subsubsection{The SIM Card} + +The SIM card is a cryptographic smart card that stores the secret key +used for authenticating the user to the GSM network (Ki). The Ki is +never released by the card, and as such copying (cloning) of the SIM +is prevented. Some early implementations of the SIM card had +cryptographic weaknesses that inadvertently permitted cloning until the +late 1990s. + +Furthermore, the SIM stores the International Mobile Subscriber Identity +(IMSI). The IMSI is not encrypted or protected in any way. + +There is no security channel on the connection between the SIM card and +the baseband MCU. Furthermore, there is no way how the MCU can securely +identify/authenticate the SIM itself. Physical access to the SIM card +slot allows sniffing and/or modification of the communications between +the MCU and the SIM. + +\subsubsection{SIM or Operator Locking} + +GSM is an international standard. This ensures interoperability, i.e. +any phone can be used on any network. + +However, in some cases, the vendors of a GSM phone want to restrict this +interoperability and lock a phone to one specific network, or even lock +it to a particular SIM. + +Those locks are implemented by software only, i.e. the MCU software will +instruct the GSM protocol stack not to register with a network unless +its network operator code is a certain factory-programmed network number. + +As such, techniques for circumventing those locks have become +commonplace. It's somewhat of an ongoing race between the phone makers +and the phone-unlockers. The industry invents ever more complex methods +of obfuscating their locks in the software, while the phone-unlockers +reverse engineer those bits for each and every phone model after some +time. + +\subsubsection{DBB firmware signatures} + +In order to protect the operator and phone manufacturers peculiar +business models based on SIM or operator locking, some vendors +extended their baseband software with cryptographic signatures. Only +if the correct signature is present in a software update, the bootloader +program will accept the new software. + +However, there are more or less invasive hardware-related approaches in +circumventing those signature checks, such as hardware debugging +interfaces like JTAG, or replacing the external flash memory components. + +More recently, GSM chipset vendors introduced features such as +hardware-assisted software signature checks. In this case a master key +hash might be present in DBB-internal fuses, together with a +signature-verifying boot loader in DBB-internal mask ROM. As the root +of the chain of trust is moving deeper into the hardware, it becomes +more difficult for anyone to make software modifications to the DBB. + +Especially with tighter integration, where RAM and FLASH are no longer +present as discrete components but part of a multi-chip-package, the +number of options are becoming more limited. + +On the other hand, an ever more complex baseband software stack is +opening up many more options for exploiting software vulnerabilities. +Given the lack of a proper/modern operating system with privilege +separation and virtual memory, such exploits immediately give away +full access to all aspects of the respective DBB. + +\section{Personal rant on the closedness of the GSM industry} + +The GSM industry is one of the most closed areas of computing that I've +encountered so far. It is very hard to get any hard technical +information out of them. All they like to spread is high-level +marketing information, but they're very reluctant when it comes down to +hard technical facts on their products. + +If you want to build a phone, you need to buy a GSM chipset for your +product. There are only very few companies that offer such chipsets. +The classic suppliers are Infineon, Texas Instruments, ST/Ericsson, ADI +(now MediaTek) and Freescale. + +The GSM handset products they sell are not generally available and +distributed like other electronic components they manufacture. If you +need a Microcontroller/SoC, a power management IC, a Wifi or Bluetooth +chip, RFID reader ASIC, you simply approach the respective distributors +and order them. You get your samples directly from Digikey. + +This is impossible for GSM (or other cellphone) chipsets. For some +reason those chips are sold only to hand-picked manufacturers. If you +want to qualify, you have to subscribe to at least six-digit annual +purchasing quantities. And in order for them to believe you, you have +to cough up a significant NRE (non-refundable engineering fee). This +has been reported as high as a seven-digit US\$ amount and is to make +sure that even if you end up buying less chips than you indicate, the +chipset maker will still have your upfront NRE money and keep it. + +And if you buy your way into that select club of cellphone makers, what +you get from the chipset maker is typically not all too impressive +either. The documentation you get is incomplete, i.e. it alone would +not enable you as a cellphone maker to make any use of the hardware, +unless you license the software (drivers, GSM protocol stack, ...) from +the chipset maker, too. + +On the software side, most of the technologically interesting bits (like +the protocol stack) are provided as binary-only libraries, you only get +source code to some parts of the systems, i.e. some hardware drivers +that might need modification for your particular phone electrical +design. + +That GSM protocol stack was not written by the chipset maker either. +They simply license a stack from one of the estimated 4 or 5 +organizations who have ever implemented a commercial GSM protocol stack. + +It is not like the GSM protocols were some kind of military secret. +They are a published international standard, freely accessible for +anyone. So why does everybody in that industry think that there is +a need to be so secretive? + +Having spent a significant part of the last 6 years with reverse +engineering of various aspects of mobile phones in order to understand +them better and to write software tools for security analysis, I still +don't understand this secrecy. + +All the various vendors do more or less the same. The fundamental +architecture of a GSM baseband chip is the same, whether you buy it from +TI, Infineon or from MediaTek. {\em They all cook with water}, like we +Germans tend to say. The details like the particular DSP vendor or +whether you use a traditional IF, zero-IF or low-IF analog baseband +differ. But from whom do they want to hide it? If people like myself +with a personal interest in the technical aspects of mobile phones can +figure it out in a relatively short time, then I'm sure the competition +of those chipset makers can, too. In much less time, if they actually +care. + +This closedness of the cellular industry is one of the reasons why there +has been very little innovation in the baseband firmware throughout the +last decades. Innovation can only happen by very few players. Source +code bugs can only be found and fixed by very few developers at even +fewer large corporations. There is little to no chance for a small start-up to +innovate, like they can in the sphere of the internet. + +It is fundamentally also the reason why the traditional phone makers +have been losing market share to newcomers to the mobile sphere like +Apple with its iPhone or Google with its Android platform. + +Those innovations really only happened on the application processor on +high-end smartphones. The closed GSM baseband processor had to be +accompanied by an independent application processor running a real +operating system, with real processes, memory management, shared +libraries, memory protection, virtual memory spaces, user-installable +applications, etc. + +They still don't happen on the baseband processor, which is as closed as +it was 15 years ago. + +\end{document} diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.pdf b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.pdf Binary files differnew file mode 100644 index 0000000..fe1adbe --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.pdf diff --git a/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.tex b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.tex new file mode 100644 index 0000000..88927b0 --- /dev/null +++ b/2010/gsm_phone-anatomy/gsm_phone-anatomy-v0.4.tex @@ -0,0 +1,984 @@ +\documentclass[a4paper]{article} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{subfigure} +\pagestyle{plain} + +%\usepackage{url} + +\setlength{\oddsidemargin}{0in} +\setlength{\evensidemargin}{0in} +\setlength{\topmargin}{0in} +\setlength{\headheight}{0in} +\setlength{\headsep}{0in} +\setlength{\textwidth}{6.5in} +\setlength{\textheight}{9.5in} +%\setlength{\parindent}{0in} +\setlength{\parskip}{0.05in} + +\begin{document} + +\title{Anatomy of contemporary GSM cellphone hardware} +\author{Harald Welte $<$laforge@gnumonks.org$>$} +\maketitle + +\begin{abstract} +%% add citation for the nubmer of gsm users and phones / carriers. +Billions of cell phones are being used every day by an almost equally large +number of users. The majority of those phones are built according to +the GSM protocol specifications and interoperate with GSM networks of hundreds +of carriers. + +Despite being an openly published international standard, the architecture of +GSM networks and its associated protocols are only known to a relatively +small group of R\&D engineers. + +Even less public information exists about the hardware architecture of the +actual mobile phones themselves, at least as far as it relates to that part +of the phone implementing the GSM protocols and facilitating access to the +public GSM networks. + +This paper is an attempt to serve as an introductory text into the hardware +architecture of contemporary GSM mobile phone hardware anatomy. It is intended +to widen the technical background on mobile phones within the IT community. +\end{abstract} + +\tableofcontents + +\section{Foreword} + +This document is the result of my personal research on mobile phone +hardware and system-level software throughout the last six years. + +Despite my past work for Openmoko Inc., I have never been professionally +involved in any aspect of the actual GSM related hardware of any phone. +Nevertheless I have the feeling that in the wider information technology +industry, I am part of a very, very small group of people who actually +understand mobile phones down to the lowest layer. + +I hope it is useful for any systems level engineer with an interest in +understanding more about how mobile phone hardware actually works. + +There are no guarantees for accuracy or correctness of any part of the +document. I happily receive your feedback and corrections. + +\section{Is your phone smart or does it have features?} + +Initially, for the first couple of years, GSM cell phones were actual phones +with very little additional functionality. They provided everything that was +required for voice calls, as well as SIM phone book editing features. The only +additional non-features were simple improvements like the ability to use them +as an alarm clock. + +In the mid-1990s, a certain new type of devices became popular: The PDA +(personal digital assistant). They pioneered handheld computing by introducing +touch screen user interfaces and a wide range of application programs, ranging +from calendar/scheduling applications, dictionaries, exchange rate and tip +calculators, scientific calculators, accounting / finance software, etc. + +While in mobile phones the actual cellphone aspect was becoming more and more +commoditized, at some point the PDA features and functionalities were added to +phones, coining the term {\em smartphone}. At that point there was a +need to differentiate from those phones that were not-so-smart. Those +phones were then called {\em feature phones}. + +There has never been an industry-wide accepted definition of those terms, +and especially in the late 2000s, feature phones started to inherit a lot +of the functionality that was formerly only present in smartphones. + +This document will define the terms (only for the purpose of this document) +along a very clear border in hardware architecture, as will be described in the +following sections: + +\subsection{Feature Phone} + +A feature phone is a phone that runs the GSM protocol stack (the software +implementing the GSM protocol) as well as the user interface and all +applications on a single processor. For historic reasons, this +processor is known as the so-called {\em baseband processor} (BP). +Some manufacturers also call it Cellular Processor (CP) or CMT. + +The baseband processor often exposes a serial port (or today USB) over which +the phone can be used as a terminal adapter, similar to old wireline modems. +The industry standard protocol for this interface is an AT command set - +extended and modified from how computers interfaced old wireline modems. +The AT-command interface can be connected to a computer. The computer can then +use the phone to establish data calls, send/receive short messages via SMS, +and generally remote-control the phone. + +\subsection{Smartphone} + +There is no clear, industry-wide definition on the term "smartphone". + +Originally, and for the scope of this paper, a smartphone is a phone that has +one dedicated processor for the GSM protocol stack, and another (potentially +multi-core) general purpose processor for the user interface and applications. +This processor is known as the {\em application processor} (AP). + +The baseband processor (BP) part in a smartphone is typically the same as +in a feature phone. But instead of connecting it to a personal computer, +a small PDA (personal digital assistant) is built into the same case. + +We will later discuss smartphone hardware architecture in more detail, but +let's first look at the GSM modem side of things. + +\section{GSM modem architecture} + +Every GSM phone, feature phone and smartphone alike, has a GSM modem interfacing +with the GSM network. + +This GSM modem consists of several parts: +\begin{itemize} +\item RF Frontend, responsible for receiving and transmitting on GSM frequencies +\item Analog Baseband, responsible for modulation and demodulation +\item Digital Baseband, responsible for digital signal processing and the GSM protocol stack +\end{itemize} + +\begin{figure}[h] +\centering +\includegraphics[width=160mm]{calypso-block.pdf} +\caption{Block schematics of a TI Calypso/Iota/Rita GSM modem} +\label{reg-form} +\end{figure} + +\subsection{The RF Frontend} + +The RF Frontend is tasked with the physical receive and transmit +interface with the GSM air interface (sometimes called Um interface). + +It minimally consists of an antenna switch, GSM band filters, low-noise +amplifier (LNA) for the receive path, power amplifier for the transmit +path, a local oscillator (LO) and a mixer. + +By mixing the LO frequency with the received RF signal, it generates an +analog baseband signal that is passed to the Analog Baseband (ABB) part +of the modem. By mixing the output of the ABB with the LO frequency, it +generates a RF signal that is to be transmitted in the GSM frequency +band. + +As the receive and transmit framing has an offset of 3 TDMA frames, +there is no need for a frequency duplexer. Instead, an antenna switch +is used. The switch typically is implemented using a MEMS or diode +switch. For a quad-band phone, typically a single-pole 6-throw (SP6T) +switch is used: 4 for the four Rx bands (one for each band), and 2 for +Tx (where 850+900 and 1800+1900 each share one PA output, respectively). + +\subsubsection{RF Frontend receive path} + +The antenna picks up the GSM radio signal as it is sent from a GSM cell tower +(properly called a Base Transceiver Station, or abbreviated as BTS). The +antenna signal first hits the antenna switch, which connects the antenna with +the Rx path for the GSM band of the to-be-received radio frequency. It is then +filtered by a bandpass to block out-of-band signals before entering a low-noise +amplifier for increasing signal amplitude. + +After passing the LNA, the RF signal is mixed with a frequency generated +by the LO. Depending on the LO signal, either an intermediate frequency +(IF) or a direct baseband signal is produced. In modern GSM modems, +zero-IF designs with immediate down-conversion to analog baseband +signals are most common. + +The baseband signal is then filtered to remove unwanted images and sent +as analog I/Q signals (representing amplitude and phase) to the ABB. + +\subsubsection{RF Frontend transmit path} + +The ABB generates analog I/Q signals, which are filtered and passed +into the mixer, where they are mixed with the LO frequency and thus +up-converted to the GSM RF band. From there, they are sent to the +transmit amplifier (RF PA) for amplification. After amplification, they +traverse the antenna switch and are transmitted by the antenna. + +\subsubsection{Local Oscillator} + +The LO of a GSM modem has to be synchronized very closely to that of the +cell (BTS). To achieve the required precision, a Voltage-Controlled, +Temperature-Compensated Crystal Oscillator (VCTCXO) is used. + +Common frequencies for this VCTCXO are 26MHz or 13MHz, as the GSM bit +clock (270,833 Hz) is an integral division (/96 or /48, respectively) of +those frequencies. The tuning range of the VCTCXO is several kHz to +compensate for temperature drift. + +\subsection{The Analog Baseband (ABB)} + +The ABB part of a GSM modem is responsible to interface between the +digital domain and the analog domain of the GSM modem. + +\subsubsection{ABB Receive path} + +The analog baseband I/Q signals are potentially filtered again and +digitized by an Analog-Digital converter (ADC). The sample clocks used +are typically integral multiples of the GSM bit-clock. The sample clock +itself is derived by dividing the VCTCXO of the RF frontend. + +The digital I/Q samples are passed to the Digital Signal Processor +(DSP) in the Digital Baseband (DBB). To reduce the number of traces to +be routed on the PCB, the samples are typically sent over some kind of +synchronous serial link. + +\subsubsection{ABB Transmit path} + +There are multiple architectures found in the ABB transmit path. + +The obvious architecture is to do the inverse of the receive operation: +Transmit digital I/Q samples from the DSP to the ABB and convert +them into an analog signal that is then to be sent to the mixer of the +RF Frontend. + +However, sending a GSM signal with its GMSK modulation is much simpler +than receiving. So in order to reduce computational complexity (and +thus cost as well as power consumption) inside the DSP, the modulation +of the bits is often performed in hardware inside the ABB. + +In this design, the unmodulated GSM burst bits are sent from the DBB to +a burst buffer inside the ABB. From there, based on ROM tables and a +Digital-to-Analog converter (DAC), an analog GMSK modulated signal is +generated. + +\subsection{The Digital Baseband (DBB)} + +The digital baseband implements the actual GSM protocols from Layer1 up +to Layer3 as well as higher layers such as a user interface in the case +of the feature phone. In a smartphone, the DBB only implements a +machine interface to be used by the AP. + +A typical DBB design includes a Digital Signal Processor (DSP) for the +lower half of Layer1, and a general-purpose processor (MCU) for the +upper part of Layer1, as well as anything above. + +\subsubsection{Digital Signal Processor} + +The choice of DSP architecture largely depends on the DBB chipset +vendor. Often they already have a line of DSP cores in-house and will of +course want to reuse that in their DBB chip designs. Every major DSP +architecture can be found (TI, Analog Devices, ...). + +The DSP performs the primary tasks such as Viterbi equalization, +demodulation, decoding, forward error correction, error detection, burst +(de)interleaving. + +Of course, if actual speech data is to be communicated over the GSM +network, the DSP will also have the auxiliary task to perform the +computation of the lossy speech codec used to compress the speech. + +Communication between the DSP and MCU happens most commonly by a shared +memory interface. The shared memory contains both actual data that is +to be processed, as well as control information and parameters +describing what to be done with the respective data. + +For the receive side, the MCU will instruct the DSP to perform decoding +for a particular GSM burst type, after which the DSP will receive I/Q +samples from the ABB, perform detection/demodulation/decoding and +report the result of the operation (including any decoded data) back to +the MCU. + +For the transmit path, the MCU will present the to-be-transmitted data +and auxiliary information to the DSP, which then takes care of encoding +and sends the corresponding burst bits to the ABB (remember, most ABB +devices take care of the modulation to reduce DSP load). + +The detailed programming information (API) of the DSP shared memory +interface is a closely-guarded secret of the baseband chip maker and is +not commonly disclosed even to their customers (the actual phone making +companies). + +In doing so, the baseband chip makers create a close dependency between +the GSM Layer1 software (running on the MCU) driving/implementing this +API and the actual baseband chip. Whoever buys their chip will also +have to license their GSM protocol stack software. + +It is thus almost impossible for an independent software vendor to get +access to the DSP API documentation, which the author of this paper +finds extremely anti-competitive. + +\subsubsection{DSP Peripherals} + +The specifications of the GSM proprietary On-air encryption A5/1 and +A5/2 are only made available to GSM baseband chip makers who declare +their confidentiality. Implementing the algorithm in software is +apparently considered as breach of that confidentiality. Thus, the +encryption algorithms are only implemented in hardware - despite them +being reverse-engineered and publicly disclosed by cryptographers as +early as 1996. %% cite + +Thus, the DSP in a DBB commonly has a integrated peripheral implementing the A5 +encryption. + +Further integrated DSP peripherals may include a viterbi hardware accelerator, +a DMA capable serial interface to the ABB and others. + +\subsection{Baseband Processor (MCU)} + +The MCU of almost all modern GSM DBBs is a System-on-a-Chip (SoC) utilizing a +32bit ARM7TDMI core. The only notable exception are low-cost Infineon chips +like PM7870, who still use a version of their 16bit C166 core. + +Baseband chips that support 3G cellular networks often use a more powerful +ARM926 or ARM975 core as MCU. + +\subsection{MCU peripherals} + +The MCU cores have the typical set of peripherals of any ARM7 based +microcontroller, such as RTC, UARTs for RS232 and IRDA, SPI, I2C, SD/MMC card +controller, keypad scan controller, USB device, ... + +However, there are some additional peripherals that are very GSM specific: +\begin{itemize} +\item A GPRS crypto unit for the proprietary GEA family of ciphers +\item Extended power management facilities, including a timer that can calibrate the RTC clock based on the synchronized VCTCXO in order to wake-up the MCU ahead of pre-programmed events in the GSM time multiplex +\item GSM TDMA timers that can synchronize to the on-air time frames and generate interrupts to MCU and DSP +\item Software-programmable hardware state machines for sequencing GSM burst Rx or Tx in ABB and RF Frontend +\item An ISO7816 compatible smart card reader interface for the SIM card +\item Audio routing, i.e. selecting how audio is routed in the phone, +considering integrated earpiece, ringtone speaker and microphone, as +well as external analog headset, handsfree or even bluetooth-attached +audio devices. +\end{itemize} + +The programming of those peripherals is highly device-specific and there are no +industry standards. Every DBB architecture of every supplier has its own +custom register set and programming interface. + +The register-level documentation for those proprietary peripherals is (like all +documentation on DBB chipsets) closely guarded by NDAs, effectively preventing +the development of Free Software / Open Source drivers for them, unless such +documents are leaked by third parties. + +However, as opposed to the DSP API documentation, the register-level +documentation to the MCU peripherals is normally provided to the cellphone +manufacturers. + +\section{Digital Baseband Software Architecture} + +This section provides an introductory reading in the typical software +architecture as it is found on contemporary GSM digital baseband designs. + +The MCU usually runs a very small realtime operating system (RTOS) such +as Nucleus, VxWorks or the L4 microkernel. In some cases, no operating +system is used at all, in order to save royalties or licensing fees that +would occurr for proprietary RTOS. + +\subsection{GSM Layer 1} + +The Layer1 (L1) software is highly device-specific, as it closely interacts +with the DSP using the shared memory DSP API, as well as the proprietary +integrated peripherals controlling the ABB and RF Frontend. + +However, there are some general observations that can be made about the L1: + +\subsubsection{L1 Synchronous part} + +The synchronous part is executed synchronously to the GSM TDMA frame clock. +Both CPU and DSP are interrupted by some hardware GSM timer every TDMA frame. + +The L1 synchronous part typically runs inside IRQ or FIQ context of the MCU, +taking care of retrieving data from and providing data to the DSP API. + +\subsubsection{L1 Asynchronous part} + +The asynchronous part is scheduled as a normal task, potentially with high +or even real-time priority. It picks up the information provided by the L1 +Sync and schedules its next actions. + +The L1 async typically communicates via a message queue with the Layer2 +above. Common primitives for L1 control are described (as non-normative parts) +of the GSM specifications. + +\subsection{GSM Layer 2} + +As opposed to L1, the GSM Layer 2 (L2) is already fully hardware independent. +It implements the LAPDm protocol as specified in GSM TS 04.06. LAPDm is a +derivative of the ISDN Layer 2 called LAPD, which in turn is a descendent +of the HDLC family of protocols. + +LAPDm takes care of providing communication channels for Layer3. Those +channels are protected from frame loss by the use of sequence numbers and +retransmissions. + +The interface to Layer3 is typically implemented by means of a message queue. + +Primitives (but no detailed protocol) for use of the Layer2 / Layer3 interface +are provided in the GSM specifications. + +\subsection{GSM Layer 3} + +GSM Layer 3 (L3) consist of sublayers for Radio Resource (RR), Mobility +Management (MM) and Call Control (CC). + +There is sufficient treatment of the GSM L3 and its sublayers in +existing texts, so there is no point in making a futile attempt +repeating that here. + +\section{Synchronization and Clocking} + +The author of this paper has been quoted saying {\em GSM is a synchronous +TDMA nightmare}. This is by no means intended as an insult to the +technology itself or to its inventors. It merely serves as evidence how +hard it is to get into the synchronous TDMA mindset, especially for +engineers who have spent most of their career in the world of packet +switched networks. + +GSM is synchronous in multiple ways between cell (BTS) and phone (MS): +\begin{itemize} +\item Synchronization of the carrier clock to tune the receiver and transmitter to the correct frequency +\item Synchronization of the bit clock in order to perform sampling at the most optimal sample intervals +\item Synchronization of the frame clock (and thus timeslots) to know when a TDMA frame and its 8 timeslots start +\item Synchronization of the TDMA multiplex to correctly (de)multiplex the logical channels that are sent over each timeslots +\end{itemize} + +As all those clocks are related to each other, they can (and should) all be +derived from the same master clock: The VCTCXO present in each GSM +phone. + +\subsection{How to synchronize the VCTCXO} + +Every cell sends frequency correction bursts as part of the Frequency +Correction CHannel (FCCH), which is itself part of the BCCH, which in turn is +constantly transmitted by the BTS. + +To acquire initial synchronization to the GSM network, the LO is tuned to the +desired GSM RF channel (ARFCN) frequency. However, at this point, the LO +frequency is a multiple of the VCTCXO frequency which in turn still has an +undetermined error. This initial frequency error is as large as that of a +regular crystal oscillator, potentially already with temperature compensation. + +The resulting baseband signal thus can be shifted by a fairly large amount in +our baseband spectrum. A specific DSP code is now using correlation and other +techniques to identify the frequency correction burst. The DSP can then +further calculate the actual frequency error of the LO by comparing the +received FCCH burst with the FCCH burst as specified. + +This computed frequency error can be fed into a (software) frequency control +loop filter. The loop filter output is applied to an auxiliary DAC, which +generates the control voltage for the VCTCXO. + +After a number of FCCH bursts and corresponding frequency control loop +iterations, the VCTCXO generated clock has only a residual error. Whenever the +phone is receiving, the frequency control loop is continuously exercised in +order to maintain synchronization. + +\subsection{How to synchronize the frame clock} + +When the DSP performs FCCH burst detection as described above, it identifies +the exact position in the incoming sample stream when the FCCH burst was +happening. By knowing from the specification that the FCCH burst is +part of the BCCH, and that the BCCH is sent on timeslot 0, the Layer1 +software can then synchronize the phone to the TDMA frame start. + +Commonly, a hardware timer unit is clocked by a (divided) VCTCXO clock and thus +counts in multiples of the GSM bit clock, wrapping/resetting at the TDMA duration +of 1250 bits. + +By scheduling events synchronously to this GSM bit-clock timer, the L1 can now +trigger events (such as asking the DSP to demodulate incoming data) or +instructing the LO to retune synchronously to every TDMA frame. +From this timer the DBB typically also generates interrupts to the DSP and MCU. + +\subsection{How to synchronize the GSM TDMA multiplex} + +As part of the BCCH, the BTS not only sends the FCCH but also the +Synchronization CHannel (SCH). The Synchronization channel indicates the +current GSM time / frame number (skipping the 3 least significant bits). +By using this received GSM time and incrementing it every time the GSM bit-clock +timer wraps at the beginning of a new TDMA frame, the GSM time is synchronized. + +Understanding the multiple layers of time multiplex such as the 26/51 +multiframe, superframe and hyperframe, the L1 can multiplex and demultiplex all +the logical channels of GSM. +%% this is awkwardly worded + +\section{Miscellaneous Topics} + +\subsection{GPRS} + +GPRS was the first packet switched extension to GSM. In fact, it is much more +its entirely own mobile network, independent of GSM. The only parts shared are +the GSM modulation scheme (GMSK) and time multiplex, in order to ensure peaceful +coexistence between them. + +The L1 and L2 protocols are very different (and much more complex) than GSM. + +So while the phone baseband hardware did not need any modifications for a basic +GPRS enabled phone, the software needed to be extended quite a lot. + +\subsection{EDGE} + +EDGE is a very small incremental set of changes from GPRS. It reuses all of +the time multiplex and protocol stack, but introduces a new modulation: Offset +8-PSK instead of GMSK to increase the bandwidth that can be transmitted. +Offset 8-PSK is used (as opposed to simple 8-PSK) to avoid +zero-crossings in the modulator output. + +So while the software modifications from GPRS to EDGE are minimal, the 8PSK +modulation scheme has a significant impact on the DSP, ABB and even RF +PA design. + +\subsection{UMTS} + +UMTS (sometimes called WCDMA) is an entirely separate cellular network +technology. Its physical layer, modulation schemes, encoding, frequency +bands, channel spacing are entirely different, as is the Layer1. + +UMTS Layer2 has some resemblance to the GPRS Layer2. + +UMTS Layer3 for Mobility Management and Call Control are very similar to GSM. + +Given the vast physical layer and L1 differences, a UMTS phone hardware design +significantly differs from what has been described in this document. + +Notwithstanding, all known commercial UMTS phone chipsets as of today still +include a full GSM modem in hardware and software to remain +backwards-compatible. + +\subsection{Dual-SIM and Triple-SIM phones} + +In recent years, a large number of so-called {\em Dual-SIM} or even {\em +Triple-SIM} phones have entered the market, particularly in China and other +parts of East Asia. + +Those phones come in various flavours. Some of them simply have a multiplexer +that allows electrical switching between multiple SIM card slots. This is +similar to replacing the SIM card in a phone, just without the manual process +of mechanically removing/inserting the card. As a result, you can only use one +of the two SIMs at any time. + +The more sophisticated Dual-SIM phones have two complete phones in one case. Yes, +that's right! They contain two full GSM phone chipsets, i.e. 2 antennas, 2 rf +frontends, 2 analog basebands, 2 digital basebands, ... + +However, they use the same trick as smartphones: One of the two basebands does +not have keypad or display and is simply a GSM modem connected via serial line +to the other baseband processor. + +So if a smartphone (as defined in this document) is a GSM modem connected to a +PDA in one case, a Dual-SIM phone is a GSM modem connected to a feature phone +in one case. + +Triple-SIM phones often combine the two approaches, i.e. they contain two +complete GSM baseband chips, but three SIM slots that can be switched among +the base bands. Only two SIMs can be active at the same time. + +\subsection{GSM baseband security features} + +There are several (sometimes conflicting) security requirements that +apply to mobile phones. Interestingly, the security features are +typically used to protect some industry interest against the interest of +the customer. There are very few security features in a phone that are +meant to protect the users or their interests. + +\subsubsection{IMEI - The hardware serial number} + +The International Mobile Equipment Identifier (IMEI) uniquely identifies +a GSM phone. It is a globally unique serial number which is programmed +into the phone non-volatile memory (Flash or EEPROM) during the +production process. There are no particular security features used to +store the IMEI. Once you are able to write to flash and have found it, +it can be changed. + +\subsubsection{The SIM Card} + +The SIM card is a cryptographic smart card that stores the secret key +used for authenticating the user to the GSM network (Ki). The Ki is +never released by the card, and as such copying (cloning) of the SIM +is prevented. Some early implementations of the SIM card had +cryptographic weaknesses that inadvertently permitted cloning until the +late 1990s. + +Furthermore, the SIM stores the International Mobile Subscriber Identity +(IMSI). The IMSI is not encrypted or protected in any way. + +There is no security channel on the connection between the SIM card and +the baseband MCU. Furthermore, there is no way how the MCU can securely +identify/authenticate the SIM itself. Physical access to the SIM card +slot allows sniffing and/or modification of the communications between +the MCU and the SIM. + +\subsubsection{SIM or Operator Locking} + +GSM is an international standard. This ensures interoperability, i.e. +any phone can be used on any network. + +However, in some cases, the vendors of a GSM phone want to restrict this +interoperability and lock a phone to one specific network, or even lock +it to a particular SIM. + +Those locks are implemented by software only, i.e. the MCU software will +instruct the GSM protocol stack not to register with a network unless +its network operator code is a certain factory-programmed network number. + +As such, techniques for circumventing those locks have become +commonplace. It's somewhat of an ongoing race between the phone makers +and the phone-unlockers. The industry invents ever more complex methods +of obfuscating their locks in the software, while the phone-unlockers +reverse engineer those bits for each and every phone model after some +time. + +\subsubsection{DBB firmware signatures} + +In order to protect the operator and phone manufacturers peculiar +business models based on SIM or operator locking, some vendors +extended their baseband software with cryptographic signatures. Only +if the correct signature is present in a software update, the bootloader +program will accept the new software. + +However, there are more or less invasive hardware-related approaches in +circumventing those signature checks, such as hardware debugging +interfaces like JTAG, or replacing the external flash memory components. + +More recently, GSM chipset vendors introduced features such as +hardware-assisted software signature checks. In this case a master key +hash might be present in DBB-internal fuses, together with a +signature-verifying boot loader in DBB-internal mask ROM. As the root +of the chain of trust is moving deeper into the hardware, it becomes +more difficult for anyone to make software modifications to the DBB. + +Especially with tighter integration, where RAM and FLASH are no longer +present as discrete components but part of a multi-chip-package, the +number of options are becoming more limited. + +On the other hand, an ever more complex baseband software stack is +opening up many more options for exploiting software vulnerabilities. +Given the lack of a proper/modern operating system with privilege +separation and virtual memory, such exploits immediately give away +full access to all aspects of the respective DBB. + + +\section{Smartphone hardware archtiecture} + +A smartphone is a phone that has a dedicated processor for the GSM protocol +stack, and another (potentially multi-core) general purpose processor for +the user interface and applications. This processor is known as the +{\em application processor} (AP). + +The purpose of the application processor is to run a general-purpose +operating system (OS) driving a rich user interface (UI) software stack, which +provides a platform for running application programs. Such applications +migh be developed by the original phone vendor or by third parties. + +There is no specific technical reason for splitting the functionality among +two independent processors. It is more likely that business and political +issues played a role in this. The baseband processor vendors are typically +very reluctant to give up any amount of control over "their" processor. They +also don't usually provide sufficient informtaion or a general-purpose enough +operating system on it. + +So the logical choice is to keep the "phone part" (aka GSM modem) just like +it was (and is) in feature phones, but add an entirely separate PDA-like +embedded system with an application processor into the same device. + +It is common to use existing feature phone GSM modem designs in smartphones. +The same BP chipset and peripherals are used. + +\subsection{Fully separate AP and BP} + +The first hardware generations of smartphones did nothing else but to put the +feature phone and a PDA into one case. The keypad and display connection to the +BP is removed. What remains of the feature phone is a {\em GSM modem}, +controlled by AT commands sent from the AP. + +Each processor has its own memory (RAM and Flash), peripherals, clocking, etc. +So this setup is not to be confused with the symmetric multi-processor setups +like those seen in the personal computer industry. + +The interface between AP and BP originally was a simple serial (UART) line, +but ever since there has been a growing variety of electrical-level interfaces. +For more information, see the section below on the Interface between AP and BP + +\subsection{Integrated Smartphone-on-a-chip Solutions} + +Due to market pressure for ever smaller phones with ever more functions, the +industry has produced highly integrated products, uniting the AP and BP inside +one physical package. The first popular example was the Qualcomm MSM7200 +as used in the first generation of Android and many Windows Mobile phones. + +More recently, other manufacturers such as ST-Ericsson (a merger of the +cellular chipset business of NXP, ST Micro and Ericsson Mobile Platforms) +have been shipping similar products. + +Such integrated chips typically combine the +\begin{itemize} +\item Application processor (typically ARM11, Cortex-A8 or A9) +\item AP peripherals such as RAM-controller, display controller, I2C, SPI, SDIO, etc. +\item Digital Baseband (DBB), typically including an ARM9 core and a DSP +\item Integrated peripherals of a the BP, including ADC and DAC +\item A GPU (Graphics Processing Unit) for 3D and/or video codec acceleration +\end{itemize} + +Sometimes, even a second DSP is added for signal processing tasks of the AP side. + +Further pressure on reducing cost and PCB footprint has led to products where +there is no need to have independent RAM and Flash chips for AP and BP. +Rather, a single RAM and Flash chip is divided by assigning portions of the RAM +and Flash to each of the two processors. + +In such systems, some integrated peripheral logic is separating the physical +RAM and flash into portions that are accessible from the AP and portions +accesible from the BP. The division ratio as well as the access levels +might be configurable by software, eFuses or bootstrap pins of the package. + +However, the fundamental separation between the AP and BP, each with their own +memory address space and software, remains present in all smartphones until +today. + +\subsection{Control + Data Interface between AP and BP} + +\subsubsection{Serial Line} + +The interface between AP and BP originally was a simple serial line (UART), +over which AT commands compliant with GSM TS 07.05 / 07.07 are spoken. A +serial line with a standard speed of 115200bps is sufficient for the control of +GSM voice calls, SMS, circuit switched data (CSD), as well as most GPRS data +speeds. However, for concurrent data and voice services, a serial multiplexor +protocol according to GSM TS 07.10 was used. It provides multiple virtual +channels with each their own instance of an AT command parser on the BP. + +As the data speeds of the cellular networks were increased with EDGE (both ECSD +and EGPRS), an asynchronouse serial connection at standard speeds became +to narrow as a communications channel. + +\subsubsection{Universal Serial Bus (USB)} + +The EDGE capable GSM modems that were once again coming from the feature phone +designs typically included a USB device mode controller for attaching those +feature phones to personal computers. + +While many of the USB-device-capable BPs use the standardized CDC-ACM protocol +to emulate one or multiple serial ports over USB, there never was any standard +or even any recommendation in the GSM/3GPP specifications. + +So a number of smartphone designs such as the Motorola EZX platform (A780, +A1200, ROKR E6, etc.) simply used that existing USB device-mode controller and +connected it to a USB host controller inside the AP. However, USB is far from +being a good protocol for this application, mostly due to power management +issues. If the phone is idle, the AP switches in some kind of deep-sleep +state. To do this, it has to disable the USB host controller, whcih in turn +means that the BP has no way how to actually issue a wake-up to the AP in case +of an incoming call. The solution to the problem was connecting some general +purpose output signal of the BP to a wakeup-capable general-purpose input +of the AP. However, this means that the system is no longer fully USB +compatible, and that the BP software has to be specifically modified. + +\subsubsection{Serial Peripheral Interface} + +Some smartphone designs, most notably those of E-TEN corporation (now Acer) +have started to use SPI-class electrical interfaces between the AP and BP. + +However, as SPI normally is a master/slave type of protocol, additional +handshaking was needed to allow the slave to request an outgoing data transfer +from the master. + +Modern application processors support SPI with speeds of up to 25 or sometimes +50 MHz, providing more than sufficient bandwidth for even the fastest available +cellular transfer speeds over the air interface. + +The second-layer protocol on top of this SPI link is vendor-specific and +proprietaty. One of them is known as CAIF by Ericsson Mobile Products (EMP). + +\subsubsection{Shared Memory / Dual Ported RAM} + +Another method for interfacing wth AP with the BP is by using some form +of shared memory. The clear advantage is speed, as access to parallel RAM +is typically several orders of magnitude faster than any serial link. +Furthermore, there is no need for serializer/deserializer, the use of DMA +controllers and the like. The data is available without any copying +(zero-copy). + +Management of shared memory is a complex problem though, and there has +to be some kind of mutual exclusion mechanism to prevent coherency/concurrency +problems like race conditions. + +Depending on the chipset architecture, this is either an actual external +dual-ported RAM (DPRAM) that provides separate address and data busses for AP +and BP. Sometimes that DPRAM is built into the BP - or simulated by the BP +using some internal arbitration logic. + +In the latest Smarphone-on-a-Chip systems, the shared memory is simply one +portion of the phyiscal RAM which is mapped into the address space of both AP +and BP parts - while the remaining RAM is mapped exclusively to either the +AP or the BP. + +\subsection{Audio Interface between AP and BP} + +In feature phones, the audio architecture is quite simple: Microphone and +earpiece speaker are all connected to an audio codec which is co-located with +the analog baseband (ABB) chip. A digital serial audio interface connects this +codec with the DSP inside the BP. As the DSP does both the +demodulation/decoding of the baseband signal as well as the actual voice codec +processing, speech data never needs to leave the DSP. The MCU is purely +handling control, but no voice data. + +With a bluetooth headset things get slightly more complex, but not much. +Bluetooth chipsets for mobile phones have a control interface (typically UART), +as well as a synchronous serial PCM interface. That PCM interface then needs +to be hooked up either to the ABB or the DSP. + +In a smartphone however, things are getting more complicated. The Application +Processor wants to play-back music, both via the ringtone speaker as well as +the headset. Ringtones are no longer played back by the BP, but are typically +mp3 files on the AP. Voice recording / memo features require the microphone +to be routed to the AP. Some advanced phones allow you to record an actual +voice call. While that call is handled by the BP, recording is done by the AP, +which is storing it to mass storage memory such as a (micro)SD card. + +There are different audio architectures on smartphones, all of them are complex. + +\subsubsection{Analog audio interface} + +This is the most "logical" interface, looking at the idea of a smartphone being +a feature phone and a PDA in one box: The AP gets an audio codec chip not +different to what a "sound card" used to be for the PC. + +Using proper analog impedance matching networks, you connect the analogue +output of the ABB to a line input of the codec chip. One of the codec +outputs is connected to the microphone input of the codec chip. + +The actual micrphone is connected to the microphone input of the codec chip, +while the headphone jack and ringtone speakers are connected to corresponding +outputs of the codec. + +The digital (PCM/IIS) interface of the codce is driven by the AP. + +So all connections between ABB and codec are analog, while the AP-codec +connection is digital. + +If you add a bluetooth interface for wireless headsets, the codec chip will +need a second IIS/PCM interface which is then connected to that bluetooth chip. + +Analog audio signals on an otherwise completely digital device can be +cumbersome. They will likely catch noise from power supply or digital signals. + +\subsubsection{Digital audio interface} + +The solution to this problem is to use digital audio interfaces. This will +require some cooperation/integration with either the ABB or the DBB of the +baseband processor and was not possible with re-purposed BP chipsets that +were not built with smartphones in mind. + +One possible architecture is to have an ABB that offers a secondary PCM/IIS +interface for the AP. Another solution is to use the PM/IIS as a multi-master +bus, which is either driven by the AP or the BP, depending on the current +use case. + +The third option is to no longer use any voice band DAC/ADC that might be +present in the ABB and use a codec chip that has at least two (three with +bluetooth) PCM/IIS interfaces, and a DBB that has a compatible digital +PCM interface. + +\section{Powerful feature phones} + +Feature phones are becoming more and more powerful. However, their +comparatively lower market price cannot afford a full-blown smartphone design +with its two independent processors and the associated design complexity. + +Thus, more and more hardware peripherals are added to the only processor left +in the phone: The baseband processor. Such peripherals include sophisticated +camera interfaces, high-resolution color display controllers, TV output, +touchscreen controllers, audio and video codecs and even interfaces for mobile +TV reception. + +However, all of those features are still implemented on a fairly weak ARM7 or +ARM9 CPU core (compared to ARM11 and Cortex-A8 in the smartphone market). They +also lack a real operating system and still run on top of a real-time +microkernel intended for much less complex systems. They almost always lack +any form of memory protection or multiple address spaces. This makes them +more prone to security issues as there is no privilege separation between +the GSM protocol stack and the applications, or between the applications +themselves. + +The chipset vendor most associated with this strategy is Mediatek (MTK) in +Taiwan, who bough the cellular chipset business from Analog Devices (ADI). + +In MTK chipsets , you can find unusual combinations of an ARM7 core with +Jazelle (ARM7EJS), which has H.264 hardware codecs attached to it. Most +of the competition doesn't have Jazelle or advanced video codecs in anything +smaller than an ARM9. + +\section{Personal rant on the closedness of the GSM industry} + +The GSM industry is one of the most closed areas of computing that I've +encountered so far. It is very hard to get any hard technical +information out of them. All they like to spread is high-level +marketing information, but they're very reluctant when it comes down to +hard technical facts on their products. + +If you want to build a phone, you need to buy a GSM chipset for your +product. There are only very few companies that offer such chipsets. +The classic suppliers are Infineon, Texas Instruments, ST/Ericsson, ADI +(now MediaTek) and Freescale. + +The GSM handset products they sell are not generally available and +distributed like other electronic components they manufacture. If you +need a Microcontroller/SoC, a power management IC, a Wifi or Bluetooth +chip, RFID reader ASIC, you simply approach the respective distributors +and order them. You get your samples directly from Digikey. + +This is impossible for GSM (or other cellphone) chipsets. For some +reason those chips are sold only to hand-picked manufacturers. If you +want to qualify, you have to subscribe to at least six-digit annual +purchasing quantities. And in order for them to believe you, you have +to cough up a significant NRE (non-refundable engineering fee). This +has been reported as high as a seven-digit US\$ amount and is to make +sure that even if you end up buying less chips than you indicate, the +chipset maker will still have your upfront NRE money and keep it. + +And if you buy your way into that select club of cellphone makers, what +you get from the chipset maker is typically not all too impressive +either. The documentation you get is incomplete, i.e. it alone would +not enable you as a cellphone maker to make any use of the hardware, +unless you license the software (drivers, GSM protocol stack, ...) from +the chipset maker, too. + +On the software side, most of the technologically interesting bits (like +the protocol stack) are provided as binary-only libraries, you only get +source code to some parts of the systems, i.e. some hardware drivers +that might need modification for your particular phone electrical +design. + +That GSM protocol stack was not written by the chipset maker either. +They simply license a stack from one of the estimated 4 or 5 +organizations who have ever implemented a commercial GSM protocol stack. + +It is not like the GSM protocols were some kind of military secret. +They are a published international standard, freely accessible for +anyone. So why does everybody in that industry think that there is +a need to be so secretive? + +Having spent a significant part of the last 6 years with reverse +engineering of various aspects of mobile phones in order to understand +them better and to write software tools for security analysis, I still +don't understand this secrecy. + +All the various vendors do more or less the same. The fundamental +architecture of a GSM baseband chip is the same, whether you buy it from +TI, Infineon or from MediaTek. {\em They all cook with water}, like we +Germans tend to say. The details like the particular DSP vendor or +whether you use a traditional IF, zero-IF or low-IF analog baseband +differ. But from whom do they want to hide it? If people like myself +with a personal interest in the technical aspects of mobile phones can +figure it out in a relatively short time, then I'm sure the competition +of those chipset makers can, too. In much less time, if they actually +care. + +This closedness of the cellular industry is one of the reasons why there +has been very little innovation in the baseband firmware throughout the +last decades. Innovation can only happen by very few players. Source +code bugs can only be found and fixed by very few developers at even +fewer large corporations. There is little to no chance for a small start-up to +innovate, like they can in the sphere of the internet. + +It is fundamentally also the reason why the traditional phone makers +have been losing market share to newcomers to the mobile sphere like +Apple with its iPhone or Google with its Android platform. + +Those innovations really only happened on the application processor on +high-end smartphones. The closed GSM baseband processor had to be +accompanied by an independent application processor running a real +operating system, with real processes, memory management, shared +libraries, memory protection, virtual memory spaces, user-installable +applications, etc. + +They still don't happen on the baseband processor, which is as closed as +it was 15 years ago. + +\end{document} diff --git a/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.css b/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.css new file mode 100644 index 0000000..ee2c1e3 --- /dev/null +++ b/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.css @@ -0,0 +1,120 @@ + +/* start css.sty */ +.cmr-17{font-size:170%;} +.cmr-12{font-size:120%;} +.cmmi-12{font-size:120%;font-style: italic;} +.cmr-9{font-size:90%;} +.cmbx-9{font-size:90%; font-weight: bold;} +.cmti-10{ font-style: italic;} +p.noindent { text-indent: 0em } +td p.noindent { text-indent: 0em; margin-top:0em; } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +li p.indent { text-indent: 0em } +li p:first-child{ margin-top:0em; } +li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.fbox {display:table} +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +.tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.bar-css {text-decoration:overline;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.index-item, .index-subitem, .index-subsubitem {display:block} +div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} +div.caption span.id{font-weight: bold; white-space: nowrap; } +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +div.author{white-space: nowrap;} +.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +.figure img.graphics {margin-left:10%;} +.subfigcaption {margin-top:1em; margin-left:1em; text-align:center;} +div.subfigure {text-align:center;} +/* end css.sty */ + diff --git a/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.html b/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.html new file mode 100644 index 0000000..d688f57 --- /dev/null +++ b/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.2.html @@ -0,0 +1,552 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html > +<head><title>Anatomy of contemporary GSM cellphone hardware</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> +<!-- html --> +<meta name="src" content="gsm_phone-anatomy-v0.2.tex"> +<meta name="date" content="2010-04-14 12:26:00"> +<link rel="stylesheet" type="text/css" href="gsm_phone-anatomy-v0.2.css"> +</head><body +> + <div class="maketitle"> + + + +<h2 class="titleHead">Anatomy of contemporary GSM cellphone hardware</h2> +<div class="author" ><span +class="cmr-12">Harald Welte </span><span +class="cmmi-12"><</span><span +class="cmr-12">laforge@gnumonks.org</span><span +class="cmmi-12">></span></div> +<br /> +<div class="date" ><span +class="cmr-12">April 14, 2010</span></div> + </div> + <div +class="abstract" +> +<div class="center" +> +<!--l. 25--><p class="noindent" > +<!--l. 25--><p class="noindent" ><span +class="cmbx-9">Abstract</span></div> + <!--l. 27--><p class="indent" > <span +class="cmr-9">Billions of cell phones are being used every day by an almost equally large number of users. The</span> + <span +class="cmr-9">majority of those phones are built according to the GSM protocol and interoperate with GSM networks</span> + <span +class="cmr-9">of hundreds of carriers.</span> + <!--l. 32--><p class="indent" > <span +class="cmr-9">Despite being an openly published international standard, the architecture of the GSM network and</span> + <span +class="cmr-9">its associated protocols are only known to a relatively small group of R&D engineers.</span> + <!--l. 36--><p class="indent" > <span +class="cmr-9">Even less public information exists about the hardware architecture of the actual mobile phones</span> + <span +class="cmr-9">themselves, at least as far as it relates to that part of the phone implementing the GSM protocols and</span> + <span +class="cmr-9">facilitating access to the public GSM networks.</span> + <!--l. 41--><p class="indent" > <span +class="cmr-9">This paper is an attempt to serve as an introductory text into the hardware architecture of</span> + <span +class="cmr-9">contemporary GSM mobile phone hardware anatomy. It is intended to widen the technical background</span> + <span +class="cmr-9">on mobile phones within the IT community.</span> +</div> + <h3 class="sectionHead"><span class="titlemark">1 </span> <a + id="x1-10001"></a>Foreword</h3> +<!--l. 50--><p class="noindent" >This document is the result of my personal research on mobile phone hardware and system-level software +throughout the last 6+ years. +<!--l. 53--><p class="indent" > Despite my past work for Openmoko Inc., I have never been professionally involved in any aspect of the actual +GSM related hardware of any phone. Nevertheless I have the feeling that in the wider information technology +industry, I am part of a very, very small group of people who actually understand mobile phones down to the lowest +layer. +<!--l. 59--><p class="indent" > I hope it is useful for any systems level engineer with an interest in understanding more about how mobile phone +hardware actually works. +<!--l. 62--><p class="indent" > There are no guarantees for accuracy or correctness of any part of the document. I happily receive your feedback +and corrections. + +<!--l. 65--><p class="noindent" > + <h3 class="sectionHead"><span class="titlemark">2 </span> <a + id="x1-20002"></a>Is your phone smart or does it have features?</h3> +<!--l. 67--><p class="noindent" >Initially, for the first couple of years, GSM cell phones were actual phones with very little additional functionality. +They provided everything that was required for voice calls, as well as SIM phone book editing features. +The only additional non-features were simple improvements like the ability to use them as an alarm +clock. +<!--l. 73--><p class="indent" > In the mid-1990s, a certain new type of devices became popular: The PDA (personal digital assistant). They +pioneered handheld computing by introducing touch screen user interfaces and a wide range of application +programs, ranging from calendar/scheduling applications, dictionaries, exchange rate and tip calculators, scientific +calculators, accounting / finance software, etc. +<!--l. 79--><p class="indent" > While in mobile phones the actual cellphone aspect was becoming more and more commoditized, at some point +the PDA features and functionalities were added to phones, coining the term <span +class="cmti-10">smartphone</span>. At that point there was a +need to differentiate from those phones that were not-so-smart. Those phones were then called <span +class="cmti-10">feature</span> +<span +class="cmti-10">phones</span>. +<!--l. 85--><p class="indent" > There has never been an industry-wide accepted definition of those terms, and especially in the late +2000s, feature phones started to inherit a lot of the functionality that was formerly only present in +smartphones. +<!--l. 89--><p class="indent" > This document will define the terms (only for the purpose of this document) along a very clear border in +hardware architecture, as will be described in the following sections: +<!--l. 93--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">2.1 </span> <a + id="x1-30002.1"></a>Feature Phone</h4> +<!--l. 95--><p class="noindent" >A feature phone is a phone that runs the GSM protocol stack (the software implementing the GSM protocol) as well +as the user interface and all applications on a single processor. For historic reasons, this processor is known as the +so-called <span +class="cmti-10">baseband processor </span>(BP). +<!--l. 100--><p class="indent" > The baseband processor often exposes a serial port (or today USB) over which the phone can be +used as a terminal adapter, similar to old wireline modems. The industry standard protocol for this +interface is an AT command set - extended and modified from how computers interfaced old wireline +modems. The AT-command interface can be connected to a computer. The computer can then use the +phone to establish data calls, send/receive short messages via SMS, and generally remote-control the +phone. +<!--l. 108--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">2.2 </span> <a + id="x1-40002.2"></a>Smartphone</h4> +<!--l. 110--><p class="noindent" >A smartphone is a phone that has a dedicated processor for the GSM protocol stack, and another (potentially +multi-core) general purpose processor for the user interface and applications. This processor is known as the +<span +class="cmti-10">application processor </span>(AP). +<!--l. 115--><p class="indent" > The first hardware generations of smartphones did nothing else but to put the feature phone and a PDA into one +case. The keypad and display of the baseband processor is removed. What remains of the feature phone is a <span +class="cmti-10">GSM</span> +<span +class="cmti-10">modem</span>, controlled by AT commands sent from the AP. +<!--l. 120--><p class="indent" > Each processor has its own memory (RAM and Flash), peripherals, clocking, etc. So this setup +is not to be confused with the symmetric multi-processor setups like seen in the personal computer +industry. +<!--l. 124--><p class="indent" > Later generations of smartphones have exchanged the AT command interface by various proprietary protocols. +Also, the serial line was replaced by a higher-bandwidth hardware connection such as USB, SPI or a shared memory +interface. +<!--l. 129--><p class="indent" > Due to market pressure for ever smaller phones with ever more functions, the industry has produced highly +integrated products, uniting the AP and BP inside one physical package. Further pressure on reducing cost and +PCB footprint has led to products where there is no need to have independent RAM and Flash chips for AP and + +BP. Rather, a single RAM and Flash chip is divided by assigning portions of the RAM and Flash to each of the two +processors. +<!--l. 137--><p class="indent" > However, the fundamental separation between the AP and BP, each with their own memory address space and +software, remains present in all smartphones until today. +<!--l. 141--><p class="noindent" > + <h3 class="sectionHead"><span class="titlemark">3 </span> <a + id="x1-50003"></a>GSM modem architecture</h3> +<!--l. 143--><p class="noindent" >Every GSM phone, feature phone and smartphone alike, has a GSM modem interfacing with the GSM +network. +<!--l. 146--><p class="indent" > This GSM modem consists of several parts: + <ul class="itemize1"> + <li class="itemize">RF Frontend, responsible for receiving and transmitting at GSM frequency + </li> + <li class="itemize">Analog Baseband, responsible for modulation and demodulation + </li> + <li class="itemize">Digital Baseband, responsible for digital signal processing and the GSM protocol stack</li></ul> +<!--l. 153--><p class="indent" > <hr class="figure"><div class="figure" +> + +<a + id="x1-50011"></a> + +<!--l. 155--><p class="noindent" ><img +src="gsm_phone-anatomy-v0.20x.png" alt="PIC" class="graphics"><!--tex4ht:graphics +name="gsm_phone-anatomy-v0.20x.png" src="calypso-block.pdf" +--> +<br /> <div class="caption" +><span class="id">Figure 1: </span><span +class="content">Block schematics of a TI Calypso/Iota/Rita GSM modem</span></div><!--tex4ht:label?: x1-50011 --> + +<!--l. 158--><p class="indent" > </div><hr class="endfigure"> + <h4 class="subsectionHead"><span class="titlemark">3.1 </span> <a + id="x1-60003.1"></a>The RF Frontend</h4> +<!--l. 162--><p class="noindent" >The RF Frontend is tasked with the physical receive and transmit interface with the GSM air interface (sometimes +called Um interface). +<!--l. 165--><p class="indent" > It minimally consists of an antenna switch, GSM band filters, low-noise amplifier (LNA) for the receive path, +power amplifier for the transmit path, a local oscillator (LO) and a mixer. +<!--l. 169--><p class="indent" > By mixing the LO frequency with the received RF signal, it generates an analog baseband signal that is passed +to the Analog Baseband (ABB) part of the modem. By mixing the output of the ABB with the LO frequency, it +generates a RF signal that is to be transmitted in the GSM frequency band. +<!--l. 175--><p class="indent" > As the receive and transmit framing has an offset of 3 TDMA frames, there is no need for a frequency duplexer. +Instead, an antenna switch is used. The switch typically is implemented using a MEMS or diode switch. For a +quad-band phone, typically a SP +<!--l. 180--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.1.1 </span> <a + id="x1-70003.1.1"></a>RF Frontend receive path</h5> +<!--l. 182--><p class="noindent" >The antenna picks up the GSM radio signal as it is sent from a GSM cell (called Base Transceiver Station, BTS). +The antenna signal first hits the antenna switch, which connects the antenna with the Rx path for the GSM band of +the to-be-received radio frequency. It is then filtered by a bandpass to block out-of-band signals before entering a +low-noise amplifier for increasing signal amplitude. +<!--l. 189--><p class="indent" > After passing the LNA, the RF signal is mixed with a frequency generated by the LO. Depending on the +LO signal, either an intermediate frequency (IF) or a direct baseband signal is produced. In modern +GSM modems, zero-IF designs with immediate down-conversion to analog baseband signals are most +common. +<!--l. 195--><p class="indent" > The baseband signal is then filtered to remove unwanted images and sent as analog I/Q signals (representing +amplitude and phase) to the ABB. +<!--l. 198--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.1.2 </span> <a + id="x1-80003.1.2"></a>RF Frontend transmit path</h5> +<!--l. 200--><p class="noindent" >The ABB generates analog I/Q signals, which are filtered and passed into the mixer, where they are mixed with the +LO frequency and thus up-converted to the GSM RF band. From there, they are sent to the transmit amplifier (RF +PA) for amplification. After amplification, they traverse the antenna switch and are transmitted by the +antenna. +<!--l. 206--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.1.3 </span> <a + id="x1-90003.1.3"></a>Local Oscillator</h5> +<!--l. 208--><p class="noindent" >The LO of a GSM modem has to be synchronized very closely to that of the cell (BTS). To achieve the +required precision, a Voltage-Controlled, Temperature-Compensated Crystal Oscillator (VCTCXO) is +used. +<!--l. 212--><p class="indent" > Common frequencies for this VCTCXO are 26MHz or 13MHz, as the GSM bit clock (270,833 Hz) is an integral +division (/96 or /48, respectively) of those frequencies. The tuning range of the VCTCXO is several kHz to +compensate for temperature drift. +<!--l. 217--><p class="noindent" > + + <h4 class="subsectionHead"><span class="titlemark">3.2 </span> <a + id="x1-100003.2"></a>The Analog Baseband (ABB)</h4> +<!--l. 219--><p class="noindent" >The ABB part of a GSM modem is responsible to interface between the digital domain and the analog domain of +the GSM modem. +<!--l. 222--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.2.1 </span> <a + id="x1-110003.2.1"></a>ABB Receive path</h5> +<!--l. 224--><p class="noindent" >The analog baseband I/Q signals are potentially filtered again and digitized by and Analog-Digital converter +(ADC). The sample clocks used are typically integral multiples of the GSM bit-clock. The sample clock itself is +derived by dividing the VCTCXO of the RF frontend. +<!--l. 229--><p class="indent" > The digital I/Q samples are passed to the Digital Signal Processor (DSP) in the Digital Baseband (DBB). To +reduce the number of traces to be routed on the PCB, the samples are typically sent over some kind of synchronous +serial link. +<!--l. 234--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.2.2 </span> <a + id="x1-120003.2.2"></a>ABB Transmit path</h5> +<!--l. 236--><p class="noindent" >There are multiple architectures found in the ABB transmit path. +<!--l. 238--><p class="indent" > The obvious architecture is to do the inverse of the receive operation: Transmit digital I/Q samples from the +DSP to the ABB and convert them into an analog signal that is then to be sent to the mixer of the RF +Frontend. +<!--l. 243--><p class="indent" > However, sending a GSM signal with its GMSK modulation is much simpler than receiving. So in order to reduce +computational complexity (and thus cost as well as power consumption) inside the DSP, the modulation of the bits +is often performed in hardware inside the ABB. +<!--l. 248--><p class="indent" > In this design, the unmodulated GSM burst bits are sent from the DBB to a burst buffer inside the ABB. From +there, based on ROM tables and a Digital-to-Analog converter (DAC), an analog GMSK modulated signal is +generated. +<!--l. 253--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">3.3 </span> <a + id="x1-130003.3"></a>The Digital Baseband (DBB)</h4> +<!--l. 255--><p class="noindent" >The digital baseband implements the actual GSM protocols from Layer1 up to Layer3 as well as higher layers such +as a user interface in the case of the feature phone. In a smartphone, the DBB only implements a machine interface +to be used by the AP. +<!--l. 260--><p class="indent" > A typical DBB design includes a Digital Signal Processor (DSP) for the lower half of Layer1, and a +general-purpose processor (MCU) for the upper part of Layer1, as well as anything above. +<!--l. 264--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.3.1 </span> <a + id="x1-140003.3.1"></a>Digital Signal Processor</h5> +<!--l. 266--><p class="noindent" >The choice of DSP architecture largely depends on the DBB chipset vendor. Often they already have a line of DSP +cores in-house and will of course want to reuse that in their DBB chip designs. Every major DSP architecture can be +found (TI, Analog Devices, ...). +<!--l. 271--><p class="indent" > The DSP performs the primary tasks such as Viterbi equalization, demodulation, decoding, forward error +correction, error detection, burst (de)interleaving. +<!--l. 275--><p class="indent" > Of course, if actual speech data is to be communicated over the GSM network, the DSP will also +have the auxiliary task to perform the computation of the lossy speech codec used to compress the +speech. +<!--l. 279--><p class="indent" > Communication between the DSP and MCU happens most commonly by a shared memory interface. The shared + +memory contains both actual data that is to be processed, as well as control information and parameters describing +what to be done with the respective data. +<!--l. 284--><p class="indent" > For the receive side, the MCU will instruct the DSP to perform decoding for a particular GSM burst type, after +which the DSP will receive I/Q samples from the ABB, perform detection/demodulation/decoding and report the +result of the operation (including any decoded data) back to the MCU. +<!--l. 290--><p class="indent" > For the transmit path, the MCU will present the to-be-transmitted data and auxiliary information to the DSP, +which then takes care of encoding and sends the corresponding burst bits to the ABB (remember, most ABB take +care of the modulation to reduce DSP load). +<!--l. 295--><p class="indent" > The detailed programming information (API) of the DSP shared memory interface is a closely-guarded secret of +the baseband chip maker and is not commonly disclosed even to their customers (the actual phone making +companies). +<!--l. 300--><p class="indent" > In doing so, the baseband chip makers create a close dependency between the GSM Layer1 software (running on +the MCU) driving/implementing this API and the actual baseband chip. Whoever buys their chip will also have to +license their GSM protocol stack software. +<!--l. 305--><p class="indent" > It is thus almost impossible for an independent software vendor to get access to the DSP API documentation, +which the author of this paper finds extremely anti-competitive. +<!--l. 309--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">3.3.2 </span> <a + id="x1-150003.3.2"></a>DSP Peripherals</h5> +<!--l. 311--><p class="noindent" >The specifications of the GSM proprietary On-air encryption A5/1 and A5/2 are only made available to GSM +baseband chip makers who declare their confidentiality. Implementing the algorithm in software is apparently +considered as breach of that confidentiality. Thus, the encryption algorithms are only implemented in +hardware - despite them being reverse-engineered and publicly disclosed by cryptographers as early as +1996. +<!--l. 319--><p class="indent" > Thus, the DSP in a DBB commonly has a integrated peripheral implementing the A5 encryption. +<!--l. 322--><p class="indent" > Further integrated DSP peripherals may include a viterbi hardware accelerator, a DMA capable serial interface +to the ABB and others. +<!--l. 325--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">3.4 </span> <a + id="x1-160003.4"></a>Baseband Processor (MCU)</h4> +<!--l. 327--><p class="noindent" >The MCU of almost all modern GSM DBBs is a System-on-a-Chip (SoC) utilizing a 32bit ARM7TDMI core. The +only notable exception are low-cost Infineon chips like PM7870, who still use a version of their 16bit C166 +core. +<!--l. 331--><p class="indent" > Baseband chips that support 3G cellular networks often use a more powerful ARM926 or ARM975 core as +MCU. +<!--l. 334--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">3.5 </span> <a + id="x1-170003.5"></a>MCU peripherals</h4> +<!--l. 336--><p class="noindent" >The MCU cores have the typical set of peripherals of any ARM7 based microcontroller, such as RTC, +UARTs for RS232 and IRDA, SPI, I2C, SD/MMC card controller, keypad scan controller, USB device, +... +<!--l. 340--><p class="indent" > However, there are some additional peripherals that are very GSM specific: + <ul class="itemize1"> + <li class="itemize">A GPRS crypto unit for the proprietary GEA family of ciphers + </li> + + <li class="itemize">Extended power management facilities, including a timer that can calibrate the RTC clock based on + the synchronized VCTCXO in order to wake-up the MCU ahead of pre-programmed events in the GSM + time multiplex + </li> + <li class="itemize">GSM TDMA timers that can synchronize to the on-air time frames and generate interrupts to MCU + and DSP + </li> + <li class="itemize">Software-programmable hardware state machines for sequencing GSM burst Rx or Tx in ABB and RF + Frontend + </li> + <li class="itemize">An ISO7816 compatible smart card reader interface for the SIM card</li></ul> +<!--l. 349--><p class="indent" > The programming of those peripherals is highly device-specific and there are no industry standards. Every DBB +architecture of every supplier has its own custom register set and programming interface. +<!--l. 353--><p class="indent" > The register-level documentation for those proprietary peripherals is (like all documentation on DBB chipsets) +closely guarded by NDAs, effectively preventing the development of Free Software / Open Source drivers for them, +unless such documents are leaked by third parties. +<!--l. 358--><p class="indent" > However, as opposed to the DSP API documentation, the register-level documentation to the MCU peripherals +is normally provided to the cellphone manufacturers. +<!--l. 362--><p class="noindent" > + <h3 class="sectionHead"><span class="titlemark">4 </span> <a + id="x1-180004"></a>Digital Baseband Software Architecture</h3> +<!--l. 364--><p class="noindent" >This section provides an introductory reading in the typical software architecture as it is found on contemporary +GSM digital baseband designs. +<!--l. 367--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">4.1 </span> <a + id="x1-190004.1"></a>GSM Layer 1</h4> +<!--l. 369--><p class="noindent" >The Layer1 (L1) software is highly device-specific, as it closely interacts with the DSP using the shared memory +DSP API, as well as the proprietary integrated peripherals controlling the ABB and RF Frontend. +<!--l. 373--><p class="indent" > However, there are some general observations that can be made about the L1: +<!--l. 375--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">4.1.1 </span> <a + id="x1-200004.1.1"></a>L1 Synchronous part</h5> +<!--l. 377--><p class="noindent" >The synchronous part is executed synchronously to the GSM TDMA frame clock. Both CPU and DSP are +interrupted by some hardware GSM timer every TDMA frame. +<!--l. 380--><p class="indent" > The L1 synchronous part typically runs inside IRQ or FIQ context of the MCU, taking care of retrieving data +from and providing data to the DSP API. +<!--l. 383--><p class="noindent" > + <h5 class="subsubsectionHead"><span class="titlemark">4.1.2 </span> <a + id="x1-210004.1.2"></a>L1 Asynchronous part</h5> +<!--l. 385--><p class="noindent" >The asynchronous part is scheduled as a normal task, potentially with high or even real-time priority. It picks up the +information provided by the L1 Sync and schedules its next actions. +<!--l. 389--><p class="indent" > The L1 async typically communicates via a message queue with the Layer2 above. Common primitives for L1 +control are described (as non-normative parts) of the GSM specifications. + +<!--l. 393--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">4.2 </span> <a + id="x1-220004.2"></a>GSM Layer 2</h4> +<!--l. 395--><p class="noindent" >As opposed to L1, the GSM Layer 2 (L2) is already fully hardware independent. It implements the LAPDm protocol +as specified in GSM TS 04.06. LAPDm is a derivative of the ISDN Layer 2 called LAPD, which in turn is a +descendent of the HDLC family of protocols. +<!--l. 400--><p class="indent" > LAPDm takes care of providing communication channels for Layer3. Those channels are protected from frame +loss by the use of sequence numbers and retransmissions. +<!--l. 404--><p class="indent" > The interface to Layer3 is typically implemented by means of a message queue. +<!--l. 406--><p class="indent" > Primitives (but no detailed protocol) for use of the Layer2 / Layer3 interface are provided in the GSM +specifications. +<!--l. 409--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">4.3 </span> <a + id="x1-230004.3"></a>GSM Layer 3</h4> +<!--l. 411--><p class="noindent" >GSM Layer 3 (L3) consist of sublayers for Radio Resource (RR), Mobility Management (MM) and Call Control +(CC). +<!--l. 414--><p class="indent" > There is sufficient treatment of the GSM L3 and its sublayers in existing texts, so there is no point in making a +futile attempt repeating that here. +<!--l. 418--><p class="noindent" > + <h3 class="sectionHead"><span class="titlemark">5 </span> <a + id="x1-240005"></a>Synchronization and Clocking</h3> +<!--l. 420--><p class="noindent" >The author of this paper has been quoted saying <span +class="cmti-10">GSM is a synchronous TDMA nightmare</span>. This is by no means +intended as an insult to the technology itself or to its inventors. It merely serves as evidence how hard it is to get +into the synchronous TDMA mindset, especially for engineers who have spent most of their career in the world of +packet switched networks. +<!--l. 427--><p class="indent" > GSM is synchronous in multiple ways between cell (BTS) and phone (MS): + <ul class="itemize1"> + <li class="itemize">Synchronization of the carrier clock to tune the receiver and transmitter to the correct frequency + </li> + <li class="itemize">Synchronization of the bit clock in order to perform sampling at the most optimal sample intervals + </li> + <li class="itemize">Synchronization of the frame clock (and thus timeslots) to know when a TDMA frame and its 8 + timeslots start + </li> + <li class="itemize">Synchronization of the TDMA multiplex to correctly (de)multiplex the logical channels that are sent + over each timeslots</li></ul> +<!--l. 435--><p class="indent" > As all those clocks are related to each other, they can (and should) all be derived from the same master clock: +The VCTCXO in our phone. +<!--l. 438--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a + id="x1-250005.1"></a>How to synchronize the VCTCXO</h4> + +<!--l. 440--><p class="noindent" >Every cell sends frequency correction bursts as part of the Frequency Correction CHannel (FCCH), which is itself +part of the BCCH, which in turn is constantly transmitted by the BTS. +<!--l. 444--><p class="indent" > To acquire initial synchronization ot the GSM network, the LO is tuned to the desired GSM RF channel +(ARFCN) frequency. However, at this point, the LO frequency is a multiple of the VCTCXO frequency which in +turn still has an undetermined error. This initial frequency error is as large as that of a regular crystal oscillator, +potentially already with temperature compensation. +<!--l. 450--><p class="indent" > The resulting baseband signal thus can be shifted by a fairly large amount in our baseband spectrum. A specific +DSP code is now using correlation and other techniques to identify the frequency correction burst. The DSP can +then further calculate the actual frequency error of the LO by comparing the received FCCH burst with the FCCH +burst as specified. +<!--l. 456--><p class="indent" > This computed frequency error can be fed into a (software) frequency control loop filter. The loop filter output is +applied to an auxiliary DAC, which generates the control voltage for the VCTCXO. +<!--l. 460--><p class="indent" > After a number of FCCH bursts and corresponding frequency control loop iterations, the VCTCXO generated +clock has only a residual error. Whenever the phone is receiving, the frequency control loop is continuously exercised +in order to maintain synchronization. +<!--l. 465--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">5.2 </span> <a + id="x1-260005.2"></a>How to synchronize the frame clock</h4> +<!--l. 467--><p class="noindent" >When the DSP performs FCCH burst detection as described above, it identifies the exact position in the incoming +sample stream when the FCCH burst was happening. By knowing from the specification that the FCCH burst is +part of the BCCH, and that the BCCH is sent on timeslot 0, the Layer1 software can then synchronize the phone to +the TDMA frame start. +<!--l. 473--><p class="indent" > Commonly, a hardware timer unit is clocked by a (divided) VCTCXO clock and thus counts in multiples of the +GSM bit clock, wrapping/resetting at the TDMA duration of 1250 bits. +<!--l. 477--><p class="indent" > By scheduling events synchronously to this GSM bit-clock timer, the L1 can now trigger events (such +as asking the DSP to demodulate incoming data) or instructing the LO to retune synchronously to +every TDMA frame. From this timer the DBB typically also generates interrupts to the DSP and +MCU. +<!--l. 482--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">5.3 </span> <a + id="x1-270005.3"></a>How to synchronize the GSM TDMA multiplex</h4> +<!--l. 484--><p class="noindent" >As part of the BCCH, the BTS not only sends the FCCH but also the Synchronization CHannel (SCH). The +Synchronization channel indicates the current GSM time / frame number (skipping the 3 least significant bits). By +using this received GSM time and incrementing it every time the GSM bit-clock timer wraps at the beginning of a +new TDMA frame, the GSM time is synchronized. +<!--l. 490--><p class="indent" > Understanding the multiple layers of time multiplex such as the 26/51 multiframe, superframe and hyperframe, +the L1 can multiplex and demultiplex all the logical channels of GSM. +<!--l. 494--><p class="noindent" > + <h3 class="sectionHead"><span class="titlemark">6 </span> <a + id="x1-280006"></a>Miscellaneous Topics</h3> +<!--l. 495--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a + id="x1-290006.1"></a>GPRS</h4> +<!--l. 497--><p class="noindent" >GPRS was the first packet switched extension to GSM. In fact, it is much more its entirely own mobile network, +independent of GSM. The only parts shared are the GSM modulation scheme (GMSK) and time multiplex, in order + +to ensure peaceful coexistence between them. +<!--l. 502--><p class="indent" > The L1 and L2 protocols are very different (and much more complex) than GSM. +<!--l. 504--><p class="indent" > So while the phone baseband hardware did not need any modifications for a basic GPRS enabled phone, the +software needed to be extended quite a lot. +<!--l. 507--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a + id="x1-300006.2"></a>EDGE</h4> +<!--l. 509--><p class="noindent" >EDGE is a very small incremental step to GPRS. It reuses all of the time multiplex and protocol stack, but +introduces a new modulation: Offset 8-PSK instead of GMSK to increase the bandwidth that can be +transmitted. Offset 8-PSK is used (as opposed to simple 8-PSK) to avoid zero-crossings in the modulator +output. +<!--l. 515--><p class="indent" > So while the software modifications from GPRS to EDGE are minimal, the 8PSK modulation scheme has a +significant impact on the DSP, ABB and even RF PA design. +<!--l. 519--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a + id="x1-310006.3"></a>UMTS</h4> +<!--l. 521--><p class="noindent" >UMTS (sometimes called WCDMA) is an entirely separate cellular network technology. Its physical +layer, modulation schemes, encoding, frequency bands, channel spacing are entirely different, as is the +Layer1. +<!--l. 525--><p class="indent" > UMTS Layer2 has some resemblance to the GPRS Layer2. +<!--l. 527--><p class="indent" > UMTS Layer3 for Mobility Management and Call Control are very similar to GSM. +<!--l. 529--><p class="indent" > Given the vast physical layer and L1 differences, a UMTS phone hardware design significantly differs from what +has been described in this document. +<!--l. 532--><p class="indent" > Notwithstanding, all known commercial UMTS phone chipsets as of today still include a full GSM modem in +hardware and software to remain backwards-compatible. +<!--l. 536--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a + id="x1-320006.4"></a>Dual-SIM and Triple-SIM phones</h4> +<!--l. 538--><p class="noindent" >In recent years, a large number of so-called <span +class="cmti-10">Dual-SIM </span>or even <span +class="cmti-10">Triple-SIM </span>phones have entered the market, +particularly in China and other parts of East Asia. +<!--l. 542--><p class="indent" > Those phones come in various flavours. Some of them simply have a multiplexer that allows electrical switching +between multiple SIM card slots. This is similar to replacing the SIM card in a phone, just without the manual +process of mechanically removing/inserting the card. As a result, you can only use one of the two SIMs at any +time. +<!--l. 548--><p class="indent" > The more sophisticated Dual-SIM phones have two complete phones in one case. Yes, that’s right! They contain +two full GSM phone chipsets, i.e. 2 antennas, 2 rf frontends, 2 analog basebands, 2 digital basebands, +... +<!--l. 552--><p class="indent" > However, they use the same trick as smartphones: One of the two basebands does not have keypad or display and +is simply a GSM modem connected via serial line to the other baseband processor. +<!--l. 556--><p class="indent" > So if a smartphone (as defined in this document) is a GSM modem connected to a PDA in one case, a Dual-SIM +phone is a GSM modem connected to a feature phone in one case. +<!--l. 560--><p class="indent" > Triple-SIM phones often combine the two approaches, i.e. they contain two complete GSM baseband chips, but +three SIM slots that can be switched among the base bands. Only two SIMs can be active at the same +time. + +<!--l. 564--><p class="noindent" > + <h4 class="subsectionHead"><span class="titlemark">6.5 </span> <a + id="x1-330006.5"></a>Powerful feature phones</h4> +<!--l. 566--><p class="noindent" >Feature phones are becoming more and more powerful. However, their comparatively lower market price cannot +afford a full-blown smartphone design with its two independent processors and the associated design +complexity. +<!--l. 570--><p class="indent" > Thus, more and more hardware peripherals are added to the only processor left in the phone: The +baseband processor. Such peripherals include sophisticated camera interfaces, high-resolution color display +controllers, TV output, touchscreen controllers, audio and video codecs and even interfaces for mobile TV +reception. +<!--l. 576--><p class="indent" > However, all of those features are still implemented on a fairly weak ARM7 or ARM9 CPU core (compared to +ARM11 and Cortex-A8 in the smartphone market). They also lack a real operating system and still run on top of a +real-time microkernel intended for much less complex systems. They almost always lack any form of memory +protection or multiple address spaces. This makes them more prone to security issues as there is no +privilege separation between the GSM protocol stack and the applications, or between the applications +themselves. +<!--l. 585--><p class="noindent" > + <h3 class="sectionHead"><span class="titlemark">7 </span> <a + id="x1-340007"></a>Personal rant on the closedness of the GSM industry</h3> +<!--l. 587--><p class="noindent" >The GSM industry is one of the most closed areas of computing that I’ve encountered so far. It is very hard to get +any hard technical information out of them. All they like to spread is high-level marketing information, but they’re +very reluctant when it comes down to hard technical facts on their products. +<!--l. 593--><p class="indent" > If you want to build a phone, you need to buy a GSM chipset for your product. There are only very few +companies that offer such chipsets. The classic suppliers are Infineon, Texas Instruments, ST/Ericsson, ADI (now +MediaTek) and Freescale. +<!--l. 598--><p class="indent" > The GSM handset products they sell are not generally available and distributed like other electronic component +they manufacture. If you need a Microcontroller/SoC, a power management IC, a Wifi or Bluetooth chip, RFID +reader ASIC, you simply approach the respective distributors and order them. You get your samples directly from +Digikey. +<!--l. 604--><p class="indent" > This is impossible for GSM (or other cellphone) chipsets. For some reason those chips are sold only to +hand-picked manufacturers. If you want to qualify, you have to subscribe to at least six-digit annual purchasing +quantities. And in order for them to believe you, you have to cough up a significant NRE (non-refundable +engineering fee). This has been reported as high as a seven-digit US$ amount and is to make sure that even if you +end up buying less chips than you indicate, the chipset maker will still have your upfront NRE money and keep +it. +<!--l. 613--><p class="indent" > And if you buy your way into that select club of cellphone makers, what you get from the chipset maker is +typically not all too impressive either. The documentation you get is incomplete, i.e. it alone would not enable you +as a cellphone maker to make any use of the hardware, unless you license the software (drivers, GSM protocol stack, +...) from the chipset maker, too. +<!--l. 620--><p class="indent" > On the software side, most of the technologically interesting bits (like the protocol stack) are provided as +binary-only libraries, you only get source code to some parts of the systems, i.e. some hardware drivers that might +need modification for your particular phone electrical design. +<!--l. 626--><p class="indent" > That GSM protocol stack was not written by the chipset maker either. They simply license a stack from +one of the estimated 4 or 5 organizations who have ever implemented a commercial GSM protocol +stack. +<!--l. 630--><p class="indent" > It is not like the GSM protocols were some kind of military secret. They are a published international standard, +freely accessible for anyone. So why does everybody in that industry think that there is a need to be so +secretive? +<!--l. 635--><p class="indent" > Having spent a significant part of the last 6 years with reverse engineering of various aspects of mobile phones in +order to understand them better and do write software tools for security analysis, I still don’t understand this +secrecy. + +<!--l. 640--><p class="indent" > All the various vendors do more or less the same. The fundamental architecture of a GSM baseband chip is the +same, whether you buy it from TI, Infineon or from MediaTek. <span +class="cmti-10">They all cook with water</span>, like we Germans tend +to say. The details like the particular DSP vendor or whether you use a traditional IF, zero-IF or +low-IF analog baseband differ. But from whom do they want to hide it? If people like myself with a +personal interest in the technical aspects of mobile phones can figure it out in a relatively short time, +then I’m sure the competiton of those chipset makers can, too. In much less time, if they actually +care. +<!--l. 651--><p class="indent" > This closedness of the cellular industry is one of the reasons why there has been very little innovation in the +baseband firmware throughout the last decades. Innovation can only happen by very few players. Source code bugs +can only be found and fixed by very few developers at even fewer large corporations. No chance for a small start-up +to innovate, like they can in the sphere of the internet. +<!--l. 658--><p class="indent" > It is fundamentally also the reason why the traditional phone makers have been losing market share to +newcomers to the mobile sphere like Apple with its iPhone or Google with its Android platform. +<!--l. 662--><p class="indent" > Those innovations really only happened on the application processor on high-end smartphones. The closed GSM +baseband processor had to be accompanied by an independent application processor running a real operating +system, with real processes, memory management, shared libraries, memory protection, virtual memory spaces, +user-installable applications, etc. +<!--l. 669--><p class="indent" > They still don’t happen on the baseband processor, which is as closed as it was 15 years ago. + +</body></html> + + + diff --git a/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.20x.png b/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.20x.png Binary files differnew file mode 100644 index 0000000..489c5b4 --- /dev/null +++ b/2010/gsm_phone-anatomy/html/gsm_phone-anatomy-v0.20x.png diff --git a/2010/gsm_phone-anatomy/phones.txt b/2010/gsm_phone-anatomy/phones.txt new file mode 100644 index 0000000..16b8879 --- /dev/null +++ b/2010/gsm_phone-anatomy/phones.txt @@ -0,0 +1,14 @@ + +Phone AP BP Intf Audio + +EZX Marvell PXA270 Freescale Neptune LTE USB+ SSI +MAGX Freescale Freescale Neptune LTE USB+ +iPhone Samsung Infineon ? +Palm Pre TI OMAP3 Qualcomm MSM62xx ? +Galaxy S S5PC1100 Qualcomm +Google G1 Qualcoom Integrated MSM7200 +Nexus One +Freerunner S3C2442 TI Calypso UART analog +glofiish M900 S3C2442 Ericsson EMP SPI +glofiish M900 S3C6410 Ericsson EMP SPI +Nokia N900 OMAP3430 Rapu Yama ? SSI diff --git a/2010/gsm_phone-anatomy/topics b/2010/gsm_phone-anatomy/topics new file mode 100644 index 0000000..9786151 --- /dev/null +++ b/2010/gsm_phone-anatomy/topics @@ -0,0 +1,48 @@ +* gsm protocol intro as far as needed +* distinction smartphone / featurephone + * feature phones + * single processor (BP) for gsm stack + UI + * smartphones + * dual processor (AP / BP) + * baseband processor like in feature phone + * additional application processor for OS/UI + * PDA + phone in a box + * different interconnects + +* closer look at baseband chipset architecture + * DBB (MCU+DSP) + * integrated peripherals + * GSM TDMA timer / interrupt + * A5 ciphering unit + * GEA ciphering unit + * low power timers / RTC crystal calibration for power saving + * synchronous clock architecture + * AFC / VCTCXO + * ABB + * RF Frontend + * VCO + PLL + mixer + * RF PA + * Antenna switch (MEMS or diode) + * integrated frontend modules + +* introduction to GSM software architecture + * layer 1 + * synchronous part + * asynchronous part + * layer 2 + * layer 3 + * telephony API + * actual UI + * AT command parser or related + +* misc + * gprs + * edge + * 3g + * multi-sim + * more powerful feature phones + + +* glossary +* references + |