Project

General

Profile

OsmoDevCon2012 Minutes » History » Version 3

laforge, 12/10/2016 07:30 PM

1 2 laforge
{{>toc}}
2 1 laforge
3 3 laforge
h1. Meeting minutes of [[OsmoDevCon2012]]
4 1 laforge
5 3 laforge
6 2 laforge
h2. Day one
7
8
9 1 laforge
Start of day one.
10
11 2 laforge
h3. Introduction round
12 1 laforge
13 2 laforge
h3. 11:30 UMTS Phone hacking
14
15 3 laforge
<pre>
16 1 laforge
laf: complexity is higher than gsm -> therfore no complete implementation of lowerlevel parts
17
  use existing low-layer implementation (through reverse engineering)
18
qualcom rev project implemented a software debugger
19
dsp: using jtag could introduce timing problems, software solution make sense
20
laf: QC modem does not use crypto/signing, has multiple firmware images, uses rex (micro?)kernel. Newer ones use L4 as micro-kernel
21
  have build adapter board for accessing JTAG
22
dsp: there is an interface for debugging/tracing available
23
laf: attaching to the L2/L3 interface and exporting that via USB would be a likely next step
24
chem: QC works together with sec. researchers / responsible disclosure
25
laf: right now this HW is still easily available, similar conditions to start of osmocom project
26
  expects that newer HW will be locked down, so now would be a good time to start working
27
dsc: is also a good investment into the future, some LTE sticks are also QC base and not locked down
28
  (they also support UMTS, internal architecture is similar) (50-100€ LTE stick)
29
  tracing protocols are similar, too
30
  firmware update contains an ELF binary (with debug info)
31
laf: has started to look at MTK 3g/3.5g smartphones, also sold outside china, too
32
  use an integrated design (AP/BP in one chip, like QC)
33
  the GSM part is similar to the older MTK chipsets we know
34
  second sim slot is on the AP side (dual sim standby) maybe possible to access the BP side from AP
35
  good CPU performance, 100€
36
  still looking for UART/JTAG, pinout is known
37
  work going on to get them to publish linux kernel code
38
  the protocol between AP/BP seems to be not a binary one
39
  some devkit seems to be coming -> documentation
40
chem: there is work going on to get an LTE/LTEadvanced PHY level stack?
41
burg: the complexity of LTE phys layer is much less than for UMTS (LTE is more similar to wimax)
42
chem: LTE market is much more open than traditional (UMTS) telecom
43
  china+india will use LTE-TDD much more popular than (UMTS-TDD)
44
  SDR is current very popular in china for custom and niche designs/protocols/crypto (instead of ASICs)
45
burg: is RR mgmt available on the interface/message queues (in QC UMTS modem)?
46
laf: all parts of the stack use the same MQ system
47
28C3 talk: http://events.ccc.de/congress/2011/4019976347022Fahrplan/events/4735.en.html
48
HW is still easily available, similar conditions to start of osmocom project
49
  expects that newer HW will be locked down, so now would be a good time to start working
50
dsc: is also a go
51
burg: RR control in UMTS is the primary difference to 2.5G, the rest is similar, spec alone is hard to use
52 2 laforge
dsp: [[UbiNetics]] TM100 is a UMTS layer 1 "phone", large, dsp-based, gives you acces to L1 data over TCP
53 1 laforge
  are very hard to get&expensive, is LTE capable, designed for equipment designer, not enough documentation
54
  useful for UMTS L1 debugging, there is nothing comparable available, the QC modem is no replacement
55
    (they use HW for some L1 stuff)
56
burg: for UMTS development a good diagnostic tool is a requirement
57
chem: LTE reuses a lot of IETF protocols, looks like UMTS for data
58
  for voice calls there are several options:
59
    initial LTE was IP data only (like wimax), no notion of voice calls
60
    switch back to CS network GSM/UMTS
61 2 laforge
    [[VoLGA]]: Voice over LTE Generic Access (unlikely to be widely deployed?)
62
    [[VoLTE]]: it is an IMS connection (internet multimedia subsystem, basically SIP with diameter, ...)
63 1 laforge
      internet protocols "adapted" by telecom companies -> complex
64 2 laforge
    IMS would not be ready for LTE, [[VoLTE]] is a subset for voice+sms
65 1 laforge
    -> voice signaling is completely outside of the radio stack
