diff options
Diffstat (limited to '2006')
118 files changed, 5402 insertions, 0 deletions
diff --git a/2006/fisl-a780/abstract.txt b/2006/fisl-a780/abstract.txt new file mode 100644 index 0000000..0e0b2c4 --- /dev/null +++ b/2006/fisl-a780/abstract.txt @@ -0,0 +1,65 @@ +* Title: + Towards the first 100% free software GSM phone + +* Subtitle: + Reverse Engineering the Motorola EZX (A768,A780,E680) series of Linux-based GSM phones + +* Abstract: + This presentation describes the progress of hacking and extending the + Motorola series of Linux based Smartphones, with the ultimate goal to + replace all proprietary applications with 100% free software. + +* Description: + A longer and detailed description of the event's content (250 to 500 words) + It's been two years since Motorola has released the first Linux + Smartphone (A768). More recently, two new models were introduced, the + A780 and the E680, the former even officially distributed in Germany + and all over the EU. + + What's so special about a Linux based smartphone? It's special because + the Linux kernel acts as an enabler for 3rd party hacks and 3rd party + software, like it can be observed with the OpenWRT, OpenTom, + NSLU2-Linux, OpenEmbedded, OpenZaurus and other similar projects. + + The author of this presentation has sucessfully obtained "telnet" + access to an A780 cellphone, built a matching cross-compilation + toolchain and installed various applications for debugging, such as + busybox, iptables, nmap, lsof, strace, etc. + + While re-engineering efforts are still in a early stage, work is + proceeding extremely fast, and important pieces such as the protocol + between the PXA270 frontend processor and the ARM7TDMI GSM processor + have already been partially re-engineered. The project is expected to + progress significantly until 22C3. + + +* Please state if you are going to submit a paper to be included in the 22C3 + Proceedings + Yes + +* Please state if you are going to use slides in your talk and in which format + you are going to provide a copy + Magicpoint or tpp + +* Duration of your talk + +* Language of your talk + en_US + +* Links to background information on the talk + http://www.motorolafans.com/ + http://gnumonks.org/~laforge/weblog/linux/a780/ + http://svnweb.gnumonks.org/trunk/a780/ + +* Target Group: + Developers + +* Resources you need for your talk + digital projector + +* Related talks at 22C3 you know of + none + +* A lecture logo, square format, min. 128x128 pixels (optional) + none + diff --git a/2006/fisl-gpl/abstract.txt b/2006/fisl-gpl/abstract.txt new file mode 100644 index 0000000..b6292b4 --- /dev/null +++ b/2006/fisl-gpl/abstract.txt @@ -0,0 +1,27 @@ +More and more vendors of various computing devices, especially network-related +appliances such as Routers, NAT-Gateways and 802.11 Access Points are using +Linux and other GPL licensed free software in their products. + +While the Linux community can look at this as a big success, there is a back +side of that coin: A large number of those vendors have no idea about the GPL +license terms, and as a result do not fulfill their obligations under the GPL. + +The gpl-violations.org project has started legal proceedngs against a number of +companies in violation of the GPL since December 2003. Those legal proceedings +were quite successful so far, resulting in some 30+ amicable agreements and three +granted preliminary injunction. The list of companies includes large corporations such as Siemens, Asus or Belkin. + +The speaker will present an overview about his recent successful enforcement of +the GNU GPL within German jurisdiction. + +He will go on speaking about what exactly is neccessarry to fully comply with +the GPL, including his legal position on corner cases such as cryptographic +signing. + +Resulting from his experience in dealing with the german legal system, he will +give some hints to software authors about what they can do in order to make +eventual later license enforcement easier. + +In the end, it seems like the idea of the founding fathers of the GNU GPL +works: Guaranteeing Copyleft by using Copyright. + diff --git a/2006/gpl-compliance-tomtom2006/gpl-compliance.mgp b/2006/gpl-compliance-tomtom2006/gpl-compliance.mgp new file mode 100644 index 0000000..1b29df9 --- /dev/null +++ b/2006/gpl-compliance-tomtom2006/gpl-compliance.mgp @@ -0,0 +1,304 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +GPL Workshop +How to (not?) use Free Software + + +%center +%size 4 +by + +Harald Welte <hwelte@hmw-consulting.de> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Contents + + About the speaker + Ideas / Goals of the GPL + How to (not) use GPL Software + Complete Source Code + Derivative Works + Collective Works + GPL and Embedded Systems + The biggest GPL Myths + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Introduction + + +Who is speaking to you? + + an independent Free Software developer + who earns his living off Free Software since 1997 + who is one of the authors of the Linux kernel firewall system called netfilter/iptables + who has started gpl-violations.org to enforce license compliance + who IS NOT A LAWYER + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Disclaimer + +Legal Disclaimer + + All information presented here is provided on an as-is basis + There is no warranty for correctness of legal information + The author is not a lawyer + This does not comprise legal advise + The authors' experience is limited to German copyright law + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Ideas and Goals of the GNU GPL + + Free Software + Software that has fundamental freedoms: + to use it for any purpose + to "help your neighbour" (i.e. make copies) + to study it's functionality (reading source code) + to fix it myself (make modifications and run them) + + Copyleft + Is the legal idea to + exercising copyright to grant the above freedoms + assure that nobody can take away the freedom + + The GNU General Public License + Is a legal instrument to apply they copyleft idea on software + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The GNU GPL revisited + +Revisiting the GNU General Public License + + Regulates distribution of copyrighted code, not usage + Allows distribution of source code and modified source code + The license itself is mentioned + A copy of the license accompanies every copy + Allows distribution of binaries or modified binaries, if + The license itself is mentioned + A copy of the license accompanies every copy + The complete source code is either included with the copy (alternatively a written offer to send the source code on request to any 3rd party) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Complete Source Code + +%size 3 +"... complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable." + + For standard C-language programs, this means: + Source Code + Makefiles + compile-time Configuration (such as kernel .config) + + General Rule: + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + What is a derivative work? + Not dependent on any particular kind of technology (static/dynamic linking, dlopen, whatever) + Even while the modification can itself be a copyrightable work, the combination with GPL-licensed code is subject to GPL. + As soon as code is written for a specific non-standard API (such as the iptables plugin API), there is significant indication for a derivative work + This position has been successfully enforced out-of-court with two Vendors so far (iptables modules/plugins). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Binary-only kernel modules + In-kernel proprietary code (binary kernel modules) are hard to claim GPL compliant + Case-by-case analysis required, as the level of integration into the GPL licensed kernel code depends on particular case + IBM is in the process of getting rid of all binary-only kernel modules. There are exceptions, but they are very clear ones (such as a filesystem port to linux, where the filesystem code already existed under another OS) + There is no general acceptance or tolerance to binary-only kernel modules in the Linux (development) community. Not even Linus himself has ever granted an exception for such modules! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Glue Code + Acts as glue layer between GPL licensed code and proprietary code + Some Vendors think they can avoid the GPL by doing so + Is definitely not a bullet-proof legal solution, especially when it is clearly visible that the only purpose of this glue code is to "get rid" of the GPL. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Moral Issues + Apart from what is legally possible, there are moral issues + Even if in a particular case there is no legal way to claim a binary-only kernel module is a derivative work, you might still be acting against the authors' wishes + By shipping binary-only kernel modules, you violate the "moral code of conduct" of the Free Software community + But it is the work of this very community that enables you to build your product based on Free Software + Such action might have long-term detrimental effects on the motivation of FOSS developers (dissatisfaction, demotivation, ...) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Collective Works + +%size 3 +"... it is not the intent .. to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works ..." + + GPL controls "collective works" + +%size 3 +"... mere aggregation of another work ... with the program on a volume of a storage or distribution medium does not bring the other work und the scope of this license" + + GPL allows "mere aggregation" + like a general-porpose GNU/Linux distribution (SuSE, Red Hat, ...) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + Historical background: + The GPL was written for userspace programs running on existing operating systems + Covering a whole OS (and even userspace programs) is not an ideal match, but if you read it carefully it still makes sense + + Toolchain: +%size 3 +"... the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major components +(compiler, kernel, and so on) of the operating system on which the executable +runs, unless that component itself accompanies the executable." + Practical case: + You've modified gcc for a specific embedded platform + Therefore, this gcc is not "normally distributed with the operating system" and you have to distribute it together with the source code + gcc itself is covered under GPL, so you need to provide binaries and source code(!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + The "Scripts" + (scripts to control compilation and installation, see earlier slide) + In case of embedded hardware, the "scripts" include: + Tools for generating the firmware binary from the source (even if they are technically no 'scripts') + + + Embedded DRM + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + Result: Signing binaries and only accepting signed versions from the bootloader (without providing the signature key or a possibility to set a new key in the bootloader) is not acceptable! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Practical Source Code Offer + + Some Rules + The "complete corresponding source code" has to be made available + It has to be made available for each and every object-code version that was distributed + If you strip down the source code offer (e.g. remove proprietary source code), try to see whether the result actually compiles + If the product is mixed free / proprietary software, consider including the proprietary parts (as object code) in the "source code package", so the full firmware image can be rebuilt without having to tear apart an existing image and ripping out those proprietary programs from there. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The biggest myths about the GPL + +The biggest myths about the GPL + The GPL is not enforcible + Software licensed under GPL has no copyright + Unmodified distribution does not require source code availability + The vendor can wait for a source code request (without offering it) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The most common mistakes + +The most common mistakes + not even once reading the GPL text and/or the FAQ from the FSF + not including the GPL license text with the product + not including a written offer with the product + not considering that the GPL also applies to software updates + only providing original source code (e.g. vanilla kernel.org kernel) + not including the "scripts to control installation" + only providing off-site hyperlinks to license and/ore source code + not responding to support requests for source code + charging rediculously high fees for physical shipping of source code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +License Compatibility + + There's lots of Free Software available + Different Software uses different Licenses: + Linux: GPL + glibc: LGPL + apache: Apache Software License + Perl: Artistic + ucd-snmp: BSD + If you combine (i.e. link) differently-licensed software, + check license compatibility + in case of doubt, ask legal person and/or contact software authors + authors might give you an exception or consider making licenses compatible + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Dual Licensing + + The copyright holder (often the original author) can provide alternative licensing + Some projects do this as a business model (reiserfs, MySQL) + In some projects it's impossible due to the extremely distributed copyright (e.g. Linux kernel) + However, in smaller projects it never hurts to ask whether there would be interest in providing an alternative (non-copyleft) licensing + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The End + + +%size 3 + Further reading: +%size 3 + The http://gpl-violations.org/ project +%size 3 + The Free Software Foundation http://www.fsf.org/, http://www.fsf-europe.org/ +%size 3 + The GNU Project http://www.gnu.org/ +%size 3 + The netfilter homepage http://www.netfilter.org/ +%% http://management.itmanagersjournal.com/management/04/05/31/1733229.shtml?tid=85&tid=4 + + diff --git a/2006/gpl-compliance-tomtom2006/interact-community.mgp b/2006/gpl-compliance-tomtom2006/interact-community.mgp new file mode 100644 index 0000000..446f393 --- /dev/null +++ b/2006/gpl-compliance-tomtom2006/interact-community.mgp @@ -0,0 +1,287 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +How to interact with the +Free Software Community + + +%center +%size 4 +by + +Harald Welte <laforge@hmw-consulting.de> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +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 +How to interact with the Free Software Community +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 a background in both the community and the corporate crowd + who will therefore not have fancy animated slides ;) + +Why is he speaking to you? + + because every working day he suffers the lack of understanding between the community and the business world + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software 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 to interact with the Free Software 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 boosted 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 to interact with the Free Software Community +People / Groups involved + + Really depends on size of projects + Small projects often a one-man show + Bigger project have groups / subgroups + Common Terms / Definitions + Maintainer + The person who formally maintains a project + Core Team / Steering Committee + A group of skilled developers who make important decisions + Subsystem Maintainer + Somebody who is responsible for a particular sub-project + Developer Community + All developers involved with a project + User Community + Users of the software who often share their experience with others + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Development Process + + "Rough concensus and running code" + Decisions made by technically most skilled people + Reputaion based hierarchy + Direct Communication between developers + Not driven by size of a target market + Release early, release often + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Motivations + + gaining reputation (like in the scientific community) + gaining development experience with real-world software + solving problems that the author encounters on his computer + fighting for free software as ideology + work in creative environment with skilled people and no managers ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +FOSS Community likes + + generic solutions + portable code + vendor-independent architecture + clean code (coding style!) + open standards + good technical documentation + raw hardware, no bundle of hardware and software sold as solution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software 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 to interact with the Free Software Community +Weak Ponts of FOSS + + often way behind schedule (if there is any) + already too late when projects start + started when there already is a real need + often a lack of (good) documentation + programmers write code, not enduser docs... + strong in infrastructure, weak in applications + traditionally developers interested in very technical stuff + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software 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 to interact with the Free Software Community +Practical Rules + + 2. Interfaces + If there is a standard interface, use it + 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 to interact with the Free Software Community +Practical Rules + + 3. Merge your code upstream + Initially you basically create a fork + Development of upstream 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 to interact with the Free Software 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 plugin + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 5. Write clean code + as opposed to closed-source software, people actually read it + it will be noticed if coding style is bad + lots of projects have official CodingStyle rules + if you comment, do it only in english! + don't clutter hardware/product specific hacks over common code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 6. Binary-only software will not be accepted + yes, there are corner cases like FTC 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 to interact with the Free Software Community +Practical Rules + + 7. 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 to interact with the Free Software Community +Practical Rules + + 8. Show your support for the Community + By visibly contributing to the project + discussions + code + equipment + By funding developer meetings + By making cheap hardware offers to developers + By contracting / sponsoring / hiring developers from the community + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +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 + +%size 3 + The slides of this presentation are available at http://www.gnumonks.org/ + + diff --git a/2006/hardware_kerneltuning_netperf-slac/gliederung.txt b/2006/hardware_kerneltuning_netperf-slac/gliederung.txt new file mode 100644 index 0000000..ec51802 --- /dev/null +++ b/2006/hardware_kerneltuning_netperf-slac/gliederung.txt @@ -0,0 +1,84 @@ + +- hardware selection is important + - linux runs on about anything from a cellphone to a mainframe + - good system performance depends on optimum selection of components + - sysadmins and managers have to undestand importance of hardware choice + - determine hardware needs before doing purchase ! + +- network usage patterns + - TCP server workload (web server, ftp server, samba, nfs-tcp) + - high-bandwidth TCP end-host performance + - UDP server workload (nfs udp) + - don't use it on gigabit speeds, data integrity problems! + - Router (Packet filter / IPsec / ... ) workload + - packet forwarding has fundamentally different requirements + - none of the offloading tricks works in this case + - important limit: pps, not bandwidth! + +- todays PC hardware + - CPU often is extremely fast + 2GHz CPU: 0.5nS clock cycle + L1/L2 cache access (four bytes): 2..3 clock cycles + - everything that is not in L1 or L2 cache is like a disk access + 40..180 clock cycles on Opteron (DDR-333) + 250.460 clock cycles on Xeon (DDR-333) + - I/O read + easily up to 3600 clock cycles for a register read on NIC + this happens synchronously, no other work can be executed! + - disk access + don't talk about them ;) +- hardware for high performance networking + - CPU + - cache + - as much cache as possible + - shared cache (in multi-core setup) is great + - SMP or not + - problem: increased code complexity + - problem: cache line ping-pong (on real SMP) + - depends on workload + - depends on number of interfaces! + - Pro: IPsec, tc, complex routing + - Con: NAT-only box + - RAM + - as fast as possible + - Bus architecture + - as little bridges as possible + - host bridge, PCI-X / PXE bridge + NIC chipset enough! + - check bus speeds + - real interrupts (PCI, PCI-X) have lower latency than message-signalled interrupts (MSI) + - NIC selection + - NIC hardware + avoid additional bridges (fourport cards) + PCI-X: 64bit, highest clock rate, if possible (133MHz) + - NIC driver support + - many optional features + checksum offload + scatter gather DMA + segmentation offload (TSO/GSO) + interrupt flood behaviour (NAPI) + - is the vendor supportive of the developers + - Intel: e100/e1000 docs ! + - is the vendor merging his patches mainline? + - syskonnect vs. Intel + - hard disk + - kernel network stack always is 100% resident in RAM + - therefore, disk performance not important for network stack + - however, one hint: + - for SMTP servers, use battery buffered RAM disks (Gigabyte) + +- tuning + - hardware related + - irq affinity + + - firewall specific + - organize ruleset in tree shape rather than linear list + - conntrack: hashsize / ip_conntrack_max + - log: don't use syslog, rather ulogd-1.x or 2.x + - local sockets + - SO_SNDBUF / SO_RCVBUF should be used by apps + - in recent 2.6.x kenrnels, they can override /proc/sys/net/ipv4/tcp_[rw]mem + - on long fat pipes, increase /proc/sys/net/ipv4/tcp_adv_win_scale + - core network stack + - disable rp_filter, it adds lots of per-packet routing lookups + + - check linux-x.y.z/Documentation/networking/ip-sysctl.txt for more information diff --git a/2006/hardware_kerneltuning_netperf-slac/network_performance.mgp b/2006/hardware_kerneltuning_netperf-slac/network_performance.mgp new file mode 100644 index 0000000..303f527 --- /dev/null +++ b/2006/hardware_kerneltuning_netperf-slac/network_performance.mgp @@ -0,0 +1,236 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +Hardware Selection +and Kernel Tuning +for High Performance Networking + +Dec 07, 2006 +SLAC, Berlin + +%center +%size 4 +by + +Harald Welte <laforge@gnumonks.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +About the Speaker + +Who is speaking to you? + an independent Free Software developer + Linux kernel related consulting + development for 10 years + 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) + ...and Free Hardware for RFID (openpcd.org, openbeacon.org) + ...and the worlds first Open GSM Phone (openmoko.com) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Hardware selection is important + +Hardware selection is important + linux runs on about anything from a cellphone to a mainframe + good system performance depends on optimum selection of components + sysadmins and managers have to undestand importance of hardware choice + determine hardware needs before doing purchase ! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Network usage patterns + +Network usage patterns + + TCP server workload (web server, ftp server, samba, nfs-tcp) + high-bandwidth TCP end-host performance + UDP server workload (nfs udp) + don't use it on gigabit speeds, data integrity problems! + Router (Packet filter / IPsec / ... ) workload + packet forwarding has fundamentally different requirements + none of the offloading tricks works in this case + important limit: pps, not bandwidth! +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Contemporary PC hardware + +Contemporary PC hardware + + CPU often is extremely fast + 2GHz CPU: 0.5nS clock cycle + L1/L2 cache access (four bytes): 2..3 clock cycles + everything that is not in L1 or L2 cache is like a disk access + 40..180 clock cycles on Opteron (DDR-333) + 250.460 clock cycles on Xeon (DDR-333) + I/O read + easily up to 3600 clock cycles for a register read on NIC + this happens synchronously, no other work can be executed! + disk access + don't talk about it. Like getting a coke from the moon. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Hardware selection + +Hardware selection + CPU + cache + as much cache as possible + shared cache (in multi-core setup) is great + SMP or not + problem: increased code complexity + problem: cache line ping-pong (on real SMP) + depends on workload + depends on number of interfaces! + Pro: IPsec, tc, complex routing + Con: NAT-only box + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Hardware selection + +Hardware selection + RAM + as fast as possible + use chipsets with highest possible speed + amd64 (Opteron, ..) + has per-cpu memory controller + doesn't waste system bus bandwidth for RAM access + Intel + has a traditional 'shared system bus' architecture + RAM is system-wide and not per-CPU + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Hardware selection + +Hardware selection + Bus architecture + as little bridges as possible + host bridge, PCI-X / PXE bridge + NIC chipset enough! + check bus speeds + real interrupts (PCI, PCI-X) have lower latency than message-signalled interrupts (MSI) + some boards use PCIe chipset and then additional PCIe-to-PCI-X bridge :( + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Hardware selection + +Hardware selection + NIC selection + NIC hardware + avoid additional bridges (fourport cards) + PCI-X: 64bit, highest clock rate, if possible (133MHz) + NIC driver support + many optional features + checksum offload + scatter gather DMA + segmentation offload (TSO/GSO) + interrupt flood behaviour (NAPI) + is the vendor supportive of the developers + Intel: e100/e1000 docs public! + is the vendor merging his patches mainline? + Syskonnect (bad) vs. Intel (good) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Hardware selection + +Hardware selection + hard disk + kernel network stack always is 100% resident in RAM + therefore, disk performance not important for network stack + however, one hint: + for SMTP servers, use battery buffered RAM disks (Gigabyte) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Network Stack Tuning + +Network Stack Tuning + hardware related + prevent multiple NICs from sharing one irq line + can be checked in /proc/interrupts + highly dependent on specific mainboard/chipset + configure irq affinity + in an SMP system, interrupts can be bound to one CPU + irq affinity should be set to assure all packets from one interface are handled on same CPU (cache locality) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Network Stack Tuning + +Network Stack Tuning + 32bit or 64bit kernel? + most contemporary x86 systems support x86_64 + biggest advantage: larger address space for kernel memory + however, problem: all pointers now 8bytes instead of 4 + thus, increase of in-kernel data structures + thus, decreased cache efficiency + in packet forwarding applications, ca. 10% less performance + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Network Stack Tuning + +Network Stack Tuning + firewall specific + organize ruleset in tree shape rather than linear list + conntrack: hashsize / ip_conntrack_max + log: don't use syslog, rather ulogd-1.x or 2.x + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Network Stack Tuning + +Network Stack Tuning + local sockets + SO_SNDBUF / SO_RCVBUF should be used by apps + in recent 2.6.x kenrnels, they can override /proc/sys/net/ipv4/tcp_[rw]mem + on long fat pipes, increase /proc/sys/net/ipv4/tcp_adv_win_scale + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Network Stack Tuning + +Network Stack Tuning + core network stack + disable rp_filter, it adds lots of per-packet routing lookups + check linux-x.y.z/Documentation/networking/ip-sysctl.txt for more information + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Network Performance & Tuning +Links + +Links + The Linux Advanced Routing and Traffic Control HOWTO + http://www.lartc.org/ + The netdev mailinglist + netdev@vger.kernel.org + diff --git a/2006/hardware_kerneltuning_netperf-slac/network_performance.pdf b/2006/hardware_kerneltuning_netperf-slac/network_performance.pdf Binary files differnew file mode 100644 index 0000000..399cf5f --- /dev/null +++ b/2006/hardware_kerneltuning_netperf-slac/network_performance.pdf diff --git a/2006/intf_kommerz_community-oscon2006/intf_kommerz_community.mgp b/2006/intf_kommerz_community-oscon2006/intf_kommerz_community.mgp new file mode 100644 index 0000000..17c99a1 --- /dev/null +++ b/2006/intf_kommerz_community-oscon2006/intf_kommerz_community.mgp @@ -0,0 +1,397 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + +The Interface between +Free Software Community +and +Corporate World + +%center +%size 4 +by + +Harald Welte <laforge@hmw-consulting.de> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the Free Software community for 11 years + who has a background in both the community and experience with the corporate crowd + woh still is a die-hard technical guy + who will therefore not have fancy animated slides ;) + +Why is he speaking to you? + + because every working day he suffers the lack of understanding between the community and the business world + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +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 +Interface: FOSS community / corporate world +Ideas and Goals of the GNU GPL + + Free Software + Software that has fundamental freedoms: + to use it for any purpose + to "help your neighbour" (i.e. make copies) + to study it's functionality (reading source code) + to fix it myself (make modifications and run them) + + Copyleft + Is the legal idea to + exercising copyright to grant the above freedoms + assure that nobody can take away the freedom + + The GNU General Public License + Is a legal instrument to apply they copyleft idea on software + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +The GNU GPL revisited + +Revisiting the GNU General Public License + + Regulates distribution of copyrighted code, not usage + Allows distribution of source code and modified source code + The license itself is mentioned + A copy of the license accompanies every copy + Allows distribution of binaries or modified binaries, if + The license itself is mentioned + A copy of the license accompanies every copy + The complete source code is either included with the copy (alternatively a written offer to send the source code on request to any 3rd party) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +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 boosted 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 +Interface: FOSS community / corporate world +People / Groups involved + + Really depends on size of projects + Small projects often a one-man show + Bigger project have groups / subgroups + Common Terms / Definitions + Maintainer + The person who formally maintains a project + Core Team / Steering Committee + A group of skilled developers who make important decisions + Subsystem Maintainer + Somebody who is responsible for a particular sub-project + Developer Community + All developers involved with a project + User Community + Users of the software who often share their experience with others + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Development Process + + "Rough concensus and running code" + Decisions made by technically most skilled people + Reputaion based hierarchy + Direct Communication between developers + Not driven by size of a target market + Release early, release often + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Motivations + + gaining reputation (like in the scientific community) + gaining development experience with real-world software + solving problems that the author encounters on his computer + fighting for free software as ideology + work in creative environment with skilled people and no managers ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +FOSS Community likes + + generic solutions + portable code + vendor-independent architecture + clean code (coding style!) + open standards + good technical documentation + raw hardware, no bundle of hardware and software sold as solution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +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 +Interface: FOSS community / corporate world +Weak Ponts of FOSS + + often way behind schedule (if there is any) + already too late when projects start + started when there already is a real need + often a lack of (good) documentation + programmers write code, not enduser docs... + strong in infrastructure, weak in applications + traditionally developers interested in very technical stuff + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Why good relations? + + Let's presume you're using FOSS in your products. + Why would I want to have good relations with the FOSS community? + You're using their code in your products. + You're interested in their new developments. + You probably want to continue product delvelopment on their code + Thus, You're interested in cooperative development + You want their codebase to better fit for your application + Esp. in Security areas, you need to trust the community. Would you trust somebody that you're upsetting deliberately, or which you're fighting battles with? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Practical Rules + + In the end, it's just like environmental protection: + FOSS community is like an ecosystem + If you behave friendly to the environment, there is sustainable development + If you just consume and abuse the FOSS ecosystem, you damage it + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +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 +Interface: FOSS community / corporate world +Practical Rules + + 2. Interfaces + If there is a standard interface, use it + 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 +Interface: FOSS community / corporate world +Practical Rules + + 3. Merge your code upstream + Initially you basically create a fork + Development of upstream 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 +Interface: FOSS community / corporate world +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 plugin + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Practical Rules + + 5. Write clean code + as opposed to closed-source software, people actually read it + it will be noticed if coding style is bad + lots of projects have official CodingStyle rules + if you comment, do it only in english! + don't clutter hardware/product specific hacks over common code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Practical Rules + + 6. Binary-only software will not be accepted + yes, there are corner cases like FTC regulation on softradios + but as a general rule of thumb, the community will not consider object code as a solution to any problem + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Practical Rules + + 7. 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 +Interface: FOSS community / corporate world +Practical Rules + + 8. Show your support for the Community + By visibly contributing to the project + discussions + code + equipment + By funding developer meetings + By making cheap hardware offers to developers + By contracting / sponsoring / hiring developers from the community + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Licensing under GPL + + The GPL is a legal instrument to approximate the goals of Free Software and the 'moral code of conduct' of many FOSS projects by using copyright law + Always remember: The goal is to give the user (incl. your customer) fundamental freedoms + GPL is just a tool to force distributors to give those freedoms to users + It is a legally binding license agreement, since nothing else grants you permission for modification and redistribution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +Enforcing the GNU GPL + + Enforcing the GNU GPL + has always been done quietly by the FSF in the USA + used to only happen out of court + results were never published + As number of cases started to increase in 2003, Harald Welte couldn't stand it any longer and started his own enforcement. Some time later, gpl-violtions.org was born. + Difference: Publicize enforcement, create awareness within corporate crowd + gpl-violations.org has + enforced close to 100 cases so far + most of them out of court + obtained five preliminary injunctions + sustained one appeals case against an injunction + is currently filing the first regular lawsuit + some examples: D-Link, Sitecom, Linksys/Cisco, Sun, Siemens, Fujitsu-Siemens, Telekom, Samsung, Hitachi, Motorola, Kenwood, Maxtor, Western Digital, ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +The biggest myths about the GPL + +The biggest myths about the GPL + The GPL is not enforcible + Software licensed under GPL has no copyright + Unmodified distribution does not require source code availability + The vendor can wait for a source code request (without offering it) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +The most common mistakes + +The most common mistakes + not including the "scripts to control installation" + only providing off-site hyperlinks to license and/ore source code + not responding to support requests for source code + charging rediculously high fees for physical shipping of source code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +The most common mistakes + +The most common mistakes + not even once reading the GPL text and/or the FAQ from the FSF + not including the GPL license text with the product + not including a written offer with the product + not considering that the GPL also applies to software updates + only providing original source code (e.g. vanilla kernel.org kernel) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Interface: FOSS community / corporate world +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 + LinBit + for inviting me to speak at OSCON + +%size 3 + The slides of this presentation are available at http://svn.gnumonks.org/ + + diff --git a/2006/lwe_nl-gpl_violations/gpl-compliance.mgp b/2006/lwe_nl-gpl_violations/gpl-compliance.mgp new file mode 100644 index 0000000..98949a4 --- /dev/null +++ b/2006/lwe_nl-gpl_violations/gpl-compliance.mgp @@ -0,0 +1,331 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +GPL compliance +How to (not?) use Free Software + + +%center +%size 4 +by + +Harald Welte <laforge@gpl-violations.org> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Contents + + About the speaker + Ideas / Goals of the GPL + How to (not) use GPL Software + Complete Source Code + Derivative Works + Collective Works + GPL and Embedded Systems + The biggest GPL Myths + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Introduction + +Who is speaking to you? + + an independent Free Software developer + who earns his living off Free Software since 1997 + who is one of the authors of the Linux kernel firewall system called netfilter/iptables + who has started gpl-violations.org to enforce license compliance + who IS NOT A LAWYER + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Disclaimer + +Legal Disclaimer + + All information presented here is provided on an as-is basis + There is no warranty for correctness of legal information + The author is not a lawyer + This does not comprise legal advise + The authors' experience is limited to German copyright law + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Ideas and Goals of the GNU GPL + + Free Software + Software that has fundamental freedoms: + to use it for any purpose + to "help your neighbour" (i.e. make copies) + to study it's functionality (reading source code) + to fix it myself (make modifications and run them) + + Copyleft + Is the legal idea to + exercising copyright to grant the above freedoms + assure that nobody can take away the freedom + + The GNU General Public License + Is a legal instrument to apply they copyleft idea on software + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Legal situation of vendors + +Legal situation of vendors + If you are distributing a product that contains any third party source code, on which you are not the copyright holder, you have to license it _before_ being allowed to distribute copies of it (e.g. installed on an embedded device). + + Even if you only sell branded OEM devices, you are legally responsible for what is contained in the product. It is your duty to make sure products you distribute (sell) don't infringe on others' rights! + + Free Software is not any different from other software in this regard + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The GNU GPL revisited + +Revisiting the GNU General Public License + + Regulates distribution of copyrighted code, not usage + Allows distribution of source code and modified source code + The license itself is mentioned + A copy of the license accompanies every copy + Allows distribution of binaries or modified binaries, if + The license itself is mentioned + A copy of the license accompanies every copy + The complete source code is either included with the copy (alternatively a written offer to send the source code on request to any 3rd party) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Complete Source Code + +%size 3 +"... complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable." + + For standard C-language programs, this means: + Source Code + Makefiles + compile-time Configuration (such as kernel .config) + + General Rule: + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + What is a derivative work? + Not dependent on any particular kind of technology (static/dynamic linking, dlopen, whatever) + Even while the modification can itself be a copyrightable work, the combination with GPL-licensed code is subject to GPL. + As soon as code is written for a specific non-standard API (such as the iptables plugin API), there is significant indication for a derivative work + This position has been successfully enforced out-of-court with two Vendors so far (iptables modules/plugins). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Binary-only kernel modules + In-kernel proprietary code (binary kernel modules) are hard to claim GPL compliant + Case-by-case analysis required, as the level of integration into the GPL licensed kernel code depends on particular case + IBM is in the process of getting rid of all binary-only kernel modules. There are exceptions, but they are very clear ones (such as a filesystem port to linux, where the filesystem code already existed under another OS) + There is no general acceptance or tolerance to binary-only kernel modules in the Linux (development) community. Not even Linus himself has ever granted an exception for such modules! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Moral Issues + Apart from what is legally possible, there are moral issues + Even if in a particular case there is no legal way to claim a binary-only kernel module is a derivative work, you might still be acting against the authors' wishes + By shipping binary-only kernel modules, you violate the "moral code of conduct" of the Free Software community + But it is the work of this very community that enables you to build your product based on Free Software + Such action might have long-term detrimental effects on the motivation of FOSS developers (dissatisfaction, demotivation, ...) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + Historical background: + The GPL was written for userspace programs running on existing operating systems + Covering a whole OS (and even userspace programs) is not an ideal match, but if you read it carefully it still makes sense + Toolchain: +%size 3 +"... the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major components +(compiler, kernel, and so on) of the operating system on which the executable +runs, unless that component itself accompanies the executable." + Practical case: + You've modified gcc for a specific embedded platform + Therefore, this gcc is not "normally distributed with the operating system" and you have to distribute it together with the source code + gcc itself is covered under GPL, so you need to provide binaries and source code(!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + The "Scripts" + (scripts to control compilation and installation, see earlier slide) + In case of embedded hardware, the "scripts" include: + Tools for generating the firmware binary from the source (even if they are technically no 'scripts') + + + Embedded DRM + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + Result: Signing binaries and only accepting signed versions from the bootloader (without providing the signature key or a possibility to set a new key in the bootloader) is not acceptable! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Practical Source Code Offer + + Some Rules + The "complete corresponding source code" has to be made available + It has to be made available for each and every object-code version that was distributed + If you strip down the source code offer (e.g. remove proprietary source code), try to see whether the result actually compiles + If the product is mixed free / proprietary software, consider including the proprietary parts (as object code) in the "source code package", so the full firmware image can be rebuilt without having to tear apart an existing image and ripping out those proprietary programs from there. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The biggest myths about the GPL + +The biggest myths about the GPL + The GPL is not enforcible + Software licensed under GPL has no copyright + Unmodified distribution does not require source code availability + The vendor can wait for a source code request (without offering it) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The most common mistakes + +The most common mistakes + not even once reading the GPL text and/or the FAQ from the FSF + not including the GPL license text with the product + not including a written offer with the product + not considering that the GPL also applies to software updates + only providing original source code (e.g. vanilla kernel.org kernel) + not including the "scripts to control installation" + only providing off-site hyperlinks to license and/ore source code + not responding to support requests for source code + charging rediculously high fees for physical shipping of source code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +About gpl-violations.org + + What is gpl-violations.org about? + educating vendors of free-software based products + preventing further GPL violations + enforcing the GPL in-court and out-of-court + not about money, but about license compliance! + + Who is behind gpl-violations.org? + Harald Welte (the author of this presentation) + Armijn Hemel + plus some smaller contributions from various people (e.g. Alan Cox) + relies heavily on coopearation with the ifrOSS lawyers + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +About gpl-violations.org + + Success + more than 100 GPL violations handled so far + most of them settled out of court + five preliminary injunctions (Sitecom, Siemens, Fortinet, ...) + one appeals case against preliminary injunction + one regular civil trial (against D-Link, just one month ago) + about 120 pending violations (any volunteers?) + + Not a single case ever lost. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +What happens if I violate the GPL? + +What happens if I violate the GPL? + copyright infringement is a crime, criminal charges could be brought + copyright infringement causes civil liabilities + sale of your products can be immediately halted by preliminary injunction + legal proceedings can be filed against you and your downstream sales chain + you can be sued for damages + you will have to reimburse all legal fees (your/their lawyers, court fees) + you will have to alter all products that are already produced and in stock (include a copy of the license text, source code or written offer thereof) + + is it really worth all those risks? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Avoiding license violations + +Avoiding license violations + think about licensing during product development + if you sell any OEM devices, check them! + make sure GPL compliance happens for physical prodcut and website + release full corresponding source for each and every firmware update + do consider emails/letters about license compliance _SERIOUS_ + set up a contact address that people can write to in case there think there are license compliance issues + if you get caught, just fix your problems rather than trying to deny them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Avoiding license violations + + Always remember: +if you are selling branded OEM/ODM devices or software and don't have the technical resources for compliance checks in-house: for a couple of hundred euros (could be more, depending on complexity) you can have somebody check the product for GPL license compliance before it enters the market. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The End + + +%size 5 +Further reading: +%size 5 + The http://gpl-violations.org/ project +%size 5 + The Free Software Foundation + http://www.fsf.org/ +%size 5 + The Free Software Foundation Europe + http://www.fsf-europe.org/ +%size 5 + The GNU Project + http://www.gnu.org/ diff --git a/2006/lwe_nl-gpl_violations/structure.txt b/2006/lwe_nl-gpl_violations/structure.txt new file mode 100644 index 0000000..e3a596c --- /dev/null +++ b/2006/lwe_nl-gpl_violations/structure.txt @@ -0,0 +1,39 @@ +about the GPL +- usual stuff + +about gpl-violations.org +- 100+ cases so far +- most of them settled out of court +- four preliminary injunctions halting sales (Sitecom, Siemens, Fortinet, ...) +- one appeals case against preliminary injunction won (Sitecom) +- one regular civil court case (against D-Link, just one month ago) +- not a single case was lost at any time + + +what happens if you violate the GPL +- copyright infringement is a crime, criminal charges could be brought +- copyright infringement causes civil liabilities +- sale of your products can be immediately halted by preliminary injunction +- legal proceedings can be filed against you and your downstream sales chain +- you can be sued for damages +- you will have to reimburse all legal fees (your/their lawyers, court fees) +- you will have to alter all products that are already produced and in stock + (include a copy of the license text, source code or written offer thereof) +- is it really worth all those risks? +- if you are selling branded OEM/ODM devices or software and don't have the + technical resources for compliance checks in-house: for a couple of hundred + euros (could be more, depending on complexity) you can have somebody check + the product for GPL license compliance before it enters the market. + + +how to avoid GPL licensing problems +- think about licensing during product development +- if you sell any OEM device provided by an upstream vendor, check it! +- make sure you provide the source code always at the same time as object code +- make sure GPL compliance happens for physical prodcut and website +- release full corresponding source for each and every firmware update +- do consider emails/letters about license compliance _SERIOUS_ +- set up a contact address that people can write to in case there think there + are license compliance issues +- if you get caught + diff --git a/2006/netfilter_curdevel-cwi2006/netfilter_nextgen-lk2005.mgp b/2006/netfilter_curdevel-cwi2006/netfilter_nextgen-lk2005.mgp new file mode 100644 index 0000000..89fb603 --- /dev/null +++ b/2006/netfilter_curdevel-cwi2006/netfilter_nextgen-lk2005.mgp @@ -0,0 +1,359 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + +First steps towards next +generation netfilter + +March 31, 2006 +NLUUG @ CWI Amsterdam + +%center +%size 4 +by + +Harald Welte <laforge@netfilter.org> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +Contents + + rustynat + nfnetlink + conntrack event API + nfnetlink_conntrack + conntrack program + nf_queue / nfnetlink_queue / libnetfilter_queue + nf_log / nfnetlink_log / libnetfilter_log + nf_conntrack + nf-hipac + x_tables + pkt_tables (nf_tables?) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +History + + New filter every new major kernel release + 1.2: ipfw + 2.0: ipfwadm + 2.2: ipchains + 2.4: iptables + 2.6: iptables + + What went wrong? + Was iptables good enough? + No, it just takes more time to rewrite all design mistakes ;) + We don't have a development kernel anymore, changes are gradually + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +"rustynat" + + rustynat + Part of kernel >= 2.6.12 + What is it? + Revision to "newnat" infrastructure of 2.4.18 + Simpler data structures for conntrack / expectations + NAT helpers are now called directly from conntrack helpers + Benefits + Reduces size of "struct ip_conntrack" + Reduces memory usage by freeing expect when confirmed + Backdaws + Complex helpers (like PPTP) need lots of porting + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +nfnetlink + + nfnetlink + netlink-based kernel/userspace transport layer + used by all 'new' netfilter subsystems + kernel module: nfnetlink.ko + endian / type / alignment safe communication protocol + extensible because of TLV / netlink attribute usage + will in the future be transported over real network + present in 2.6.14 + + libnfnetlink + userspace library to communicate via nfnetlink + not to be used by application programs, just by other libs + released on netfilter.org homepage + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +conntrack-event API + + conntrack event notifiers + tells other kernel code about conntrack state updates + used by (out of tree) conntrack sync code (ct_sync) + used by nfnetlink_conntrack (see later) + implemented as "struct notifier_chain" + present in 2.6.14 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +nfnetlink_conntrack + + nfnetlink_conntrack (aka ctnetlink) + nfnetlink based userspace interface for conntrack state table + reading + dumping + manipulating (adding, removing, flushing) + present in 2.6.14 + deprecates stupid /proc/net/ip_conntrack + are a first step in the direction of userspace conntrack helpers + also supports event messages to userspace + + libnetfilter_conntrack + previously known as libnfnetlink_conntrack + even more previously known as libctnetlink + userspace API for conntrack interaction + abstracts all (nf)netlink details + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +conntrack program + + conntrack + Command line program for administrator access to conntrack + Uses libnetfilter_conntrack, libnfnetlink and nfnetlink_conntrack + Has plugins for conntrack protocols and conntrack helpers + Implements feature-complete command line interface for + listing conntracks / expects + deleting conntracks / expects + creating conntracks / expects + reading / resetting conntrack accounting counters + monitoring conntrack events + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +nf_queue / nfnetlink_queue + + nf_queue + queue handler registration interface + every layer 3 protocol has its own queue handler + is where ip_queue already registers itself today + had no other users than ip_queue for AF_INET + 2.6.14: /proc/net/netfilter/nf_queue + + nfnetlink_queue + layer 3 independent packet queueing to userspace + deprecates ip_queue module + allows 65535 different queues (ip_queue: 1) + uses nfnetlink + sends more anciliary information to userspace + phys{in,out}dev + MARK / CONNMARK + allows setting of MARK from userspace + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +libnetfilter_queue + + libnetfilter_queue + previously known as libnfnetlink_queue + userspace library for queue-attaching processes + NuFW group has already ported their App + also provides API (but not ABI) compatible replacement for libipq + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +nf_log / nfnetlink_log + + nf_log + log handler registration interface + every layer 3 protocol has its own log handler + is where ipt_LOG backend is now registered for syslog default + /proc/net/netfilter/nf_log + all targets (ip6t_LOG,ipt_LOG,...) just call nf_log_packet() + + nfnetlink_log + layer 3 independent packet logging to userspace + deprecates ipt_ULOG module + allows 65535 different logging groups (ULOG: 32) + uses nfnetlink + sends more anciliary information to userspace + phys{in,out}dev + MARK / CONNMARK + present in 2.6.14 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +libnetfilter_log + + libnetfilter_log + previously known as libnfnetlink_log + userspace library for queue-attaching processes + NuFW group has already ported their App + also provides API (but not ABI) compatible replacement for libipq + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +ulogd2 + + ulogd + existing userspace logging daemon for ipt_ULOG + + ulogd2 + generalized framework for logging + per-packet information (nfnetlink_log, ipt_ULOG) + per-flow information (nfnetlink_conntrack) + export data to MySQL, PostgreSQL, SYSLOG, text file + Planned support for import/export of IPFIX (NETFLOW) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +nf_conntrack + + nf_conntrack + generic layer 3 independent connection tracking + designed by netfilter.org, implemented by USAGI + present in 2.6.15 + obsoletes ip_conntrack (but ip_conntrack will remain for some time) + has layer 3 plugins for ipv4 and ipv6 + I'm intending to write 802.2 LLC conntrack as a cool hack + has all features of ip_conntrack, but + iptable_nat cannot run on top of it + nfnetlink_conntrack has not yet been ported + once we're feature complete, ip_conntrack will be phased out + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +x_tables + + ip_tables was first + ip6_tables started as copy+paste + arp_tables is another of those copies + eb_tables is a copy that was heavily modified + + why don't people know that copying is bad? + + x_tables (2.6.16) + tries to unify common kernel code between {ip6,ip,arp}_tables + has to stay binary compatible with userspace + cannot include eb_tables support, too many differences + transparent to the users, just kernel module names change + especially for matches such as limit,mark,connmark,state,owner,... + will be gradually extended to make matches/targets available for nf-hipac, pkt_tables + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +nf-hipac + + nf-hipac + high-performance packet classification algorithm + reduces packet classification to range location problem + uses dimension tree for solving range location problem + developed by two students at Saarbruecken University + is extremely efficient when compared with any kind of linear lookup + history + was originally developed for 2.4.x + project stalled because of time constraints + now funded by MARA Systems + new 0.9.0 release for 2.6.x, uses RCU + netfilter + nf-hipac project working together for nfnetlink based userspace interface + expected to be merged in a couple of months + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +pkt_tables + + pkt_tables (ongoing work) + tries to replace {ip,ip6,arp,eb}tables + also uses nfnetlink based communication structure + nfnetlink_pkttables uses same protocol as nf-hipac + shared userspace tool + sticks to existing linear list traversal + mainly interesting for + embedded systems with memory/flash constraints + non-ipv4 matching that is currently lacking in nf-hipac + libpkttables + pkttables (ongoing work) + new userspace library and tool + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +conntrack optimizations + + conntrack hash table resizing (2.6.15) + how many people know about the "hashsize" module parameter? + problem: what is a reasonable size? + servers? + personal firewall? + dedicated packet filter? + users end up with extremely bad performance + we used to say it's a configuration problem + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +userspace conntrack helpers + + userspace contrack helpers + based on nfnetlink_conntrack and nfnetlink_queue + library provided called 'libnetfilter_cthelper' + allows development and production use of conntrack+nat helpers in userspace + ongoing development effort, not useable yet (2.6.18?) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +conntrack optimizations + + conntrack hash trie (ongoing work) + Martin Josefsson working on this + replaces existing linar hash table by dynamic hash trie + drastically reduces number of cache misses in large installations + proof-of-concept code exists, will be merged with nf_conntrack + submission date unclear + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +Next-generation netfilter +Thanks + + Thanks to + the BBS scene, Z-Netz, FIDO, ... + for heavily increasing my computer usage in 1991 + KNF (http://www.franken.de/) + for bringing me in touch with the internet as early as 1994 + for providing a playground for technical people + for telling me about the existance of Linux! + 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 +%size 3 + The slides of this presentation are available at http://svn.gnumonks.org/ +%size 3 diff --git a/2006/oe_simputer-foss.in-2006/html/index.html b/2006/oe_simputer-foss.in-2006/html/index.html new file mode 100644 index 0000000..95a9e81 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/index.html @@ -0,0 +1,31 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="mgp00001.html"><IMG SRC="mgp00001.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 1"></A> +<A HREF="mgp00002.html"><IMG SRC="mgp00002.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 2"></A> +<A HREF="mgp00003.html"><IMG SRC="mgp00003.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 3"></A> +<A HREF="mgp00004.html"><IMG SRC="mgp00004.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 4"></A> +<A HREF="mgp00005.html"><IMG SRC="mgp00005.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 5"></A> +<A HREF="mgp00006.html"><IMG SRC="mgp00006.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 6"></A> +<A HREF="mgp00007.html"><IMG SRC="mgp00007.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 7"></A> +<A HREF="mgp00008.html"><IMG SRC="mgp00008.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 8"></A> +<A HREF="mgp00009.html"><IMG SRC="mgp00009.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 9"></A> +<A HREF="mgp00010.html"><IMG SRC="mgp00010.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 10"></A> +<A HREF="mgp00011.html"><IMG SRC="mgp00011.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 11"></A> +<A HREF="mgp00012.html"><IMG SRC="mgp00012.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 12"></A> +<A HREF="mgp00013.html"><IMG SRC="mgp00013.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 13"></A> +<A HREF="mgp00014.html"><IMG SRC="mgp00014.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 14"></A> +<A HREF="mgp00015.html"><IMG SRC="mgp00015.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 15"></A> +<A HREF="mgp00016.html"><IMG SRC="mgp00016.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 16"></A> +<A HREF="mgp00017.html"><IMG SRC="mgp00017.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 17"></A> +<A HREF="mgp00018.html"><IMG SRC="mgp00018.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 18"></A> +<A HREF="mgp00019.html"><IMG SRC="mgp00019.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 19"></A> +<A HREF="mgp00020.html"><IMG SRC="mgp00020.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 20"></A> +<A HREF="mgp00021.html"><IMG SRC="mgp00021.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 21"></A> +<A HREF="mgp00022.html"><IMG SRC="mgp00022.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 22"></A> +<A HREF="mgp00023.html"><IMG SRC="mgp00023.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 23"></A> +<A HREF="mgp00024.html"><IMG SRC="mgp00024.idx.jpg" WIDTH=256 HEIGHT=192 ALT="Page 24"></A> +<HR> +Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +<BR> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00001.html b/2006/oe_simputer-foss.in-2006/html/mgp00001.html new file mode 100644 index 0000000..0d46ed5 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00001.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00001.txt>[text page]</A> [<<start] [<prev] <A HREF=mgp00002.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 1: <BR> +<HR> +<IMG SRC="mgp00001.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 1"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00001.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00001.idx.jpg Binary files differnew file mode 100644 index 0000000..7e04264 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00001.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00001.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00001.jpg Binary files differnew file mode 100644 index 0000000..73e0ff8 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00001.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00001.txt b/2006/oe_simputer-foss.in-2006/html/mgp00001.txt new file mode 100644 index 0000000..e5a6a37 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00001.txt @@ -0,0 +1,11 @@ + +OpenEmbedded on the Simputer + + +Nov 26, 2006 +FOSS.in, Bangalore + +by + +Harald Welte <laforge@gnumonks.org> + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00002.html b/2006/oe_simputer-foss.in-2006/html/mgp00002.html new file mode 100644 index 0000000..4f7bd4c --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00002.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00002.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00001.html>[<prev]</A> <A HREF=mgp00003.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 2: <BR> +<HR> +<IMG SRC="mgp00002.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 2"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00002.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00002.idx.jpg Binary files differnew file mode 100644 index 0000000..a39d7da --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00002.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00002.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00002.jpg Binary files differnew file mode 100644 index 0000000..9f2cd9d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00002.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00002.txt b/2006/oe_simputer-foss.in-2006/html/mgp00002.txt new file mode 100644 index 0000000..19b51fa --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00002.txt @@ -0,0 +1,15 @@ +OpenEmbedded + About the Speaker + + 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 ;) + who is not a member of the OpenEmbedded project + ... but a proud owner of an Amida Simputer + + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00003.html b/2006/oe_simputer-foss.in-2006/html/mgp00003.html new file mode 100644 index 0000000..2674137 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00003.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00003.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00002.html>[<prev]</A> <A HREF=mgp00004.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 3: <BR> +<HR> +<IMG SRC="mgp00003.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 3"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00003.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00003.idx.jpg Binary files differnew file mode 100644 index 0000000..f8c331a --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00003.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00003.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00003.jpg Binary files differnew file mode 100644 index 0000000..6f9278e --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00003.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00003.txt b/2006/oe_simputer-foss.in-2006/html/mgp00003.txt new file mode 100644 index 0000000..beab65e --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00003.txt @@ -0,0 +1,13 @@ +OpenEmbedded + The Problem (A) + + What is the Problem? (Variant A) + You build an embedded device + You decide to run linux + You do your own embedded distribution + which is a lot of work in the first place + which will cause even more work for maintainance + in the end, you will not provide security updates + and you end up having a 'one time throw away' product + Your users will not get your full build system (if there is such a thing) + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00004.html b/2006/oe_simputer-foss.in-2006/html/mgp00004.html new file mode 100644 index 0000000..1f4c913 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00004.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00004.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00003.html>[<prev]</A> <A HREF=mgp00005.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 4: <BR> +<HR> +<IMG SRC="mgp00004.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 4"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00004.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00004.idx.jpg Binary files differnew file mode 100644 index 0000000..bc68f14 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00004.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00004.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00004.jpg Binary files differnew file mode 100644 index 0000000..8f399f3 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00004.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00004.txt b/2006/oe_simputer-foss.in-2006/html/mgp00004.txt new file mode 100644 index 0000000..98f8afc --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00004.txt @@ -0,0 +1,13 @@ +OpenEmbedded + The Problem (B) + + What is the Problem? (Variant B) + You build an embedded device + You decide to run linux + You license a commercial embedded Linux variant + you will most likely end up with something stale like kernel 2.4.x + you will have to spend a lot of money on it + you will still require quite a bit of porting + Your users will never get the source packages ("SRPMS") to it + + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00005.html b/2006/oe_simputer-foss.in-2006/html/mgp00005.html new file mode 100644 index 0000000..34b4889 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00005.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00005.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00004.html>[<prev]</A> <A HREF=mgp00006.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 5: <BR> +<HR> +<IMG SRC="mgp00005.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 5"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00005.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00005.idx.jpg Binary files differnew file mode 100644 index 0000000..983c92f --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00005.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00005.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00005.jpg Binary files differnew file mode 100644 index 0000000..1343f36 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00005.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00005.txt b/2006/oe_simputer-foss.in-2006/html/mgp00005.txt new file mode 100644 index 0000000..c1335f4 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00005.txt @@ -0,0 +1,16 @@ +OpenEmbedded + The Problem (Summary) + + Summary of the situation + You exclude the FOSS community from your product + You end up with low-quality code and lots of maintenance work + Your customers get a suboptimal product with limited feature set + + Result of that situation + Your customers will start their own embedded distributions + OpenWRT + OpenEZX + OpenZaurus + Familiar + ... + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00006.html b/2006/oe_simputer-foss.in-2006/html/mgp00006.html new file mode 100644 index 0000000..5889549 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00006.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00006.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00005.html>[<prev]</A> <A HREF=mgp00007.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 6: <BR> +<HR> +<IMG SRC="mgp00006.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 6"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00006.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00006.idx.jpg Binary files differnew file mode 100644 index 0000000..da02f4d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00006.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00006.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00006.jpg Binary files differnew file mode 100644 index 0000000..dd15023 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00006.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00006.txt b/2006/oe_simputer-foss.in-2006/html/mgp00006.txt new file mode 100644 index 0000000..2498862 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00006.txt @@ -0,0 +1,14 @@ +OpenEmbedded + Introduction to OE + + What is OpenEmbedded (OE) + Not a distribution, but distribution building framework + Not a software program + Consists of thousands of rules + Rules for definition of a machine type (78) + Rules for definition of a distribution (32) + Rules for individual packages (4095) + Plus a program to interpret those rules + bitbake + "One system to rule them all" + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00007.html b/2006/oe_simputer-foss.in-2006/html/mgp00007.html new file mode 100644 index 0000000..6666e86 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00007.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00007.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00006.html>[<prev]</A> <A HREF=mgp00008.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 7: <BR> +<HR> +<IMG SRC="mgp00007.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 7"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00007.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00007.idx.jpg Binary files differnew file mode 100644 index 0000000..3e61f06 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00007.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00007.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00007.jpg Binary files differnew file mode 100644 index 0000000..d114229 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00007.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00007.txt b/2006/oe_simputer-foss.in-2006/html/mgp00007.txt new file mode 100644 index 0000000..d8877c1 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00007.txt @@ -0,0 +1,21 @@ +OpenEmbedded + Introduction to OE + + What does OpenEmbedded (OE) do for you? + Build a toolchain + specifically for your target device + with the optimizations you need + for your host platform (I crosscompile from quad G5!) + Build a kernel image + your preferred version with your patches + Build a distribution + with the packages you want + with the initial configuration / fs layout you want + Build distribution images + using rootfs of your choice (cramfs, jffs2, ...) + matching for direct flash writing + optionally in your own firmware update image format + Build thousands of individual packages + using the package manager of your choice (.ipk, .deb) + packages can be later installed + package repositories can be published as 'feed' (apt-get like) diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00008.html b/2006/oe_simputer-foss.in-2006/html/mgp00008.html new file mode 100644 index 0000000..9e3ec99 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00008.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00008.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00007.html>[<prev]</A> <A HREF=mgp00009.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 8: <BR> +<HR> +<IMG SRC="mgp00008.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 8"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00008.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00008.idx.jpg Binary files differnew file mode 100644 index 0000000..4961ae2 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00008.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00008.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00008.jpg Binary files differnew file mode 100644 index 0000000..cdd813f --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00008.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00008.txt b/2006/oe_simputer-foss.in-2006/html/mgp00008.txt new file mode 100644 index 0000000..9701e00 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00008.txt @@ -0,0 +1,18 @@ +OpenEmbedded + Who uses OpenEmbedded + + Who uses OpenEmbedded + Until 07/2006, only community projects + OpenZaurus, OpenEZX, etc. + Since 07/2006, the first commercial user + FIC-sponsored OpenMoko.org (Linux GSM phone) + OpenMoko distribution + Neo1973 machie + QT2410 machine + .. more devices in 2007! + + Why not more commercial users + as usual: not all that much documentation about the system + but: OE core team members available for consultancy + not many commercial embedded vendors interested in sustainable, long-term development + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00009.html b/2006/oe_simputer-foss.in-2006/html/mgp00009.html new file mode 100644 index 0000000..d1ae303 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00009.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00009.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00008.html>[<prev]</A> <A HREF=mgp00010.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 9: <BR> +<HR> +<IMG SRC="mgp00009.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 9"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00009.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00009.idx.jpg Binary files differnew file mode 100644 index 0000000..213146c --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00009.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00009.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00009.jpg Binary files differnew file mode 100644 index 0000000..e7a0d36 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00009.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00009.txt b/2006/oe_simputer-foss.in-2006/html/mgp00009.txt new file mode 100644 index 0000000..8bc05dc --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00009.txt @@ -0,0 +1,13 @@ +OpenEmbedded + The heart of OE: bitbake + + What is bitbake + Program to interpret + local configuration (.conf files) + package specification (.bb files) + machine/distro configuration (.conf files) + Can be used to + build individual native (host) and target packages + build tasks (task == set of packages) + build ready-made firmware images + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00010.html b/2006/oe_simputer-foss.in-2006/html/mgp00010.html new file mode 100644 index 0000000..ddfec51 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00010.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00010.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00009.html>[<prev]</A> <A HREF=mgp00011.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 10: <BR> +<HR> +<IMG SRC="mgp00010.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 10"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00010.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00010.idx.jpg Binary files differnew file mode 100644 index 0000000..2418c65 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00010.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00010.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00010.jpg Binary files differnew file mode 100644 index 0000000..f3e2fa1 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00010.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00010.txt b/2006/oe_simputer-foss.in-2006/html/mgp00010.txt new file mode 100644 index 0000000..30effbb --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00010.txt @@ -0,0 +1,20 @@ +OpenEmbedded + Devices ('machines') + + Overview of built-in device support + Motorola A780 / E680 + HTC Blueangel + Various Sharp Zaurus models + VIA EPIA boards + iPAQ H1910, H1940, H2200, H3600, H3900, H4000, H5xxx, H6300 + HP Jornada 6xx, 7xx + i.MX31 ADS + Nokia 770 + Linksys NSLU2, WRT54g + Asus WL-500g + QEMU/ARM (for testing) + Samsung SMDK 2440 + PC-Engines WRAP + Amida Simputer (not yet mainline) + ... + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00011.html b/2006/oe_simputer-foss.in-2006/html/mgp00011.html new file mode 100644 index 0000000..421e53f --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00011.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00011.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00010.html>[<prev]</A> <A HREF=mgp00012.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 11: <BR> +<HR> +<IMG SRC="mgp00011.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 11"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00011.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00011.idx.jpg Binary files differnew file mode 100644 index 0000000..f35c9a4 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00011.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00011.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00011.jpg Binary files differnew file mode 100644 index 0000000..576ffd2 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00011.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00011.txt b/2006/oe_simputer-foss.in-2006/html/mgp00011.txt new file mode 100644 index 0000000..b2bab51 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00011.txt @@ -0,0 +1,13 @@ +OpenEmbedded + OE Packages + + An OE package is... + a .bb (bitbake) file containing + description + license + section + maintainer + dependencies + source code + patch URI's (local or remote) + so it is basically similar to a RPM spec file or debian 'rules' + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00012.html b/2006/oe_simputer-foss.in-2006/html/mgp00012.html new file mode 100644 index 0000000..5a8f262 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00012.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00012.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00011.html>[<prev]</A> <A HREF=mgp00013.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 12: <BR> +<HR> +<IMG SRC="mgp00012.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 12"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00012.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00012.idx.jpg Binary files differnew file mode 100644 index 0000000..1b9f233 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00012.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00012.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00012.jpg Binary files differnew file mode 100644 index 0000000..a2843b0 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00012.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00012.txt b/2006/oe_simputer-foss.in-2006/html/mgp00012.txt new file mode 100644 index 0000000..c59a562 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00012.txt @@ -0,0 +1,12 @@ +OpenEmbedded + OE Distributions + + An OE distribution is + a .conf file that indicates + name (DISTRO_NAME) + version (DISTRO_VERSION) + how to build the crosscompiler + which package format to use (INHERIT += package_ipk) + which images to build by default (IMAGE_FSTYPES) + preferred versions of many packages + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00013.html b/2006/oe_simputer-foss.in-2006/html/mgp00013.html new file mode 100644 index 0000000..77b877e --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00013.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00013.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00012.html>[<prev]</A> <A HREF=mgp00014.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 13: <BR> +<HR> +<IMG SRC="mgp00013.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 13"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00013.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00013.idx.jpg Binary files differnew file mode 100644 index 0000000..b110b6a --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00013.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00013.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00013.jpg Binary files differnew file mode 100644 index 0000000..5b1a8ed --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00013.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00013.txt b/2006/oe_simputer-foss.in-2006/html/mgp00013.txt new file mode 100644 index 0000000..f00fc86 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00013.txt @@ -0,0 +1,12 @@ +OpenEmbedded + OE Tasks + + Tasks are virtual packages + You can find OE Tasks in + openembedded/packages/tasks + Commonly used tasks are + task-bootstrap (all packages for basic userspace with login) + task-xterminal (boostrap + x11 + xterm) + gpe-image (xterminal + GPE project) + opie-image (OPIE project) + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00014.html b/2006/oe_simputer-foss.in-2006/html/mgp00014.html new file mode 100644 index 0000000..231e85b --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00014.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00014.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00013.html>[<prev]</A> <A HREF=mgp00015.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 14: <BR> +<HR> +<IMG SRC="mgp00014.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 14"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00014.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00014.idx.jpg Binary files differnew file mode 100644 index 0000000..0fc8180 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00014.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00014.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00014.jpg Binary files differnew file mode 100644 index 0000000..7f3af81 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00014.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00014.txt b/2006/oe_simputer-foss.in-2006/html/mgp00014.txt new file mode 100644 index 0000000..d2225d0 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00014.txt @@ -0,0 +1,15 @@ +OpenEmbedded + OE Images + + An OE Image is + a set of OE packages pre-installed into a root filesystem + again implemented as virtual package + OE Image rules are found in openembedded/packages/images + result provided as .tar.gz, .tar.bz2, cramfs or jffs + Commonly-used images: + bootstrap-image (basic system with console access) + xterminal-image (bootstrap + X11 + xterm) + e-image (xterminal + enlightenement e11) + gpe-image (xterminal + GPE) + opie-image (QtEmbedded, OPIE, no X11) + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00015.html b/2006/oe_simputer-foss.in-2006/html/mgp00015.html new file mode 100644 index 0000000..b1cafda --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00015.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00015.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00014.html>[<prev]</A> <A HREF=mgp00016.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 15: <BR> +<HR> +<IMG SRC="mgp00015.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 15"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00015.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00015.idx.jpg Binary files differnew file mode 100644 index 0000000..5e52ca6 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00015.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00015.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00015.jpg Binary files differnew file mode 100644 index 0000000..4b93d9b --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00015.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00015.txt b/2006/oe_simputer-foss.in-2006/html/mgp00015.txt new file mode 100644 index 0000000..57b46cc --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00015.txt @@ -0,0 +1,11 @@ +OpenEmbedded + OE Build Setup + + OE Build Setup + create a 'build/conf/local.conf' file + TMPDIR - directory with lots of space (30G) + MACHINE - the device you want to build for + DISTRO - the distro you want to build + BUILD_ARCH - the native architecture of the host PC (optional) + install bitbake into + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00016.html b/2006/oe_simputer-foss.in-2006/html/mgp00016.html new file mode 100644 index 0000000..7e985fd --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00016.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00016.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00015.html>[<prev]</A> <A HREF=mgp00017.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 16: <BR> +<HR> +<IMG SRC="mgp00016.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 16"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00016.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00016.idx.jpg Binary files differnew file mode 100644 index 0000000..e37cdda --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00016.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00016.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00016.jpg Binary files differnew file mode 100644 index 0000000..24d54e4 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00016.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00016.txt b/2006/oe_simputer-foss.in-2006/html/mgp00016.txt new file mode 100644 index 0000000..127b754 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00016.txt @@ -0,0 +1,21 @@ +OpenEmbedded + OE Build Tree + + OE Build Tree layout + my-oe/openembedded + the openembedded rules checked out via monotone (mtn) + my-oe/openembedded/packages + package rule files + my-oe/openembedded/conf/machine + machine rule files + my-oe/openembedded/conf/distro + distro rule files + my-oe/build/conf + local.conf configuration + my-oe/build/tmp/work + work directory of build process + my-oe/build/tmp/deploy/ipk + completed ipk packages + my-oe/build/tmp/deploy/images + completed filesystem images + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00017.html b/2006/oe_simputer-foss.in-2006/html/mgp00017.html new file mode 100644 index 0000000..e6c54c9 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00017.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00017.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00016.html>[<prev]</A> <A HREF=mgp00018.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 17: <BR> +<HR> +<IMG SRC="mgp00017.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 17"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00017.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00017.idx.jpg Binary files differnew file mode 100644 index 0000000..c5f432e --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00017.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00017.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00017.jpg Binary files differnew file mode 100644 index 0000000..8a05ea5 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00017.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00017.txt b/2006/oe_simputer-foss.in-2006/html/mgp00017.txt new file mode 100644 index 0000000..3cfe62d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00017.txt @@ -0,0 +1,13 @@ +OpenEmbedded + The Amida Simputer + + The Amida simputer is a device with + Intel SA-1100 StrongARM Processor + 64 MB RAM + 32 MB Flash + USB Host port + USB Device port + Serial port (console) + Smart Card Reader + ... + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00018.html b/2006/oe_simputer-foss.in-2006/html/mgp00018.html new file mode 100644 index 0000000..3e6f43c --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00018.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00018.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00017.html>[<prev]</A> <A HREF=mgp00019.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 18: <BR> +<HR> +<IMG SRC="mgp00018.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 18"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00018.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00018.idx.jpg Binary files differnew file mode 100644 index 0000000..e8b3120 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00018.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00018.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00018.jpg Binary files differnew file mode 100644 index 0000000..feb15a2 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00018.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00018.txt b/2006/oe_simputer-foss.in-2006/html/mgp00018.txt new file mode 100644 index 0000000..9a4eb31 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00018.txt @@ -0,0 +1,14 @@ +OpenEmbedded + OE for the Amida Simputer + + Adding a new device to OE + is extremely easy + in most cases, architecture / SoC support already there + you just create a "conf/machine/foobar.conf" rule file + content of the file + size of root flash image + which rootfs format to create (jffs2, ...) + which kernel to build + which compiler architecture + flags to use + see following example for Amida 4200 + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00019.html b/2006/oe_simputer-foss.in-2006/html/mgp00019.html new file mode 100644 index 0000000..8478bfd --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00019.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00019.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00018.html>[<prev]</A> <A HREF=mgp00020.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 19: <BR> +<HR> +<IMG SRC="mgp00019.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 19"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00019.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00019.idx.jpg Binary files differnew file mode 100644 index 0000000..e6b503d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00019.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00019.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00019.jpg Binary files differnew file mode 100644 index 0000000..419348d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00019.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00019.txt b/2006/oe_simputer-foss.in-2006/html/mgp00019.txt new file mode 100644 index 0000000..d7a182d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00019.txt @@ -0,0 +1,19 @@ +OpenEmbedded + OE for the Amida Simputer + + Which strategy to go + oeputer + use old compiler + use original kernel + try to maintain binary compatibility with existing apps + this was the initial attempt, now abandoned + oeputer-ng + use latest toolchain (compiler, ...) + use latest versions of libraries, X11 server, ... + use current kernel + this is the current approach, esp. after Alchemy is becoming Free Software + which means we can theoretically re-compile it + in practise, there's probably quite a bit of porting needed + volunteers? (see next presentation on OpenAlchemy!) + + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00020.html b/2006/oe_simputer-foss.in-2006/html/mgp00020.html new file mode 100644 index 0000000..e304bb8 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00020.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00020.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00019.html>[<prev]</A> <A HREF=mgp00021.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 20: <BR> +<HR> +<IMG SRC="mgp00020.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 20"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00020.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00020.idx.jpg Binary files differnew file mode 100644 index 0000000..81915aa --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00020.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00020.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00020.jpg Binary files differnew file mode 100644 index 0000000..ea42b40 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00020.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00020.txt b/2006/oe_simputer-foss.in-2006/html/mgp00020.txt new file mode 100644 index 0000000..38fa6b2 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00020.txt @@ -0,0 +1,14 @@ +OpenEmbedded + OE for the Amida Simputer + + oeputer + create kernel package with original kernel tree from amida + see example + create bootloader package with original bootloader tree from amida + this is optional + we could just leave the existing bootloader + if we want to do modifications, create pacakge + use existing glibc, zlib, ... packages + works if the versio is compatible with what simputer uses + in most cases, simputer software versions are too old + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00021.html b/2006/oe_simputer-foss.in-2006/html/mgp00021.html new file mode 100644 index 0000000..afd3db2 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00021.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00021.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00020.html>[<prev]</A> <A HREF=mgp00022.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 21: <BR> +<HR> +<IMG SRC="mgp00021.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 21"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00021.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00021.idx.jpg Binary files differnew file mode 100644 index 0000000..ee0fc68 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00021.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00021.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00021.jpg Binary files differnew file mode 100644 index 0000000..a828432 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00021.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00021.txt b/2006/oe_simputer-foss.in-2006/html/mgp00021.txt new file mode 100644 index 0000000..a409fad --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00021.txt @@ -0,0 +1,16 @@ +OpenEmbedded + OE for the Amida Simputer + + oeputer-ng + kernel + initially, use oeputer kernel package + later, port drivers/machine support to mainline and use 2.6.x + bootloader + just leave as-is or use oeputer package + userspace + just use most current (stable) versions of everything in OE + glibc-2.4 + gcc-4.1.1 + x11-kdrive from X11R7.1 + ... + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00022.html b/2006/oe_simputer-foss.in-2006/html/mgp00022.html new file mode 100644 index 0000000..9f956ee --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00022.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00022.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00021.html>[<prev]</A> <A HREF=mgp00023.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 22: <BR> +<HR> +<IMG SRC="mgp00022.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 22"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00022.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00022.idx.jpg Binary files differnew file mode 100644 index 0000000..a385b19 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00022.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00022.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00022.jpg Binary files differnew file mode 100644 index 0000000..577d69f --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00022.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00022.txt b/2006/oe_simputer-foss.in-2006/html/mgp00022.txt new file mode 100644 index 0000000..dc920a5 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00022.txt @@ -0,0 +1,22 @@ +OpenEmbedded + OE Build Timeline + + OE Build Timeline (bitbake bootstrap-image) + Build Order: + some native (host) libraries/tools + autotools + coreutils + ipkg + libxml + m4 + fakeroot + the cross-toolchain + binutils + gcc + the basic packages (from task-bootstrap) + linux-libc-headers, glibc, module-init-tools + zlib, ncurses, util-linux, kernel + the boostrap-image (from bootstrap-image.bb) + all packages from task-bootstrap + create jffs / tar.bz2 + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00023.html b/2006/oe_simputer-foss.in-2006/html/mgp00023.html new file mode 100644 index 0000000..9951670 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00023.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00023.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00022.html>[<prev]</A> <A HREF=mgp00024.html>[next>]</A> <A HREF=mgp00024.html>[last>>]</A> +<BR>Page 23: <BR> +<HR> +<IMG SRC="mgp00023.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 23"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00023.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00023.idx.jpg Binary files differnew file mode 100644 index 0000000..8fc6b7d --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00023.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00023.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00023.jpg Binary files differnew file mode 100644 index 0000000..6d0a486 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00023.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00023.txt b/2006/oe_simputer-foss.in-2006/html/mgp00023.txt new file mode 100644 index 0000000..7058752 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00023.txt @@ -0,0 +1,16 @@ +OpenEmbedded + Status of OE on Simputer + + Status of OE on Simputer + Proof-of-concept bootstrap-image exists + Project is stalled because of lack of time + Did I mention how many projects I'm involved in? + Volunteers wanted + If there are no volunteers taking it further, it will probably be still-born + Talk to Anush Shetty! + OpenAlchemy + will make the whole project even more interesting + the idea is to create bitbake rules for OpenAlchemy + which can then be built for 'oeputer-ng' + but also for many (all?) other OE supported systems! + diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00024.html b/2006/oe_simputer-foss.in-2006/html/mgp00024.html new file mode 100644 index 0000000..2b64e8f --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00024.html @@ -0,0 +1,9 @@ +<HTML> +<HEAD><TITLE>MagicPoint presentation foils</TITLE></HEAD> +<BODY> +<A HREF="index.html">[index]</A> <A HREF=mgp00024.txt>[text page]</A> <A HREF=mgp00001.html>[<<start]</A> <A HREF=mgp00023.html>[<prev]</A> [next>] [last>>] +<BR>Page 24: <BR> +<HR> +<IMG SRC="mgp00024.jpg" WIDTH=1024 HEIGHT=768 ALT="Page 24"><BR> +<HR>Generated by <A HREF="http://member.wide.ad.jp/wg/mgp/">MagicPoint</A> +</BODY></HTML> diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00024.idx.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00024.idx.jpg Binary files differnew file mode 100644 index 0000000..035d4ce --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00024.idx.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00024.jpg b/2006/oe_simputer-foss.in-2006/html/mgp00024.jpg Binary files differnew file mode 100644 index 0000000..2fcf2f1 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00024.jpg diff --git a/2006/oe_simputer-foss.in-2006/html/mgp00024.txt b/2006/oe_simputer-foss.in-2006/html/mgp00024.txt new file mode 100644 index 0000000..31cf2cf --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/html/mgp00024.txt @@ -0,0 +1,15 @@ +OpenEmbedded + Links + + Links + The OpenEmbedded project + http://openembedded.org/ + Getting Started with OpenEmbedded + http://www.openembedded.org/wiki/GettingStarted + The Amida Simputer + http://www.amidasimputer.com/ + OE on Simputer project + http://simputer.gnumonks.org/ + OpenMoko project + http://www.openmoko.org/ + diff --git a/2006/oe_simputer-foss.in-2006/oe_simputer.mgp b/2006/oe_simputer-foss.in-2006/oe_simputer.mgp new file mode 100644 index 0000000..48b265b --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/oe_simputer.mgp @@ -0,0 +1,423 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +OpenEmbedded on the Simputer + + +Nov 26, 2006 +FOSS.in, Bangalore + +%center +%size 4 +by + +Harald Welte <laforge@gnumonks.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +About the Speaker + +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 ;) + who is not a member of the OpenEmbedded project + ... but a proud owner of an Amida Simputer + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Problem (A) + +What is the Problem? (Variant A) + You build an embedded device + You decide to run linux + You do your own embedded distribution + which is a lot of work in the first place + which will cause even more work for maintainance + in the end, you will not provide security updates + and you end up having a 'one time throw away' product + Your users will not get your full build system (if there is such a thing) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Problem (B) + +What is the Problem? (Variant B) + You build an embedded device + You decide to run linux + You license a commercial embedded Linux variant + you will most likely end up with something stale like kernel 2.4.x + you will have to spend a lot of money on it + you will still require quite a bit of porting + Your users will never get the source packages ("SRPMS") to it + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Problem (Summary) + + Summary of the situation + You exclude the FOSS community from your product + You end up with low-quality code and lots of maintenance work + Your customers get a suboptimal product with limited feature set + + Result of that situation + Your customers will start their own embedded distributions + OpenWRT + OpenEZX + OpenZaurus + Familiar + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Introduction to OE + +What is OpenEmbedded (OE) + Not a distribution, but distribution building framework + Not a software program + Consists of thousands of rules + Rules for definition of a machine type (78) + Rules for definition of a distribution (32) + Rules for individual packages (4095) + Plus a program to interpret those rules + bitbake + "One system to rule them all" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Introduction to OE + + What does OpenEmbedded (OE) do for you? + Build a toolchain + specifically for your target device + with the optimizations you need + for your host platform (I crosscompile from quad G5!) + Build a kernel image + your preferred version with your patches + Build a distribution + with the packages you want + with the initial configuration / fs layout you want + Build distribution images + using rootfs of your choice (cramfs, jffs2, ...) + matching for direct flash writing + optionally in your own firmware update image format + Build thousands of individual packages + using the package manager of your choice (.ipk, .deb) + packages can be later installed + package repositories can be published as 'feed' (apt-get like) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Who uses OpenEmbedded + +Who uses OpenEmbedded + Until 07/2006, only community projects + OpenZaurus, OpenEZX, etc. + Since 07/2006, the first commercial user + FIC-sponsored OpenMoko.org (Linux GSM phone) + OpenMoko distribution + Neo1973 machie + QT2410 machine + .. more devices in 2007! + + Why not more commercial users + as usual: not all that much documentation about the system + but: OE core team members available for consultancy + not many commercial embedded vendors interested in sustainable, long-term development + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The heart of OE: bitbake + +What is bitbake + Program to interpret + local configuration (.conf files) + package specification (.bb files) + machine/distro configuration (.conf files) + Can be used to + build individual native (host) and target packages + build tasks (task == set of packages) + build ready-made firmware images + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Devices ('machines') + +Overview of built-in device support + Motorola A780 / E680 + HTC Blueangel + Various Sharp Zaurus models + VIA EPIA boards + iPAQ H1910, H1940, H2200, H3600, H3900, H4000, H5xxx, H6300 + HP Jornada 6xx, 7xx + i.MX31 ADS + Nokia 770 + Linksys NSLU2, WRT54g + Asus WL-500g + QEMU/ARM (for testing) + Samsung SMDK 2440 + PC-Engines WRAP + Amida Simputer (not yet mainline) + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Packages + +An OE package is... + a .bb (bitbake) file containing + description + license + section + maintainer + dependencies + source code + patch URI's (local or remote) + so it is basically similar to a RPM spec file or debian 'rules' + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Distributions + +An OE distribution is + a .conf file that indicates + name (DISTRO_NAME) + version (DISTRO_VERSION) + how to build the crosscompiler + which package format to use (INHERIT += package_ipk) + which images to build by default (IMAGE_FSTYPES) + preferred versions of many packages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Tasks + +Tasks are virtual packages + You can find OE Tasks in + openembedded/packages/tasks + Commonly used tasks are + task-bootstrap (all packages for basic userspace with login) + task-xterminal (boostrap + x11 + xterm) + gpe-image (xterminal + GPE project) + opie-image (OPIE project) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Images + +An OE Image is + a set of OE packages pre-installed into a root filesystem + again implemented as virtual package + OE Image rules are found in openembedded/packages/images + result provided as .tar.gz, .tar.bz2, cramfs or jffs + Commonly-used images: + bootstrap-image (basic system with console access) + xterminal-image (bootstrap + X11 + xterm) + e-image (xterminal + enlightenement e11) + gpe-image (xterminal + GPE) + opie-image (QtEmbedded, OPIE, no X11) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Build Setup + +OE Build Setup + create a 'build/conf/local.conf' file + TMPDIR - directory with lots of space (30G) + MACHINE - the device you want to build for + DISTRO - the distro you want to build + BUILD_ARCH - the native architecture of the host PC (optional) + install bitbake into + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Build Tree + +OE Build Tree layout + my-oe/openembedded + the openembedded rules checked out via monotone (mtn) + my-oe/openembedded/packages + package rule files + my-oe/openembedded/conf/machine + machine rule files + my-oe/openembedded/conf/distro + distro rule files + my-oe/build/conf + local.conf configuration + my-oe/build/tmp/work + work directory of build process + my-oe/build/tmp/deploy/ipk + completed ipk packages + my-oe/build/tmp/deploy/images + completed filesystem images + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +The Amida Simputer + +The Amida simputer is a device with + Intel SA-1100 StrongARM Processor + 64 MB RAM + 32 MB Flash + USB Host port + USB Device port + Serial port (console) + Smart Card Reader + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +Adding a new device to OE + is extremely easy + in most cases, architecture / SoC support already there + you just create a "conf/machine/foobar.conf" rule file + content of the file + size of root flash image + which rootfs format to create (jffs2, ...) + which kernel to build + which compiler architecture + flags to use + see following example for Amida 4200 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +Which strategy to go + oeputer + use old compiler + use original kernel + try to maintain binary compatibility with existing apps + this was the initial attempt, now abandoned + oeputer-ng + use latest toolchain (compiler, ...) + use latest versions of libraries, X11 server, ... + use current kernel + this is the current approach, esp. after Alchemy is becoming Free Software + which means we can theoretically re-compile it + in practise, there's probably quite a bit of porting needed + volunteers? (see next presentation on OpenAlchemy!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +oeputer + create kernel package with original kernel tree from amida + see example + create bootloader package with original bootloader tree from amida + this is optional + we could just leave the existing bootloader + if we want to do modifications, create pacakge + use existing glibc, zlib, ... packages + works if the versio is compatible with what simputer uses + in most cases, simputer software versions are too old + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE for the Amida Simputer + +oeputer-ng + kernel + initially, use oeputer kernel package + later, port drivers/machine support to mainline and use 2.6.x + bootloader + just leave as-is or use oeputer package + userspace + just use most current (stable) versions of everything in OE + glibc-2.4 + gcc-4.1.1 + x11-kdrive from X11R7.1 + ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +OE Build Timeline + +OE Build Timeline (bitbake bootstrap-image) + Build Order: + some native (host) libraries/tools + autotools + coreutils + ipkg + libxml + m4 + fakeroot + the cross-toolchain + binutils + gcc + the basic packages (from task-bootstrap) + linux-libc-headers, glibc, module-init-tools + zlib, ncurses, util-linux, kernel + the boostrap-image (from bootstrap-image.bb) + all packages from task-bootstrap + create jffs / tar.bz2 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Status of OE on Simputer + +Status of OE on Simputer + Proof-of-concept bootstrap-image exists + Project is stalled because of lack of time + Did I mention how many projects I'm involved in? + Volunteers wanted + If there are no volunteers taking it further, it will probably be still-born + Talk to Anush Shetty! + OpenAlchemy + will make the whole project even more interesting + the idea is to create bitbake rules for OpenAlchemy + which can then be built for 'oeputer-ng' + but also for many (all?) other OE supported systems! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEmbedded +Links + +Links + The OpenEmbedded project + http://openembedded.org/ + Getting Started with OpenEmbedded + http://www.openembedded.org/wiki/GettingStarted + The Amida Simputer + http://www.amidasimputer.com/ + OE on Simputer project + http://simputer.gnumonks.org/ + OpenMoko project + http://www.openmoko.org/ + diff --git a/2006/oe_simputer-foss.in-2006/oe_simputer.pdf b/2006/oe_simputer-foss.in-2006/oe_simputer.pdf Binary files differnew file mode 100644 index 0000000..77866e0 --- /dev/null +++ b/2006/oe_simputer-foss.in-2006/oe_simputer.pdf diff --git a/2006/openpcd_openpicc-0sec/openpcd_openpicc.mgp b/2006/openpcd_openpicc-0sec/openpcd_openpicc.mgp new file mode 100644 index 0000000..f81c448 --- /dev/null +++ b/2006/openpcd_openpicc-0sec/openpcd_openpicc.mgp @@ -0,0 +1,352 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +OpenPCD / OpenPICC +Free Software and Hardware for 13.56MHz RFID + +Oct 13, 2006 +0sec, Bern + +%center +%size 4 +by + +Harald Welte <laforge@gnumonks.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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 licnese + 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_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 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 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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 25 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 :) + I have three readers with me, in case anyone is interested + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenPCD / OpenPICC +OpenPCD outlook + +OpenPCD outlook + redesign librfid so it can easily be compiled for host or device + get rid of dynamic allocations + try to be more memory efficient + 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 + 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 + first prototype not yet 100% functional + still some problems with clock recovery + analog side + finished 'really soon now' (december) + 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/ diff --git a/2006/openpcd_openpicc-23c3/openpcd_openpicc.mgp b/2006/openpcd_openpicc-23c3/openpcd_openpicc.mgp new file mode 100644 index 0000000..91f2bed --- /dev/null +++ b/2006/openpcd_openpicc-23c3/openpcd_openpicc.mgp @@ -0,0 +1,426 @@ +%include "default.mgp" +%default 1 bgrad +%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +OpenPCD / OpenPICC +Free Software and Hardware for 13.56MHz RFID + +Dec 29, 2006 +23C3, Berlin + +%center +%size 4 +by + +Harald Welte <laforge@openpcd.org> +Milosch Meriac <meriac@openpcd.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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/2006/openpcd_openpicc-foss.in_2006/openpcd_openpicc.mgp b/2006/openpcd_openpicc-foss.in_2006/openpcd_openpicc.mgp new file mode 100644 index 0000000..bc3342e --- /dev/null +++ b/2006/openpcd_openpicc-foss.in_2006/openpcd_openpicc.mgp @@ -0,0 +1,365 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 +OpenPCD / OpenPICC +Free Software and Hardware for 13.56MHz RFID + +Nov 24, 2006 +FOSS.in, Bangalore + +%center +%size 4 +by + +Harald Welte <laforge@openpcd.org> +Milosch Meriac <meriac@openpcd.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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 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) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%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 40 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 five 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 + 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 + first prototype not yet 100% functional + still some problems with clock recovery + analog side + finished 'really soon now' (december) + 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/2006/openpcd_openpicc-foss.in_2006/openpcd_openpicc.pdf b/2006/openpcd_openpicc-foss.in_2006/openpcd_openpicc.pdf Binary files differnew file mode 100644 index 0000000..1dc34bb --- /dev/null +++ b/2006/openpcd_openpicc-foss.in_2006/openpcd_openpicc.pdf diff --git a/2006/phneutral-a780/abstract.txt b/2006/phneutral-a780/abstract.txt new file mode 100644 index 0000000..0e0b2c4 --- /dev/null +++ b/2006/phneutral-a780/abstract.txt @@ -0,0 +1,65 @@ +* Title: + Towards the first 100% free software GSM phone + +* Subtitle: + Reverse Engineering the Motorola EZX (A768,A780,E680) series of Linux-based GSM phones + +* Abstract: + This presentation describes the progress of hacking and extending the + Motorola series of Linux based Smartphones, with the ultimate goal to + replace all proprietary applications with 100% free software. + +* Description: + A longer and detailed description of the event's content (250 to 500 words) + It's been two years since Motorola has released the first Linux + Smartphone (A768). More recently, two new models were introduced, the + A780 and the E680, the former even officially distributed in Germany + and all over the EU. + + What's so special about a Linux based smartphone? It's special because + the Linux kernel acts as an enabler for 3rd party hacks and 3rd party + software, like it can be observed with the OpenWRT, OpenTom, + NSLU2-Linux, OpenEmbedded, OpenZaurus and other similar projects. + + The author of this presentation has sucessfully obtained "telnet" + access to an A780 cellphone, built a matching cross-compilation + toolchain and installed various applications for debugging, such as + busybox, iptables, nmap, lsof, strace, etc. + + While re-engineering efforts are still in a early stage, work is + proceeding extremely fast, and important pieces such as the protocol + between the PXA270 frontend processor and the ARM7TDMI GSM processor + have already been partially re-engineered. The project is expected to + progress significantly until 22C3. + + +* Please state if you are going to submit a paper to be included in the 22C3 + Proceedings + Yes + +* Please state if you are going to use slides in your talk and in which format + you are going to provide a copy + Magicpoint or tpp + +* Duration of your talk + +* Language of your talk + en_US + +* Links to background information on the talk + http://www.motorolafans.com/ + http://gnumonks.org/~laforge/weblog/linux/a780/ + http://svnweb.gnumonks.org/trunk/a780/ + +* Target Group: + Developers + +* Resources you need for your talk + digital projector + +* Related talks at 22C3 you know of + none + +* A lecture logo, square format, min. 128x128 pixels (optional) + none + diff --git a/2006/phneutral-a780/openezx.mgp b/2006/phneutral-a780/openezx.mgp new file mode 100644 index 0000000..8abde5b --- /dev/null +++ b/2006/phneutral-a780/openezx.mgp @@ -0,0 +1,589 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + +Motorola EZX +Linux Smartphones + +May 28, 2006 +ph-neutral + +%center +%size 4 +by + +Harald Welte <laforge@gnumonks.org> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Introduction + + +Who is speaking to you? + an independent Free Software developer + who earns his living off Free Software since 1997 + who is one of the authors of the Linux kernel firewall system called netfilter/iptables + who can claim to be the first to have enforced the GNU GPL in court + who is doing way too many projects simultaneously, one of them OpenEZX + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Contents + + Disclaimer + What is OpenEZX + History of Motorola Linux Phones + A780 / E680(i) overview + Techniques for reverse engineering + Current status of information about EZX phones + OpenEZX software status + Another Linux GSM Phone: HTC BlueAngel + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Disclaimer + + +Disclaimer + I have no affiliation with Motorola + OpenEZX project has no affiliation with Motorola + All Information is based on observation, and may be wrong + Lots of the work has been done by a large community, I'm a newbie ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +What is OpenEZX + + + OpenEZX project + to document EZX phone hardware and software + to provide 100% free software stack for frontend CPU + might at some future point in time also look into GSM/RF related hacks + Homepage: http://openezx.org/ (http://open-ezx.org) + Wiki: http://wiki.openezx.org/ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +History + + +History of Motorola Linux based gsm phones + A760, A768 + Released in Asia in 2003 + EZX (A780, E680, E680i) + E680 sold only in asian market + A780 sold in China since August 2004 + A780 first Motorola Linux phone available in EU/US + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 + + + The A780 phone + Quad-band GSM + AGPS + GPRS, EDGE, HSCSD + Intel Xscale based + Monta Vista CE Linux + Bluetooth + USB device port (modem / mass storage) + Transflash slot (SD-card in smaller form factor) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +E680/E680i + + + The E680 phone + Like A780 + No GPS + full-size SD/MMC slot + FM Radio + minor differences in Audio system, GPIO assignment, ... + + The E680i phone + seems to only differ in software + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Other Linux Smartphones + + Other Motorola Linux Smartphones + E895 + A1200 + A910 + A732 + A728 + ROKR E2 + + They all have a similar design, so supporting all of them should be possible + Unfortunately I don't really have the money to buy/import all of them :( + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Techniques for re-engineering + + + learn about the device + take the device apart + take high-res PCB photographs + FCC database sometimes quite helpful + remove all the shielding covers + write down types of all integrated circuits + google for those circuits, try locating data sheets + sometimes service manuals can be obtained for small fees + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Techniques for re-engineering + + + try to find a serial console port + successful in many embedded devices + all you need is a 3.3v<->RS232 level shifter + A780: checking all 100+ test points with an oscilloscope :( + unfortunately not successful in the case of A780 + + try to find a JTAG port + cheap JTAG / parallel port adaptors available or DYI + only helps if you also have a BSDL file or similar + hard to figure out which of the five pins is which + be aware: there might be multiple JTAG ports for multiple IC's + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Techniques for re-engineering + + + access to the OS instead of the UI + serial console helps in many cases, not in this one + networked devices sometimes have telnet/ssh available + exploits of known-to-be-installed software (zlib-1.1.3) + try "weird button combinations" at startup + + access to flash memory + read out via JTAG + if you have shell access, dd if=/dev/mtd* of=... + via vendor-supplied flash programming tool + copy / unpack / mount flash image to PC workstation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Techniques for re-engineering + + + simulation + running ARM binaries from device in QEMU emulation + commercial ARM emulators + + disassembling + WARNING: may be illegal in most jurisdictions + use gnu binutils (objdump, ...) + use special-purpose proprietary tools (IDA Pro) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 Hardware + + + In short + A Motorola Neptune LTE based mobile phone plus + A PXA270 Xscale based PDA in one case + + Application Processor (PXA270) + runs heavily modified linux-2.4.20 kernel + 48MB RAM + 48MB "wireless" flash + software-configurable clock speed up to 400MHz + JTAG port on test pads, BSDL file and JFlash available + SPI/SSP interface to PCAP and BP + directly attached to 320x200 LCD display + directly attached to touch screen, buttons + directly attached to 1.3Mpixel camera module + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 Hardware + + + Baseband Processor (Neptune LTE) + contains ARM7TDMI for GSM stack + contains 566xx DSP for digital baseband + JTAG port on test pads, but no BSDL file + Connected to Application processor via USB + SPI/SSP interface to PCAP and AP + UART connected to AGPS processor + Connects to GSM SIM module + 8MB external flash + 2MB external RAM + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 Hardware + + + AGPS Processor (Motorola Telematics MG4100) + Attached to UART of BP + Has it's own Flash and RAM (2MB?) + + PCAP2 (power management, clock and audio peripheral) + produces a 16 different voltages + handles all mono/stereo audio + connected to 2 speakers, microphone, vibrator + clock generation + SPI/SSP interface to AP and BP + Backlight control + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 Hardware + + +RF Part (not very much information known) + + RF6003 + fractional-n RF synthesizer + + RF2722 + GPRS/EDGE capable receiver (RX) + + RF3144 + quad-band power amplifier (TX)))) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 AP Software + + + linux-2.4.20 + whole bunch of montavista additions + dynamic power management + EZX arm subarchitecture + low-level drivers for + SPI/SSP + PCAP Audio (mono/stereo/headset/...) + Vibrator (/dev/vibrator) + USB host port attached to BP + USB device port (belcarra usbd, not gadget) + Transflash/SD/MMC + THREE proprietary flash file systems + Intel VFM (hatcreek.o) + m-systems DiskOnChip (tffs.o) + third unknown +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 AP Software + + + mux_cli.o + hooks into special functions of USB host driver + provides GSM TS07.10 (de)multiplex + userspace has tty devices + + gprsv.o + implements GPRS line discipline for mux_cli ttys + hooks into netfilter to intercept DNS packets ?!? + provides gprs0 / grps1 network devices + + ipsec.o + proprietary ipsec stack (don't we already have two GPL licensed?) + Copyright Certicom Corp + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 Software + + + Libraries + glibc + Bluetooth + proprietary userspace program directly opens HCI + GPS + no NMEA, no serial device emulation :( + proprietary library / lapid via mux_cli kernel module + UI + embedded Qt + Motorola EZX toolkit + Java + Full J2ME support + (but who wants java if there's linux?) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +A780 Software + + + Apps + Opera + Helix Player with codecs + aac, amr, mp4, realvideo, mid, mp3, mp4, wma + movianVPN + proprietary IPsec VPN client + CoPilot + proprietary GPS navigation, map&route program + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX Firmware Images + + + EZX Firmware Images + Motorola ships .SHX firmware images to service centres + No legal way for users to get FW updates + Proprietary Windows apps flash phone via USB + Motorola PST + Motorola RSD lite + SHX files contain 'code groups' + AP bootloader (blob based) + AP linux kernel + AP root filesystem + AP /ezxlocal filesystem + AP "language pack" + Bootup Logo/Animation + BP OS + DSP code + Cryptographic Signature(s) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX bootloader + + + EZX bootloader + based on GPL licensed blob + source code now finally released by Motorola + low-level initialization code (GPIO config, clock, ...) + vendor specific USB device that allows for + transfer of executable code from USB host + execution of transferred executable + serial console code is present in binary, but not used :( + PST/RSD firmware updates work by uploading a 'ramloader' + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX Firmware Update Process + + + EZX AP Firmware Update Process + Application Processor is put into update mode + via two-button combination at bootup + via software (writing magic value to start of SDRAM) + Application Processor enumerates in firmware update mode + Host PC sends executable code (ramldr) to phone memory + Host PC sends jump command to make AP execute downloaded code + Application Processor re-enumerates as different device + Host PC sends content for individual flash partitions into AP RAM + AP ramldr code flashes partitions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX Firmware Update Process + + + EZX BP Firmware Update Process + Application Processor is put into "pass-through mode" + via boot loader by fiddling with HCD/OTG/UDC/GPIO regs + Host PC is directly attached to Basband Processor + Host PC downloads executable code (BP ramldr) to phone memory + BP verifies cryptographic signature (RSA 1024?) + BP executes BP ramldr + Host PC sends content for flash partitions into BP RAM + BP ramldr code flashes partitions + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX Firmware Update Process + + + EZX AGPS Firmware Update Process + AGPS attached to UART of BP + BP can update AGPS ARM7 firmware via UART + Protocol unknown + + EZX Bluetooth Firmware Update Process + Broadcom bcm2305 connected to AP UART + It can be updated via UART, too + Linux kernel driver can only update it via USB, not UART + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX USB (EMU) + + + EZX phones seem to have USB device port + Actually, it's "Enhanced Mini USB" (EMU) + Depending on pullup/pulldown/... resistors + USB device port + Serial port (RS232 at 3.3V levels) + Stereo audio signal + 500mA charger + Carkit (easy install, professionally installed) + Factory test + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +EZX USB (EMU) + + + USB Configurations + Even in USB device EMU mode, there are many configs + Official configs + cdc_acm (serial modem emulation for host pc) + USB mass storage (transflash and VFAT-on-TFFS devices) + Undocumented configs + usbnet (network device over USB) + Allows telnet into phone + PST + Mode used by PST Windows App + DSPlog + Apparently a way to dump data from DSP + NetMonitor + supposedly for GSM network monitor + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +How to boot via USB + + + Button combination during power-on gets phone into bootloader + bootloader supports download of executable code from USB host into RAM + bootloader can jump to downloaded executable code + A Linux application (boot_usb) has been developed, using libusb + using boot_usb, we can boot our own kernel without flashing device + ideal for rapid kernel development + not really an option for final EZX distribution, what if no usb host around? + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Status + + + Status of Free Software on original kernel + Updated toolchain (gcc-3.4) + Linux native BlueZ bluetooth working + netfilter/iptables port (you can do NAT between GPRS and usbnet) + nmap/tcpdump/af_packet.o + lsof, busybox, bash2, + gameboy emulator + qonsole (qt console app with OSD keyboard) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Status of kernel + + + The current 2.6.16.13-ezx5 kernel supports + PXA270FB with framebuffer based console + backlight + Serial Console (STUART on PCB, or FFUART via EMU -> USB) + New Driver for SSP/SPI (PCAP) + Driver for SD/MMC/Transflash using generic MMC stack + USB host controller (OHCI) towards BP working + USB device controller working (usbnet) + New Touchscreen driver + New Keypad driver + TODO + look into supporting other Motorola Linux phones + finish port of TS 07.10 mux and GPRS line discipline + fix initial gpio handshake between AP and BP + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Other Software + + + Other Free Software + ezxflash - Linux app (with GUI!) replacing proprietary P2K + fbgrabd + Daemon that runs fbgrab, creates PNG's and sends them via TCP + gpiotool + Tool for reading/reconfiguring/setting GPIO pins from userspace + pcaptool + Tool for reading/writing PCAP registers + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +TODO + + + TODO + some reference application that can make voice and/or data calls from the commandline + document Motorola vendor-specific AT commands, add them to libgsm + USB On-The-GO support (hardware support present!) + discover how DSPlog, PST, other interfaces work + dm-crypt for your personal contacts/data + native IPsec + ScummVM port [320x240 and touchpad, ideal!] :) + at some point merge with openembedded.org ? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenEZX +Thanks + + + Thanks to + the BBS scene, Z-Netz, FIDO, ... + for heavily increasing my computer usage in 1992 + KNF (http://www.franken.de/) + for bringing me in touch with the internet as early as 1994 + for providing a playground for technical people + for telling me about the existance of Linux! + Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen + for implementing (one of?) the world's best TCP/IP stacks + Astaro AG + for sponsoring parts of my free software work + Chaos Computer Club (http://www.ccc.de/) + for providing an inspiring environment for cool hacks +%size 3 + The slides and the an according paper of this presentation are available at http://svn.gnumonks.org/projects/presentations +%size 3 diff --git a/2006/rfid-linuxworldnl2006/rfid-linuxworld_nl.tpp b/2006/rfid-linuxworldnl2006/rfid-linuxworld_nl.tpp new file mode 100644 index 0000000..9bf3d1a --- /dev/null +++ b/2006/rfid-linuxworldnl2006/rfid-linuxworld_nl.tpp @@ -0,0 +1,421 @@ +--author Harald Welte <laforge@gnumonks.org> +--title RFID, ePassports, librfid, libmrtd +--date 12 Oct 2006 +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) + native librfid API + planned: PC/SC +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 libmrtd - Free Software library for MRTD's + + +--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 +openpcd + http://openpcd.org/ + http://wiki.openpcd.org/ +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/2006/userspace_helpers/abstract.txt b/2006/userspace_helpers/abstract.txt new file mode 100644 index 0000000..0cd13ec --- /dev/null +++ b/2006/userspace_helpers/abstract.txt @@ -0,0 +1,18 @@ +Complex protocols such as FTP, H.323, SIP, RTSP, require special treatment by +stateful packet filters and network address translators. Software implementing +such special treatment is often referred to as "application level gateway" (ALG). +In the Linux netfilter world, they are called "conntrack helpers" and "NAT helpers". + +So far, the Linux netfilter/iptables subystem, much like it's predecessor +ipchains, only supported such helpers inside kernel space. + +However, recent advances in the netfilter world such as nfnetlink_queue, +libnetfilter_queue, nfnetlink_conntrcack and libnetfilter_conntrack provide +almost all the infrastructure required for running conntrack/NAT helpers in +userspace. + +At this time, the author is working on the missing tiny additional piece called +nfnetlink_cthelper and libnetfilter_cthelper. At the time the paper will be +finished and presented, it is expected that this code is mainline and the first +userspace conntrack/nat helpers will be available. + |