From fca59bea770346cf1c1f9b0e00cb48a61b44a8f3 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 25 Oct 2015 21:00:20 +0100 Subject: import of old now defunct presentation slides svn repo --- 2008/embedded-openexpo/embedded-openexpo.mgp | 261 +++ .../linux_netfilter_singapore_entertainment.jpg | Bin 0 -> 640673 bytes 2008/embedded_linux-fossin2008/embedded_linux.mgp | 485 +++++ 2008/embedded_linux-fossin2008/embedded_linux.pdf | Bin 0 -> 3115218 bytes 2008/embedded_linux-fossin2008/html/index.html | 42 + 2008/embedded_linux-fossin2008/html/mgp00001.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00001.png | Bin 0 -> 4392 bytes 2008/embedded_linux-fossin2008/html/mgp00001.txt | 14 + 2008/embedded_linux-fossin2008/html/mgp00002.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00002.png | Bin 0 -> 118614 bytes 2008/embedded_linux-fossin2008/html/mgp00002.txt | 13 + 2008/embedded_linux-fossin2008/html/mgp00003.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00003.png | Bin 0 -> 124243 bytes 2008/embedded_linux-fossin2008/html/mgp00003.txt | 17 + 2008/embedded_linux-fossin2008/html/mgp00004.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00004.png | Bin 0 -> 1045474 bytes 2008/embedded_linux-fossin2008/html/mgp00004.txt | 6 + 2008/embedded_linux-fossin2008/html/mgp00005.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00005.png | Bin 0 -> 81184 bytes 2008/embedded_linux-fossin2008/html/mgp00005.txt | 13 + 2008/embedded_linux-fossin2008/html/mgp00006.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00006.png | Bin 0 -> 67569 bytes 2008/embedded_linux-fossin2008/html/mgp00006.txt | 10 + 2008/embedded_linux-fossin2008/html/mgp00007.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00007.png | Bin 0 -> 70051 bytes 2008/embedded_linux-fossin2008/html/mgp00007.txt | 10 + 2008/embedded_linux-fossin2008/html/mgp00008.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00008.png | Bin 0 -> 80499 bytes 2008/embedded_linux-fossin2008/html/mgp00008.txt | 10 + 2008/embedded_linux-fossin2008/html/mgp00009.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00009.png | Bin 0 -> 80659 bytes 2008/embedded_linux-fossin2008/html/mgp00009.txt | 10 + 2008/embedded_linux-fossin2008/html/mgp00010.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00010.png | Bin 0 -> 61685 bytes 2008/embedded_linux-fossin2008/html/mgp00010.txt | 10 + 2008/embedded_linux-fossin2008/html/mgp00011.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00011.png | Bin 0 -> 74869 bytes 2008/embedded_linux-fossin2008/html/mgp00011.txt | 13 + 2008/embedded_linux-fossin2008/html/mgp00012.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00012.png | Bin 0 -> 93443 bytes 2008/embedded_linux-fossin2008/html/mgp00012.txt | 13 + 2008/embedded_linux-fossin2008/html/mgp00013.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00013.png | Bin 0 -> 73616 bytes 2008/embedded_linux-fossin2008/html/mgp00013.txt | 11 + 2008/embedded_linux-fossin2008/html/mgp00014.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00014.png | Bin 0 -> 93812 bytes 2008/embedded_linux-fossin2008/html/mgp00014.txt | 14 + 2008/embedded_linux-fossin2008/html/mgp00015.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00015.png | Bin 0 -> 87532 bytes 2008/embedded_linux-fossin2008/html/mgp00015.txt | 12 + 2008/embedded_linux-fossin2008/html/mgp00016.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00016.png | Bin 0 -> 25601 bytes 2008/embedded_linux-fossin2008/html/mgp00016.txt | 9 + 2008/embedded_linux-fossin2008/html/mgp00017.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00017.png | Bin 0 -> 61723 bytes 2008/embedded_linux-fossin2008/html/mgp00017.txt | 11 + 2008/embedded_linux-fossin2008/html/mgp00018.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00018.png | Bin 0 -> 54254 bytes 2008/embedded_linux-fossin2008/html/mgp00018.txt | 8 + 2008/embedded_linux-fossin2008/html/mgp00019.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00019.png | Bin 0 -> 66295 bytes 2008/embedded_linux-fossin2008/html/mgp00019.txt | 9 + 2008/embedded_linux-fossin2008/html/mgp00020.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00020.png | Bin 0 -> 54658 bytes 2008/embedded_linux-fossin2008/html/mgp00020.txt | 9 + 2008/embedded_linux-fossin2008/html/mgp00021.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00021.png | Bin 0 -> 108918 bytes 2008/embedded_linux-fossin2008/html/mgp00021.txt | 15 + 2008/embedded_linux-fossin2008/html/mgp00022.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00022.png | Bin 0 -> 77363 bytes 2008/embedded_linux-fossin2008/html/mgp00022.txt | 11 + 2008/embedded_linux-fossin2008/html/mgp00023.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00023.png | Bin 0 -> 78104 bytes 2008/embedded_linux-fossin2008/html/mgp00023.txt | 9 + 2008/embedded_linux-fossin2008/html/mgp00024.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00024.png | Bin 0 -> 102438 bytes 2008/embedded_linux-fossin2008/html/mgp00024.txt | 11 + 2008/embedded_linux-fossin2008/html/mgp00025.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00025.png | Bin 0 -> 122475 bytes 2008/embedded_linux-fossin2008/html/mgp00025.txt | 16 + 2008/embedded_linux-fossin2008/html/mgp00026.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00026.png | Bin 0 -> 95974 bytes 2008/embedded_linux-fossin2008/html/mgp00026.txt | 12 + 2008/embedded_linux-fossin2008/html/mgp00027.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00027.png | Bin 0 -> 123203 bytes 2008/embedded_linux-fossin2008/html/mgp00027.txt | 15 + 2008/embedded_linux-fossin2008/html/mgp00028.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00028.png | Bin 0 -> 118138 bytes 2008/embedded_linux-fossin2008/html/mgp00028.txt | 13 + 2008/embedded_linux-fossin2008/html/mgp00029.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00029.png | Bin 0 -> 100447 bytes 2008/embedded_linux-fossin2008/html/mgp00029.txt | 14 + 2008/embedded_linux-fossin2008/html/mgp00030.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00030.png | Bin 0 -> 63652 bytes 2008/embedded_linux-fossin2008/html/mgp00030.txt | 11 + 2008/embedded_linux-fossin2008/html/mgp00031.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00031.png | Bin 0 -> 126323 bytes 2008/embedded_linux-fossin2008/html/mgp00031.txt | 13 + 2008/embedded_linux-fossin2008/html/mgp00032.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00032.png | Bin 0 -> 89107 bytes 2008/embedded_linux-fossin2008/html/mgp00032.txt | 10 + 2008/embedded_linux-fossin2008/html/mgp00033.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00033.png | Bin 0 -> 66938 bytes 2008/embedded_linux-fossin2008/html/mgp00033.txt | 11 + 2008/embedded_linux-fossin2008/html/mgp00034.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00034.png | Bin 0 -> 116656 bytes 2008/embedded_linux-fossin2008/html/mgp00034.txt | 15 + 2008/embedded_linux-fossin2008/html/mgp00035.html | 9 + 2008/embedded_linux-fossin2008/html/mgp00035.png | Bin 0 -> 38511 bytes 2008/embedded_linux-fossin2008/html/mgp00035.txt | 8 + .../linux_netfilter_singapore_entertainment.jpg | Bin 0 -> 640673 bytes .../abstract.txt | 24 + 2008/foss-silicon_manufacturer-elce2008/bio.txt | 25 + .../embedded-openexpo.mgp | 485 +++++ .../linux_netfilter_singapore_entertainment.jpg | Bin 0 -> 640673 bytes .../big/x800_application_processor.jpg | Bin 0 -> 331037 bytes .../big/x800_backside_nobat_nocover.jpg | Bin 0 -> 179390 bytes .../gnufiish-fossin/big/x800_backside_with_lcm.jpg | Bin 0 -> 143348 bytes 2008/gnufiish-fossin/big/x800_hsdpa_modem.jpg | Bin 0 -> 320023 bytes .../big/x800_mainboard_with_shielding.jpg | Bin 0 -> 190378 bytes 2008/gnufiish-fossin/big/x800_opening_the_case.jpg | Bin 0 -> 150805 bytes 2008/gnufiish-fossin/gnufiish-fossin.mgp | 541 +++++ 2008/gnufiish-fossin/gnufiish-fossin.pdf | Bin 0 -> 3579607 bytes .../gnufiish-fossin/x800_application_processor.jpg | Bin 0 -> 133493 bytes .../x800_backside_nobat_nocover.jpg | Bin 0 -> 76428 bytes 2008/gnufiish-fossin/x800_backside_with_lcm.jpg | Bin 0 -> 62712 bytes 2008/gnufiish-fossin/x800_dbgconn_closeup.jpg | Bin 0 -> 91400 bytes 2008/gnufiish-fossin/x800_debcon_pcb.jpg | Bin 0 -> 86510 bytes 2008/gnufiish-fossin/x800_factorytest.jpg | Bin 0 -> 39570 bytes 2008/gnufiish-fossin/x800_hsdpa_modem.jpg | Bin 0 -> 127029 bytes 2008/gnufiish-fossin/x800_jtagfinder.jpg | Bin 0 -> 43885 bytes 2008/gnufiish-fossin/x800_jtagfinder_probes.jpg | Bin 0 -> 63122 bytes .../x800_mainboard_with_shielding.jpg | Bin 0 -> 78293 bytes 2008/gnufiish-fossin/x800_opening_the_case.jpg | Bin 0 -> 67809 bytes 2008/gnufiish-fossin/x800_usbdownload.jpg | Bin 0 -> 33849 bytes 2008/gsm-ccc2008/1.jpg | Bin 0 -> 230909 bytes 2008/gsm-ccc2008/1_small.jpg | Bin 0 -> 63146 bytes 2008/gsm-ccc2008/2.jpg | Bin 0 -> 168737 bytes 2008/gsm-ccc2008/2_small.jpg | Bin 0 -> 49767 bytes 2008/gsm-ccc2008/3.jpg | Bin 0 -> 154870 bytes 2008/gsm-ccc2008/3_small.jpg | Bin 0 -> 47024 bytes 2008/gsm-ccc2008/4_small.jpg | Bin 0 -> 83009 bytes 2008/gsm-ccc2008/BS11_Init.GIF | Bin 0 -> 19560 bytes 2008/gsm-ccc2008/P1010010-a.JPG | Bin 0 -> 314224 bytes 2008/gsm-ccc2008/bs11-presentation.txt | 78 + 2008/gsm-ccc2008/gsm-ccc2008.mgp | 414 ++++ 2008/gsm-ccc2008/gsm-ccc2008.pdf | Bin 0 -> 2520351 bytes 2008/gsm-ccc2008/networks.tab | 2075 ++++++++++++++++++++ 2008/gsm-ccc2008/p1010012.jpg | Bin 0 -> 360212 bytes 2008/gsm-ccc2008/p1010012_small.jpg | Bin 0 -> 78955 bytes 2008/gsm-ccc2008/p1010013.jpg | Bin 0 -> 371084 bytes 2008/gsm-ccc2008/p1010013_small.jpg | Bin 0 -> 81358 bytes 2008/gsm-ccc2008/p1010020.jpg | Bin 0 -> 382058 bytes 2008/gsm-ccc2008/p1010020_small.jpg | Bin 0 -> 115640 bytes 2008/how_and_why_kernel-fht2008/how_and_why.mgp | 555 ++++++ 2008/how_and_why_kernel-fht2008/how_and_why.pdf | Bin 0 -> 3432500 bytes 2008/how_and_why_kernel-fht2008/html/index.html | 45 + 2008/how_and_why_kernel-fht2008/html/mgp00001.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00001.png | Bin 0 -> 3512 bytes 2008/how_and_why_kernel-fht2008/html/mgp00001.txt | 16 + 2008/how_and_why_kernel-fht2008/html/mgp00002.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00002.png | Bin 0 -> 119215 bytes 2008/how_and_why_kernel-fht2008/html/mgp00002.txt | 14 + 2008/how_and_why_kernel-fht2008/html/mgp00003.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00003.png | Bin 0 -> 115376 bytes 2008/how_and_why_kernel-fht2008/html/mgp00003.txt | 17 + 2008/how_and_why_kernel-fht2008/html/mgp00004.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00004.png | Bin 0 -> 100833 bytes 2008/how_and_why_kernel-fht2008/html/mgp00004.txt | 15 + 2008/how_and_why_kernel-fht2008/html/mgp00005.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00005.png | Bin 0 -> 91347 bytes 2008/how_and_why_kernel-fht2008/html/mgp00005.txt | 14 + 2008/how_and_why_kernel-fht2008/html/mgp00006.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00006.png | Bin 0 -> 77306 bytes 2008/how_and_why_kernel-fht2008/html/mgp00006.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00007.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00007.png | Bin 0 -> 58791 bytes 2008/how_and_why_kernel-fht2008/html/mgp00007.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00008.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00008.png | Bin 0 -> 72125 bytes 2008/how_and_why_kernel-fht2008/html/mgp00008.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00009.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00009.png | Bin 0 -> 83254 bytes 2008/how_and_why_kernel-fht2008/html/mgp00009.txt | 14 + 2008/how_and_why_kernel-fht2008/html/mgp00010.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00010.png | Bin 0 -> 62200 bytes 2008/how_and_why_kernel-fht2008/html/mgp00010.txt | 11 + 2008/how_and_why_kernel-fht2008/html/mgp00011.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00011.png | Bin 0 -> 81637 bytes 2008/how_and_why_kernel-fht2008/html/mgp00011.txt | 15 + 2008/how_and_why_kernel-fht2008/html/mgp00012.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00012.png | Bin 0 -> 94964 bytes 2008/how_and_why_kernel-fht2008/html/mgp00012.txt | 15 + 2008/how_and_why_kernel-fht2008/html/mgp00013.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00013.png | Bin 0 -> 63774 bytes 2008/how_and_why_kernel-fht2008/html/mgp00013.txt | 13 + 2008/how_and_why_kernel-fht2008/html/mgp00014.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00014.png | Bin 0 -> 98837 bytes 2008/how_and_why_kernel-fht2008/html/mgp00014.txt | 14 + 2008/how_and_why_kernel-fht2008/html/mgp00015.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00015.png | Bin 0 -> 90485 bytes 2008/how_and_why_kernel-fht2008/html/mgp00015.txt | 13 + 2008/how_and_why_kernel-fht2008/html/mgp00016.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00016.png | Bin 0 -> 84979 bytes 2008/how_and_why_kernel-fht2008/html/mgp00016.txt | 13 + 2008/how_and_why_kernel-fht2008/html/mgp00017.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00017.png | Bin 0 -> 79869 bytes 2008/how_and_why_kernel-fht2008/html/mgp00017.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00018.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00018.png | Bin 0 -> 66453 bytes 2008/how_and_why_kernel-fht2008/html/mgp00018.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00019.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00019.png | Bin 0 -> 85017 bytes 2008/how_and_why_kernel-fht2008/html/mgp00019.txt | 13 + 2008/how_and_why_kernel-fht2008/html/mgp00020.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00020.png | Bin 0 -> 78656 bytes 2008/how_and_why_kernel-fht2008/html/mgp00020.txt | 13 + 2008/how_and_why_kernel-fht2008/html/mgp00021.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00021.png | Bin 0 -> 95943 bytes 2008/how_and_why_kernel-fht2008/html/mgp00021.txt | 11 + 2008/how_and_why_kernel-fht2008/html/mgp00022.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00022.png | Bin 0 -> 113614 bytes 2008/how_and_why_kernel-fht2008/html/mgp00022.txt | 12 + 2008/how_and_why_kernel-fht2008/html/mgp00023.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00023.png | Bin 0 -> 95260 bytes 2008/how_and_why_kernel-fht2008/html/mgp00023.txt | 16 + 2008/how_and_why_kernel-fht2008/html/mgp00024.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00024.png | Bin 0 -> 95233 bytes 2008/how_and_why_kernel-fht2008/html/mgp00024.txt | 11 + 2008/how_and_why_kernel-fht2008/html/mgp00025.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00025.png | Bin 0 -> 105925 bytes 2008/how_and_why_kernel-fht2008/html/mgp00025.txt | 11 + 2008/how_and_why_kernel-fht2008/html/mgp00026.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00026.png | Bin 0 -> 97707 bytes 2008/how_and_why_kernel-fht2008/html/mgp00026.txt | 11 + 2008/how_and_why_kernel-fht2008/html/mgp00027.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00027.png | Bin 0 -> 100169 bytes 2008/how_and_why_kernel-fht2008/html/mgp00027.txt | 12 + 2008/how_and_why_kernel-fht2008/html/mgp00028.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00028.png | Bin 0 -> 113044 bytes 2008/how_and_why_kernel-fht2008/html/mgp00028.txt | 14 + 2008/how_and_why_kernel-fht2008/html/mgp00029.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00029.png | Bin 0 -> 96060 bytes 2008/how_and_why_kernel-fht2008/html/mgp00029.txt | 15 + 2008/how_and_why_kernel-fht2008/html/mgp00030.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00030.png | Bin 0 -> 102839 bytes 2008/how_and_why_kernel-fht2008/html/mgp00030.txt | 17 + 2008/how_and_why_kernel-fht2008/html/mgp00031.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00031.png | Bin 0 -> 65504 bytes 2008/how_and_why_kernel-fht2008/html/mgp00031.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00032.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00032.png | Bin 0 -> 68794 bytes 2008/how_and_why_kernel-fht2008/html/mgp00032.txt | 10 + 2008/how_and_why_kernel-fht2008/html/mgp00033.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00033.png | Bin 0 -> 111621 bytes 2008/how_and_why_kernel-fht2008/html/mgp00033.txt | 13 + 2008/how_and_why_kernel-fht2008/html/mgp00034.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00034.png | Bin 0 -> 49826 bytes 2008/how_and_why_kernel-fht2008/html/mgp00034.txt | 8 + 2008/how_and_why_kernel-fht2008/html/mgp00035.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00035.png | Bin 0 -> 58022 bytes 2008/how_and_why_kernel-fht2008/html/mgp00035.txt | 7 + 2008/how_and_why_kernel-fht2008/html/mgp00036.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00036.png | Bin 0 -> 54660 bytes 2008/how_and_why_kernel-fht2008/html/mgp00036.txt | 6 + 2008/how_and_why_kernel-fht2008/html/mgp00037.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00037.png | Bin 0 -> 68820 bytes 2008/how_and_why_kernel-fht2008/html/mgp00037.txt | 14 + 2008/how_and_why_kernel-fht2008/html/mgp00038.html | 9 + 2008/how_and_why_kernel-fht2008/html/mgp00038.png | Bin 0 -> 82967 bytes 2008/how_and_why_kernel-fht2008/html/mgp00038.txt | 13 + 2008/openmoko-bossa2008/images/Gta02v1_bottom.jpg | Bin 0 -> 1045441 bytes .../images/debugboard_v2_concept.jpg | Bin 0 -> 22065 bytes .../openmoko-bossa2008/images/gta01b_v3_bottom.jpg | Bin 0 -> 849092 bytes 2008/openmoko-bossa2008/images/gta01bv4_bottom.jpg | Bin 0 -> 928930 bytes 2008/openmoko-bossa2008/images/gta01bv4_top.jpg | Bin 0 -> 824865 bytes .../images/neo1973_debugboard_v2_top_annotated.jpg | Bin 0 -> 318075 bytes 2008/openmoko-bossa2008/notes.txt | 57 + 2008/openmoko-bossa2008/openmoko-tech.mgp | 473 +++++ 2008/openmoko-bossa2008/openmoko-tech.pdf | Bin 0 -> 42327 bytes 2008/openmoko-cluc2008/images/Gta02v1_bottom.jpg | Bin 0 -> 1045441 bytes .../images/debugboard_v2_concept.jpg | Bin 0 -> 22065 bytes 2008/openmoko-cluc2008/images/gta01b_v3_bottom.jpg | Bin 0 -> 849092 bytes 2008/openmoko-cluc2008/images/gta01bv4_bottom.jpg | Bin 0 -> 928930 bytes 2008/openmoko-cluc2008/images/gta01bv4_top.jpg | Bin 0 -> 824865 bytes .../images/neo1973_debugboard_v2_top_annotated.jpg | Bin 0 -> 318075 bytes 2008/openmoko-cluc2008/notes.txt | 57 + 2008/openmoko-cluc2008/openmoko-tech.mgp | 473 +++++ 2008/openmoko-cluc2008/openmoko-tech.pdf | Bin 0 -> 42327 bytes .../OpenPICC_Bm117_3_SCH.pdf | Bin 0 -> 485541 bytes 2008/openpcd_openpicc-cluc2008/librfid.tpp | 417 ++++ 2008/openpcd_openpicc-cluc2008/openpcd.jpg | Bin 0 -> 48526 bytes .../openpcd_openpicc-cluc2008/openpcd_openpicc.mgp | 425 ++++ .../openpcd_openpicc-cluc2008/openpcd_openpicc.pdf | Bin 0 -> 39694 bytes 2008/openpcd_openpicc-cluc2008/openpcd_v04-pcb.pdf | Bin 0 -> 595384 bytes 2008/openpcd_openpicc-cluc2008/openpcd_v04-sch.pdf | Bin 0 -> 853114 bytes 2008/openpcd_openpicc-cluc2008/openpicc.jpg | Bin 0 -> 60305 bytes .../security_beyond_internet.mgp | 362 ++++ 2008/smartphone_anatomy-ccc2008/.agenda.txt.swp | Bin 0 -> 12288 bytes .../smartphone_anatomy-ccc2008/Gta02a5_pcba_cs.jpg | Bin 0 -> 366567 bytes 2008/smartphone_anatomy-ccc2008/Gta02v1_bottom.jpg | Bin 0 -> 1045441 bytes 2008/smartphone_anatomy-ccc2008/IMG_8173.JPG | Bin 0 -> 2166345 bytes .../SimpleComponentDiagram.jpg | Bin 0 -> 71308 bytes .../WM8753_ALSA_Mapping.jpg | Bin 0 -> 74511 bytes .../WM8753_ALSA_Mapping.png | Bin 0 -> 173741 bytes 2008/smartphone_anatomy-ccc2008/agenda.txt | 17 + 2008/smartphone_anatomy-ccc2008/e680_jtag.jpg | Bin 0 -> 96700 bytes 2008/smartphone_anatomy-ccc2008/gta02v1_bottom.jpg | Bin 0 -> 151881 bytes .../smartphone-anatomy-INCOMPLETE.mgp | 157 ++ .../smartphone-anatomy.mgp | 634 ++++++ .../smartphone-anatomy.pdf | Bin 0 -> 4312673 bytes .../x800_application_processor.jpg | Bin 0 -> 133493 bytes .../x800_backside_nobat_nocover.jpg | Bin 0 -> 76428 bytes .../x800_backside_with_lcm.jpg | Bin 0 -> 62712 bytes .../x800_dbgconn_closeup.jpg | Bin 0 -> 91400 bytes .../smartphone_anatomy-ccc2008/x800_debcon_pcb.jpg | Bin 0 -> 86510 bytes .../x800_factorytest.jpg | Bin 0 -> 39570 bytes .../x800_hsdpa_modem.jpg | Bin 0 -> 127029 bytes .../smartphone_anatomy-ccc2008/x800_jtagfinder.jpg | Bin 0 -> 43885 bytes .../x800_jtagfinder_probes.jpg | Bin 0 -> 63122 bytes .../x800_mainboard_with_shielding.jpg | Bin 0 -> 78293 bytes .../x800_opening_the_case.jpg | Bin 0 -> 67809 bytes .../x800_usbdownload.jpg | Bin 0 -> 33849 bytes .../foss-silicon_manufacturer-elce2008.pdf | Bin 0 -> 217909 bytes .../foss-silicon_manufacturer-elce2008.tex | 276 +++ 325 files changed, 9912 insertions(+) create mode 100644 2008/embedded-openexpo/embedded-openexpo.mgp create mode 100644 2008/embedded-openexpo/linux_netfilter_singapore_entertainment.jpg create mode 100644 2008/embedded_linux-fossin2008/embedded_linux.mgp create mode 100644 2008/embedded_linux-fossin2008/embedded_linux.pdf create mode 100644 2008/embedded_linux-fossin2008/html/index.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00001.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00001.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00001.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00002.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00002.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00002.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00003.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00003.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00003.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00004.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00004.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00004.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00005.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00005.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00005.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00006.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00006.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00006.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00007.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00007.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00007.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00008.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00008.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00008.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00009.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00009.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00009.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00010.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00010.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00010.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00011.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00011.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00011.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00012.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00012.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00012.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00013.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00013.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00013.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00014.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00014.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00014.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00015.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00015.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00015.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00016.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00016.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00016.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00017.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00017.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00017.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00018.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00018.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00018.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00019.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00019.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00019.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00020.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00020.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00020.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00021.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00021.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00021.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00022.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00022.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00022.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00023.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00023.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00023.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00024.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00024.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00024.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00025.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00025.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00025.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00026.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00026.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00026.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00027.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00027.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00027.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00028.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00028.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00028.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00029.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00029.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00029.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00030.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00030.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00030.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00031.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00031.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00031.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00032.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00032.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00032.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00033.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00033.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00033.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00034.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00034.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00034.txt create mode 100644 2008/embedded_linux-fossin2008/html/mgp00035.html create mode 100644 2008/embedded_linux-fossin2008/html/mgp00035.png create mode 100644 2008/embedded_linux-fossin2008/html/mgp00035.txt create mode 100644 2008/embedded_linux-fossin2008/linux_netfilter_singapore_entertainment.jpg create mode 100644 2008/foss-silicon_manufacturer-elce2008/abstract.txt create mode 100644 2008/foss-silicon_manufacturer-elce2008/bio.txt create mode 100644 2008/foss-silicon_manufacturer-elce2008/embedded-openexpo.mgp create mode 100644 2008/foss-silicon_manufacturer-elce2008/linux_netfilter_singapore_entertainment.jpg create mode 100644 2008/gnufiish-fossin/big/x800_application_processor.jpg create mode 100644 2008/gnufiish-fossin/big/x800_backside_nobat_nocover.jpg create mode 100644 2008/gnufiish-fossin/big/x800_backside_with_lcm.jpg create mode 100644 2008/gnufiish-fossin/big/x800_hsdpa_modem.jpg create mode 100644 2008/gnufiish-fossin/big/x800_mainboard_with_shielding.jpg create mode 100644 2008/gnufiish-fossin/big/x800_opening_the_case.jpg create mode 100644 2008/gnufiish-fossin/gnufiish-fossin.mgp create mode 100644 2008/gnufiish-fossin/gnufiish-fossin.pdf create mode 100644 2008/gnufiish-fossin/x800_application_processor.jpg create mode 100644 2008/gnufiish-fossin/x800_backside_nobat_nocover.jpg create mode 100644 2008/gnufiish-fossin/x800_backside_with_lcm.jpg create mode 100644 2008/gnufiish-fossin/x800_dbgconn_closeup.jpg create mode 100644 2008/gnufiish-fossin/x800_debcon_pcb.jpg create mode 100644 2008/gnufiish-fossin/x800_factorytest.jpg create mode 100644 2008/gnufiish-fossin/x800_hsdpa_modem.jpg create mode 100644 2008/gnufiish-fossin/x800_jtagfinder.jpg create mode 100644 2008/gnufiish-fossin/x800_jtagfinder_probes.jpg create mode 100644 2008/gnufiish-fossin/x800_mainboard_with_shielding.jpg create mode 100644 2008/gnufiish-fossin/x800_opening_the_case.jpg create mode 100644 2008/gnufiish-fossin/x800_usbdownload.jpg create mode 100644 2008/gsm-ccc2008/1.jpg create mode 100644 2008/gsm-ccc2008/1_small.jpg create mode 100644 2008/gsm-ccc2008/2.jpg create mode 100644 2008/gsm-ccc2008/2_small.jpg create mode 100644 2008/gsm-ccc2008/3.jpg create mode 100644 2008/gsm-ccc2008/3_small.jpg create mode 100644 2008/gsm-ccc2008/4_small.jpg create mode 100755 2008/gsm-ccc2008/BS11_Init.GIF create mode 100755 2008/gsm-ccc2008/P1010010-a.JPG create mode 100644 2008/gsm-ccc2008/bs11-presentation.txt create mode 100644 2008/gsm-ccc2008/gsm-ccc2008.mgp create mode 100644 2008/gsm-ccc2008/gsm-ccc2008.pdf create mode 100644 2008/gsm-ccc2008/networks.tab create mode 100755 2008/gsm-ccc2008/p1010012.jpg create mode 100644 2008/gsm-ccc2008/p1010012_small.jpg create mode 100755 2008/gsm-ccc2008/p1010013.jpg create mode 100644 2008/gsm-ccc2008/p1010013_small.jpg create mode 100755 2008/gsm-ccc2008/p1010020.jpg create mode 100644 2008/gsm-ccc2008/p1010020_small.jpg create mode 100644 2008/how_and_why_kernel-fht2008/how_and_why.mgp create mode 100644 2008/how_and_why_kernel-fht2008/how_and_why.pdf create mode 100644 2008/how_and_why_kernel-fht2008/html/index.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00001.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00001.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00001.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00002.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00002.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00002.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00003.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00003.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00003.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00004.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00004.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00004.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00005.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00005.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00005.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00006.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00006.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00006.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00007.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00007.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00007.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00008.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00008.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00008.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00009.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00009.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00009.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00010.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00010.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00010.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00011.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00011.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00011.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00012.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00012.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00012.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00013.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00013.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00013.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00014.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00014.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00014.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00015.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00015.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00015.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00016.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00016.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00016.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00017.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00017.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00017.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00018.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00018.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00018.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00019.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00019.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00019.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00020.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00020.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00020.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00021.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00021.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00021.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00022.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00022.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00022.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00023.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00023.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00023.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00024.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00024.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00024.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00025.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00025.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00025.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00026.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00026.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00026.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00027.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00027.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00027.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00028.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00028.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00028.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00029.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00029.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00029.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00030.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00030.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00030.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00031.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00031.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00031.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00032.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00032.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00032.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00033.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00033.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00033.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00034.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00034.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00034.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00035.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00035.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00035.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00036.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00036.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00036.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00037.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00037.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00037.txt create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00038.html create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00038.png create mode 100644 2008/how_and_why_kernel-fht2008/html/mgp00038.txt create mode 100644 2008/openmoko-bossa2008/images/Gta02v1_bottom.jpg create mode 100644 2008/openmoko-bossa2008/images/debugboard_v2_concept.jpg create mode 100755 2008/openmoko-bossa2008/images/gta01b_v3_bottom.jpg create mode 100644 2008/openmoko-bossa2008/images/gta01bv4_bottom.jpg create mode 100644 2008/openmoko-bossa2008/images/gta01bv4_top.jpg create mode 100644 2008/openmoko-bossa2008/images/neo1973_debugboard_v2_top_annotated.jpg create mode 100644 2008/openmoko-bossa2008/notes.txt create mode 100644 2008/openmoko-bossa2008/openmoko-tech.mgp create mode 100644 2008/openmoko-bossa2008/openmoko-tech.pdf create mode 100644 2008/openmoko-cluc2008/images/Gta02v1_bottom.jpg create mode 100644 2008/openmoko-cluc2008/images/debugboard_v2_concept.jpg create mode 100755 2008/openmoko-cluc2008/images/gta01b_v3_bottom.jpg create mode 100644 2008/openmoko-cluc2008/images/gta01bv4_bottom.jpg create mode 100644 2008/openmoko-cluc2008/images/gta01bv4_top.jpg create mode 100644 2008/openmoko-cluc2008/images/neo1973_debugboard_v2_top_annotated.jpg create mode 100644 2008/openmoko-cluc2008/notes.txt create mode 100644 2008/openmoko-cluc2008/openmoko-tech.mgp create mode 100644 2008/openmoko-cluc2008/openmoko-tech.pdf create mode 100644 2008/openpcd_openpicc-cluc2008/OpenPICC_Bm117_3_SCH.pdf create mode 100644 2008/openpcd_openpicc-cluc2008/librfid.tpp create mode 100644 2008/openpcd_openpicc-cluc2008/openpcd.jpg create mode 100644 2008/openpcd_openpicc-cluc2008/openpcd_openpicc.mgp create mode 100644 2008/openpcd_openpicc-cluc2008/openpcd_openpicc.pdf create mode 100644 2008/openpcd_openpicc-cluc2008/openpcd_v04-pcb.pdf create mode 100644 2008/openpcd_openpicc-cluc2008/openpcd_v04-sch.pdf create mode 100644 2008/openpcd_openpicc-cluc2008/openpicc.jpg create mode 100644 2008/security_beyond_internet-lt2008/security_beyond_internet.mgp create mode 100644 2008/smartphone_anatomy-ccc2008/.agenda.txt.swp create mode 100644 2008/smartphone_anatomy-ccc2008/Gta02a5_pcba_cs.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/Gta02v1_bottom.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/IMG_8173.JPG create mode 100644 2008/smartphone_anatomy-ccc2008/SimpleComponentDiagram.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.png create mode 100644 2008/smartphone_anatomy-ccc2008/agenda.txt create mode 100644 2008/smartphone_anatomy-ccc2008/e680_jtag.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/gta02v1_bottom.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/smartphone-anatomy-INCOMPLETE.mgp create mode 100644 2008/smartphone_anatomy-ccc2008/smartphone-anatomy.mgp create mode 100644 2008/smartphone_anatomy-ccc2008/smartphone-anatomy.pdf create mode 100644 2008/smartphone_anatomy-ccc2008/x800_application_processor.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_backside_nobat_nocover.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_backside_with_lcm.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_dbgconn_closeup.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_debcon_pcb.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_factorytest.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_hsdpa_modem.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_jtagfinder.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_jtagfinder_probes.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_mainboard_with_shielding.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_opening_the_case.jpg create mode 100644 2008/smartphone_anatomy-ccc2008/x800_usbdownload.jpg create mode 100644 2008/tex-attempt/foss-silicon_manufacturer-elce2008.pdf create mode 100644 2008/tex-attempt/foss-silicon_manufacturer-elce2008.tex (limited to '2008') diff --git a/2008/embedded-openexpo/embedded-openexpo.mgp b/2008/embedded-openexpo/embedded-openexpo.mgp new file mode 100644 index 0000000..4b15ba8 --- /dev/null +++ b/2008/embedded-openexpo/embedded-openexpo.mgp @@ -0,0 +1,261 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +Nobody has [yet] understood +Embedded Linux + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Introduction + +Why am I qualified? + The 'Linux community' POV + Initiator of OpenEZX project (Linux on Motorola GSM phones) + Author of various drivers for embedded hardware + The 'embedded Linux done the rigth way' POV + Lead System Architect (SW+HW) at Openmoko, Inc. + Co-creator of Open Hardware + Software for RFID + OpenPCD, OpenPICC, librfid, libmrtd + The 'chip manufacturer' POV + Open Source Liaison at VIA Technologies, Inc. + The 'customer of consumer-grade embedded Linux' POV + Done reverse-engineering on hundreds of devices for gpl-violations.org + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Linux is everywhere! + +%image "linux_netfilter_singapore_entertainment.jpg" + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Linux is everywhere + +Linux is everywhere! + Linux mobile phones (Motorola, Openmoko) + In-flight entertainment systems + Embedded networking gear + DSLAMs + rack monitoring + Public payphones + ATM's / PoS / vending machines + Now even Fitness gear (Daum Ergometer) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Strengths of FOSS [0/4] + + +What are the true strengths of FOSS + Innovative and creative development + Security due to code review / bugreport / patches + Long-term maintainable code + Stable and reliable systems + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Strengths of FOSS [1/4] + + +Innovative and creative development + easy-to-read existing codebase + standard (FOSS) development tools + thus, easy to modify and add features + community will build around great new features/apps + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Strengths of FOSS [2/4] + + +Security due to code review / bugreport / patches + because all the code is out there + because many people are familiar with existing architecture + because code quality requirements usually very high + because community process allows quick and fast integration of bugfix + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Strengths of FOSS [3/4] + + +Long-term maintainable code + because there's a lot of attention on good software architecture + because many developers are familiar with the shared/common API's + because code quality requirements usually ery high + because all code in mainline gets maintained and updated + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Strengths of FOSS [4/4] + + +Stable and reliable systems + because code quality requirements usually ery high + because kernel releases are quite frequent + because all mainline code is automatically ported to new releases + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Reality Check + + So we should have the perfect world + tons of embedded Linux products + all of them maitainable, secure, stable + encouraging lots of creative work on top of their codebase + + What is the reality + tons of embedded Linux products + none of the strengths of FOSS present in 99% of them + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +What does the vendor get + +So what do the embedded vendors get? + unstable software + security nightmares + unmaintainable code + no innovation + no user-contributed bug fixes + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +What does the vendor get + +unstable software + because their code stinks (low quality) + because they patch around problems rather than solving them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +What does the vendor get + +security nightmares + because they use stoneage forks of the kernel + because they never contributed their code mainline + because those forks can never be merged back with mainline again + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +What does the vendor get + +unmaintainable code + because they have one fork of the code per device (product) + because their code quality sucks + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +What does the vendor get + +no innovation + because they try to hide their code (gpl-violations.org) + because their R&D environment is non-standard + weird cross-toolchains that nobody has seen before + weird filesystems with custom patches that nobody knows + because they add proprietary components to lock developers from adding features + e.g. the entire web-based UI for embedded networking gear + binary-only kernel modules that force people to use old kernels with no interesting new features + because it is, overall, way too hard to develop on/for their platform + because they don't disclose serial console and/or JTAG access + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Reality Check + +So why do they still do it? + there can only be one conclusion: + they never understood the real potential of FOSS + all they do is try to compete with what proprietary competitors do + they never think about creating platforms, every product is distinct/separate + they have no interest in improving their products + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +What does the community get + +So what does the community get? + products that run some crappy fork of Linux somewhere under the hood + but which we cannot really touch/modify without a lot of effort + we face opposition from the product maker if we want to help him to improve + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +TODO + +What should they do? + stop thinking in terms of selling black boxes + defining products that take advantage of the true strength of FOSS + compete against the proprietary competition on a level that they can't match + give up the idea of defining all aspects of an appliance + rather think of building an extensible platforms and let community innovate + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Outlook + + +Outlook + We will see even more embedded Linux, e.g. Mobile phones + We will see even more restricted devices (Tivo-ization, DRM for code) + which go on _very_ thin ice even with GPLv2 + which almost completely remove all freedoms of FOSS + We have some faint dim light at the end of a very far tunnel + e.g. projects like Openmoko, who truly see openness as a feature + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Nobody has [yet] understood Embedded Linux +Outlook diff --git a/2008/embedded-openexpo/linux_netfilter_singapore_entertainment.jpg b/2008/embedded-openexpo/linux_netfilter_singapore_entertainment.jpg new file mode 100644 index 0000000..91b839f Binary files /dev/null and b/2008/embedded-openexpo/linux_netfilter_singapore_entertainment.jpg differ diff --git a/2008/embedded_linux-fossin2008/embedded_linux.mgp b/2008/embedded_linux-fossin2008/embedded_linux.mgp new file mode 100644 index 0000000..08972e2 --- /dev/null +++ b/2008/embedded_linux-fossin2008/embedded_linux.mgp @@ -0,0 +1,485 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +How to do Embedded Linux [not] right + +%center +%size 4 +by + +Harald Welte + +netfilter.org / openmoko.org / openpcd.org +gpl-violations.org / openezx.org +hmw-consulting.de / viatech.com + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Introduction + +Why am I qualified? + The 'Linux community' POV + Former kernel subsystem maintainer (netfilter/iptables) + Initiator of OpenEZX project + Author of various drivers for embedded hardware + The 'embedded Linux done the right way' POV + Lead System Architect (SW+HW) at Openmoko, Inc. + Co-creator of Open Hardware + Software for RFID + OpenPCD, OpenPICC, librfid, libmrtd + The 'chip manufacturer' POV + Open Source Liaison at VIA Technologies, Inc. + The 'customer of consumer-grade embedded Linux' POV + Done reverse-engineering on hundreds of devices for gpl-violations.org + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Linux is everywhere! + +%image "linux_netfilter_singapore_entertainment.jpg" + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Linux is everywhere + +Linux is everywhere! + Linux mobile phones (Motorola, Openmoko) + In-flight entertainment systems + Embedded networking gear + DSLAMs + rack monitoring + Public payphones + ATM's / PoS / vending machines + Now even Fitness gear (Daum Ergometer) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [0/4] + + +What are the true strengths of FOSS + Innovative and creative development + Security due to code review / bugreport / patches + Long-term maintainable code + Stable and reliable systems + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [1/4] + + +Innovative and creative development + easy-to-read existing codebase + standard (FOSS) development tools + thus, easy to modify and add features + community will build around great new features/apps + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [2/4] + + +Security due to code review / bugreport / patches + all the code is out there + many people are familiar with existing architecture + code quality requirements usually very high + community process allows quick and fast integration of bugfix + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [3/4] + + +Long-term maintainable code, because + there's a lot of attention on good software architecture + many developers are familiar with the shared/common API's + code quality requirements usually very high + all code in mainline gets maintained and updated + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [4/4] + + +Stable and reliable systems, because + code quality requirements usually very high + kernel releases are quite frequent + all mainline code is automatically ported to new releases + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Reality Check + + + So we should have the perfect world + tons of embedded Linux products + all of them maintainable, secure, stable + encouraging lots of creative work on top of their codebase + + What is the reality + tons of embedded Linux products + none of the strengths of FOSS present in 99% of them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the PC world, I can + download the latest kernel from kernel.org + compile + install it on almost every current+old platform + have an almost 100% chance that it will boot and support all the major peripherals + only some more obscure hardware might not have drivers yet + update at any time to the latest 2.6.x.y maintenance release + update at any time to the next 2.6.(x+1) release + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the PC world, I can + take about any major Linux distribution, based on my own preference + install and run that very distribution on about any hardware + distribution kernels are very close to mainline these days + benefit of regular security updates by distributions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the Embedded world + every CPU/SoC maker runs their own kernel tree + often one kernel tree per product, based on different mainline versions + ages-old base revisions + a never-ending security nightmare + no benefit from recent new features in mainline + non-standard subsystems (e.g. different USB device or SDIO stack) + proprietary drivers cause lock-in to old kernels + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the Embedded world + I often do not have a choice of which distro to run + There might actually be no distribution + No regular security updates + Often no package management for deploying those updates + If there are distributions, they either need to use the kernel from the BSP (which is ages old) or create yet another custom off-mainline branch/port + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + + + +%center +THIS SUCKS! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +So what do the embedded vendors get? + unstable software + security nightmares + unmaintainable code + no innovation + no user-contributed bug fixes + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +unstable software + because the code really sucks in many cases + because they patch around problems rather than solving them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +security nightmares + because they use stone-age forks of the kernel + because they never contributed their code mainline + because those forks can never be merged back with mainline again + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +unmaintainable code + because they have one fork of the code per device (product) + because their code quality sucks + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +no innovation + because they try to hide their code (gpl-violations.org) + because their R&D environment is non-standard + weird cross-toolchains that nobody has seen before + weird filesystems with custom patches that nobody knows + because they add proprietary components to lock developers from adding features + e.g. the entire web-based UI for embedded networking gear + binary-only kernel modules that force people to use old kernels with no interesting new features + because it is, overall, way too hard to develop on/for their platform + because they don't disclose serial console and/or JTAG access + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Reality Check + + +So why do they still do it? + there can only be one conclusion: + they never understood the real potential of FOSS! + all they do is try to compete with what proprietary competitors do + they never think about creating platforms, every product is distinct/separate + they have no interest in improving their products + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the community get + + +So what does the community get? + products that run some crappy fork of Linux somewhere under the hood + but which we cannot really touch/modify without a lot of effort + we face opposition from the product maker if we want to help him to improve + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (device maker) + + +What should the device vendor do? + stop thinking in terms of selling black boxes + defining products that take advantage of the true strength of FOSS + compete against the proprietary competition on a level that they can't match + give up the idea of defining all aspects of an appliance + rather think of building an extensible platforms and let community innovate + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +A note to chip vendors + + +There are two types of customers + The Linux-aware customer + understands FOSS much better than you do + will share the criticism of this talk + will likely go to a competitor who understands Linux better + The Linux-unaware customer + who just uses Linux to save per-unit OS royalties + who doesn't really care about most issues presented here + who will create inferior products + Linux-awareness is increasing, not decreasing + now is already late, but if you don't have proper FOSS support on your agenda now, you will likely loose the "openness competition" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (chip maker) + + +What should the chip vendors do? + engage in "sustainable development" + develop against latest mainline + make your development trees public (use git!), don't just release stable snapshots as BSP to your tier-one customers + actively interact with the community + learn how to play by the rules (coding style, use common interfaces, no proprietary drivers) + don't just do big code drops every now and then + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (chip maker) + + +What should the chip vendors do? + Externally + Don't mistake FOSS as just a technology. It is a R&D philosophy! + Provide public reference manuals with no NDA + If you have to resort to NDA, make sure they are FOSS friendly + Ensure you don't license IP cores that conflict with FOSS + Internally + Draft a proper in-house FOSS strategy with clear goals + Don't expect your product mangers or engineers to know everything about FOSS without proper training + Hire people with strong community background into your R&D and management to facilitate the know-how transfer + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + + Chip Product Managers need to learn + There's more Linux use with their chips than they ever learn + Their customers are not just the tier-one customers + If you want to support Linux, do it the mainline way. If you support only N number of distributions, your 'N' will be growing and you'll be wasting R&D resources to support each one of them + That there is no single 'contact window' / entity for Linux + The big change is the FOSS development model, not the Linux API's + Linux-aware customers care not only about performance+price, but also about the quality of the Linux port code + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + + BSP R&D Managers need to learn + Linux is not just a set of API's for their developers to learn + Linux is FOSS. The FOSS R&D model is different + Their engineers need to be encouraged to communicate + and thus, need real Internet (git, mailing lists, ..) + have to get clear indication what is confidential and what not + FOSS is about cooperation. You don't need to reinvent the wheel + don't include your own 802.11 stack in your wifi driver + If you do not merge your code mainline, you end up in a maintenance nightmare + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + + BSP Software Engineers need to learn + Linux is not just a set of API's + How and where to ask the right kind of questions + How and where to look for the latest code + Code is written to be read by other people, not just to execute + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (community) + +What should the community do + Provide non-partisan documentation + on FOSS advantages, proper FOSS development + hardware companies are interested to learn, but don't know who to ask. If they ask a commercial distributor, then they get in bed with them, which is not the same as working with the mainline development community + Something like a mentoring program + take software/driver R&D by their hand and walk them through the mainline merge + Don't scare them away + They have to be taught about the communication / review culture + Your valid criticism to patches has to be explained + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Problems (chipmaker) + + Patent licensing schemes + e.g. MPEG patent license doesn't at all work in a FOSS model + Technology licensing schemes + e.g. Sony Memorystick. Impossible for a chip maker to provide FOSS driver + Everyone in the industry has those very same problems + Chip makers should cooperate to present their case together to the respective licensors + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Problems (chipmaker) + + Patent trolls + openly accessible documentation invites patent trolls + Why? + patent trolls rarely read+understand FOSS code + thus, open documentation increases the risk to be hit + However + this is a by-product of how the patent system currently works + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Outlook + +Outlook + We will see even more embedded Linux, e.g. Mobile phones + We will see even more restricted devices (Tivo-ization, DRM for code) + which go on _very_ thin ice even with GPLv2 + which almost completely remove all freedoms of FOSS + We have some faint dim light at the end of a very far tunnel + e.g. projects like Openmoko, who truly see openness as a feature + e.g. chip makers who slowly open up a bit more + on the PC side, Intel definitely is setting the best overall example + on the Embedded side, I see some movement in major players (TI, Marvell, Samsung, Infineon, ...) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Thanks + + Thanks for your attention. + + Some Time left for Q&A + + Enjoy the FOSS.in / 2008 diff --git a/2008/embedded_linux-fossin2008/embedded_linux.pdf b/2008/embedded_linux-fossin2008/embedded_linux.pdf new file mode 100644 index 0000000..5ddda07 Binary files /dev/null and b/2008/embedded_linux-fossin2008/embedded_linux.pdf differ diff --git a/2008/embedded_linux-fossin2008/html/index.html b/2008/embedded_linux-fossin2008/html/index.html new file mode 100644 index 0000000..5f104f1 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/index.html @@ -0,0 +1,42 @@ + +MagicPoint presentation foils + +Page 1 +Page 2 +Page 3 +Page 4 +Page 5 +Page 6 +Page 7 +Page 8 +Page 9 +Page 10 +Page 11 +Page 12 +Page 13 +Page 14 +Page 15 +Page 16 +Page 17 +Page 18 +Page 19 +Page 20 +Page 21 +Page 22 +Page 23 +Page 24 +Page 25 +Page 26 +Page 27 +Page 28 +Page 29 +Page 30 +Page 31 +Page 32 +Page 33 +Page 34 +Page 35 +
+Generated by MagicPoint +
+ diff --git a/2008/embedded_linux-fossin2008/html/mgp00001.html b/2008/embedded_linux-fossin2008/html/mgp00001.html new file mode 100644 index 0000000..098e612 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00001.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 1: How to do Embedded Linux [not] right
+
+Page 1
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00001.png b/2008/embedded_linux-fossin2008/html/mgp00001.png new file mode 100644 index 0000000..0b8b03a Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00001.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00001.txt b/2008/embedded_linux-fossin2008/html/mgp00001.txt new file mode 100644 index 0000000..ba84660 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00001.txt @@ -0,0 +1,14 @@ + + + +How to do Embedded Linux [not] right + +by + +Harald Welte + +netfilter.org / openmoko.org / openpcd.org +gpl-violations.org / openezx.org +hmw-consulting.de / viatech.com + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00002.html b/2008/embedded_linux-fossin2008/html/mgp00002.html new file mode 100644 index 0000000..2909778 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00002.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 2: How to do Embedded Linux [not] right
+
+Page 2
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00002.png b/2008/embedded_linux-fossin2008/html/mgp00002.png new file mode 100644 index 0000000..c75ec57 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00002.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00002.txt b/2008/embedded_linux-fossin2008/html/mgp00002.txt new file mode 100644 index 0000000..cb3bc3f --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00002.txt @@ -0,0 +1,13 @@ +How to do Embedded Linux [not] right +Introduction + +Who is speaking to you? +an independent Free Software developer, consultant and trainer +13 years experience using/deploying and developing for Linux on server and workstation +10 years professional experience doing Linux system + kernel level development +strong focus on network security and embedded +expert in Free and Open Source Software (FOSS) copyright and licensing +digital board-level hardware design, esp. embedded systems +active developer and contributor to many FOSS projects +thus, a techie, who will therefore not have fancy animated slides ;) + diff --git a/2008/embedded_linux-fossin2008/html/mgp00003.html b/2008/embedded_linux-fossin2008/html/mgp00003.html new file mode 100644 index 0000000..05916b3 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00003.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 3: How to do Embedded Linux [not] right
+
+Page 3
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00003.png b/2008/embedded_linux-fossin2008/html/mgp00003.png new file mode 100644 index 0000000..2fde084 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00003.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00003.txt b/2008/embedded_linux-fossin2008/html/mgp00003.txt new file mode 100644 index 0000000..6cc022c --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00003.txt @@ -0,0 +1,17 @@ +How to do Embedded Linux [not] right +Introduction + +Why am I qualified? +The 'Linux community' POV +Former kernel subsystem maintainer (netfilter/iptables) +Initiator of OpenEZX project +Author of various drivers for embedded hardware +The 'embedded Linux done the right way' POV +Lead System Architect (SW+HW) at Openmoko, Inc. +Co-creator of Open Hardware + Software for RFID +OpenPCD, OpenPICC, librfid, libmrtd +The 'chip manufacturer' POV +Open Source Liaison at VIA Technologies, Inc. +The 'customer of consumer-grade embedded Linux' POV +Done reverse-engineering on hundreds of devices for gpl-violations.org + diff --git a/2008/embedded_linux-fossin2008/html/mgp00004.html b/2008/embedded_linux-fossin2008/html/mgp00004.html new file mode 100644 index 0000000..0ba9fec --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00004.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 4: How to do Embedded Linux [not] right
+
+Page 4
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00004.png b/2008/embedded_linux-fossin2008/html/mgp00004.png new file mode 100644 index 0000000..95890c5 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00004.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00004.txt b/2008/embedded_linux-fossin2008/html/mgp00004.txt new file mode 100644 index 0000000..a1d89da --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00004.txt @@ -0,0 +1,6 @@ +How to do Embedded Linux [not] right +Linux is everywhere! + + + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00005.html b/2008/embedded_linux-fossin2008/html/mgp00005.html new file mode 100644 index 0000000..8e5e347 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00005.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 5: How to do Embedded Linux [not] right
+
+Page 5
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00005.png b/2008/embedded_linux-fossin2008/html/mgp00005.png new file mode 100644 index 0000000..cca0802 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00005.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00005.txt b/2008/embedded_linux-fossin2008/html/mgp00005.txt new file mode 100644 index 0000000..9df10b3 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00005.txt @@ -0,0 +1,13 @@ +How to do Embedded Linux [not] right +Linux is everywhere + +Linux is everywhere! +Linux mobile phones (Motorola, Openmoko) +In-flight entertainment systems +Embedded networking gear +DSLAMs +rack monitoring +Public payphones +ATM's / PoS / vending machines +Now even Fitness gear (Daum Ergometer) + diff --git a/2008/embedded_linux-fossin2008/html/mgp00006.html b/2008/embedded_linux-fossin2008/html/mgp00006.html new file mode 100644 index 0000000..bd2aac6 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00006.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 6: How to do Embedded Linux [not] right
+
+Page 6
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00006.png b/2008/embedded_linux-fossin2008/html/mgp00006.png new file mode 100644 index 0000000..42c2589 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00006.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00006.txt b/2008/embedded_linux-fossin2008/html/mgp00006.txt new file mode 100644 index 0000000..a583087 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00006.txt @@ -0,0 +1,10 @@ +How to do Embedded Linux [not] right +Strengths of FOSS [0/4] + + +What are the true strengths of FOSS +Innovative and creative development +Security due to code review / bugreport / patches +Long-term maintainable code +Stable and reliable systems + diff --git a/2008/embedded_linux-fossin2008/html/mgp00007.html b/2008/embedded_linux-fossin2008/html/mgp00007.html new file mode 100644 index 0000000..71e0988 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00007.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 7: How to do Embedded Linux [not] right
+
+Page 7
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00007.png b/2008/embedded_linux-fossin2008/html/mgp00007.png new file mode 100644 index 0000000..e5cfec1 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00007.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00007.txt b/2008/embedded_linux-fossin2008/html/mgp00007.txt new file mode 100644 index 0000000..e8fbacd --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00007.txt @@ -0,0 +1,10 @@ +How to do Embedded Linux [not] right +Strengths of FOSS [1/4] + + +Innovative and creative development +easy-to-read existing codebase +standard (FOSS) development tools +thus, easy to modify and add features +community will build around great new features/apps + diff --git a/2008/embedded_linux-fossin2008/html/mgp00008.html b/2008/embedded_linux-fossin2008/html/mgp00008.html new file mode 100644 index 0000000..fbff029 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00008.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 8: How to do Embedded Linux [not] right
+
+Page 8
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00008.png b/2008/embedded_linux-fossin2008/html/mgp00008.png new file mode 100644 index 0000000..d225ee1 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00008.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00008.txt b/2008/embedded_linux-fossin2008/html/mgp00008.txt new file mode 100644 index 0000000..2fb55fa --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00008.txt @@ -0,0 +1,10 @@ +How to do Embedded Linux [not] right +Strengths of FOSS [2/4] + + +Security due to code review / bugreport / patches +all the code is out there +many people are familiar with existing architecture +code quality requirements usually very high +community process allows quick and fast integration of bugfix + diff --git a/2008/embedded_linux-fossin2008/html/mgp00009.html b/2008/embedded_linux-fossin2008/html/mgp00009.html new file mode 100644 index 0000000..d9b4cbf --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00009.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 9: How to do Embedded Linux [not] right
+
+Page 9
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00009.png b/2008/embedded_linux-fossin2008/html/mgp00009.png new file mode 100644 index 0000000..8e44de6 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00009.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00009.txt b/2008/embedded_linux-fossin2008/html/mgp00009.txt new file mode 100644 index 0000000..1334e44 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00009.txt @@ -0,0 +1,10 @@ +How to do Embedded Linux [not] right +Strengths of FOSS [3/4] + + +Long-term maintainable code, because +there's a lot of attention on good software architecture +many developers are familiar with the shared/common API's +code quality requirements usually very high +all code in mainline gets maintained and updated + diff --git a/2008/embedded_linux-fossin2008/html/mgp00010.html b/2008/embedded_linux-fossin2008/html/mgp00010.html new file mode 100644 index 0000000..45b7a27 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00010.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 10: How to do Embedded Linux [not] right
+
+Page 10
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00010.png b/2008/embedded_linux-fossin2008/html/mgp00010.png new file mode 100644 index 0000000..d8b9c56 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00010.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00010.txt b/2008/embedded_linux-fossin2008/html/mgp00010.txt new file mode 100644 index 0000000..b0ac096 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00010.txt @@ -0,0 +1,10 @@ +How to do Embedded Linux [not] right +Strengths of FOSS [4/4] + + +Stable and reliable systems, because +code quality requirements usually very high +kernel releases are quite frequent +all mainline code is automatically ported to new releases + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00011.html b/2008/embedded_linux-fossin2008/html/mgp00011.html new file mode 100644 index 0000000..03027bb --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00011.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 11: How to do Embedded Linux [not] right
+
+Page 11
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00011.png b/2008/embedded_linux-fossin2008/html/mgp00011.png new file mode 100644 index 0000000..8c7b88e Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00011.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00011.txt b/2008/embedded_linux-fossin2008/html/mgp00011.txt new file mode 100644 index 0000000..babf04a --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00011.txt @@ -0,0 +1,13 @@ +How to do Embedded Linux [not] right +Reality Check + + +So we should have the perfect world +tons of embedded Linux products +all of them maintainable, secure, stable +encouraging lots of creative work on top of their codebase + +What is the reality +tons of embedded Linux products +none of the strengths of FOSS present in 99% of them + diff --git a/2008/embedded_linux-fossin2008/html/mgp00012.html b/2008/embedded_linux-fossin2008/html/mgp00012.html new file mode 100644 index 0000000..b2676a0 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00012.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 12: How to do Embedded Linux [not] right
+
+Page 12
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00012.png b/2008/embedded_linux-fossin2008/html/mgp00012.png new file mode 100644 index 0000000..6fbf8c6 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00012.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00012.txt b/2008/embedded_linux-fossin2008/html/mgp00012.txt new file mode 100644 index 0000000..f6cb1f8 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00012.txt @@ -0,0 +1,13 @@ +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC +In the PC world, I can +download the latest kernel from kernel.org +compile + install it on almost every current+old platform +have an almost 100% chance that it will boot and support all the major peripherals +only some more obscure hardware might not have drivers yet +update at any time to the latest 2.6.x.y maintenance release +update at any time to the next 2.6.(x+1) release + diff --git a/2008/embedded_linux-fossin2008/html/mgp00013.html b/2008/embedded_linux-fossin2008/html/mgp00013.html new file mode 100644 index 0000000..92018e7 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00013.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 13: How to do Embedded Linux [not] right
+
+Page 13
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00013.png b/2008/embedded_linux-fossin2008/html/mgp00013.png new file mode 100644 index 0000000..2e22700 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00013.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00013.txt b/2008/embedded_linux-fossin2008/html/mgp00013.txt new file mode 100644 index 0000000..771d600 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00013.txt @@ -0,0 +1,11 @@ +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC +In the PC world, I can +take about any major Linux distribution, based on my own preference +install and run that very distribution on about any hardware +distribution kernels are very close to mainline these days +benefit of regular security updates by distributions + diff --git a/2008/embedded_linux-fossin2008/html/mgp00014.html b/2008/embedded_linux-fossin2008/html/mgp00014.html new file mode 100644 index 0000000..e4c8cfc --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00014.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 14: How to do Embedded Linux [not] right
+
+Page 14
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00014.png b/2008/embedded_linux-fossin2008/html/mgp00014.png new file mode 100644 index 0000000..b5b7f6d Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00014.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00014.txt b/2008/embedded_linux-fossin2008/html/mgp00014.txt new file mode 100644 index 0000000..4fef4f8 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00014.txt @@ -0,0 +1,14 @@ +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC +In the Embedded world +every CPU/SoC maker runs their own kernel tree +often one kernel tree per product, based on different mainline versions +ages-old base revisions +a never-ending security nightmare +no benefit from recent new features in mainline +non-standard subsystems (e.g. different USB device or SDIO stack) +proprietary drivers cause lock-in to old kernels + diff --git a/2008/embedded_linux-fossin2008/html/mgp00015.html b/2008/embedded_linux-fossin2008/html/mgp00015.html new file mode 100644 index 0000000..68b42a8 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00015.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 15: How to do Embedded Linux [not] right
+
+Page 15
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00015.png b/2008/embedded_linux-fossin2008/html/mgp00015.png new file mode 100644 index 0000000..936bba0 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00015.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00015.txt b/2008/embedded_linux-fossin2008/html/mgp00015.txt new file mode 100644 index 0000000..6650111 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00015.txt @@ -0,0 +1,12 @@ +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC +In the Embedded world +I often do not have a choice of which distro to run +There might actually be no distribution +No regular security updates +Often no package management for deploying those updates +If there are distributions, they either need to use the kernel from the BSP (which is ages old) or create yet another custom off-mainline branch/port + diff --git a/2008/embedded_linux-fossin2008/html/mgp00016.html b/2008/embedded_linux-fossin2008/html/mgp00016.html new file mode 100644 index 0000000..cdd97a8 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00016.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 16: How to do Embedded Linux [not] right
+
+Page 16
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00016.png b/2008/embedded_linux-fossin2008/html/mgp00016.png new file mode 100644 index 0000000..108eece Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00016.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00016.txt b/2008/embedded_linux-fossin2008/html/mgp00016.txt new file mode 100644 index 0000000..601e741 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00016.txt @@ -0,0 +1,9 @@ +How to do Embedded Linux [not] right +Differences to PC Linux + + + + +THIS SUCKS! + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00017.html b/2008/embedded_linux-fossin2008/html/mgp00017.html new file mode 100644 index 0000000..8f0c0bd --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00017.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 17: How to do Embedded Linux [not] right
+
+Page 17
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00017.png b/2008/embedded_linux-fossin2008/html/mgp00017.png new file mode 100644 index 0000000..577ca2f Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00017.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00017.txt b/2008/embedded_linux-fossin2008/html/mgp00017.txt new file mode 100644 index 0000000..b5ae370 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00017.txt @@ -0,0 +1,11 @@ +How to do Embedded Linux [not] right +What does the vendor get + + +So what do the embedded vendors get? +unstable software +security nightmares +unmaintainable code +no innovation +no user-contributed bug fixes + diff --git a/2008/embedded_linux-fossin2008/html/mgp00018.html b/2008/embedded_linux-fossin2008/html/mgp00018.html new file mode 100644 index 0000000..3f78304 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00018.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 18: How to do Embedded Linux [not] right
+
+Page 18
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00018.png b/2008/embedded_linux-fossin2008/html/mgp00018.png new file mode 100644 index 0000000..be2909c Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00018.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00018.txt b/2008/embedded_linux-fossin2008/html/mgp00018.txt new file mode 100644 index 0000000..9993e47 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00018.txt @@ -0,0 +1,8 @@ +How to do Embedded Linux [not] right +What does the vendor get + + +unstable software +because the code really sucks in many cases +because they patch around problems rather than solving them + diff --git a/2008/embedded_linux-fossin2008/html/mgp00019.html b/2008/embedded_linux-fossin2008/html/mgp00019.html new file mode 100644 index 0000000..7312503 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00019.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 19: How to do Embedded Linux [not] right
+
+Page 19
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00019.png b/2008/embedded_linux-fossin2008/html/mgp00019.png new file mode 100644 index 0000000..41d7f03 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00019.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00019.txt b/2008/embedded_linux-fossin2008/html/mgp00019.txt new file mode 100644 index 0000000..970342a --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00019.txt @@ -0,0 +1,9 @@ +How to do Embedded Linux [not] right +What does the vendor get + + +security nightmares +because they use stone-age forks of the kernel +because they never contributed their code mainline +because those forks can never be merged back with mainline again + diff --git a/2008/embedded_linux-fossin2008/html/mgp00020.html b/2008/embedded_linux-fossin2008/html/mgp00020.html new file mode 100644 index 0000000..7bff480 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00020.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 20: How to do Embedded Linux [not] right
+
+Page 20
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00020.png b/2008/embedded_linux-fossin2008/html/mgp00020.png new file mode 100644 index 0000000..4b978c7 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00020.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00020.txt b/2008/embedded_linux-fossin2008/html/mgp00020.txt new file mode 100644 index 0000000..737336b --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00020.txt @@ -0,0 +1,9 @@ +How to do Embedded Linux [not] right +What does the vendor get + + +unmaintainable code +because they have one fork of the code per device (product) +because their code quality sucks + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00021.html b/2008/embedded_linux-fossin2008/html/mgp00021.html new file mode 100644 index 0000000..7d75176 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00021.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 21: How to do Embedded Linux [not] right
+
+Page 21
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00021.png b/2008/embedded_linux-fossin2008/html/mgp00021.png new file mode 100644 index 0000000..56bc4e1 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00021.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00021.txt b/2008/embedded_linux-fossin2008/html/mgp00021.txt new file mode 100644 index 0000000..b03353a --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00021.txt @@ -0,0 +1,15 @@ +How to do Embedded Linux [not] right +What does the vendor get + + +no innovation +because they try to hide their code (gpl-violations.org) +because their R&D environment is non-standard +weird cross-toolchains that nobody has seen before +weird filesystems with custom patches that nobody knows +because they add proprietary components to lock developers from adding features +e.g. the entire web-based UI for embedded networking gear +binary-only kernel modules that force people to use old kernels with no interesting new features +because it is, overall, way too hard to develop on/for their platform +because they don't disclose serial console and/or JTAG access + diff --git a/2008/embedded_linux-fossin2008/html/mgp00022.html b/2008/embedded_linux-fossin2008/html/mgp00022.html new file mode 100644 index 0000000..8b33a5a --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00022.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 22: How to do Embedded Linux [not] right
+
+Page 22
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00022.png b/2008/embedded_linux-fossin2008/html/mgp00022.png new file mode 100644 index 0000000..f24c694 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00022.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00022.txt b/2008/embedded_linux-fossin2008/html/mgp00022.txt new file mode 100644 index 0000000..f577cc0 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00022.txt @@ -0,0 +1,11 @@ +How to do Embedded Linux [not] right +Reality Check + + +So why do they still do it? +there can only be one conclusion: +they never understood the real potential of FOSS! +all they do is try to compete with what proprietary competitors do +they never think about creating platforms, every product is distinct/separate +they have no interest in improving their products + diff --git a/2008/embedded_linux-fossin2008/html/mgp00023.html b/2008/embedded_linux-fossin2008/html/mgp00023.html new file mode 100644 index 0000000..5528b96 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00023.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 23: How to do Embedded Linux [not] right
+
+Page 23
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00023.png b/2008/embedded_linux-fossin2008/html/mgp00023.png new file mode 100644 index 0000000..76e1403 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00023.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00023.txt b/2008/embedded_linux-fossin2008/html/mgp00023.txt new file mode 100644 index 0000000..681b1a5 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00023.txt @@ -0,0 +1,9 @@ +How to do Embedded Linux [not] right +What does the community get + + +So what does the community get? +products that run some crappy fork of Linux somewhere under the hood +but which we cannot really touch/modify without a lot of effort +we face opposition from the product maker if we want to help him to improve + diff --git a/2008/embedded_linux-fossin2008/html/mgp00024.html b/2008/embedded_linux-fossin2008/html/mgp00024.html new file mode 100644 index 0000000..35b3097 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00024.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 24: How to do Embedded Linux [not] right
+
+Page 24
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00024.png b/2008/embedded_linux-fossin2008/html/mgp00024.png new file mode 100644 index 0000000..8d19964 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00024.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00024.txt b/2008/embedded_linux-fossin2008/html/mgp00024.txt new file mode 100644 index 0000000..74228e2 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00024.txt @@ -0,0 +1,11 @@ +How to do Embedded Linux [not] right +TODO (device maker) + + +What should the device vendor do? +stop thinking in terms of selling black boxes +defining products that take advantage of the true strength of FOSS +compete against the proprietary competition on a level that they can't match +give up the idea of defining all aspects of an appliance +rather think of building an extensible platforms and let community innovate + diff --git a/2008/embedded_linux-fossin2008/html/mgp00025.html b/2008/embedded_linux-fossin2008/html/mgp00025.html new file mode 100644 index 0000000..ac61d41 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00025.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 25: How to do Embedded Linux [not] right
+
+Page 25
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00025.png b/2008/embedded_linux-fossin2008/html/mgp00025.png new file mode 100644 index 0000000..96673c7 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00025.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00025.txt b/2008/embedded_linux-fossin2008/html/mgp00025.txt new file mode 100644 index 0000000..5f06673 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00025.txt @@ -0,0 +1,16 @@ +How to do Embedded Linux [not] right +A note to chip vendors + + +There are two types of customers +The Linux-aware customer +understands FOSS much better than you do +will share the criticism of this talk +will likely go to a competitor who understands Linux better +The Linux-unaware customer +who just uses Linux to save per-unit OS royalties +who doesn't really care about most issues presented here +who will create inferior products +Linux-awareness is increasing, not decreasing +now is already late, but if you don't have proper FOSS support on your agenda now, you will likely loose the "openness competition" + diff --git a/2008/embedded_linux-fossin2008/html/mgp00026.html b/2008/embedded_linux-fossin2008/html/mgp00026.html new file mode 100644 index 0000000..062a6be --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00026.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 26: How to do Embedded Linux [not] right
+
+Page 26
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00026.png b/2008/embedded_linux-fossin2008/html/mgp00026.png new file mode 100644 index 0000000..a1c9865 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00026.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00026.txt b/2008/embedded_linux-fossin2008/html/mgp00026.txt new file mode 100644 index 0000000..e92c764 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00026.txt @@ -0,0 +1,12 @@ +How to do Embedded Linux [not] right +TODO (chip maker) + + +What should the chip vendors do? +engage in "sustainable development" +develop against latest mainline +make your development trees public (use git!), don't just release stable snapshots as BSP to your tier-one customers +actively interact with the community +learn how to play by the rules (coding style, use common interfaces, no proprietary drivers) +don't just do big code drops every now and then + diff --git a/2008/embedded_linux-fossin2008/html/mgp00027.html b/2008/embedded_linux-fossin2008/html/mgp00027.html new file mode 100644 index 0000000..bb463b6 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00027.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 27: How to do Embedded Linux [not] right
+
+Page 27
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00027.png b/2008/embedded_linux-fossin2008/html/mgp00027.png new file mode 100644 index 0000000..6a13ca8 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00027.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00027.txt b/2008/embedded_linux-fossin2008/html/mgp00027.txt new file mode 100644 index 0000000..b7825da --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00027.txt @@ -0,0 +1,15 @@ +How to do Embedded Linux [not] right +TODO (chip maker) + + +What should the chip vendors do? +Externally +Don't mistake FOSS as just a technology. It is a R&D philosophy! +Provide public reference manuals with no NDA +If you have to resort to NDA, make sure they are FOSS friendly +Ensure you don't license IP cores that conflict with FOSS +Internally +Draft a proper in-house FOSS strategy with clear goals +Don't expect your product mangers or engineers to know everything about FOSS without proper training +Hire people with strong community background into your R&D and management to facilitate the know-how transfer + diff --git a/2008/embedded_linux-fossin2008/html/mgp00028.html b/2008/embedded_linux-fossin2008/html/mgp00028.html new file mode 100644 index 0000000..eac927b --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00028.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 28: How to do Embedded Linux [not] right
+
+Page 28
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00028.png b/2008/embedded_linux-fossin2008/html/mgp00028.png new file mode 100644 index 0000000..e0b4494 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00028.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00028.txt b/2008/embedded_linux-fossin2008/html/mgp00028.txt new file mode 100644 index 0000000..d7b7f4d --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00028.txt @@ -0,0 +1,13 @@ +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + +Chip Product Managers need to learn +There's more Linux use with their chips than they ever learn +Their customers are not just the tier-one customers +If you want to support Linux, do it the mainline way. If you support only N number of distributions, your 'N' will be growing and you'll be wasting R&D resources to support each one of them +That there is no single 'contact window' / entity for Linux +The big change is the FOSS development model, not the Linux API's +Linux-aware customers care not only about performance+price, but also about the quality of the Linux port code + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00029.html b/2008/embedded_linux-fossin2008/html/mgp00029.html new file mode 100644 index 0000000..25e5eb4 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00029.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 29: How to do Embedded Linux [not] right
+
+Page 29
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00029.png b/2008/embedded_linux-fossin2008/html/mgp00029.png new file mode 100644 index 0000000..0fa6122 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00029.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00029.txt b/2008/embedded_linux-fossin2008/html/mgp00029.txt new file mode 100644 index 0000000..87e4e97 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00029.txt @@ -0,0 +1,14 @@ +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + +BSP R&D Managers need to learn +Linux is not just a set of API's for their developers to learn +Linux is FOSS. The FOSS R&D model is different +Their engineers need to be encouraged to communicate +and thus, need real Internet (git, mailing lists, ..) +have to get clear indication what is confidential and what not +FOSS is about cooperation. You don't need to reinvent the wheel +don't include your own 802.11 stack in your wifi driver +If you do not merge your code mainline, you end up in a maintenance nightmare + diff --git a/2008/embedded_linux-fossin2008/html/mgp00030.html b/2008/embedded_linux-fossin2008/html/mgp00030.html new file mode 100644 index 0000000..e777c4d --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00030.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 30: How to do Embedded Linux [not] right
+
+Page 30
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00030.png b/2008/embedded_linux-fossin2008/html/mgp00030.png new file mode 100644 index 0000000..c2f18eb Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00030.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00030.txt b/2008/embedded_linux-fossin2008/html/mgp00030.txt new file mode 100644 index 0000000..33ee8a1 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00030.txt @@ -0,0 +1,11 @@ +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + +BSP Software Engineers need to learn +Linux is not just a set of API's +How and where to ask the right kind of questions +How and where to look for the latest code +Code is written to be read by other people, not just to execute + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00031.html b/2008/embedded_linux-fossin2008/html/mgp00031.html new file mode 100644 index 0000000..3f00407 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00031.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 31: How to do Embedded Linux [not] right
+
+Page 31
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00031.png b/2008/embedded_linux-fossin2008/html/mgp00031.png new file mode 100644 index 0000000..4e19e9e Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00031.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00031.txt b/2008/embedded_linux-fossin2008/html/mgp00031.txt new file mode 100644 index 0000000..7ced731 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00031.txt @@ -0,0 +1,13 @@ +How to do Embedded Linux [not] right +TODO (community) + +What should the community do +Provide non-partisan documentation +on FOSS advantages, proper FOSS development +hardware companies are interested to learn, but don't know who to ask. If they ask a commercial distributor, then they get in bed with them, which is not the same as working with the mainline development community +Something like a mentoring program +take software/driver R&D by their hand and walk them through the mainline merge +Don't scare them away +They have to be taught about the communication / review culture +Your valid criticism to patches has to be explained + diff --git a/2008/embedded_linux-fossin2008/html/mgp00032.html b/2008/embedded_linux-fossin2008/html/mgp00032.html new file mode 100644 index 0000000..e08d164 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00032.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 32: How to do Embedded Linux [not] right
+
+Page 32
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00032.png b/2008/embedded_linux-fossin2008/html/mgp00032.png new file mode 100644 index 0000000..e8ec856 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00032.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00032.txt b/2008/embedded_linux-fossin2008/html/mgp00032.txt new file mode 100644 index 0000000..23d1b7f --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00032.txt @@ -0,0 +1,10 @@ +How to do Embedded Linux [not] right +Problems (chipmaker) + +Patent licensing schemes +e.g. MPEG patent license doesn't at all work in a FOSS model +Technology licensing schemes +e.g. Sony Memorystick. Impossible for a chip maker to provide FOSS driver +Everyone in the industry has those very same problems +Chip makers should cooperate to present their case together to the respective licensors + diff --git a/2008/embedded_linux-fossin2008/html/mgp00033.html b/2008/embedded_linux-fossin2008/html/mgp00033.html new file mode 100644 index 0000000..f4f14ba --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00033.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 33: How to do Embedded Linux [not] right
+
+Page 33
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00033.png b/2008/embedded_linux-fossin2008/html/mgp00033.png new file mode 100644 index 0000000..7288a48 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00033.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00033.txt b/2008/embedded_linux-fossin2008/html/mgp00033.txt new file mode 100644 index 0000000..50688e9 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00033.txt @@ -0,0 +1,11 @@ +How to do Embedded Linux [not] right +Problems (chipmaker) + +Patent trolls +openly accessible documentation invites patent trolls +Why? +patent trolls rarely read+understand FOSS code +thus, open documentation increases the risk to be hit +However +this is a by-product of how the patent system currently works + diff --git a/2008/embedded_linux-fossin2008/html/mgp00034.html b/2008/embedded_linux-fossin2008/html/mgp00034.html new file mode 100644 index 0000000..eab270f --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00034.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 34: How to do Embedded Linux [not] right
+
+Page 34
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00034.png b/2008/embedded_linux-fossin2008/html/mgp00034.png new file mode 100644 index 0000000..b564501 Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00034.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00034.txt b/2008/embedded_linux-fossin2008/html/mgp00034.txt new file mode 100644 index 0000000..3b1916e --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00034.txt @@ -0,0 +1,15 @@ +How to do Embedded Linux [not] right +Outlook + +Outlook +We will see even more embedded Linux, e.g. Mobile phones +We will see even more restricted devices (Tivo-ization, DRM for code) +which go on _very_ thin ice even with GPLv2 +which almost completely remove all freedoms of FOSS +We have some faint dim light at the end of a very far tunnel +e.g. projects like Openmoko, who truly see openness as a feature +e.g. chip makers who slowly open up a bit more +on the PC side, Intel definitely is setting the best overall example +on the Embedded side, I see some movement in major players (TI, Marvell, Samsung, Infineon, ...) + + diff --git a/2008/embedded_linux-fossin2008/html/mgp00035.html b/2008/embedded_linux-fossin2008/html/mgp00035.html new file mode 100644 index 0000000..cb42f17 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00035.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 35: How to do Embedded Linux [not] right
+
+Page 35
+
Generated by MagicPoint + diff --git a/2008/embedded_linux-fossin2008/html/mgp00035.png b/2008/embedded_linux-fossin2008/html/mgp00035.png new file mode 100644 index 0000000..7852fce Binary files /dev/null and b/2008/embedded_linux-fossin2008/html/mgp00035.png differ diff --git a/2008/embedded_linux-fossin2008/html/mgp00035.txt b/2008/embedded_linux-fossin2008/html/mgp00035.txt new file mode 100644 index 0000000..6813598 --- /dev/null +++ b/2008/embedded_linux-fossin2008/html/mgp00035.txt @@ -0,0 +1,8 @@ +How to do Embedded Linux [not] right +Thanks + +Thanks for your attention. + +Some Time left for Q&A + +Enjoy the FOSS.in / 2008 diff --git a/2008/embedded_linux-fossin2008/linux_netfilter_singapore_entertainment.jpg b/2008/embedded_linux-fossin2008/linux_netfilter_singapore_entertainment.jpg new file mode 100644 index 0000000..91b839f Binary files /dev/null and b/2008/embedded_linux-fossin2008/linux_netfilter_singapore_entertainment.jpg differ diff --git a/2008/foss-silicon_manufacturer-elce2008/abstract.txt b/2008/foss-silicon_manufacturer-elce2008/abstract.txt new file mode 100644 index 0000000..ae094c3 --- /dev/null +++ b/2008/foss-silicon_manufacturer-elce2008/abstract.txt @@ -0,0 +1,24 @@ +How chip makers should (not) support Free Software + +Silicon manufacturers, or rather design houses play a key aspect in how well +their products are supported in Free Software oparating systems such as Linux. +In the early Linux days - more than a decade ago - it was normal to have +completely public technical reference manuals for the silicon, enabling Linux +community developers to write drivers for the chips. +After chip design houses start to realize there is an economically significant +Linux market, they try to use their existing workflow, processes and +development model for proprietary operating systems and try to apply this to +Linux. The result are in many cases binary-only drivers for certain Kernel +versions and/or distributions or unmaintained, non-portable, coding style +incompliant open source drivers for outdated kernel versions. Those kind of +drivers are bound to create dissatisfaction within the Free Software developer +community, among the Free Software users. Furthermore, they also result in +inefficient use of R&D resources both inside and outside the chip vendor. + +Many silicon design houses still don't understand the Free Software and +particularly Linux development model at all. This results in suboptimal +support of their hardware products. In the end, customers are likely to buy +from a different vendor. + +So what can chip design houses do to ensure excellent support of their products +in the Free Software world? diff --git a/2008/foss-silicon_manufacturer-elce2008/bio.txt b/2008/foss-silicon_manufacturer-elce2008/bio.txt new file mode 100644 index 0000000..960ef74 --- /dev/null +++ b/2008/foss-silicon_manufacturer-elce2008/bio.txt @@ -0,0 +1,25 @@ +Harald Welte is a freelancer, consultant, enthusiast, freedom fighter and +hcaker who is working with Free Software (and particularly the Linux kernel) +since 1995. His first major code contribution to the kernel was within the +netfilter/iptables packet filter. + +He has started a number of other Free Software and Free Hardware projects, +mainly related to RFID such as librfid, OpenMRTD, OpenBeacon, OpenPCD, OpenPICC. + +During 2006 and 2007 Harald became the co-founder of OpenMoko, where he served +as Lead System Architect for the worlds first 100% Open Free Software based +mobile phone. + +Aside from his technical contributions, Harald has been pioneering the legal +enforcement of the GNU GPL license as part of his gpl-violations.org project. +More than 150 inappropriate use of GPL licensed code by commercial companiess +have been resolved as part of this effort, both in court and out of court. + +He has received the 2007 "FSF Award for the Advancement of Free Software" and +the "2008 Google/O'Reilly Open Source award: Defender of Rights". + +Harald is currently working as "Open Source Liaison" for the taiwanese CPU, +chipset and peripheral design house VIA, helping them to understand how to +attain the best possible Free Software support for their components. + +He continues to operate his consulting business hmw-consulting. diff --git a/2008/foss-silicon_manufacturer-elce2008/embedded-openexpo.mgp b/2008/foss-silicon_manufacturer-elce2008/embedded-openexpo.mgp new file mode 100644 index 0000000..59e30b7 --- /dev/null +++ b/2008/foss-silicon_manufacturer-elce2008/embedded-openexpo.mgp @@ -0,0 +1,485 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +How to do Embedded Linux [not] right + +%center +%size 4 +by + +Harald Welte + +netfilter.org / openmoko.org / openpcd.org +gpl-violations.org / openezx.org +hmw-consulting.de / viatech.com + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Introduction + +Why am I qualified? + The 'Linux community' POV + Former kernel subsystem maintainer (netfilter/iptables) + Initiator of OpenEZX project + Author of various drivers for embedded hardware + The 'embedded Linux done the rigth way' POV + Lead System Architect (SW+HW) at Openmoko, Inc. + Co-creator of Open Hardware + Software for RFID + OpenPCD, OpenPICC, librfid, libmrtd + The 'chip manufacturer' POV + Open Source Liaison at VIA Technologies, Inc. + The 'customer of consumer-grade embedded Linux' POV + Done reverse-engineering on hundreds of devices for gpl-violations.org + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Linux is everywhere! + +%image "linux_netfilter_singapore_entertainment.jpg" + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Linux is everywhere + +Linux is everywhere! + Linux mobile phones (Motorola, Openmoko) + In-flight entertainment systems + Embedded networking gear + DSLAMs + rack monitoring + Public payphones + ATM's / PoS / vending machines + Now even Fitness gear (Daum Ergometer) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [0/4] + + +What are the true strengths of FOSS + Innovative and creative development + Security due to code review / bugreport / patches + Long-term maintainable code + Stable and reliable systems + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [1/4] + + +Innovative and creative development + easy-to-read existing codebase + standard (FOSS) development tools + thus, easy to modify and add features + community will build around great new features/apps + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [2/4] + + +Security due to code review / bugreport / patches + all the code is out there + many people are familiar with existing architecture + code quality requirements usually very high + community process allows quick and fast integration of bugfix + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [3/4] + + +Long-term maintainable code, because + there's a lot of attention on good software architecture + many developers are familiar with the shared/common API's + code quality requirements usually very high + all code in mainline gets maintained and updated + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Strengths of FOSS [4/4] + + +Stable and reliable systems, because + code quality requirements usually very high + kernel releases are quite frequent + all mainline code is automatically ported to new releases + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Reality Check + + + So we should have the perfect world + tons of embedded Linux products + all of them maitainable, secure, stable + encouraging lots of creative work on top of their codebase + + What is the reality + tons of embedded Linux products + none of the strengths of FOSS present in 99% of them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the PC world, I can + download the latest kernel from kernel.org + compile + install it on almost every current+old platform + have an almost 100% chance that it will boot and support all the major peripherals + only some more obscure hardware might not have drivers yet + update at any time to the latest 2.6.x.y maintenance release + update at any time to the next 2.6.(x+1) release + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the PC world, I can + take about any major Linux distribution, based on my own preference + install and run that very distribution on about any hardware + distribution kernels are very close to mainline these days + benefit of regular security updates by distributions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the Embedded world + every CPU/SoC maker runs their own kernel tree + often one kenrel tree per product, based on different mainline versions + ages-old base revisions + a neverending security nightmare + no benefit from recent new features in mainline + non-standard subsystems (e.g. different USB device or SDIO stack) + proprietary drivers cause lock-in to old kernels + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + +Differences to Linux on a PC + In the Embedded world + I often do not have a choice of which distro to run + There might actually be no distribution + No regular security updates + Often no package management for deploying those updates + If there are distributions, they either need to use the kernel from the BSP (which is ages old) or creare yet another custom off-mainline branch/port + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Differences to PC Linux + + + + +%center +THIS SUCKS! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +So what do the embedded vendors get? + unstable software + security nightmares + unmaintainable code + no innovation + no user-contributed bug fixes + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +unstable software + because the code really sucks in many cases + because they patch around problems rather than solving them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +security nightmares + because they use stoneage forks of the kernel + because they never contributed their code mainline + because those forks can never be merged back with mainline again + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +unmaintainable code + because they have one fork of the code per device (product) + because their code quality sucks + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the vendor get + + +no innovation + because they try to hide their code (gpl-violations.org) + because their R&D environment is non-standard + weird cross-toolchains that nobody has seen before + weird filesystems with custom patches that nobody knows + because they add proprietary components to lock developers from adding features + e.g. the entire web-based UI for embedded networking gear + binary-only kernel modules that force people to use old kernels with no interesting new features + because it is, overall, way too hard to develop on/for their platform + because they don't disclose serial console and/or JTAG access + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Reality Check + + +So why do they still do it? + there can only be one conclusion: + they never understood the real potential of FOSS! + all they do is try to compete with what proprietary competitors do + they never think about creating platforms, every product is distinct/separate + they have no interest in improving their products + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +What does the community get + + +So what does the community get? + products that run some crappy fork of Linux somewhere under the hood + but which we cannot really touch/modify without a lot of effort + we face opposition from the product maker if we want to help him to improve + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (devica maker) + + +What should the device vendor do? + stop thinking in terms of selling black boxes + defining products that take advantage of the true strength of FOSS + compete against the proprietary competition on a level that they can't match + give up the idea of defining all aspects of an appliance + rather think of building an extensible platforms and let community innovate + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +A note to chip vendors + + +There are two types of customers + The Linux-aware customer + understands FOSS much better than you do + will share the criticism of this talk + will likely go to a competitor who understands Linux better + The Linux-unaware customer + who just uses Linux to save per-unilt OS royalties + who doesn't really care about most issues presented here + who will create inferior products + Linux-awareness is increasing, not decreasing + now is already late, but if you don't have proper FOSS support on your agenda now, you will likely loose the "openness competition" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (chip maker) + + +What should the chip vendors do? + engange in "sustainable development" + develop against latest mainline + make your development trees public (use git!), don't just release stable snapshots as BSP to your tier-one customers + actively interact with the community + learn how to play by the rules (coding style, use common interfaces, no proprietary drivers) + don't just do big code drops every now and then + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (chip maker) + + +What should the chip vendors do? + Externally + Don't mistake FOSS as just a technology. It is a R&D philosophy! + Provide public reference manuals with no NDA + If you have to resort to NDA, make sure they are FOSS friendly + Ensure you don't license IP cores that conflict with FOSS + Internally + Draft a proper in-house FOSS strategy with clear goals + Don't expect your product mangers or engineers to know everything about FOSS without proper training + Hire people with strong community background into your R&D and managemnt to facilitate the know-how transfer + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + + Chip Product Managers need to learn + There's more Linux use with their chips than they ever learn + Their customers are not just the tier-one customers + If you want to support Linux, do it the mainline way. If you support only N number of distributions, your 'N' will be growing and you'll be wasting R&D resources to support each one of them + That there is no single 'contact window' / entity for Linux + The big change is the FOSS development model, not the Linux API's + Linux-aware customers care not only about performance+price, but also about the quality of the Linux port code + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + + BSP R&D Managers need to learn + Linux is not just a set of API's for their developers to learn + Linux is FOSS. The FOSS R&D model is different + Their engineers need to be encouraged to communicate + and thus, need real internet (git, mailing lists, ..) + have to get clear indication what is confidential and what not + FOSS is about cooperation. You don't need to reinvent the wheel + don't include your own 802.11 stack in your wifi driver + If you do not merge your code mainline, you end up in a maintenance nightmare + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Lessons Learnt (chip maker) + + + BSP Software Engineers need to learn + Linux is not just a set of API's + How and where to ask the right kind of questions + How and where to look for the latest code + Code is written to be read by other people, not just to execute + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +TODO (community) + +What should the community do + Provide non-partisan documentation + on FOSS advantages, proper FOSS development + hardware companies are intrested to learn, but don't know who to ask. If they ask a commercial distributor, then they get in bed with them, which is not the same as working with the mainline development community + Something like a mentoring program + take software/driver R&D by their hand and walk them through the mainline merge + Don't scare them away + They have to be taught about the communication / review culture + Your valid criticism to patches has to be explained + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Problems (chipmaker) + + Patent licensing schemes + e.g. MPEG patent license doesn't at all work in a FOSS model + Technology licensing schemes + e.g. Sony Memorystick. Impossible for a chip maker to provide FOSS driver + Everyone in the industry has those very same problems + Chip makers should cooperate to present their case together to the respective licensors + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Problems (chipmaker) + + Patent trolls + openly accessible documentation invites patent trolls + Why? + patent trolls rarely read+understand FOSS code + thus, open documentation increases the risk to be hit + However + this is a by-product of how the patent system currently works + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Outlook + +Outlook + We will see even more embedded Linux, e.g. Mobile phones + We will see even more restricted devices (Tivo-ization, DRM for code) + which go on _very_ thin ice even with GPLv2 + which almost completely remove all freedoms of FOSS + We have some faint dim light at the end of a very far tunnel + e.g. projects like Openmoko, who truly see openness as a feature + e.g. chip makers who slowly open up a bit more + on the PC side, Intel defiitely is setting the best overall example + on the Embedded side, I see some movement in major players (TI, Marvell, Samsung, Infineon, ...) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to do Embedded Linux [not] right +Thanks + + Thanks for your attention. + + Some Time left for Q&A + + Enjoy the NLUUG + CELF ELCE 2008 diff --git a/2008/foss-silicon_manufacturer-elce2008/linux_netfilter_singapore_entertainment.jpg b/2008/foss-silicon_manufacturer-elce2008/linux_netfilter_singapore_entertainment.jpg new file mode 100644 index 0000000..91b839f Binary files /dev/null and b/2008/foss-silicon_manufacturer-elce2008/linux_netfilter_singapore_entertainment.jpg differ diff --git a/2008/gnufiish-fossin/big/x800_application_processor.jpg b/2008/gnufiish-fossin/big/x800_application_processor.jpg new file mode 100644 index 0000000..a29c244 Binary files /dev/null and b/2008/gnufiish-fossin/big/x800_application_processor.jpg differ diff --git a/2008/gnufiish-fossin/big/x800_backside_nobat_nocover.jpg b/2008/gnufiish-fossin/big/x800_backside_nobat_nocover.jpg new file mode 100644 index 0000000..9ff1148 Binary files /dev/null and b/2008/gnufiish-fossin/big/x800_backside_nobat_nocover.jpg differ diff --git a/2008/gnufiish-fossin/big/x800_backside_with_lcm.jpg b/2008/gnufiish-fossin/big/x800_backside_with_lcm.jpg new file mode 100644 index 0000000..f790de2 Binary files /dev/null and b/2008/gnufiish-fossin/big/x800_backside_with_lcm.jpg differ diff --git a/2008/gnufiish-fossin/big/x800_hsdpa_modem.jpg b/2008/gnufiish-fossin/big/x800_hsdpa_modem.jpg new file mode 100644 index 0000000..12be211 Binary files /dev/null and b/2008/gnufiish-fossin/big/x800_hsdpa_modem.jpg differ diff --git a/2008/gnufiish-fossin/big/x800_mainboard_with_shielding.jpg b/2008/gnufiish-fossin/big/x800_mainboard_with_shielding.jpg new file mode 100644 index 0000000..222f688 Binary files /dev/null and b/2008/gnufiish-fossin/big/x800_mainboard_with_shielding.jpg differ diff --git a/2008/gnufiish-fossin/big/x800_opening_the_case.jpg b/2008/gnufiish-fossin/big/x800_opening_the_case.jpg new file mode 100644 index 0000000..4ec5518 Binary files /dev/null and b/2008/gnufiish-fossin/big/x800_opening_the_case.jpg differ diff --git a/2008/gnufiish-fossin/gnufiish-fossin.mgp b/2008/gnufiish-fossin/gnufiish-fossin.mgp new file mode 100644 index 0000000..bb57e45 --- /dev/null +++ b/2008/gnufiish-fossin/gnufiish-fossin.mgp @@ -0,0 +1,541 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + +Reverse Engineering +and +Porting Linux +to a +Windows Mobile PDA Phone + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Introduction + + +My involvement in Linux on mobile phones + 2003/2004: gpl-violations.org / Motorola A780 + 2004: Started OpenEZX for A780 (now E680, A1200, E6, ...) + 06/2006-11/2007: Lead System Architect at Openmoko, Inc. + 10/2008: Started the 'gnufiish' project + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Introduction + + +Linux on mobile phones + is hardly something new + Vendors have been doing this since 2003, e.g. + Motorola EZX + (A760, A768, A780, E680, A1200, E6, ...) + Motorola MAGX + (ROKR2v8, ...) + lots of unknown Chinese vendors (E28, Haier, ..) + however, no 'really open' devices + proprietary UI libraries + proprietary kernel extensions + often no full source code + cryptographically locked down + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Openmoko + + +Linux on mobile phones + Openmoko is many things + the hardware + GTA01 (Neo 1973) + GTA02 (Neo FreeRunner) + the various UI's + One GTK+ based) + One is a mixture of Qtopia, GTK+ and e17 + One is FSO + e17 based + the distribution (based on Openembedded) + the company (Openmoko, Inc.) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Openmoko + + +Why I'm not working on/for/with Openmoko hardware? + + Not true, I still contribute to Openmoko :) + Linux kernel port is quite complete and stable + Hardware has its limits + GPRS-only (no EDGE, UMTS, HSDPA) + quite big and heavy + no option for keyboard + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Community based projects + + +Linux mobile phone community ports + + The vendor ships WM or other OS, community replaces it + xda-developers.com community + mostly focused on HTC devices + way too little developers fro too many devices + hardware product cycles getting shorter / faster + many new devices based on completely undocumented chipsets + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Community based projects + + +Linux mobile phone community ports + + More smaller / fragmented projects + Most based on the fact that somebody bought the device and started osme hacking + Most are stuck + either in a quite early stage (kernel boots, not many drivers) + or advanced but hardware already end-of-life + Conclusion: + We need a new project with more prospect for success + Needs to be stable and full-feature while hardware still available + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Community based projects + + +Linux mobile phone community ports + + What if you want to start from scratch? + choose hardware that is as documented as possible + choose hardware where most peripherals have drivers + choose hardware that has good support in mainline Linux + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Community based projects + + +How to find such a Linux-friendly device? + + Look at hardware details of available devices + Use Google to find out what hardware they use + Use FCC database to get PCB photographs + Look at WM firmware images (registry/...) + At some point you buy one and take it apart + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Linux-friendly hardware + + +The E-TEN glofiish device family + + various devices with different parameters + screen full-VGA or QVGA + EDGE-only, UMTS or HSDPA + keyboard or no keyboard + GPS or no GPS + Wifi or no Wifi + application processor is always the same (S3C2442) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Linux-friendly hardware + +I went through this process + I found the E-TEN glofiish devices + They are very similar to Openmoko + Samsung S3C2442 SoC MCP with NAND+SDRAM + TD028TTEC1 full-VGA LCM + Other hardware parts reasonably supported/known + Marvell 8686/libertas WiFi (SPI attached) + SiRF GPS (UART attached) + CSR Bluetooth (UART attached) + Only some unknown parts + CPLD for power management and kbd matrix + Ericsson GSM Modem (AT commandset documented!) + Cameras (I don't really care) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Project gnufiish + + +Project 'gnufiish' + Port Linux to the E-TEN glofiish devices + Initially to the M800 and X800 + Almost all glofiish have very similar hardware + Openmoko merges all my patches in their kernel! + Official inclusion to Openmoko distribution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Project gnufiish + +gnufiish Status + Kernel (2.6.24/2.6.27) booted on _first attempt_ + Working + I2C host controller + I2C communication to CPLD and FM Radio + USB Device mode (Ethernet gadget) + Touchscreen input + LCM Framebuffer + LCM Backlight control + GPS and Bluetooth power control + GPIO buttons + In the works + Audio Codec driver (50% done) + GSM Modem (SPI) driver (80% done) + M800 Keyboard + Capsense driver (25% done) + SPI glue to libertas WiFi driver (70% done) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +HOWTO + +How was this done? + Various reverse engineering techniques + Take actual board apart, note major components + Use HaRET (hardwar reverse engineering tool) + Find + use JTAG testpads + Find + use serial console + Disassemble WinMobile drivers + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Take hardware apart + +Opening the case and void your warranty +%image "x800_backside_nobat_nocover.jpg" +Note the convenient test pads beneath the battery + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Take hardware apart + +Opening the case +%image "x800_opening_the_case.jpg" 800x600 +If you have a bit of experience in taking apart devices, you can do that without any damage... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Take hardware apart + +The Mainboard with all its shielding covers +%image "x800_mainboard_with_shielding.jpg" 800x600 +Obvoiusly, the shielding needs to go + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Take hardware apart + +The application processor section +%image "x800_application_processor.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Take hardware apart + +The HSDPA modem section +%image "x800_hsdpa_modem.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Take hardware apart + +The backside +%image "x800_backside_with_lcm.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +JTAG pins + + Find + use JTAG testpads + JTAG is basically a long shift register + Input, Output, Clock (TDI, TDO, TCK) + Therefore, you can try to shift data in and check if/where it comes out + Automatized JTAG search by project "jtagfinder" by Hunz (German CCC member) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +JTAG pins + +Find + use JTAG testpads +%image "x800_dbgconn_closeup.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +JTAG pins + +Find + use JTAG testpads +%image "x800_debcon_pcb.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +JTAG pins + +Find + use JTAG testpads +%image "x800_jtagfinder_probes.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +JTAG pins + +Find + use JTAG testpads +%image "x800_jtagfinder.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +JTAG pins + + +Found JTAG pins + Chain 1 + Samsung S3C2442 Application Processor + Has standard ARM JTAG ICE + Chain 2 + CPLD programming interface + Remaining work + find the nTRST and nSRST pins + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Serial console + + +How to find the serial console + Just run some code that you think writes to it + Use a Scope to find typical patterns of a serial port + I haven't actually done (or needed) this on the glofiish yet, but on many other devices + RxD pin is harder to find, just trial+error usually works as soon as you have some interactive prompt that echo's the characters you write + Don't forget to add level shifter from 3.3/5V to RS232 levels + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +What's HaRET + +What is HaRET + a Windows executable program for any WinCE based OS + offers a control interface on a TCP port + connect to it using haretconsole (python script) on Linux PC + supports a number of popular ARM based SoC (PXA, S3C, MSM) + features include + GPIO state and tracing + MMIO read/write + virtual/physical memory mapping + IRQ tracing (by redirecting IRQ vectors) + load Linux into ram and boot it from within WinCE + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Using HaRET + +Using HaRET + run the program on the target device + connect to it using haretconsole over USB-Ethernet + read GPIO configuration + Create GPIO funciton map based on SoC data sheet + watch for GPIO changes + remove the signal from the noise + exclude unitneresting and frequently changing GPIOs + watch for GPIO changes while performing certain events + press every button and check + start/stop peripherals + insert/eject SD card + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Using HaRET + + +Using HARET + watch for IRQ changes/events + e.g. you see DMA3 interrupts while talking to the GSM + read MMIO config of DMA controller to determine user: SPI + read SPI controller configuration + DMA controller configuration + find RAM address of data buffers read/written by DMA + haretconsole writes logfiles + you can start to annotate the logfiles + of course, all of this could be done using JTAG, too. + but with HaRET, you mostly don't need it!!! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Disassembling WinCE drivers + + +Disassmbling WinCE drivers + is the obvious thing to do, right? + is actually not all that easy, since + WinCE doesn't allow you to read the DLLs + not via ActiveSync neither WinCE filesystem API's + Apparently, they are pre-linked and not real files anymore + luckily, there are tools in the 'ROM cooking' scene + hundreds of different tools, almost all need Windows PC + therefore, not useful to me + conclusion: Need to understand the ROM image format + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Disassembling WinCE ROM files + +Disassembling WinCE ROM files + 'datextract' to extract different portions like OS image + 'x520.pl' to remove spare NAND OOB sectors from image and get a file + split resulting image in bootsplash, cabarchive and disk image + 'xx1.pl' to split cabarchive into CAB files + 'partextract' to split disk image in partitions + 'SRPX2XIP.exe' (wine) to decompress XPRS compressed partition0+1 + 'dumpxip.pl' to dump/recreate files in partition0 and 1 + 'ImgfsToDump.exe' to dump/recreate files in partition2 (imagefs) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Disassembling WinCE Drivers + + +Disassembling WinCE Drivers + Now we finally have the re-created DLL's with the drivers + Use your favourite debugger/disassembler to take them apart + I'm a big fan of IDA (Interactive Disassembler) + The only proprietary software that I license+use in 15 years + There's actually a Linux x86 version + Was even using it with qemu on my Powerbook some years back + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Disassembling WinCE Drivers + +Important drivers + pwrbtn.dll: the power button ?!? + spkphn.dll: high-level device management + i2c.dll: S3C24xx I2C controller driver + spi.dll: The GSM Modem SPI driver + Sergsm.dll: S3C24xx UART driver, NOT for GSM + SerialCSR.dll: CSR Bluetooth driver + fm_si4700.dll: The FM Radio (I2C) + battdrvr.dll: Battery device (I2C) + keypad.dll: Keypad+Keyboard+Capsense (I2C) + GSPI8686.dll: Marvell WiFi driver (SPI) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Disassembling WinCE Drivers + +Disassembling WinCE drivers + Is typically hard, they're completely stripped + Windows drivers are very data-driven, not many symbols/functions + However, debug statements left by developers are always helpful + After some time you get used to it + You know your hardware and the IO register bases + take it from there, look at register configuration + What I've learned about WinCE driver development + ... would be an entirely separate talk + MSDN luckily has full API documentation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +WinCE Registry + + +WinCE has a registry, too + I never really understood what this registry is all about, but it doesn't matter ;) + You can use 'synce-registry' to dump it to Linux + Contains important information about + how drivers are interconnected + various configuration parameters of drivers + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Links + + + + http://wiki.openezx.org/Glofiish_X800 + http://git.openezx.org/?p=gnufiish.git + http://eten-users.eu/ + http://wiki.xda-developers.com/ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Reverse Engineering and Porting Linux to a WM PDA Phone +Thanks + + +Thanks to + Openmoko, Inc. for trying to create more open phones + Hunz for his jtagfinder + xda-developers.org for all their work on WinCE tools + eten-users.eu for the various ETEN related ROM cooking projects + Willem Jan Hengeveld (itsme) for his M700 ROM tools + An undisclosed Indian Company for showing commercial interest in this project + Samsung, for having 100% open source driver for their SoC's + Ericsson, for publishing the full AT command set for their modems + diff --git a/2008/gnufiish-fossin/gnufiish-fossin.pdf b/2008/gnufiish-fossin/gnufiish-fossin.pdf new file mode 100644 index 0000000..7575caa Binary files /dev/null and b/2008/gnufiish-fossin/gnufiish-fossin.pdf differ diff --git a/2008/gnufiish-fossin/x800_application_processor.jpg b/2008/gnufiish-fossin/x800_application_processor.jpg new file mode 100644 index 0000000..2d5fafb Binary files /dev/null and b/2008/gnufiish-fossin/x800_application_processor.jpg differ diff --git a/2008/gnufiish-fossin/x800_backside_nobat_nocover.jpg b/2008/gnufiish-fossin/x800_backside_nobat_nocover.jpg new file mode 100644 index 0000000..18267c5 Binary files /dev/null and b/2008/gnufiish-fossin/x800_backside_nobat_nocover.jpg differ diff --git a/2008/gnufiish-fossin/x800_backside_with_lcm.jpg b/2008/gnufiish-fossin/x800_backside_with_lcm.jpg new file mode 100644 index 0000000..74a4371 Binary files /dev/null and b/2008/gnufiish-fossin/x800_backside_with_lcm.jpg differ diff --git a/2008/gnufiish-fossin/x800_dbgconn_closeup.jpg b/2008/gnufiish-fossin/x800_dbgconn_closeup.jpg new file mode 100644 index 0000000..112d8f8 Binary files /dev/null and b/2008/gnufiish-fossin/x800_dbgconn_closeup.jpg differ diff --git a/2008/gnufiish-fossin/x800_debcon_pcb.jpg b/2008/gnufiish-fossin/x800_debcon_pcb.jpg new file mode 100644 index 0000000..87a6bbd Binary files /dev/null and b/2008/gnufiish-fossin/x800_debcon_pcb.jpg differ diff --git a/2008/gnufiish-fossin/x800_factorytest.jpg b/2008/gnufiish-fossin/x800_factorytest.jpg new file mode 100644 index 0000000..9447b3a Binary files /dev/null and b/2008/gnufiish-fossin/x800_factorytest.jpg differ diff --git a/2008/gnufiish-fossin/x800_hsdpa_modem.jpg b/2008/gnufiish-fossin/x800_hsdpa_modem.jpg new file mode 100644 index 0000000..2612957 Binary files /dev/null and b/2008/gnufiish-fossin/x800_hsdpa_modem.jpg differ diff --git a/2008/gnufiish-fossin/x800_jtagfinder.jpg b/2008/gnufiish-fossin/x800_jtagfinder.jpg new file mode 100644 index 0000000..e790d4d Binary files /dev/null and b/2008/gnufiish-fossin/x800_jtagfinder.jpg differ diff --git a/2008/gnufiish-fossin/x800_jtagfinder_probes.jpg b/2008/gnufiish-fossin/x800_jtagfinder_probes.jpg new file mode 100644 index 0000000..370e215 Binary files /dev/null and b/2008/gnufiish-fossin/x800_jtagfinder_probes.jpg differ diff --git a/2008/gnufiish-fossin/x800_mainboard_with_shielding.jpg b/2008/gnufiish-fossin/x800_mainboard_with_shielding.jpg new file mode 100644 index 0000000..4630dce Binary files /dev/null and b/2008/gnufiish-fossin/x800_mainboard_with_shielding.jpg differ diff --git a/2008/gnufiish-fossin/x800_opening_the_case.jpg b/2008/gnufiish-fossin/x800_opening_the_case.jpg new file mode 100644 index 0000000..f2b46d6 Binary files /dev/null and b/2008/gnufiish-fossin/x800_opening_the_case.jpg differ diff --git a/2008/gnufiish-fossin/x800_usbdownload.jpg b/2008/gnufiish-fossin/x800_usbdownload.jpg new file mode 100644 index 0000000..74228a4 Binary files /dev/null and b/2008/gnufiish-fossin/x800_usbdownload.jpg differ diff --git a/2008/gsm-ccc2008/1.jpg b/2008/gsm-ccc2008/1.jpg new file mode 100644 index 0000000..b03b57b Binary files /dev/null and b/2008/gsm-ccc2008/1.jpg differ diff --git a/2008/gsm-ccc2008/1_small.jpg b/2008/gsm-ccc2008/1_small.jpg new file mode 100644 index 0000000..602b830 Binary files /dev/null and b/2008/gsm-ccc2008/1_small.jpg differ diff --git a/2008/gsm-ccc2008/2.jpg b/2008/gsm-ccc2008/2.jpg new file mode 100644 index 0000000..8a3ac86 Binary files /dev/null and b/2008/gsm-ccc2008/2.jpg differ diff --git a/2008/gsm-ccc2008/2_small.jpg b/2008/gsm-ccc2008/2_small.jpg new file mode 100644 index 0000000..5ea0930 Binary files /dev/null and b/2008/gsm-ccc2008/2_small.jpg differ diff --git a/2008/gsm-ccc2008/3.jpg b/2008/gsm-ccc2008/3.jpg new file mode 100644 index 0000000..40569a6 Binary files /dev/null and b/2008/gsm-ccc2008/3.jpg differ diff --git a/2008/gsm-ccc2008/3_small.jpg b/2008/gsm-ccc2008/3_small.jpg new file mode 100644 index 0000000..669719f Binary files /dev/null and b/2008/gsm-ccc2008/3_small.jpg differ diff --git a/2008/gsm-ccc2008/4_small.jpg b/2008/gsm-ccc2008/4_small.jpg new file mode 100644 index 0000000..b15d3aa Binary files /dev/null and b/2008/gsm-ccc2008/4_small.jpg differ diff --git a/2008/gsm-ccc2008/BS11_Init.GIF b/2008/gsm-ccc2008/BS11_Init.GIF new file mode 100755 index 0000000..bca506e Binary files /dev/null and b/2008/gsm-ccc2008/BS11_Init.GIF differ diff --git a/2008/gsm-ccc2008/P1010010-a.JPG b/2008/gsm-ccc2008/P1010010-a.JPG new file mode 100755 index 0000000..ded8aee Binary files /dev/null and b/2008/gsm-ccc2008/P1010010-a.JPG differ diff --git a/2008/gsm-ccc2008/bs11-presentation.txt b/2008/gsm-ccc2008/bs11-presentation.txt new file mode 100644 index 0000000..fc2d732 --- /dev/null +++ b/2008/gsm-ccc2008/bs11-presentation.txt @@ -0,0 +1,78 @@ +* why? +** security research +** demonstration of known theoretical problems +** publci awareness about GSM [in]security + +* legal disclaimer +** don't try this at home +** ownership of devices: ok, operation: not ok, licensed spectrum +** test licenses by Bundesnetzagentur + +* introduction to gsm network architecture +** MS, BTS, BSC, MSC, HLR, VLR +** "ISDN on steroids" (q.921 / q.931 as base for call control) +** intelligence in the network, not the terminal +** bit-synchronous network, like SDH +** A-bis as interface between BTS and BSC + +* more details about A-bis interface +** functional split BTS / BSC +** low-level A-bis (timeslots / sub-slots) +** A-bis protocol in GSM specs (04.08, 12.21, 08.58) +*** Page 10, 08.58 +** structure of voice data in TRAU frames + +* Introducing the BS-11 +** features (1-2 TRX, 30mW-2W, GSM900) +** 2 E1 interface (1 to BSC, 1 for daisy-chaining) +** BS11 documentation +*** documentation under NDA, not available publicly +*** 99% of A-bis protocol in GSM specs (04.08, 12.21, 08.58) +** photographs (big picture, connector panel, internal overview) +** serial port for LMT, proprietary software +*** needed commands (TX power, timeslot for RSL/OML, TEI) + + +* first steps with BS-11 +** bought BS-11 on eBay (now 74 units) +** A-bis protocol analyzer +** Helpful anonymous person helped us with +*** A-bis traces between Siemens BSC +*** Wandel+Goltermann MA-10 protocol analyzer + +* BS11-Init (09/2008) +** ChipCologne HFC-E1 reference code for DOS +** polling, no interrupts +** ported to Windows and Linux (mmap of E1 to userspace) +** proof-of-concept code based on challenge-response + +* from BS11-Init to OpenBSC (12/2008) +** get Layer2 to work (mISDN mainline doesn't deal with multiple SAPIs and fixed TEIs) +** learn how to use new sockets-based mISDN API +** send and receive first OML packets +** come up with event-driven architecture, single select loop, no threads, ... +** 25C3: add libdbi/sqlite database backend for "HLR" +** 25C3: get paging to work, support for configurable network ID +** 25C3: debugging/stabilization with > 1000 test users ;) +** 25C3: IMSI+IMEI skimming + +* other FOSS projects related to GSM +** OpenBTS +** gssm / gsm-tvoid / gsmsp + +* availability of BS-11 +** remember: you need a HFC-E1, and shipping of 48kg +** import/ownership restrictions at your place of residence! + +* short demo (10-15min) +** IMSI/IMEI snooping +** ringtone demonstration + +* links +** OpenBSC http://openbsc.gnumonks.org +** toast +** 3GPP (http://www.3gpp.org/) / ETSI (http://www.etsi.org/) +** Goeller homepage (http://www2.informatik.hu-berlin.de/~goeller) +** THC Wiki (http://wiki.thc.org/gsm) +** OpenBTS (http://openbts.sourceforge.net/) + gnuradio wiki +** Harald's branch of gsm-tvoid, etc (git://git.gnumonks.org/gsm.git) diff --git a/2008/gsm-ccc2008/gsm-ccc2008.mgp b/2008/gsm-ccc2008/gsm-ccc2008.mgp new file mode 100644 index 0000000..9fd769a --- /dev/null +++ b/2008/gsm-ccc2008/gsm-ccc2008.mgp @@ -0,0 +1,414 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + +Running +Your own +GSM Network + +%center +%size 4 +by + +Harald Welte +Dieter Spaar + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Why? + + +Why would you run your own GSM network? + For the same reason you might run other networks + To learn and experiment with technology + To boldly go where no [free] man has gone before ;) + Practical demonstration of known GSM security problems + Raise public awareness abut GSM [in]security + thus increase the incentive for the market to improve + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Legal Disclaimer + + +Legal Disclaimer + Don't try this at home! + GSM operates on LICENSED spectrum + Thus, you need approval from the regulatory authority + Only use BTS with dummy load! + Don't interfere with the operators! + Our software is strictly for research purpose only + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Network Architecture + + +The Hitchhikers Guide to the GSM Network + unfortunately does not exist + +The GSM related literature + is typically too high-level + +The GSM protocol specifications + are publicly available but _very_ comprehensive (1,108 PDFs, 414MByte) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Network Architecture + +GSM is a bit-synchronous network + it draws many analogies from ISDN and SDN + layer 2 modelled after Q.921 / LAPD + call signalling modelled Q.931 + but: many more protocols for mobility management, radio resources, ... + like all traditional Telco protocols: Intelligence in the network, not in the end nodes. + +GSM is a TDMA "nightmare" + e.g. you never know from/for whom data is without the timing context + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Network Architecture + +MS + Mobile Station (your Phone) +BTS + Base Transceiver Station +BSC + Base Station Controller +MSC + Mobile Switching Center +HLR/VLR + Home/Visitor Location Register + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Base Transceiver Station + +BTS + As the name indicates "transceiver" + Handles + Layer 1 and some parts of RF layer2 + Modulation/Demodulation + Time Multiplex, scheduling of frames + Is not a "Base Station", i.e. not self-contained + True 'slave' to the BSC + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Base Station Controller + + +BSC + Base Station Controller + Handles + most of the actual decision making + really controls most aspects of BTSs + handles intra-BSC cell handover + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Mobile Switching Center + + +MSC + Mobile Switching Center + Handles + Actual switching of the calls + Interworking with ISDN or POTS + Inter-BSC cell handover +HLR/VLR + Home/Visitor Location Register + Handles + database of local / roaming subscribers + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM A-bis interface + + +BSC <-> BTS Interface + is called A-bis + has the following control layers on E1 TS1 + L2ML (Layer 2 Management) + TEI management similar to ISDN + OML (Organization & Maintenance) + System parameters, events + RSL (Radio Subsystem Layer) + has encoded voice data (TRAU frames) on other E1 TS + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM A-bis interface + +%image "2_small.jpg" + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM A-bis interface + +%image "3_small.jpg" + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM A-bis interface + + +Abis RSL + contains messages for + Radio Link Layer (RLL) + Dedicated Channel (DCHAN) + Common Channel (CCHAN) + Transceiver (TRX) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +GSM Mobile Switching Center + + +Abis RSL Radio Link Layer + contains messages for + Call Control (CC) + Mobility Management (MM) + Radio Resource (RR) + Short Message Service (SMS) + mostly specified in GSM TS 04.08 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + + +Siemens BS-11 microBTS + plain old 2G (GSM voice calls, CSD) + one or two TRX, 30mW to 2W each, GSM900 + two E1 interfaces (for daisy-chaining) + documentation under NDA, but + 99.9% of the A-bis protocol available from GSM specs + See TS 04.08 (RLL), 12.21 (OML), 08.58 (RSL) + RS232 serial port for Local Maintenance Terminal + LMT software proprietary under NDA + not needed for operation of the BTS + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + +%image "1_small.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + +%image "p1010012_small.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + +%image "p1010013_small.jpg" +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + +%image "p1010020_small.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + + +First steps with the Siemens BS-11 + Harald bought a BS-11 on e-Bay in 2006 + Started to read some specs (08.5x) about A-bis + Started to build cables for E1 and power + Bought HFC-E1 PCI card + Bought Elmi EGM35 Abis analyzer (e-Bay once again) + Contacted with other people who also bought BS-11 + Found somebody who could provide Abis traces + Never really had time due to Openmoko and other projects + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +The Siemens BS-11 microBTS + + +Further steps with the Siemens BS-11 + Dieter bought a BS-11 09/2008 + Bought HFC-E1 PCI card + Started development based on HFC-E1 reference driver code + Found somebody who could provide Abis traces + Made very quick progress + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +BS11-Init + + +BS11-Init (09/2008) + Chip cologne HFC-E1 reference code for DOS + polling, no interrupts + ported to Windows and Linux (mmap of HFC registers to userspace) + proof-of-concept code based on challenge-response + handles TEI assignment, brings OML and RSL up + allows for location update and paging of single phone + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +BS11-Init + +%image "4_small.jpg" + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +From BS11-Init to OpenBSC + + +From BS11-Init to OpenBSC (12/2008) + get L2ML to work with mISDN + mainline mISDN doesn't deal with multiple SAPIs and fixed TEI + learn how new sockets-based mISDN API works + come up with event-driven architecture, single sleect loop, no threads, ... + At 25C3: + add libdbi/sqlite database for "HLR" + get paging to work, support for configurable network ID + debugging + stabilization with > 1000 test users ;) + IMSI + IMEI skimming + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Work at 25C3 + + +IMSI+IMEI skimming + very simple: + phones with automatic network selection pick strongest network + they send LOCATION UPDATE REQUEST + we send IDENTITY REQUEST IMSI + IMEISV + they send IMSI + IMEISV + we store this in the databasa + and then send LOCATION UPDATE REJECT + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Work at 25C3 + + +Mobile Originated Call + once a MS is registered, we can + dial a number from the MS + allocate and establish a TCH/F + deal with the Signalling and get into Connect + unfortunately, code for handling voice streams not finished + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Work at 25C3 + + +Mobile Originated SMS + once a MS is registered, we can + send a SMS + parse + acknowledge SMS PDU data + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Work at 25C3 + + +The Egypt simulation + apparently GPS is illegal in mobile phones in Egypt + "Egypt detection" implemented by checking if any surrounding cells are with Egypt country code + phones don't even have to register to our BTS! + so if we claim to be e.g. MobiNil, phones will shut off their GPS + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Other GSM related FOSS + + +Other GSM related FOSS + OpenBTS + 100% Software Defined Radio bsed on USRP + gnuradio + implements entire RF+layer1/2/3 and interfacing to SIP/Asterisk + much more than just a BTS!! + some code overlap with OpenBSC + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Links + + OpenBSC + http://openbsc.gnumonks.org/ + 3GPP / ETSI GSM Specs + http://www.3gpp.org/ + Priv-Doz. Dr.-Ing Joachim Goeller + http://www2.informatik.hu-berlin.de/~goeller + THC GSM Wiki + http://wiki.thc.org/gsm + OpenBTS + http://gnuradio.org/trac/wiki/OpenBTS + Harald's branch of gsm-tvoid, etc + git://git.gnumonks.org/gsm.git + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Thanks + + +Thanks to + zecke, alphaone, Stefan for their work on OpenBSC + W. for his extensive A-bis protocol traces and MA-10 + all the voluntary testers at 25C3 + Karsten Keil for mISDN + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Running Your Own GSM Network +Thanks + + +LIVE DEMO diff --git a/2008/gsm-ccc2008/gsm-ccc2008.pdf b/2008/gsm-ccc2008/gsm-ccc2008.pdf new file mode 100644 index 0000000..96ea5f7 Binary files /dev/null and b/2008/gsm-ccc2008/gsm-ccc2008.pdf differ diff --git a/2008/gsm-ccc2008/networks.tab b/2008/gsm-ccc2008/networks.tab new file mode 100644 index 0000000..0f31f48 --- /dev/null +++ b/2008/gsm-ccc2008/networks.tab @@ -0,0 +1,2075 @@ +% encoded in UTF-8 +% taken from http://en.wikipedia.org/wiki/Mobile_Network_Code + +# ISO Country +AF Afghanistan +# MCC MNC Brand Operator Status Bands Notes + 412 01 AWCC Afghan Wireless Communication Company Operational GSM 900 / GSM 1800 [1] + 412 20 Roshan Telecom Development Company Afghanistan Ltd. Operational GSM 900 + 412 40 Areeba MTN Afghanistan Operational GSM 900 / GSM 1800 + 412 50 Etisalat Etisalat Afghanistan Operational GSM 900 / GSM 1800 + +# ISO Country +AL Albania +# MCC MNC Brand Operator Status Bands Notes + 276 01 AMC Albanian Mobile Communications Operational GSM 900 / GSM 1800 [2] + 276 02 Vodafone Vodafone Albania Operational GSM 900 / GSM 1800 + 276 03 Eagle Mobile Eagle Mobile Operational GSM 900 / GSM 1800 + +# ISO Country +DZ Algeria +# MCC MNC Brand Operator Status Bands Notes + 603 01 Mobilis ATM Mobilis Operational GSM 900 [3] + 603 02 Djezzy Orascom Telecom Algerie Spa Operational GSM 900 / GSM 1800 + 603 03 Nedjma Wataniya Telecom Algerie Operational GSM 900 / GSM 1800 + +# ISO Country +AD Andorra +# MCC MNC Brand Operator Status Bands Notes + 213 03 Mobiland Servei De Tele. DAndorra Operational GSM 900 [4] + +# ISO Country +AO Angola +# MCC MNC Brand Operator Status Bands Notes + 631 02 UNITEL UNITEL S.a.r.l. Operational GSM 900 / GSM 1800 [5] + +# ISO Country +AI Anguilla (United Kingdom) +# MCC MNC Brand Operator Status Bands Notes + 365 010 Weblinks Limited Operational Unknown + +# ISO Country +AG Antigua and Barbuda +# MCC MNC Brand Operator Status Bands Notes + 344 030 APUA Antigua Public Utilities Authority Operational GSM 1900 [6] + 344 920 bmobile Cable & Wireless Caribbean Cellular (Antigua) Limited Operational GSM 850 + 344 930 Digicel Antigua Wireless Ventures Limited Operational GSM 900 + +# ISO Country +AR Argentina +# MCC MNC Brand Operator Status Bands Notes + 722 010 Movistar Telefonica Móviles Argentina SA Operational GSM 850 / GSM 1900 + 722 020 Nextel NII Holdings Operational iDEN 800 + 722 34 Personal Telecom Personal SA Operational GSM 850 / GSM 1900 + 722 070 Movistar Telefonica Móviles Argentina SA Operational GSM 1900 [7] + 722 310 Claro AMX Argentina S.A Operational GSM 1900 + 722 320 Claro AMX Argentina S.A Operational GSM 850 / GSM 1900 + 722 330 Claro AMX Argentina S.A Operational GSM 850 / GSM 1900 + 722 350 Hutchinson (PORT HABLE) Unknown GSM 900 + +# ISO Country +AM Armenia +# MCC MNC Brand Operator Status Bands Notes + 283 01 Beeline ArmenTel Operational GSM 900 / GSM 1800 UMTS 2100 is planned [8] + 283 05 VivaCell-MTS K Telecom CJSC Operational GSM 900 / GSM 1800 + +# ISO Country +AW Aruba (Kingdom of the Netherlands) +# MCC MNC Brand Operator Status Bands Notes + 363 01 SETAR SETAR (Servicio di Telecomunicacion di Aruba) Operational GSM 900 / GSM 1900 / TDMA 800 + 363 20 Digicell Operational GSM 900 / GSM 1800 + +# ISO Country +AU Australia +# MCC MNC Brand Operator Status Bands Notes + 505 01 Telstra Operational UMTS 850 / GSM 900 / GSM 1800 [9] + 505 02 YES OPTUS Singtel Optus Ltd Operational GSM 900 / GSM 1800 / UMTS 2100 + 505 03 Vodafone Operational GSM 900 / GSM 1800 / UMTS 2100 + 505 04 Department of Defence Operational Unknown + 505 05 Ozitel Not operational Unknown + 505 06 3 Hutchison 3G Operational UMTS 2100 + 505 07 Vodafone Not operational Unknown + 505 08 One. Tel Not operational Unknown + 505 09 Airnet Not operational Unknown + 505 11 Telstra Not operational Unknown + 505 12 3 Hutchison 3G Not operational Unknown + 505 14 AAPT Not operational Unknown + 505 15 3GIS Not operational Unknown + 505 38 Crazy John's MVNO GSM 900 / GSM 1800 / UMTS 2100 + 505 24 Advanced Communications Technologies Not operational Unknown + 505 71 Telstra Not operational Unknown + 505 72 Telstra Not operational Unknown + 505 88 Localstar Not operational Globalstar Satellite + 505 90 YES OPTUS Singtel Optus Ltd Operational Unknown + 505 99 One. Tel Not operational GSM 1800 + +# ISO Country +AT Austria +# MCC MNC Brand Operator Status Bands Notes + 232 01 A1 Mobilkom Austria Operational GSM 900 / GSM 1800 / UMTS 2100 + 232 03 T-Mobile T-Mobile Austria Operational GSM 900 / GSM 1800 / UMTS 2100 + 232 05 Orange Orange Austria Operational GSM 900 / GSM 1800 / UMTS 2100 former One + 232 07 T-Mobile T-Mobile Austria Operational GSM 1800 + 232 10 3 Hutchison 3G Operational UMTS 2100 + +# ISO Country +AZ Azerbaijan +# MCC MNC Brand Operator Status Bands Notes + 400 01 Azercell Operational GSM 900 / GSM 1800 [10] + 400 02 Bakcell Operational GSM 900 / GSM 1800 + 400 03 FONEX CATEL LLC Operational CDMA + 400 04 Nar Mobile Azerfon Operational GSM 900 / GSM 1800 + +# ISO Country +BS Bahamas +# MCC MNC Brand Operator Status Bands Notes + 364 390 BaTelCo The Bahamas Telecommunications Company Ltd Operational [11] + +# ISO Country +BH Bahrain +# MCC MNC Brand Operator Status Bands Notes + 426 01 Batelco Operational Unknown + 426 02 MTC-VFBH Operational Unknown + +# ISO Country +BD Bangladesh +# MCC MNC Brand Operator Status Bands Notes + 470 01 Grameenphone GrameenPhone Ltd Operational GSM 900 + 470 02 Aktel Operational GSM 900 / GSM 1800 + 470 03 Banglalink Orascom Telecom Bangladesh Limited Operational GSM 900 + 470 04 TeleTalk Operational GSM 900 + 470 06 Citycell Operational CDMA + 470 07 Warid Warid Telecom Operational GSM 1800 + +# ISO Country +BB Barbados +# MCC MNC Brand Operator Status Bands Notes + 342 600 bmobile Cable & Wireless Barbados Ltd. Operational GSM 900 [12] + 342 750 Digicel Digicel (Jamaica) Limited Operational GSM 900 / GSM 1800 + 342 820 Sunbeach Communications Reserved Unknown + +# ISO Country +BY Belarus +# MCC MNC Brand Operator Status Bands Notes + 257 01 Velcom Operational GSM 900 / GSM 1800 + 257 02 MTS JLLC Mobile TeleSystems Operational GSM 900 / GSM 1800 + 257 04 life:) Belarussian Telecommunications Network Operational GSM 900 / GSM 1800 +% 257 ? BelCel Operational CDMA 450 + +# ISO Country +BE Belgium +# MCC MNC Brand Operator Status Bands Notes + 206 01 Proximus Belgacom Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + 206 10 Mobistar Operational GSM 900 / GSM 1800 / UMTS 2100 + 206 20 BASE Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +BZ Belize +# MCC MNC Brand Operator Status Bands Notes + 702 67 Belize Telemedia Operational GSM 1900 + 702 68 International Telecommunications Ltd. Operational Unknown +% 702 ?? Smart Operational CDMA + +# ISO Country +BM Bermuda +# MCC MNC Brand Operator Status Bands Notes + 350 01 Digicel Bermuda Telecommunications (Bermuda & West Indies) Ltd Operational GSM 1900 + 350 02 Mobility M3 Wireless Operational GSM 1900 + 310 38 Digicel Operational GSM 1900 +% 310 ?? Cellular One Operational CDMA + +# ISO Country +BJ Benin +# MCC MNC Brand Operator Status Bands Notes + 616 00 BBCOM Bell Benin Communications Operational GSM 900 [13] + 616 01 Libercom Operational Unknown + 616 02 Telecel Telecel Benin Ltd Operational GSM 900 + 616 03 Areeba Spacetel Benin Operational GSM 900 Former BeninCell + +# ISO Country +BT Bhutan +# MCC MNC Brand Operator Status Bands Notes + 402 11 B-Mobile B-Mobile Operational GSM 900 + 402 77 TashiCell Tashi InfoComm Limited Operational GSM 900 / GSM 1800 + +# ISO Country +BO Bolivia +# MCC MNC Brand Operator Status Bands Notes + 736 01 Nuevatel Nuevatel PCS De Bolivia SA Operational GSM 1900 [14] + 736 02 Entel Entel SA Operational GSM 1900 + 736 03 Tigo Telefonica Celular De Bolivia S.A Operational GSM 850 Aka. Telecel Bolivia + +# ISO Country +BA Bosnia and Herzegovina +# MCC MNC Brand Operator Status Bands Notes + 218 03 ERONET Public Enterprise Croatian Telecom Ltd. Operational GSM 900 [15] + 218 05 m:tel RS Telecommunications JSC Banja Luka Operational GSM 900 / GSM 1800 + 218 90 BH Mobile BH Telecom Operational GSM 900 / GSM 1800 + +# ISO Country +BW Botswana +# MCC MNC Brand Operator Status Bands Notes + 652 01 Mascom Mascom Wireless (Pty) Limited Operational GSM 900 [16] + 652 02 Orange Orange (Botswana) Pty Limited Operational GSM 900 + 652 04 BTC Mobile Botswana Telecommunications Corporation Operational GSM 900 / GSM 1800 [17] + +# ISO Country +BR Brazil +# MCC MNC Brand Operator Status Bands Notes + 724 02 TIM Telecom Italia Mobile Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 [18] + 724 03 TIM Telecom Italia Mobile Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 + 724 04 TIM Telecom Italia Mobile Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 + 724 05 Claro Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 + 724 06 Vivo Operational GSM 850 / UMTS 850 / UMTS 2100 + 724 07 CTBC Celular CTBC Telecom Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 + 724 08 TIM Telecom Italia Mobile Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 + 724 10 Vivo Operational GSM 850 / UMTS 850 / UMTS 2100 + 724 11 Vivo Operational GSM 850 / UMTS 850 / UMTS 2100 + 724 15 Sercomtel Sercomtel Celular Operational GSM 900 / GSM 1800 + 724 16 Brasil Telecom Brasil Telecom Celular SA Operational GSM 1800 / UMTS 2100 + 724 23 Vivo Operational GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 + 724 24 Amazonia Celular Operational GSM 900 / GSM 1800 [19] + 724 31 TNL PCS TNL PCS Operational GSM 1800 / UMTS 2100 Oi + 724 32 CTBC Cellular CTBC Celular S.A. Operational + 724 33 CTBC Cellular CTBC Celular S.A. Operational + 724 34 CTBC Cellular CTBC Celular S.A. Operational + 724 37 æiou Planned GSM 1800 Former: Unicel Telecomunicações + +# ISO Country +VG British Virgin Islands (United Kingdom) +# MCC MNC Brand Operator Status Bands Notes + 348 170 Cable & Wireless Cable & Wireless (West Indies) Operational GSM 850 + 348 570 Caribbean Cellular Telephone Operational GSM 900 / GSM 1900 + +# ISO Country +BN Brunei +# MCC MNC Brand Operator Status Bands Notes + 528 01 Jabatan Telekom Unknown Unknown + 528 02 B-Mobile B-Mobile Communications Sdn Bhd Operational UMTS 2100 [20] + 528 11 DTSCom DataStream Technology Operational GSM 900 + +# ISO Country +BG Bulgaria +# MCC MNC Brand Operator Status Bands Notes + 284 01 M-Tel Mobiltel Operational GSM 900 / GSM 1800 / UMTS 2100 + 284 03 Vivatel BTC Operational GSM 900 / GSM 1800 / UMTS 2100 + 284 05 GLOBUL Cosmo Bulgaria Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +BF Burkina Faso +# MCC MNC Brand Operator Status Bands Notes + 613 01 Onatel Operational GSM 900 [21] + 613 02 Zain Celtel Burkina Faso Operational GSM 900 [22] + 613 03 Telecel Faso Telecel Faso SA Operational GSM 900 + +# ISO Country +BI Burundi +# MCC MNC Brand Operator Status Bands Notes + 642 01 Spacetel Econet Wireless Burundi PLC Operational GSM 900 [23] + 642 02 Africell Africell PLC Operational GSM 900 Was Safaris + 642 03 Telecel Telecel Burundi Company Operational GSM 900 +% 642 ? Onatel Planned GSM 900 +% 642 ? LACELL SU Planned GSM 1800 + +# ISO Country +HK Cambodia +# MCC MNC Brand Operator Status Bands Notes + 456 01 Mobitel CamGSM Operational GSM 900 / UMTS 2100 + 456 02 hello Telekom Malaysia International (Cambodia) Co. Ltd Operational GSM 900 + 456 03 S Telecom Reserved CDMA + 456 04 qb Cambodia Advance Communications Co. Ltd Operational GSM 1800 / UMTS 2100 + 456 05 Star-Cell APPLIFONE CO. LTD. Operational GSM 1800 + 456 18 Camshin / Shinawatra Operational Unknown +% 456 ? Excell Operational CDMA +% 456 ? Latelz Co., Ltd Reserved GSM 1800 +% 456 ? Beeline Sotelco Ltd. (Beeline-KH) Reserved GSM 900 / GSM 1800 + +# ISO Country +CM Cameroon +# MCC MNC Brand Operator Status Bands Notes + 624 01 MTN Cameroon Mobile Telephone Network Cameroon Ltd Operational GSM 900 [24] + 624 02 Orange Orange Cameroun S.A. Operational GSM 900 + +# ISO Country +CA Canada +# MCC MNC Brand Operator Status Bands Notes + 302 360 Telus Mobility Operational CDMA + 302 361 Telus Mobility Operational CDMA + 302 370 Fido Microcell Telecommunications Inc (Fido) Operational GSM 1900 [25] + 302 620 ICE Wireless Operational GSM 1900 + 302 651 Bell Mobility Operational CDMA + 302 652 BC Tel Mobility Operational Unknown + 302 653 Telus Mobility Operational CDMA + 302 654 Sask Tel Mobility Operational Unknown + 302 655 MTS Mobility Operational CDMA + 302 656 Tbay Mobility Operational Unknown + 302 657 Telus (Quebec) Mobility Operational CDMA + 302 701 MB Tel Mobility Operational Unknown + 302 702 MT&T Mobility Operational Unknown + 302 703 New Tel Mobility Operational Unknown + 302 710 Globalstar Operational Unknown + 302 720 Rogers Wireless Operational GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 +% 302 ? FIRST FIRST Networks Operations Inc Operational GSM 850 March 2008 +% 302 ? DMTS Dryden Mobility Planned GSM 850 + +# ISO Country +CV Cape Verde +# MCC MNC Brand Operator Status Bands Notes + 625 01 CVMOVEL CVMovel, S.A. Operational GSM 900 / GSM 1800 + +# ISO Country +KY Cayman Islands (United Kingdom) +# MCC MNC Brand Operator Status Bands Notes + 346 140 Cable & Wireless Cable & Wireless (Cayman Islands) Limited Operational GSM 850 / GSM 1900 [26] + 338 050 Digicel Digicel Cayman Ltd. Operational GSM 900 / GSM 1800 + +# ISO Country +CF Central African Republic +# MCC MNC Brand Operator Status Bands Notes + 623 01 CTP Centrafrique Telecom Plus Operational GSM 900 [27] + 623 02 TC Telecel Centrafrique Operational GSM 900 + 623 03 Orange Orange RCA Planned GSM 1800 + 623 04 Nationlink Nationlink Telecom RCA Operational GSM 900 + +# ISO Country +TD Chad +# MCC MNC Brand Operator Status Bands Notes + 622 01 Zain CelTel Tchad SA Operational GSM 900 [28] + 622 02 Tchad Mobile Operational Unknown + 622 03 TIGO - Millicom Operational GSM 900 + 622 02 TAWALI Operational CDMA + +# ISO Country +CL Chile +# MCC MNC Brand Operator Status Bands Notes + 730 01 Entel Entel Pcs Operational GSM 1900 / HSDPA 1900 [29] + 730 02 movistar Movistar Chile Operational GSM 850 / GSM 1900 / CDMA 800 / TDMA 800 / HSDPA 850 + 730 03 Claro Claro Chile Operational GSM 1900 / CDMA 1900 / UMTS 1900 + 730 10 Entel Entel Telefonica Movil Operational GSM 1900 / HSDPA 1900 + +# ISO Country +CN China +# MCC MNC Brand Operator Status Bands Notes + 460 00 China Mobile Operational GSM 900 / GSM 1800 + 460 01 China Unicom Operational GSM 900 / UMTS 2100 CDMA network sold to China Telecom, UMTS is not officially launched but a few towers are up and functioning + 460 02 China Mobile Operational TD-SCDMA 2010 + 460 06 (unknown) Operational UMTS 2100 (new entrant?) So far only a few towers in and around Shanghai + +# ISO Country +CO Colombia +# MCC MNC Brand Operator Status Bands Notes + 732 001 Colombia Telecomunicaciones S.A. - Telecom Operational Unknown + 732 002 Edatel Edatel S.A. Operational Unknown + 732 101 Comcel Comcel Colombia Operational GSM 850 / GSM 1900 + 732 102 movistar Bellsouth Colombia Operational GSM 850 / GSM 1900 / CDMA 850 + 732 103 Tigo Colombia Móvil Operational GSM 1900 + 732 111 Tigo Colombia Móvil Operational GSM 1900 + 732 123 movistar Telefónica Móviles Colombia Operational GSM 850 / GSM 1900 / CDMA 850 + +# ISO Country +KM Comoros +# MCC MNC Brand Operator Status Bands Notes + 654 01 HURI - SNPT Operational Unknown + +# ISO Country +CG Republic of the Congo +# MCC MNC Brand Operator Status Bands Notes + 629 01 Zain Celtel Congo Operational Unknown Former Celtel brand [30] + 629 10 Libertis Telecom MTN CONGO S.A Operational GSM 900 +% 629 ? African Telecoms Operational Unknown +% 629 ? Congolaise Wireless Operational Unknown + +# ISO Country +CK Cook Islands (New Zealand) +# MCC MNC Brand Operator Status Bands Notes + 548 01 Telecom Cook Operational GSM 900 + +# ISO Country +CR Costa Rica +# MCC MNC Brand Operator Status Bands Notes + 712 01 ICE Instituto Costarricense de Electricidad Operational GSM 1800 + 712 02 ICE Instituto Costarricense de Electricidad Operational GSM 1800 + 712 03 ICE Grupo ICE Planned UMTS 850 + +# ISO Country +HR Croatia +# MCC MNC Brand Operator Status Bands Notes + 219 01 T-Mobile T-Mobile Croatia Operational GSM 900 / UMTS 2100 + 219 02 Tele2 Operational GSM 1800 + 219 10 VIPnet Operational GSM 900 / UMTS 2100 + +# ISO Country +CU Cuba +# MCC MNC Brand Operator Status Bands Notes + 368 01 ETECSA Empresa de Telecomunicaciones de Cuba, SA Operational GSM 900 [31] + +# ISO Country +CY Cyprus +# MCC MNC Brand Operator Status Bands Notes + 280 01 Cytamobile-Vodafone Cyprus Telecommunications Auth Operational GSM 900 / GSM 1800 + 280 10 MTN Areeba Ltd Operational GSM 900 / GSM 1800 + +# ISO Country +CZ Czech Republic +# MCC MNC Brand Operator Status Bands Notes + 230 01 T-Mobile T-Mobile Czech Republic Operational GSM 900 / GSM 1800 / UMTS 2100 + 230 02 EUROTEL PRAHA Telefónica O2 Czech Republic Operational CDMA 450 / GSM 900 / GSM 1800 / UMTS 2100 + 230 03 OSKAR Vodafone Czech Republic Operational GSM 900 / GSM 1800 + 230 04 U:fon MobilKom, a. s. Operational CDMA 410 - 430 + 230 98 S\u017dDC s.o. Operational GSM-R 900 + 230 99 Vodafone Czech Republic a.s., R&D Centre at FEE, CTU Operational Unknown + +# ISO Country +CD Democratic Republic of the Congo +# MCC MNC Brand Operator Status Bands Notes + 630 01 Vodacom Vodacom Congo RDC sprl Operational GSM 900 / GSM 1800 [32] + 630 02 Zain Celtel Congo Operational GSM 900 [33] + 630 04 Cellco Unknown Unknown + 630 05 Supercell Supercell SPRL Operational GSM 900 / GSM 1800 + 630 86 CCT Congo-Chine Telecom s.a.r.l. Operational GSM 900 / GSM 1800 + 630 89 SAIT Telecom OASIS SPRL Operational GSM 1800 +% 630 ? Africell Africell RDC sprl Reserved GSM 900 + +# ISO Country +DK Denmark +# MCC MNC Brand Operator Status Bands Notes + 238 01 TDC TDC A/S Operational GSM 900 / GSM 1800 / UMTS 2100 [34] + 238 02 Sonofon Telenor Operational GSM 900 / GSM 1800 / UMTS 2100 + 238 03 MIGway A/S Reserved Unknown + 238 06 3 Hi3G Denmark ApS Operational UMTS 2100 + 238 07 Barablu Mobile Ltd. Reserved Unknown + 238 10 TDC TDC A/S Operational Unknown + 238 20 Telia Operational Unknown + 238 30 Telia Telia Nãttjänster Norden AB Operational GSM 900 / GSM 1800 + 238 77 Sonofon Telenor Operational GSM 900 / GSM 1800 + +# ISO Country +DJ Djibouti +# MCC MNC Brand Operator Status Bands Notes + 638 01 Evatis Djibouti Telecom SA Operational GSM 900 [35] + +# ISO Country +DM Dominica +# MCC MNC Brand Operator Status Bands Notes + 366 020 Digicel Unknown GSM 900 / GSM 1800 /GSM 1900 + 366 110 Cable & Wireless Unknown GSM 850 + +# ISO Country +DO Dominican Republic +# MCC MNC Brand Operator Status Bands Notes + 370 01 Orange Orange Dominicana Operational GSM 1800 / GSM 1900 / GSM 900 + 370 02 Claro Compañía Dominicana de Teléfonos, C por Operational CDMA2000 1900 / GSM 850 / GSM 1900 / UMTS 850 + 370 03 Tricom S.A. Operational AMPS 850 / CDMA2000 1900 + 370 04 ViVa Centennial Dominicana Operational CDMA2000 1900 / GSM 1900 + +# ISO Country +TL East Timor +# MCC MNC Brand Operator Status Bands Notes + 514 02 Timor Telecom Operational GSM 900 [36] [37] + +# ISO Country +EC Ecuador +# MCC MNC Brand Operator Status Bands Notes + 740 00 Movistar Otecel S.A. Operational CDMA 850 / GSM 850 Former BellSouth + 740 01 Porta América Móvil Operational GSM 850 + 740 02 Alegro Telecsa S.A. Operational CDMA 1900 + +# ISO Country +EG Egypt +# MCC MNC Brand Operator Status Bands Notes + 602 01 Mobinil ECMS-Mobinil Operational GSM 900 / GSM 1800 / UMTS 2100 + 602 02 Vodafone Vodafone Egypt Operational GSM 900/ GSM 1800 / UMTS 2100 + 602 03 Etisalat Etisalat Egypt Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +SV El Salvador +# MCC MNC Brand Operator Status Bands Notes + 706 01 CTE Telecom Personal CTE Telecom Personal SA de CV Operational GSM 1900 + 706 02 digicel Digicel Group Operational GSM 900 + 706 03 Telemovil EL Salvador Telemovil EL Salvador S.A Operational GSM 850 Tigo / Millicom + 706 04 movistar Telefónica Móviles El Salvador Operational CDMA 850 / GSM 850 + 706 10 Claro América Móvil Operational GSM 1900 / UMTS 1900 + +# ISO Country +GQ Equatorial Guinea +# MCC MNC Brand Operator Status Bands Notes + 627 01 Orange GQ GETESA Operational GSM 900 + +# ISO Country +ER Eritrea +# MCC MNC Brand Operator Status Bands Notes + 657 01 Eritel Eritrea Telecommunications Services Corporation Operational GSM 900 [38] + +# ISO Country +EE Estonia +# MCC MNC Brand Operator Status Bands Notes + 248 01 EMT Estonian Mobile Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 + 248 02 Elisa Elisa Eesti Operational GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 + 248 03 Tele 2 Tele 2 Eesti Operational GSM 900 / GSM 1800 + 248 04 OY Top Connect Unknown Unknown + 248 05 AS Bravocom Mobiil Unknown Unknown + 248 06 OY ViaTel Unknown UMTS 2100 + +# ISO Country +ET Ethiopia +# MCC MNC Brand Operator Status Bands Notes + 636 01 ETMTN Ethiopian Telecommunications Corporation Operational GSM 900 + +# ISO Country +FO Faroe Islands (Denmark) +# MCC MNC Brand Operator Status Bands Notes + 288 01 Faroese Telecom Faroese Telecom Operational GSM 900 [39] + 288 02 Vodafone Vodafone Faroe Islands Operational GSM 900 Former Kall + +# ISO Country +FJ Fiji +# MCC MNC Brand Operator Status Bands Notes + 542 01 Vodafone Operational GSM 900 / UMTS 2100 + +# ISO Country +FI Finland +# MCC MNC Brand Operator Status Bands Notes + 244 03 DNA DNA Oy Operational GSM 1800 Former Telia + 244 05 Elisa Elisa Oyj Operational GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 Former Radiolinja + 244 10 TDC Oy Unknown Unknown + 244 12 DNA DNA Oy Operational GSM 900 / GSM 1800 / UMTS 2100 [40] + 244 14 AMT Ålands Mobiltelefon Operational GSM 900 + 244 21 Saunalahti Elisa Oyj Operational Internal MVNO of Elisa Oyj Former Saunalahti Group Oyj + 244 29 Scnl Truphone Unknown Unknown + 244 91 Sonera TeliaSonera Finland Oyj Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +FR France +# MCC MNC Brand Operator Status Bands Notes + 208 00 Orange Operational GSM 900 / GSM 1800 / UMTS 2100 [41] + 208 01 France Telecom Mobile France Orange Operational GSM 900 / GSM 1800 / UMTS 2100 + 208 02 Orange Operational GSM 900 / GSM 1800 / UMTS 2100 + 208 05 Globalstar Europe Operational Satellite + 208 06 Globalstar Europe Operational Satellite + 208 07 Globalstar Europe Operational Satellite + 208 10 SFR Operational GSM 900 / GSM 1800 / UMTS 2100 + 208 11 SFR Operational UMTS 2100 UMTS + 208 13 SFR Operational Unknown Zones Blanches + 208 20 Bouygues Bouygues Telecom Operational GSM 900 / GSM 1800 + 208 21 Bouygues Bouygues Telecom Operational GSM 900 / GSM 1800 + 208 88 Bouygues Bouygues Telecom Operational Unknown Zones Blanches + +# ISO Country +PF French Polynesia (France) +# MCC MNC Brand Operator Status Bands Notes + 547 20 VINI Tikiphone SA Operational GSM 900 + +# ISO Country +GQ Gabon +# MCC MNC Brand Operator Status Bands Notes + 628 01 Libertis Libertis S.A. Operational GSM 900 + 628 02 Moov (Telecel) Gabon S.A. Operational GSM 900 + 628 03 Zain Celtel Gabon S.A. Operational GSM 900 [42] + +# ISO Country +GM Gambia +# MCC MNC Brand Operator Status Bands Notes + 607 01 Gamcel Operational Unknown + 607 02 Africel Operational Unknown + +# ISO Country +GE Georgia +# MCC MNC Brand Operator Status Bands Notes + 282 01 Geocell Geocell Limited Operational GSM 900 / GSM 1800 / UMTS 2100 [43] + 282 02 Magti Magticom GSM Operational GSM 900 / GSM 1800 / UMTS 2100 + 282 03 Iberiatel Iberiatel Ltd. Operational CDMA 450 + 282 04 Beeline Mobitel LLC Operational GSM 1800 + 289 67 Aquafon Operational GSM Abkhazia region only + 289 88 A-Mobile Operational GSM Abkhazia region only + +# ISO Country +DE Germany +# MCC MNC Brand Operator Status Bands Notes + 262 01 T-Mobile T-Mobile Deutschland GmbH Operational GSM 900 / GSM 1800 / UMTS 2100 D1 - DeTe Mobil + 262 02 Vodafone Vodafone D2 GmbH Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 03 E-Plus E-Plus Mobilfunk Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 04 Vodafone Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 05 E-Plus E-Plus Mobilfunk Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 06 T-Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 07 O2 O2 (Germany) GmbH & Co. OHG Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 08 O2 Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 09 Vodafone Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 10 Arcor AG & Co Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 11 O2 Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 12 Dolphin Telecom Not operational GSM 900 / GSM 1800 / UMTS 2100 + 262 13 Mobilcom Multimedia Not operational GSM 900 / GSM 1800 / UMTS 2100 + 262 14 Group 3G UMTS Not operational GSM 900 / GSM 1800 / UMTS 2100 + 262 15 Airdata Operational GSM 900 / GSM 1800 / UMTS 2100 + 262 16 vistream Operational Unknown MVNE + 262 60 DB Telematik Operational GSM-R 900 + 262 76 Siemens AG Operational GSM 900 + 262 77 E-Plus Operational GSM 900 + 262 901 Debitel Operational + +# ISO Country +GH Ghana +# MCC MNC Brand Operator Status Bands Notes + 620 01 MTN ScanCom Ltd Operational GSM 900 / GSM 1800 [44] + 620 02 Ghana Telecom Mobile Ghana Telecommunications Company Ltd Operational GSM 900 / GSM 1800 Onetouch + 620 03 tiGO Millicom Ghana Limited Operational GSM 900 / GSM 1800 + 620 04 Kasapa / Hutchison Telecom Operational CDMA + +# ISO Country +GI Gibraltar (United Kingdom) +# MCC MNC Brand Operator Status Bands Notes + 266 01 GibTel Gibraltar Telecoms Operational GSM 900 + +# ISO Country +GR Greece +# MCC MNC Brand Operator Status Bands Notes + 202 01 Cosmote COSMOTE - Mobile Telecommunications S.A. Operational GSM 900 / GSM 1800 / UMTS 2100 [45] + 202 05 Vodafone Vodafone Greece Operational GSM 900 / GSM 1800 / UMTS 2100 + 202 09 Wind Wind Hellas Telecommunications S.A. Operational GSM 1800 Q-telecom Discontinued, merged in 202 10 + 202 10 Wind Wind Hellas Telecommunications S.A. Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +GL Greenland (Denmark) +# MCC MNC Brand Operator Status Bands Notes + 290 01 TELE Greenland A/S Operational GSM 900 [46] + +# ISO Country +GD Grenada +# MCC MNC Brand Operator Status Bands Notes + 352 030 Digicel Digicel Grenada Ltd. Operational GSM 900 / GSM 1800 [47] + 352 110 Cable & Wireless Cable & Wireless Grenada Ltd. Operational GSM 850 + +# ISO Country +GP Guadeloupe (France) +# MCC MNC Brand Operator Status Bands Notes + 340 01 Orange Orange Caraïbe Mobiles Operational GSM 900 [48] + 340 02 Outremer Outremer Telecom Operational GSM 900 / GSM 1800 + 340 03 Telcell Saint Martin et Saint Barthelemy Telcell Sarl Operational GSM 900 / GSM 1800 + 340 08 MIO GSM Dauphin Telecom Operational GSM 900 / GSM 1800 + 340 20 Digicel DIGICEL Antilles Française Guyane Operational GSM 900 Former Bouygues Telecom Caraïbes + +# ISO Country +GU Guam (United States of America) +# MCC MNC Brand Operator Status Bands Notes + 310 032 IT&E Wireless IT&E Overseas, Inc Operational CDMA 1900 GSM 1900 planned [49] + 310 033 Guam Telephone Authority Unknown Unknown + 310 140 mPulse GTA Wireless Operational GSM 850 / GSM 1900 + 310 370 Guamcell Guam Cellular & Paging Inc Operational CDMA 850 + 311 250 i CAN_GSM Wave Runner LLC Not operational GSM 1900 Planned + 310 470 Guamcell Guam Cellular & Paging Inc Operational GSM 1900 / UMTS 850 Formerly HafaTEL. The UMTS 850 service is planned. + +# ISO Country +GT Guatemala +# MCC MNC Brand Operator Status Bands Notes + 704 01 Claro Servicios de Comunicaciones Personales Inalambricas (SERCOM) Operational CDMA 1900 / GSM 900 / GSM 1900 / UMTS 1900 + 704 02 Comcel / Tigo Millicom / Local partners Operational GSM 850 / TDMA 800 / UMTS 850 + 704 03 movistar Telefonica Móviles Guatemala (Telefónica) Operational CDMA 1900 / GSM 1900 +% 704 ? digicel Digicel Group Planned GSM 900 + +# ISO Country +GN Guinea +# MCC MNC Brand Operator Status Bands Notes + 611 01 Spacetel Operational Unknown + 611 02 Lagui Sotelgui Lagui Operational GSM 900 + 611 03 Telecel Guinee INTERCEL Guinée Operational GSM 900 + 611 04 MTN Areeba Guinea Operational GSM 900 / GSM 1800 + +# ISO Country +GW Guinea-Bissau +# MCC MNC Brand Operator Status Bands Notes + 632 02 Areeba Spacetel Guiné-Bissau S.A. Operational GSM 900 [50] + +# ISO Country +GY Guyana +# MCC MNC Brand Operator Status Bands Notes + 738 01 Digicel U-Mobile (Cellular) Inc. Operational GSM 900 + +# ISO Country +HT Haiti +# MCC MNC Brand Operator Status Bands Notes + 372 010 Comcel / Voila Operational GSM 850 + 338 050 Digicel Operational GSM 1800 + +# ISO Country +HN Honduras +# MCC MNC Brand Operator Status Bands Notes + 708 01 Claro Servicios de Comunicaciones de Honduras S.A. de C.V. Operational GSM 1900 + 708 02 Celtel / Tigo Operational CDMA2000 850 / GSM 850 + 708 30 Hondutel Operational GSM 1900 + +# ISO Country +HK Hong Kong (People's Republic of China) +# MCC MNC Brand Operator Status Bands Notes + 454 00 CSL Hong Kong CSL Limited Operational GSM 900 / GSM 1800 + 454 01 CITIC Telecom 1616 Operational GSM 900 / GSM 1800 MVNO + 454 02 CSL 3G Hong Kong CSL Limited Operational UMTS 2100 + 454 03 3 (3G) Hutchison Telecom Operational UMTS 2100 + 454 04 3 DualBand (2G) Hutchison Telecom Operational GSM 900 / GSM 1800 + 454 05 3 CDMA Hutchison Telecom Not Operational CDMA 800 Decommissioned on 19 November 2008 11:59pm + 454 06 Smartone-Vodafone SmarTone Mobile Comms Operational GSM 900 / GSM 1800 / UMTS 2100 + 454 07 China Unicom Operational GSM 900 / GSM 1800 MVNO + 454 08 Trident Operational GSM 900 / GSM 1800 MVNO + 454 09 China Motion Telecom Operational GSM 900 / GSM 1800 MVNO + 454 10 New World Hong Kong CSL Limited Operational GSM 1800 Joint Venture of CSL and Telecom Digital + 454 11 China-Hongkong Telecom Operational GSM 900 / GSM 1800 MVNO + 454 12 C# MCC Peoples China Mobile Peoples Telephone Company Operational GSM 1800 + 454 14 Hutchison Telecom Not operational GSM 1800 + 454 15 SmarTone Mobile Comms Not operational GSM 1800 + 454 16 PCCW PCCW Mobile (PCCW Ltd) Operational GSM 1800 + 454 17 SmarTone Mobile Comms Not operational GSM 1800 Originally P Plus + 454 18 Hong Kong CSL Limited Not Operational GSM 1800 Originally Pacific Link + 454 19 PCCW PCCW Mobile (PCCW Ltd) Operational UMTS 2100 + 454 29 PCCW PCCW Mobile (PCCW Ltd) Operational CDMA2000 800 1X EVDO Rev A Roamer's Network + +# ISO Country +HU Hungary +# MCC MNC Brand Operator Status Bands Notes + 216 01 Pannon Operational GSM 900 / GSM 1800 / UMTS 2100 + 216 30 T-Mobile Magyar Telekom Plc Operational GSM 900 / GSM 1800 / UMTS 2100 + 216 70 Vodafone Operational GSM 900 / GSM 1800 + +# ISO Country +IS Iceland +# MCC MNC Brand Operator Status Bands Notes + 274 01 Siminn Iceland Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 Former Islandssimi ehf [51] + 274 02 Vodafone Og fjarskipti hf Operational GSM 900 / GSM 1800 Former Islandssimi ehf + 274 03 Vodafone Vodafone Iceland Operational Unknown Former Islandssimi ehf + 274 04 Viking IMC Island ehf Operational GSM 1800 + 274 06 Núll níu ehf Reserved Unknown + 274 07 IceCell IceCell ehf Operational GSM 1800 + 274 08 On-waves Iceland Telecom Operational Unknown On ferries and cruise ships + 274 11 Nova Nova ehf Operational UMTS 2100 + +# ISO Country +IN India +# MCC MNC Brand Operator Status Bands Notes + 404 01 Vodafone - Haryana Vodafone Essar Digilink Limited Operational GSM 900 + 404 02 Airtel - Punjab Bharti Airtel Operational GSM 900 + 404 03 Airtel / Bharti Telenet Operational GSM 900 / GSM 1800 + 404 04 IDEA CELLULAR - Delhi Idea cellular Operational GSM 1800 + 404 05 Vodafone - Gujarat Vodafone Essar Gujarat Limited Operational GSM 900 Hutch / Fascel + 404 06 Airtel Bharti Airtel Operational Unknown + 404 07 TATA Cellular / Idea Cellular Operational GSM 900 + 404 09 Reliance Telecom Private Operational Unknown + 404 10 Airtel Bharti Airtel Operational Unknown + 404 11 Essar / Sterling Cellular Operational Unknown + 404 12 Idea (Escotel) Haryana IDEA Cellular Limited Operational GSM 900 + 404 13 Hutchison Essar South Operational Unknown + 404 14 Spice Telecom - Punjab Spice Communications Operational Unknown + 404 15 Aircell Digilink Essar Cellph. Operational Unknown + 404 20 Vodafone Vodafone Mumbai Operational GSM 900 Formerly Hutchison Maxtouch / Orange / Hutch Mumbai + 404 21 BPL Mobile Mumbai Operational GSM 900 + 404 22 IDEA Cellular - Maharashtra Idea cellular Operational GSM 900 + 404 24 IDEA Cellular - Gujarat Idea cellular Operational GSM 900 + 404 27 BPL USWest Cellular / Cellular Comms Operational Unknown + 404 30 Vodafone - Kolkata Vodafone Essar East Limited Operational GSM 900 + 404 31 Airtel Bharti Airtel Operational Unknown + 404 34 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 36 Reliance Telecom Private Operational Unknown + 404 38 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 40 Airtel Bharti Airtel Operational Unknown + 404 41 RPG MAA Operational Unknown + 404 42 Srinivas Cellcom / Aircel Operational Unknown + 404 43 BPL Mobile Cellular Operational Unknown + 404 44 Spice Telecom - Karnataka Spice Communications Limited Operational GSM 900 + 404 45 Airtel Bharti Airtel Operational Unknown + 404 46 Vodafone Operational Unknown Was BPL Cellular + 404 49 Airtel Bharti Airtel Operational Unknown + 404 50 Reliance Reliance Telecom Private Operational GSM 900 + 404 51 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 52 Reliance Reliance Telecom Private Operational GSM 900 + 404 53 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 54 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 55 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 56 Idea (Escotel) UP West IDEA Cellular Limited Operational GSM 900 + 404 57 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 58 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 59 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 60 Aircell Digilink Operational Unknown + 404 62 BSNL J&K Bharat Sanchar Nigam Limited Operational Unknown + 404 64 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 66 BSNL Maharashtra & Goa Operational GSM 900 + 404 67 Reliance Reliance Telecom Private Operational Unknown + 404 68 MTNL - Delhi Mahanagar Telephone Nigam Ltd Operational GSM 900 + 404 69 MTNL - Mumbai Mahanagar Telephone Nigam Ltd Operational GSM 900 + 404 70 Airtel Bharti Airtel Operational Unknown + 404 71 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 72 BSNL Kerala Bharat Sanchar Nigam Limited Operational GSM 900 + 404 73 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 74 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 75 BSNL Bharat Sanchar Nigam Limited / CellOne Operational Unknown + 404 76 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 77 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 78 BTA Cellcom Operational Unknown + 404 80 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 81 BSNL Bharat Sanchar Nigam Limited Operational Unknown + 404 82 Escorts Escorts Telecom Operational Unknown + 404 83 Reliance Operational Unknown + 404 84 Hutchison Essar South Operational Unknown + 404 85 Reliance Reliance Telecom Private Operational Unknown + 404 86 Hutchinson Essar South Operational Unknown + 404 87 Escorts Telecom Operational Unknown + 404 88 Escorts Telecom Operational Unknown + 404 89 Escorts Telecom Operational Unknown + 404 90 Airtel Maharashtra & Goa Operational Unknown + 404 92 Airtel Mumbai Operational GSM 1800 + 404 93 Airtel Gujrat Operational Unknown + 404 94 Airtel Bharti Airtel Operational Unknown + 404 95 Airtel Bharti Airtel Operational GSM 1800 + 404 96 Airtel - Haryana Bharti Airtel Operational GSM 1800 + 404 97 Airtel Bharti Airtel Operational Unknown + 404 98 Airtel Bharti Airtel Operational Unknown + 405 51 Airtel Bharti Airtel Operational Unknown + 405 52 Airtel Bharti Airtel Operational Unknown + 405 66 Hutch Operational Unknown + +# ISO Country +ID Indonesia +# MCC MNC Brand Operator Status Bands Notes + 510 00 PSN PT Pasifik Satelit Nusantara (ACeS) Operational Satellite + 510 01 INDOSAT PT Indonesian Satellite Corporation Tbk (INDOSAT) Operational GSM 900 / GSM 1800 / UMTS 2100 Formerly PT Satelindo + 510 03 StarOne PT Indosat Operational CDMA 800 + 510 07 TelkomFlexi PT Telkom Operational CDMA 800 + 510 08 AXIS PT Natrindo Telepon Seluler Operational GSM 1800 / UMTS 2100 + 510 09 SMART PT Smart Telecom Operational CDMA 1900 + 510 10 Telkomsel PT Telekomunikasi Selular Operational GSM 900 / GSM 1800 / UMTS 2100 + 510 11 XL PT Excelcomindo Pratama Operational GSM 900 / GSM 1800 / UMTS 2100 + 510 20 TELKOMMobile PT Telkom Unknown GSM 1800 Merged with Telkomsel + 510 21 IM3 PT Indonesian Satellite Corporation Tbk (INDOSAT) Not operational GSM 1800 Merged with Indosat (MNC 01) MNC 21 not used anymore + 510 28 Fren/Hepi PT Mobile-8 Telecom Operational CDMA 800 + 510 89 3 PT Hutchison CP Telecommunications Operational GSM 1800 / UMTS 2100 + 510 99 Esia PT Bakrie Telecom Operational CDMA 800 +% 510 ? Ceria PT Sampoerna Telekomunikasi Indonesia Operational CDMA 450 + +# ISO Country +IR Iran +# MCC MNC Brand Operator Status Bands Notes + 432 11 MCI Mobile Communications Company of Iran Operational GSM 900 / GSM 1800 [52] + 432 14 TKC KFZO Operational GSM 900 + 432 19 MTCE Mobile Telecommunications Company of Esfahan Operational GSM 900 + 432 32 Taliya Operational GSM 900 + 432 35 MTN Irancell Irancell Telecommunications Services Company Operational GSM 900 / GSM 1800 + +# ISO Country +IQ Iraq +# MCC MNC Brand Operator Status Bands Notes + 418 20 Zain IQ Zain Iraq Operational GSM 900 + 418 30 Zain IQ Zain Iraq Operational GSM 900 [53] + 418 50 Asia Cell Asia Cell Telecommunications Company Ltd Operational GSM 900 +% 418 ? Korek Korek Telecom Ltd. Operational GSM 900 +% 418 ? SanaTel Operational GSM 900 +% 418 ? IRAQNA Orascom Telecom Iraq Corporation Operational GSM 900 + +# ISO Country +IE Ireland +# MCC MNC Brand Operator Status Bands Notes + 272 01 Vodafone Vodafone Ireland Operational GSM 900 / GSM 1800 / UMTS 2100 [54] + 272 02 O2 O2 Ireland Operational GSM 900 / GSM 1800 / UMTS 2100 + 272 03 Meteor Operational GSM 900 / GSM 1800 + 272 04 Access Telecom Unknown Unknown + 272 05 3 Hutchison 3G Ireland limited Operational UMTS 2100 + 272 07 Eircom Unknown Unknown + 272 09 Clever Communications Unknown Unknown + +# ISO Country +IL Israel +# MCC MNC Brand Operator Status Bands Notes + 425 01 Orange Partner Communications Company Ltd Operational GSM 1800 / UMTS 2100 [55] + 425 02 Cellcom Operational TDMA 850 / GSM 1800 / UMTS 2100 + 425 03 Pelephone Operational CDMA2000 800 / UMTS 2100 The UMTS network is planned September 2008 + 425 77 Mirs Operational iDEN + +# ISO Country +IT Italy +# MCC MNC Brand Operator Status Bands Notes + 222 01 TIM Telecom Italia SpA Operational GSM 900 / GSM 1800 / UMTS 2100 [56] + 222 02 Elsacom Operational Satellite (Globalstar) + 222 10 Vodafone Vodafone Omnitel N.V. Operational GSM 900 / GSM 1800 / UMTS 2100 + 222 30 RFI Rete Ferroviaria Italiana Operational GSM-R 900 + 222 77 IPSE 2000 Not operational UMTS 2100 Retired + 222 88 Wind Wind Telecomunicazioni SpA Operational GSM 900 / GSM 1800 / UMTS 2100 + 222 98 Blu Not operational GSM 1800 Retired + 222 99 3 Italia Hutchison 3G Operational UMTS 2100 + +# ISO Country +CI Ivory Coast +# MCC MNC Brand Operator Status Bands Notes + 612 01 Cora de Comstar Not operational Unknown + 612 02 Moov Operational GSM 900 / GSM 1800 + 612 03 Orange Operational GSM 900 + 612 04 KoZ Comium Ivory Coast Inc Operational GSM 900 / GSM 1800 + 612 05 MTN Operational GSM 900 + 612 06 ORICEL ORICEL Operational GSM 1800 + +# ISO Country +JM Jamaica +# MCC MNC Brand Operator Status Bands Notes + 338 020 Cable & Wireless Cable & Wireless Operational GSM 1900 + 338 050 Digicel Digicel (Jamaica) Limited Operational GSM 900 / GSM 1800 / CDMA2000 1900 + 338 070 Claro Oceanic Digital Jamaica Limited Operational GSM 850 / GSM 1900 / CDMA 850 + 338 180 Cable & Wireless Cable & Wireless Operational Unknown + +# ISO Country +JP Japan +# MCC MNC Brand Operator Status Bands Notes + 440 00 eMobile eMobile, Ltd. Operational UMTS 1700 + 440 01 DoCoMo NTT DoCoMo Operational UMTS 2100 + 440 02 DoCoMo NTT DoCoMo Kansai Operational UMTS 2100 + 440 03 DoCoMo NTT DoCoMo Hokuriku Operational UNTS 2100 + 440 04 Vodafone Operational UMTS 2100 + 440 06 Vodafone Operational UMTS 2100 + 440 07 KDDI KDDI Corporation Operational CDMA 2000 1X EV-DO Rev.A + 440 08 KDDI KDDI Corporation Operational Unknown + 440 09 DoCoMo NTT DoCoMo Kansai Operational Unknown + 440 10 DoCoMo NTT DoCoMo Kansai Operational UMTS 800 / UMTS 1700 / UMTS 2100 + 440 11 DoCoMo NTT DoCoMo Tokai Operational Unknown + 440 12 DoCoMo NTT DoCoMo Operational Unknown + 440 13 DoCoMo NTT DoCoMo Operational Unknown + 440 14 DoCoMo NTT DoCoMo Tohoku Operational Unknown + 440 15 DoCoMo NTT DoCoMo Operational Unknown + 440 16 DoCoMo NTT DoCoMo Operational Unknown + 440 17 DoCoMo NTT DoCoMo Operational Unknown + 440 18 DoCoMo NTT DoCoMo Tokai Operational Unknown + 440 19 DoCoMo NTT DoCoMo Hokkaido Operational Unknown + 440 20 SoftBank Operational UMTS 2100 + 440 21 DoCoMo NTT DoCoMo Operational Unknown + 440 22 DoCoMo NTT DoCoMo Kansai Operational Unknown + 440 23 DoCoMo NTT DoCoMo Tokai Operational Unknown + 440 24 DoCoMo NTT DoCoMo Chugoku Operational Unknown + 440 25 DoCoMo NTT DoCoMo Hokkaido Operational Unknown + 440 26 DoCoMo NTT DoCoMo Kyushu Operational Unknown + 440 27 DoCoMo NTT DoCoMoTohoku Operational Unknown + 440 28 DoCoMo NTT DoCoMo Shikoku Operational Unknown + 440 29 DoCoMo NTT DoCoMo Operational Unknown + 440 30 DoCoMo NTT DoCoMo Operational Unknown + 440 31 DoCoMo NTT DoCoMo Kansai Operational Unknown + 440 32 DoCoMo NTT DoCoMo Operational Unknown + 440 33 DoCoMo NTT DoCoMo Tokai Operational Unknown + 440 34 DoCoMo NTT DoCoMo Kyushu Operational Unknown + 440 35 DoCoMo NTT DoCoMo Kansai Operational Unknown + 440 36 DoCoMo NTT DoCoMo Operational Unknown + 440 37 DoCoMo NTT DoCoMo Operational Unknown + 440 38 DoCoMo NTT DoCoMo Operational Unknown + 440 39 DoCoMo NTT DoCoMo Operational Unknown + 440 40 Vodafone Operational Unknown + 440 41 Vodafone Operational Unknown + 440 42 Vodafone Operational Unknown + 440 43 Vodafone Operational Unknown + 440 44 Vodafone Operational Unknown + 440 45 Vodafone Operational Unknown + 440 46 Vodafone Operational Unknown + 440 47 Vodafone Operational Unknown + 440 48 Vodafone Operational Unknown + 440 49 DoCoMo NTT DoCoMo Operational Unknown + 440 50 KDDI KDDI Corporation Operational Unknown + 440 51 KDDI KDDI Corporation Operational Unknown + 440 52 KDDI KDDI Corporation Operational Unknown + 440 53 KDDI KDDI Corporation Operational Unknown + 440 54 KDDI KDDI Corporation Operational Unknown + 440 55 KDDI KDDI Corporation Operational Unknown + 440 56 KDDI KDDI Corporation Operational Unknown + 440 58 DoCoMo NTT DoCoMo Kansai Operational Unknown + 440 60 DoCoMo NTT DoCoMo Kansai Operational Unknown + 440 61 DoCoMo NTT DoCoMo Chugoku Operational Unknown + 440 62 DoCoMo NTT DoCoMo Kyushu Operational Unknown + 440 63 DoCoMo NTT DoCoMo Operational Unknown + 440 64 DoCoMo NTT DoCoMo Operational Unknown + 440 65 DoCoMo NTT DoCoMo Shikoku Operational Unknown + 440 66 DoCoMo NTT DoCoMo Operational Unknown + 440 67 DoCoMo NTT DoCoMo Tohoku Operational Unknown + 440 68 DoCoMo NTT DoCoMo Kyushu Operational Unknown + 440 69 DoCoMo NTT DoCoMo Operational Unknown + 440 70 KDDI KDDI Corporation Operational Unknown + 440 71 KDDI KDDI Corporation Operational Unknown + 440 72 KDDI KDDI Corporation Operational Unknown + 440 73 KDDI KDDI Corporation Operational Unknown + 440 74 KDDI KDDI Corporation Operational Unknown + 440 75 KDDI KDDI Corporation Operational Unknown + 440 76 KDDI KDDI Corporation Operational Unknown + 440 77 KDDI KDDI Corporation Operational Unknown + 440 78 Okinawa Cellular Telephone Operational Unknown + 440 79 KDDI KDDI Corporation Operational Unknown + 440 80 TU-KA TU-KA Cellular Tokyo Not operational Unknown Closed in March 31, 2008. + 440 81 TU-KA TU-KA Cellular Tokyo Not operational Unknown Closed in March 31, 2008. + 440 82 TU-KA TU-KA Phone Kansai Not operational Unknown Closed in March 31, 2008. + 440 83 TU-KA TU-KA Cellular Tokai Not operational Unknown Closed in March 31, 2008. + 440 84 TU-KA TU-KA Phone Kansai Not operational Unknown Closed in March 31, 2008. + 440 85 TU-KA TU-KA Cellular Tokai Not operational Unknown Closed in March 31, 2008. + 440 86 TU-KA TU-KA Cellular Tokyo Not operational Unknown Closed in March 31, 2008. + 440 87 DoCoMo NTT DoCoMo Chugoku Operational Unknown + 440 88 KDDI KDDI Corporation Operational Unknown + 440 89 KDDI KDDI Corporation Operational Unknown + 440 90 Vodafone Operational Unknown + 440 92 Vodafone Operational Unknown + 440 93 Vodafone Operational Unknown + 440 94 Vodafone Operational Unknown + 440 95 Vodafone Operational Unknown + 440 96 Vodafone Operational Unknown + 440 97 Vodafone Operational Unknown + 440 98 Vodafone Operational Unknown + 440 99 DoCoMo NTT DoCoMo Operational Unknown + +# ISO Country +JO Jordan +# MCC MNC Brand Operator Status Bands Notes + 416 01 Zain Jordan Mobile Telephone Services Operational GSM 900 [57] + 416 02 XPress Telecom Operational iDEN 800 + 416 03 Umniah Operational GSM 1800 + 416 77 Orange Petra Jordanian Mobile Telecommunications Company (MobileCom) Operational GSM 900 + +# ISO Country +KZ Kazakhstan +# MCC MNC Brand Operator Status Bands Notes + 401 01 Beeline KaR-Tel LLP Operational GSM 900 + 401 02 K'Cell GSM Kazakhstan Ltd Operational GSM 900 + 401 07 Dalacom Operational CDMA2000 800 + 401 77 Mobile Telecom Service Mobile Telecom Service LLP Operational GSM 900 + +# ISO Country +KE Kenya +# MCC MNC Brand Operator Status Bands Notes + 639 02 Safaricom Safaricom Limited Operational GSM 900 / GSM 1800 [58] + 639 03 Zain Celtel Kenya Limited Operational GSM 900 [59] + 639 07 Orange Kenya Telkom Kenya Operational CDMA2000 / GSM 900 / GSM 1800 + +# ISO Country +KI Kiribati +# MCC MNC Brand Operator Status Bands Notes +% 545 ? Telecom Services Kiribati Ltd (Kiribati Frigate) Operational GSM 900 + +# ISO Country +KP North Korea +# MCC MNC Brand Operator Status Bands Notes + 467 193 SUN NET Korea Posts and Telecommunications Corporation Operational GSM 900 [60] + +# ISO Country +KR South Korea +# MCC MNC Brand Operator Status Bands Notes + 450 02 KTF CDMA Operational CDMA2000 1700 + 450 05 SK Telecom Operational CDMA2000 850 / UMTS 2100 [61] + 450 08 KTF KT Freetel Co., Ltd Operational CDMA2000 1700 / UMTS 2100 +% 450 ?? LG Telecom Operational CDMA2000 + +# ISO Country +-- Kosovo +# MCC MNC Brand Operator Status Bands Notes + 212 01 Vala PTK - Directory of Post of Kosovo Operational GSM 900 Monaco # MCC. Monaco Telecom is responsible for the delegated management of the GSM network in Kosovo. [62] + 293 41 iPKO/Mobitel Mobitel Slovenia Operational GSM 900 / GSM 1800 + +# ISO Country +KW Kuwait +# MCC MNC Brand Operator Status Bands Notes + 419 02 Zain Mobile Telecommunications Co. Operational GSM 900 / UMTS 2100 + 419 03 Wataniya National Mobile Telecommunications Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +KG Kyrgyzstan +# MCC MNC Brand Operator Status Bands Notes + 437 01 Bitel Sky Mobile LLC Operational GSM 900 / GSM 1800 + 437 05 MegaCom BiMoCom Ltd Operational GSM 900 / GSM 1800 + 437 09 O! NurTelecom LLC Operational GSM 900 / GSM 1800 + +# ISO Country +LA Laos +# MCC MNC Brand Operator Status Bands Notes + 457 01 LaoTel Lao Shinawatra Telecom Operational GSM 900 [63] + 457 02 ETL Enterprise of Telecommunications Lao Planned GSM 900 + 457 03 LAT Lao Asia Telecommunication State Enterprise (LAT) Operational GSM 900 / GSM 1800 + 457 08 Tigo Millicom Lao Co Ltd Operational GSM 900 / GSM 1800 + +# ISO Country +LV Latvia +# MCC MNC Brand Operator Status Bands Notes + 247 01 LMT Latvian Mobile Telephone Operational GSM 900 / GSM 1800 / UMTS 2100 + 247 02 Tele2 Tele2 Operational GSM 900 / GSM 1800 / UMTS 2100 + 247 03 TRIATEL Telekom Baltija Operational CDMA 450 + 247 05 Bite Bite Latvija Operational GSM 900 / GSM 1800 / UMTS 2100 Bite's postpaid customers are still being assigned SIM cards with 246 02 MNC + 247 06 Rigatta Reserved No own network. Not in commercial use [64] + 247 07 MTS Master Telecom Operational MVNO, uses Bite network [65] + 247 08 IZZI IZZI Operational MVNO, uses Bite network [66] + +# ISO Country +LB Lebanon +# MCC MNC Brand Operator Status Bands Notes + 415 01 Alfa Operational GSM 900 + 415 03 MTC-Touch MIC 2 Operational GSM 900 + +# ISO Country +LS Lesotho +# MCC MNC Brand Operator Status Bands Notes + 651 01 Vodacom Vodacom Lesotho (Pty) Ltd Operational GSM 900 + 651 02 Econet Ezin-cel Operational Unknown + +# ISO Country +LR Liberia +# MCC MNC Brand Operator Status Bands Notes + 618 01 Lonestar Cell Lonestar Communications Corporation Operational GSM 900 + 618 04 Comium Liberi Operational Unknown + +# ISO Country +LY Libya +# MCC MNC Brand Operator Status Bands Notes + 606 00 Libyana Operational GSM 900 + 606 01 Madar Al Madar Operational GSM 900 + +# ISO Country +LI Liechtenstein +# MCC MNC Brand Operator Status Bands Notes + 295 01 Swisscom Swisscom Schweiz AG Operational GSM 900 / GSM 1800 [67] + 295 02 Orange Orange Liechtenstein AG Operational GSM 1800 + 295 05 FL1 Mobilkom Liechtenstein AG Operational GSM 900 / GSM 1800 / UMTS 2100 + 295 77 Tele 2 Belgacom Operational GSM 900 Aka. Tango + +# ISO Country +LT Lithuania +# MCC MNC Brand Operator Status Bands Notes + 246 01 Omnitel Operational GSM 900 / GSM 1800 / UMTS 2100 + 246 02 BITE UAB Bité Lietuva Operational GSM 900 / GSM 1800 / UMTS 2100 + 246 03 Tele 2 Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +LU Luxembourg +# MCC MNC Brand Operator Status Bands Notes + 270 01 LuxGSM P&T Luxembourg Operational GSM 900 / GSM 1800 / UMTS 2100 + 270 77 Tango Tango SA Operational GSM 900 / GSM 1800 / UMTS 2100 + 270 99 Voxmobile VOXmobile S.A. Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +MO Macau (People's Republic of China) +# MCC MNC Brand Operator Status Bands Notes + 455 00 SmarTone SmarTone Macao Operational GSM 900 / GSM 1800 [68] + 455 01 CTM C.T.M. Telemovel+ Operational GSM 900 / GSM 1800 / UMTS 2100 + 455 03 3 Hutchison Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +MK Republic of Macedonia +# MCC MNC Brand Operator Status Bands Notes + 294 01 T-Mobile T-Mobile Makedonija Operational GSM 900 + 294 02 Cosmofon Operational GSM 900 / UMTS 2100 + 294 03 VIP Operator Operational GSM 900 / GSM 1800 + +# ISO Country +MG Madagascar +# MCC MNC Brand Operator Status Bands Notes + 646 01 Zain Celtel Operational GSM 900 / GSM 1800 Former Madacom [69] + 646 02 Orange Orange Madagascar S.A. Operational GSM 900 + 646 04 Telma Telma Mobile S.A. Operational GSM 900 + +# ISO Country +MW Malawi +# MCC MNC Brand Operator Status Bands Notes + 650 01 TNM Telecom Network Malawi Operational GSM 900 / GSM 1800 [70] + 650 10 Zain Celtel Limited Operational GSM 900 [71] + +# ISO Country +MY Malaysia +# MCC MNC Brand Operator Status Bands Notes + 502 12 Maxis Maxis Communications Berhad Operational GSM 900 / GSM 1800 / UMTS 2100 [72] + 502 13 Celcom Celcom Malaysia Sdn Bhd Operational UMTS 2100 [73] + 502 16 DiGi DiGi Telecommunications Operational GSM 1800 + 502 17 Maxis Maxis Communications Berhad Operational Unknown Former Timecel + 502 18 U Mobile U Mobile Sdn Bhd Operational UMTS 2100 + 502 19 Celcom Celcom Malaysia Sdn Bhd Operational GSM 900 / GSM 1800 + +# ISO Country +MV Maldives +# MCC MNC Brand Operator Status Bands Notes + 472 01 Dhiraagu Dhivehi Raajjeyge Gulhun Operational GSM 900 [74] + 472 02 Wataniya Wataniya Telecom Maldives Operational GSM 900 / UMTS 2100 + +# ISO Country +ML Mali +# MCC MNC Brand Operator Status Bands Notes + 610 01 Malitel Malitel SA Operational GSM 900 [75] + 610 02 Orange Orange Mali SA Operational GSM 900 + +# ISO Country +MT Malta +# MCC MNC Brand Operator Status Bands Notes + 278 01 Vodafone Vodafone Malta Operational GSM 900 / UMTS 2100 + 278 21 GO Mobisle Communications Limited Operational GSM 1800 / UMTS 2100 + +# ISO Country +MH Marshal Islands +# MCC MNC Brand Operator Status Bands Notes +% ? ? ? Unknown Unknown + +# ISO Country +MR Mauritania +# MCC MNC Brand Operator Status Bands Notes + 609 01 Mattel Mattel Operational GSM 900 [76] + 609 10 Mauritel Mauritel Mobiles Operational GSM 900 + +# ISO Country +MU Mauritius +# MCC MNC Brand Operator Status Bands Notes + 617 01 Orange Cellplus Mobile Communications Ltd. Operational GSM 900 + 617 02 Mahanagar Telephone (Mauritius) Ltd. Operational Unknown + 617 10 Emtel Emtel Ltd Operational GSM 900 + +# ISO Country +MX Mexico +# MCC MNC Brand Operator Status Bands Notes + 334 01 Nextel Nextel México Operational iDEN 800 + 334 02 Telcel América Móvil Operational TDMA 850 / GSM 1900 / UMTS 850 + 334 03 movistar Pegaso Comunicaciones y Sistemas Operational CDMA 1900 / CDMA 850 / GSM 1900 + +# ISO Country +FM Micronesia +# MCC MNC Brand Operator Status Bands Notes + 550 01 FSM Telecom Operational GSM 900 / GSM 1800 + +# ISO Country +MD Moldova +# MCC MNC Brand Operator Status Bands Notes + 259 01 Orange Orange Moldova Operational GSM 900 / GSM 1800 / UMTS 2100 Former Voxtel. + 259 02 Moldcell Operational GSM 900 / GSM 1800 / UMTS 2100 + 259 03 Unité Operational CDMA 450 + 259 03 IDC Interdnestrcom Operational CDMA 450 / CDMA 800 Operating in Transnistrian region, unoficially sharing the same MNC with Unité + 259 04 Eventis Operational GSM 900 / GSM 1800 UMTS 2100 planning + +# ISO Country +MC Monaco +# MCC MNC Brand Operator Status Bands Notes + 212 01 Office des Telephones Monaco Telecom Unknown Unknown Used for the Vala network in Kosovo. The GSM Association lists the PTK (P&T Kosovo) website for this network. [77] + +# ISO Country +MN Mongolia +# MCC MNC Brand Operator Status Bands Notes + 428 99 MobiCom Mobicom Corporation Operational GSM 900 [78] + 428 88 Unitel Unitel LLC Operational GSM 900 + +# ISO Country +ME Montenegro +# MCC MNC Brand Operator Status Bands Notes + 220 02 ProMonte ProMonte GSM Operational GSM 900 / GSM 1800 / UMTS 2100 [79] + 220 04 T-Mobile T-Mobile Montenegro LLC Operational GSM 900 + 220 03 m:tel CG MTEL CG Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +MA Morocco +# MCC MNC Brand Operator Status Bands Notes + 604 00 Méditel Medi Telecom Operational GSM 900 / GSM 1800 [80] + 604 01 IAM Ittissalat Al Maghrib (Maroc Telecom) Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +MZ Mozambique +# MCC MNC Brand Operator Status Bands Notes + 643 01 mCel Mocambique Celular S.A.R.L Operational GSM 900 / GSM 1800 [81] + 643 04 Vodacom Vodacom Mozambique, S.A.R.L. Unknown GSM 900 / GSM 1800 + +# ISO Country +MM Myanmar +# MCC MNC Brand Operator Status Bands Notes + 414 01 MPT Myanmar Post and Telecommunication Operational GSM 900 [82] [83] + +# ISO Country +NA Namibia +# MCC MNC Brand Operator Status Bands Notes + 649 01 MTC MTC Namibia Operational GSM 900 / GSM 1800 + 649 02 switch Telecom Namibia Operational CDMA 800 + 649 03 Cell One Power Com Ltd Operational GSM 900 / GSM 1800 + +# ISO Country +NR Nauru +# MCC MNC Brand Operator Status Bands Notes +% 536 Nauru has no mobile network + +# ISO Country +NP Nepal +# MCC MNC Brand Operator Status Bands Notes + 429 01 Nepal Telecom Operational GSM 900 / GSM 1800 / CDMA + 429 02 Mero Mobile Spice Nepal Private Ltd Operational GSM 900 / GSM 1800 + 429 03 United Telecom Limited Operational CDMA 1900 + +# ISO Country +NL Netherlands (Kingdom of the Netherlands) +# MCC MNC Brand Operator Status Bands Notes + 204 02 Tele2 Netherlands Not operational GSM 900 / GSM 1800 + 204 21 NS Railinfrabeheer B.V. Operational GSM-R + 204 04 Vodafone Vodafone Netherlands Operational GSM 900 / GSM 1800 / UMTS 2100 + 204 08 KPN KPN Operational GSM 900 / GSM 1800 + 204 12 Telfort / O2 KPN Operational GSM 1800 + 204 16 T-Mobile / Ben Operational GSM 900 / GSM 1800 + 204 20 Orange Nederland T-Mobile Netherlands B.V Operational GSM 1800 + +# ISO Country +AN Netherlands Antilles (Kingdom of the Netherlands) +# MCC MNC Brand Operator Status Bands Notes + 362 51 Telcell Telcell N.V. Operational GSM 900 St.Maarten [84] + 362 69 Digicel Curacao Telecom N.V. Operational GSM 900 / GSM 1800 Curacao + 362 91 UTS Setel N.V. Operational GSM 900 Chippie Land +% 362 ? East Caribbean Cellular Operational GSM 900 / GSM 1800 +% 362 ? Antiliano Por N.V. Operational GSM 900 Live from July 2007 + +# ISO Country +NC New Caledonia (France) +# MCC MNC Brand Operator Status Bands Notes + 546 01 Mobilis OPT New Caledonia Operational GSM 900 [85] + +# ISO Country +NZ New Zealand +# MCC MNC Brand Operator Status Bands Notes + 530 00 Telecom Telecom New Zealand Not operational AMPS 800 / TDMA 800 AMPS MIN based IMSI's + 530 01 Vodafone Vodafone New Zealand Operational GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 [86] + 530 02 Telecom Telecom New Zealand Operational CDMA 800 CDMA network + 530 03 Woosh Woosh Wireless New Zealand Operational UMTS 2000 + 530 04 TelstraClear TelstraClear New Zealand Not operational UMTS 2100 + 530 05 Telecom Telecom New Zealand Operational GSM 850 / UMTS 2100 GSM network + 530 24 NZ Comms NZ Communications New Zealand Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +NI Nicaragua +# MCC MNC Brand Operator Status Bands Notes + 710 21 Claro Empresa Nicaragüense de Telecomunicaciones, S.A. Operational UMTS 850 / GSM 1900 [87] + 710 30 movistar Telefónica Móviles de Nicaragua S.A. Operational CDMA 850 / GSM 850 / TDMA 850 + 710 73 SERCOM Servicios de Comunicaciones S.A. Operational UMTS 850 / GSM 1900 Not listed by the GSM Association + +# ISO Country +NE Niger +# MCC MNC Brand Operator Status Bands Notes + 614 01 SahelCom Operational GSM 900 [88] + 614 02 Zain Celtel Niger Operational GSM 900 [89] + 614 03 Telecel Telecel Niger SA Operational GSM 900 + 614 04 Orange Orange Niger Operational GSM 900 / GSM 1800 + +# ISO Country +NG Nigeria +# MCC MNC Brand Operator Status Bands Notes + 621 20 Zain Celtel Nigeria Ltd Ltd. Operational GSM 900 / GSM 1800 Former V-Mobile [90] + 621 30 MTN MTN Nigeria Communications Limited Operational GSM 900 / GSM 1800 + 621 40 M-Tel Nigerian Mobile Telecommunications Limited Operational GSM 900 / GSM 1800 + 621 50 Glo Globacom Ltd Operational GSM 900 / GSM 1800 + +# ISO Country +NO Norway +# MCC MNC Brand Operator Status Bands Notes + 242 01 Telenor Operational GSM 900 / GSM 1800 / UMTS 2100 [91] + 242 02 NetCom NetCom GSM Operational GSM 900 / GSM 1800 / UMTS 2100 + 242 03 MTU Operational GSM 1800 Formerly Teletopia + 242 04 Tele2 MVNO + 242 05 Network Norway Operational GSM 900 + 242 06 Ice Nordisk Mobiltelefon Operational CDMA2000 450 Data services only + 242 07 Ventelo Reserved Unknown + 242 08 TDC Mobil AS Reserved Unknown + 242 09 Barablu Mobile Norway Ltd MVNO + 242 20 Jernbaneverket AS Operational GSM-R 900 + +# ISO Country +OM Oman +# MCC MNC Brand Operator Status Bands Notes + 422 02 Oman Mobile Oman Telecommunications Company Operational GSM 900 / GSM 1800 [92] + 422 03 Nawras Omani Qatari Telecommunications Company SAOC Operational GSM 900 / GSM 1800 + +# ISO Country +PK Pakistan +# MCC MNC Brand Operator Status Bands Notes + 410 01 Mobilink Mobilink-PMCL Operational GSM 900 / GSM 1800 + 410 03 Ufone Pakistan Telecommunciation Mobile Ltd Operational GSM 900 / GSM 1800 + 410 04 Zong China Mobile Operational GSM 900 / GSM 1800 Formerly Paktel + 410 06 Telenor Telenor Pakistan Operational GSM 900 / GSM 1800 + 410 07 Warid WaridTel Operational GSM 900 / GSM 1800 + 410 08 Instaphone Instaphone AMPS NON GSM + +# ISO Country +PW Palau +# MCC MNC Brand Operator Status Bands Notes + 552 01 PNCC Palau National Communications Corp. Operational GSM 900 + 552 80 Palau Mobile Palau Mobile Corporation Operational GSM 1800 + +# ISO Country +PS Palestine +# MCC MNC Brand Operator Status Bands Notes + 425 05 JAWWAL Palestine Cellular Communications, Ltd. Operational GSM 900 [93] [94] + +# ISO Country +PA Panama +# MCC MNC Brand Operator Status Bands Notes + 714 01 Cable & Wireless Cable & Wireless Panama S.A. Operational GSM 850 [95] + 714 02 movistar Telefonica Moviles Panama S.A Operational CDMA2000 850 / GSM 850 + +# ISO Country +PG Papua New Guinea +# MCC MNC Brand Operator Status Bands Notes + 537 01 B-Mobile Pacific Mobile Communications Operational GSM 900 +% 537 ? Digicel Digicel PNG Operational GSM 900 + +# ISO Country +PY Paraguay +# MCC MNC Brand Operator Status Bands Notes + 744 01 VOX Hola Paraguay S.A Operational GSM 1900 + 744 02 Claro AMX Paraguay S.A. Operational GSM 1900 / UMTS 1900 + 744 04 Tigo Telefonica Celular Del Paraguay S.A. (Telecel) Operational GSM 850 / UMTS 850 + 744 05 Personal Núcleo S.A Operational GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 + +# ISO Country +PE Peru +# MCC MNC Brand Operator Status Bands Notes + 716 06 movistar Telefónica Móviles Perú Operational CDMA 850 / GSM 850 [96] + 716 10 Claro América Móvil Perú Operational GSM 1900 +% 716 ? NEXTEL NII Holdings Operational iDEN + +# ISO Country +PH Philippines +# MCC MNC Brand Operator Status Bands Notes + 515 01 Islacom Innove Communications Inc Operational GSM 900 [97] + 515 02 Globe Globe Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 + 515 03 Smart Gold Smart Communications Inc Operational GSM 900 / GSM 1800 / UMTS 2100 + 515 05 Digitel Digital Telecommunications Philippines Operational GSM 1800 Aka. Sun Cellular + 515 11 ACeS Philippines Unknown Unknown + 515 18 Red Mobile Connectivity Unlimited Resource Enterprise Operational UMTS 2100 Formerly ümobile + 515 88 Nextel Unknown Unknown + +# ISO Country +PL Poland +# MCC MNC Brand Operator Status Bands Notes + 260 01 Plus Polkomtel Operational GSM 900 / GSM 1800 / UMTS 2100 [98] + 260 02 Era Polska Telefonia Cyfrowa (PTC) Operational GSM 900 / GSM 1800 / UMTS 2100 + 260 03 Orange PTK Centertel Operational GSM 900 / GSM 1800 / UMTS 2100 + 260 04 Tele2 Tele2 Polska Not operational Unknown + 260 06 Play P4 Sp. z o.o Operational UMTS 2100 Also roaming on Polkomtel 2G network + 260 07 Premium Internet Not operational Unknown + 260 08 E-Telko Not operational Unknown + 260 09 Telekomunikacja Kolejowa Not operational GSM-R 900 + 260 10 Telefony Opalenickie Not operational Unknown + 260 11 Nordisk Polska Not operational CDMA + 260 12 Cyfrowy Polsat Cyfrowy Polsat Operational GSM 900 / GSM 1800 / UMTS 2100 MVNO roaming on PTC network + 260 Sferia Sferia S.A. Operational CDMA2000 850 + 260 15 CenterNet CenterNet S.A. Planned GSM 1800 Also roaming on Centertel network + +# ISO Country +PT Portugal +# MCC MNC Brand Operator Status Bands Notes + 268 01 Vodafone Vodafone Portugal Operational GSM 900 / GSM 1800 / UMTS 2100 + 268 03 Optimus Sonaecom \u2013 Serviços de Comunicações, S.A. Operational GSM 900 / GSM 1800 / UMTS 2100 + 268 06 TMN Telecomunicações Móveis Nacionais Operational GSM 900 / GSM 1800 / UMTS 2100 +% 268 ? Zapp Zapp Portugal Operational CDMA2000 450 + +# ISO Country +PR Puerto Rico +# MCC MNC Brand Operator Status Bands Notes + 330 11 Claro Puerto Rico Telephone Company Operational GSM 850 / GSM 1900 / UMTS 850 + +# ISO Country +QA Qatar +# MCC MNC Brand Operator Status Bands Notes + 427 01 Qatarnet Q-Tel Operational GSM 900 / GSM 1800 + +# ISO Country +RE Réunion (France) +# MCC MNC Brand Operator Status Bands Notes + 647 00 Orange Orange La Réunion Operational GSM 900 / GSM 1800 [99] + 647 02 Outremer Outremer Telecom Operational GSM 900 / GSM 1800 + 647 10 SFR Reunion Societe Reunionnaise de Radiotelephone Operational GSM 900 + +# ISO Country +RO Romania +# MCC MNC Brand Operator Status Bands Notes + 226 01 Vodafone Vodafone România Operational GSM 900 / GSM 1800 / UMTS 2100 Former Conex + 226 03 Cosmote Cosmote România Operational GSM 900 / GSM 1800 + 226 04 Zapp Telemobil Operational CDMA 450 + 226 05 DIGI.mobil RCS&RDS Operational UMTS 2100 + 226 06 Zapp Telemobil Reserved UMTS 2100 UMTS 2100 is under testing + 226 10 Orange Orange România Operational GSM 900 / GSM 1800 / UMTS 2100 Former Dialog + +# ISO Country +RU Russian Federation +# MCC MNC Brand Operator Status Bands Notes + 250 01 MTS Mobile TeleSystems Operational GSM 900 / GSM 1800 / UMTS 2100 + 250 02 MegaFon MegaFon OJSC Operational GSM 900 / GSM 1800 / UMTS 2100 + 250 03 NCC Nizhegorodskaya Cellular Communications Operational GSM 900 / GSM 1800 + 250 04 Sibchallenge Sibchallenge Not operational GSM 900 + 250 05 ETK Yeniseytelecom Operational GSM 900 / GSM 1800 Mobile Communications Systems + 250 07 SMARTS Zao SMARTS Operational GSM 900 / GSM 1800 + 250 10 DTC Dontelekom Not operational GSM 900 + 250 11 Orensot Not operational Unknown + 250 12 Baykalwestcom Baykal Westcom / New Telephone Company / Far Eastern Cellular Operational GSM 900 / GSM 1800 + 250 13 KUGSM Kuban GSM Not operational GSM 900 / GSM 1800 + 250 14 Di-ex / Teleset LTD Operational GSM 1800 + 250 14 SMARTS SMARTS Ufa Operational GSM 1800 + 250 16 NTC New Telephone Company Operational GSM 900 / GSM 1800 + 250 17 Utel JSC Uralsvyazinform Operational GSM 900 / GSM 1800 Former Ermak RMS + 250 19 INDIGO INDIGO Operational GSM 1800 Former Volgograd Mobile + 250 20 Tele2 Tele2 Operational GSM 900 / GSM 1800 + 250 23 Mobicom - Novosibirsk Mobicom - Novosibirsk Operational GSM 900 / GSM 1800 + 250 28 Beeline Beeline Not operational GSM 900 Former EXTEL + 250 35 MOTIV MOTIV Not operational GSM 1800 + 250 39 Utel Uralsvyazinform Operational GSM 900 / GSM 1800 + 250 44 Stavtelesot / North Caucasian GSM Not operational Unknown + 250 92 Primtelefon Not operational Unknown + 250 93 Telecom XXI Not operational Unknown + 250 99 Beeline OJSC VimpelCom Operational GSM 900 / GSM 1800 / UMTS 2100 +% 250 ? SkyLink/MTS/the Moscow Cellular communication Unknown CDMA 450 +% 250 Akos Unknown GSM 1800 + +# ISO Country +RW Rwanda +# MCC MNC Brand Operator Status Bands Notes + 635 10 MTN MTN Rwandacell SARL Operational GSM 900 [100] + +# ISO Country +KN Saint Kitts and Nevis +# MCC MNC Brand Operator Status Bands Notes + 356 050 Digicel Unknown GSM 900 / GSM 1800 / GSM 1900 + 356 110 Cable & Wireless Unknown GSM 850 / GSM 1900 + +# ISO Country +LC Saint Lucia +# MCC MNC Brand Operator Status Bands Notes + 358 050 Digicel Unknown GSM 900 / GSM 1800 / GSM 1900 + 358 110 Cable & Wireless Unknown GSM 850 + +# ISO Country +PM Saint Pierre and Miquelon (France) +# MCC MNC Brand Operator Status Bands Notes + 308 01 Ameris St. Pierre-et-Miquelon Télécom Operational GSM 900 [101] + +# ISO Country +VC Saint Vincent and the Grenadines +# MCC MNC Brand Operator Status Bands Notes + 360 050 Digicel Unknown GSM 900 / GSM 1800 / GSM 1900 + 360 110 Cable & Wireless Unknown GSM 850 + +# ISO Country +WS Samoa +# MCC MNC Brand Operator Status Bands Notes + 549 01 Digicel Telecom Samoa Cellular Ltd. Operational GSM 900 [102] + 549 27 SamoaTel SamoaTel Ltd Operational GSM 900 + +# ISO Country +SM San Marino +# MCC MNC Brand Operator Status Bands Notes + 292 01 PRIMA San Marino Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 [103] [104] + +# ISO Country +ST Sao Tome and Principe +# MCC MNC Brand Operator Status Bands Notes + 626 01 CSTmovel Companhia Santomese de Telecomunicaçôe Operational GSM 900 + +# ISO Country +SA Saudi Arabia +# MCC MNC Brand Operator Status Bands Notes + 420 01 STC Saudi Telecom Company Operational GSM 900 / UMTS 2100 Al Jawwal [105] + 420 03 Mobily Etihad Etisalat Company Operational GSM 900 / UMTS 2100 + 420 07 EAE Electronics App' Est. Unknown Unknown + 420 04 Zain SA MTC Saudi Arabia Operational GSM 900 / GSM 1800 / UMTS 2100 Active September 2008 + +# ISO Country +SN Senegal +# MCC MNC Brand Operator Status Bands Notes + 608 01 Sonatel ALIZE Operational Unknown + 608 02 Sentel GSM Operational Unknown + +# ISO Country +RS Serbia +# MCC MNC Brand Operator Status Bands Notes + 220 01 Telenor Telenor Serbia Operational GSM 900 / GSM 1800 / UMTS 2100 + 220 03 Telekom Srbija Telekom Srbija Operational GSM 900 / GSM 1800 / UMTS 2100 + 220 05 VIP Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +SC Seychelles +# MCC MNC Brand Operator Status Bands Notes + 633 01 Cable & Wireless (Seychelles) Ltd. Operational Unknown + 633 02 Mediatech International Mediatech International Ltd. Operational GSM 1800 + 633 10 Telecom Airtel Operational Unknown + +# ISO Country +SL Sierra Leone +# MCC MNC Brand Operator Status Bands Notes + 619 01 Zain Operational Unknown Former Celtel [106] + 619 02 Millicom Operational Unknown + 619 03 Datatel Operational Unknown + 619 04 Comium Comium Sierra leone INC Operational Unknown + 619 05 Africell Operational Unknown + 619 25 Mobitel Operational Unknown +% 619 ? LeoneCel Sierratel Reserved Unknown + +# ISO Country +SG Singapore +# MCC MNC Brand Operator Status Bands Notes + 525 01 SingTel Singapore Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 [107] + 525 02 SingTel-G18 Singapore Telecom Operational GSM 1800 + 525 03 M1 MobileOne Asia Operational GSM 900 / GSM 1800 / UMTS 2100 + 525 05 StarHub StarHub Mobile Operational GSM 1800 / UMTS 2100 + 525 12 Digital Trunked Radio Network Operational iDEN 800 + +# ISO Country +SK Slovakia +# MCC MNC Brand Operator Status Bands Notes + 231 01 Orange Orange Slovensko Operational GSM 900 / GSM 1800 / UMTS 2100 [108] + 231 02 T-Mobile T-Mobile Slovensko Operational GSM 900 / GSM 1800 Former Eurotel + 231 03 Unient Communications Unknown Unknown + 231 04 T-Mobile T-Mobile Slovensko Operational UMTS 2100 + 231 05 Mobile Entertainment Company Unknown UMTS 2100 + 231 06 O2 Telefónica O2 Slovakia Operational GSM 900 / GSM 1800 / UMTS 2100 + 231 99 \u017dSR Unknown Unknown + +# ISO Country +SI Slovenia +# MCC MNC Brand Operator Status Bands Notes + 293 40 SI.mobil - Vodafone SI.MOBIL d.d. Operational GSM 900 / GSM 1800 / UMTS 2100 [109] + 293 41 Mobitel Mobitel D.D. Operational GSM 900 / GSM 1800 / UMTS 2100 + 293 64 T-2 T-2 d.o.o. Operational UMTS 2100 + 293 70 Tusmobil Tu\u0161mobil d.o.o. Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +SB Solomon Islands +# MCC MNC Brand Operator Status Bands Notes + 540 1 BREEZE Solomon Telekom Co Ltd Operational GSM 900 [110] + +# ISO Country +SO Somalia +# MCC MNC Brand Operator Status Bands Notes + 637 04 Somafone Somafone FZLLC Operational GSM 900 / GSM 1800 + 637 10 Nationlink Operational GSM 900 [111] + 637 30 Golis Golis Telecommunications Company Operational GSM 900 + 637 82 Telesom Telcom Somalia/Somaliland Operational GSM 900 / GSM 1800 / CDMA +% 637 ? Hormuud Telecom Somalia Inc Operational GSM 900 +% 637 ? Somafone FZLLC Operational GSM 900 / GSM 1800 +% 637 62 / 65 Telcom Mobile Telecom Mobile Operational GSM 900 + +# ISO Country +ZA South Africa +# MCC MNC Brand Operator Status Bands Notes + 655 01 Vodacom Operational GSM 900 / UMTS 2100 + 655 06 Sentech Operational Unknown + 655 07 Cell C Operational GSM 900 / GSM 1800 + 655 10 MTN MTN Group Operational GSM 900 / UMTS 2100 + 655 11 SAPS Gauteng Operational TETRA 410 + 655 13 Neotel Operational CDMA 800 + 655 21 Cape Town Metropolitan Council Operational TETRA 410 + 655 30 Bokamoso Consortium Operational Unknown + 655 31 Karabo Telecoms (Pty) Ltd. Operational Unknown + 655 32 Ilizwi Telecommunications Operational Unknown + 655 33 Thinta Thinta Telecommunications Operational Unknown + +# ISO Country +ES Spain +# MCC MNC Brand Operator Status Bands Notes + 214 01 Vodafone Vodafone Spain Operational GSM 900 / GSM 1800 / UMTS 2100 + 214 03 Orange France Telecom España SA Operational GSM 900 / GSM 1800 / UMTS 2100 + 214 04 Yoigo Xfera Moviles SA Operational UMTS 2100 + 214 05 TME Telefónica Móviles España Operational GSM 900 / GSM 1800 / UMTS 2100 Used by resellers + 214 06 Vodafone Vodafone Spain Operational GSM 900 / GSM 1800 / UMTS 2100 Used by resellers + 214 07 movistar Telefónica Móviles España Operational GSM 900 / GSM 1800 / UMTS 2100 + 214 08 Euskaltel Operational GSM 900 / GSM 1800 / UMTS 2100 MVNO + 214 09 Orange France Telecom España SA Operational GSM 900 / GSM 1800 / UMTS 2100 Used by resellers + 214 15 BT BT Group Operational GSM 900 / GSM 1800 / UMTS 2100 MVNO + 214 16 TeleCable Operational GSM 900 / GSM 1800 / UMTS 2100 MVNO + 214 18 ONO Operational GSM 900 / GSM 1800 / UMTS 2100 MVNO + 214 19 Simyo Operational ? MVNO + 214 23 BARABLU MÓVIL ESPAÑA GSM 900 / GSM 1800 / UMTS 2100 MVNO + +# ISO Country +LK Sri Lanka +# MCC MNC Brand Operator Status Bands Notes + 413 01 Mobitel Mobitel Lanka Ltd. Operational GSM 1800 / UMTS 2100 HSPA [112] + 413 02 Dialog Dialog Telekom PLC. Operational GSM 900 / GSM 1800 / UMTS 2100 + 413 03 Tigo Celtel Lanka Ltd Operational GSM 900 + 413 08 Hutch Sri Lanka Operational GSM 900 Not listed by GSM Association +% 413 -- AirTel Sri Lanka Bharathi AirTel Coming Soon GSM 900 UMTS + +# ISO Country +SD Sudan +# MCC MNC Brand Operator Status Bands Notes + 634 01 Mobitel / Mobile Telephone Company Operational GSM 900 + 634 02 MTN MTN Sudan Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +SR Suriname +# MCC MNC Brand Operator Status Bands Notes + 746 02 Telesu Operational Unknown + +# ISO Country +SZ Swaziland +# MCC MNC Brand Operator Status Bands Notes + 653 10 Swazi MTN Operational Unknown + +# ISO Country +SE Sweden +# MCC MNC Brand Operator Status Bands Notes + 240 01 TeliaSonera Mobile Networks TeliaSonera Mobile Networks Operational GSM 900 / GSM 1800 + 240 02 3 Operational UMTS 2100 + 240 03 Nordisk Mobiltelefon Operational CDMA 450 + 240 04 3G Infrastructure Services Operational UMTS 2100 + 240 05 Sweden 3G Operational UMTS 2100 Owned by Telia and Tele2 + 240 06 Telenor Operational UMTS 2100 + 240 07 Tele2Comviq Tele2 AB Operational GSM 900 / GSM 1800 + 240 08 Telenor Operational GSM 900 / GSM 1800 + 240 09 Telenor Mobile Sverige Operational Unknown + 240 10 SpringMobil Operational Unknown + 240 20 Wireless Maingate Operational Unknown + 240 21 Banverket Operational GSM-R 900 + +# ISO Country +CH Switzerland +# MCC MNC Brand Operator Status Bands Notes + 228 01 Swisscom Swisscom Ltd Operational GSM 900 / GSM 1800 / UMTS 2100 [113] + 228 02 Sunrise Sunrise Communications AG Operational GSM 900 / GSM 1800 / UMTS 2100 + 228 03 Orange Orange Communications SA Operational GSM 1800 / UMTS 2100 + 228 05 Togewanet AG (Comfone) Reserved Unknown Planned + 228 06 SBB AG Operational GSM-R 900 + 228 07 IN&Phone IN&Phone SA Operational GSM 1800 + 228 08 Tele2 Tele2 Telecommunications AG Operational GSM 1800 + 228 50 3G Mobile AG Reserved UMTS 2100 Planned + 228 51 BebbiCell AG Operational MVNO + Paging + +# ISO Country +SY Syria +# MCC MNC Brand Operator Status Bands Notes + 417 01 SyriaTel Operational GSM 900 / GSM 1800 [114] + 417 02 MTN Syria MTN Syria (JSC) Operational GSM 900 + +# ISO Country +TW Taiwan +# MCC MNC Brand Operator Status Bands Notes + 466 01 FarEasTone Far EasTone Telecommunications Co Ltd Operational GSM 900 / GSM 1800 / UMTS 2100 [115] + 466 02 APTG Asia Pacific Telecom Operational CDMA 800 + 466 06 Tuntex Tuntex Telecom Operational GSM 1800 + 466 11 Chunghwa LDM LDTA/Chungwa Telecom Operational Unknown + 466 88 KG Telecom KG Telecom Operational GSM 1800 Roaming with FarEasTone + 466 89 VIBO VIBO Telecom Operational UMTS 2100 + 466 92 Chungwa Chunghwa Operational GSM 900 / GSM 1800 / UMTS 2100 + 466 93 MobiTai Mobitai Communications Operational GSM 900 Roaming with Taiwan Mobile + 466 97 Taiwan Mobile Taiwan Mobile Co. Ltd Operational GSM 1800 / UMTS 2100 + 466 99 TransAsia TransAsia Telecoms Operational GSM 900 Roaming with Taiwan Mobile + +# ISO Country +TJ Tajikistan +# MCC MNC Brand Operator Status Bands Notes + 436 01 Somoncom JV Somoncom Operational GSM 900 [116] + 436 02 Indigo Indigo Tajikistan Operational GSM 900 / GSM 1800 / UMTS 2100 + 436 03 MLT TT Mobile, Closed joint-stock company Operational GSM 900 / GSM 1800 + 436 04 Babilon-M CJSC Babilon-Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + 436 05 CTJTHSC Tajik-tel Operational Unknown + +# ISO Country +TZ Tanzania +# MCC MNC Brand Operator Status Bands Notes + 640 01 Tritel Not operational Unknown + 640 02 Mobitel MIC Tanzania Limited Operational GSM 900 / GSM 1800 + 640 03 Zantel Zanzibar Telecom Ltd Operational GSM 900 / GSM 1800 + 640 04 Vodacom Vodacom Tanzania Limited Operational GSM 900 / GSM 1800 + 640 05 Zain Celtel Tanzania Limited Operational Unknown Former Celtel [117] + +# ISO Country +TH Thailand +# MCC MNC Brand Operator Status Bands Notes + 520 00 CAT CDMA Operational CDMA 850 + 520 01 Advanced Info Service Operational GSM 900 + 520 10 WCS IQ Unknown Unknown + 520 15 ACT Mobile Operational GSM 1900 + 520 18 DTAC Total Access Communication Operational GSM 1800 + 520 23 Advanced Info Service Operational GSM 1800 + 520 99 True Move Operational GSM 1800 + +# ISO Country +TG Togo +# MCC MNC Brand Operator Status Bands Notes + 615 01 Togo Cell Togo Telecom Operational GSM 900 [118] + 615 05 Telecel Telecel Togo Operational GSM 900 + +# ISO Country +TO Tonga +# MCC MNC Brand Operator Status Bands Notes + 539 01 Tonga Communications Corporation Operational Unknown + 539 43 Shoreline Communication Operational Unknown +% 539 ? Digicel Operational GSM + +# ISO Country +TT Trinidad and Tobago +# MCC MNC Brand Operator Status Bands Notes + 374 12 bmobile TSTT Operational TDMA 850 / GSM 1800 + 374 13 Digicel Operational GSM 850 / GSM 1900 + +# ISO Country +TN Tunisia +# MCC MNC Brand Operator Status Bands Notes + 605 02 Tunicell Tunisie Telecom Operational GSM 900 / GSM 1800 + 605 03 Tunisiana Orascom Telecom Tunisie Operational GSM 900 / GSM 1800 + +# ISO Country +TR Turkey +# MCC MNC Brand Operator Status Bands Notes + 286 01 Turkcell Turkcell Iletisim Hizmetleri A.S. Operational GSM 900 + 286 02 Vodafone Vodafone Turkey Operational GSM 900 Formerly known as Telsim + 286 03 Avea Operational GSM 1800 Formerly Aria + 286 04 Aycell Not operational GSM 1800 Merged into Aria to form Avea + +# ISO Country +TM Turkmenistan +# MCC MNC Brand Operator Status Bands Notes + 438 01 MTS Barash Communication Technologies Operational GSM 900 / GSM 1800 + 438 02 TM-Cell Operational GSM 900 / GSM 1800 + +# ISO Country +TV Tuvalu +# MCC MNC Brand Operator Status Bands Notes + Tuvalu has no mobile networks + +# ISO Country +UG Uganda +# MCC MNC Brand Operator Status Bands Notes + 641 01 Zain Celtel Cellular Operational Unknown [119] + 641 10 MTN MTN Uganda Operational GSM 900 / GSM 1800 + 641 11 Uganda Telecom Ltd. Operational Unknown + 641 22 Warid Telecom Warid Telecom Operational GSM 900 / GSM 1800 +% 641 ? HITS Telecom Unknown GSM 900 / GSM 1800 + +# ISO Country +UA Ukraine +# MCC MNC Brand Operator Status Bands Notes + 255 01 MTS Ukrainian Mobile Communications Operational GSM 900 / GSM 1800 / CDMA 450 Former UMC + 255 02 Beeline Ukrainian Radio Systems Operational GSM 900 / GSM 1800 Former WellCOM + 255 03 Kyivstar Kyivstar GSM JSC Operational GSM 900 / GSM 1800 + 255 04 IT Intertelecom Operational CDMA 800 + 255 05 Golden Telecom Golden Telecom Operational GSM 1800 + 255 06 life:) Astelit Operational GSM 900 / GSM 1800 + 255 07 Utel Ukrtelecom Operational UMTS 2100 + 255 21 PEOPLEnet Telesystems of Ukraine Operational CDMA 800 + 255 23 CDMA Ukraine ITC Operational CDMA 800 + +# ISO Country +AE United Arab Emirates +# MCC MNC Brand Operator Status Bands Notes + 424 02 Etisalat E mirates Telecom Corp Operational GSM 900 / UMTS 2100 [120] + 424 03 du Emirates Integrated Telecommunications Company Operational GSM 900 / GSM 1800 / UMTS 2100 + +# ISO Country +GB United Kingdom +# MCC MNC Brand Operator Status Bands Notes + 234 00 BT British Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 [121] + 234 01 MCom Mapesbury Communications Ltd. Operational GSM 1800 + 234 02 O2 Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 03 Jersey Telenet Operational GSM 900 + 234 10 O2 Telefónica O2 UK Limited Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 11 O2 Telefónica Europe Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 12 Railtrack Network Rail Infrastructure Ltd Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 15 Vodafone Vodafone United Kingdom Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 18 Cloud9 Wire9 Telecom plc Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 19 Telaware Telaware plc Operational GSM 1800 + 234 20 3 Hutchison 3G UK Ltd Operational UMTS 2100 + 234 22 Routo Telecom Unknown Unknown + 234 30 T-Mobile Operational GSM 1800 / UMTS 2100 + 234 31 Virgin Virgin Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 32 Virgin Virgin Mobile Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 33 Orange Orange UK Operational GSM 1800 / UMTS 2100 + 234 34 Orange Orange UK Operational GSM 1800 / UMTS 2100 + 234 50 JT-Wave Jersey Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 55 Cable & Wireless Guernsey / Sure Mobile (Jersey) Operational GSM 900 (Guernsey) / GSM 1800 (Jersey) / UMTS 2100 + 234 58 Manx Telecom Operational GSM 900 / GSM 1800 / UMTS 2100 + 234 55 Cable & Wireless / Sure Mobile (Isle of Man) Operational GSM 900 / GSM 1800 + 234 77 Unknown Operational GSM 900 / GSM 1800 + +# ISO Country +US United States of America +# MCC MNC Brand Operator Status Bands Notes + 310 000 Mid-Tex Cellular Operational Unknown + 310 004 Verizon Verizon Wireless Operational Unknown + 310 010 MCI Not operational Unknown + 310 012 Verizon Verizon Wireless Operational CDMA 850 / CDMA 1900 + 310 013 MobileTel Unknown Unknown + 310 014 Testing Operational Unknown + 310 016 Cricket Communications Operational CDMA / EV-DO 1900 1700 + 310 017 North Sight Communications Inc. Operational Unknown + 310 020 Union Telephone Company Not operational GSM 1900 Or APC Sprint Spectrum + 310 026 T-Mobile Operational GSM 1900 / UMTS 1700 Formerly Cook Inlet Voicestream + 310 030 Centennial Centennial Communications Operational GSM 850 + 310 034 Airpeak Operational Unknown Formerly Nevada Wireless + 310 038 AT&T AT&T Mobility Operational GSM 850 / UMTS 850 / UMTS 1900 + 310 040 Concho Concho Cellular Telephone Co., Inc. Operational GSM 1900 + 310 046 SIMMETRY TMP Corp Operational GSM 1900 + 310 060 Consolidated Telcom Operational Unknown + 310 070 Highland Cellular Operational Unknown Cellular One reseller + 310 080 Corr Corr Wireless Communications LLC Operational GSM 1900 + 310 090 AT&T Operational GSM 1900 / UMTS 1900 Formerly Edge Wireless + 310 100 Plateau Wireless New Mexico RSA 4 East Ltd. Partnership Operational GSM 850 + 310 110 PTI Pacifica PTI Pacifica Inc. Operational GSM 850 + 310 120 Sprint Unknown CDMA + 310 150 AT&T AT&T Mobility Operational GSM 850 / UMTS 850 / UMTS 1900 Formerly Bell South Mobility DCS + 310 160 T-Mobile Not operational GSM 1900 + 310 170 AT&T AT&T Mobility Operational GSM 850 / UMTS 850 / UMTS 1900 Formerly Cingular, also Pacific Bell Wireless + 310 180 West Central West Central Wireless Operational GSM 850 / UMTS 850 / UMTS 1900 + 310 190 Dutch Harbor Alaska Wireless Communications, LLC Operational GSM 850 + 310 200 T-Mobile Not operational GSM 1900 Formerly Smith Bagley + 310 210 T-Mobile Not operational GSM 1900 Iowa + 310 220 T-Mobile Not operational GSM 1900 Kansas / Oklahoma + 310 230 T-Mobile Not operational GSM 1900 Utah + 310 240 T-Mobile Not operational GSM 1900 New Mexico / Texas / Arizona + 310 250 T-Mobile Not operational GSM 1900 Hawaii + 310 260 T-Mobile Operational GSM 1900 Universal USA code + 310 270 T-Mobile Not operational GSM 1900 Formerly Powertel + 310 280 T-Mobile Not operational GSM 1900 + 310 290 T-Mobile Not operational GSM 1900 + 310 300 Get Mobile Inc Get Mobile Inc Operational GSM 1900 + 310 310 T-Mobile Not operational GSM 1900 Formerly Aerial Communications + 310 311 Farmers Wireless Operational GSM 1900 + 310 320 Cellular One Smith Bagley, Inc. Unknown GSM 1900 + 310 330 T-Mobile Unknown GSM 1900 + 310 340 Westlink Westlink Communications Operational GSM 1900 Kansas + 310 350 Carolina Phone Not operational GSM 1900 + 310 380 AT&T Mobility Not operational GSM 850 / UMTS 850 / UMTS 1900 Was Cingular Wireless + 310 390 Cellular One of East Texas TX-11 Acquisition, LLC Operational Unknown + 310 400 i CAN_GSM Wave Runner LLC (Guam) Operational GSM 1900 + 310 410 AT&T AT&T Mobility Operational GSM 850 / UMTS 850 / UMTS 1900 Was Cingular + 310 420 Cincinnati Bell Cincinnati Bell Wireless Operational GSM 1900 + 310 430 Alaska Digitel Operational GSM 1900 + 310 440 Cellular One Unknown GSM 1900 + 310 450 Viaero Viaero Wireless Operational GSM 850 + 310 460 Simmetry TMP Corporation Operational GSM 1900 + 310 480 Choice Phone Operational Unknown + 310 490 SunCom Operational Unknown + 310 500 Alltel Operational CDMA / EV-DO + 310 510 Airtel Airtel Wireless Operational Unknown Formerly PSC Wireless + 310 520 VeriSign Unknown Unknown + 310 530 West Virginia Wireless Operational Unknown + 310 540 Oklahoma Western Oklahoma Western Telephone Company Operational GSM 1900 + 310 560 AT&T AT&T Mobility Operational GSM 850 Formerly Cellular One DCS, Dobson + 310 570 Chinook Wireless Unknown GSM 1900 + 310 580 T-Mobile Not operational Unknown Formerly PCS One, discontinued + 310 590 Alltel Alltel Communications Inc Operational GSM 850 / GSM 1900 + 310 610 Epic Touch Elkhart Telephone Co. Operational GSM 1900 + 310 620 Coleman County Telecom Coleman County Telecommunications Operational GSM 1900 + 310 630 AmeriLink PCS Choice Wireless Operational Unknown + 310 640 Airadigm Airadigm Communications Operational GSM 1900 + 310 650 Jasper Jasper Wireless, inc Operational GSM 850 + 310 660 T-Mobile Not operational GSM 1900 Formerly DigiPhone PCS / DigiPH + 310 670 Northstar Operational Unknown + 310 680 AT&T AT&T Mobility Operational GSM 850 / GSM 1900 formerly Cellular One DCS, NPI Wireless + 310 690 Conestoga Conestoga Wireless Company Operational Unknown + 310 730 SeaMobile Operational Unknown + 310 740 Convey Convey Communications Inc. Operational Unknown + 310 760 Panhandle Panhandle Telecommunications Systems Inc. Operational Unknown + 310 770 i wireless Iowa Wireless Services Operational GSM 1900 + 310 780 Airlink PCS Not operational Unknown + 310 790 PinPoint PinPoint Communications Operational GSM 1900 + 310 800 T-Mobile Not operational GSM 1900 Formerly SOL Communications + 310 830 Caprock Caprock Cellular Operational GSM 850 + 310 850 Aeris Aeris Communications, Inc. Operational CDMA2000 850 / CDMA2000 1900 / GSM 850 / GSM 1900 + 310 870 PACE Kaplan Telephone Company Operational GSM 850 + 310 880 Advantage Advantage Cellular Systems Operational GSM 850 + 310 890 Wireless Alliance Wireless Alliance Operational GSM 850 / GSM 1900 + 310 900 Taylor Taylor Telecommunications Operational GSM 850 + 310 910 First Cellular First Cellular of Southern Illinois Operational GSM 850 + 310 940 Digital Cellular Digital Cellular of Texas Operational Unknown + 310 950 XIT Wireless Texas RSA 1 dba XIT Cellular Operational GSM 850 + 310 960 Plateau Wireless Operational Unknown + 310 970 Globalstar Operational Satellite + 310 980 AT&T Mobility Not operational GSM 850 / UMTS 850 / UMTS 1900 + 310 990 AT&T Mobility Not operational Unknown + 311 000 Mid-Tex Cellular Operational CDMA2000 850 / CDMA2000 1900 + 311 010 Chariton Valley Chariton Valley Communications Operational GSM 1900 + 311 020 Missouri RSA 5 Partnership Operational GSM 850 + 311 030 Indigo Wireless Operational GSM 1900 + 311 040 Commnet Wireless Operational GSM 850 / GSM 1900 + 311 050 Wikes Cellular Operational GSM 850 / GSM 1900 + 311 060 Farmers Cellular Farmers Cellular Telephone Operational GSM 850 / GSM 1900 + 311 070 Easterbrooke Easterbrooke Cellular Corporation Operational GSM 850 + 311 080 Pine Cellular Pine Telephone Company Operational GSM 850 + 311 090 Long Lines Wireless Long Lines Wireless LLC Operational GSM 1900 + 311 100 High Plains Wireless Operational GSM 1900 + 311 110 High Plains Wireless Operational GSM 1900 + 311 120 Choice Phone Operational Unknown + 311 130 Cell One Amarillo Operational GSM 850 + 311 140 Sprocket MBO Wireless Operational Unknown + 311 150 Wilkes Cellular Operational GSM 850 + 311 160 Endless Mountains Wireless Operational Unknown + 311 170 PetroCom Petrocom LLC Operational GSM 850 + 311 180 Cingular Wireless Not operational GSM 850 / UMTS 850 / UMTS 1900 + 311 190 Cellular Properties Unknown Unknown + 311 210 Farmers Cellular Farmers Cellular Telephone Operational GSM 850 / GSM 1900 + 316 010 Nextel Nextel Communications Operational iDEN 800 + 316 011 Southern Communications Services Operational iDEN 800 + +# ISO Country +UY Uruguay +# MCC MNC Brand Operator Status Bands Notes + 748 00 Ancel Operational TDMA 800 + 748 01 Ancel Operational GSM 1800 / UMTS 1900 / UMTS 2100 [122] + 748 07 Movistar Telefónica Móviles Uruguay Operational CDMA2000 850 / GSM 850 / GSM 1900 / UMTS 850 + 748 10 Claro AM Wireless Uruguay S.A. Operational GSM 1900 + +# ISO Country +UZ Uzbekistan +# MCC MNC Brand Operator Status Bands Notes + 434 01 Buztel Not operational GSM 900 / GSM 1800 + 434 02 Uzmacom Not operational Unknown + 434 04 Beeline Unitel LLC Operational GSM 900 / GSM 1800 [123] + 434 05 Ucell Coscom Operational GSM 900 [124] + 434 07 MTS Mobile TeleSystems (FE 'Uzdunrobita' Ltd) Operational GSM 900 / GSM 1800 +% 434 ? Perfectum Mobile Operational CDMA2000 800 + +# ISO Country +VU Vanuatu +# MCC MNC Brand Operator Status Bands Notes + 541 01 SMILE Telecom Vanuatu Ltd Operational GSM 900 + +# ISO Country +VA Vatican +# MCC MNC Brand Operator Status Bands Notes + 225 Not operational The Vatican is served by Italian networks TIM, Vodafone Italy, Wind and 3 + +# ISO Country +VE Venezuela +# MCC MNC Brand Operator Status Bands Notes + 734 01 Digitel Corporacion Digitel C.A. Operational GSM 900 Formerly INFONET + 734 02 Digitel Corporacion Digitel C.A. Operational GSM 900 + 734 03 Digitel Corporacion Digitel C.A. Operational GSM 900 Formerly DIGICEL + 734 04 movistar Telefónica Móviles Venezuela Operational CDMA2000 850 / GSM 850 + 734 06 Movilnet Telecomunicaciones Movilnet Operational CDMA2000 850 / GSM 850 GSM network not yet in commercial use + +# ISO Country +VN Vietnam +# MCC MNC Brand Operator Status Bands Notes + 452 01 MobiFone Vietnam Mobile Telecom Services Company Operational GSM 900 / GSM 1800 [125] + 452 02 Vinaphone Vietnam Telecom Services Company Operational GSM 900 + 452 03 S-Fone S-Telecom Operational CDMA + 452 04 Viettel Mobile Viettel Corporation Operational GSM 900 + 452 05 HT Mobile Hanoi Telecom Operational CDMA Preparing change to GSM + 452 06 E-Mobile EVN Telecom Operational CDMA + +# ISO Country +YE Yemen +# MCC MNC Brand Operator Status Bands Notes + 421 01 SabaFon Operational GSM 900 + 421 02 MTN SpaceTel Operational GSM 900 + +# ISO Country +ZM Zambia +# MCC MNC Brand Operator Status Bands Notes + 645 01 Zain Operational GSM 900 Former Celtel brand [126] + 645 02 MTN Operational GSM 900 / GSM 1800 Former Telecel brand [127] + 645 03 ZAMTEL Operational GSM 900 / GSM 1800 + +# ISO Country +ZW Zimbabwe +# MCC MNC Brand Operator Status Bands Notes + 648 01 Net*One Net*One Cellular (Pvt) Ltd Operational GSM 900 [128] + 648 03 Telecel Telecel Zimbabwe (PVT) Ltd Operational GSM 900 + 648 04 Econet Econet Wireless (Private) Limited Operational GSM 900 + +# ISO Country +-- International - Air +# MCC MNC Brand Operator Status Bands Notes + 901 14 AeroMobile AS Unknown GSM 1800 + 901 15 OnAir Switzerland Sarl Unknown GSM 1800 + +# ISO Country +-- International - Ground +# MCC MNC Brand Operator Status Bands Notes + 901 13 GSM.AQ Global Networks Switzerland Inc. Operational GSM 1800 Antarctica +88234 Network + +# ISO Country +-- Interntional - Satellite +# MCC MNC Brand Operator Status Bands Notes + 901 01 ICO ICO Satellite Management Operational Satellite + 901 02 Sense Communications International Operational Unknown + 901 03 Iridium Operational Satellite + 901 04 Globalstar Operational Satellite + 901 05 Thuraya RMSS Network Operational Satellite + 901 06 Thuraya Satellite Telecommunications Company Operational Satellite + 901 07 Ellipso Operational Unknown + 901 08 Operational Unknown Reserved for station identification where the mobile does not have a subscription IMSI + 901 09 Tele1 Europe Operational Unknown + 901 10 ACeS Operational Satellite + 901 11 Inmarsat Operational Satellite + 901 16 Jasper Systems Operational Unknown + 901 17 Navitas Operational GSM 1800 + 901 18 Cingular Wireless Operational GSM 900 / GSM 1900 / CDMA 1900 + 901 19 Vodafone Malta Maritime Operational Unknown + +# ISO Country +-- International - Sea +# MCC MNC Brand Operator Status Bands Notes + 901 12 MCP Maritime Communications Partner AS Operational GSM 1800 [129] [130] + diff --git a/2008/gsm-ccc2008/p1010012.jpg b/2008/gsm-ccc2008/p1010012.jpg new file mode 100755 index 0000000..d5bb0a0 Binary files /dev/null and b/2008/gsm-ccc2008/p1010012.jpg differ diff --git a/2008/gsm-ccc2008/p1010012_small.jpg b/2008/gsm-ccc2008/p1010012_small.jpg new file mode 100644 index 0000000..84db0ce Binary files /dev/null and b/2008/gsm-ccc2008/p1010012_small.jpg differ diff --git a/2008/gsm-ccc2008/p1010013.jpg b/2008/gsm-ccc2008/p1010013.jpg new file mode 100755 index 0000000..5f02c04 Binary files /dev/null and b/2008/gsm-ccc2008/p1010013.jpg differ diff --git a/2008/gsm-ccc2008/p1010013_small.jpg b/2008/gsm-ccc2008/p1010013_small.jpg new file mode 100644 index 0000000..2d0100d Binary files /dev/null and b/2008/gsm-ccc2008/p1010013_small.jpg differ diff --git a/2008/gsm-ccc2008/p1010020.jpg b/2008/gsm-ccc2008/p1010020.jpg new file mode 100755 index 0000000..6054343 Binary files /dev/null and b/2008/gsm-ccc2008/p1010020.jpg differ diff --git a/2008/gsm-ccc2008/p1010020_small.jpg b/2008/gsm-ccc2008/p1010020_small.jpg new file mode 100644 index 0000000..241da98 Binary files /dev/null and b/2008/gsm-ccc2008/p1010020_small.jpg differ diff --git a/2008/how_and_why_kernel-fht2008/how_and_why.mgp b/2008/how_and_why_kernel-fht2008/how_and_why.mgp new file mode 100644 index 0000000..9e82799 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/how_and_why.mgp @@ -0,0 +1,555 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + + +%center +%size 5 +How and why to work with the +Kernel Community + + +ASUS 2009 + +%center +%size 3 +by + +Harald Welte + +Linux Developer +Consultant + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the kernel community +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the kernel community +Introduction + +What is my affiliation with VIA + First contact with VIA in Q3/2007 + I became VIA Open Source Liaison in July 2008 + In this role, I help the VIA Linux Committee, PM's and Engineers + to understand the Linux and Open Source world + to communicate with the Open Source world + to interface to Linux community concerns and take them to VIA + to get VIA on track for world-class Linux support + I percieve myself more as Linux person inside VIA, not VIA person in Linux ;) + Sorry: I am an expert on Linux, not [yet] on VIA's products + so please excuse me if I say something wrong about VIA hardware + + I don't speak for VIA, just for myself + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +What is Free Software? + + Software that is + available in source code + is licensed in a way to allow unlimited distribution + allows modifications, and distribution of modifications + is not freeware, but copyrighted work + subject to license conditions, like any proprietary software + READ THE LICENSE + +What is Open Source? + Practically speaking, not much difference + Remainder of this presentation will use the term FOSS (Free and Open Source Software) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +What is the FOSS Community? + + Diverse + any individual can contribute + no formal membership required + every project has it's own culture, rules, ... + International + the internet boasted FOSS development + very common to have developers from all continents closely working together + Evolutionary + developers come and go, as their time permits + projects evolve over time, based on individual contributions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Development Process + + "Rough concensus and running code" + Decisions made by technically most skilled people + Reputation based hierarchy + Direct Communication between developers + Not driven by size of a target market + Release early, release often + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +FOSS Community likes + + generic solutions + portable code + vendor-independent architecture + clean code (coding style!) + open standards + good technical documentation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +FOSS Community dislikes + + monopolistic structures + e.g. intel-centrism + closed 'industry forums' with rediculous fees + e.g. Infiniband, SD Card Association + standard documents that cost rediculous fees + NDA's, if they prevent development of FOSS + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +The "Linux" System + + + What is a so-called Linux system + The Linux operating system kernel + The X.org X11 windowing system + Various non-graphical system-level software + A variety of different desktop systems (KDE, Gnome) + A variety of GUI programs + + In reality, this is a "Linux Distribution" + sometimes referred to as "GNU/Linux System" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Entities in the Linux system + + + Free Software projects and their developers + So-called "Distributors" who create "Distributions" + Contributors + Users + Vendors of proprietary Linux software + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +FOSS Projects + + + Free Software projects and their developers + Linux Kernel, Xorg, KDE, Gnome, Apache, Samba + + Role + Development of the individual program + Very focused on their individual project + Portability and flexibility usually main concern + Interact based on practical neccessity + + Usually they just provide source code, no object code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Distributions + + + Distributions (both commercial and community based) + Debian, Ubuntu, SuSE, Fedora, RedHat, Mandriva, ... + + Role + Aggregate thousands of individual FOSS programs + Find stable and compatible versions of those programs + Do 'software system integration' + Offer bianary software packages and installation media + Offer (security) updates to their users + Offer free/best effort or commercial support for professional users + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Contributors + + + Contributors + are people not part of a specific development team + usually "very active users" of a particular program + + Role + find / document / fix bugs that they find themselves + contribute bug reports, documentation or code + participate in discussion on features or problems + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Collaborative Software Development + + + How do projects communicate internally + Very rarely in physical meetings (people live too far apart) + Very rarely in phone conferences (people live in different timezones) + It's almost entirely text-based (e-mails, sometimes chat system) + + Mailing Lists + Usually every project has at least one list + Often there are separate lists for developers and users + Participation in the mailing list (reading and posting) open to anyone + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Collaborative Software Development + + + Project Management / Decision making + usually there's a small group (coreteam) or one leader + he is often the creator of the program, or it's maintainer + he has the final say in what is accepted or not + larger projects have 'subsystem maintainers' with delegated authority + so quite often, the structure is more hierarchical than people believe + rough concensus and running code + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux and binary compatibility + + + Linux and binary compatibility + Drivers usually run inside the OS kernel + Linux doesn't have any stable kernel-internal ABI + Linux doesn't even have stable kernel-internal API + Only the ABI to userspace is stable/fixed + + Thus, every minor Linux release can break in-kernel ABI+API + This is why binary-only drivers simply don't work! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux and binary compatibility + + + I still don't believe! Why not binary-only drivers + because every distribution has a different base kernel revision + because every distribution can change their kernel version e.g. as part of a security update + users will end up in incompatibility nightmare + so please, don't do it. It will never work for the majority of your users + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Implications for Hardware Vendors + + + Implications for Hardware Vendors + Users are used to get all software from the distribution + They are not used to separate vendor-provided driver CD's + Thus, drivers need to be in the distribution + Goal: getting drivers into the distrubution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Implications for Hardware Vendors + + + How to get drivers into distributions? + You can talk directly to the distributions + But: Their code architecture/style requirements are high + But: Many of them do not accept binary-only drivers + But: There are many, many distributions. + Linux is only a certain portion of the market + Every distribution is only a small portion of the portion + Thus, new goal: Get your drivers in the mainline project + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Implications for Hardware Vendors + + + Getting drivers in the mainline project + ensures that all distributions will pick up the driver + ensures out-of-the box support of your hardware on all distributions + ensures best user experience + ensures least internal R&D resources + no need to provide binaries for 3 versions of 5 distributions + no need to constantly try to catch up with distribution kernel updates + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Windows driver development model + + + MS defines stable APIs and ABIs for drivers and releases SDK (DDK) + All interfaces are specified by a single entity + The interface between driver and OS core is designed as binary interface + Hardware vendors develop drivers for their hardware component + Hardware vendors compile and package drivers for their hardware component + Hardware vendors sell bundle of hardware and software driver (object code) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux driver development model + + + A community-driven process creates in-kernel driver API's + Drivers are written against those APIs + Drivers are submitted to the kernel developes for inclusion into the OS source tree + Because all (good) drivers are inside one singe source tree, OS developers can (and will) refine the APIs whenever apropriate + There are no stable in-kernel API's, and especially no stable in-kernel ABI's + Linux development community releases kernel source code + Hardware vendor sells hardware only. The Windows driver CD is unused. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux driver development model + + + Without proper support from HW vendor, Most hardware drivers are developed by people inside that community + sadly most of them have no relation to the HW manufacturer + even more sadly, many of them have to work without or with insufficient documentation (reverse engineering) + + Good HW vendors understand this and support Linux properly! + + Linux is a big market by now + Servers + Embedded devices (est. > 40% of all wifi/dsl router + NAS appliances) + Increasingly popular on the Desktop + Recently: Netbooks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux driver development model, bad case timeline + + + Hardware vendor produces and ships hardware + Users end up getting that hardware without any Linux support + Somebody will start a driver and inquire about HW docs + Hardware vendor doesn't release docs + If hardware is popular enough, somebody will start reverse engineering and driver deevlopment + With some luck, the driver is actually useable or even finished before the HW product is EOL + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux driver development model, good case timeline #1 + + + Hardware vendor starts Linux driver development for new HW during HW R&D + Hardware vendor submits Linux driver for review / inclusion into mainline Linux kernel before HW ships + User installs HW and has immediate support by current Linux kernel + Hardware vendor publicly releases HW docs when the product ships, or even later + This enables the community to support/integrate the driver with new interfaces + It also enables the community to support hardware post EOL, at a point where the HW vendor + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Linux driver development model, good case timeline #2 + + + Hardware vendor releases HW documentation during HW R&D or no later than the product start shipping + Somebody in the Linux development community might be interested in writing a driver + in his spare time because of technical interest in the HW + as a paid contractor by the HW vendor + In such cases it helps if the HW vendor provides free samples to trustworthy developers + That driver is very likely to get merged mainline + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Why submit your code mainline? + + + Quantity-wise, most users use some Linux distribution + Every version of every distribution ships a different Linux kernel version + Most end-users are not capable of compiling their own kernel/drives (but way more than you think!) + Thus, + teaming up with one (or even two, three) Linux distributions only addresses a small segment of the user base + distributing your driver independently (bundled with hardware, ...) in a way that is ready-to-use for end-users is a ton of work and almost impossible to get right + the preferred option, with the least overhead for both user and HW vendor is to merge the driver mainline. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +How to submit your code mainline? + + + The FOSS code quality requirements are _extremely_ high + It's not a surprise that Linux is generally considered much more stable than competitors + Code needs to be maintainable + Linux supports old hardware ages beyond their EOL + Thin of MCA, VLB, Decnet, IPX networking, ... + So unless you respect the development culture, your code is likely to get rejected! + Post your driver at the respective mailing lists + Release early, release often + Don't hesitate to ask for feedback and suggestions if you are not 100% sure what is the right way to implement a certain feature + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +What about other FOSS OS's + + + There are quite a number of other non-Linux FOSS OSs, among them + FreeBSD, OpenBSD, NetBSD, ... + Those are not as small as you might think + FreeBSD often used for internet severs (web, mail, ...) + OpenBSD often used in high-security environments + NetBSD a little more prominent in embedded + So how does this affect a HW manufacturer + In case the OS is used in a targetted market, developing a driver might make sense + In most cases, open docuentation is all those projects need + In other cases, dual-licensing a driver (GPL+BSD) makes sense so *BSD can use code from the Linux driver + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Techncal differences + + + In the MS world, almost all interfaces are MS defined + In the Linux world, Linux is only the OS kernel + All other interfaces are specified by their respective projects + Often there are many alternatives, e.g. for graphical drivers + X.org project (X11 window server, typical desktop) + DirectFB project (popular in embedded devices like TV set-top boxes) + Qt/Embedded (popular in certain proprietary Linux-based mobile phones) + Every project has it's own culture, including but not limited to + coding style + patch submission guidelines + software license + communication methods + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 1. Much more communication + It's not a consumer/producer model, but cooperative! + Before you start implementation, talk to project maintainers + It's likely that someone has tried a similar thing before + It's likely that project maintainers have already an idea how to proceed with implementation + Avoid later hazzles when you want your code merged upstream + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 2. Interfaces + If there is a standard interface, use it + If insufficient: Don't invent new interfaces, try to extend existing ones + If there is an existing interface in a later (e.g. development) release upstream, backport that interface + Don't be afraid to touch API's if they're inefficient + Remember, you have the source and _can_ change them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 3. Merge your code upstream + Initially you basically have to create a fork + Development of upsteram project continues sometimes at high speed + If you keep it out of tree for too long time, conflicts arise + Submissions might get rejected in the first round + Cleanups needed, in coordination with upstream project + Code will eventually get merged + No further maintainance needed for synchronization between your contribution and the ongoing upstream development + Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 4. Write portable code + don't assume you're on 32bit CPU + don't assume you're on little endian + if you use assembly optimized code, put it in a self-contained module + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 5. Binary-only software will not be accepted + yes, there are corner cases like FCC regulation on softradios + but as a general rule of thumb, the community will not consider object code as a solution to any problem + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 6. Avoid fancy business models + If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Practical Rules + + 7. Show your support for the Community + By visibly contributing to the project + discussions + code + equipment + By funding developer meetings + By making rebated hardware offers to developers + By contracting / sponsoring / hiring developers from the community + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How and why to work with the Linux kernel community +Thanks + + Please share your questions and doubts now! + + Please contact me at any later point, if you have questions + + I'm here to help understand Linux and Open Source! + + HaraldWelte@viatech.com + laforge@gnumonks.org + hwelte@hmw-consulting.de +%center +Thanks for your Attention diff --git a/2008/how_and_why_kernel-fht2008/how_and_why.pdf b/2008/how_and_why_kernel-fht2008/how_and_why.pdf new file mode 100644 index 0000000..3f18668 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/how_and_why.pdf differ diff --git a/2008/how_and_why_kernel-fht2008/html/index.html b/2008/how_and_why_kernel-fht2008/html/index.html new file mode 100644 index 0000000..d42fbdb --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/index.html @@ -0,0 +1,45 @@ + +MagicPoint presentation foils + +Page 1 +Page 2 +Page 3 +Page 4 +Page 5 +Page 6 +Page 7 +Page 8 +Page 9 +Page 10 +Page 11 +Page 12 +Page 13 +Page 14 +Page 15 +Page 16 +Page 17 +Page 18 +Page 19 +Page 20 +Page 21 +Page 22 +Page 23 +Page 24 +Page 25 +Page 26 +Page 27 +Page 28 +Page 29 +Page 30 +Page 31 +Page 32 +Page 33 +Page 34 +Page 35 +Page 36 +Page 37 +Page 38 +
+Generated by MagicPoint +
+ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00001.html b/2008/how_and_why_kernel-fht2008/html/mgp00001.html new file mode 100644 index 0000000..a0cc570 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00001.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 1: How and why to work with the
+
+Page 1
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00001.png b/2008/how_and_why_kernel-fht2008/html/mgp00001.png new file mode 100644 index 0000000..8761b07 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00001.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00001.txt b/2008/how_and_why_kernel-fht2008/html/mgp00001.txt new file mode 100644 index 0000000..3d54ef4 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00001.txt @@ -0,0 +1,16 @@ + + +How and why to work with the +Kernel Community + + +FreedomHEC Taipei 2008 + +by + +Harald Welte + +Linux Developer +Consultant +VIA Open Source Liaison + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00002.html b/2008/how_and_why_kernel-fht2008/html/mgp00002.html new file mode 100644 index 0000000..856fe1f --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00002.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 2: How and why to work with the kernel community
+
+Page 2
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00002.png b/2008/how_and_why_kernel-fht2008/html/mgp00002.png new file mode 100644 index 0000000..c0c89fc Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00002.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00002.txt b/2008/how_and_why_kernel-fht2008/html/mgp00002.txt new file mode 100644 index 0000000..1ba7a9a --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00002.txt @@ -0,0 +1,14 @@ +How and why to work with the kernel community +Introduction + +Who is speaking to you? +an independent Free Software developer, consultant and trainer +13 years experience using/deploying and developing for Linux on server and workstation +10 years professional experience doing Linux system + kernel level development +strong focus on network security and embedded +expert in Free and Open Source Software (FOSS) copyright and licensing +digital board-level hardware design, esp. embedded systems +active developer and contributor to many FOSS projects +thus, a techie, who will therefore not have fancy animated slides ;) + + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00003.html b/2008/how_and_why_kernel-fht2008/html/mgp00003.html new file mode 100644 index 0000000..4780321 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00003.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 3: How and why to work with the kernel community
+
+Page 3
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00003.png b/2008/how_and_why_kernel-fht2008/html/mgp00003.png new file mode 100644 index 0000000..df1421a Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00003.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00003.txt b/2008/how_and_why_kernel-fht2008/html/mgp00003.txt new file mode 100644 index 0000000..ae6f41e --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00003.txt @@ -0,0 +1,17 @@ +How and why to work with the kernel community +Introduction + +What is my affiliation with VIA +First contact with VIA in Q3/2007 +I became VIA Open Source Liaison in July 2008 +In this role, I help the VIA Linux Committee, PM's and Engineers +to understand the Linux and Open Source world +to communicate with the Open Source world +to interface to Linux community concerns and take them to VIA +to get VIA on track for world-class Linux support +I percieve myself more as Linux person inside VIA, not VIA person in Linux ;) +Sorry: I am an expert on Linux, not [yet] on VIA's products +so please excuse me if I say something wrong about VIA hardware + +I don't speak for VIA, just for myself + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00004.html b/2008/how_and_why_kernel-fht2008/html/mgp00004.html new file mode 100644 index 0000000..2da92b2 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00004.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 4: How and why to work with the Linux kernel community
+
+Page 4
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00004.png b/2008/how_and_why_kernel-fht2008/html/mgp00004.png new file mode 100644 index 0000000..c7b7a8d Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00004.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00004.txt b/2008/how_and_why_kernel-fht2008/html/mgp00004.txt new file mode 100644 index 0000000..54c4ee7 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00004.txt @@ -0,0 +1,15 @@ +How and why to work with the Linux kernel community +What is Free Software? + +Software that is +available in source code +is licensed in a way to allow unlimited distribution +allows modifications, and distribution of modifications +is not freeware, but copyrighted work +subject to license conditions, like any proprietary software +READ THE LICENSE + +What is Open Source? +Practically speaking, not much difference +Remainder of this presentation will use the term FOSS (Free and Open Source Software) + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00005.html b/2008/how_and_why_kernel-fht2008/html/mgp00005.html new file mode 100644 index 0000000..61b402d --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00005.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 5: How and why to work with the Linux kernel community
+
+Page 5
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00005.png b/2008/how_and_why_kernel-fht2008/html/mgp00005.png new file mode 100644 index 0000000..1650403 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00005.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00005.txt b/2008/how_and_why_kernel-fht2008/html/mgp00005.txt new file mode 100644 index 0000000..49d0b53 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00005.txt @@ -0,0 +1,14 @@ +How and why to work with the Linux kernel community +What is the FOSS Community? + +Diverse +any individual can contribute +no formal membership required +every project has it's own culture, rules, ... +International +the internet boasted FOSS development +very common to have developers from all continents closely working together +Evolutionary +developers come and go, as their time permits +projects evolve over time, based on individual contributions + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00006.html b/2008/how_and_why_kernel-fht2008/html/mgp00006.html new file mode 100644 index 0000000..68b8f99 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00006.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 6: How and why to work with the Linux kernel community
+
+Page 6
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00006.png b/2008/how_and_why_kernel-fht2008/html/mgp00006.png new file mode 100644 index 0000000..2dbed1c Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00006.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00006.txt b/2008/how_and_why_kernel-fht2008/html/mgp00006.txt new file mode 100644 index 0000000..e835e0d --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00006.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +Development Process + +"Rough concensus and running code" +Decisions made by technically most skilled people +Reputation based hierarchy +Direct Communication between developers +Not driven by size of a target market +Release early, release often + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00007.html b/2008/how_and_why_kernel-fht2008/html/mgp00007.html new file mode 100644 index 0000000..6b3e528 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00007.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 7: How and why to work with the Linux kernel community
+
+Page 7
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00007.png b/2008/how_and_why_kernel-fht2008/html/mgp00007.png new file mode 100644 index 0000000..7843ef3 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00007.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00007.txt b/2008/how_and_why_kernel-fht2008/html/mgp00007.txt new file mode 100644 index 0000000..c6069ec --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00007.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +FOSS Community likes + +generic solutions +portable code +vendor-independent architecture +clean code (coding style!) +open standards +good technical documentation + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00008.html b/2008/how_and_why_kernel-fht2008/html/mgp00008.html new file mode 100644 index 0000000..2b2c36e --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00008.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 8: How and why to work with the Linux kernel community
+
+Page 8
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00008.png b/2008/how_and_why_kernel-fht2008/html/mgp00008.png new file mode 100644 index 0000000..e24bfcd Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00008.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00008.txt b/2008/how_and_why_kernel-fht2008/html/mgp00008.txt new file mode 100644 index 0000000..2e381df --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00008.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +FOSS Community dislikes + +monopolistic structures +e.g. intel-centrism +closed 'industry forums' with rediculous fees +e.g. Infiniband, SD Card Association +standard documents that cost rediculous fees +NDA's, if they prevent development of FOSS + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00009.html b/2008/how_and_why_kernel-fht2008/html/mgp00009.html new file mode 100644 index 0000000..a090e74 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00009.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 9: How and why to work with the Linux kernel community
+
+Page 9
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00009.png b/2008/how_and_why_kernel-fht2008/html/mgp00009.png new file mode 100644 index 0000000..aefde40 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00009.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00009.txt b/2008/how_and_why_kernel-fht2008/html/mgp00009.txt new file mode 100644 index 0000000..7e3cb63 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00009.txt @@ -0,0 +1,14 @@ +How and why to work with the Linux kernel community +The "Linux" System + + +What is a so-called Linux system +The Linux operating system kernel +The X.org X11 windowing system +Various non-graphical system-level software +A variety of different desktop systems (KDE, Gnome) +A variety of GUI programs + +In reality, this is a "Linux Distribution" +sometimes referred to as "GNU/Linux System" + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00010.html b/2008/how_and_why_kernel-fht2008/html/mgp00010.html new file mode 100644 index 0000000..78fe116 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00010.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 10: How and why to work with the Linux kernel community
+
+Page 10
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00010.png b/2008/how_and_why_kernel-fht2008/html/mgp00010.png new file mode 100644 index 0000000..60144c3 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00010.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00010.txt b/2008/how_and_why_kernel-fht2008/html/mgp00010.txt new file mode 100644 index 0000000..c78cd44 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00010.txt @@ -0,0 +1,11 @@ +How and why to work with the Linux kernel community +Entities in the Linux system + + +Free Software projects and their developers +So-called "Distributors" who create "Distributions" +Contributors +Users +Vendors of proprietary Linux software + + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00011.html b/2008/how_and_why_kernel-fht2008/html/mgp00011.html new file mode 100644 index 0000000..7dede14 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00011.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 11: How and why to work with the Linux kernel community
+
+Page 11
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00011.png b/2008/how_and_why_kernel-fht2008/html/mgp00011.png new file mode 100644 index 0000000..dbce51f Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00011.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00011.txt b/2008/how_and_why_kernel-fht2008/html/mgp00011.txt new file mode 100644 index 0000000..3bbbc01 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00011.txt @@ -0,0 +1,15 @@ +How and why to work with the Linux kernel community +FOSS Projects + + +Free Software projects and their developers +Linux Kernel, Xorg, KDE, Gnome, Apache, Samba + +Role +Development of the individual program +Very focused on their individual project +Portability and flexibility usually main concern +Interact based on practical neccessity + +Usually they just provide source code, no object code + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00012.html b/2008/how_and_why_kernel-fht2008/html/mgp00012.html new file mode 100644 index 0000000..239ae80 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00012.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 12: How and why to work with the Linux kernel community
+
+Page 12
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00012.png b/2008/how_and_why_kernel-fht2008/html/mgp00012.png new file mode 100644 index 0000000..a06395a Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00012.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00012.txt b/2008/how_and_why_kernel-fht2008/html/mgp00012.txt new file mode 100644 index 0000000..5135ff3 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00012.txt @@ -0,0 +1,15 @@ +How and why to work with the Linux kernel community +Distributions + + +Distributions (both commercial and community based) +Debian, Ubuntu, SuSE, Fedora, RedHat, Mandriva, ... + +Role +Aggregate thousands of individual FOSS programs +Find stable and compatible versions of those programs +Do 'software system integration' +Offer bianary software packages and installation media +Offer (security) updates to their users +Offer free/best effort or commercial support for professional users + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00013.html b/2008/how_and_why_kernel-fht2008/html/mgp00013.html new file mode 100644 index 0000000..a866e3f --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00013.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 13: How and why to work with the Linux kernel community
+
+Page 13
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00013.png b/2008/how_and_why_kernel-fht2008/html/mgp00013.png new file mode 100644 index 0000000..503f337 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00013.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00013.txt b/2008/how_and_why_kernel-fht2008/html/mgp00013.txt new file mode 100644 index 0000000..6682e20 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00013.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Contributors + + +Contributors +are people not part of a specific development team +usually "very active users" of a particular program + +Role +find / document / fix bugs that they find themselves +contribute bug reports, documentation or code +participate in discussion on features or problems + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00014.html b/2008/how_and_why_kernel-fht2008/html/mgp00014.html new file mode 100644 index 0000000..a6362b5 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00014.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 14: How and why to work with the Linux kernel community
+
+Page 14
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00014.png b/2008/how_and_why_kernel-fht2008/html/mgp00014.png new file mode 100644 index 0000000..d2fb326 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00014.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00014.txt b/2008/how_and_why_kernel-fht2008/html/mgp00014.txt new file mode 100644 index 0000000..9a06cd0 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00014.txt @@ -0,0 +1,14 @@ +How and why to work with the Linux kernel community +Collaborative Software Development + + +How do projects communicate internally +Very rarely in physical meetings (people live too far apart) +Very rarely in phone conferences (people live in different timezones) +It's almost entirely text-based (e-mails, sometimes chat system) + +Mailing Lists +Usually every project has at least one list +Often there are separate lists for developers and users +Participation in the mailing list (reading and posting) open to anyone + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00015.html b/2008/how_and_why_kernel-fht2008/html/mgp00015.html new file mode 100644 index 0000000..e2b7f6c --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00015.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 15: How and why to work with the Linux kernel community
+
+Page 15
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00015.png b/2008/how_and_why_kernel-fht2008/html/mgp00015.png new file mode 100644 index 0000000..227d0ea Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00015.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00015.txt b/2008/how_and_why_kernel-fht2008/html/mgp00015.txt new file mode 100644 index 0000000..1382ee5 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00015.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Collaborative Software Development + + +Project Management / Decision making +usually there's a small group (coreteam) or one leader +he is often the creator of the program, or it's maintainer +he has the final say in what is accepted or not +larger projects have 'subsystem maintainers' with delegated authority +so quite often, the structure is more hierarchical than people believe +rough concensus and running code + + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00016.html b/2008/how_and_why_kernel-fht2008/html/mgp00016.html new file mode 100644 index 0000000..6244454 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00016.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 16: How and why to work with the Linux kernel community
+
+Page 16
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00016.png b/2008/how_and_why_kernel-fht2008/html/mgp00016.png new file mode 100644 index 0000000..b3c58ae Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00016.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00016.txt b/2008/how_and_why_kernel-fht2008/html/mgp00016.txt new file mode 100644 index 0000000..25a974a --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00016.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Linux and binary compatibility + + +Linux and binary compatibility +Drivers usually run inside the OS kernel +Linux doesn't have any stable kernel-internal ABI +Linux doesn't even have stable kernel-internal API +Only the ABI to userspace is stable/fixed + +Thus, every minor Linux release can break in-kernel ABI+API +This is why binary-only drivers simply don't work! + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00017.html b/2008/how_and_why_kernel-fht2008/html/mgp00017.html new file mode 100644 index 0000000..f37f1c8 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00017.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 17: How and why to work with the Linux kernel community
+
+Page 17
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00017.png b/2008/how_and_why_kernel-fht2008/html/mgp00017.png new file mode 100644 index 0000000..db9b7e1 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00017.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00017.txt b/2008/how_and_why_kernel-fht2008/html/mgp00017.txt new file mode 100644 index 0000000..2f0cf70 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00017.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +Linux and binary compatibility + + +I still don't believe! Why not binary-only drivers +because every distribution has a different base kernel revision +because every distribution can change their kernel version e.g. as part of a security update +users will end up in incompatibility nightmare +so please, don't do it. It will never work for the majority of your users + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00018.html b/2008/how_and_why_kernel-fht2008/html/mgp00018.html new file mode 100644 index 0000000..5fdbeb8 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00018.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 18: How and why to work with the Linux kernel community
+
+Page 18
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00018.png b/2008/how_and_why_kernel-fht2008/html/mgp00018.png new file mode 100644 index 0000000..798e484 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00018.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00018.txt b/2008/how_and_why_kernel-fht2008/html/mgp00018.txt new file mode 100644 index 0000000..5f189e5 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00018.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +Implications for Hardware Vendors + + +Implications for Hardware Vendors +Users are used to get all software from the distribution +They are not used to separate vendor-provided driver CD's +Thus, drivers need to be in the distribution +Goal: getting drivers into the distrubution + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00019.html b/2008/how_and_why_kernel-fht2008/html/mgp00019.html new file mode 100644 index 0000000..f42065f --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00019.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 19: How and why to work with the Linux kernel community
+
+Page 19
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00019.png b/2008/how_and_why_kernel-fht2008/html/mgp00019.png new file mode 100644 index 0000000..b7f3cd8 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00019.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00019.txt b/2008/how_and_why_kernel-fht2008/html/mgp00019.txt new file mode 100644 index 0000000..8a77a15 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00019.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Implications for Hardware Vendors + + +How to get drivers into distributions? +You can talk directly to the distributions +But: Their code architecture/style requirements are high +But: Many of them do not accept binary-only drivers +But: There are many, many distributions. +Linux is only a certain portion of the market +Every distribution is only a small portion of the portion +Thus, new goal: Get your drivers in the mainline project + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00020.html b/2008/how_and_why_kernel-fht2008/html/mgp00020.html new file mode 100644 index 0000000..c471d27 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00020.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 20: How and why to work with the Linux kernel community
+
+Page 20
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00020.png b/2008/how_and_why_kernel-fht2008/html/mgp00020.png new file mode 100644 index 0000000..d0c61ae Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00020.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00020.txt b/2008/how_and_why_kernel-fht2008/html/mgp00020.txt new file mode 100644 index 0000000..9ae440a --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00020.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Implications for Hardware Vendors + + +Getting drivers in the mainline project +ensures that all distributions will pick up the driver +ensures out-of-the box support of your hardware on all distributions +ensures best user experience +ensures least internal R&D resources +no need to provide binaries for 3 versions of 5 distributions +no need to constantly try to catch up with distribution kernel updates + + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00021.html b/2008/how_and_why_kernel-fht2008/html/mgp00021.html new file mode 100644 index 0000000..06e5e95 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00021.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 21: How and why to work with the Linux kernel community
+
+Page 21
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00021.png b/2008/how_and_why_kernel-fht2008/html/mgp00021.png new file mode 100644 index 0000000..223af95 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00021.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00021.txt b/2008/how_and_why_kernel-fht2008/html/mgp00021.txt new file mode 100644 index 0000000..aa840f5 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00021.txt @@ -0,0 +1,11 @@ +How and why to work with the Linux kernel community +Windows driver development model + + +MS defines stable APIs and ABIs for drivers and releases SDK (DDK) +All interfaces are specified by a single entity +The interface between driver and OS core is designed as binary interface +Hardware vendors develop drivers for their hardware component +Hardware vendors compile and package drivers for their hardware component +Hardware vendors sell bundle of hardware and software driver (object code) + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00022.html b/2008/how_and_why_kernel-fht2008/html/mgp00022.html new file mode 100644 index 0000000..26ab429 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00022.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 22: How and why to work with the Linux kernel community
+
+Page 22
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00022.png b/2008/how_and_why_kernel-fht2008/html/mgp00022.png new file mode 100644 index 0000000..774adb5 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00022.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00022.txt b/2008/how_and_why_kernel-fht2008/html/mgp00022.txt new file mode 100644 index 0000000..a4384e5 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00022.txt @@ -0,0 +1,12 @@ +How and why to work with the Linux kernel community +Linux driver development model + + +A community-driven process creates in-kernel driver API's +Drivers are written against those APIs +Drivers are submitted to the kernel developes for inclusion into the OS source tree +Because all (good) drivers are inside one singe source tree, OS developers can (and will) refine the APIs whenever apropriate +There are no stable in-kernel API's, and especially no stable in-kernel ABI's +Linux development community releases kernel source code +Hardware vendor sells hardware only. The Windows driver CD is unused. + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00023.html b/2008/how_and_why_kernel-fht2008/html/mgp00023.html new file mode 100644 index 0000000..abd5263 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00023.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 23: How and why to work with the Linux kernel community
+
+Page 23
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00023.png b/2008/how_and_why_kernel-fht2008/html/mgp00023.png new file mode 100644 index 0000000..8be6462 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00023.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00023.txt b/2008/how_and_why_kernel-fht2008/html/mgp00023.txt new file mode 100644 index 0000000..220e71d --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00023.txt @@ -0,0 +1,16 @@ +How and why to work with the Linux kernel community +Linux driver development model + + +Without proper support from HW vendor, Most hardware drivers are developed by people inside that community +sadly most of them have no relation to the HW manufacturer +even more sadly, many of them have to work without or with insufficient documentation (reverse engineering) + +Good HW vendors understand this and support Linux properly! + +Linux is a big market by now +Servers +Embedded devices (est. > 40% of all wifi/dsl router + NAS appliances) +Increasingly popular on the Desktop +Recently: Netbooks + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00024.html b/2008/how_and_why_kernel-fht2008/html/mgp00024.html new file mode 100644 index 0000000..438f4f6 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00024.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 24: How and why to work with the Linux kernel community
+
+Page 24
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00024.png b/2008/how_and_why_kernel-fht2008/html/mgp00024.png new file mode 100644 index 0000000..4fffaf4 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00024.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00024.txt b/2008/how_and_why_kernel-fht2008/html/mgp00024.txt new file mode 100644 index 0000000..2cdadaa --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00024.txt @@ -0,0 +1,11 @@ +How and why to work with the Linux kernel community +Linux driver development model, bad case timeline + + +Hardware vendor produces and ships hardware +Users end up getting that hardware without any Linux support +Somebody will start a driver and inquire about HW docs +Hardware vendor doesn't release docs +If hardware is popular enough, somebody will start reverse engineering and driver deevlopment +With some luck, the driver is actually useable or even finished before the HW product is EOL + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00025.html b/2008/how_and_why_kernel-fht2008/html/mgp00025.html new file mode 100644 index 0000000..5a4e8d6 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00025.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 25: How and why to work with the Linux kernel community
+
+Page 25
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00025.png b/2008/how_and_why_kernel-fht2008/html/mgp00025.png new file mode 100644 index 0000000..231ca75 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00025.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00025.txt b/2008/how_and_why_kernel-fht2008/html/mgp00025.txt new file mode 100644 index 0000000..32bc9c7 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00025.txt @@ -0,0 +1,11 @@ +How and why to work with the Linux kernel community +Linux driver development model, good case timeline #1 + + +Hardware vendor starts Linux driver development for new HW during HW R&D +Hardware vendor submits Linux driver for review / inclusion into mainline Linux kernel before HW ships +User installs HW and has immediate support by current Linux kernel +Hardware vendor publicly releases HW docs when the product ships, or even later +This enables the community to support/integrate the driver with new interfaces +It also enables the community to support hardware post EOL, at a point where the HW vendor + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00026.html b/2008/how_and_why_kernel-fht2008/html/mgp00026.html new file mode 100644 index 0000000..67bd053 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00026.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 26: How and why to work with the Linux kernel community
+
+Page 26
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00026.png b/2008/how_and_why_kernel-fht2008/html/mgp00026.png new file mode 100644 index 0000000..9a85c5b Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00026.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00026.txt b/2008/how_and_why_kernel-fht2008/html/mgp00026.txt new file mode 100644 index 0000000..150d39f --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00026.txt @@ -0,0 +1,11 @@ +How and why to work with the Linux kernel community +Linux driver development model, good case timeline #2 + + +Hardware vendor releases HW documentation during HW R&D or no later than the product start shipping +Somebody in the Linux development community might be interested in writing a driver +in his spare time because of technical interest in the HW +as a paid contractor by the HW vendor +In such cases it helps if the HW vendor provides free samples to trustworthy developers +That driver is very likely to get merged mainline + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00027.html b/2008/how_and_why_kernel-fht2008/html/mgp00027.html new file mode 100644 index 0000000..ffe6f54 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00027.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 27: How and why to work with the Linux kernel community
+
+Page 27
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00027.png b/2008/how_and_why_kernel-fht2008/html/mgp00027.png new file mode 100644 index 0000000..87d718a Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00027.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00027.txt b/2008/how_and_why_kernel-fht2008/html/mgp00027.txt new file mode 100644 index 0000000..6143c15 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00027.txt @@ -0,0 +1,12 @@ +How and why to work with the Linux kernel community +Why submit your code mainline? + + +Quantity-wise, most users use some Linux distribution +Every version of every distribution ships a different Linux kernel version +Most end-users are not capable of compiling their own kernel/drives (but way more than you think!) +Thus, +teaming up with one (or even two, three) Linux distributions only addresses a small segment of the user base +distributing your driver independently (bundled with hardware, ...) in a way that is ready-to-use for end-users is a ton of work and almost impossible to get right +the preferred option, with the least overhead for both user and HW vendor is to merge the driver mainline. + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00028.html b/2008/how_and_why_kernel-fht2008/html/mgp00028.html new file mode 100644 index 0000000..d14bfdc --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00028.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 28: How and why to work with the Linux kernel community
+
+Page 28
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00028.png b/2008/how_and_why_kernel-fht2008/html/mgp00028.png new file mode 100644 index 0000000..73cf956 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00028.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00028.txt b/2008/how_and_why_kernel-fht2008/html/mgp00028.txt new file mode 100644 index 0000000..f53d9bb --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00028.txt @@ -0,0 +1,14 @@ +How and why to work with the Linux kernel community +How to submit your code mainline? + + +The FOSS code quality requirements are _extremely_ high +It's not a surprise that Linux is generally considered much more stable than competitors +Code needs to be maintainable +Linux supports old hardware ages beyond their EOL +Thin of MCA, VLB, Decnet, IPX networking, ... +So unless you respect the development culture, your code is likely to get rejected! +Post your driver at the respective mailing lists +Release early, release often +Don't hesitate to ask for feedback and suggestions if you are not 100% sure what is the right way to implement a certain feature + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00029.html b/2008/how_and_why_kernel-fht2008/html/mgp00029.html new file mode 100644 index 0000000..033a660 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00029.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 29: How and why to work with the Linux kernel community
+
+Page 29
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00029.png b/2008/how_and_why_kernel-fht2008/html/mgp00029.png new file mode 100644 index 0000000..bdc8be6 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00029.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00029.txt b/2008/how_and_why_kernel-fht2008/html/mgp00029.txt new file mode 100644 index 0000000..b41dae8 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00029.txt @@ -0,0 +1,15 @@ +How and why to work with the Linux kernel community +What about other FOSS OS's + + +There are quite a number of other non-Linux FOSS OSs, among them +FreeBSD, OpenBSD, NetBSD, ... +Those are not as small as you might think +FreeBSD often used for internet severs (web, mail, ...) +OpenBSD often used in high-security environments +NetBSD a little more prominent in embedded +So how does this affect a HW manufacturer +In case the OS is used in a targetted market, developing a driver might make sense +In most cases, open docuentation is all those projects need +In other cases, dual-licensing a driver (GPL+BSD) makes sense so *BSD can use code from the Linux driver + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00030.html b/2008/how_and_why_kernel-fht2008/html/mgp00030.html new file mode 100644 index 0000000..2bcde11 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00030.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 30: How and why to work with the Linux kernel community
+
+Page 30
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00030.png b/2008/how_and_why_kernel-fht2008/html/mgp00030.png new file mode 100644 index 0000000..e1a5b67 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00030.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00030.txt b/2008/how_and_why_kernel-fht2008/html/mgp00030.txt new file mode 100644 index 0000000..8aa902b --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00030.txt @@ -0,0 +1,17 @@ +How and why to work with the Linux kernel community +Techncal differences + + +In the MS world, almost all interfaces are MS defined +In the Linux world, Linux is only the OS kernel +All other interfaces are specified by their respective projects +Often there are many alternatives, e.g. for graphical drivers +X.org project (X11 window server, typical desktop) +DirectFB project (popular in embedded devices like TV set-top boxes) +Qt/Embedded (popular in certain proprietary Linux-based mobile phones) +Every project has it's own culture, including but not limited to +coding style +patch submission guidelines +software license +communication methods + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00031.html b/2008/how_and_why_kernel-fht2008/html/mgp00031.html new file mode 100644 index 0000000..a04630a --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00031.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 31: How and why to work with the Linux kernel community
+
+Page 31
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00031.png b/2008/how_and_why_kernel-fht2008/html/mgp00031.png new file mode 100644 index 0000000..5d2868d Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00031.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00031.txt b/2008/how_and_why_kernel-fht2008/html/mgp00031.txt new file mode 100644 index 0000000..1663b68 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00031.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +Practical Rules + +1. Much more communication +It's not a consumer/producer model, but cooperative! +Before you start implementation, talk to project maintainers +It's likely that someone has tried a similar thing before +It's likely that project maintainers have already an idea how to proceed with implementation +Avoid later hazzles when you want your code merged upstream + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00032.html b/2008/how_and_why_kernel-fht2008/html/mgp00032.html new file mode 100644 index 0000000..13548ff --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00032.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 32: How and why to work with the Linux kernel community
+
+Page 32
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00032.png b/2008/how_and_why_kernel-fht2008/html/mgp00032.png new file mode 100644 index 0000000..e69f7ee Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00032.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00032.txt b/2008/how_and_why_kernel-fht2008/html/mgp00032.txt new file mode 100644 index 0000000..2b89c21 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00032.txt @@ -0,0 +1,10 @@ +How and why to work with the Linux kernel community +Practical Rules + +2. Interfaces +If there is a standard interface, use it +If insufficient: Don't invent new interfaces, try to extend existing ones +If there is an existing interface in a later (e.g. development) release upstream, backport that interface +Don't be afraid to touch API's if they're inefficient +Remember, you have the source and _can_ change them + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00033.html b/2008/how_and_why_kernel-fht2008/html/mgp00033.html new file mode 100644 index 0000000..a5e1194 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00033.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 33: How and why to work with the Linux kernel community
+
+Page 33
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00033.png b/2008/how_and_why_kernel-fht2008/html/mgp00033.png new file mode 100644 index 0000000..a9992bf Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00033.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00033.txt b/2008/how_and_why_kernel-fht2008/html/mgp00033.txt new file mode 100644 index 0000000..1ade7eb --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00033.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Practical Rules + +3. Merge your code upstream +Initially you basically have to create a fork +Development of upsteram project continues sometimes at high speed +If you keep it out of tree for too long time, conflicts arise +Submissions might get rejected in the first round +Cleanups needed, in coordination with upstream project +Code will eventually get merged +No further maintainance needed for synchronization between your contribution and the ongoing upstream development +Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00034.html b/2008/how_and_why_kernel-fht2008/html/mgp00034.html new file mode 100644 index 0000000..c10da6c --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00034.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 34: How and why to work with the Linux kernel community
+
+Page 34
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00034.png b/2008/how_and_why_kernel-fht2008/html/mgp00034.png new file mode 100644 index 0000000..d2460e9 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00034.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00034.txt b/2008/how_and_why_kernel-fht2008/html/mgp00034.txt new file mode 100644 index 0000000..c57b356 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00034.txt @@ -0,0 +1,8 @@ +How and why to work with the Linux kernel community +Practical Rules + +4. Write portable code +don't assume you're on 32bit CPU +don't assume you're on little endian +if you use assembly optimized code, put it in a self-contained module + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00035.html b/2008/how_and_why_kernel-fht2008/html/mgp00035.html new file mode 100644 index 0000000..3d66281 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00035.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 35: How and why to work with the Linux kernel community
+
+Page 35
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00035.png b/2008/how_and_why_kernel-fht2008/html/mgp00035.png new file mode 100644 index 0000000..a901c34 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00035.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00035.txt b/2008/how_and_why_kernel-fht2008/html/mgp00035.txt new file mode 100644 index 0000000..a5a647e --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00035.txt @@ -0,0 +1,7 @@ +How and why to work with the Linux kernel community +Practical Rules + +5. Binary-only software will not be accepted +yes, there are corner cases like FCC regulation on softradios +but as a general rule of thumb, the community will not consider object code as a solution to any problem + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00036.html b/2008/how_and_why_kernel-fht2008/html/mgp00036.html new file mode 100644 index 0000000..c0155fc --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00036.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 36: How and why to work with the Linux kernel community
+
+Page 36
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00036.png b/2008/how_and_why_kernel-fht2008/html/mgp00036.png new file mode 100644 index 0000000..d21a5f6 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00036.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00036.txt b/2008/how_and_why_kernel-fht2008/html/mgp00036.txt new file mode 100644 index 0000000..eca6907 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00036.txt @@ -0,0 +1,6 @@ +How and why to work with the Linux kernel community +Practical Rules + +6. Avoid fancy business models +If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware. + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00037.html b/2008/how_and_why_kernel-fht2008/html/mgp00037.html new file mode 100644 index 0000000..d4931c6 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00037.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 37: How and why to work with the Linux kernel community
+
+Page 37
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00037.png b/2008/how_and_why_kernel-fht2008/html/mgp00037.png new file mode 100644 index 0000000..3c63b25 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00037.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00037.txt b/2008/how_and_why_kernel-fht2008/html/mgp00037.txt new file mode 100644 index 0000000..d84c50e --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00037.txt @@ -0,0 +1,14 @@ +How and why to work with the Linux kernel community +Practical Rules + +7. Show your support for the Community +By visibly contributing to the project +discussions +code +equipment +By funding developer meetings +By making rebated hardware offers to developers +By contracting / sponsoring / hiring developers from the community + + + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00038.html b/2008/how_and_why_kernel-fht2008/html/mgp00038.html new file mode 100644 index 0000000..8f51709 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00038.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 38: How and why to work with the Linux kernel community
+
+Page 38
+
Generated by MagicPoint + diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00038.png b/2008/how_and_why_kernel-fht2008/html/mgp00038.png new file mode 100644 index 0000000..d8a4d77 Binary files /dev/null and b/2008/how_and_why_kernel-fht2008/html/mgp00038.png differ diff --git a/2008/how_and_why_kernel-fht2008/html/mgp00038.txt b/2008/how_and_why_kernel-fht2008/html/mgp00038.txt new file mode 100644 index 0000000..06032e3 --- /dev/null +++ b/2008/how_and_why_kernel-fht2008/html/mgp00038.txt @@ -0,0 +1,13 @@ +How and why to work with the Linux kernel community +Thanks + +Please share your questions and doubts now! + +Please contact me at any later point, if you have questions + +I'm here to help understand Linux and Open Source! + +HaraldWelte@viatech.com +laforge@gnumonks.org +hwelte@hmw-consulting.de +Thanks for your Attention diff --git a/2008/openmoko-bossa2008/images/Gta02v1_bottom.jpg b/2008/openmoko-bossa2008/images/Gta02v1_bottom.jpg new file mode 100644 index 0000000..cefda28 Binary files /dev/null and b/2008/openmoko-bossa2008/images/Gta02v1_bottom.jpg differ diff --git a/2008/openmoko-bossa2008/images/debugboard_v2_concept.jpg b/2008/openmoko-bossa2008/images/debugboard_v2_concept.jpg new file mode 100644 index 0000000..3a8be44 Binary files /dev/null and b/2008/openmoko-bossa2008/images/debugboard_v2_concept.jpg differ diff --git a/2008/openmoko-bossa2008/images/gta01b_v3_bottom.jpg b/2008/openmoko-bossa2008/images/gta01b_v3_bottom.jpg new file mode 100755 index 0000000..6cfa013 Binary files /dev/null and b/2008/openmoko-bossa2008/images/gta01b_v3_bottom.jpg differ diff --git a/2008/openmoko-bossa2008/images/gta01bv4_bottom.jpg b/2008/openmoko-bossa2008/images/gta01bv4_bottom.jpg new file mode 100644 index 0000000..c4e1ba4 Binary files /dev/null and b/2008/openmoko-bossa2008/images/gta01bv4_bottom.jpg differ diff --git a/2008/openmoko-bossa2008/images/gta01bv4_top.jpg b/2008/openmoko-bossa2008/images/gta01bv4_top.jpg new file mode 100644 index 0000000..e422509 Binary files /dev/null and b/2008/openmoko-bossa2008/images/gta01bv4_top.jpg differ diff --git a/2008/openmoko-bossa2008/images/neo1973_debugboard_v2_top_annotated.jpg b/2008/openmoko-bossa2008/images/neo1973_debugboard_v2_top_annotated.jpg new file mode 100644 index 0000000..b531137 Binary files /dev/null and b/2008/openmoko-bossa2008/images/neo1973_debugboard_v2_top_annotated.jpg differ diff --git a/2008/openmoko-bossa2008/notes.txt b/2008/openmoko-bossa2008/notes.txt new file mode 100644 index 0000000..b205322 --- /dev/null +++ b/2008/openmoko-bossa2008/notes.txt @@ -0,0 +1,57 @@ +Neo1973 GTA01 hardware + SC2410 SoC @ 266MHz + 480x640 LCM, 262k colors + 128MB SDRAM + 128MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + 2 stereo speakers (1.2W) + CSR4 based Bluetooth + +Free Software stack + bootloader: u-boot current git + kernel: linux 2.6.20.4 + xserver: kdrive + glibc + glib + gtk+ + libmokoui + libmokocore + libgsmd / gsmd + +Development Model + We actively contribute our code upstream + e.g. kernel goal: make vanilla 2.6.22 kernel have all drivers + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + Based on OpenEmbedded (OE) + +Hackable Device + The device shall be under full user control + Everyone should be able to hack it, at any level + hardware hacking (i2c, spi, gpio on test pads / connector) + system-level hacking (bootloader, OS) + UI level hacking + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + lightweight, doesn't have _any_ dependencies aside from glibc + + diff --git a/2008/openmoko-bossa2008/openmoko-tech.mgp b/2008/openmoko-bossa2008/openmoko-tech.mgp new file mode 100644 index 0000000..646d6b6 --- /dev/null +++ b/2008/openmoko-bossa2008/openmoko-tech.mgp @@ -0,0 +1,473 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + + +%center +%size 5 +OpenMoko +Building a truly hackable device + + +%center +%size 4 +by + +Harald Welte + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the free software community for 10 years + who has worked a lot on the Linux kernel + who had originally started OpenEZX for Motorola phones + and who's been lead hardware + system software architect for OpenMoko until recently + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +WARNING + +While I have been the Lead System Architect for hardware and system level software, throughout the first 16 months of the project, + +I have quit working for OpenMoko, Inc. or the FIC group in November 2007. + +Thus, I do not officially represent either of these entities! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko + +The commercial side + + First International Computer, Inc. + A large Taiwanese hardware vendor + Has a FIC Mobility business unit + Hardware R&D and production of Neo1973 GTA01 and GTA02 handsets + + + OpenMoko, Inc., ("OpenMoko, the Company") + Part of First International Computer (FIC) Group + Funding the OpenMoko software R&D + Responsible for product definitil, sales, marketing, PR, ... + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko + +The community side + OpenMoko, the overall Free Software project + A FOSS project working on + OpenMoko kernel/u-boot patches (hardware support) + OpenMoko GNU/Linux distribution + OpenMoko UI / framework + Funded by OpenMoko, Inc. + + OpenMoko, the embedded GNU/Linux distribution + An OE-built embedded GNU/Linux distribution for mobile communications devices + Primarily targetted at OpenMoko/FIC handsets + Is being ported to other devices by the community + Maintained by OE coreteam member employed by OpenMoko, Inc. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko about? + + Open + Opening up the formerly-closed mobile world + on any achievable level + + Mobile + Mobile devices are the future + + Free + 100% Free Software from driver through UI + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko about? + + FIC provides + experience in mass production of consumer electronics + experience in production of GSM handsets + experience in hardware development of GSM handsets + + OpenMoko provides + good contacts within the FOSS communities + strong technical knowledge on GNU/Linux + software development + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA01 hardware + +Neo1973 GTA01 hardware (07/2007) + S3C2410 SoC @ 266MHz + 2.8" 480x640 LCM, 262k colors + 128MB SDRAM + 64MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + Wolfson audio codec + 2 stereo speakers (1.2W) + 2.5mm headset jack + CSR4 based Bluetooth + NXP PCF50606 power management unit + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Application Processor + +Closer look at Application Processor + SC2410 SoC @ 266MHz + three UART's + 133MHz SDRAM interface + 66MHz external bus + Two channels SPI + IIS + I2C + SDIO + TFT controller + NAND controller + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA02 hardware + +Neo1973 GTA02 hardware ("soon") + S3C2442B SoC @ 400 MHz (500MHz option) + 2.8" 480x640 LCM, 262k colors + 128MB SDRAM + 256MB SLC NAND (2048/128k) + USB 1.1 device and host (with power) + A-GPS (fully autonomous firmware-based) + GSM+GPRS chipset (Ti Calypso, ARM7 based) + CSR4 based Bluetooth + Atheros AR6k based 802.11b/g WiFi + 2 3D accelerometers + Smedia Glamo 3362 GPU + NXP PCF50633 power management unit + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GTA02: Smedia Glamo GPU + +Smedia Glamo 3362 GPU + 8MB internal SDRAM + 16bit local bus interface to S3C2410 + 2D acceleration + 3D acceleration + H.263 codec (encode/decode) + LCM controller + SD-Card controller + hardware JPEG encoder/decoder + Camera interface and imapge processing (unused) + +OpenMoko is writing 100% FOSS drivers (GPL/MIT licensed) + kernel driver for core and framebuffer + Xglamofb accelerated X server + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Modem + +Closer look at the GSM Modem + Ti Calypso/Iota based chipset + As proprietary as any other phone + runs proprietary nucleus OS + runs proprietary GSM stack + Supports GSM voice/data/fax and GPRS + Tri-Band GSM + Very good TS 07.05 / 07.07 / 07.10 compliance + eveyone can download the protocol docs from ETSI.org + no user/hacker needs access to NDA'd documents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Free Software stack + +Free Software stack + bootloader: u-boot current git (post-1.3) + kernel: linux 2.6.24 based + xserver: kdrive + glibc + glib + gtk+ + pulseaudio + gsmd / libgsmd + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Development Model + +Development Model + "do embedded GNU/Linux the right way" + use and track current mainline code + actively contribute our code upstream + all code is immediately committed to public svn repository + development discussions happen on public mailinglists + all code developed by OpenMoko is FOSS licensed + everyone can contribute + no copyright assignments to OpenMoko + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Build System + + We build + an embedded Linux distribution + split in ipk packages (just like dpkg/rpm) + ipk feeds (just like apt-get/yum) + + We release + full source code in svn + all patches to all packages + the entire build system (built with OE) + + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hackable Device + +Hackable Device + Standards compliance wherever possible + The device shall be under full user control + Everyone should be able to hack it, at any level + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Standards compliance + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +User control + +User control + The phone needs to be under control of the user, and the free software he uses + Even backdoors or rogue GSM firmware shall not be able to intrude the privacy fo the user + So we e.g. put the Audio codec (under explicit control from the Linux-running AP) between microphone/speaker and the GSM modem + So we enable the Linux-running AP to cut power of the GSM modem + Thus, free software (and thus the user) remains in ultimate control + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hackable at any level + +Hardware Hacking + we even encourage hardware hacking + I2C, SPI, GPIO and IRQ line on documented test pads and connector + allows for attachment of new peripherals to the device + even the hardware schematics available under FOSS-permissive NDA + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hackable at any level + +System-level hacking (bootloader, OS) + entire bootloader from very first instruction FOSS + entire kernel including all drivers FOSS + JTAG accessible on debug connector + serial console on debug connector + debug board (USB JTAG adaptor and USB serial converter) + un-brickable through emergency boot loader in read-only NOR flash (GTA02) + DFU (Device Firmware Upgrade) for full-system re-flash via USB + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hackable at any level + +Userspace and UI level hacking + entire userspace world FOSS (libraries, daemons, UI, X driver, ...) + FOSS build system and toolchain/SDK enable anyone to build custom softwar packages and/or flash images + provide a programming environment as close as possible to the Linux desktop world + allow developers to re-use their existing Linux development skills + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Integration + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + kernel part intended for mainline submission + will support different phones / gsm chipsets + Various HTC devices with Linux + Motorola EZX phones using OpenEZX + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Integration + +But you can't hack the GSM stack + yes, that is true. + pretty much like you can't hack the firmware of your SCSI or RAID controller, WiFi card, Bluetooth chipset, etc. + even the firmware of a good old analogue phone line (voice) modem was not hackable + having proprietary firmware on a dedicated peripheral CPU is even acceptable to the FSF! + And no doubt, anyone inside OpenMoko would love to ever have a open source GSM stack. Patches welcome :) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Integration + +But you can't hack the GSM stack + so you get the maximum level of freedom that you can get with any other peripheral device: + open source low-level (mux, power mgmt) drivers + open source high-level drivers (gsm daemon) + openly documented serial protocol (TS 07.05, 07.07, 07.10) + asking for more freedom on the GSM side is hypocritical when accepting the very same level with other peripheral devices. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Integration + +But you can't hack the GSM stack + besides that + GTA01 has baseband JTAG on test pins + OpenMoko does not cryptographically sign GSM firmware images + GSM firmware is user-upgradable + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Difference + +Difference from other Linux phones + 'others' discourage third parties from writing apps + you need explicit permission? WTF! + 'others' try to make customers pay for a device that's still under manufacturer / GSM operator control + 'others' use proprietary kernel modules + locks you into some old kernel version + 'others' use proprietary bootloaders + 'others' dont give you JTAG/serial access + 'others' use proprietary UI toolkits + vendor lock-in + 'others' dont give out their build system + 'others' dont give out their firmware update tools + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA01 Emulator + +The Neo1973 GTA01 emulator + based on populer qemu project + full GTA01 hardware emulation, including + NAND controller + LCM controller + power management unit + GSM modem + touchscreen controller + SD card controller + ... + you can run the exact same bootloader/kernel/rootfs images + thus, no need to buy real hardware to start hacking + e.g. NetBSD port has been done entirely on emulator! + http://wiki.openmoko.org/wiki/OpenMoko_under_QEMU + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +How to contribute + + + First: get hands-on experience + with emulator (free, based on qemu, full GTA01 emulation) + with real hardware (GTA01 now, GTA02 soon) + follow instructions on the wiki, improve it with your feedback + start local user / developer groups + go through bugzilla, look for bugs in your favourite components + try to reproduce bug with current images + provide feedback + help by proividing additional debugging information + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +How to contribute + + + write your own gtk+/e17 applications fit for 480x640 screen size and limited CPU + do development on your host pc (native) + then cross-compile for OpenMoko + then test on emulator or hardware + then build and package with OE + go through projects.openmoko.org and contact project teams, help them out + hang out on mailinglists and #openmoko on freenode.net + start sharing your experience with others with your experience + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Online Resources + + + http://www.openmoko.org/ + portal site, just links everywhere else + http://wiki.openmoko.org/ + everything you (n)ever wanted to know about openmoko ;) + http://bugzilla.openmoko.org/ + documents all known bugs, please add/report and debug! + http://lists.openmoko.org/ + various mailing lists for Q&A and discussions + http://planet.openmoko.org/ + planet aggregating RSS feeds of various blogs + irc.freenode.net #openmoko + lots of developers hanging out there + https://direct.openmoko.com/ + for buying actual hardware diff --git a/2008/openmoko-bossa2008/openmoko-tech.pdf b/2008/openmoko-bossa2008/openmoko-tech.pdf new file mode 100644 index 0000000..e89a584 Binary files /dev/null and b/2008/openmoko-bossa2008/openmoko-tech.pdf differ diff --git a/2008/openmoko-cluc2008/images/Gta02v1_bottom.jpg b/2008/openmoko-cluc2008/images/Gta02v1_bottom.jpg new file mode 100644 index 0000000..cefda28 Binary files /dev/null and b/2008/openmoko-cluc2008/images/Gta02v1_bottom.jpg differ diff --git a/2008/openmoko-cluc2008/images/debugboard_v2_concept.jpg b/2008/openmoko-cluc2008/images/debugboard_v2_concept.jpg new file mode 100644 index 0000000..3a8be44 Binary files /dev/null and b/2008/openmoko-cluc2008/images/debugboard_v2_concept.jpg differ diff --git a/2008/openmoko-cluc2008/images/gta01b_v3_bottom.jpg b/2008/openmoko-cluc2008/images/gta01b_v3_bottom.jpg new file mode 100755 index 0000000..6cfa013 Binary files /dev/null and b/2008/openmoko-cluc2008/images/gta01b_v3_bottom.jpg differ diff --git a/2008/openmoko-cluc2008/images/gta01bv4_bottom.jpg b/2008/openmoko-cluc2008/images/gta01bv4_bottom.jpg new file mode 100644 index 0000000..c4e1ba4 Binary files /dev/null and b/2008/openmoko-cluc2008/images/gta01bv4_bottom.jpg differ diff --git a/2008/openmoko-cluc2008/images/gta01bv4_top.jpg b/2008/openmoko-cluc2008/images/gta01bv4_top.jpg new file mode 100644 index 0000000..e422509 Binary files /dev/null and b/2008/openmoko-cluc2008/images/gta01bv4_top.jpg differ diff --git a/2008/openmoko-cluc2008/images/neo1973_debugboard_v2_top_annotated.jpg b/2008/openmoko-cluc2008/images/neo1973_debugboard_v2_top_annotated.jpg new file mode 100644 index 0000000..b531137 Binary files /dev/null and b/2008/openmoko-cluc2008/images/neo1973_debugboard_v2_top_annotated.jpg differ diff --git a/2008/openmoko-cluc2008/notes.txt b/2008/openmoko-cluc2008/notes.txt new file mode 100644 index 0000000..b205322 --- /dev/null +++ b/2008/openmoko-cluc2008/notes.txt @@ -0,0 +1,57 @@ +Neo1973 GTA01 hardware + SC2410 SoC @ 266MHz + 480x640 LCM, 262k colors + 128MB SDRAM + 128MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + 2 stereo speakers (1.2W) + CSR4 based Bluetooth + +Free Software stack + bootloader: u-boot current git + kernel: linux 2.6.20.4 + xserver: kdrive + glibc + glib + gtk+ + libmokoui + libmokocore + libgsmd / gsmd + +Development Model + We actively contribute our code upstream + e.g. kernel goal: make vanilla 2.6.22 kernel have all drivers + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + Based on OpenEmbedded (OE) + +Hackable Device + The device shall be under full user control + Everyone should be able to hack it, at any level + hardware hacking (i2c, spi, gpio on test pads / connector) + system-level hacking (bootloader, OS) + UI level hacking + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + lightweight, doesn't have _any_ dependencies aside from glibc + + diff --git a/2008/openmoko-cluc2008/openmoko-tech.mgp b/2008/openmoko-cluc2008/openmoko-tech.mgp new file mode 100644 index 0000000..ac4ee65 --- /dev/null +++ b/2008/openmoko-cluc2008/openmoko-tech.mgp @@ -0,0 +1,473 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + + +%center +%size 5 +Openmoko +Building a truly hackable device + + +%center +%size 4 +by + +Harald Welte + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the free software community for 10 years + who has worked a lot on the Linux kernel + who had originally started OpenEZX for Motorola phones + and who's been lead hardware + system software architect for Openmoko until recently + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +WARNING + +While I have been the Lead System Architect for hardware and system level software, throughout the first 16 months of the project, + +I have quit working for Openmoko, Inc. or the FIC group in November 2007. + +Thus, I do not officially represent either of these entities! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +What is Openmoko + +The commercial side + + First International Computer, Inc. + A large Taiwanese hardware vendor + Has a FIC Mobility business unit + Hardware R&D and production of Neo1973 GTA01 and GTA02 handsets + + + Openmoko, Inc., ("Openmoko, the Company") + Part of First International Computer (FIC) Group + Funding the Openmoko software R&D + Responsible for product definitil, sales, marketing, PR, ... + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +What is Openmoko + +The community side + Openmoko, the overall Free Software project + A FOSS project working on + Openmoko kernel/u-boot patches (hardware support) + Openmoko GNU/Linux distribution + Openmoko UI / framework + Funded by Openmoko, Inc. + + Openmoko, the embedded GNU/Linux distribution + An OE-built embedded GNU/Linux distribution for mobile communications devices + Primarily targetted at Openmoko/FIC handsets + Is being ported to other devices by the community + Maintained by OE coreteam member employed by Openmoko, Inc. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +What is Openmoko about? + + Open + Opening up the formerly-closed mobile world + on any achievable level + + Mobile + Mobile devices are the future + + Free + 100% Free Software from driver through UI + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +What is Openmoko about? + + FIC provides + experience in mass production of consumer electronics + experience in production of GSM handsets + experience in hardware development of GSM handsets + + Openmoko provides + good contacts within the FOSS communities + strong technical knowledge on GNU/Linux + software development + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Neo1973 GTA01 hardware + +Neo1973 GTA01 hardware (07/2007) + S3C2410 SoC @ 266MHz + 2.8" 480x640 LCM, 262k colors + 128MB SDRAM + 64MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + Wolfson audio codec + 2 stereo speakers (1.2W) + 2.5mm headset jack + CSR4 based Bluetooth + NXP PCF50606 power management unit + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Application Processor + +Closer look at Application Processor + SC2410 SoC @ 266MHz + three UART's + 133MHz SDRAM interface + 66MHz external bus + Two channels SPI + IIS + I2C + SDIO + TFT controller + NAND controller + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Neo1973 GTA02 hardware + +Neo1973 GTA02 hardware ("soon") + S3C2442B SoC @ 400 MHz (500MHz option) + 2.8" 480x640 LCM, 262k colors + 128MB SDRAM + 256MB SLC NAND (2048/128k) + USB 1.1 device and host (with power) + A-GPS (fully autonomous firmware-based) + GSM+GPRS chipset (Ti Calypso, ARM7 based) + CSR4 based Bluetooth + Atheros AR6k based 802.11b/g WiFi + 2 3D accelerometers + Smedia Glamo 3362 GPU + NXP PCF50633 power management unit + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +GTA02: Smedia Glamo GPU + +Smedia Glamo 3362 GPU + 8MB internal SDRAM + 16bit local bus interface to S3C2410 + 2D acceleration + 3D acceleration + H.263 codec (encode/decode) + LCM controller + SD-Card controller + hardware JPEG encoder/decoder + Camera interface and imapge processing (unused) + +Openmoko is writing 100% FOSS drivers (GPL/MIT licensed) + kernel driver for core and framebuffer + Xglamofb accelerated X server + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +GSM Modem + +Closer look at the GSM Modem + Ti Calypso/Iota based chipset + As proprietary as any other phone + runs proprietary nucleus OS + runs proprietary GSM stack + Supports GSM voice/data/fax and GPRS + Tri-Band GSM + Very good TS 07.05 / 07.07 / 07.10 compliance + eveyone can download the protocol docs from ETSI.org + no user/hacker needs access to NDA'd documents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Free Software stack + +Free Software stack + bootloader: u-boot current git (post-1.3) + kernel: linux 2.6.24 based + xserver: kdrive + glibc + glib + gtk+ + pulseaudio + gsmd / libgsmd + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Development Model + +Development Model + "do embedded GNU/Linux the right way" + use and track current mainline code + actively contribute our code upstream + all code is immediately committed to public svn repository + development discussions happen on public mailinglists + all code developed by Openmoko is FOSS licensed + everyone can contribute + no copyright assignments to Openmoko + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Build System + + Openmoko builds + an embedded Linux distribution + split in ipk packages (just like dpkg/rpm) + ipk feeds (just like apt-get/yum) + + Openmoko release + full source code in svn/git + all patches to all packages + the entire build system (built with OE) + + Openmoko's build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Hackable Device + +Hackable Device + Standards compliance wherever possible + The device shall be under full user control + Everyone should be able to hack it, at any level + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Standards compliance + +Standards compliance + Use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +User control + +User control + The phone needs to be under control of the user, and the free software he uses + Even backdoors or rogue GSM firmware shall not be able to intrude the privacy fo the user + So e.g. the Audio codec (under explicit control from the Linux-running AP) between microphone/speaker and the GSM modem + So the Linux-running AP is enabled to cut power of the GSM modem + Thus, free software (and thus the user) remains in ultimate control + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Hackable at any level + +Hardware Hacking + Openmoko even encourages hardware hacking + I2C, SPI, GPIO and IRQ line on documented test pads and connector + allows for attachment of new peripherals to the device + even the hardware schematics available under FOSS-permissive NDA + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Hackable at any level + +System-level hacking (bootloader, OS) + entire bootloader from very first instruction FOSS + entire kernel including all drivers FOSS + JTAG accessible on debug connector + serial console on debug connector + debug board (USB JTAG adaptor and USB serial converter) + un-brickable through emergency boot loader in read-only NOR flash (GTA02) + DFU (Device Firmware Upgrade) for full-system re-flash via USB + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Hackable at any level + +Userspace and UI level hacking + entire userspace world FOSS (libraries, daemons, UI, X driver, ...) + FOSS build system and toolchain/SDK enable anyone to build custom softwar packages and/or flash images + provide a programming environment as close as possible to the Linux desktop world + allow developers to re-use their existing Linux development skills + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +GSM Integration + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + kernel part intended for mainline submission + will support different phones / gsm chipsets + Various HTC devices with Linux + Motorola EZX phones using OpenEZX + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +GSM Integration + +But you can't hack the GSM stack + yes, that is true. + pretty much like you can't hack the firmware of your SCSI or RAID controller, WiFi card, Bluetooth chipset, etc. + even the firmware of a good old analogue phone line (voice) modem was not hackable + having proprietary firmware on a dedicated peripheral CPU is even acceptable to the FSF! + And no doubt, anyone inside Openmoko would love to ever have a open source GSM stack. Patches welcome :) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +GSM Integration + +But you can't hack the GSM stack + so you get the maximum level of freedom that you can get with any other peripheral device: + open source low-level (mux, power mgmt) drivers + open source high-level drivers (gsm daemon) + openly documented serial protocol (TS 07.05, 07.07, 07.10) + asking for more freedom on the GSM side is hypocritical when accepting the very same level with other peripheral devices. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +GSM Integration + +But you can't hack the GSM stack + besides that + GTA01 has baseband JTAG on test pins + Openmoko does not cryptographically sign GSM firmware images + GSM firmware is user-upgradable + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Difference + +Difference from other Linux phones + 'others' discourage third parties from writing apps + you need explicit permission? WTF! + 'others' try to make customers pay for a device that's still under manufacturer / GSM operator control + 'others' use proprietary kernel modules + locks you into some old kernel version + 'others' use proprietary bootloaders + 'others' dont give you JTAG/serial access + 'others' use proprietary UI toolkits + vendor lock-in + 'others' dont give out their build system + 'others' dont give out their firmware update tools + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Neo1973 GTA01 Emulator + +The Neo1973 GTA01 emulator + based on populer qemu project + full GTA01 hardware emulation, including + NAND controller + LCM controller + power management unit + GSM modem + touchscreen controller + SD card controller + ... + you can run the exact same bootloader/kernel/rootfs images + thus, no need to buy real hardware to start hacking + e.g. NetBSD port has been done entirely on emulator! + http://wiki.openmoko.org/wiki/Openmoko_under_QEMU + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +How to contribute + + + First: get hands-on experience + with emulator (free, based on qemu, full GTA01 emulation) + with real hardware (GTA01 now, GTA02 soon) + follow instructions on the wiki, improve it with your feedback + start local user / developer groups + go through bugzilla, look for bugs in your favourite components + try to reproduce bug with current images + provide feedback + help by proividing additional debugging information + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +How to contribute + + + write your own gtk+/e17 applications fit for 480x640 screen size and limited CPU + do development on your host pc (native) + then cross-compile for Openmoko + then test on emulator or hardware + then build and package with OE + go through projects.openmoko.org and contact project teams, help them out + hang out on mailinglists and #openmoko on freenode.net + start sharing your experience with others with your experience + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Openmoko +Online Resources + + + http://www.openmoko.org/ + portal site, just links everywhere else + http://wiki.openmoko.org/ + everything you (n)ever wanted to know about openmoko ;) + http://bugzilla.openmoko.org/ + documents all known bugs, please add/report and debug! + http://lists.openmoko.org/ + various mailing lists for Q&A and discussions + http://planet.openmoko.org/ + planet aggregating RSS feeds of various blogs + irc.freenode.net #openmoko + lots of developers hanging out there + https://direct.openmoko.com/ + for buying actual hardware diff --git a/2008/openmoko-cluc2008/openmoko-tech.pdf b/2008/openmoko-cluc2008/openmoko-tech.pdf new file mode 100644 index 0000000..e89a584 Binary files /dev/null and b/2008/openmoko-cluc2008/openmoko-tech.pdf differ diff --git a/2008/openpcd_openpicc-cluc2008/OpenPICC_Bm117_3_SCH.pdf b/2008/openpcd_openpicc-cluc2008/OpenPICC_Bm117_3_SCH.pdf new file mode 100644 index 0000000..969a692 Binary files /dev/null and b/2008/openpcd_openpicc-cluc2008/OpenPICC_Bm117_3_SCH.pdf differ diff --git a/2008/openpcd_openpicc-cluc2008/librfid.tpp b/2008/openpcd_openpicc-cluc2008/librfid.tpp new file mode 100644 index 0000000..7454241 --- /dev/null +++ b/2008/openpcd_openpicc-cluc2008/librfid.tpp @@ -0,0 +1,417 @@ +--author Harald Welte +--title RFID Protocols, librfid +--date 17 Apr 2008 +Starting with November 2005, the German federal government has started to issue +epectronic passports with RFID interface. All other EU member states will have +to issue such passports no later than January 2007. Only Switzerland seems to +have a reasonable attitude by giving their citizens a choice. + +This presentation covers technical background about the RFID technology, the ICAO MRTD specification, and the authors' efforts to develop a free software stack to use Linux to communicate with those passports. +--footer This presentation is made with tpp http://synflood.at/tpp.html + +--newpage +--footer RFID Potocols and librfid +--header Overview +Introduction into RFID + What is RFID + Components of RFID System + Protocols and Standards + Security Issues +librfid - A free software RFID stack + Data Structures + Protocol Stack + Interaction with OpenCT + +--newpage +--footer RFID Potocols and librfid +--header Introduction into RFID +Definition of term RFID + Radio Frequency IDentification + +RFID is one of the recent buzzwords in lots of industries, such as + transportation + retail sector + governments + +Like most buzzwords, it's not very clearly defined. There is no such thing as "the RFID System. There are lots of different Systems, some standardized, most proprietary. Each of them uses it's own frequency, modulation, encoding and protocol combination. Often, systems of multiple vendors can not be used interchangibly. + +--newpage +--footer RFID Potocols and librfid +--header Components of an RFID system +Tag (Transponder) + Serial Number Tags + Replacement for EAN/UPC Barcodes + WORM Tags + Can be written once by Issuer + Read/Write Tags + Can be re-written many times + Read/Write Tags with "passive" security + Have state-machine based crypto for access control + Cryptographic smartcards with RF Interface + Like other crypto smartcards, just with RF interface + +--newpage +--footer RFID Potocols and librfid +--header Reader +Readers (Coupling Device) + Readers are always called readers, even if they can write ;) + Usually connected to a host computer via RS-323, USB or alike + Unfortunately no standard, for API, Hardware and/or Protocol :( + Most applications are written to vendor-provided device-specific API's + One exception: Readers for Smartcards with RF-Interface (use PC/SC) + +--newpage +--footer RFID Potocols and librfid +--header RF Interface +The RF interface is the key attribute of any RFID system. +Parameters that determine the RF interface are + frequency + modulation + operational principle + +--newpage +--footer RFID Potocols and librfid +--header RF Interface +Magnetic Coupling + used by many of todays RFID deployment + rely on the magnetic coupling ("transformer") principle + Tag/Transponder has a coil antenna to pick up RF-Field of Reader + Power for Tag/Transponder is drawn from the magnetic field + Common systems use 125kHz (old) or 13.56MHz (current) + Operational range often small, since high magnetic field strengh needed + +--newpage +--footer RFID Potocols and librfid +--header RF Interface +Backscatter + Used by many RFID systems under current development + Operate typically in UHF range (868 to 956 MHz) + Use electric field of the reader, employ backscatter modulation + Higher operational range (within tens of metres) + +Surface Accoustic Wave + SAW tags use low-power microwave radio signals + Tag/Transponder converts it to untrasonic signals (piezo crystal) + Variations of the reflected signal used to provide a unique number + +--newpage +--footer RFID Potocols and librfid +--header Protocols and Standards +Apart from the various vendor proprietary protocols, there are some ISO standards +ISO 11784 / 11785 + Identification of Animals + 134.2kHz, magnetic coupling, load modulation, 4191 bps +ISO 14223 + Extension of 11784/11785 and allows for more data +ISO 10536 + "close coupling" smart cards, range up to 1cm + Inductive or capacitive coupling at 4.9152MHz + Never attained any significant market share +ISO 18000 series + Current development of international "Auto-ID" standard + Includes operation on 13.56MHz, 2.4GHz, 868/956MHz + Not yet deployed + +--newpage +--footer RFID Potocols and librfid +--header Protocols and Standards +ISO 14443 + "proximity coupling ID cards" + Range of up to 10cm + Two variants: 14443-A and 14443-B + Both use 13.56MHz, but different parameters (see paper for details) + Specifies physical layer, link-layer (anticollision) + Specifies an optional transport level protocol (ISO 14443-4) + Speed up to 848kbits/sec + +ISO 15693 + "vicinity coupling", range up to 1m + Like ISO 14443, operates on 13.56MHz, magnetic coupling + Data rate 1.65kbits/sec or 26.48kbits/sec + Because of long distance, very little power + Therefore only used for passive tags + +--newpage +--footer RFID Potocols and librfid +--header Protocols and Standards +ISO 14443-A Details + Anti-Collision is based on binary search + Manchester Encoding allows reader to detect bit collisions + Reader can transmit bit-frames of variable length + + 1. Reader sends REQA / WUPA + 2. All transpondesr in range will reply with their address (UID) + 3a. If there is no collision, send SELECT comamand on full UID + 3b. If there is a collision, transmit bit frame which forces bit of collision to 0 or 1 + 4. Loop + +--newpage +--footer RFID Potocols and librfid +--header Protocols and Standards +ISO 14443-B Details + Anti-Collision is based on "Slotted ALOHA" protocol + Based in probabilistic scheme + Reader sends REQB/WUPB command with number of available slots + Every transponder chooses it's own number (rnd() % slots) + If there is a collision, we simply retry. + +Result: + Both 14443-A and 14443-B anti collision are subject to DoS + "blocker tags" have already been demonstrated. + +--newpage +--footer RFID Potocols and librfid +--header Protocols and (Non-)Standards +Mifare + Mifare is a marketing term by Philips + + Mifare refers to a complete family of RFID systems, comprising + Transponders, Reader ASICs and a set of prorprietary protocols. + Mifare Classic transponders (1k, 4k) + are memory transponders with state machine based crypto + Mifare Classic employs a proprietary stream cipher (CRYPTO 1) that + is implemented in both transponder and reader hardware + Mifare Ultralight has no crypto, plain passive memory transponder + Mifare transponders are segmented in blocks, every block has + it's own pair of CRYPTO1 access keys and permission management + +--newpage +--footer RFID Potocols and librfid +--header Closer look on Readers +There's a variety of readers for the 13.56MHz world +Usually they all use one of the (small number of) available ASIC's +Reader ASIC's integrate analog and digital part and have standard bus interface +End-User Reader products contain such an ASIC plus a microcontroller + +Active Readers + e.g. "Philips Pegoda" + Run the RFID protocol stack on the microcontroller + +Passive Readers + e.g. "Omnikey CardMan 5121" + Run the RFID protocol on the host system + +Passive readers obviously provide higher flexibility and are cheaper. + +--newpage +--footer RFID Potocols and librfid +--header Security Issues +Eavesdropping + Channel from reader to tag can be easily sniffed (even > 10m) + Channel from tag to reader is difficult (Author has managed 3m) + +Denial of Service + Anti-collision mechanism used to distinguish between multiple tags + Using a "fake tag" you can create Denial of Service + Products such as "blocker tags" have already been presented + +Authenticity/Confidentiality + None of the existing standards offers any kind of crypto + Standards-compliant systems like passports use crypto at layer 5 + Lots of proprietary "closed algorithm" vendor products with questionable security + + +--newpage +--footer RFID Potocols and librfid +--header librfid - A Free Software RFID stack +The librfid project intends to provide a free software reader-side implementation of common RFID protocols such as ISO 14443 and ISO 15693 + +Various abstraction layers and plugin interface allows for later addition of new protocols an readers. + +Optionally integrates with OpenCT. + +--newpage +--footer RFID Potocols and librfid +--header librfid - A Free Software RFID stack +struct rfid_asic + Contains all routines for a specific reader asic + Currently only Philips CL RC 632 and Philips Pegoda (partially) supported +struct rfid_asic_transport + A transport that gives access to the ASIC registers +struct rfid_reader + A container for rfid_asic and rfid_asic_transport +struct rfid_layer2 + An anticollision protocol such as ISO 14443-3A/B +struct rfid_protocol + A transport protocol such as ISO 14443-4 + +--newpage +--footer RFID Potocols and librfid +--header librfid - A Free Software RFID stack + +Typical Protocol Stack + rfid_protocol_stack + CM5121 Reader + CL RC632 ASIC + PC_to_RDR_Escape transport + USB-CCID driver of OpenCT + libusb + +--newpage +--footer RFID Potocols and librfid +--header librfid - A Free Software RFID stack +Application Interface + +Native API + librfid-specific API + quite low-level + requires application to know a lot about the stack + +OpenCT, PC/SC, CT-API + OpenCT integration provides PC/SC and CT-API for crypto smarcards + Is currently under development + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports +Electronic Passports (ePassports) are officially called MRTD +MRTD: Machine Readable Travel Document +Specifications by ICAO (International Civil Aviation Organization) +Basic idea + store passport data and additional biometrics on Transponder + alternate storage methods such as 2D barcodes covered, too + common standard for interoperability + some features required, others optional (up to issuing country) + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports +Organization of Data + According to LDS (Logical Data Structure) specification + Data is stored in DG (Data Groups) + DG1: MRZ information (mandatory) + DG2: Portrait Image + Biometric template (mandatory) + DG3-4: fingerprints, iris image (optional) + EF.SOD: Security Object Data (cryptographic signatures) + EF.COM: Lists with Data Groups Exist + All data is stored in BER-encoded ASN.1 + just think of all the ASN.1 parser bugs... + DG2-DG4 are encoded as CBEFF (common biometric file format, ISO 19785) + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports +Security Features + Randomization of Serial Number + Usually all ISO 14443 transponders have a unique serial number + This serial number is part of the anticollision procedure + Problem: Pseudonymized Tracking + ICAO MRTD specs don't require unique serial number + Therefore, some countries will generate random serial numbers + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports +Security Features + Passive Authentication (mandatory) + Proves that passport data is signed by issuing country + Inspection System verifies signature of DG's + EF.SOD contains individual signature for each DG + EF.SOD itself is signed + Document Signer Public Key from PKD / bilateral channels + Document Signer Public Key also stored on Passport (optional) + Useful only if Country Root CA public key known + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports +Security Features + Active Authentication (optional) + Verifies that chip has not been substituted + Uses challenge-response protocol between reader and chip + DG15 contains KPuAA + KPrAA is stored in secure memory of the chip + PPuAA is signed in EF.SOD + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports + Basic Access Control (optional, implemented in .de passports) + Denies Access to the chip until inspection system is authorized + Authorization is performed by deriving keys from MRZ + MRZ_info + nine digit document number + in many countries: issuing authority + incrementing number + six digit date of birth + can be guessed or assumed between + six digit expiry date + 16most significant bytes of SHA1-hash over MRZ_info is key + 3des keys used for S/M (ISO7816 secure messaging) + + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports + Extended Access Control (optional) + Prevents unauthorized access to additional bimetrics + Similar to Basic Access Control, but different keys + Not internationally standardized + Implemented by individual states + Only shared with those states that are allowed access + + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports + Encryption of Additional Biometrics (optional + The actual payload of the CBEFF + +--newpage +--footer RFID Potocols and librfid +--header Electronic Passports +Public Key Hierarchy + X.509 Certificates + Every country operates it's own CA + Document signer keys derived from CA root + Document signer public keys are distributed publicly via ICAO PKD + Everyone can verify + +--newpage +--footer RFID Potocols and librfid +--header libmrtd - Free Software library for MRTD's +libmtrd provides functions for + reading out and decoding data on MRTD + verifying data stored on MRTD + cryptograpy compliant with MRTD specs + basic access control + passive authentication + extended access control (planned) + +--newpage +--footer RFID Potocols and librfid +--header libmrtd - Free Software library for MRTD's +API towards the lower level (transport) + PC/SC (to work with readers/drivers other than librfid) + native librfid API +API towards the application + not really finished yet, lots of flux + +--newpage +--footer RFID Potocols and librfid +--header libmrtd - Free Software library for MRTD's +libmrtd status + parsing functions for LDS + parsing functions for DG1 + parsing functions for DG2 (CBEFF) + basic access control + still very much beta stage software + contributors welcome + no frontend application program + +--newpage +--footer RFID Potocols and librfid +--header Further Reading + +The slides + https://svn.gnumonks.org/trunk/presentation/2005/rfid-0sec2005/ +The paper + https://svn.gnumonks.org/trunk/presentation/2005/rfid-lk2005/ +librfid code + https://svn.gnumonks.org/trunk/librfid/ +libmrtd + https://svn.gnumonks.org/trunk/libmrtd +the mailinglist + librfid-devel@lists.gnumonks.org + https://lists.gnumonks.org/mailman/listinfo/librfid-devel +ICAO MRTD homepage (includes all MRTD specs in PDF format) + http://www.icao.org/ diff --git a/2008/openpcd_openpicc-cluc2008/openpcd.jpg b/2008/openpcd_openpicc-cluc2008/openpcd.jpg new file mode 100644 index 0000000..c07a96a Binary files /dev/null and b/2008/openpcd_openpicc-cluc2008/openpcd.jpg differ diff --git a/2008/openpcd_openpicc-cluc2008/openpcd_openpicc.mgp b/2008/openpcd_openpicc-cluc2008/openpcd_openpicc.mgp new file mode 100644 index 0000000..162db41 --- /dev/null +++ b/2008/openpcd_openpicc-cluc2008/openpcd_openpicc.mgp @@ -0,0 +1,425 @@ +%include "default.mgp" +%default 1 bgrad +%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +OpenPCD / OpenPICC +Free Software and Hardware for 13.56MHz RFID + +Apr 17, 2008 +DORS/CLUC + +%center +%size 4 +by + +Harald Welte + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +Introduction + +Who is speaking to you? + an independent Free Software developer + one of the authors of Linux kernel packet filter + busy with enforcing the GPL at gpl-violations.org + working on Free Software for smartphones (openezx.org) + ...and Free Software for RFID (librfid) + ...and Free Software for ePassports (libmrtd) + ...among other things ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +Introduction RFID + +Short introduction on 13.56MHz RFID systems + Magnetic Coupling + ISO 14443-A / -B (proximity IC cards) + ISO 15693 (vicinity IC cards) + Proprietary: FeliCa, Legic, Mifare Classic, ... + Applications: RFID tagging (15693), Smartcards (14443) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +RFID Reader Designs + +Overview on available reader designs + Most readers based on ASIC (Philips, TI, ...) + Microcontroller + Readers for PC's usually have USB, RS232 or PCMCIA IF + Some reader designs with Ethernet, RS-485 + Important: If you need Mifare, you need Philips reader ASIC + Active readers implement protocols in firmware, passive in host sw + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +The OpenPCD project + +The OpenPCD project + design a RFID reader that gives full power and all interfaces + reader hardware design is under CC share alike attribution license + reader firmware and host software under GPL + use hardware that doesn't require proprietary development tools + don't license any RTOS but write everything from scratch + ability to modify firmware + can be active or passive + can produce protocol violations + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +The OpenPCD project + +The OpenPCD project + various hardware interfaces + connector for analog and digital intermediate demodulation steps + connector for firmware-configurable trigger pulse + connector for unmodulated (tx) and demodulated (rx) bitstream + RS232 (@ 3.3V) port for debug messages + versatile internal connection between ASIC and microcontroller + enables microcontroller to directly modulate carrier + using serial bitstream from SSC + using PWM signal from TC (timer/counter) unit + enables microcontroller to sample Tx and/or Rx signal + using SSC Rx + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD hardware configuration + +OpenPCD hardware configuration + Atmel AT91SAM7S128 microcontroller + 48MHz 32bit ARM7TDMI core + many integrated peripherals (SPI, SSC, ADC, I2C, ..) + USB full speed peripheral controller + 128kB user-programmable flash + 32kB SRAM + integrated SAM-BA emergency bootloader, enables ISP + Philips CL RC632 reader ASIC + documentation 'freely' available (40bit RC4 / 5days) + commonly used by other readers + supports 14443-A and B, including higher bitrates up to 424kBps + can be configured up to 848kBps, even though it's not guaranteed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD schematics + +OpenPCD schematics + Please see the schematics in PDF form + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD firmware build environment + +OpenPCD firmware build environment + + Standard GNU toolchain for ARM7TDMI (armv4) + binutils-2.16.1 + gcc-4.0.2 + Custom Makefiles to create flash images + sam7utils for initial flash using SAM-BA + 'cat dfu.bin firmware.bin > foo.samba' produces SAM-BA image + Parts of newlib are linked if DEBUG=1 is used (snprintf, ...) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD device firmware + +OpenPCD device firmware + since firmware is hackable, it should be easy to download a new image + USB Forum published "USB Device Firmware Upgrade" (DFU) specification + sam7dfu project (developed as part of OpenPCD) implements DFU on SAM7 + dfu-programmer (sf.net) implemented 90% of what was required on host + DFU works by switching from normal (application) mode into separate mode with its own device/configuration/endpoint descriptors + since firmware bug could render device in broken 'crashed' state, we added a button that can be pressed during power-on to force DFU mode + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD device firmware + +OpenPCD device firmware + The firmware build system allows for different build targets for different firmware images + Normal reader operation using librfid supported by 'main_dumbreader' target + main_librfid: Intelligent firmware with full RFID stack built-in + main_analog: Analog signals can be output on U.FL socket + main_pwm: PWM modulation of 13.56MHz carrier (variable frequency/phase) + main_reqa: Implement 14443-123 (Type A) in reader firmware, send REQA/WUPA/anticol + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD device firmware + +OpenPCD device firmware source + lib + some generic C library routines (bitops, printf, ...) + src/os + shared 'operating system' code + src/pcd + OpenPCD specific code (reader side) + src/picc + OpenPICC specific code (tag side) + src/dfu + USB Device Firmware Upgrade + src/start + low-level assembly startup code + scripts + scripts to generate UTF8LE usb strings, etc + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD USB protocol + +OpenPCD USB protocol + All communication on the USB is done using a vendor-specific protocol on three endpoints (BULK OUT, BULK IN, INT IN) + All messages (usb transfers) have a common four-byte header + +%%%%%%%%I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +main_dumbreader firmware + +OpenPCD 'main_dumbreader' firmware + The main_dumbreader firmware exports four primitives for RC632 access + read register + write register + read fifo + write fifo + Using those primitives, the full 14443-1234 A+B and 15693 can be implemented in host software (librfid) + This is the main production firmware at this point + +%%%%%%%%I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +main_pwm firmware + +OpenPCD 'main_pwm' firmware + The main_pwm firmware allows emitting + a 13.56MHz carrier + modulated with an arbitrary PWM signal + frequency and phase controlled by console on UART port + Using main_pwm, it's easy to test link-layer characteristics, e.g. when developing a PICC device + +%%%%%%%%I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +main_reqa firmware + +OpenPCD 'main_reqa' firmware + The main_reqa firmware contains code to either + repeatedly transmit ISO14443A REQA + repeatedly transmit ISO14443A WUPA + repeatedly go through full ISO14443A anticollision + The progress is shown on the serial debug port + This firmware is mainly for demonstration and debugging + +%%%%%%%%I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +main_mifare firmware + +OpenPCD 'main_mifare' firmware + The main_mifare firmware contains code to + repeatedly dump one page of a mifare classic card + This only works, if the INFINEON default key is used + The progress is shown on the serial debug port + This firmware is mainly for demonstration and debugging + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD host software (librfid) + +The librfid project + predates OpenPCD by 1.5 years + was originally written as part of the OpenMRTD project for ePassports + supported Omnikey CM5121 / CM5321 readers + OpenPCD main_dumbreader support has been added + implements 14443 -2, -3, -4 (A+B), ISO 15693, Mifare + http://openmrtd.org/projects/librfid + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD status + +OpenPCD status + Hardware design finished + Prototype state is over + First 80 units shipped to customers + Orders can be placed (100EUR excl. VAT) at http://shop.openpcd.org/ + DIY folks: We also sell the PCB for 18EUR :) + We have readers with us, in case anyone is interested + +%%%%%%%%I%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +main_librfid firmware + +OpenPCD 'main_librfid' firmware + The main_librfid firmware contains the full librfid stack + offers librfid C API + allows easy port of librfid host applications into device firmware + allows OpenPCD to operate 100% autonomous + does not have a USB protocol for host applications yet + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD outlook + +OpenPCD outlook + main_librfid USB protocol specifications + 'bset of both worlds' approach for many applications + emulate USB-CCID profile (designed for contact based smartcard readers) + thus, OpenPCD could be used to transparently access 14443-4 (T=CL) protocol cards just like contact based smartcards + emulate ACG serial protocol on debug port + thus, software like RFIDiot and RFdump could be used + write nice frontend for Rx/Tx sampling + including software decoding on host pc to recover data + finally be able to do some cryptoanalysis on e.g. Mifare + Lots of other interesting projects + Volunteers wanted! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +The OpenPICC project + + conterpart to OpenPCD + design RFID transponder simulator that gives full control / all interfaces + hardware schematics and software licensed like OpenPCD + based on the same microcontroller + much of the firmware (USB stack, SPI driver, ...) is shared + no ASIC's for 'transponder side' available + analog frontend and demodulator had to be built discrete, from scratch + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC hardware configuration + +OpenPICC hardware configuration + Atmel AT91SAM7S256 + almost 100% identical to S128 (OpenPCD) + has twice the RAM and flash + Analog antenna frontend / matching network + Diode based demodulator + Two FET and NAND based load modulation circuit + subcarrier generated in software + SSC clock rate == (2*fSubc) == 2*847.5kHz = 1.695MHz + Output of 101010 produces 847.5kHz subcarrier + two GPIO pins configure three steps of modulation depth + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC hardware (Rx path) + +OpenPICC hardware (Rx path) + Antenna builds resonant circuit with capacitor + low-capacity diode for demodulation + active filter + buffering/amplification + comparator for quantization of signal + resulting serial bitstream fed into SSC Rx of SAM7 + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC hardware (Rx path) + +OpenPICC hardware (Rx path) + Problem: bit clock regeneration + bitclock is fCarrier / 128 + PCD modulates 100% ASK => no continuous clock at PICC + Solution: + PICC needs to recover/recreate fCarrier using PLL + PLL response can be delayed via low pass + Problem: + However, PLL will drift in long sequence of bytes + Solution: + Sample-and-Hold in PLL loop can solve this problem + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC hardware (Rx path) + +OpenPICC hardware (Rx path) + Problem: bit clock / sample clock phase coherency + bitclock is not coherent over multiple frames + PCD can start bitclock at any fCarrier cycle + PICC needs to recover bit clock + Solution: + OpenPICC uses SAM7 Timer/Counter 0 as fCarrier divider + First falling edge of demodulated data resets counter + Therefore, sample clock is in sync with bit clock + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC hardware (Tx path) + +OpenPICC hardware (Tx path) + Two FET and NAND based load modulation circuit + subcarrier generated in software + SSC clock rate == (2*fSubc) == 2*847.5kHz = 1.695MHz + Output of 101010 produces 847.5kHz subcarrier + two GPIO pins configure three steps of modulation depth + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC USB protocol + +OpenPICC USB protocol + 100% identical to OpenPCD, just different set of commands + Most commands based on virtual register set (content: protocol params) + modulation width / depth + frame delay time for synchronous replies + encoding (manchester, OOK / NRZ-L, BPSK) + decoding (miller / NRZ) + UID for anticollision + ATQA content + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPICC status + +OpenPICC status + second generation prototype not yet 100% functional + still some problems with clock recovery + analog side + finished 'really soon now' + first production units expected for January + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +Links + +Links + http://openpcd.org/ + http://wiki.openpcd.org/ + http://shop.openpcd.org/ + http://openmrtd.org/project/librfid/ + http://openbeacon.org/ (active 2.4GHz RFID) diff --git a/2008/openpcd_openpicc-cluc2008/openpcd_openpicc.pdf b/2008/openpcd_openpicc-cluc2008/openpcd_openpicc.pdf new file mode 100644 index 0000000..dae28c5 Binary files /dev/null and b/2008/openpcd_openpicc-cluc2008/openpcd_openpicc.pdf differ diff --git a/2008/openpcd_openpicc-cluc2008/openpcd_v04-pcb.pdf b/2008/openpcd_openpicc-cluc2008/openpcd_v04-pcb.pdf new file mode 100644 index 0000000..33165ac Binary files /dev/null and b/2008/openpcd_openpicc-cluc2008/openpcd_v04-pcb.pdf differ diff --git a/2008/openpcd_openpicc-cluc2008/openpcd_v04-sch.pdf b/2008/openpcd_openpicc-cluc2008/openpcd_v04-sch.pdf new file mode 100644 index 0000000..dd3d179 Binary files /dev/null and b/2008/openpcd_openpicc-cluc2008/openpcd_v04-sch.pdf differ diff --git a/2008/openpcd_openpicc-cluc2008/openpicc.jpg b/2008/openpcd_openpicc-cluc2008/openpicc.jpg new file mode 100644 index 0000000..519bb34 Binary files /dev/null and b/2008/openpcd_openpicc-cluc2008/openpicc.jpg differ diff --git a/2008/security_beyond_internet-lt2008/security_beyond_internet.mgp b/2008/security_beyond_internet-lt2008/security_beyond_internet.mgp new file mode 100644 index 0000000..95ad2ea --- /dev/null +++ b/2008/security_beyond_internet-lt2008/security_beyond_internet.mgp @@ -0,0 +1,362 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + + +%center +%size 5 +Network Security +beyond TCP/IP/Ethernet + + +%center +%size 4 +by + +Harald Welte + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the Free Software community for 13 years + who actually has a professional background in hardware + who has co-developed the netfiter/iptables packet filter + who has started gpl-violations.org + and who's been lead hardware + system software architect for Openmoko until recently + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Content + + Data Communications + Security Research + TCP/IP hacks for every layer + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Data Communications + + + Data communications protocols are all around us + Internet and Intranet (Ethernet/TCP/IP) + 2G/2.5G cellular networks (GSM) + 3G/3.5G cellular networks (UMTS) + Cordless Phones (DECT) + Various RFID technologies + TETRA for police / fire brigade + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Internet Security Research + + + Security Research on the Internet + by independent hackers + by security consultants + by independent research organizations + by the academia + + Motivation + academic interest + ethical hackers + criminal entities + reputation/fame in the community + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Examples of past IP issues + + + The various levels of TCP/IP protocols security (examples) + Layer 2 + MAC spoofing + overflowing MAC address table of switches + promiscuous mode for packet sniffing + Layer 3 + IP address spoofing + source routing + invalid options / option parsing + fragmentation re-assembly attacks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Examples of past IP issues + + + Layer 4 + port number prediction + TCP session hijacking + RST/FIN spoofing + invalid flag combinations + Layer 5+ + buffer overflows + format string vulnerabilities + stack smashing + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Reasons for Internet scrutiny + + + Why do we have that much TCP/IP security research? + Open specification of protocols (IETF, W3C) + Lots of 3rd party textbooks on those protocols + Same Technology around for multiple decades + Network widely deployed, everyone can get access + Attractive targets on the network + Cheap hardware to get low-level bitstream access + Intelligence of protocols in end nodes, not network + Protocols implemented in host software, not firmware + Many open source implementations of protocols + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Comparison with GSM + + + Lets compare this with e.g. the GSM network + Open specification of protocols (ETSI/3GPP) + ! Almost zero 3rd party literature on protocols + ! Technology only around since early 1990s + Network widely deployed, everyone can get access + Attractive targets on the network + ! No hardware for low-level bitstream access + ! Intelligence in the network as well as end nodes + ! Protocols implemented in device firmware + ! Zero open source implementations of the protocols + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Comparison with DECT + + + Lets compare this with e.g. the DECT protocols + Open specification of protocols (ETSI) + ! Almost zero 3rd party literature on protocols + ! Technology only around since early 1990s + ! Only smaller networks in companies, or single-cell home installations + ! Attractive targets, but not accessible remotely + ! No hardware for low-level bitstream access + ! Intelligence in the network as well as end nodes + ! Protocols implemented in device firmware + ! Zero open source implementations of the protocols + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Comparison with RFID + + + Lets compare this with e.g. the RFID world + ! Many protocols proprietary and not openly specified + ! Very few 3rd party literature on protocols + ! Technology only around since late 1990s + ! Widely deployed in access control and payment systems + ! Attractive targets, but not accessible remotely + ! No hardware for low-level bitstream access + Intelligence of protocol in end nodes + ! Protocols implemented in device firmware + ! Only one open source implementation of very few protocols + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Conclusions (1/3) + + + Knowledge about non-Internet communications protocols hard to obtain + standards documents very verbose and hard to read + no good books + very few people know it, very few courses/classes + no open source protocol implementations + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Conclusions (2/3) + + + Bitstream access to low level protocol data close to impossible + there is a lack of the equivalent of an 'Ethernet card in promiscuous mode with tcpdump/wireshark' + only device manufacturers inside the industry have the technology + they are very secretive and closed + very few commercial implementations (two to five in all devices world wide!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Conclusions (3/3) + + + Security researchers are software/crypto/maths geeks + usually have very limited knowledge about hardware + even less knowledge about RF / radio / signal processing + There are very few hardware developers with 'Free Software' spirit + usually have very limited knowledge about security + The industry is aware of their security issues and they're afraid + they will not provide any technical assistance + they profit from security by obscurity + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Results + + + Non-Internet communications doesn't receive any reasonable amount of scrutiny at all + + Many existing attacks or attack principles that have been long known in the Internet are not known or haven't been tried in other protocols + + Overall security of non-Internet networks is much weaker + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +How to change it + +How do we change this? + By developing hardware for low-level bitstream access + Universal Software Radio Peripheral (USRP) + Open Hardware SDR platform + OpenPCD, OpenPICC + specifically for 13.56MHz RFID + By developing Open Source low level protocol implementations + GSM: http://wiki.thc.org/gsm/decode + DECT: work behind the scenes in CCC + RFID: http://www.openmrtd.org/projects/librfid + By rising awareness about the lack of securtiy + By having more people try to understand hardware + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Closer look at USRP project + + + Project scope + develop Open Source software defined radio platform + develop RF frontends for receive and transmit on all bands + + Project status + USRP1 finished and in production for a number of yearsI + Various frontends for 0...2.7GHz Rx + Tx available + USRP2 in final R&D stage (gigabit ethernet, no USB2) + + Result + Hardware is used by THC GSM, CCC DECT and other projects + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Closer look at gnuradio project + + + Project scope + develop Free Software toolkit for SDR + implement all major algorithms (de/modulator, filter, interpolator, bit sync, frame sync, ...) + implement software for as many protocols as possible + + Project status + All analog modulations (AM/FM/SSB/...) for amateur radio and commercial broadcast + Demodulation of ASK, FSK, GMSK, BPSK, QPSK, QAM and others + Full ATSC implementation years ago (broadcast flag debate) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Closer look at THC GSM project + + + Project has wide scope: + cracking of A5/1 and A5/2 algorithms + demodulation/decoding/demultiplex of GSM Um Interface + GSM Um protocol plugin for wireshark + finally, they aim for GSM transmit side, too! + + Project status (GSM Rx side) + demodulation/decoding/demultiplex with gnuradio+USRP + wireshark plugin coming nicely along + code is public, anyone can use it today! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Closer look at CCC DECT security project + + + Project scope + implement software for DECT receive/decode in gnuradio + implement custom cheap hardware for DECT Rx+Tx + implement wireshark DECT plugin + attempt to discover DSC (on-die in DECT burst controllers) + attempt to discover DSAA (in device firmware) + + Project status + custom hardware, gnuradio software and wireshark plugin working + DSAA shows good progress + DSC progress very slow + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Closer look at OpenPCD project + + + Project scope + open hardware design for 13.56MHz RFID reader + open source firmware for reader + open source protocol stack (librfid) + open source sniffer and RFID card emulator (OpenPICC) + Project status + OpenPCD hardware is finished and in production + supports MIFARE, ISO 14443-1,2,3,4 A+B, ISO15693 + no GUI and stable high-level API yet + OpenPICC R&D painful, but expected to be finished Q3/2008 + Result for security researchers + OpenPCD and OpenPICC used extensively in MIFARE classic attacks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Communications Security +Thanks + + + Motorola, HTC + for producing mobile phones with security holes, enabling people to hack + OpenMoko, Inc. + for trying to bring more openness into the closed mobile market + Philips / NXP + for encrypting the documentation on their RFID chipsets with only 40bit, thus enabling OpenPCD and librfid development + Chaos Computer Club + for providing a forum (home?) to many ethical hackers + Milosch, starbug, Henryk + for their great work on Mifare Classic / CRYPTO1 hacking + THC + for starting and driving the GSM hacking project + Matt Ettus and Eric Blossom + for the marvels of USRP and gnuradio + Linuxtag, specifically Nils Magnus + for inviting me to speak here diff --git a/2008/smartphone_anatomy-ccc2008/.agenda.txt.swp b/2008/smartphone_anatomy-ccc2008/.agenda.txt.swp new file mode 100644 index 0000000..31455c4 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/.agenda.txt.swp differ diff --git a/2008/smartphone_anatomy-ccc2008/Gta02a5_pcba_cs.jpg b/2008/smartphone_anatomy-ccc2008/Gta02a5_pcba_cs.jpg new file mode 100644 index 0000000..ffd54b3 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/Gta02a5_pcba_cs.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/Gta02v1_bottom.jpg b/2008/smartphone_anatomy-ccc2008/Gta02v1_bottom.jpg new file mode 100644 index 0000000..cefda28 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/Gta02v1_bottom.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/IMG_8173.JPG b/2008/smartphone_anatomy-ccc2008/IMG_8173.JPG new file mode 100644 index 0000000..6b7c7a7 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/IMG_8173.JPG differ diff --git a/2008/smartphone_anatomy-ccc2008/SimpleComponentDiagram.jpg b/2008/smartphone_anatomy-ccc2008/SimpleComponentDiagram.jpg new file mode 100644 index 0000000..d5fe8f3 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/SimpleComponentDiagram.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.jpg b/2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.jpg new file mode 100644 index 0000000..733893e Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.png b/2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.png new file mode 100644 index 0000000..b020cc7 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/WM8753_ALSA_Mapping.png differ diff --git a/2008/smartphone_anatomy-ccc2008/agenda.txt b/2008/smartphone_anatomy-ccc2008/agenda.txt new file mode 100644 index 0000000..9e9e83f --- /dev/null +++ b/2008/smartphone_anatomy-ccc2008/agenda.txt @@ -0,0 +1,17 @@ +differentiation feature phone <-> smartphone + feature phone: single CPU: GSM stack + UI on one CPU + smartphone: dual CPU: 'digital baseband' + 'application processor' + +we will look at some smartphones + Openmoko GTA02 (FreeRunner) + E-TEN glofiish M800/X800 + Motorola EZX (A780/A1200/Rokr E6) + +Major components + show GTA02 SimpleComponentDiagram + +anatomy of the GSM side: + CPU (ARM7 for 2G, ARM9 for 3G) + DSP + ADC/DAC + RF PA diff --git a/2008/smartphone_anatomy-ccc2008/e680_jtag.jpg b/2008/smartphone_anatomy-ccc2008/e680_jtag.jpg new file mode 100644 index 0000000..38a94f9 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/e680_jtag.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/gta02v1_bottom.jpg b/2008/smartphone_anatomy-ccc2008/gta02v1_bottom.jpg new file mode 100644 index 0000000..963b66c Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/gta02v1_bottom.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/smartphone-anatomy-INCOMPLETE.mgp b/2008/smartphone_anatomy-ccc2008/smartphone-anatomy-INCOMPLETE.mgp new file mode 100644 index 0000000..ac23f58 --- /dev/null +++ b/2008/smartphone_anatomy-ccc2008/smartphone-anatomy-INCOMPLETE.mgp @@ -0,0 +1,157 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +HOWTO + +How was this done? + Various reverse engineering techniques + Take actual board apart, note major components + Find + use JTAG testpads + Find + use serial console + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +Opening the case and void your warranty +%image "x800_backside_nobat_nocover.jpg" +Note the convenient test pads beneath the battery + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +Opening the case +%image "x800_opening_the_case.jpg" 800x600 +If you have a bit of experience in taking apart devices, you can do that without any damage... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The Mainboard with all its shielding covers +%image "x800_mainboard_with_shielding.jpg" 800x600 +Obvoiusly, the shielding needs to go + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The application processor section +%image "x800_application_processor.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The HSDPA modem section +%image "x800_hsdpa_modem.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The backside +%image "x800_backside_with_lcm.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + + + JTAG is a very useful interface + boundary scan (EXTEST + INTEST) + ARM Integrated Debug Macrocell + Find + use JTAG testpads + look for suspicious testpads on PCB + tracing PCB traces impossible at 8-layer PCB + trial + error + sometimes you might find schematics ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "e680_jtag.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + + Find + use JTAG testpads + JTAG is basically a long shift register + Input, Output, Clock (TDI, TDO, TCK) + Therefore, you can try to shift data in and check if/where it comes out + Automatized JTAG search by project "jtagfinder" by Hunz (German CCC member) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_dbgconn_closeup.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_debcon_pcb.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_jtagfinder_probes.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_jtagfinder.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + + +Found JTAG pins + Chain 1 + Samsung S3C2442 Application Processor + Has standard ARM JTAG ICE + Chain 2 + CPLD programming interface + Remaining work + find the nTRST and nSRST pins + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Serial console + + +How to find the serial console + Just run some code that you think writes to it + Use a Scope to find typical patterns of a serial port + I haven't actually done (or needed) this on the glofiish yet, but on many other devices + RxD pin is harder to find, just trial+error usually works as soon as you have some interactive prompt that echo's the characters you write + Don't forget to add level shifter from 3.3/5V to RS232 levels + + diff --git a/2008/smartphone_anatomy-ccc2008/smartphone-anatomy.mgp b/2008/smartphone_anatomy-ccc2008/smartphone-anatomy.mgp new file mode 100644 index 0000000..36b8160 --- /dev/null +++ b/2008/smartphone_anatomy-ccc2008/smartphone-anatomy.mgp @@ -0,0 +1,634 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + +Anatomy of +Contemporary +Smartphone Hardware + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Introduction + + +My involvement with mobile phones + 2003/2004: gpl-violations.org / Motorola A780 + 2004: Started OpenEZX for A780 (now E680, A1200, E6, ...) + 2006: Bought my first GSM BTS + 06/2006-11/2007: Lead System Architect at Openmoko, Inc. + 10/2008: Started the 'gnufiish' project + 12/2008: Running my own GSM test network (see talk tomorrow morning!) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Introduction + + +What is a Smartphone? + + No clear definition on terminology + Many technical people differentiate + Feature Phone: Single-CPU phone + Single CPU + Single OS for GSM + UI + Smartphone: Dual-CPU phone + First CPU core for the actual network protocol + Second CPU for the UI + Applications + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Smartphone hardware + +Major Components (AP side) + Application Processor (System-on-a-Chip) + Samsung / Marvell / Ti / Freescale + Flash (typically SLC or MLC NAND) + connects to SoC internal NAND controller + RAM (mobileSDRAM / mobileDDR) + connects to SoC internal SDRAM controller + Power Management Unit (PMU / PMIC) + connects via I2C or SPI + Audio Codec + connects via I2C + PCM + Bluetooth + connects via UART or SPI + WiFi + connects via SDIO or SPI + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Smartphone hardware + +Major Components (BP side) + DSP + RF Baseband Signal Processing + Voice Signal Processing + CPU (typically ARM7) + GSM protocol Stack (Layer 2, Layer 3) + AT Command Interpreter + Typically LCM + Keypad Matrix + not used, just for feature phone + RF PA (Power Amplifier) + Antenna Switch (MEMS SPST) + DAC + ADC + Voice and Baseband DAC + ADC + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Smartphone hardware + +AP / BP hardware interface + + 2G (GSM Voice/SMS/CSD + GPRS) + typically connects via (high-speed) UART + sometimes USB + UART speeds still sufficient + 3G (UMTS) / 3.5G (HSDPA/HSUPA) + shared memory interface + SPI or USB + USB by itself is not sufficient + doesn't allow for wake-up by BP + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Smartphone hardware + +Audio interface + + Typically at least three analog outputs + one handset ear speaker + one ringtone speaker + headphone/earphone/headset + Typically at least two analog inputs + built-in microphone + headphone/earphone/headset + GSM Modem interface + analog at line-level (for featurephone bb) + digital (PCM) in some cases + At least two PCM busses + one between SoC and Audio Codec + one between Bluetooth and Audio Codec + Result + Complex audio routing/setup + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Smartphone hardware + +Audio routing on Openmoko GTA01/GTA02 +%image "WM8753_ALSA_Mapping.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Openmoko hardware + + +Openmoko hardware + GTA01 (Neo1973) + GTA02 (FreeRunner) + Interesting to study, since schematics are public + only the GSM baseband side has been removed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Openmoko hardware + +%image "SimpleComponentDiagram.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Openmoko hardware + +%image "gta02v1_bottom.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Motorola EZX hardwware + + +Motorola EZX hardwware + Generation 1: + Motorola A760, A768, A780, E680 + Hardware mostly known, schematics leaked + Generation 2: + Motorola A910, A1200, Rokr E6, A1600 + Hardware mostly known, schematics partially leaked + Generation 3: + Rokr E8, Rizr Z6, Razr2 V8, i876, U9, A1800 + Very little knowledge about hardwrae, custom SoC + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Motorola EZX hardwware + +EZ Gen1 + SoC: PXA27x + PMU: Motorola PCAP + interface: SPI + BP: Neptune LTE + interface: USB + gpio handshake + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Motorola EZX hardwware + +EZ Gen3 + SoC: Custom Freescale + BP: Custom Freescale + A lot is unknown + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Community based projects + + +Linux mobile phone community ports + + The vendor ships WM or other OS, community replaces it + xda-developers.com community + mostly focused on HTC devices + way too little developers fro too many devices + hardware product cycles getting shorter / faster + many new devices based on completely undocumented chipsets + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Linux-friendly hardware + + +The E-TEN glofiish device family + + various devices with different parameters + screen full-VGA or QVGA + EDGE-only, UMTS or HSDPA + keyboard or no keyboard + GPS or no GPS + Wifi or no Wifi + application processor is always the same (S3C2442) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Linux-friendly hardware + +I went through this process + I found the E-TEN glofiish devices + They are very similar to Openmoko + Samsung S3C2442 SoC MCP with NAND+SDRAM + TD028TTEC1 full-VGA LCM + Other hardware parts reasonably supported/known + Marvell 8686/libertas WiFi (SPI attached) + SiRF GPS (UART attached) + CSR Bluetooth (UART attached) + Only some unknown parts + CPLD for power management and kbd matrix + Ericsson GSM Modem (AT commandset documented!) + Cameras (I don't really care) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Project gnufiish + + +Project 'gnufiish' + Port Linux to the E-TEN glofiish devices + Initially to the M800 and X800 + Almost all glofiish have very similar hardware + Openmoko merges all my patches in their kernel! + Official inclusion to Openmoko distribution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Project gnufiish + +gnufiish Status + Kernel (2.6.24/2.6.27) booted on _first attempt_ + Working + I2C host controller + I2C communication to CPLD and FM Radio + USB Device mode (Ethernet gadget) + Touchscreen input + LCM Framebuffer + LCM Backlight control + GPS and Bluetooth power control + GPIO buttons + In the works + Audio Codec driver (50% done) + GSM Modem (SPI) driver (80% done) + M800 Keyboard + Capsense driver (25% done) + SPI glue to libertas WiFi driver (70% done) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +HOWTO + +How was this done? + Various reverse engineering techniques + Take actual board apart, note major components + Use HaRET (hardwar reverse engineering tool) + Find + use JTAG testpads + Find + use serial console + Disassemble WinMobile drivers + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +Opening the case and void your warranty +%image "x800_backside_nobat_nocover.jpg" +Note the convenient test pads beneath the battery + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +Opening the case +%image "x800_opening_the_case.jpg" 800x600 +If you have a bit of experience in taking apart devices, you can do that without any damage... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The Mainboard with all its shielding covers +%image "x800_mainboard_with_shielding.jpg" 800x600 +Obvoiusly, the shielding needs to go + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The application processor section +%image "x800_application_processor.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The HSDPA modem section +%image "x800_hsdpa_modem.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Take hardware apart + +The backside +%image "x800_backside_with_lcm.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + + + JTAG is a very useful interface + boundary scan (EXTEST + INTEST) + ARM Integrated Debug Macrocell + Find + use JTAG testpads + look for suspicious testpads on PCB + tracing PCB traces impossible at 8-layer PCB + trial + error + sometimes you might find schematics ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "e680_jtag.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + + Find + use JTAG testpads + JTAG is basically a long shift register + Input, Output, Clock (TDI, TDO, TCK) + Therefore, you can try to shift data in and check if/where it comes out + Automatized JTAG search by project "jtagfinder" by Hunz (German CCC member) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_dbgconn_closeup.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_debcon_pcb.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_jtagfinder_probes.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + +Find + use JTAG testpads +%image "x800_jtagfinder.jpg" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +JTAG pins + + +Found JTAG pins + Chain 1 + Samsung S3C2442 Application Processor + Has standard ARM JTAG ICE + Chain 2 + CPLD programming interface + Remaining work + find the nTRST and nSRST pins + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Serial console + + +How to find the serial console + Just run some code that you think writes to it + Use a Scope to find typical patterns of a serial port + I haven't actually done (or needed) this on the glofiish yet, but on many other devices + RxD pin is harder to find, just trial+error usually works as soon as you have some interactive prompt that echo's the characters you write + Don't forget to add level shifter from 3.3/5V to RS232 levels + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +What's HaRET + +What is HaRET + a Windows executable program for any WinCE based OS + offers a control interface on a TCP port + connect to it using haretconsole (python script) on Linux PC + supports a number of popular ARM based SoC (PXA, S3C, MSM) + features include + GPIO state and tracing + MMIO read/write + virtual/physical memory mapping + IRQ tracing (by redirecting IRQ vectors) + load Linux into ram and boot it from within WinCE + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Using HaRET + +Using HaRET + run the program on the target device + connect to it using haretconsole over USB-Ethernet + read GPIO configuration + Create GPIO funciton map based on SoC data sheet + watch for GPIO changes + remove the signal from the noise + exclude unitneresting and frequently changing GPIOs + watch for GPIO changes while performing certain events + press every button and check + start/stop peripherals + insert/eject SD card + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Using HaRET + + +Using HARET + watch for IRQ changes/events + e.g. you see DMA3 interrupts while talking to the GSM + read MMIO config of DMA controller to determine user: SPI + read SPI controller configuration + DMA controller configuration + find RAM address of data buffers read/written by DMA + haretconsole writes logfiles + you can start to annotate the logfiles + of course, all of this could be done using JTAG, too. + but with HaRET, you mostly don't need it!!! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Disassembling WinCE drivers + + +Disassmbling WinCE drivers + is the obvious thing to do, right? + is actually not all that easy, since + WinCE doesn't allow you to read the DLLs + not via ActiveSync neither WinCE filesystem API's + Apparently, they are pre-linked and not real files anymore + luckily, there are tools in the 'ROM cooking' scene + hundreds of different tools, almost all need Windows PC + therefore, not useful to me + conclusion: Need to understand the ROM image format + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Disassembling WinCE ROM files + +Disassembling WinCE ROM files + 'datextract' to extract different portions like OS image + 'x520.pl' to remove spare NAND OOB sectors from image and get a file + split resulting image in bootsplash, cabarchive and disk image + 'xx1.pl' to split cabarchive into CAB files + 'partextract' to split disk image in partitions + 'SRPX2XIP.exe' (wine) to decompress XPRS compressed partition0+1 + 'dumpxip.pl' to dump/recreate files in partition0 and 1 + 'ImgfsToDump.exe' to dump/recreate files in partition2 (imagefs) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Disassembling WinCE Drivers + + +Disassembling WinCE Drivers + Now we finally have the re-created DLL's with the drivers + Use your favourite debugger/disassembler to take them apart + I'm a big fan of IDA (Interactive Disassembler) + The only proprietary software that I license+use in 15 years + There's actually a Linux x86 version + Was even using it with qemu on my Powerbook some years back + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Disassembling WinCE Drivers + +Important drivers + pwrbtn.dll: the power button ?!? + spkphn.dll: high-level device management + i2c.dll: S3C24xx I2C controller driver + spi.dll: The GSM Modem SPI driver + Sergsm.dll: S3C24xx UART driver, NOT for GSM + SerialCSR.dll: CSR Bluetooth driver + fm_si4700.dll: The FM Radio (I2C) + battdrvr.dll: Battery device (I2C) + keypad.dll: Keypad+Keyboard+Capsense (I2C) + GSPI8686.dll: Marvell WiFi driver (SPI) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Disassembling WinCE Drivers + +Disassembling WinCE drivers + Is typically hard, they're completely stripped + Windows drivers are very data-driven, not many symbols/functions + However, debug statements left by developers are always helpful + After some time you get used to it + You know your hardware and the IO register bases + take it from there, look at register configuration + What I've learned about WinCE driver development + ... would be an entirely separate talk + MSDN luckily has full API documentation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +WinCE Registry + + +WinCE has a registry, too + I never really understood what this registry is all about, but it doesn't matter ;) + You can use 'synce-registry' to dump it to Linux + Contains important information about + how drivers are interconnected + various configuration parameters of drivers + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Links + + http://wiki.openmoko.org/ + http://wiki.openezx.org/Glofiish_X800 + http://git.openezx.org/?p=gnufiish.git + http://eten-users.eu/ + http://wiki.xda-developers.com/ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Anatomy of Contemporary Smartphone Hardware +Thanks + + +Thanks to + The OpenEZX team that continues the project + Openmoko, Inc. for trying to create more open phones + Hunz for his jtagfinder + xda-developers.org for all their work on WinCE tools + eten-users.eu for the various ETEN related ROM cooking projects + Willem Jan Hengeveld (itsme) for his M700 ROM tools + Samsung, for having 100% open source driver for their SoC's + Ericsson, for publishing the full AT command set for their modems diff --git a/2008/smartphone_anatomy-ccc2008/smartphone-anatomy.pdf b/2008/smartphone_anatomy-ccc2008/smartphone-anatomy.pdf new file mode 100644 index 0000000..2905944 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/smartphone-anatomy.pdf differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_application_processor.jpg b/2008/smartphone_anatomy-ccc2008/x800_application_processor.jpg new file mode 100644 index 0000000..2d5fafb Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_application_processor.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_backside_nobat_nocover.jpg b/2008/smartphone_anatomy-ccc2008/x800_backside_nobat_nocover.jpg new file mode 100644 index 0000000..18267c5 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_backside_nobat_nocover.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_backside_with_lcm.jpg b/2008/smartphone_anatomy-ccc2008/x800_backside_with_lcm.jpg new file mode 100644 index 0000000..74a4371 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_backside_with_lcm.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_dbgconn_closeup.jpg b/2008/smartphone_anatomy-ccc2008/x800_dbgconn_closeup.jpg new file mode 100644 index 0000000..112d8f8 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_dbgconn_closeup.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_debcon_pcb.jpg b/2008/smartphone_anatomy-ccc2008/x800_debcon_pcb.jpg new file mode 100644 index 0000000..87a6bbd Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_debcon_pcb.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_factorytest.jpg b/2008/smartphone_anatomy-ccc2008/x800_factorytest.jpg new file mode 100644 index 0000000..9447b3a Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_factorytest.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_hsdpa_modem.jpg b/2008/smartphone_anatomy-ccc2008/x800_hsdpa_modem.jpg new file mode 100644 index 0000000..2612957 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_hsdpa_modem.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_jtagfinder.jpg b/2008/smartphone_anatomy-ccc2008/x800_jtagfinder.jpg new file mode 100644 index 0000000..e790d4d Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_jtagfinder.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_jtagfinder_probes.jpg b/2008/smartphone_anatomy-ccc2008/x800_jtagfinder_probes.jpg new file mode 100644 index 0000000..370e215 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_jtagfinder_probes.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_mainboard_with_shielding.jpg b/2008/smartphone_anatomy-ccc2008/x800_mainboard_with_shielding.jpg new file mode 100644 index 0000000..4630dce Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_mainboard_with_shielding.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_opening_the_case.jpg b/2008/smartphone_anatomy-ccc2008/x800_opening_the_case.jpg new file mode 100644 index 0000000..f2b46d6 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_opening_the_case.jpg differ diff --git a/2008/smartphone_anatomy-ccc2008/x800_usbdownload.jpg b/2008/smartphone_anatomy-ccc2008/x800_usbdownload.jpg new file mode 100644 index 0000000..74228a4 Binary files /dev/null and b/2008/smartphone_anatomy-ccc2008/x800_usbdownload.jpg differ diff --git a/2008/tex-attempt/foss-silicon_manufacturer-elce2008.pdf b/2008/tex-attempt/foss-silicon_manufacturer-elce2008.pdf new file mode 100644 index 0000000..b350407 Binary files /dev/null and b/2008/tex-attempt/foss-silicon_manufacturer-elce2008.pdf differ diff --git a/2008/tex-attempt/foss-silicon_manufacturer-elce2008.tex b/2008/tex-attempt/foss-silicon_manufacturer-elce2008.tex new file mode 100644 index 0000000..a3b6142 --- /dev/null +++ b/2008/tex-attempt/foss-silicon_manufacturer-elce2008.tex @@ -0,0 +1,276 @@ +% $Header: /cvsroot/latex-beamer/latex-beamer/solutions/conference-talks/conference-ornate-20min.en.tex,v 1.7 2007/01/28 20:48:23 tantau Exp $ + +\documentclass{beamer} + +% This file is a solution template for: + +% - Talk at a conference/colloquium. +% - Talk length is about 20min. +% - Style is ornate. + + + +% Copyright 2004 by Till Tantau . +% +% In principle, this file can be redistributed and/or modified under +% the terms of the GNU Public License, version 2. +% +% However, this file is supposed to be a template to be modified +% for your own needs. For this reason, if you use this file as a +% template and not specifically distribute it as part of a another +% package/program, I grant the extra permission to freely copy and +% modify this file as you see fit and even to delete this copyright +% notice. + + +\mode +{ + \usetheme{Warsaw} + % or ... + + \setbeamercovered{transparent} + % or whatever (possibly just delete it) +} + + +\usepackage[english]{babel} +% or whatever + +\usepackage[latin1]{inputenc} +% or whatever + +\usepackage{times} +\usepackage[T1]{fontenc} +% Or whatever. Note that the encoding and the font should match. If T1 +% does not look nice, try deleting the line with the fontenc. + + +\title{How chip makers should (not) support Free Software} + +\subtitle +{Avoiding earned Paper Has a Subtitle} + +\author{Harald Welte} + +\institute +{ + hmw-consulting.de\\ + gpl-violations.org\\ + VIA Open Source Liaison} +% - Use the \inst command only if there are several affiliations. +% - Keep it simple, no one is interested in your street address. + +\date[NLUUG/ELCE 2008] % (optional, should be abbreviation of conference name) +{Embedded Linux Conference Europe, 2008} +% - Either use conference name or its abbreviation. +% - Not really informative to the audience, more for people (including +% yourself) who are reading the slides online + +\subject{Embedded Linux} +% This is only inserted into the PDF information catalog. Can be left +% out. + + + +% If you have a file called "university-logo-filename.xxx", where xxx +% is a graphic format that can be processed by latex or pdflatex, +% resp., then you can add a logo as follows: + +% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename} +% \logo{\pgfuseimage{university-logo}} + + + +% Delete this, if you do not want the table of contents to pop up at +% the beginning of each subsection: +\AtBeginSubsection[] +{ + \begin{frame}{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + + +% If you wish to uncover everything in a step-wise fashion, uncomment +% the following command: + +%\beamerdefaultoverlayspecification{<+->} + + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame}{Outline} + \tableofcontents + % You might wish to add the option [pausesections] +\end{frame} + + +% Structuring a talk is a difficult task and the following structure +% may not be suitable. Here are some rules that apply for this +% solution: + +% - Exactly two or three sections (other than the summary). +% - At *most* three subsections per section. +% - Talk about 30s to 2min per frame. So there should be between about +% 15 and 30 frames, all told. + +% - A conference audience is likely to know very little of what you +% are going to talk about. So *simplify*! +% - In a 20min talk, getting the main ideas across is hard +% enough. Leave out details, even if it means being less precise than +% you think necessary. +% - If you omit details that are vital to the proof/implementation, +% just say so once. Everybody will be happy with that. + +\section{Motivation} + +\subsection{The Basic Problem That We Studied} + +\begin{frame}{Make Titles Informative. Use Uppercase Letters.}{Subtitles are optional.} + % - A title should summarize the slide in an understandable fashion + % for anyone how does not follow everything on the slide itself. + + \begin{itemize} + \item + Use \texttt{itemize} a lot. + \item + Use very short sentences or short phrases. + \end{itemize} +\end{frame} + +\begin{frame}{Make Titles Informative.} + + You can create overlays\dots + \begin{itemize} + \item using the \texttt{pause} command: + \begin{itemize} + \item + First item. + \pause + \item + Second item. + \end{itemize} + \item + using overlay specifications: + \begin{itemize} + \item<3-> + First item. + \item<4-> + Second item. + \end{itemize} + \item + using the general \texttt{uncover} command: + \begin{itemize} + \uncover<5->{\item + First item.} + \uncover<6->{\item + Second item.} + \end{itemize} + \end{itemize} +\end{frame} + + +\subsection{Previous Work} + +\begin{frame}{Make Titles Informative.} +\end{frame} + +\begin{frame}{Make Titles Informative.} +\end{frame} + + + +\section{Our Results/Contribution} + +\subsection{Main Results} + +\begin{frame}{Make Titles Informative.} +\end{frame} + +\begin{frame}{Make Titles Informative.} +\end{frame} + +\begin{frame}{Make Titles Informative.} +\end{frame} + + +\subsection{Basic Ideas for Proofs/Implementation} + +\begin{frame}{Make Titles Informative.} +\end{frame} + +\begin{frame}{Make Titles Informative.} +\end{frame} + +\begin{frame}{Make Titles Informative.} +\end{frame} + + + +\section*{Summary} + +\begin{frame}{Summary} + + % Keep the summary *very short*. + \begin{itemize} + \item + The \alert{first main message} of your talk in one or two lines. + \item + The \alert{second main message} of your talk in one or two lines. + \item + Perhaps a \alert{third message}, but not more than that. + \end{itemize} + + % The following outlook is optional. + \vskip0pt plus.5fill + \begin{itemize} + \item + Outlook + \begin{itemize} + \item + Something you haven't solved. + \item + Something else you haven't solved. + \end{itemize} + \end{itemize} +\end{frame} + + + +% All of the following is optional and typically not needed. +\appendix +\section*{\appendixname} +\subsection*{For Further Reading} + +\begin{frame}[allowframebreaks] + \frametitle{For Further Reading} + + \begin{thebibliography}{10} + + \beamertemplatebookbibitems + % Start with overview books. + + \bibitem{Author1990} + A.~Author. + \newblock {\em Handbook of Everything}. + \newblock Some Press, 1990. + + + \beamertemplatearticlebibitems + % Followed by interesting articles. Keep the list short. + + \bibitem{Someone2000} + S.~Someone. + \newblock On this and that. + \newblock {\em Journal of This and That}, 2(1):50--100, + 2000. + \end{thebibliography} +\end{frame} + +\end{document} + + -- cgit v1.2.3