laforge-slides/2007/openmoko-foss_in-2007/openmoko-tech.mgp

439 lines
12 KiB
Plaintext

%include "default.mgp"
%default 1 bgrad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%back "blue"
%center
%size 8
OpenMoko
Free Software Phone Architecture
%center
%size 4
by
Harald Welte <laforge@openmoko.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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
I have quit working for OpenMoko, Inc. or the FIC group.
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
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
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.22.5/2.6.24-rc4
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
e.g. kernel goal: make vanilla 2.6.25+ kernel have all drivers
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
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
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 (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 done
Xglamofb making good progress
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
OpenMoko
Future Hardware
GTA03
not public yet :)
GTX01
not public yet :)
GTX02
not public yet :)
Always in motion, the future is!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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+ 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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
OpenMoko
Thanks
Thanks to
Free Software Foundation
for the GNU Project
for the GNU General Public License
Motorola
for never managing to entirely lock down their EZX device
OpenEZX community
for continuing the effort that I once started
First International Computer, Inc.
for believing in a 100% Open Source product
for funding OpenMoko
mond
my girlfriend, whom I've had terribly neglected
All my friends
for whom I didn't have time a single minute in 18 months