%include "default.mgp" %default 1 bgrad %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %nodefault %back "blue" %center %size 7 OpenMoko What, Why and How %center %size 4 by Harald Welte %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page OpenMoko Contents Introduction What is Free Software? What is the FOSS Community? People / Groups involved Development Process Motivations FOSS likes FOSS disliks Weak Points Practical Rules Thanks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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 was Lead System Architect for OpenMoko until early November 2007 Why is he speaking to you? because every working day he suffers the lack of understanding between the community and the business world %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page OpenMoko Neo1973 GTA01 hardware Neo1973 GTA01 hardware SC2410 SoC @ 266MHz 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) 2 stereo speakers (1.2W) CSR4 based Bluetooth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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 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 Quad-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 kernel: linux 2.6.20.4 xserver: kdrive glibc glib gtk+ libmokoui libmokocore libgsmd / gsmd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page OpenMoko Development Model 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) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page OpenMoko Hackable Device 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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 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 lightweight, doesn't have _any_ dependencies aside from glibc we're working on gobject integration on top kernel part scheduled for mainline submission will support different phones / gsm chipsets Various HTC devices with Linux Motorola EZX phones using OpenEZX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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 Hardware ahead GTA02 Same case / physical size Same screen Same GPS Samsung S3C2442 at 400MHz More NAND (256MB) Will have WiFi (802.11b/g) Might have EDGE Better Power management Dedicated graphics processor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page OpenMoko Hardware ahead GTA03 not public yet :) GTX01 not public yet :) GTX02 not public yet :) All of them really exciting. Stay tuned :) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page OpenMoko Thanks Thanks to Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen for implementing (one of?) the world's best TCP/IP stacks Paul 'Rusty' Russell for starting the netfilter/iptables project for trusting me to maintain it today Astaro AG for sponsoring parts of my netfilter work Free Software Foundation for the GNU Project for the GNU General Public License FIC for funding OpenMoko