66 2 laforge
    Initial [[VoLTE]] proposal is available, real standard is very similar (real only available to GSMA members)
67 1 laforge
chris: LTE phone have short standby because the need CS net + LTE at the same time
68
laf: contact me icon for jtag debug adapters (new jtag board as a replacement for simcard holder, difficult soldering)
69
vogelchr: can UMTS modulation be done on a PC?
70
burg: yes, on 2.5GHz multicore
71
dsp: also exists for LTE
72
burg/dsp: drawbacks of CDMA (UMTS), bad technology
73
laf: general predictions? UMTS will be switched of before GSM
74
burg: the problem going to LTE is completely changing the core network to IMS (to replace ss7/ (ss7 on ethernet))
75
chem: we will see many LTE networks, running LTE on 700MHz
76
dsp: 800MHz in germany, he has LTE signal but no GSM/UMTS coverage at home, is intended as a DSL replacement
77
burg: some teco eng. would not trust IMS core network for 1-1.5 years for paying customers
78
laf: theory: GSM for voice (because of large cells)
79
burg: nice for openBTS, plug it into IMS :)
80
laf: Time-Gap filler: have received donation of sagem GSM (MyX6 HW) trace phones (5 support GPRS)
81
  comes with windows program and protocol documentation, can do protocol traces
82
steve-m: JTAG pinouts are documented
83
  see http://senkron24.se.funpic.de/Test%20points%20/sagem/j-tag/tst%20point/MyX6_X7_V65_V75_TP.jpg
84
  phone contains Calypso + TWL3014
85
laf: we'd need a wireshark decoder
86
dsp: some lectures and code is available for this phone linked from our wiki
87 3 laforge
</pre>
88 1 laforge
89 2 laforge
h3. 13:xx-14:30 Lunch + Hallway Track
90
91 3 laforge
<pre>
92 1 laforge
laf: The schedule has changed
93
  let's talk about sim cards...
94
  we have sysmoSIM cards where we can create arbitrary files, ki, iccid, …
95
  for iccid you have to apply at the ITU, complex&expensive process
96
  problematic to find this for uSIM, none where we can place arbitrary files, only very expensive
97
  we found fully programmable cards instead, without OS, though
98
  datasheets are available, but samples not yet
99
  it is a CC32RS512, 16kB ram 512kB flash no mask ROM
100
    see: http://www.alibaba.com/product-gs/526964999/CC32RS512_Smart_card_with_32_bit.html
101
  ARM7TDMI 
