1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
|
%include "default.mgp"
%default 1 bgrad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%back "blue"
%center
%size 7
OpenMoko
What, Why and How
%center
%size 4
by
Harald Welte <laforge@openmoko.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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
|