102
  laf wrote a set qemu peripherals -> git.osmocom.org (http://cgit.osmocom.org/cgit/osmo-cos/)
103
  no incremental/byte program, page only -> makes FS development harder, laf has some plans here
104
  would be good to have another source
105
  this die has an additional ISO 7816-3 slave & master
106
chem: difference between SIM and uSIM?
107
laf: uSIM has a completely different protocol (beginning with the class id?), filenames and so on
108
  both based on ISO 7816
109
  uSIM has a backwards compatibility mode (so there are two ways to access each information)
110
  many different modes for authentication
111
  uSIM cards: 2G/3G uses milenage for both 2G and 3G
112
  3G phone, 3G network, 2G sIm => depends on network operator configuration...
113
  Today: most likely 3G sim for 3G network, milenage -> this allows authentication even on 2G roaming networks and 2G phones
114
  uSIMs also have files for recently used ARFCNs (to speed up startup)
115
discussion: how does mutual auth work in UMTS networks when using a GSM SIM? (unclear) standard is: 33.102
116
laf: we have an implementation of milenage in libosmocore, a util to generate the data and a
117
python utility to connect to a card reader and run UMTS Auth (osmo-sim-auth)
118
laf: the cards have no ROM bootloader, so for lowlevel bringup the qemu emulator is a good option
119 3 laforge
</pre>
120 1 laforge
121
122 2 laforge
h3. 15:00 OSMO GMR
123
124 3 laforge
<pre>
125 1 laforge
Voice: See slides
126
TDMA Framework Thoughts:No Slides, GNUradio hard to compile, channelization can not be
127
handed to the GPU, demodulation tough (e.g. burst, no constant phase), muller/muller problematic,
128
e.g. not locked at the end of a burst.
129
chem: Upstream works on features for packet radio
130
Framework like the calypso phone works. Define how channels are timed on TDMA, calls for
131
demodulate this frame...., calypso very constraint hardware, we can allocate memory.
132 2 laforge
david: repurpose l1 of [[OpenBTS]]. E.g. add something to sync, keep virtual frame number, record
133 1 laforge
offset between virtual and decoded frame number...
134
chem: Talk to Thomas, GSM decoding for TI Cx64(??), TDMA code for DSP
135
tnt: Still too tight to GSM, good as example for finding a good architecture. Want to understand how
136
it works, not just taking code from Airprobe|OpenBTS
137 2 laforge
[[MultiRX]]-Tool: See slides
138
 abstraction layer for FCD, UHD, [[OsmoSDR]], RTL-SDR, … hardware, generic interface
139 1 laforge
 channel config: CXX class, one file containing channel definitions (output sample rate, channel bandwidth, overloaded freq calculation function from ARFCN value)
140
 more devices (and cheaper): calculates number of hardware devices required and distributes user requested channels over a bunch of devices,
141
 e.g no wideband receiver needed to capture UL & DL simultaneously.
142
Outlook:
143
  Discovery mode for automated scanning (think of Wardriving)
144
  Integration of available demodulators
145
  Demodulator frequency error information used in multirx to allow better signal acquisition.
146
laf: is tool available?
147
?: work in progress (FIXME)
148
5 minutes break
149 3 laforge
</pre>
150 1 laforge
151
152 2 laforge
h3. laf: Osmo-SDR (no slides, video)
153
 
154 3 laforge
<pre>
155 1 laforge
  project has been running under the osmocom umbrella
156
  the HW ppl wanted to do that anyway for ham radio
157
  that's why its a bit diffreent than other project
158
  PCB assembly should happen in next weeks
159
  have enough components for 100 units
160
  samplerate 1M samples, possibly higher in another revision
161
  rate limited by serial interface between fpga and sam3u
162
  software is usb audio device with 1Ms at 14bit ADC
163
  usb audio at this sample rate does not work on OSX/Win32, custom driver needed
164
  spectrum looks clean
165
  sam3u has many usb endpoints, could be used to have a serial port in addition to usb-audio
166
  control could also use usb control messages, is exported via libusb
167
  timestamping is not possible in usb-audio, would need a different mode (to detect lost samples on the host)
168
    sam3u can do scatter gather dma, so not problem
169
  Price EUR 150.00 + vat, clock generator not cheap (USD 20-30), SAM3U, E4000..., WEEE registration
170
  is of course open hardware, more expansive than RTL-SDR
171
  will be in sysmocom's webshop in 2 weeks
172
  both FPGA and SAM3 gpio's are on headers
173
  TX board will be designed/created in the common weeks.
174
  the E4000 has many software configurable filters, and you can connect external baseband filters
175
  could do oversampling in the FPGA
176
  VHDL code is available via email from laforge
177
  firmware is in git repo, uses cortex m3 toolchain
178
  arecord has limit on sample rate… needs oneline patch
179
  with the powerful MCU we could frequency hopping onboard
180
  PWM for gain control are available, we could add a lot of intelligence
181
  can tune in 1MHz steps? SI570
182
  1pps input for GPS sync
183
  SWD debug board, Versaloon the only one available, STM develboard quite cheap as well
184 3 laforge
</pre>
185 1 laforge
  
186
187 2 laforge
h3. 16:45 GSMTAPv3 (slides+video)
188
189 3 laforge
<pre>
190 1 laforge
variable header:
191
Q/statements
192
 length in multiple of 32 bits... where to define padding? content might not be multiple of 32 bit
193
len..could be shorter
194
access to payload is not aligned
195
A: variable header mostly for information, len in bytes reduced max size...
196
Q/statments
197
fixed header len? End-Of-Options?
198
8bit tag/8bit len breaks alignment... but small types fit in 32bit
199
tag: MSB indicates...(like Q931.. ISDN)
200
tag: extension bit... long length field
201
Statement:
202
Tag address space split... change... if we need longer length field we can use some
203
extension for the length field (then we can not skip unknown tags anymore).
204
Manual padding (padding field)
205
Length field: represents real length, but next one will be 32bit aligned
206
Netlink... defines infrastructure for it
207
Q: How is a block defined? Hierachical?
208
A: Flat, A block is what you define for the protocol, e.g. logical channel with channel number, TS
209
Q: Physical block representation?
210
A: Block == Value of TLV
211
Two Datalink types assigned to us... by tcpdump
212
Variable headers...
213
Datatype in the header? changes the meaning of the payload completly.
214
Too much freedom will be hard to specify... 
215
laf: Just allow one type, otherwise everyone needs to implement everything.
216
laf: App dev PoV.. easiest to export in the native way, but GSMTAP should
217
    specify the format as it allows interop, only one input format needed.
218
chem: 1.) sending APP might be resource constrained 2.) only receiving app is wireshark
219
tnt: Want to change 2nd
220
chris: multi-rx
221
laf: virtual layer1 osmocomBB <-> osmoBTS.. use GSMtap for exchange? multicast UDP
222
chem: care more about sending application, more restricted in resources
223
...
224
laf: native types, new subtypes
225
chem: openbts on embedded board, wireshark can do any conversion
226
david: raw sample case is corner cases, wireshak does not have software radio support. No
227
raw sample format.
228
laf: Demodulated soft bits?
229
david: questionable, no fec in wireshark
230
tnt: other receivers might be interested
231
API
232
laf: msgb + len? where to start from?
233
tnt: Functions call msgb_put
234
Rename msgb to osmo_msgb? (clash with ortp/str_util.h), possibly there's a workaround, msgb deeply integrated in all osmoX-projects.
235
Q: What about adding n times the same atribute to one frame?
236
laf0rge(?): possibly one TLV with 4xV.. normal code will read the normal value, others the next three as well
237
Migration:
238
tnt will take the notes and come up with a proposal
239
Get things into wireshark, so they sink into distributions...
240
coffee break 17:45-18:00
241
18:15 dimitry is presenting his hardware
242
old (15 years) ISA board with SS7 implementation. DSP are used (single thread)
243
he added an FPGA to run the netlist
244
E1 output normally
245
second board (6 years old) out of production (ISA also)
246
wants to do a board with 2xE1 outputs (open source software, probably not HW), ~80% done
247
SS7 implementation not readable yet (needs month), but could then be published
248 3 laforge
</pre>
249 1 laforge
250 2 laforge
h3. 18:30 round table / rectangular table on [[OsmocomBB]]
251
252 3 laforge
<pre>
253 1 laforge
TOPICS:
254
255
    "De-Branching" (BTSAP, …)
256
257
    sr-labs, external patches
258
259
    User Interface
260
261
    Statetransitioning in L1
262
263
    NuttX
264
265
    GPRS Roadmap?
266
267
    mtk port?
268
269
    porting of l2/l3 into the phone..
270
271
    misc...
272
273
1. Branches (SAP)
274
275
    dexter sim so we should remove the branch...
276
277
    jolly-bts is not meant to be merged
278
279
    jolly: jolly-measurement is obsoleted (may still contain some handover parts)
280
281
    jolly-ui? is a hacked ui, will talk about that later
282
283
    laforge/mobile_event? will check.......
284
285
    laforge/neigh_sb? 
286
287
    nion/sap: needs to be tested by someone else
288
289
    prom/dietlibc: is a port to dietlibc, we keep it until we need it
290
291
    prom/loader-crc: can be removed
292
293
    prom/simaccess: ???
294
295
    steve-m/burst_mcsi: merge it into sylvain's branch
296
297
    steve-m/loader_sciphone: has been merged
298
299
    steve-m/mtk_hack: initial effort to support the MTK 223 6227 BBs (contains register offsets)
300
301
    sylvain/burst_ind: contains lots of DSP changes, supports multiple slots, but does not work as a phone anymore. could be merged to master (as compile option)
302
303
    sylvain/testing: one frame dropped when going from high to low band. l1 should be corrected to anticipate that, instead of having the dsp recover
304
305
    vogelchr/battery: is a dead end, will be replaced with the current version (force push current)
306
307
    vogelchr/framebuffer: is merged, has been removed
308
309
2. sr-labs, external patches
310
311
    luca/catcher
312
313
    luca/gsmmap
314
315
    ask to rebase/clean on top of master, after sylvain merged it -> laf
316
317
3. Statetransitioning in L1
318
tnt: resynch 
319
  parameters for the sync part should be changed/read atomically -> state_changed task
320
  task concept must be extended (undefined)
321
  can we afford to skip one frame in certain cases?
322
  using only alignment TS 0/4 should be simpler, but doesn't work so far
323
  tnt&laf need to think about this some more
324
3 1/2. Powersave
325
laf: shouln't be that much work
326
327
    we know the wakeup point from TDMA schedule
328
329
tnt: implement discont RX first?
330
dieter: deep sleep (disabling main clock) could introduce problems, is not enabled in the original fw (tsm430). several other sleep modes exist (without disabling main clock)
331
4. User Interface
332
jolly: i've got a branch, still working
333
334
    is a rather hackish framebuffer approach (which is now merged)
335
336
    the UI is in the stack, jolly wants a split between the application and UI, maybe the same with VTY
337
338
    new DLCI for the UI?
339
340
laf: we've been thinking about apps on the phone some times already
341
342
    message queues between those parts make sense
343
344
    maybe even queue between different parts of the stack, threads? -> requirements on OS?
345
346
    stack <-> ui <-> screen/kb
347
348
tnt: different ui parts (battery+clock) & primary app
349
laf: semantics: blocking or message queues (with threads)?
350
tnt: tasks: main loop which polls different components?
351
 basically a list of tasks to be polled, each one checking its queues and does processing without blocking. Dynamic list rather than hardcoded.
352
 not a preemptive multitask (with timer interrupts and such)
353
???
354
laf: we should try to come up with a plan to run everything in the phone
355
356
    what should be the primitives? direct framebuffer access? messages to ui component?
357
358
    could handle diffrent screen layouts
359
360
dieter: this widget stuff should be available somewhere as open source
361
look at rockbox, where an light UI has already been implemented (for simple devices)
362
in the beginning there was the idea of using LUA. how about that? (http://www.eluaproject.net/)
363
?: access to the GSM stack from a host cpu process instead of telnet?
364
laf: message queues should be a approach for this?
365
devel the UI on the PC (so to debug), then port it to the phone -> serial used
366
laf: summarizing, limited requirements for OS, no fullblown kernel (scheduler preemption)
367
368
    we only need message queues and a way to allocate messages
369
370
discussion about memory allocators: Deal with != memory types (isram/esram)
371
laf: maybe use gsm stack on internal ram and ui external ram? see how that goes
372
373
    tasks:
374
375
    define abstraction primitives beween app <-> ui ? rockbox investigation
376
377
    define primitives gsm stack <-> app
378
379
    move layer 2 and 3 to phone (is independant of tasks above)
380
381
    primitives can also be developed on the PC before moving them to phone
382
383
    l1ctl is ugly, needs structure, now we know better
384
385
    memory alloc: we don't need arbitrary sizes, something like slab would make sense
386
387
5. NuttX
388
laf: it seems we don't need it (yet) according to UI discussion
389
tnt: has not looked at in detail, would be nice to have some of the work done for us
390
391
    but it doesn't seem to do that much?
392
393
    hardware abstraction?
394
395
    has a filesystem
396
397
    l1 is already very self-contained
398
399
laf: it is posix-like, should make it easier for developers
400
steve: rockbox is also a small OS, could be a better choice? (or source of inspiration)
401
tnt: OS mainly useful for l2/l3
402
laf: posix semantics would mean copying of messages, would be nice to do without
403
404
    copying could become a problem
405
406
tnt: we don't see much of the (voice) data at all
407
laf: assuming we could leave the l1 unmodified the burst handling could be done in FIQ?
408
tsaitgaist: could 3G L1 be also as selfcontained as for GSM?
409
laf: application messages would be like:
410
411
    scan for networks
412
413
    place a call
414
415
    ...
416
417
    this would not be much different for 3G
418
419
laf: summary we could not gain much from nuttx, rockbox could provide use with UI (inspiration)?
420
steve: framebuffer is mosly compatible
421
laf: look at rockbox tonight, discuss tomorrow
422
(general agreement)
423
6. GPRS Roadmap?
424
tnt: not going to happen
425
dieter: testing could be done on nanobts
426
laf: l1 for gprs too complex, for networkside gprs debugging we don't need osmocombb gprs
427
428
    just send bursts to wireshark
429
430
7. mtk port?
431
laf: seems stalled
432
steve: TX works (Marcin's uboot repo)
433
laf: doesn't seem to be that much of a problem, just needs time and an interrested person
434
435
    they don't have a TPU, TDMA timers instead, needs reverse eng.
436
437
    higher level: what do we gain, no shortage of C123, otoh more CPU/better display
438
439
    usb for charging, no special cable needed
440
441
steve: even cheap ones have USB highspeed
442
laf: has edge, but we don't have gprs, only for sniffing
443
(low interest in this round)
444
laf: better to get current stuff working autonomously
445
446
    marcin would need to push this forward
447
448
8. porting of l2/l3 into the phone..
449
laf: see above...
450
9. misc...
451
laf: kevin wants to build a bord for connecting and charging the c123
452
(peter shows his c123 board holder)
453
charging:
454
455
    trickle chare requires calibration, missing documentation for selfcalibration
456
457
laf: do no trickle charge, simply constant current, then discarge
458 2 laforge
steve: be careful with the [[LiPoly]] battery on the FIXME, needs different code
459 1 laforge
vogelchr: do we need something like debugfs?
460
461
    something to get/set debug variables (in l1?)
462
463
laf: generalize code from osmo-sdr
464
peter: FW sends a list of variables/types
465
466
    then a generic ui is easy
467
468
laf: osmo-get-setter
469
registering dynamic unix socket channels, like old inetd protocol?
470
laf: steve did multiple channels in osmocon?
471
steve: no, that was prom
472
peter: usb=packets<-/->serial=stream :/
473
laf: we just need some transport
474
COMMIT
475
EOF
476
End of day one.
477 2 laforge
Start of day two.
478 3 laforge
</pre>
479 1 laforge
480 2 laforge
h2. Day two
481
482
483 1 laforge
h3. 10:20 GSM core network (video and slides)
484 2 laforge
485
486 3 laforge
h3. 15:00 osmo-BTS/sysmoBTS (video, no slides)
487 2 laforge
488 3 laforge
 16:00 femtocells (video and slides
489 2 laforge
490
h3. 17:30 VTY
491 1 laforge
492 3 laforge
<pre>
493 1 laforge
zecke: problems with VTY
494
495
    hard to teach to users (flat/nodes)
496
497
    wiki page is outdated/wrong
498
499
    he started to look at generating content from the running code (for documentation) based on XML/XSLT
500
501
    some working code exists, but not finished, are there better ways?
502
503
...: we should extend VTY a bit to allow more flexibility
504
- Add a new version of DEFUN to signal when a command is meant to change node so that the code that prints the XML can reconstruct the tree
505
- Add a default vty command that allows to print the xml doc. (easiest way and can be used as vty 'introspect')
506 3 laforge
</pre>
507 2 laforge
508
h3. 18:20: [[OpenBSC]] todo
509
 
510 3 laforge
<pre>
511 1 laforge
    better VTY configurability
512
513
laf: some configurarion options can be run at any time, other only become effective much later
514
515
    -> much confusion
516
517
    on cisco, config changes become active when you leave the node
518
519
    similar approach would make sense, but is very different than how it works now
520
521
tnt: add VTY hooks to "commit" changes on leaving node?
522
laf: maybe a signal instead? the signal would transport a pointer to the struct corresponding to the node
523
524
    moving media proc out of the main process
525
526
laf: useful for straceing openbsc when traffic is going through
527
528
    osmo-netif: abstraction of physical layer
529
530
    passing FDs to an external process?
531
532
    mgcp?
533
534
zecke: mgcp can route audio, has no idea of timeslots (corresponding to ports)
535
laf: can we put that info in MGCP packets?
536
zecke: there are vendor extension mechanisms in MGCP specs we could use
537
538
    ...
539
540
laf: one way would be to configure TS<->MGCP-port statically
541
zecke: we currently use E1 timeslots
542
543
    SDP description must be available
544
545
    necessary to support multiple different codecs at the same time, so we need a side channel
546
547
laf: can we not tell the mgcp which codec to use?
548
zecke: no, mgcp offers alternatives
549
550
    (^FIXME^)
551
552
zecke: it could make sense to let osmo-nitb use mgcp
553
laf: a legacy A interface between BSC and MSC is unlikely to be implemented
554
555
    we use a one to one mapping between MGCP ports and timeslots?
556
557
    DB async access
558
559
laf: has been discussed in emails and congress
560
peter: want to rewrite db.c to use prepared statements
561
562
    then it should become clearer how to do async
563
564
    one idea is one thread per subscriber while they need DB access
565
566
laf: would like to see an external HLR first
567
568
    looking at the way a normal VLR and HLR interact, you can have simultaneous transactions
569
570
    how the external HLR is independant
571
572
    the key change in osmo-nitb is that a subscriber resolve is not instantaneous
573
574
    the rest is smaller
575
576
    shows code of mm_rx_id_resp where subscr access is synchronous
577
578
    must be made async, the gsm_subscriber_connection would need a new state
579
580
peter: looked at how many call paths into the db, they are not that many
581
582
    he fears that it will have large ripple effects
583
584
tnt: all the code has been written for single thread
585
laf: it's not reasonable to make it multithreaded
586
587
    the loc_update procedure is already async on the mobile side
588
589
    we need a more formal state machine with some more states for waiting on the HLR
590
591
tnt: need to handle the case when the channel is gone during HLR request
592
laf: we are talking about VLR functionality as a cache for the HLR
593
594
    the API should be the interface to the (internal) VLR, which might in turn need to talk to the HLR
595
596
    much of the subscriber accesses can stay the same
597
598
    one ugly case is SMS handling, we don't store extensions but subscribers in the SMS code
599
600
peter: inspiration came from SMSC
601
laf: sms should not know about subscriber ids
602
burg: openbts has an SMS based on SIP page mode messaging (not SMQ), IMS uses it too
603
openbts desperately need a replacement for smsqueue because the latter is a ugly hack. The interface currently used is SIP page mode (IMS) which is a version of SIMPLE (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions, http://en.wikipedia.org/wiki/SIMPLE ), with SMS RPDU payload.
604
laf: the idea for openbsc would be to use the ASN1 encoding for SMS without all the state machines
605
peter->burg: what performance requirements?
606
burg: not a focus? (FIXME)
607
burg: openbts smsc uses and encoded RPDU
608
609
    an SMSC is just and DB of RPDU waiting to be delivered, routing
610
611
    and header rearangement, submit format -> delivery
612
613
laf: will look at making subscriber query async
614
615
    standalone osmo-msc
616
617
zecke: we had a need for a standalone msc, extracted code from osmo-nitb
618
619
    we have an internal BSC api now
620
621
    could do the same thing for the MSC api
622
623
    in one version they could call each other directly, but could A link in between
624
625
    for fuzzing it would be good to restart parts individually
626
627
laf: (draws image of current openbsc structure)
628
629
  .-----------.
630
  | osmo-nitb |
631
  '-----------'----------.
632
  | libmsc    | osmo-bsc |
633
  .----------------------.
634
  | libbsc               |
635
  '----------------------'
636
laf: can combine libbsc->libmsc->osmo-nitb or libbsc->osmo-bsc
637
638
    proper stacking would be good for test coverage, as more code would be shared between uses cases
639
640
peter: will meet in berlin with harald for some further discussion
641
zecke: we're still missing exception clause for AGPLv3 (user notification)
642
laf: has a proposal from lawyer
643
644
    original intention is for web services, there it easy to do
645
646
    logical conclusion would be a SMS for each user
647
648
dieter: use cell broadcast ;)
649
burg: eben moglen considers core network use also as network facing (and openbts has a permissive clause for that)
650
laf: we as authors can make our position clear on the interpretation
651
652
    intrest is not to spam the users, but that the source code is published
653
654
    we can a permissive clause: you can use openbsc without sending sms, by publishing the code (and notifiying)
655
656
chem: distinguish between availability and user notification
657
user notification has different problems:
658
- sending an SMS to the user would be spam
659
- printing in the manual will not work
660
- roaming subscribers will not be alerted (visiting operator is not allowed to send SMS)
661
- having the operator displaying on its website will not work (or remove in the next web site update)
662
instead of having the operator notifying the users, they would send the code to osmocom, which then makes it public for the users (AGPLv3 additionnal permissive clause)
663
End of day two.
664 3 laforge
</pre>
665 2 laforge
666 1 laforge
h2. Day Three
667 2 laforge
668
669
670
h3. 10:00 Running your own 3g network (no video, slides later)
671 1 laforge
672 3 laforge
<pre>
673 1 laforge
UMTS needs a 5MHz band, they are all already allocated, none is free (no one can have licences to test UMTS)
674
W-CDMA is used. for the CDMA to work, the phone must not transmit with a too strong signal (so to no destroy the signal of the other)
675
the tansmission power is regulated 1500Hz
676
the coverage of an UMTS cell depends on the number or users
677
the scrambling codes set the max data rate (the spreading, in tree form)
678
channels using scramble codes with high data rate are more error prone
679
no freq hopping in UMTS
680
channel and scrambling code are allocated by the NodeB
681
3 channel levels: logical, transport, physical
682 2 laforge
laf: UMTS is the ASN.1 for telephony. you can defined how you will phone. but in the end, only one codec is used :p
683 1 laforge
NBAP protocol used to control [[NodeBs]]
684
ATM over E1/T1 (IMA) used as Iub interface
685
transceivers are seperate (not inside the nodeB), connected using an 4GBit optical link
686
687
    the protocol to control the remote transceivers is publicly available
688
689 2 laforge
You need licences (XML file with signature) for every configuration aspect of [[NodeBs]] (each channel, CE, transciever, ...). Even for transmit power (pay per Watt! > 20W) and for processing power (pay per MIPS? pay perCE customer element).
690 3 laforge
</pre>
691 1 laforge
692 2 laforge
h3. 12:00 Smalltalk (slides, no video)
693
694 3 laforge
<pre>
695
you can (and do) write code while you run it (and the whole program)
696 1 laforge
(the pad was unavailable during the afternoon, but most talks have been recorded)
697
End of day three.
698 3 laforge
</pre>
699 1 laforge
700 2 laforge
h2. Day Four
701
702
703
704
h3. 10:20 zecke: osmo cellmgr-ng (no video/slides)
705
706 3 laforge
<pre>
707 1 laforge
  The code was started with a commercial interest to connect a circuit based BSC to a IP-based core network.
708
  The customer owns a good MTP2 commercial stack, so the software starts from there.
709
  Has Wireshark dissector for debuging.
710
  Works quite reliable now
711
  Can only bridge from MTP3/{SCCP,ISUP} to IP/SCTP (no proper routing).
712
  Probably not that useful for the community, because requires a special hardware to run.
713
714
    by decoupling it from the BSC code
715
716
the BSC api is in a header in openbsc, simply function calls and callbacks, based on gsm 08.08
717
todo: create an analog interface for MSC
718
719
    first stage directly couple BSC api and MSC api
720
721
see branch zecke/osmo-msc
722
some parts of our MSC still calls BSC-layer functions, this must be moved to the BSC layer
723
724
    is rather easy, but work on this is stalled for some time
725
726
this split would also help with dieter UMTS work, as he wouldn't need to implement MM functionality himself
727
728
    but can use the osmo-msc instead (wouldn't be spec compiant RNC/MSC connection)
729
730
laf: there will be some conflict in moving out the DB and the bsc/msc split
731
zecke: no conflicts, we would remove BSC api useage and replace it with MSC, it could be done in parallel
732
11:05 pablo: libosmo-netif/abis (slides and video)
733
laf: the osmo-bsc code should not care if the BTS is connected via Abis or IPA
734
735
    same applies to A link, A over E1 or A over IP
736 3 laforge
</pre>
737 1 laforge
738 2 laforge
h3. 11:40 laf: mo-bis (no video)
739
740
http://openbsc.osmocom.org/trac/wiki/Motorola_Horizon_macro
741 1 laforge
742
743 2 laforge
h3. 12:00 regression testing
744
745
zecke showed our testing scripts and jenkins
746 1 laforge
747
748 2 laforge
h3. 12:30 kevin: simtrace
749
750
http://bb.osmocom.org/trac/wiki/SIMtrace
751 3 laforge
752 1 laforge
http://bb.osmocom.org/trac/wiki/SIMtrace/Hardware
753 3 laforge
754 2 laforge
Plans for v2.0
755
* Fullsize smart card support
756
* Voltages support, 1.8V, 3V, 5V (tried after another, 5V needs to be supported by everyone)
757
* Add 0hm/small resistor to measure current (ufl connection)
758
* [[MicroSD]] instead of flash for more flexibility
759
* Connect clock to a timer counter to determine clock of the SIM (TLCK0)
760 1 laforge
* Fix broken power forwarding in v1.0/v1.1
761
762 2 laforge
Issues:
763
* NFC and SIMtrace FPC... interference... 13.56 Mhz NFC magnetic coupling -> use copper tape as shielding
764
* Clock forwarding needs to be connected to different GPIO (TI??), highest clock frequency 
765 1 laforge
* Switched from kicad to geda for the Schematics/Layout
766
767 2 laforge
768
h3. 13:00 lunch break
769
770
771
772
h3. 15:15 Erlang
773 1 laforge
774
775
laforge gives introduction into how you write code in Erlang.
Add picture from clipboard (Maximum size: 48.8 MB)